{"id":19679,"name":"Sankey Chart Card","description":"A Home Assistant lovelace card to display a sankey chart showing energy, power and water consumption.","url":"https://github.com/MindFreeze/ha-sankey-chart","last_synced_at":"2026-06-23T16:01:36.391Z","repository":{"id":38394175,"uuid":"455846088","full_name":"MindFreeze/ha-sankey-chart","owner":"MindFreeze","description":"A Home Assistant lovelace card to display a sankey chart. For example for power consumption","archived":false,"fork":false,"pushed_at":"2026-06-01T14:36:36.000Z","size":1666,"stargazers_count":660,"open_issues_count":25,"forks_count":36,"subscribers_count":7,"default_branch":"master","last_synced_at":"2026-06-09T09:05:46.774Z","etag":null,"topics":["energy-consumption","home-assistant","lovelace-card"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MindFreeze.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["MindFreeze"],"buy_me_a_coffee":"MindFreeze"}},"created_at":"2022-02-05T11:04:19.000Z","updated_at":"2026-06-03T09:31:18.000Z","dependencies_parsed_at":"2024-01-13T07:48:44.539Z","dependency_job_id":"6f548874-3e42-44dd-b14d-dd89ace54e16","html_url":"https://github.com/MindFreeze/ha-sankey-chart","commit_stats":{"total_commits":325,"total_committers":10,"mean_commits":32.5,"dds":0.2646153846153846,"last_synced_commit":"c544e58a281b0c81a8805fb8d77eb4891b24ca78"},"previous_names":[],"tags_count":109,"template":false,"template_full_name":"custom-cards/boilerplate-card","purl":"pkg:github/MindFreeze/ha-sankey-chart","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MindFreeze%2Fha-sankey-chart","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MindFreeze%2Fha-sankey-chart/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MindFreeze%2Fha-sankey-chart/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MindFreeze%2Fha-sankey-chart/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MindFreeze","download_url":"https://codeload.github.com/MindFreeze/ha-sankey-chart/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MindFreeze%2Fha-sankey-chart/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34192870,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-11T02:00:06.485Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"MindFreeze","name":"Petar Petrov","uuid":"5219205","kind":"user","description":"freon14 on the Home Assistant Discord","email":"","website":null,"location":"Sofia","twitter":"MindFreeze","company":null,"icon_url":"https://avatars.githubusercontent.com/u/5219205?v=4","repositories_count":2,"last_synced_at":"2025-12-27T23:51:04.105Z","metadata":{"has_sponsors_listing":true},"html_url":"https://github.com/MindFreeze","funding_links":["https://github.com/sponsors/MindFreeze"],"total_stars":null,"followers":40,"following":4,"created_at":"2022-11-16T22:10:06.802Z","updated_at":"2025-12-27T23:51:04.105Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MindFreeze","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MindFreeze/repositories"},"packages":[{"id":12804720,"name":"home-assistant-custom-lovelace-modules.sankey-chart","ecosystem":"nixpkgs","description":"Home Assistant lovelace card to display a sankey chart","homepage":"https://github.com/MindFreeze/ha-sankey-chart","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/MindFreeze/ha-sankey-chart","keywords_array":[],"namespace":null,"versions_count":1,"first_release_published_at":"2026-01-26T15:20:10.928Z","latest_release_published_at":"2026-01-26T15:20:10.928Z","latest_release_number":"3.10.0","last_synced_at":"2026-03-07T05:27:10.687Z","created_at":"2026-01-26T15:20:10.719Z","updated_at":"2026-03-22T20:15:51.907Z","registry_url":"https://search.nixos.org/packages?channel=unstable\u0026query=home-assistant-custom-lovelace-modules.sankey-chart","install_command":"nix-env -iA nixpkgs.home-assistant-custom-lovelace-modules.sankey-chart","documentation_url":"https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/servers/home-assistant/custom-lovelace-modules/sankey-chart/package.nix#L30","metadata":{"nix_attribute":"sankey-chart-3.10.0","position":"pkgs/servers/home-assistant/custom-lovelace-modules/sankey-chart/package.nix:30","platforms":["i686-cygwin","x86_64-cygwin","x86_64-darwin","aarch64-darwin","i686-freebsd","x86_64-freebsd","aarch64-freebsd","aarch64-genode","i686-genode","x86_64-genode","x86_64-solaris","javascript-ghcjs","aarch64-linux","armv5tel-linux","armv6l-linux","armv7a-linux","armv7l-linux","i686-linux","loongarch64-linux","m68k-linux","microblaze-linux","microblazeel-linux","mips-linux","mips64-linux","mips64el-linux","mipsel-linux","powerpc-linux","powerpc64-linux","powerpc64le-linux","riscv32-linux","riscv64-linux","s390-linux","s390x-linux","x86_64-linux","mmix-mmixware","aarch64-netbsd","armv6l-netbsd","armv7a-netbsd","armv7l-netbsd","i686-netbsd","m68k-netbsd","mipsel-netbsd","powerpc-netbsd","riscv32-netbsd","riscv64-netbsd","x86_64-netbsd","aarch64_be-none","aarch64-none","arm-none","armv6l-none","avr-none","i686-none","microblaze-none","microblazeel-none","mips-none","mips64-none","msp430-none","or1k-none","m68k-none","powerpc-none","powerpcle-none","riscv32-none","riscv64-none","rx-none","s390-none","s390x-none","vc4-none","x86_64-none","i686-openbsd","x86_64-openbsd","x86_64-redox","wasm64-wasi","wasm32-wasi","aarch64-windows","x86_64-windows","i686-windows","aarch64-uefi","x86_64-uefi"],"broken":false,"insecure":false,"unfree":false,"outputs":["out"]},"repo_metadata":{"id":38394175,"uuid":"455846088","full_name":"MindFreeze/ha-sankey-chart","owner":"MindFreeze","description":"A Home Assistant lovelace card to display a sankey chart. For example for power consumption","archived":false,"fork":false,"pushed_at":"2026-01-28T13:33:01.000Z","size":1636,"stargazers_count":642,"open_issues_count":35,"forks_count":30,"subscribers_count":7,"default_branch":"master","last_synced_at":"2026-03-22T06:57:23.144Z","etag":null,"topics":["energy-consumption","home-assistant","lovelace-card"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MindFreeze.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["MindFreeze"],"buy_me_a_coffee":"MindFreeze"}},"created_at":"2022-02-05T11:04:19.000Z","updated_at":"2026-03-19T15:24:27.000Z","dependencies_parsed_at":"2024-01-13T07:48:44.539Z","dependency_job_id":"6f548874-3e42-44dd-b14d-dd89ace54e16","html_url":"https://github.com/MindFreeze/ha-sankey-chart","commit_stats":{"total_commits":325,"total_committers":10,"mean_commits":32.5,"dds":0.2646153846153846,"last_synced_commit":"c544e58a281b0c81a8805fb8d77eb4891b24ca78"},"previous_names":[],"tags_count":96,"template":false,"template_full_name":"custom-cards/boilerplate-card","purl":"pkg:github/MindFreeze/ha-sankey-chart","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MindFreeze%2Fha-sankey-chart","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MindFreeze%2Fha-sankey-chart/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MindFreeze%2Fha-sankey-chart/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MindFreeze%2Fha-sankey-chart/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MindFreeze","download_url":"https://codeload.github.com/MindFreeze/ha-sankey-chart/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MindFreeze%2Fha-sankey-chart/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30833894,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-22T05:45:47.827Z","status":"ssl_error","status_checked_at":"2026-03-22T05:45:39.030Z","response_time":85,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"repo_metadata_updated_at":"2026-03-22T20:15:51.906Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:nix/home-assistant-custom-lovelace-modules.sankey-chart?channel=unstable","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/nixpkgs/home-assistant-custom-lovelace-modules.sankey-chart","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/nixpkgs/home-assistant-custom-lovelace-modules.sankey-chart","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/nixpkgs/home-assistant-custom-lovelace-modules.sankey-chart/dependencies","status":null,"funding_links":["https://github.com/sponsors/MindFreeze","https://buymeacoffee.com/MindFreeze"],"critical":null,"issue_metadata":{"last_synced_at":"2026-03-20T08:02:06.946Z","issues_count":174,"pull_requests_count":128,"avg_time_to_close_issue":5058193.549618321,"avg_time_to_close_pull_request":243925.7,"issues_closed_count":131,"pull_requests_closed_count":120,"pull_request_authors_count":10,"issue_authors_count":127,"avg_comments_per_issue":2.293103448275862,"avg_comments_per_pull_request":0.6328125,"merged_pull_requests_count":120,"bot_issues_count":0,"bot_pull_requests_count":94,"past_year_issues_count":30,"past_year_pull_requests_count":16,"past_year_avg_time_to_close_issue":153689.9411764706,"past_year_avg_time_to_close_pull_request":11897.923076923076,"past_year_issues_closed_count":17,"past_year_pull_requests_closed_count":13,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":27,"past_year_avg_comments_per_issue":1.0333333333333332,"past_year_avg_comments_per_pull_request":0.5,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":14,"past_year_merged_pull_requests_count":13,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/MindFreeze%2Fha-sankey-chart/issues","maintainers":[{"login":"MindFreeze","count":17,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/MindFreeze"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-unstable/packages/home-assistant-custom-lovelace-modules.sankey-chart/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-unstable/packages/home-assistant-custom-lovelace-modules.sankey-chart/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-unstable/packages/home-assistant-custom-lovelace-modules.sankey-chart/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-unstable/packages/home-assistant-custom-lovelace-modules.sankey-chart/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-unstable/packages/home-assistant-custom-lovelace-modules.sankey-chart/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-unstable/packages/home-assistant-custom-lovelace-modules.sankey-chart/codemeta","maintainers":[{"uuid":"mweinelt","login":null,"name":"Martin Weinelt","email":"hexa@darmstadt.ccc.de","url":"https://github.com/mweinelt","packages_count":550,"html_url":null,"role":null,"created_at":"2026-03-07T05:27:10.857Z","updated_at":"2026-03-07T05:27:10.857Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-unstable/maintainers/mweinelt/packages"}],"registry":{"name":"nixpkgs-unstable","url":"https://channels.nixos.org/nixos-unstable","ecosystem":"nixpkgs","default":true,"packages_count":148656,"maintainers_count":4717,"namespaces_count":0,"keywords_count":2908,"github":"NixOS","metadata":{"funded_packages_count":1599},"icon_url":"https://github.com/NixOS.png","created_at":"2026-01-25T22:30:52.762Z","updated_at":"2026-06-10T05:16:03.119Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-unstable/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-unstable/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-unstable/namespaces"}},{"id":13053464,"name":"home-assistant-custom-lovelace-modules.sankey-chart","ecosystem":"nixpkgs","description":"Home Assistant lovelace card to display a sankey chart.","homepage":"https://github.com/MindFreeze/ha-sankey-chart","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/MindFreeze/ha-sankey-chart","keywords_array":[],"namespace":null,"versions_count":1,"first_release_published_at":"2026-02-01T16:22:03.340Z","latest_release_published_at":"2026-02-01T16:22:03.340Z","latest_release_number":"3.5.0","last_synced_at":"2026-04-18T15:06:59.954Z","created_at":"2026-02-01T16:22:02.963Z","updated_at":"2026-04-18T15:32:21.542Z","registry_url":"https://search.nixos.org/packages?channel=24.11\u0026query=home-assistant-custom-lovelace-modules.sankey-chart","install_command":"nix-env -iA nixpkgs.home-assistant-custom-lovelace-modules.sankey-chart","documentation_url":"https://github.com/NixOS/nixpkgs/blob/nixos-24.11/pkgs/servers/home-assistant/custom-lovelace-modules/sankey-chart/default.nix#L30","metadata":{"nix_attribute":"sankey-chart-3.5.0","position":"pkgs/servers/home-assistant/custom-lovelace-modules/sankey-chart/default.nix:30","platforms":["i686-cygwin","x86_64-cygwin","x86_64-darwin","i686-darwin","aarch64-darwin","armv7a-darwin","i686-freebsd","x86_64-freebsd","aarch64-genode","i686-genode","x86_64-genode","x86_64-solaris","javascript-ghcjs","aarch64-linux","armv5tel-linux","armv6l-linux","armv7a-linux","armv7l-linux","i686-linux","loongarch64-linux","m68k-linux","microblaze-linux","microblazeel-linux","mips-linux","mips64-linux","mips64el-linux","mipsel-linux","powerpc64-linux","powerpc64le-linux","riscv32-linux","riscv64-linux","s390-linux","s390x-linux","x86_64-linux","mmix-mmixware","aarch64-netbsd","armv6l-netbsd","armv7a-netbsd","armv7l-netbsd","i686-netbsd","m68k-netbsd","mipsel-netbsd","powerpc-netbsd","riscv32-netbsd","riscv64-netbsd","x86_64-netbsd","aarch64_be-none","aarch64-none","arm-none","armv6l-none","avr-none","i686-none","microblaze-none","microblazeel-none","mips-none","mips64-none","msp430-none","or1k-none","m68k-none","powerpc-none","powerpcle-none","riscv32-none","riscv64-none","rx-none","s390-none","s390x-none","vc4-none","x86_64-none","i686-openbsd","x86_64-openbsd","x86_64-redox","wasm64-wasi","wasm32-wasi","aarch64-windows","x86_64-windows","i686-windows"],"broken":false,"insecure":false,"unfree":false,"outputs":["out"]},"repo_metadata":{"id":38394175,"uuid":"455846088","full_name":"MindFreeze/ha-sankey-chart","owner":"MindFreeze","description":"A Home Assistant lovelace card to display a sankey chart. For example for power consumption","archived":false,"fork":false,"pushed_at":"2026-01-28T13:33:01.000Z","size":1636,"stargazers_count":642,"open_issues_count":35,"forks_count":30,"subscribers_count":7,"default_branch":"master","last_synced_at":"2026-03-22T06:57:23.144Z","etag":null,"topics":["energy-consumption","home-assistant","lovelace-card"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MindFreeze.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["MindFreeze"],"buy_me_a_coffee":"MindFreeze"}},"created_at":"2022-02-05T11:04:19.000Z","updated_at":"2026-03-19T15:24:27.000Z","dependencies_parsed_at":"2024-01-13T07:48:44.539Z","dependency_job_id":"6f548874-3e42-44dd-b14d-dd89ace54e16","html_url":"https://github.com/MindFreeze/ha-sankey-chart","commit_stats":{"total_commits":325,"total_committers":10,"mean_commits":32.5,"dds":0.2646153846153846,"last_synced_commit":"c544e58a281b0c81a8805fb8d77eb4891b24ca78"},"previous_names":[],"tags_count":96,"template":false,"template_full_name":"custom-cards/boilerplate-card","purl":"pkg:github/MindFreeze/ha-sankey-chart","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MindFreeze%2Fha-sankey-chart","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MindFreeze%2Fha-sankey-chart/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MindFreeze%2Fha-sankey-chart/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MindFreeze%2Fha-sankey-chart/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MindFreeze","download_url":"https://codeload.github.com/MindFreeze/ha-sankey-chart/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MindFreeze%2Fha-sankey-chart/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30833901,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-22T05:45:47.827Z","status":"ssl_error","status_checked_at":"2026-03-22T05:45:39.030Z","response_time":85,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"repo_metadata_updated_at":"2026-03-22T20:16:08.648Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":0.5148258363870375,"forks_count":0.6632071682119639,"docker_downloads_count":null,"average":0.2945082511497503},"purl":"pkg:nix/home-assistant-custom-lovelace-modules.sankey-chart?channel=24.11\u0026repository_url=https://channels.nixos.org/nixos-24.11","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/nixpkgs/home-assistant-custom-lovelace-modules.sankey-chart","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/nixpkgs/home-assistant-custom-lovelace-modules.sankey-chart","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/nixpkgs/home-assistant-custom-lovelace-modules.sankey-chart/dependencies","status":null,"funding_links":["https://github.com/sponsors/MindFreeze","https://buymeacoffee.com/MindFreeze"],"critical":null,"issue_metadata":{"last_synced_at":"2026-03-20T08:02:06.946Z","issues_count":174,"pull_requests_count":128,"avg_time_to_close_issue":5058193.549618321,"avg_time_to_close_pull_request":243925.7,"issues_closed_count":131,"pull_requests_closed_count":120,"pull_request_authors_count":10,"issue_authors_count":127,"avg_comments_per_issue":2.293103448275862,"avg_comments_per_pull_request":0.6328125,"merged_pull_requests_count":120,"bot_issues_count":0,"bot_pull_requests_count":94,"past_year_issues_count":30,"past_year_pull_requests_count":16,"past_year_avg_time_to_close_issue":153689.9411764706,"past_year_avg_time_to_close_pull_request":11897.923076923076,"past_year_issues_closed_count":17,"past_year_pull_requests_closed_count":13,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":27,"past_year_avg_comments_per_issue":1.0333333333333332,"past_year_avg_comments_per_pull_request":0.5,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":14,"past_year_merged_pull_requests_count":13,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/MindFreeze%2Fha-sankey-chart/issues","maintainers":[{"login":"MindFreeze","count":17,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/MindFreeze"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-24.11/packages/home-assistant-custom-lovelace-modules.sankey-chart/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-24.11/packages/home-assistant-custom-lovelace-modules.sankey-chart/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-24.11/packages/home-assistant-custom-lovelace-modules.sankey-chart/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-24.11/packages/home-assistant-custom-lovelace-modules.sankey-chart/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-24.11/packages/home-assistant-custom-lovelace-modules.sankey-chart/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-24.11/packages/home-assistant-custom-lovelace-modules.sankey-chart/codemeta","maintainers":[{"uuid":"mweinelt","login":null,"name":"Martin Weinelt","email":"hexa@darmstadt.ccc.de","url":"https://github.com/mweinelt","packages_count":1364,"html_url":null,"role":null,"created_at":"2026-03-04T21:15:19.278Z","updated_at":"2026-03-04T21:15:19.278Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-24.11/maintainers/mweinelt/packages"}],"registry":{"name":"nixpkgs-24.11","url":"https://channels.nixos.org/nixos-24.11","ecosystem":"nixpkgs","default":false,"packages_count":121983,"maintainers_count":3777,"namespaces_count":0,"keywords_count":739,"github":"NixOS","metadata":{"funded_packages_count":283},"icon_url":"https://github.com/NixOS.png","created_at":"2026-01-25T22:30:53.059Z","updated_at":"2026-06-10T05:16:24.031Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-24.11/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-24.11/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/nixpkgs-24.11/namespaces"}}],"commits":{"id":1334801,"full_name":"MindFreeze/ha-sankey-chart","default_branch":"master","total_commits":415,"total_committers":12,"total_bot_commits":90,"total_bot_committers":1,"mean_commits":34.583333333333336,"dds":0.2795180722891566,"past_year_total_commits":69,"past_year_total_committers":5,"past_year_total_bot_commits":17,"past_year_total_bot_committers":1,"past_year_mean_commits":13.8,"past_year_dds":0.33333333333333337,"last_synced_at":"2026-06-21T15:04:23.369Z","last_synced_commit":"89f02b93a09350d60a829610e2b743112f7201ea","created_at":"2023-09-11T17:47:06.798Z","updated_at":"2026-06-21T15:03:30.979Z","committers":[{"name":"Petar Petrov","email":"MindFreeze","login":"MindFreeze","count":299},{"name":"github-actions[bot]","email":"41898282+github-actions[bot]","login":"github-actions[bot]","count":90},{"name":"Atticus Maximus","email":"atticus.rationalis@gmail.com","login":"amaximus","count":6},{"name":"misa1515","email":"61636045+misa1515","login":"misa1515","count":6},{"name":"Piers Williams","email":"piers.williams@red-gate.com","login":"piers-williams","count":4},{"name":"Andrew Reiter","email":"reiterandrew@gmail.com","login":"madsciencetist","count":3},{"name":"Joseph Lochy","email":"github@lochy.cz","login":"LochyCZ","count":2},{"name":"ngommers","email":"82467671+ngommers","login":"ngommers","count":1},{"name":"kiryph","email":"kiryph","login":"kiryph","count":1},{"name":"emufan","email":"emufan","login":"emufan","count":1},{"name":"Rodion","email":"75478062+rodion981","login":"rodion981","count":1},{"name":"P1LH4","email":"joao.calby@gmail.com","login":"p1lh4","count":1}],"past_year_committers":[{"name":"Petar Petrov","email":"MindFreeze","login":"MindFreeze","count":46},{"name":"github-actions[bot]","email":"41898282+github-actions[bot]","login":"github-actions[bot]","count":17},{"name":"Piers Williams","email":"piers.williams@red-gate.com","login":"piers-williams","count":4},{"name":"Rodion","email":"75478062+rodion981","login":"rodion981","count":1},{"name":"Andrew Reiter","email":"reiterandrew@gmail.com","login":"madsciencetist","count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/MindFreeze%2Fha-sankey-chart/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-06-23T00:00:10.068Z","repositories_count":6266598,"commits_count":874822776,"contributors_count":35098573,"owners_count":1170524,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"MindFreeze/ha-sankey-chart","html_url":"https://github.com/MindFreeze/ha-sankey-chart","last_synced_at":"2026-06-03T06:01:05.800Z","status":"active","issues_count":187,"pull_requests_count":138,"avg_time_to_close_issue":5182891.55,"avg_time_to_close_pull_request":232230.953125,"issues_closed_count":140,"pull_requests_closed_count":128,"pull_request_authors_count":11,"issue_authors_count":136,"avg_comments_per_issue":2.304812834224599,"avg_comments_per_pull_request":0.6231884057971014,"merged_pull_requests_count":127,"bot_issues_count":0,"bot_pull_requests_count":98,"past_year_issues_count":28,"past_year_pull_requests_count":20,"past_year_avg_time_to_close_issue":225456.875,"past_year_avg_time_to_close_pull_request":38019.9375,"past_year_issues_closed_count":16,"past_year_pull_requests_closed_count":16,"past_year_pull_request_authors_count":5,"past_year_issue_authors_count":23,"past_year_avg_comments_per_issue":1.5357142857142858,"past_year_avg_comments_per_pull_request":0.5,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":12,"past_year_merged_pull_requests_count":15,"created_at":"2023-09-11T17:47:38.654Z","updated_at":"2026-06-03T06:01:05.800Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/MindFreeze%2Fha-sankey-chart","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/MindFreeze%2Fha-sankey-chart/issues","issue_labels_count":{"bug":92,"enhancement":41,"wontfix":2,"documentation":1,"question":1,"stale":1},"pull_request_labels_count":{"autorelease: tagged":71,"autorelease: pending":27,"enhancement":5},"issue_author_associations_count":{"NONE":175,"OWNER":9,"CONTRIBUTOR":3},"pull_request_author_associations_count":{"CONTRIBUTOR":120,"OWNER":13,"NONE":5},"issue_authors":{"kzajac83":9,"MindFreeze":9,"AleXSR700":5,"Dutchy-79":4,"nathan-curtis":3,"commentsonly":3,"Mariusthvdb":3,"eigenphase":3,"GitHubGoody":3,"twannieguitar":3,"DavidValeri":2,"iNaiks":2,"madsciencetist":2,"cromelex":2,"Cougar":2,"Floppe":2,"thoath2":2,"flopp999":2,"XtremeOwnageDotCom":2,"Nooton92":2,"tomlut":2,"icefest":2,"f-zappa":2,"realjax":2,"Madelena":2,"rrozema":2,"kernel610":1,"sybux":1,"FortranFour":1,"bartekev":1,"thybag":1,"npotternyc":1,"abu9":1,"6onions":1,"i00":1,"FlorianWilk":1,"Kedryn":1,"ColinSainsbury":1,"brynyneuadd":1,"widewing":1,"judzk":1,"ey-jo":1,"emufan":1,"ddeconin-gh":1,"fusion94":1,"rbnltz":1,"wigster":1,"palitu":1,"paintballkev812":1,"PedanticAvenger":1,"cb12tre":1,"MarkGTI":1,"lucasimons":1,"Cptkex82":1,"rmu1987":1,"RN-Say":1,"bob454522":1,"AlexCPU":1,"rschueler":1,"elupus":1,"derhappy":1,"duanemck":1,"bbK1ngSrb":1,"hidefandy":1,"Getslow6":1,"filoor":1,"davidrapan":1,"DorwinDT":1,"CrazyHenk44":1,"michalk-k":1,"MelleD":1,"Mira141":1,"Stephan-4711":1,"NickStallman":1,"raghu-ranganathan":1,"arrikhan":1,"rosiaantje":1,"yigitar":1,"SAOPP":1,"ojm88":1,"bartkummel":1,"jameswestcott":1,"DoWenzl94":1,"jelmerwouters":1,"Mika255":1,"Jacky66it":1,"marc4s":1,"kattcrazy":1,"SergioRius":1,"orimate":1,"gheydon":1,"gcoan":1,"iridris":1,"JoeKae":1,"zekje":1,"arnaud-gouder":1,"simenopsahl":1,"Routout":1,"blacknell":1,"segdy":1,"catatung":1,"klaus1k":1,"Dreanaught":1,"JokerGermany":1,"mvdwetering":1,"kaijk":1,"bastiaanterhorst":1,"pdubaduba":1,"ulope":1,"Waggers58":1,"benjamin-dcs":1,"Ashthos":1,"martinarva":1,"andsee":1,"sfstar":1,"PandemiK911":1,"RoSche2001":1,"Xitro01":1,"matellis":1,"saturnv5":1,"HQOFIQ":1,"david-rapan":1,"18107":1,"bzzzggz":1,"spuke113":1,"forreggbor":1,"stefaanv":1,"amaximus":1,"Ndrinta":1,"KidA001":1,"frittes":1,"Masterz69":1,"macmeck":1,"mattsaxon":1,"apbarratt":1,"scuppasteve":1},"pull_request_authors":{"github-actions[bot]":98,"MindFreeze":13,"misa1515":8,"madsciencetist":5,"amaximus":4,"LochyCZ":3,"kiryph":2,"p1lh4":2,"kvanzuijlen":1,"ngommers":1,"rodion981":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-06-17T00:00:21.091Z","repositories_count":14814486,"issues_count":33119782,"pull_requests_count":109351250,"authors_count":11309346,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{"bug":14,"enhancement":1},"past_year_pull_request_labels_count":{"autorelease: tagged":4,"autorelease: pending":1},"past_year_issue_author_associations_count":{"NONE":24},"past_year_pull_request_author_associations_count":{"CONTRIBUTOR":7,"OWNER":5,"NONE":1},"past_year_issue_authors":{"eigenphase":3,"twannieguitar":3,"yigitar":1,"ulope":1,"sybux":1,"stefaanv":1,"SergioRius":1,"saturnv5":1,"rbnltz":1,"raghu-ranganathan":1,"PedanticAvenger":1,"pdubaduba":1,"kzajac83":1,"kattcrazy":1,"hidefandy":1,"Getslow6":1,"gcoan":1,"forreggbor":1,"DoWenzl94":1,"6onions":1},"past_year_pull_request_authors":{"github-actions[bot]":5,"MindFreeze":5,"kvanzuijlen":1,"madsciencetist":1,"rodion981":1},"maintainers":[{"login":"MindFreeze","count":22,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/MindFreeze"}],"active_maintainers":[{"login":"MindFreeze","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/MindFreeze"}]},"events":{"total":{"ReleaseEvent":9,"DeleteEvent":3,"PullRequestEvent":23,"ForkEvent":5,"IssuesEvent":86,"WatchEvent":205,"IssueCommentEvent":102,"PushEvent":69,"PullRequestReviewCommentEvent":3,"PullRequestReviewEvent":3,"CreateEvent":21},"last_year":{"ReleaseEvent":2,"PullRequestEvent":10,"ForkEvent":3,"IssuesEvent":23,"WatchEvent":43,"IssueCommentEvent":24,"PushEvent":39,"PullRequestReviewCommentEvent":3,"PullRequestReviewEvent":3,"CreateEvent":9}},"keywords":["energy-consumption","home-assistant","lovelace-card"],"dependencies":[{"ecosystem":"npm","filepath":"package-lock.json","sha":null,"kind":"lockfile","created_at":"2022-08-09T03:16:29.434Z","updated_at":"2022-08-09T03:16:29.434Z","repository_link":"https://github.com/MindFreeze/ha-sankey-chart/blob/master/package-lock.json","dependencies":[{"id":729102457,"package_name":"@babel/code-frame","ecosystem":"npm","requirements":"7.14.5","direct":false,"kind":"development","optional":false},{"id":729102458,"package_name":"@babel/compat-data","ecosystem":"npm","requirements":"7.15.0","direct":false,"kind":"development","optional":false},{"id":729102459,"package_name":"@babel/core","ecosystem":"npm","requirements":"7.15.5","direct":false,"kind":"development","optional":false},{"id":729102460,"package_name":"debug","ecosystem":"npm","requirements":"4.1.1","direct":false,"kind":"development","optional":false},{"id":729102461,"package_name":"@babel/generator","ecosystem":"npm","requirements":"7.15.4","direct":false,"kind":"development","optional":false},{"id":729102462,"package_name":"@babel/helper-annotate-as-pure","ecosystem":"npm","requirements":"7.15.4","direct":false,"kind":"development","optional":false},{"id":729102463,"package_name":"@babel/helper-compilation-targets","ecosystem":"npm","requirements":"7.15.4","direct":false,"kind":"development","optional":false},{"id":729102464,"package_name":"@babel/helper-create-class-features-plugin","ecosystem":"npm","requirements":"7.15.4","direct":false,"kind":"development","optional":false},{"id":729102465,"package_name":"@babel/helper-function-name","ecosystem":"npm","requirements":"7.15.4","direct":false,"kind":"development","optional":false},{"id":729102466,"package_name":"@babel/helper-get-function-arity","ecosystem":"npm","requirements":"7.15.4","direct":false,"kind":"development","optional":false},{"id":729102467,"package_name":"@babel/helper-hoist-variables","ecosystem":"npm","requirements":"7.15.4","direct":false,"kind":"development","optional":false},{"id":729102468,"package_name":"@babel/helper-member-expression-to-functions","ecosystem":"npm","requirements":"7.15.4","direct":false,"kind":"development","optional":false},{"id":729102469,"package_name":"@babel/helper-module-imports","ecosystem":"npm","requirements":"7.0.0","direct":false,"kind":"development","optional":false},{"id":729102470,"package_name":"@babel/types","ecosystem":"npm","requirements":"7.5.5","direct":false,"kind":"development","optional":false},{"id":729102471,"package_name":"@babel/helper-module-transforms","ecosystem":"npm","requirements":"7.15.7","direct":false,"kind":"development","optional":false},{"id":729102472,"package_name":"@babel/helper-module-imports","ecosystem":"npm","requirements":"7.15.4","direct":false,"kind":"development","optional":false},{"id":729102473,"package_name":"@babel/helper-optimise-call-expression","ecosystem":"npm","requirements":"7.15.4","direct":false,"kind":"development","optional":false},{"id":729102474,"package_name":"@babel/helper-plugin-utils","ecosystem":"npm","requirements":"7.14.5","direct":false,"kind":"development","optional":false},{"id":729102475,"package_name":"@babel/helper-replace-supers","ecosystem":"npm","requirements":"7.15.4","direct":false,"kind":"development","optional":false},{"id":729102476,"package_name":"@babel/helper-simple-access","ecosystem":"npm","requirements":"7.15.4","direct":false,"kind":"development","optional":false},{"id":729102477,"package_name":"@babel/helper-split-export-declaration","ecosystem":"npm","requirements":"7.15.4","direct":false,"kind":"development","optional":false},{"id":729102478,"package_name":"@babel/helper-validator-identifier","ecosystem":"npm","requirements":"7.15.7","direct":false,"kind":"development","optional":false},{"id":729102479,"package_name":"@babel/helper-validator-option","ecosystem":"npm","requirements":"7.14.5","direct":false,"kind":"development","optional":false},{"id":729102480,"package_name":"@babel/helpers","ecosystem":"npm","requirements":"7.15.4","direct":false,"kind":"development","optional":false},{"id":729102481,"package_name":"@babel/highlight","ecosystem":"npm","requirements":"7.14.5","direct":false,"kind":"development","optional":false},{"id":729102482,"package_name":"@babel/parser","ecosystem":"npm","requirements":"7.15.7","direct":false,"kind":"development","optional":false},{"id":729102483,"package_name":"@babel/plugin-proposal-class-properties","ecosystem":"npm","requirements":"7.14.5","direct":false,"kind":"development","optional":false},{"id":729102484,"package_name":"@babel/plugin-proposal-decorators","ecosystem":"npm","requirements":"7.15.4","direct":false,"kind":"development","optional":false},{"id":729102485,"package_name":"@babel/plugin-syntax-decorators","ecosystem":"npm","requirements":"7.14.5","direct":false,"kind":"development","optional":false},{"id":729102486,"package_name":"@babel/template","ecosystem":"npm","requirements":"7.15.4","direct":false,"kind":"development","optional":false},{"id":729102487,"package_name":"@babel/traverse","ecosystem":"npm","requirements":"7.15.4","direct":false,"kind":"development","optional":false},{"id":729102488,"package_name":"globals","ecosystem":"npm","requirements":"11.12.0","direct":false,"kind":"development","optional":false},{"id":729102489,"package_name":"@babel/types","ecosystem":"npm","requirements":"7.15.6","direct":false,"kind":"development","optional":false},{"id":729102490,"package_name":"@eslint/eslintrc","ecosystem":"npm","requirements":"0.4.3","direct":false,"kind":"development","optional":false},{"id":729102491,"package_name":"ajv","ecosystem":"npm","requirements":"6.12.6","direct":false,"kind":"development","optional":false},{"id":729102492,"package_name":"import-fresh","ecosystem":"npm","requirements":"3.3.0","direct":false,"kind":"development","optional":false},{"id":729102493,"package_name":"@formatjs/intl-unified-numberformat","ecosystem":"npm","requirements":"3.3.5","direct":false,"kind":"runtime","optional":false},{"id":729102494,"package_name":"@formatjs/intl-utils","ecosystem":"npm","requirements":"2.2.4","direct":false,"kind":"runtime","optional":false},{"id":729102495,"package_name":"@humanwhocodes/config-array","ecosystem":"npm","requirements":"0.5.0","direct":false,"kind":"development","optional":false},{"id":729102496,"package_name":"@humanwhocodes/object-schema","ecosystem":"npm","requirements":"1.2.0","direct":false,"kind":"development","optional":false},{"id":729102497,"package_name":"@lit/reactive-element","ecosystem":"npm","requirements":"1.0.0","direct":false,"kind":"runtime","optional":false},{"id":729102498,"package_name":"@nodelib/fs.scandir","ecosystem":"npm","requirements":"2.1.5","direct":false,"kind":"development","optional":false},{"id":729102499,"package_name":"@nodelib/fs.stat","ecosystem":"npm","requirements":"2.0.5","direct":false,"kind":"development","optional":false},{"id":729102500,"package_name":"@nodelib/fs.walk","ecosystem":"npm","requirements":"1.2.8","direct":false,"kind":"development","optional":false},{"id":729102501,"package_name":"@rollup/plugin-json","ecosystem":"npm","requirements":"4.1.0","direct":false,"kind":"development","optional":false},{"id":729102502,"package_name":"@rollup/pluginutils","ecosystem":"npm","requirements":"3.0.9","direct":false,"kind":"development","optional":false},{"id":729102503,"package_name":"estree-walker","ecosystem":"npm","requirements":"1.0.1","direct":false,"kind":"development","optional":false},{"id":729102504,"package_name":"@rollup/pluginutils","ecosystem":"npm","requirements":"4.1.1","direct":false,"kind":"development","optional":false},{"id":729102505,"package_name":"estree-walker","ecosystem":"npm","requirements":"2.0.2","direct":false,"kind":"development","optional":false},{"id":729102506,"package_name":"@types/chai","ecosystem":"npm","requirements":"4.2.11","direct":false,"kind":"runtime","optional":false},{"id":729102507,"package_name":"@types/clean-css","ecosystem":"npm","requirements":"4.2.5","direct":false,"kind":"development","optional":false},{"id":729102508,"package_name":"source-map","ecosystem":"npm","requirements":"0.6.1","direct":false,"kind":"development","optional":false},{"id":729102509,"package_name":"@types/estree","ecosystem":"npm","requirements":"0.0.39","direct":false,"kind":"development","optional":false},{"id":729102510,"package_name":"@types/html-minifier","ecosystem":"npm","requirements":"3.5.3","direct":false,"kind":"development","optional":false},{"id":729102511,"package_name":"@types/json-schema","ecosystem":"npm","requirements":"7.0.9","direct":false,"kind":"development","optional":false},{"id":729102512,"package_name":"@types/json5","ecosystem":"npm","requirements":"0.0.29","direct":false,"kind":"development","optional":false},{"id":729102513,"package_name":"@types/node","ecosystem":"npm","requirements":"12.7.2","direct":false,"kind":"development","optional":false},{"id":729102514,"package_name":"@types/relateurl","ecosystem":"npm","requirements":"0.2.29","direct":false,"kind":"development","optional":false},{"id":729102515,"package_name":"@types/resolve","ecosystem":"npm","requirements":"0.0.8","direct":false,"kind":"development","optional":false},{"id":729102516,"package_name":"@types/trusted-types","ecosystem":"npm","requirements":"2.0.2","direct":false,"kind":"runtime","optional":false},{"id":729102517,"package_name":"@types/uglify-js","ecosystem":"npm","requirements":"3.13.1","direct":false,"kind":"development","optional":false},{"id":729102518,"package_name":"@typescript-eslint/eslint-plugin","ecosystem":"npm","requirements":"4.33.0","direct":false,"kind":"development","optional":false},{"id":729102519,"package_name":"ignore","ecosystem":"npm","requirements":"5.1.8","direct":false,"kind":"development","optional":false},{"id":729102520,"package_name":"semver","ecosystem":"npm","requirements":"7.3.5","direct":false,"kind":"development","optional":false},{"id":729102521,"package_name":"@typescript-eslint/experimental-utils","ecosystem":"npm","requirements":"4.33.0","direct":false,"kind":"development","optional":false},{"id":729102522,"package_name":"eslint-utils","ecosystem":"npm","requirements":"3.0.0","direct":false,"kind":"development","optional":false},{"id":729102523,"package_name":"@typescript-eslint/parser","ecosystem":"npm","requirements":"4.33.0","direct":false,"kind":"development","optional":false},{"id":729102524,"package_name":"@typescript-eslint/scope-manager","ecosystem":"npm","requirements":"4.33.0","direct":false,"kind":"development","optional":false},{"id":729102525,"package_name":"@typescript-eslint/types","ecosystem":"npm","requirements":"4.33.0","direct":false,"kind":"development","optional":false},{"id":729102526,"package_name":"@typescript-eslint/typescript-estree","ecosystem":"npm","requirements":"4.33.0","direct":false,"kind":"development","optional":false},{"id":729102527,"package_name":"@typescript-eslint/visitor-keys","ecosystem":"npm","requirements":"4.33.0","direct":false,"kind":"development","optional":false},{"id":729102528,"package_name":"acorn","ecosystem":"npm","requirements":"7.4.1","direct":false,"kind":"development","optional":false},{"id":729102529,"package_name":"acorn-jsx","ecosystem":"npm","requirements":"5.3.2","direct":false,"kind":"development","optional":false},{"id":729102530,"package_name":"ajv","ecosystem":"npm","requirements":"6.10.2","direct":false,"kind":"development","optional":false},{"id":729102531,"package_name":"fast-deep-equal","ecosystem":"npm","requirements":"2.0.1","direct":false,"kind":"development","optional":false},{"id":729102532,"package_name":"ansi-colors","ecosystem":"npm","requirements":"4.1.1","direct":false,"kind":"development","optional":false},{"id":729102533,"package_name":"ansi-regex","ecosystem":"npm","requirements":"5.0.1","direct":false,"kind":"development","optional":false},{"id":729102534,"package_name":"ansi-styles","ecosystem":"npm","requirements":"4.3.0","direct":false,"kind":"development","optional":false},{"id":729102535,"package_name":"argparse","ecosystem":"npm","requirements":"1.0.10","direct":false,"kind":"development","optional":false},{"id":729102536,"package_name":"array-includes","ecosystem":"npm","requirements":"3.1.4","direct":false,"kind":"development","optional":false},{"id":729102537,"package_name":"array-union","ecosystem":"npm","requirements":"2.1.0","direct":false,"kind":"development","optional":false},{"id":729102538,"package_name":"array.prototype.flat","ecosystem":"npm","requirements":"1.2.5","direct":false,"kind":"development","optional":false},{"id":729102539,"package_name":"assertion-error","ecosystem":"npm","requirements":"1.1.0","direct":false,"kind":"runtime","optional":false},{"id":729102540,"package_name":"astral-regex","ecosystem":"npm","requirements":"2.0.0","direct":false,"kind":"development","optional":false},{"id":729102541,"package_name":"balanced-match","ecosystem":"npm","requirements":"1.0.2","direct":false,"kind":"development","optional":false},{"id":729102542,"package_name":"brace-expansion","ecosystem":"npm","requirements":"1.1.11","direct":false,"kind":"development","optional":false},{"id":729102543,"package_name":"braces","ecosystem":"npm","requirements":"3.0.2","direct":false,"kind":"development","optional":false},{"id":729102544,"package_name":"browserslist","ecosystem":"npm","requirements":"4.17.3","direct":false,"kind":"development","optional":false},{"id":729102545,"package_name":"buffer-from","ecosystem":"npm","requirements":"1.1.1","direct":false,"kind":"development","optional":false},{"id":729102546,"package_name":"builtin-modules","ecosystem":"npm","requirements":"3.1.0","direct":false,"kind":"development","optional":false},{"id":729102547,"package_name":"call-bind","ecosystem":"npm","requirements":"1.0.2","direct":false,"kind":"development","optional":false},{"id":729102548,"package_name":"callsites","ecosystem":"npm","requirements":"3.1.0","direct":false,"kind":"development","optional":false},{"id":729102549,"package_name":"camel-case","ecosystem":"npm","requirements":"3.0.0","direct":false,"kind":"development","optional":false},{"id":729102550,"package_name":"caniuse-lite","ecosystem":"npm","requirements":"1.0.30001264","direct":false,"kind":"development","optional":false},{"id":729102551,"package_name":"chai","ecosystem":"npm","requirements":"4.2.0","direct":false,"kind":"runtime","optional":false},{"id":729102552,"package_name":"chalk","ecosystem":"npm","requirements":"2.4.2","direct":false,"kind":"development","optional":false},{"id":729102553,"package_name":"ansi-styles","ecosystem":"npm","requirements":"3.2.1","direct":false,"kind":"development","optional":false},{"id":729102554,"package_name":"color-convert","ecosystem":"npm","requirements":"1.9.3","direct":false,"kind":"development","optional":false},{"id":729102555,"package_name":"color-name","ecosystem":"npm","requirements":"1.1.3","direct":false,"kind":"development","optional":false},{"id":729102556,"package_name":"supports-color","ecosystem":"npm","requirements":"5.5.0","direct":false,"kind":"development","optional":false},{"id":729102557,"package_name":"check-error","ecosystem":"npm","requirements":"1.0.2","direct":false,"kind":"runtime","optional":false},{"id":729102558,"package_name":"clean-css","ecosystem":"npm","requirements":"4.2.4","direct":false,"kind":"development","optional":false},{"id":729102559,"package_name":"color-convert","ecosystem":"npm","requirements":"2.0.1","direct":false,"kind":"development","optional":false},{"id":729102560,"package_name":"color-name","ecosystem":"npm","requirements":"1.1.4","direct":false,"kind":"development","optional":false},{"id":729102561,"package_name":"commander","ecosystem":"npm","requirements":"2.20.0","direct":false,"kind":"development","optional":false},{"id":729102562,"package_name":"commondir","ecosystem":"npm","requirements":"1.0.1","direct":false,"kind":"development","optional":false},{"id":729102563,"package_name":"concat-map","ecosystem":"npm","requirements":"0.0.1","direct":false,"kind":"development","optional":false},{"id":729102564,"package_name":"confusing-browser-globals","ecosystem":"npm","requirements":"1.0.10","direct":false,"kind":"development","optional":false},{"id":729102565,"package_name":"convert-source-map","ecosystem":"npm","requirements":"1.7.0","direct":false,"kind":"development","optional":false},{"id":729102566,"package_name":"cross-spawn","ecosystem":"npm","requirements":"7.0.3","direct":false,"kind":"development","optional":false},{"id":729102567,"package_name":"custom-card-helpers","ecosystem":"npm","requirements":"1.8.0","direct":false,"kind":"runtime","optional":false},{"id":729102568,"package_name":"home-assistant-js-websocket","ecosystem":"npm","requirements":"5.1.0","direct":false,"kind":"runtime","optional":false},{"id":729102569,"package_name":"rollup","ecosystem":"npm","requirements":"2.7.6","direct":false,"kind":"runtime","optional":false},{"id":729102570,"package_name":"typescript","ecosystem":"npm","requirements":"3.8.3","direct":false,"kind":"runtime","optional":false},{"id":729102571,"package_name":"debug","ecosystem":"npm","requirements":"4.3.2","direct":false,"kind":"development","optional":false},{"id":729102572,"package_name":"ms","ecosystem":"npm","requirements":"2.1.2","direct":false,"kind":"development","optional":false},{"id":729102573,"package_name":"deep-eql","ecosystem":"npm","requirements":"3.0.1","direct":false,"kind":"runtime","optional":false},{"id":729102574,"package_name":"deep-is","ecosystem":"npm","requirements":"0.1.4","direct":false,"kind":"development","optional":false},{"id":729102575,"package_name":"define-properties","ecosystem":"npm","requirements":"1.1.3","direct":false,"kind":"development","optional":false},{"id":729102576,"package_name":"dir-glob","ecosystem":"npm","requirements":"3.0.1","direct":false,"kind":"development","optional":false},{"id":729102577,"package_name":"path-type","ecosystem":"npm","requirements":"4.0.0","direct":false,"kind":"development","optional":false},{"id":729102578,"package_name":"doctrine","ecosystem":"npm","requirements":"2.1.0","direct":false,"kind":"development","optional":false},{"id":729102579,"package_name":"electron-to-chromium","ecosystem":"npm","requirements":"1.3.860","direct":false,"kind":"development","optional":false},{"id":729102580,"package_name":"emoji-regex","ecosystem":"npm","requirements":"8.0.0","direct":false,"kind":"development","optional":false},{"id":729102581,"package_name":"enquirer","ecosystem":"npm","requirements":"2.3.6","direct":false,"kind":"development","optional":false},{"id":729102582,"package_name":"error-ex","ecosystem":"npm","requirements":"1.3.2","direct":false,"kind":"development","optional":false},{"id":729102583,"package_name":"es-abstract","ecosystem":"npm","requirements":"1.19.1","direct":false,"kind":"development","optional":false},{"id":729102584,"package_name":"has-symbols","ecosystem":"npm","requirements":"1.0.2","direct":false,"kind":"development","optional":false},{"id":729102585,"package_name":"is-callable","ecosystem":"npm","requirements":"1.2.4","direct":false,"kind":"development","optional":false},{"id":729102586,"package_name":"is-regex","ecosystem":"npm","requirements":"1.1.4","direct":false,"kind":"development","optional":false},{"id":729102587,"package_name":"string.prototype.trimstart","ecosystem":"npm","requirements":"1.0.4","direct":false,"kind":"development","optional":false},{"id":729102588,"package_name":"es-to-primitive","ecosystem":"npm","requirements":"1.2.1","direct":false,"kind":"development","optional":false},{"id":729102589,"package_name":"is-callable","ecosystem":"npm","requirements":"1.1.4","direct":false,"kind":"development","optional":false},{"id":729102590,"package_name":"escalade","ecosystem":"npm","requirements":"3.1.1","direct":false,"kind":"development","optional":false},{"id":729102591,"package_name":"escape-string-regexp","ecosystem":"npm","requirements":"1.0.5","direct":false,"kind":"development","optional":false},{"id":729102592,"package_name":"eslint","ecosystem":"npm","requirements":"7.32.0","direct":false,"kind":"development","optional":false},{"id":729102593,"package_name":"@babel/code-frame","ecosystem":"npm","requirements":"7.12.11","direct":false,"kind":"development","optional":false},{"id":729102594,"package_name":"chalk","ecosystem":"npm","requirements":"4.1.2","direct":false,"kind":"development","optional":false},{"id":729102595,"package_name":"doctrine","ecosystem":"npm","requirements":"3.0.0","direct":false,"kind":"development","optional":false},{"id":729102596,"package_name":"escape-string-regexp","ecosystem":"npm","requirements":"4.0.0","direct":false,"kind":"development","optional":false},{"id":729102597,"package_name":"is-glob","ecosystem":"npm","requirements":"4.0.1","direct":false,"kind":"development","optional":false},{"id":729102598,"package_name":"eslint-config-airbnb-base","ecosystem":"npm","requirements":"14.2.1","direct":false,"kind":"development","optional":false},{"id":729102599,"package_name":"eslint-config-prettier","ecosystem":"npm","requirements":"8.3.0","direct":false,"kind":"development","optional":false},{"id":729102600,"package_name":"eslint-import-resolver-node","ecosystem":"npm","requirements":"0.3.6","direct":false,"kind":"development","optional":false},{"id":729102601,"package_name":"debug","ecosystem":"npm","requirements":"3.2.7","direct":false,"kind":"development","optional":false},{"id":729102602,"package_name":"resolve","ecosystem":"npm","requirements":"1.20.0","direct":false,"kind":"development","optional":false},{"id":729102603,"package_name":"eslint-module-utils","ecosystem":"npm","requirements":"2.6.2","direct":false,"kind":"development","optional":false},{"id":729102604,"package_name":"eslint-plugin-import","ecosystem":"npm","requirements":"2.24.2","direct":false,"kind":"development","optional":false},{"id":729102605,"package_name":"debug","ecosystem":"npm","requirements":"2.6.9","direct":false,"kind":"development","optional":false},{"id":729102606,"package_name":"ms","ecosystem":"npm","requirements":"2.0.0","direct":false,"kind":"development","optional":false},{"id":729102607,"package_name":"eslint-plugin-prettier","ecosystem":"npm","requirements":"4.0.0","direct":false,"kind":"development","optional":false},{"id":729102608,"package_name":"eslint-scope","ecosystem":"npm","requirements":"5.1.1","direct":false,"kind":"development","optional":false},{"id":729102609,"package_name":"estraverse","ecosystem":"npm","requirements":"4.3.0","direct":false,"kind":"development","optional":false},{"id":729102610,"package_name":"eslint-utils","ecosystem":"npm","requirements":"2.1.0","direct":false,"kind":"development","optional":false},{"id":729102611,"package_name":"eslint-visitor-keys","ecosystem":"npm","requirements":"1.3.0","direct":false,"kind":"development","optional":false},{"id":729102612,"package_name":"eslint-visitor-keys","ecosystem":"npm","requirements":"2.1.0","direct":false,"kind":"development","optional":false},{"id":729102613,"package_name":"espree","ecosystem":"npm","requirements":"7.3.1","direct":false,"kind":"development","optional":false},{"id":729102614,"package_name":"esprima","ecosystem":"npm","requirements":"4.0.1","direct":false,"kind":"development","optional":false},{"id":729102615,"package_name":"esquery","ecosystem":"npm","requirements":"1.4.0","direct":false,"kind":"development","optional":false},{"id":729102616,"package_name":"esrecurse","ecosystem":"npm","requirements":"4.3.0","direct":false,"kind":"development","optional":false},{"id":729102617,"package_name":"estraverse","ecosystem":"npm","requirements":"5.2.0","direct":false,"kind":"development","optional":false},{"id":729102618,"package_name":"estree-walker","ecosystem":"npm","requirements":"0.6.1","direct":false,"kind":"development","optional":false},{"id":729102619,"package_name":"esutils","ecosystem":"npm","requirements":"2.0.3","direct":false,"kind":"development","optional":false},{"id":729102620,"package_name":"fast-deep-equal","ecosystem":"npm","requirements":"3.1.3","direct":false,"kind":"development","optional":false},{"id":729102621,"package_name":"fast-diff","ecosystem":"npm","requirements":"1.2.0","direct":false,"kind":"development","optional":false},{"id":729102622,"package_name":"fast-glob","ecosystem":"npm","requirements":"3.2.7","direct":false,"kind":"development","optional":false},{"id":729102623,"package_name":"micromatch","ecosystem":"npm","requirements":"4.0.4","direct":false,"kind":"development","optional":false},{"id":729102624,"package_name":"fast-json-stable-stringify","ecosystem":"npm","requirements":"2.0.0","direct":false,"kind":"development","optional":false},{"id":729102625,"package_name":"fast-levenshtein","ecosystem":"npm","requirements":"2.0.6","direct":false,"kind":"development","optional":false},{"id":729102626,"package_name":"fastq","ecosystem":"npm","requirements":"1.13.0","direct":false,"kind":"development","optional":false},{"id":729102627,"package_name":"fecha","ecosystem":"npm","requirements":"4.2.0","direct":false,"kind":"runtime","optional":false},{"id":729102628,"package_name":"file-entry-cache","ecosystem":"npm","requirements":"6.0.1","direct":false,"kind":"development","optional":false},{"id":729102629,"package_name":"fill-range","ecosystem":"npm","requirements":"7.0.1","direct":false,"kind":"development","optional":false},{"id":729102630,"package_name":"find-cache-dir","ecosystem":"npm","requirements":"3.3.2","direct":false,"kind":"development","optional":false},{"id":729102631,"package_name":"find-up","ecosystem":"npm","requirements":"4.1.0","direct":false,"kind":"development","optional":false},{"id":729102632,"package_name":"locate-path","ecosystem":"npm","requirements":"5.0.0","direct":false,"kind":"development","optional":false},{"id":729102633,"package_name":"p-limit","ecosystem":"npm","requirements":"2.2.1","direct":false,"kind":"development","optional":false},{"id":729102634,"package_name":"p-locate","ecosystem":"npm","requirements":"4.1.0","direct":false,"kind":"development","optional":false},{"id":729102635,"package_name":"p-try","ecosystem":"npm","requirements":"2.2.0","direct":false,"kind":"development","optional":false},{"id":729102636,"package_name":"path-exists","ecosystem":"npm","requirements":"4.0.0","direct":false,"kind":"development","optional":false},{"id":729102637,"package_name":"pkg-dir","ecosystem":"npm","requirements":"4.2.0","direct":false,"kind":"development","optional":false},{"id":729102638,"package_name":"find-up","ecosystem":"npm","requirements":"2.1.0","direct":false,"kind":"development","optional":false},{"id":729102639,"package_name":"flat-cache","ecosystem":"npm","requirements":"3.0.4","direct":false,"kind":"development","optional":false},{"id":729102640,"package_name":"flatted","ecosystem":"npm","requirements":"3.2.2","direct":false,"kind":"development","optional":false},{"id":729102641,"package_name":"fs-extra","ecosystem":"npm","requirements":"8.1.0","direct":false,"kind":"development","optional":false},{"id":729102642,"package_name":"fs.realpath","ecosystem":"npm","requirements":"1.0.0","direct":false,"kind":"development","optional":false},{"id":729102643,"package_name":"function-bind","ecosystem":"npm","requirements":"1.1.1","direct":false,"kind":"development","optional":false},{"id":729102644,"package_name":"functional-red-black-tree","ecosystem":"npm","requirements":"1.0.1","direct":false,"kind":"development","optional":false},{"id":729102645,"package_name":"gensync","ecosystem":"npm","requirements":"1.0.0-beta.2","direct":false,"kind":"development","optional":false},{"id":729102646,"package_name":"get-func-name","ecosystem":"npm","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":729102647,"package_name":"get-intrinsic","ecosystem":"npm","requirements":"1.1.1","direct":false,"kind":"development","optional":false},{"id":729102648,"package_name":"get-symbol-description","ecosystem":"npm","requirements":"1.0.0","direct":false,"kind":"development","optional":false},{"id":729102649,"package_name":"glob","ecosystem":"npm","requirements":"7.1.4","direct":false,"kind":"development","optional":false},{"id":729102650,"package_name":"glob-parent","ecosystem":"npm","requirements":"5.1.2","direct":false,"kind":"development","optional":false},{"id":729102651,"package_name":"globals","ecosystem":"npm","requirements":"13.11.0","direct":false,"kind":"development","optional":false},{"id":729102652,"package_name":"globby","ecosystem":"npm","requirements":"11.0.4","direct":false,"kind":"development","optional":false},{"id":729102653,"package_name":"graceful-fs","ecosystem":"npm","requirements":"4.2.2","direct":false,"kind":"development","optional":false},{"id":729102654,"package_name":"has","ecosystem":"npm","requirements":"1.0.3","direct":false,"kind":"development","optional":false},{"id":729102655,"package_name":"has-bigints","ecosystem":"npm","requirements":"1.0.1","direct":false,"kind":"development","optional":false},{"id":729102656,"package_name":"has-flag","ecosystem":"npm","requirements":"3.0.0","direct":false,"kind":"development","optional":false},{"id":729102657,"package_name":"has-symbols","ecosystem":"npm","requirements":"1.0.1","direct":false,"kind":"development","optional":false},{"id":729102658,"package_name":"has-tostringtag","ecosystem":"npm","requirements":"1.0.0","direct":false,"kind":"development","optional":false},{"id":729102659,"package_name":"he","ecosystem":"npm","requirements":"1.2.0","direct":false,"kind":"development","optional":false},{"id":729102660,"package_name":"home-assistant-js-websocket","ecosystem":"npm","requirements":"5.11.1","direct":false,"kind":"runtime","optional":false},{"id":729102661,"package_name":"hosted-git-info","ecosystem":"npm","requirements":"2.8.4","direct":false,"kind":"development","optional":false},{"id":729102662,"package_name":"html-minifier","ecosystem":"npm","requirements":"4.0.0","direct":false,"kind":"development","optional":false},{"id":729102663,"package_name":"ignore","ecosystem":"npm","requirements":"4.0.6","direct":false,"kind":"development","optional":false},{"id":729102664,"package_name":"import-fresh","ecosystem":"npm","requirements":"3.1.0","direct":false,"kind":"development","optional":false},{"id":729102665,"package_name":"imurmurhash","ecosystem":"npm","requirements":"0.1.4","direct":false,"kind":"development","optional":false},{"id":729102666,"package_name":"inflight","ecosystem":"npm","requirements":"1.0.6","direct":false,"kind":"development","optional":false},{"id":729102667,"package_name":"inherits","ecosystem":"npm","requirements":"2.0.4","direct":false,"kind":"development","optional":false},{"id":729102668,"package_name":"internal-slot","ecosystem":"npm","requirements":"1.0.3","direct":false,"kind":"development","optional":false},{"id":729102669,"package_name":"intl-format-cache","ecosystem":"npm","requirements":"4.2.26","direct":false,"kind":"runtime","optional":false},{"id":729102670,"package_name":"intl-messageformat","ecosystem":"npm","requirements":"8.3.9","direct":false,"kind":"runtime","optional":false},{"id":729102671,"package_name":"intl-messageformat-parser","ecosystem":"npm","requirements":"5.0.2","direct":false,"kind":"runtime","optional":false},{"id":729102672,"package_name":"is-arrayish","ecosystem":"npm","requirements":"0.2.1","direct":false,"kind":"development","optional":false},{"id":729102673,"package_name":"is-bigint","ecosystem":"npm","requirements":"1.0.4","direct":false,"kind":"development","optional":false},{"id":729102674,"package_name":"is-boolean-object","ecosystem":"npm","requirements":"1.1.2","direct":false,"kind":"development","optional":false},{"id":729102675,"package_name":"is-callable","ecosystem":"npm","requirements":"1.2.2","direct":false,"kind":"development","optional":false},{"id":729102676,"package_name":"is-core-module","ecosystem":"npm","requirements":"2.7.0","direct":false,"kind":"development","optional":false},{"id":729102677,"package_name":"is-date-object","ecosystem":"npm","requirements":"1.0.1","direct":false,"kind":"development","optional":false},{"id":729102678,"package_name":"is-extglob","ecosystem":"npm","requirements":"2.1.1","direct":false,"kind":"development","optional":false},{"id":729102679,"package_name":"is-fullwidth-code-point","ecosystem":"npm","requirements":"3.0.0","direct":false,"kind":"development","optional":false},{"id":729102680,"package_name":"is-glob","ecosystem":"npm","requirements":"4.0.3","direct":false,"kind":"development","optional":false},{"id":729102681,"package_name":"is-module","ecosystem":"npm","requirements":"1.0.0","direct":false,"kind":"development","optional":false},{"id":729102682,"package_name":"is-negative-zero","ecosystem":"npm","requirements":"2.0.1","direct":false,"kind":"development","optional":false},{"id":729102683,"package_name":"is-number","ecosystem":"npm","requirements":"7.0.0","direct":false,"kind":"development","optional":false},{"id":729102684,"package_name":"is-number-object","ecosystem":"npm","requirements":"1.0.6","direct":false,"kind":"development","optional":false},{"id":729102685,"package_name":"is-reference","ecosystem":"npm","requirements":"1.1.4","direct":false,"kind":"development","optional":false},{"id":729102686,"package_name":"is-regex","ecosystem":"npm","requirements":"1.1.1","direct":false,"kind":"development","optional":false},{"id":729102687,"package_name":"is-shared-array-buffer","ecosystem":"npm","requirements":"1.0.1","direct":false,"kind":"development","optional":false},{"id":729102688,"package_name":"is-string","ecosystem":"npm","requirements":"1.0.7","direct":false,"kind":"development","optional":false},{"id":729102689,"package_name":"is-symbol","ecosystem":"npm","requirements":"1.0.2","direct":false,"kind":"development","optional":false},{"id":729102690,"package_name":"has-symbols","ecosystem":"npm","requirements":"1.0.0","direct":false,"kind":"development","optional":false},{"id":729102691,"package_name":"is-weakref","ecosystem":"npm","requirements":"1.0.1","direct":false,"kind":"development","optional":false},{"id":729102692,"package_name":"call-bind","ecosystem":"npm","requirements":"1.0.0","direct":false,"kind":"development","optional":false},{"id":729102693,"package_name":"get-intrinsic","ecosystem":"npm","requirements":"1.0.1","direct":false,"kind":"development","optional":false},{"id":729102694,"package_name":"isexe","ecosystem":"npm","requirements":"2.0.0","direct":false,"kind":"development","optional":false},{"id":729102695,"package_name":"js-tokens","ecosystem":"npm","requirements":"4.0.0","direct":false,"kind":"development","optional":false},{"id":729102696,"package_name":"js-yaml","ecosystem":"npm","requirements":"3.13.1","direct":false,"kind":"development","optional":false},{"id":729102697,"package_name":"jsesc","ecosystem":"npm","requirements":"2.5.2","direct":false,"kind":"development","optional":false},{"id":729102698,"package_name":"json-parse-better-errors","ecosystem":"npm","requirements":"1.0.2","direct":false,"kind":"development","optional":false},{"id":729102699,"package_name":"json-schema-traverse","ecosystem":"npm","requirements":"0.4.1","direct":false,"kind":"development","optional":false},{"id":729102700,"package_name":"json-stable-stringify-without-jsonify","ecosystem":"npm","requirements":"1.0.1","direct":false,"kind":"development","optional":false},{"id":729102701,"package_name":"json5","ecosystem":"npm","requirements":"2.1.3","direct":false,"kind":"development","optional":false},{"id":729102702,"package_name":"minimist","ecosystem":"npm","requirements":"1.2.5","direct":false,"kind":"development","optional":false},{"id":729102703,"package_name":"jsonfile","ecosystem":"npm","requirements":"4.0.0","direct":false,"kind":"development","optional":false},{"id":729102704,"package_name":"kind-of","ecosystem":"npm","requirements":"6.0.3","direct":false,"kind":"runtime","optional":false},{"id":729102705,"package_name":"levn","ecosystem":"npm","requirements":"0.4.1","direct":false,"kind":"development","optional":false},{"id":729102706,"package_name":"lit","ecosystem":"npm","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":729102707,"package_name":"lit-element","ecosystem":"npm","requirements":"3.0.0","direct":false,"kind":"runtime","optional":false},{"id":729102708,"package_name":"lit-html","ecosystem":"npm","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":729102709,"package_name":"load-json-file","ecosystem":"npm","requirements":"4.0.0","direct":false,"kind":"development","optional":false},{"id":729102710,"package_name":"locate-path","ecosystem":"npm","requirements":"2.0.0","direct":false,"kind":"development","optional":false},{"id":729102711,"package_name":"lodash","ecosystem":"npm","requirements":"4.17.19","direct":false,"kind":"development","optional":false},{"id":729102712,"package_name":"lodash.clonedeep","ecosystem":"npm","requirements":"4.5.0","direct":false,"kind":"development","optional":false},{"id":729102713,"package_name":"lodash.merge","ecosystem":"npm","requirements":"4.6.2","direct":false,"kind":"development","optional":false},{"id":729102714,"package_name":"lodash.truncate","ecosystem":"npm","requirements":"4.4.2","direct":false,"kind":"development","optional":false},{"id":729102715,"package_name":"lower-case","ecosystem":"npm","requirements":"1.1.4","direct":false,"kind":"development","optional":false},{"id":729102716,"package_name":"lru-cache","ecosystem":"npm","requirements":"6.0.0","direct":false,"kind":"development","optional":false},{"id":729102717,"package_name":"magic-string","ecosystem":"npm","requirements":"0.25.7","direct":false,"kind":"development","optional":false},{"id":729102718,"package_name":"make-dir","ecosystem":"npm","requirements":"3.1.0","direct":false,"kind":"development","optional":false},{"id":729102719,"package_name":"merge-stream","ecosystem":"npm","requirements":"2.0.0","direct":false,"kind":"development","optional":false},{"id":729102720,"package_name":"merge2","ecosystem":"npm","requirements":"1.4.1","direct":false,"kind":"development","optional":false},{"id":729102721,"package_name":"micromatch","ecosystem":"npm","requirements":"4.0.2","direct":false,"kind":"development","optional":false},{"id":729102722,"package_name":"picomatch","ecosystem":"npm","requirements":"2.2.2","direct":false,"kind":"development","optional":false},{"id":729102723,"package_name":"mime","ecosystem":"npm","requirements":"2.4.6","direct":false,"kind":"development","optional":false},{"id":729102724,"package_name":"minify-html-literals","ecosystem":"npm","requirements":"1.3.5","direct":false,"kind":"development","optional":false},{"id":729102725,"package_name":"minimatch","ecosystem":"npm","requirements":"3.0.4","direct":false,"kind":"development","optional":false},{"id":729102726,"package_name":"minimist","ecosystem":"npm","requirements":"1.2.0","direct":false,"kind":"development","optional":false},{"id":729102727,"package_name":"ms","ecosystem":"npm","requirements":"2.1.3","direct":false,"kind":"development","optional":false},{"id":729102728,"package_name":"natural-compare","ecosystem":"npm","requirements":"1.4.0","direct":false,"kind":"development","optional":false},{"id":729102729,"package_name":"no-case","ecosystem":"npm","requirements":"2.3.2","direct":false,"kind":"development","optional":false},{"id":729102730,"package_name":"node-releases","ecosystem":"npm","requirements":"1.1.77","direct":false,"kind":"development","optional":false},{"id":729102731,"package_name":"normalize-package-data","ecosystem":"npm","requirements":"2.5.0","direct":false,"kind":"development","optional":false},{"id":729102732,"package_name":"semver","ecosystem":"npm","requirements":"5.7.1","direct":false,"kind":"development","optional":false},{"id":729102733,"package_name":"object-inspect","ecosystem":"npm","requirements":"1.11.0","direct":false,"kind":"development","optional":false},{"id":729102734,"package_name":"object-keys","ecosystem":"npm","requirements":"1.1.1","direct":false,"kind":"development","optional":false},{"id":729102735,"package_name":"object.assign","ecosystem":"npm","requirements":"4.1.2","direct":false,"kind":"development","optional":false},{"id":729102736,"package_name":"object.entries","ecosystem":"npm","requirements":"1.1.2","direct":false,"kind":"development","optional":false},{"id":729102737,"package_name":"es-abstract","ecosystem":"npm","requirements":"1.17.7","direct":false,"kind":"development","optional":false},{"id":729102738,"package_name":"is-negative-zero","ecosystem":"npm","requirements":"2.0.0","direct":false,"kind":"development","optional":false},{"id":729102739,"package_name":"object-inspect","ecosystem":"npm","requirements":"1.8.0","direct":false,"kind":"development","optional":false},{"id":729102740,"package_name":"string.prototype.trimend","ecosystem":"npm","requirements":"1.0.2","direct":false,"kind":"development","optional":false},{"id":729102741,"package_name":"es-abstract","ecosystem":"npm","requirements":"1.18.0-next.1","direct":false,"kind":"development","optional":false},{"id":729102742,"package_name":"object.values","ecosystem":"npm","requirements":"1.1.5","direct":false,"kind":"development","optional":false},{"id":729102743,"package_name":"once","ecosystem":"npm","requirements":"1.4.0","direct":false,"kind":"development","optional":false},{"id":729102744,"package_name":"opener","ecosystem":"npm","requirements":"1.5.1","direct":false,"kind":"development","optional":false},{"id":729102745,"package_name":"optionator","ecosystem":"npm","requirements":"0.9.1","direct":false,"kind":"development","optional":false},{"id":729102746,"package_name":"p-limit","ecosystem":"npm","requirements":"1.3.0","direct":false,"kind":"development","optional":false},{"id":729102747,"package_name":"p-locate","ecosystem":"npm","requirements":"2.0.0","direct":false,"kind":"development","optional":false},{"id":729102748,"package_name":"p-try","ecosystem":"npm","requirements":"1.0.0","direct":false,"kind":"development","optional":false},{"id":729102749,"package_name":"param-case","ecosystem":"npm","requirements":"2.1.1","direct":false,"kind":"development","optional":false},{"id":729102750,"package_name":"parent-module","ecosystem":"npm","requirements":"1.0.1","direct":false,"kind":"development","optional":false},{"id":729102751,"package_name":"parse-json","ecosystem":"npm","requirements":"4.0.0","direct":false,"kind":"development","optional":false},{"id":729102752,"package_name":"parse-literals","ecosystem":"npm","requirements":"1.2.1","direct":false,"kind":"development","optional":false},{"id":729102753,"package_name":"path-exists","ecosystem":"npm","requirements":"3.0.0","direct":false,"kind":"development","optional":false},{"id":729102754,"package_name":"path-is-absolute","ecosystem":"npm","requirements":"1.0.1","direct":false,"kind":"development","optional":false},{"id":729102755,"package_name":"path-key","ecosystem":"npm","requirements":"3.1.1","direct":false,"kind":"development","optional":false},{"id":729102756,"package_name":"path-parse","ecosystem":"npm","requirements":"1.0.6","direct":false,"kind":"development","optional":false},{"id":729102757,"package_name":"path-type","ecosystem":"npm","requirements":"3.0.0","direct":false,"kind":"development","optional":false},{"id":729102758,"package_name":"pathval","ecosystem":"npm","requirements":"1.1.0","direct":false,"kind":"runtime","optional":false},{"id":729102759,"package_name":"picocolors","ecosystem":"npm","requirements":"0.2.1","direct":false,"kind":"development","optional":false},{"id":729102760,"package_name":"picomatch","ecosystem":"npm","requirements":"2.3.0","direct":false,"kind":"development","optional":false},{"id":729102761,"package_name":"pify","ecosystem":"npm","requirements":"3.0.0","direct":false,"kind":"development","optional":false},{"id":729102762,"package_name":"pkg-dir","ecosystem":"npm","requirements":"2.0.0","direct":false,"kind":"development","optional":false},{"id":729102763,"package_name":"pkg-up","ecosystem":"npm","requirements":"2.0.0","direct":false,"kind":"development","optional":false},{"id":729102764,"package_name":"prelude-ls","ecosystem":"npm","requirements":"1.2.1","direct":false,"kind":"development","optional":false},{"id":729102765,"package_name":"prettier","ecosystem":"npm","requirements":"2.4.1","direct":false,"kind":"development","optional":false},{"id":729102766,"package_name":"prettier-linter-helpers","ecosystem":"npm","requirements":"1.0.0","direct":false,"kind":"development","optional":false},{"id":729102767,"package_name":"progress","ecosystem":"npm","requirements":"2.0.3","direct":false,"kind":"development","optional":false},{"id":729102768,"package_name":"punycode","ecosystem":"npm","requirements":"2.1.1","direct":false,"kind":"development","optional":false},{"id":729102769,"package_name":"queue-microtask","ecosystem":"npm","requirements":"1.2.3","direct":false,"kind":"development","optional":false},{"id":729102770,"package_name":"randombytes","ecosystem":"npm","requirements":"2.1.0","direct":false,"kind":"development","optional":false},{"id":729102771,"package_name":"safe-buffer","ecosystem":"npm","requirements":"5.2.1","direct":false,"kind":"development","optional":false},{"id":729102772,"package_name":"read-pkg","ecosystem":"npm","requirements":"3.0.0","direct":false,"kind":"development","optional":false},{"id":729102773,"package_name":"read-pkg-up","ecosystem":"npm","requirements":"3.0.0","direct":false,"kind":"development","optional":false},{"id":729102774,"package_name":"regexpp","ecosystem":"npm","requirements":"3.2.0","direct":false,"kind":"development","optional":false},{"id":729102775,"package_name":"relateurl","ecosystem":"npm","requirements":"0.2.7","direct":false,"kind":"development","optional":false},{"id":729102776,"package_name":"require-from-string","ecosystem":"npm","requirements":"2.0.2","direct":false,"kind":"development","optional":false},{"id":729102777,"package_name":"resolve","ecosystem":"npm","requirements":"1.12.0","direct":false,"kind":"development","optional":false},{"id":729102778,"package_name":"resolve-from","ecosystem":"npm","requirements":"4.0.0","direct":false,"kind":"development","optional":false},{"id":729102779,"package_name":"reusify","ecosystem":"npm","requirements":"1.0.4","direct":false,"kind":"development","optional":false},{"id":729102780,"package_name":"rimraf","ecosystem":"npm","requirements":"3.0.2","direct":false,"kind":"development","optional":false},{"id":729102781,"package_name":"rollup","ecosystem":"npm","requirements":"2.58.0","direct":false,"kind":"development","optional":false},{"id":729102782,"package_name":"rollup-plugin-babel","ecosystem":"npm","requirements":"4.4.0","direct":false,"kind":"development","optional":false},{"id":729102783,"package_name":"rollup-plugin-commonjs","ecosystem":"npm","requirements":"10.1.0","direct":false,"kind":"development","optional":false},{"id":729102784,"package_name":"rollup-plugin-minify-html-literals","ecosystem":"npm","requirements":"1.2.6","direct":false,"kind":"development","optional":false},{"id":729102785,"package_name":"rollup-plugin-node-resolve","ecosystem":"npm","requirements":"5.2.0","direct":false,"kind":"development","optional":false},{"id":729102786,"package_name":"rollup-plugin-serve","ecosystem":"npm","requirements":"1.1.0","direct":false,"kind":"development","optional":false},{"id":729102787,"package_name":"rollup-plugin-terser","ecosystem":"npm","requirements":"7.0.2","direct":false,"kind":"development","optional":false},{"id":729102788,"package_name":"jest-worker","ecosystem":"npm","requirements":"26.6.2","direct":false,"kind":"development","optional":false},{"id":729102789,"package_name":"serialize-javascript","ecosystem":"npm","requirements":"4.0.0","direct":false,"kind":"development","optional":false},{"id":729102790,"package_name":"rollup-plugin-typescript2","ecosystem":"npm","requirements":"0.30.0","direct":false,"kind":"development","optional":false},{"id":729102791,"package_name":"rollup-pluginutils","ecosystem":"npm","requirements":"2.8.2","direct":false,"kind":"development","optional":false},{"id":729102792,"package_name":"run-parallel","ecosystem":"npm","requirements":"1.2.0","direct":false,"kind":"development","optional":false},{"id":729102793,"package_name":"safe-buffer","ecosystem":"npm","requirements":"5.1.2","direct":false,"kind":"development","optional":false},{"id":729102794,"package_name":"semver","ecosystem":"npm","requirements":"6.3.0","direct":false,"kind":"development","optional":false},{"id":729102795,"package_name":"shebang-command","ecosystem":"npm","requirements":"2.0.0","direct":false,"kind":"development","optional":false},{"id":729102796,"package_name":"shebang-regex","ecosystem":"npm","requirements":"3.0.0","direct":false,"kind":"development","optional":false},{"id":729102797,"package_name":"side-channel","ecosystem":"npm","requirements":"1.0.4","direct":false,"kind":"development","optional":false},{"id":729102798,"package_name":"slash","ecosystem":"npm","requirements":"3.0.0","direct":false,"kind":"development","optional":false},{"id":729102799,"package_name":"slice-ansi","ecosystem":"npm","requirements":"4.0.0","direct":false,"kind":"development","optional":false},{"id":729102800,"package_name":"source-map","ecosystem":"npm","requirements":"0.5.7","direct":false,"kind":"development","optional":false},{"id":729102801,"package_name":"source-map-support","ecosystem":"npm","requirements":"0.5.20","direct":false,"kind":"development","optional":false},{"id":729102802,"package_name":"sourcemap-codec","ecosystem":"npm","requirements":"1.4.8","direct":false,"kind":"development","optional":false},{"id":729102803,"package_name":"spdx-correct","ecosystem":"npm","requirements":"3.1.0","direct":false,"kind":"development","optional":false},{"id":729102804,"package_name":"spdx-exceptions","ecosystem":"npm","requirements":"2.2.0","direct":false,"kind":"development","optional":false},{"id":729102805,"package_name":"spdx-expression-parse","ecosystem":"npm","requirements":"3.0.0","direct":false,"kind":"development","optional":false},{"id":729102806,"package_name":"spdx-license-ids","ecosystem":"npm","requirements":"3.0.5","direct":false,"kind":"development","optional":false},{"id":729102807,"package_name":"sprintf-js","ecosystem":"npm","requirements":"1.0.3","direct":false,"kind":"development","optional":false},{"id":729102808,"package_name":"string-width","ecosystem":"npm","requirements":"4.2.3","direct":false,"kind":"development","optional":false},{"id":729102809,"package_name":"string.prototype.trimend","ecosystem":"npm","requirements":"1.0.4","direct":false,"kind":"development","optional":false},{"id":729102810,"package_name":"string.prototype.trimstart","ecosystem":"npm","requirements":"1.0.2","direct":false,"kind":"development","optional":false},{"id":729102811,"package_name":"strip-ansi","ecosystem":"npm","requirements":"6.0.1","direct":false,"kind":"development","optional":false},{"id":729102812,"package_name":"strip-bom","ecosystem":"npm","requirements":"3.0.0","direct":false,"kind":"development","optional":false},{"id":729102813,"package_name":"strip-json-comments","ecosystem":"npm","requirements":"3.1.1","direct":false,"kind":"development","optional":false},{"id":729102814,"package_name":"superstruct","ecosystem":"npm","requirements":"0.8.3","direct":false,"kind":"runtime","optional":false},{"id":729102815,"package_name":"supports-color","ecosystem":"npm","requirements":"7.2.0","direct":false,"kind":"development","optional":false},{"id":729102816,"package_name":"has-flag","ecosystem":"npm","requirements":"4.0.0","direct":false,"kind":"development","optional":false},{"id":729102817,"package_name":"table","ecosystem":"npm","requirements":"6.7.2","direct":false,"kind":"development","optional":false},{"id":729102818,"package_name":"ajv","ecosystem":"npm","requirements":"8.6.3","direct":false,"kind":"development","optional":false},{"id":729102819,"package_name":"json-schema-traverse","ecosystem":"npm","requirements":"1.0.0","direct":false,"kind":"development","optional":false},{"id":729102820,"package_name":"terser","ecosystem":"npm","requirements":"5.9.0","direct":false,"kind":"development","optional":false},{"id":729102821,"package_name":"source-map","ecosystem":"npm","requirements":"0.7.3","direct":false,"kind":"development","optional":false},{"id":729102822,"package_name":"text-table","ecosystem":"npm","requirements":"0.2.0","direct":false,"kind":"development","optional":false},{"id":729102823,"package_name":"tiny-invariant","ecosystem":"npm","requirements":"1.1.0","direct":false,"kind":"runtime","optional":false},{"id":729102824,"package_name":"to-fast-properties","ecosystem":"npm","requirements":"2.0.0","direct":false,"kind":"development","optional":false},{"id":729102825,"package_name":"to-regex-range","ecosystem":"npm","requirements":"5.0.1","direct":false,"kind":"development","optional":false},{"id":729102826,"package_name":"tsconfig-paths","ecosystem":"npm","requirements":"3.11.0","direct":false,"kind":"development","optional":false},{"id":729102827,"package_name":"json5","ecosystem":"npm","requirements":"1.0.1","direct":false,"kind":"development","optional":false},{"id":729102828,"package_name":"tslib","ecosystem":"npm","requirements":"2.1.0","direct":false,"kind":"development","optional":false},{"id":729102829,"package_name":"tsutils","ecosystem":"npm","requirements":"3.21.0","direct":false,"kind":"development","optional":false},{"id":729102830,"package_name":"tslib","ecosystem":"npm","requirements":"1.14.1","direct":false,"kind":"development","optional":false},{"id":729102831,"package_name":"type-check","ecosystem":"npm","requirements":"0.4.0","direct":false,"kind":"development","optional":false},{"id":729102832,"package_name":"type-detect","ecosystem":"npm","requirements":"4.0.8","direct":false,"kind":"runtime","optional":false},{"id":729102833,"package_name":"type-fest","ecosystem":"npm","requirements":"0.20.2","direct":false,"kind":"development","optional":false},{"id":729102834,"package_name":"typescript","ecosystem":"npm","requirements":"4.4.3","direct":false,"kind":"development","optional":false},{"id":729102835,"package_name":"uglify-js","ecosystem":"npm","requirements":"3.15.3","direct":false,"kind":"development","optional":false},{"id":729102836,"package_name":"unbox-primitive","ecosystem":"npm","requirements":"1.0.1","direct":false,"kind":"development","optional":false},{"id":729102837,"package_name":"universalify","ecosystem":"npm","requirements":"0.1.2","direct":false,"kind":"development","optional":false},{"id":729102838,"package_name":"upper-case","ecosystem":"npm","requirements":"1.1.3","direct":false,"kind":"development","optional":false},{"id":729102839,"package_name":"uri-js","ecosystem":"npm","requirements":"4.2.2","direct":false,"kind":"development","optional":false},{"id":729102840,"package_name":"v8-compile-cache","ecosystem":"npm","requirements":"2.1.0","direct":false,"kind":"development","optional":false},{"id":729102841,"package_name":"validate-npm-package-license","ecosystem":"npm","requirements":"3.0.4","direct":false,"kind":"development","optional":false},{"id":729102842,"package_name":"which","ecosystem":"npm","requirements":"2.0.2","direct":false,"kind":"development","optional":false},{"id":729102843,"package_name":"which-boxed-primitive","ecosystem":"npm","requirements":"1.0.2","direct":false,"kind":"development","optional":false},{"id":729102844,"package_name":"is-string","ecosystem":"npm","requirements":"1.0.5","direct":false,"kind":"development","optional":false},{"id":729102845,"package_name":"is-symbol","ecosystem":"npm","requirements":"1.0.4","direct":false,"kind":"development","optional":false},{"id":729102846,"package_name":"word-wrap","ecosystem":"npm","requirements":"1.2.3","direct":false,"kind":"development","optional":false},{"id":729102847,"package_name":"wrappy","ecosystem":"npm","requirements":"1.0.2","direct":false,"kind":"development","optional":false},{"id":729102848,"package_name":"yallist","ecosystem":"npm","requirements":"4.0.0","direct":false,"kind":"development","optional":false}]},{"ecosystem":"npm","filepath":"package.json","sha":null,"kind":"manifest","created_at":"2022-08-09T03:16:29.588Z","updated_at":"2022-08-09T03:16:29.588Z","repository_link":"https://github.com/MindFreeze/ha-sankey-chart/blob/master/package.json","dependencies":[{"id":729103037,"package_name":"custom-card-helpers","ecosystem":"npm","requirements":"^1.7.2","direct":true,"kind":"runtime","optional":false},{"id":729103038,"package_name":"home-assistant-js-websocket","ecosystem":"npm","requirements":"^5.11.1","direct":true,"kind":"runtime","optional":false},{"id":729103039,"package_name":"lit","ecosystem":"npm","requirements":"^2.0.0-rc.2","direct":true,"kind":"runtime","optional":false},{"id":729103040,"package_name":"@babel/core","ecosystem":"npm","requirements":"^7.15.0","direct":true,"kind":"development","optional":false},{"id":729103041,"package_name":"@babel/plugin-proposal-class-properties","ecosystem":"npm","requirements":"^7.14.5","direct":true,"kind":"development","optional":false},{"id":729103042,"package_name":"@babel/plugin-proposal-decorators","ecosystem":"npm","requirements":"^7.14.5","direct":true,"kind":"development","optional":false},{"id":729103043,"package_name":"@rollup/plugin-json","ecosystem":"npm","requirements":"^4.1.0","direct":true,"kind":"development","optional":false},{"id":729103044,"package_name":"@typescript-eslint/eslint-plugin","ecosystem":"npm","requirements":"^4.33.0","direct":true,"kind":"development","optional":false},{"id":729103045,"package_name":"@typescript-eslint/parser","ecosystem":"npm","requirements":"^4.33.0","direct":true,"kind":"development","optional":false},{"id":729103046,"package_name":"eslint","ecosystem":"npm","requirements":"^7.32.0","direct":true,"kind":"development","optional":false},{"id":729103047,"package_name":"eslint-config-airbnb-base","ecosystem":"npm","requirements":"^14.2.1","direct":true,"kind":"development","optional":false},{"id":729103048,"package_name":"eslint-config-prettier","ecosystem":"npm","requirements":"^8.3.0","direct":true,"kind":"development","optional":false},{"id":729103049,"package_name":"eslint-plugin-import","ecosystem":"npm","requirements":"^2.24.0","direct":true,"kind":"development","optional":false},{"id":729103050,"package_name":"eslint-plugin-prettier","ecosystem":"npm","requirements":"^4.0.0","direct":true,"kind":"development","optional":false},{"id":729103051,"package_name":"prettier","ecosystem":"npm","requirements":"^2.4.1","direct":true,"kind":"development","optional":false},{"id":729103052,"package_name":"rollup","ecosystem":"npm","requirements":"^2.58.0","direct":true,"kind":"development","optional":false},{"id":729103053,"package_name":"rollup-plugin-babel","ecosystem":"npm","requirements":"^4.4.0","direct":true,"kind":"development","optional":false},{"id":729103054,"package_name":"rollup-plugin-commonjs","ecosystem":"npm","requirements":"^10.1.0","direct":true,"kind":"development","optional":false},{"id":729103055,"package_name":"rollup-plugin-minify-html-literals","ecosystem":"npm","requirements":"^1.2.6","direct":true,"kind":"development","optional":false},{"id":729103056,"package_name":"rollup-plugin-node-resolve","ecosystem":"npm","requirements":"^5.2.0","direct":true,"kind":"development","optional":false},{"id":729103057,"package_name":"rollup-plugin-serve","ecosystem":"npm","requirements":"^1.1.0","direct":true,"kind":"development","optional":false},{"id":729103058,"package_name":"rollup-plugin-terser","ecosystem":"npm","requirements":"^7.0.2","direct":true,"kind":"development","optional":false},{"id":729103059,"package_name":"rollup-plugin-typescript2","ecosystem":"npm","requirements":"^0.30.0","direct":true,"kind":"development","optional":false},{"id":729103060,"package_name":"typescript","ecosystem":"npm","requirements":"^4.4.3","direct":true,"kind":"development","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/build.yml","sha":null,"kind":"manifest","created_at":"2023-02-13T20:31:04.851Z","updated_at":"2023-02-13T20:31:04.851Z","repository_link":"https://github.com/MindFreeze/ha-sankey-chart/blob/master/.github/workflows/build.yml","dependencies":[{"id":7630459908,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/release-please.yml","sha":null,"kind":"manifest","created_at":"2023-02-13T20:31:04.910Z","updated_at":"2023-02-13T20:31:04.910Z","repository_link":"https://github.com/MindFreeze/ha-sankey-chart/blob/master/.github/workflows/release-please.yml","dependencies":[{"id":7630459969,"package_name":"google-github-actions/release-please-action","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/release.yml","sha":null,"kind":"manifest","created_at":"2023-02-13T20:31:04.989Z","updated_at":"2023-02-13T20:31:04.989Z","repository_link":"https://github.com/MindFreeze/ha-sankey-chart/blob/master/.github/workflows/release.yml","dependencies":[{"id":7630460022,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7630460023,"package_name":"svenstaro/upload-release-action","ecosystem":"actions","requirements":"v1-release","direct":true,"kind":"composite","optional":false},{"id":7630460025,"package_name":"hacs/action","ecosystem":"actions","requirements":"main","direct":true,"kind":"composite","optional":false}]}],"score":9.014325488050225,"created_at":"2023-09-11T14:43:34.889Z","updated_at":"2026-06-23T16:01:36.394Z","avatar_url":"https://github.com/MindFreeze.png","language":"TypeScript","category":"Energy Systems","sub_category":"Building Energy Monitoring","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"# Sankey Chart Card\r\n\r\nA Home Assistant lovelace card to display a sankey chart. For example for energy/power/water consumption.\r\n\r\n[![License][license-shield]](LICENSE.md)\r\n[![hacs_badge](https://img.shields.io/badge/HACS-Default-41BDF5.svg?style=for-the-badge)](https://github.com/hacs/integration)\r\n[![GitHub Activity][commits-shield]][commits]\r\n\r\n[![\"Buy Me A Coffee\"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/mindfreeze)\r\n\r\nThis card is intended to display connections between entities with numeric state. It is not a general graph card.\r\n\r\n![Example card](img/example.png)\r\n\r\n## Installation\r\n\r\nInstall through [HACS](https://hacs.xyz/)\r\n\r\n## Options\r\n\r\n| Name              | Type    | Default             | Description                                 |\r\n| ----------------- | ------- | ------------------- | ------------------------------------------- |\r\n| type              | string  |                     | `custom:sankey-chart`\r\n| autoconfig        | object  |                     | Experimental. See [autoconfig](#autoconfig)\r\n| nodes             | list    |                     | List of entities/nodes to display. See [nodes object](#nodes-object). Required unless using autoconfig.\r\n| links             | list    |                     | Connections between nodes. See [links object](#links-object)\r\n| sections          | list    |                     | Section-level configuration (sorting, min_width). See [sections object](#sections-object)\r\n| layout            | string  | auto                | Valid options are: 'horizontal' - flow left to right, 'vertical' - flow top to bottom \u0026 'auto' - flips to vertical when the available width is smaller than the sum of all sections' `min_width` (default 150 each)\r\n| energy_date_selection | boolean | false           | Integrate with the Energy Dashboard. Filters data based on a sibling [energy-date-selection](https://www.home-assistant.io/dashboards/energy/) card. Use only for accumulated sensors (energy/water/gas). You still need to declare your entities and links — the card just uses the date range from the sibling card. Not compatible with `time_period`. For automatic node/link generation, see [autoconfig](#autoconfig).\r\n| energy_collection_key | string |                   | Key of the energy collection to bind to. Auto-detected by default. Set this if you have multiple energy dashboards and the chart binds to the wrong one. The key follows the pattern `_energy_\u003cdashboard_url\u003e`, e.g. `_energy_energy-dashboard`\r\n| title             | string  |                     | Optional header title for the card\r\n| unit_prefix       | string  |                     | Metric prefix for the unit of measurement. Supported values are m, k, M, G, T, and 'auto'. With 'auto', the appropriate prefix is chosen per value based on its magnitude (m for values \u003c1, k for ≥1000, M for ≥1,000,000, etc.). See \u003chttps://en.wikipedia.org/wiki/Unit_prefix\u003e.\r\n| round             | number  | 0                   | Round the value to at most N decimal places. May not apply to near zero values, see issue [#29](https://github.com/MindFreeze/ha-sankey-chart/issues/29)\r\n| height            | number  | 200                 | The height of the card in pixels. Only matters while in horizontal layout. Vertical layout height is dynamic based on content\r\n| show_icons        | boolean | false               | Display entity icons\r\n| show_names        | boolean | false               | Display entity names\r\n| show_states       | boolean | true                | Display entity states\r\n| show_units        | boolean | true                | Display unit of measurement\r\n| min_box_size      | number  | 3                   | Minimum size of an entity box\r\n| min_box_distance  | number  | 5                   | Minimum space between entity boxes in the same section (perpendicular to flow)\r\n| box_thickness     | number  | 15                  | Thickness in px of the colored bar on each entity box (its width in horizontal layout, height in vertical)\r\n| connection_margin | number  | 0                   | Gap in px between a box and where its connection curves start/end (along the direction of flow). Increase to separate the curves from the box bars\r\n| min_state         | number  | \u003e0                  | Any entity below this value will not be displayed. Only positive numbers above 0 are allowed. The default is to show everything above 0.\r\n| throttle          | number  |                     | Minimum time in ms between updates/rerenders\r\n| static_scale      | number  |                     | State value corresponding to the maximum size (height for horizontal layout and width in vertical) of the card. For example, if this is set to 1000, then a box with state 500 will take up half of its section. If some section exceeds the value of `static_scale`, the card will dynamically rescale overriding this option. See [#153](https://github.com/MindFreeze/ha-sankey-chart/issues/153).\r\n| convert_units_to  | string  |                     | If entities are electricity (kWh) or gas (ft³) usage, convert them to energy (MJ), cost (monetary) or carbon (gCO2). For cost, you must also specify `electricity_price` and/or `gas_price`, as well as the `monetary_unit` of the price(s). For gCO2, all kWh values will be multiplied by the varying grid CO2 intensity, as with the Energy Dashboard.\r\n| co2_intensity_entity |string | sensor.co2_signal_co2_intensity | Entity providing carbon intensity of electricity (gCO2eq/kWh). If you have solar or storage, you may wish to create a template sensor to convert grid CO2 intensity to consumption CO2 intensity.\r\n| gas_co2_intensity | number  | 66.6 g/ft³ or 2352 g/m³ | Carbon intensity of gas, e.g. in gCO2eq/ft³. Default value depends on locale; units must match those of gas entities.\r\n| electricity_price | number  |                     | Unit price of electricity, e.g. in USD/kWh. Automatic conversion does not support varying electricity prices like the Energy Dashboard does.\r\n| gas_price         | number  |                     | Unit price of gas, e.g. in USD/ft³.\r\n| monetary_unit     | string  |                     | Currency of the gas or electricity price, e.g. 'USD'\r\n| sort_by           | string  |                     | Sort the entities. Valid options are: 'state' (sort by current state) and 'none' (no sorting; useful in `sections[].sort_by` to override a top-level value). If your values change often, you may want to use the `throttle` option to limit update frequency\r\n| sort_dir          | string  | desc                | Sorting direction. Valid options are: 'asc' for smallest first \u0026 'desc' for biggest first\r\n| time_period_from | string  |                      | Start of custom time period (e.g., \"now-1d\", \"now/d\"). Not compatible with `energy_date_selection`. See [Time period](#time-period)\r\n| time_period_to   | string  | now                  | End of custom time period. Not compatible with `energy_date_selection`. See [Time period](#time-period)\r\n| ignore_missing_entities | boolean | false         | If true, missing entities will be treated as having a state of 0 instead of throwing an error |\r\n\r\n### Nodes object\r\n\r\n| Name              | Type    | Requirement  | Default             | Description                                 |\r\n| ----------------- | ------- | ------------ | ------------------- | ------------------------------------------- |\r\n| id                | string  | **Required** |                     | Unique node id in the chart graph. Defaults to the entity to read, unless `entity_id` is set.\r\n| entity_id         | string  | **Optional** | value of `id`       | Entity id to read state from. Lets a synthetic `id` (e.g. `sensor.foo__copy`) reference a real entity, so two nodes can render the same entity from different angles. See [filters](#filters).\r\n| section           | number  | **Optional** |                     | Index of the section this node belongs to (0-based). Determines horizontal/vertical position\r\n| attribute         | string  | **Optional** |                     | Use the value of an attribute instead of the state of the entity. unit_of_measurement and id will still come from the entity. For more complex customization, please use HA templates.\r\n| type              | string  | **Optional** | entity              | Possible values are 'entity', 'passthrough', 'remaining_parent_state', 'remaining_child_state', 'high_carbon_energy', 'low_carbon_energy'. See [entity types](#entity-types)\r\n| name              | string  | **Optional** | entity name from HA | Custom label for this entity\r\n| icon              | string  | **Optional** | entity icon from HA | Custom icon for this entity\r\n| unit_of_measurement| string  | **Optional** | unit_of_measurement from HA | Custom unit_of_measurement for this entity. Useful when using attribute. If it contains a unit prefix, that must be in latin. Ex GВт, not ГВт\r\n| color             | string/object | **Optional** | var(--primary-color)| Color of the box. Can be a simple color string ('red', '#FFAA2C', 'rgb(255, 170, 44)', 'random') or a range object for state-based coloring. See [color ranges](#color-ranges)\r\n| add_entities      | list    | **Optional** |                     | Experimental. List of entity ids. Their states will be added to this entity, showing a sum.\r\n| subtract_entities | list    | **Optional** |                     | Experimental. List of entity ids. Their states will be subtracted from this entity's state\r\n| filters           | list    | **Optional** |                     | List of value transforms applied before the positive clamp. See [filters](#filters).\r\n| tap_action        | action  | **Optional** | more-info           | Home assistant action to perform on tap. Supported action types are `more-info`, `zoom`, `navigate`, `url`, `toggle`, `call-service`, `fire-dom-event`. Ex: `action: zoom`\r\n| double_tap_action | action  | **Optional** |                     | Home assistant action to perform on double tap\r\n| hold_action       | action  | **Optional** |                     | Home assistant action to perform on hold\r\n| children_sum      | object  | **Optional** |                     | [reconcile config](#reconcile-config). Determines how to handle mismatches between parents \u0026 children. For example if the sum of the energy from all rooms shouldn't exceed the energy of the whole house. See [#37](https://github.com/MindFreeze/ha-sankey-chart/issues/37) and its related issues\r\n| parents_sum       | object  | **Optional** |                     | [reconcile config](#reconcile-config). Determines how to handle mismatches between parents \u0026 children. For example if the sum of the energy from all rooms shouldn't exceed the energy of the whole house. See [#37](https://github.com/MindFreeze/ha-sankey-chart/issues/37) and its related issues\r\n\r\n### Links object\r\n\r\n| Name                 | Type    | Requirement  | Default             | Description                                 |\r\n| -------------------- | ------- | ------------ | ------------------- | ------------------------------------------- |\r\n| source               | string  | **Required** |                     | Entity id of the parent/source node\r\n| target               | string  | **Required** |                     | Entity id of the child/target node\r\n| value                | string  | **Optional** |                     | Entity id of a sensor that determines how much of the parent flows into the child (connection entity)\r\n\r\n### Filters\r\n\r\nFilters transform a node's raw state before the chart's automatic clamp to ≥ 0. Each entry is a single-key object naming the transform (ESPHome/Plotly style).\r\n\r\n| Filter     | Argument | Effect                                                                  |\r\n| ---------- | -------- | ----------------------------------------------------------------------- |\r\n| `multiply` | number   | Multiplies the raw value. Use `-1` to flip the sign of a signed sensor. |\r\n| `divide`   | number   | Divides the raw value.                                                  |\r\n| `offset`   | number   | Adds the argument to the raw value (use a negative number to subtract). |\r\n\r\nFilters apply in order, so `[{ multiply: 0.001 }, { offset: -5 }]` first scales then offsets.\r\n\r\nPair `filters` with `entity_id` to render the negative half of a signed sensor as its own node — the sibling node reads the same entity but applies `multiply: -1`, so positive readings collapse to 0 (via the chart's positive clamp) and negative readings flow as their absolute value. This is how power-mode [autoconfig](#autoconfig) surfaces grid export and battery charging from a single signed `stat_rate`.\r\n\r\n```yaml\r\nnodes:\r\n  # Import flow: positive part of the signed sensor (negative readings clamp to 0).\r\n  - id: sensor.grid_power\r\n    section: 0\r\n  # Export flow: flip sign first, then clamp — surfaces only the negative readings.\r\n  - id: sensor.grid_power__export\r\n    entity_id: sensor.grid_power\r\n    filters:\r\n      - multiply: -1\r\n    section: 2\r\n```\r\n\r\n### Color ranges\r\n\r\nYou can color nodes based on their state value by using an object instead of a simple color string:\r\n\r\n```yaml\r\nnodes:\r\n  - id: sensor.temperature\r\n    color:\r\n      red:\r\n        from: 30  # red when \u003e= 30\r\n      orange:\r\n        from: 20\r\n        to: 30    # orange when \u003e= 20 and \u003c= 30\r\n      green:\r\n        to: 20    # green when \u003c= 20\r\n```\r\n\r\n### Sections object\r\n\r\n| Name              | Type    | Requirement  | Default             | Description                                 |\r\n| ----------------- | ------- | ------------ | ------------------- | ------------------------------------------- |\r\n| sort_by           | string  | **Optional** |                     | Sort the entities in this section. Overrides the top level option\r\n| sort_dir          | string  | **Optional** | desc                | Sorting direction for this section. Overrides the top level option\r\n| sort_group_by_parent | boolean | **Optional** | false            | Group entities by parent before sorting. See [#135](https://github.com/MindFreeze/ha-sankey-chart/issues/135)\r\n| min_width         | number   | **Optional** |                     | Minimum section width in pixels. Only relevant while in horizontal layout\r\n\r\n### Reconcile config\r\n\r\n| Name                 | Type    | Requirement  | Default             | Description                                 |\r\n| -------------------- | ------- | ------------ | ------------------- | ------------------------------------------- |\r\n| should_be            | string  | **Required** |                     | Valid options are 'equal', 'equal_or_less', 'equal_or_more'\r\n| reconcile_to         | string  | **Required** |                     | Which value to display in case of inconsistency. Valid options are 'min', 'max', 'mean', 'latest'\r\n\r\n### Entity types\r\n\r\n- `entity` - The default value, representing an entity from HA\r\n- `passthrough` - A visual pass-through box in an intermediate section. Passthroughs are ordinary nodes in the link graph — you connect them with explicit `links` like any other node. Node ids must be unique, so a passthrough cannot reuse the id of the entity it represents. If you link across a section gap without declaring a passthrough, the card auto-inserts one (or more) in the intermediate sections. V3 configs are migrated on load; v3 passthroughs are renamed to `{entity_id}__passthrough_{section}` and wired with explicit links. See issue [#9](https://github.com/MindFreeze/ha-sankey-chart/issues/9). Example — a flow from `sensor.parent` to `sensor.child` that passes through a visual box in section 1:\r\n\r\n```yaml\r\nnodes:\r\n  - id: sensor.parent\r\n    section: 0\r\n  - id: child_passthrough\r\n    section: 1\r\n    type: passthrough\r\n  - id: sensor.child\r\n    section: 2\r\nlinks:\r\n  - source: sensor.parent\r\n    target: child_passthrough\r\n  - source: child_passthrough\r\n    target: sensor.child\r\n```\r\n\r\n- `remaining_parent_state` - Used for representing the unaccounted state from this entity's parent. Useful for displaying the unmeasured state as \"Other\". See issue [#2](https://github.com/MindFreeze/ha-sankey-chart/issues/2) \u0026 [#28](https://github.com/MindFreeze/ha-sankey-chart/issues/28). Only 1 is allowed per group. If you add 2, the state will not be split between them but an error will appear. Obviously it must be listed as a target in some link. Example:\r\n\r\n```yaml\r\nnodes:\r\n  - id: other_consumption  # as long as it is unique\r\n    type: remaining_parent_state\r\n    name: Other\r\n```\r\n\r\n- `remaining_child_state` - Used for representing the unaccounted state in this entity's children. Like `remaining_parent_state` but in reverse. Useful for displaying discrepancies where the children add up to more than the parent. See issue [#2](https://github.com/MindFreeze/ha-sankey-chart/issues/2) \u0026 [#15](https://github.com/MindFreeze/ha-sankey-chart/issues/15). Example:\r\n\r\n```yaml\r\nnodes:\r\n  - id: discrepancy  # as long as it is unique\r\n    type: remaining_child_state\r\n    name: Discrepancy\r\nlinks:\r\n  - source: discrepancy\r\n    target: sensor.child1\r\n  - source: discrepancy\r\n    target: sensor.child2\r\n```\r\n\r\n- `high_carbon_energy` / `low_carbon_energy` - Split an energy flow into its carbon-intensive and low-carbon portions, computed for the selected period via Home Assistant's `energy/fossil_energy_consumption` API. Requires either `energy_date_selection: true` or `time_period_from` so a date range is available, plus a CO2 intensity source — either set `co2_intensity_entity` explicitly, or rely on auto-discovery from the energy dashboard's configured CO2 Signal entity. The source entities are taken from `entity_id` (or the node `id` if it's a real entity) plus any `add_entities`. See issue [#54](https://github.com/MindFreeze/ha-sankey-chart/issues/54). Example:\r\n\r\n```yaml\r\ntype: custom:sankey-chart\r\nenergy_date_selection: true\r\n# co2_intensity_entity: sensor.co2_signal_co2_intensity  # optional — auto-discovered from energy dashboard\r\nnodes:\r\n  - id: grid\r\n    entity_id: sensor.grid_consumption\r\n    section: 0\r\n  - id: low_carbon\r\n    type: low_carbon_energy\r\n    entity_id: sensor.grid_consumption\r\n    name: Low-carbon\r\n    section: 1\r\n  - id: high_carbon\r\n    type: high_carbon_energy\r\n    entity_id: sensor.grid_consumption\r\n    name: High-carbon\r\n    section: 1\r\nlinks:\r\n  - source: grid\r\n    target: low_carbon\r\n  - source: grid\r\n    target: high_carbon\r\n```\r\n\r\n### Autoconfig\r\n\r\nThis card supports automatic configuration generation based on the HA energy dashboard. It will set default values for some config parameters and populate the `nodes` and `links` arrays. This is meant to show energy data and assumes you have configured your [Energy Dashboard in HA](https://my.home-assistant.io/redirect/config_energy). Use it like this:\r\n\r\n```yaml\r\n- type: energy-date-selection # you can put this anywhere you want but it is required for energy dashboard integration\r\n- type: custom:sankey-chart\r\n  # ...any other options\r\n  autoconfig:\r\n    print_yaml: false # optional\r\n    # any additional autoconfig options (listed below)\r\n```\r\n\r\nor like this:\r\n\r\n```yaml\r\n- type: custom:sankey-chart\r\n  autoconfig: true\r\n  time_period_from: \"now/d\" # today\r\n```\r\n\r\n| Name              | Type    | Requirement  | Default             | Description                                 |\r\n| ----------------- | ------- | ------------ | ------------------- | ------------------------------------------- |\r\n| mode              | string  | **Optional** | `energy`            | One of `energy`, `power`, `water`, `water_flow`. `power` and `water_flow` are real-time and require HA 2025.12+ (they use the `stat_rate` fields exposed by the energy dashboard).\r\n| print_yaml        | boolean | **Optional** | false               | Prints the auto generated configuration after the card so you can use it as a starting point for customization. It shows up like an error. Don't worry about it.\r\n| group_by_floor    | boolean | **Optional** | true                | Display data per floor\r\n| group_by_area     | boolean | **Optional** | true                | Display data per area\r\n| net_flows         | boolean | **Optional** | true                | Show net energy flows. Set to `false` to show gross energy flows instead, making grid export and battery charge/discharge visible even for net importers\r\n| carbon_split      | boolean | **Optional** | false               | Replace the grid source node with a `high_carbon_energy` / `low_carbon_energy` split (energy mode only). Requires a CO2 signal entity configured in the energy dashboard. See [entity types](#entity-types).\r\n\r\n### Time Period\r\n\r\nThe `time_period_from` and `time_period_to` options allow you to specify a custom time period for data retrieval. The format is based on [Grafana's time range format](https://grafana.com/docs/grafana/latest/dashboards/use-dashboards/?pg=blog\u0026plcmt=body-txt#set-dashboard-time-range).\r\n\r\nTime units: s (seconds), m (minutes), h (hours), d (days), w (weeks), M (months), y (years)\r\n\r\nNote that while seconds and minutes are supported, there is a delay in the statistics data in HA of up to 1 hour, so showing small periods like the last 30 mins probably won't work.\r\n\r\nExamples:\r\n\r\n- `now-5m`: 5 minutes ago\r\n- `now-1h`: 1 hour ago\r\n- `now-1d`: 1 day ago\r\n- `now-1w`: 1 week ago\r\n- `now-1M`: 1 month ago\r\n- `now/d`: Start of the current day\r\n- `now/w`: Start of the current week\r\n- `now/M`: Start of the current month\r\n- `now/y`: Start of the current year\r\n- `now-1d/d`: Start of the previous day\r\n- `now/d+7h`: Today at 07:00\r\n- `now-1d/d+23h`: Yesterday at 23:00\r\n- `now/d-1h`: Yesterday at 23:00 (equivalent)\r\n\r\nModifiers can be combined: offsets and roundings are applied left-to-right, so anchors like `now/d+7h` (round to today's midnight, then add 7 hours) are supported.\r\n\r\nIf `time_period_to` is not specified, it defaults to `now`.\r\n\r\nExample configurations:\r\n\r\n```yaml\r\ntype: custom:sankey-chart\r\ntitle: Last 7 days up to the current moment\r\ntime_period_from: \"now-7d\"\r\n```\r\n\r\n```yaml\r\ntype: custom:sankey-chart\r\ntitle: Yesterday\r\ntime_period_from: \"now-1d/d\"\r\ntime_period_to: \"now/d\"\r\n```\r\n\r\n```yaml\r\ntype: custom:sankey-chart\r\ntitle: Quiet hours (23:00–07:00)\r\ntime_period_from: \"now-1d/d+23h\"\r\ntime_period_to: \"now/d+7h\"\r\n```\r\n\r\n\r\n## Examples\r\n\r\n### Simple\r\n\r\n![Simple example card](img/example-simple.png)\r\n\r\n```yaml\r\n- type: custom:sankey-chart\r\n  show_names: true\r\n  nodes:\r\n    - id: sensor.power\r\n      section: 0\r\n    - id: sensor.washing_machine_power\r\n      section: 1\r\n    - id: sensor.other_power\r\n      section: 1\r\n  links:\r\n    - source: sensor.power\r\n      target: sensor.washing_machine_power\r\n    - source: sensor.power\r\n      target: sensor.other_power\r\n```\r\n\r\n### Energy use\r\n\r\n![Energy example card](img/example-energy.png)\r\n\r\n```yaml\r\n- type: custom:sankey-chart\r\n  show_names: true\r\n  unit_prefix: k\r\n  round: 1\r\n  nodes:\r\n    # Section 0 - Sources\r\n    - id: sensor.solar\r\n      section: 0\r\n      color: var(--warning-color)\r\n    - id: sensor.grid\r\n      section: 0\r\n    - id: sensor.battery\r\n      section: 0\r\n      color: var(--success-color)\r\n    # Section 1 - Total\r\n    - id: sensor.total_energy\r\n      section: 1\r\n    # Section 2 - Distribution\r\n    - id: sensor.garage\r\n      section: 2\r\n      color: purple\r\n    - id: sensor.floor1\r\n      section: 2\r\n    - id: sensor.floor2\r\n      section: 2\r\n    # Section 3 - End consumers\r\n    - id: sensor.ev_charger\r\n      section: 3\r\n      tap_action:\r\n        action: toggle\r\n    - id: garage_other\r\n      section: 3\r\n      type: remaining_parent_state\r\n      name: Other\r\n    - id: sensor.living_room\r\n      section: 3\r\n    - id: sensor.washer\r\n      section: 3\r\n  links:\r\n    # Sources -\u003e Total\r\n    - source: sensor.solar\r\n      target: sensor.total_energy\r\n    - source: sensor.grid\r\n      target: sensor.total_energy\r\n    - source: sensor.battery\r\n      target: sensor.total_energy\r\n    # Total -\u003e Distribution\r\n    - source: sensor.total_energy\r\n      target: sensor.floor1\r\n    - source: sensor.total_energy\r\n      target: sensor.floor2\r\n    - source: sensor.total_energy\r\n      target: sensor.garage\r\n    # Distribution -\u003e End consumers\r\n    - source: sensor.garage\r\n      target: sensor.ev_charger\r\n    - source: sensor.garage\r\n      target: garage_other\r\n    - source: sensor.floor1\r\n      target: sensor.living_room\r\n    - source: sensor.floor1\r\n      target: sensor.washer\r\n      value: sensor.washer_energy_net  # connection entity\r\n```\r\n\r\n### Reconcile state\r\n\r\nExample config where the state of the children must not exceed their parent. `reconcile_to: max` means to take the bigger of the two values. In other words, if the sum of the children is more than the state of the parent, the parent state will be set to the sum of its children within the card. `reconcile_to: min` would do the opposite and reduce the state of the children so they fully fit within the parent. `latest` just takes whichever value was updated last.\r\n\r\n```yaml\r\n- type: custom:sankey-chart\r\n  show_names: true\r\n  nodes:\r\n    - id: sensor.power\r\n      section: 0\r\n      children_sum:\r\n        should_be: equal_or_less\r\n        reconcile_to: max\r\n    - id: sensor.washing_machine_power\r\n      section: 1\r\n    - id: sensor.other_power\r\n      section: 1\r\n  links:\r\n    - source: sensor.power\r\n      target: sensor.washing_machine_power\r\n    - source: sensor.power\r\n      target: sensor.other_power\r\n```\r\n\r\nYou can find more examples and help in the HA forum \u003chttps://community.home-assistant.io/t/anyone-using-the-sankey-chart-card/423125\u003e\r\n\r\n## Energy Dashboard\r\n\r\nFor automatic configuration from your Energy Dashboard setup, see [autoconfig](#autoconfig). To bind the chart's date range to an `energy-date-selection` card while keeping a manual config, see the [`energy_date_selection`](#options) option.\r\n\r\n## FAQ\r\n\r\n**Q: How do I migrate my config from the old format (v3) to the new format (v4)?**\r\n\r\n**A:** See the [Migration Guide](MIGRATION.md) for step-by-step instructions on converting your configuration.\r\n\r\n**Q: Do my entities need to be added to the energy dashboard first?**\r\n\r\n**A:** This card doesn't know/care if an entity is in the energy dashboard. Unless you use `autoconfig` because that relies entirely on the energy dashboard.\r\n\r\n**Q: How do I get total [daily] energy?**\r\n\r\n**A:** There isn't a general Consumed Energy sensor in the HA Energy dashboard AFAIK. HA calculates it based on all the in/out kWh values. I can't tell you exactly how to calculate it because it depends on what values you can monitor. Some people already have a Total Consumption sensor, others have a Current Consumption and create an integration sensor from that, etc.\r\n\r\n**Q: Can I group/sum entities in the chart?**\r\n\r\n**A:** The easiest way is to do it with a template sensor in HA. However it can be done in the chart without a new HA entity. If you have an entity with `type: remaining_parent_state` and it is the only child of its parents, it will just be a sum of all the parents. Similarly if you have an entity with `type: remaining_child_state` and it is the only parent of all its children, it will be a sum of all the children.\r\n\r\n**Q: How do I zoom back out after using the zoom action?**\r\n\r\n**A:** Tap the same (currently top level) entity again to reset the zoom level.\r\n\r\n**Q: My (template) sensor doesn't work with energy_date_selection!?**\r\n\r\n**A:** Sensors should have a proper `state_class` in order for statistics to work. Most commonly `state_class: total`. See \u003chttps://developers.home-assistant.io/docs/core/entity/sensor/#long-term-statistics\u003e\r\n\r\n**Q: Can you add feature X, so I don't have to create template entities in HA?**\r\n\r\n**A:** Most probably no. There is nothing wrong with template entities and they should be the preferred approach instead of duplicating HA functionality in every card. I do make exceptions for often required features like `remaining_parent_state` but prefer to rely on HA functionality whenever I can.\r\n\r\n**Q: My entities are not rendered where I expected**\r\n\r\n**A:** By default entities are displayed in the order in which they appear in the config. You can rearrange them in the YAML or use the sorting options.\r\n\r\n**Q: Does the order of `links` matter, and how should I order them?**\r\n\r\n**A:** Yes — but it matters _per shared source and per shared target_, not globally. The chart walks sections left-to-right, then nodes in `nodes[]` order, then each node's outgoing links in the order you wrote them. Each link subtracts from the remaining state of both its source and its target, so the first link out of a given source gets first claim on that source's value, and the first link into a given target gets first claim on that target's value. `remaining_parent_state` / `remaining_child_state` nodes absorb whatever is left after the earlier links are accounted for. Rule of thumb: for each source, list its outgoing links from highest priority to lowest, with any `remaining_*` sink last. If reordering to fix one flow keeps breaking another, the conflict usually isn't solvable by ordering alone — split the shared node or set the link's `value` (entity id) so the flow isn't inferred from \"remaining.\"\r\n\r\n**Q: The font size is too small sometimes**\r\n\r\n**A:** The font size is determined by the available space, so you can increase the minimum font size by increasing `min_box_size` and/or `min_box_distance`\r\n\r\n## Development\r\n\r\n1. `npm i`\r\n2. `npm start`\r\n3. The compiled `.js` file will be accessible on\r\n   `http://127.0.0.1:3000/ha-sankey-chart.js`.\r\n4. On a running Home Assistant installation add this to your Lovelace `resources:`\r\n\r\n```yaml\r\n- url: 'http://127.0.0.1:3000/ha-sankey-chart.js'\r\n  type: module\r\n```\r\n\r\n[commits-shield]: https://img.shields.io/github/commit-activity/y/MindFreeze/ha-sankey-chart.svg?style=for-the-badge\r\n[commits]: https://github.com//MindFreeze/ha-sankey-chart/commits/master\r\n[license-shield]: https://img.shields.io/github/license/MindFreeze/ha-sankey-chart.svg?style=for-the-badge\r\n","funding_links":["https://github.com/sponsors/MindFreeze","https://buymeacoffee.com/MindFreeze","https://www.buymeacoffee.com/mindfreeze"],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["sensor"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/19679","html_url":"https://ost.ecosyste.ms/projects/19679"}