Catalog npm
PACKAGE EXPLORERView in registry

@0day-network/mod-renderer

npm

Module renderer components for 0day Network dApps

0daycomponentmodulereactrenderer
Versions collected10
Direct dependencies16From release 0.1.27
Last observed20 Oct, 22:06 UTC

README

Current package documentation

@0day-network/mod-renderer

Module renderer components for 0day Network dApps. Provides React components to dynamically load and render modules with support for encryption, dependency injection, and various SDK types.

Installation

npm install @0day-network/mod-renderer
# or
pnpm add @0day-network/mod-renderer
# or
yarn add @0day-network/mod-renderer

Features

  • ModuleRenderer: Full-featured module renderer with built-in loading and error states
  • SimpleModuleRenderer: Simplified renderer with customizable loading/error components
  • Dynamic Module Loading: Support for ESM and ESM-DI module types
  • Encryption Support: Decrypt and load encrypted modules
  • Dependency Injection: Automatic dependency resolution for common libraries
  • TypeScript Support: Full TypeScript definitions included

Usage

Basic Usage with ModuleRenderer

import { ModuleRenderer } from '@0day-network/mod-renderer';
import { ManifestType } from '@0day-network/react-sdk';

function MyApp() {
  const manifest: ManifestType = {
    sdk: {
      kind: 'esm-di',
      entry: 'https://example.com/module.js'
    },
    // ... other manifest properties
  };

  return (
    <ModuleRenderer
      manifest={manifest}
      props={{ customProp: 'value' }}
      className="my-module"
    />
  );
}

Using SimpleModuleRenderer with Custom Loading

import { SimpleModuleRenderer } from '@0day-network/mod-renderer';

function MyApp() {
  return (
    <SimpleModuleRenderer
      manifest={manifest}
      props={{ customProp: 'value' }}
      loading={<div>Loading your module...</div>}
      error={(err) => <div>Error: {err}</div>}
    />
  );
}

With Encryption

import { ModuleRenderer } from '@0day-network/mod-renderer';

function EncryptedModule() {
  const encryptionKey = await getEncryptionKey(); // Your key retrieval logic

  return (
    <ModuleRenderer
      manifest={manifest}
      encryptionKey={encryptionKey}
      props={{ secure: true }}
    />
  );
}

With Session and Config

import { ModuleRenderer, registerGlobalPackage } from '@0day-network/mod-renderer';
import * as viem from 'viem';

function ConfiguredModule() {
  const session = useSession(); // Your session hook

  // Register viem globally so modules can access it
  useEffect(() => {
    registerGlobalPackage('viem', viem);
  }, []);

  return (
    <ModuleRenderer
      manifest={manifest}
      session={session}
      config={{
        subgraphUrl: 'https://api.subgraph.com',
        apiKey: 'your-api-key'
      }}
      props={{ userId: session.userId }}
    />
  );
}

API Reference

ModuleRenderer Props

PropTypeDescription
manifestManifestTypeRequired. Module manifest configuration
propsanyProps to pass to the loaded module
encryptionKeyCryptoKey | nullEncryption key for decrypting modules
classNamestringCSS class for the wrapper element
compiledCodestringPre-compiled module code (bypasses fetching)
sessionanySession data to inject into the module
configobjectConfiguration object with subgraphUrl and other settings

SimpleModuleRenderer Props

All ModuleRenderer props, plus:

PropTypeDescription
loadingReact.ReactNodeCustom loading component
error(error: string) => React.ReactNodeCustom error renderer function

Styling

Import the default styles:

import '@0day-network/mod-renderer/styles.css';

Or create your own styles targeting these classes:

  • .module-renderer - Main wrapper
  • .module-loading - Loading state container
  • .module-error - Error state container
  • .module-mount-point - Module mounting point
  • .simple-module-renderer - Simple renderer wrapper
  • .simple-module-loading - Simple renderer loading
  • .simple-module-error - Simple renderer error

Supported Dependencies

The module renderer provides the following dependencies via dependency injection:

  • react - React library
  • react-dom - React DOM utilities
  • @tanstack/react-query - React Query for data fetching
  • wagmi (optional) - Ethereum interactions
  • viem (optional) - Ethereum utilities
  • framer-motion (optional) - Animation library
  • d3 (optional) - Data visualization
  • @lens-chain/storage-client (optional) - Lens storage
  • @0day-network/react-sdk (optional) - 0day SDK

License

MIT

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Versions 10

Collected releases
VersionPublishedDirect dependenciesOpen version
0.1.27Registry latest20 Oct 202516
0.1.2620 Oct 202516
0.1.2520 Oct 202516
0.1.2420 Oct 202515
0.1.2320 Oct 202515
0.1.2220 Oct 202515
0.1.2120 Oct 202515
0.1.220 Oct 202515
0.1.120 Oct 202515
0.1.019 Oct 202515

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Repository

PENDING
0day-network/mod-renderer

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 22:06 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:c262ddcfd81f2a642f180a488351631d3fd36ea5612150828039674ea2462043