{"id":15092932,"url":"https://github.com/soenneker/soenneker.blazor.utils.moduleimport","last_synced_at":"2026-04-24T08:01:01.444Z","repository":{"id":245753581,"uuid":"819133206","full_name":"soenneker/soenneker.blazor.utils.moduleimport","owner":"soenneker","description":"A Blazor utility library assisting with asynchronous module loading","archived":false,"fork":false,"pushed_at":"2026-04-22T05:32:47.000Z","size":2299,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-22T07:34:38.144Z","etag":null,"topics":["async","blazor","csharp","dotnet","import","module","moduleimport","moduleimportutil","parallel","util","utils"],"latest_commit_sha":null,"homepage":"https://soenneker.com","language":"C#","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/soenneker.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","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":"soenneker","thanks_dev":"soenneker"}},"created_at":"2024-06-23T21:47:09.000Z","updated_at":"2026-04-22T05:32:19.000Z","dependencies_parsed_at":"2025-12-31T14:04:55.454Z","dependency_job_id":"bc2c36c3-6843-4ebb-8ecd-e62d82b23730","html_url":"https://github.com/soenneker/soenneker.blazor.utils.moduleimport","commit_stats":{"total_commits":363,"total_committers":4,"mean_commits":90.75,"dds":0.0440771349862259,"last_synced_commit":"f75894817a7a7a13cb838f17100bf994901c2230"},"previous_names":["soenneker/soenneker.blazor.utils.moduleimport"],"tags_count":215,"template":false,"template_full_name":null,"purl":"pkg:github/soenneker/soenneker.blazor.utils.moduleimport","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soenneker%2Fsoenneker.blazor.utils.moduleimport","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soenneker%2Fsoenneker.blazor.utils.moduleimport/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soenneker%2Fsoenneker.blazor.utils.moduleimport/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soenneker%2Fsoenneker.blazor.utils.moduleimport/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/soenneker","download_url":"https://codeload.github.com/soenneker/soenneker.blazor.utils.moduleimport/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soenneker%2Fsoenneker.blazor.utils.moduleimport/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32214420,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T03:15:14.334Z","status":"ssl_error","status_checked_at":"2026-04-24T03:15:11.608Z","response_time":64,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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"}},"keywords":["async","blazor","csharp","dotnet","import","module","moduleimport","moduleimportutil","parallel","util","utils"],"created_at":"2024-09-25T11:01:54.817Z","updated_at":"2026-04-24T08:01:01.417Z","avatar_url":"https://github.com/soenneker.png","language":"C#","funding_links":["https://github.com/sponsors/soenneker","https://thanks.dev/soenneker"],"categories":[],"sub_categories":[],"readme":"[![](https://img.shields.io/nuget/v/soenneker.blazor.utils.moduleimport.svg?style=for-the-badge)](https://www.nuget.org/packages/soenneker.blazor.utils.moduleimport/)\n[![](https://img.shields.io/github/actions/workflow/status/soenneker/soenneker.blazor.utils.moduleimport/publish-package.yml?style=for-the-badge)](https://github.com/soenneker/soenneker.blazor.utils.moduleimport/actions/workflows/publish-package.yml)\n[![](https://img.shields.io/nuget/dt/soenneker.blazor.utils.moduleimport.svg?style=for-the-badge)](https://www.nuget.org/packages/soenneker.blazor.utils.moduleimport/)\n[![](https://img.shields.io/github/actions/workflow/status/soenneker/soenneker.blazor.utils.moduleimport/codeql.yml?label=CodeQL\u0026style=for-the-badge)](https://github.com/soenneker/soenneker.blazor.utils.moduleimport/actions/workflows/codeql.yml)\n\n# ![](https://user-images.githubusercontent.com/4441470/224455560-91ed3ee7-f510-4041-a8d2-3fc093025112.png) Soenneker.Blazor.Utils.ModuleImport\n### A Blazor utility library assisting with asynchronous module loading\n\nThis library simplifies the process of loading JavaScript modules and provides methods for waiting until a module is loaded and disposing of modules when they are no longer needed.\n\n## Features\n\n- Import JavaScript modules dynamically.\n- Wait until a module is fully loaded.\n- Dispose of JavaScript modules when they are no longer needed.\n- Singleton pattern to ensure that each module is loaded only once.\n\n## Installation\n\nTo install, add the package to your Blazor project using the .NET CLI:\n\n```sh\ndotnet add package Soenneker.Blazor.Utils.ModuleImport\n```\n\nRegister it in DI:\n\n```csharp\nbuilder.Services.AddModuleImportUtil();\n```\n\n### Example\n\nHere's an example of how to use the `ModuleImportUtil` in a Blazor component:\n\n```csharp\n@page \"/example\"\n@inject IModuleImportUtil ModuleImportUtil\n@implements IAsyncDisposable\n\n\u003ch3\u003eModule Import Example\u003c/h3\u003e\n\n\u003cbutton @onclick=\"LoadModule\"\u003eLoad Module\u003c/button\u003e\n\n@code {\n    private async Task LoadModule()\n    {\n        var module = await ModuleImportUtil.Import(\"exampleModule\");\n        await ModuleImportUtil.WaitUntilLoaded(\"exampleModule\");\n\n        // Guaranteed that the module has been added to the DOM, and available at this point\n    }\n\n    public async ValueTask DisposeAsync()\n    {\n        await ModuleImportUtil.DisposeModule(\"exampleModule\");\n    }\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoenneker%2Fsoenneker.blazor.utils.moduleimport","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsoenneker%2Fsoenneker.blazor.utils.moduleimport","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoenneker%2Fsoenneker.blazor.utils.moduleimport/lists"}