npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

io.extendreality.malimbe

v9.7.0

Published

A collection of tools to simplify writing public API components in Unity.

Downloads

343

Readme

Malimbe logo

Malimbe

A collection of tools to simplify writing public API components for the Unity software.

Release License Backlog

Introduction

Malimbe for the Unity software aims to reduce repetitive boilerplate code by taking the assemblies that are created by build tools and changing the assembly itself, new functionality can be introduced and logic written as part of the source code can be altered. This process is called Intermediate Language (IL) weaving and Malimbe uses Fody to do it.

Malimbe helps running Fody and Fody addins without MSBuild or Visual Studio and additionally offers running them inside the Unity software by integrating with the Unity software compilation and build pipeline. Multiple weavers come with Malimbe to help with boilerplate one has to write when creating Unity software components that are intended for public consumption. This includes a form of "serialized properties", getting rid of duplicated documentation through XML documentation and the [Tooltip] attribute as well as weavers that help with ensuring the API is able to be called from UnityEvents and more.

Getting Started

Adding the package to the Unity project manifest

  • Navigate to the Packages directory of your project.

  • Adjust the [project manifest file][Project-Manifest] manifest.json in a text editor.

    • Ensure https://registry.npmjs.org/ is part of scopedRegistries.
      • Ensure io.extendreality is part of scopes.
    • Add io.extendreality.malimbe to dependencies, stating the latest version.

    A minimal example ends up looking like this. Please note that the version X.Y.Z stated here is to be replaced with the latest released version which is currently Release.

    {
      "scopedRegistries": [
        {
          "name": "npmjs",
          "url": "https://registry.npmjs.org/",
          "scopes": [
            "io.extendreality"
          ]
        }
      ],
      "dependencies": {
        "io.extendreality.malimbe": "X.Y.Z",
        ...
      }
    }
  • Switch back to the Unity software and wait for it to finish importing the added package.

  • Anywhere in your Unity software project add a FodyWeavers.xml file.

  • Configure the various weavers Malimbe offers, e.g.:

    <?xml version="1.0" encoding="utf-8"?>
    
    <Weavers>
      <Malimbe.FodyRunner>
        <LogLevel>Error, Warning</LogLevel>
        <AssemblyNameRegex>^Zinnia</AssemblyNameRegex>
        <AssemblyNameRegex>^Assembly-CSharp</AssemblyNameRegex>
      </Malimbe.FodyRunner>
      <Malimbe.BehaviourStateRequirementMethod/>
      <Malimbe.MemberChangeMethod/>
      <Malimbe.MemberClearanceMethod/>
      <Malimbe.PropertySerializationAttribute/>
      <Malimbe.XmlDocumentationAttribute IdentifierReplacementFormat="`{0}`"/>
    </Weavers>

    As with any Fody weaver configuration the order of weavers is important in case a weaver should be applying to the previous weaver's changes.

    In case there are multiple configuration files all of them will be used. In that scenario, if multiple configuration files specify settings for the same weaver, a weaver will be configured using the values in the last configuration file found. A warning is logged to notify of this behavior and to allow fixing potential issues that may arise by ensuring only a single configuration exists for any used weaver.

Additional weavers are supported. To allow Malimbe's Unity software integration to find the weavers' assemblies they have to be included anywhere in the Unity software project or in one of the UPM packages the project uses.

Updating to the latest version

The package will show up in the Unity Package Manager UI once the above steps have been carried out. From then on the package can be updated by selecting the package in the Unity Package Manager and clicking on the Update button or using the version selection UI.

Documentation

Check out the Documentation a further in-depth look at the features of Malimbe.

Naming

Inspired by Fody's naming the name "Malimbe" comes from the small birds that belong to the weaver family Ploceidae.

Tools And Products Used

Contributing

Please refer to the Extend Reality Contributing guidelines and the Unity project coding conventions.

Code of Conduct

Please refer to the Extend Reality Code of Conduct.

License

Malimbe is released under the MIT License.

Third-party notices can be found in THIRD_PARTY_NOTICES.md

Disclaimer

These materials are not sponsored by or affiliated with Unity Technologies or its affiliates. "Unity" and "Unity Package Manager" are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere.