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

slinky-sdk

v1.2.0

Published

Slinky SDK es una biblioteca TypeScript que permite a los desarrolladores integrar fácilmente miniaplicaciones con contratos inteligentes en diversas blockchains Layer 1. Esta SDK proporciona funciones para generar metadatos y enviar mensajes cross-chain,

Downloads

97

Readme

Slinky SDK

Descripción

Slinky SDK es una biblioteca TypeScript que permite a los desarrolladores integrar fácilmente miniaplicaciones con contratos inteligentes en diversas blockchains Layer 1. Esta SDK proporciona funciones para generar metadatos y enviar mensajes cross-chain, facilitando la interoperabilidad entre distintas blockchains.

Instalación

Para instalar el SDK, simplemente utiliza npm o yarn:

npm install slinky-sdk

o

yarn add slinky-sdk

Uso Básico

Slinky SDK proporciona dos funciones principales: generateMessageObjectsFromMetadata y createMetadata. A continuación, se describe cómo utilizar cada una de ellas.

Importación

Puedes importar las funciones desde el SDK de la siguiente manera:

import { generateMessageObjectsFromMetadata, createMetadata } from 'slinky-sdk'

Ejemplo de Uso

createMetadata

Esta función crea metadatos que pueden ser utilizados para la interacción con las Layer 1. Acepta un objeto metadata que contiene información de la miniaplicación.

import { createMetadata } from 'slinky-sdk'

const metadata = {
	type: 'action',
	icon: 'https://example.com/icon.png',
	title: 'My Miniapp',
	description: 'This is a test miniapp',
	label: 'Test App',
	disabled: false,
	actions: [
		{
			label: 'Execute Action',
			contractAddress: '0x1234567890abcdef1234567890abcdef12345678',
			contractABI: [],
			transactionParameters: [
				{ type: 'uint256', value: 42 },
				{ type: 'address', value: '0xabcdefabcdefabcdefabcdefabcdefabcdef' }
			],
			blockchainActionType: 'write',
			functionName: 'someFunction',
			chainId: 'Ethereum'
		}
	]
}

try {
	const metadataForMiniapp = createMetadata(metadata)
	console.log(metadataForMiniapp)
} catch (error) {
	console.error('Error creating metadata:', error.message)
}

generateMessageObjectsFromMetadata

Esta función genera objetos de mensaje requeridos por el contrato SL1Sender.sol a partir de un objeto de metadatos. Estos mensajes pueden ser utilizados para enviar transacciones cross-chain.

import { generateMessageObjectsFromMetadata } from 'slinky-sdk'

const metadata = {
	type: 'action',
	icon: 'https://example.com/icon.png',
	title: 'My Miniapp',
	description: 'This is a test miniapp',
	label: 'Test App',
	disabled: false,
	actions: [
		{
			label: 'Execute Action',
			contractAddress: '0x1234567890abcdef1234567890abcdef12345678',
			contractABI: [],
			transactionParameters: [
				{ type: 'uint256', value: 42 },
				{ type: 'address', value: '0xabcdefabcdefabcdefabcdefabcdefabcdef' }
			],
			blockchainActionType: 'write',
			functionName: 'someFunction',
			chainId: 'Ethereum'
		}
	]
}

try {
	const messageObjects = generateMessageObjectsFromMetadata(metadata)
	console.log(messageObjects)
} catch (error) {
	console.error('Error generating message objects:', error.message)
}

API

createMetadata(metadata: Metadata): MetadataForMiniapp

  • Descripción: Crea metadatos para miniaplicaciones que puedan interactuar con las Layer 1.
  • Parámetros:
    • metadata (Metadata): Objeto que contiene información sobre la miniaplicación, incluidas las acciones que debe realizar.
  • Retorna: Un objeto MetadataForMiniapp que contiene los metadatos y los objetos de mensaje.
  • Errores: Lanza un error si el metadata no tiene los campos requeridos o si la generación de mensajes falla.

generateMessageObjectsFromMetadata(metadataObject: Metadata): MessageObject[] | undefined

  • Descripción: Genera objetos de mensaje para interactuar con contratos inteligentes en blockchains Layer 1 a partir de un objeto de metadatos.
  • Parámetros:
    • metadataObject (Metadata): Objeto que contiene la información necesaria para generar los mensajes.
  • Retorna: Un arreglo de MessageObject o undefined si no hay acciones en los metadatos.
  • Errores: Lanza un error si el metadataObject no es válido o si ocurre un problema durante la codificación.

Buenas Prácticas

  • Validar Datos: Antes de pasar los datos a las funciones del SDK, asegúrate de que el objeto metadata tenga todos los campos requeridos y que estos estén correctamente formateados.
  • Manejo de Errores: Utiliza bloques try...catch para manejar errores cuando llames a las funciones del SDK, ya que hay validaciones internas que lanzarán excepciones si los datos no son válidos.
  • Pruebas: Realiza pruebas para asegurarte de que las direcciones de los contratos, los parámetros y otros valores cumplen con los formatos requeridos antes de realizar una integración en producción.

Pruebas

Slinky SDK está diseñado para ser probado con Jest. Puedes escribir pruebas para validar que los objetos Metadata y los mensajes generados estén correctamente formateados.

Ejemplo de una prueba básica con Jest:

import { createMetadata } from 'slinky-sdk'

describe('createMetadata', () => {
	it('debería crear metadatos válidos cuando se proporciona un objeto metadata correcto', () => {
		const metadata = {
			type: 'action',
			icon: 'https://example.com/icon.png',
			title: 'My Miniapp',
			description: 'This is a test miniapp',
			label: 'Test App',
			disabled: false,
			actions: [
				{
					label: 'Execute Action',
					contractAddress: '0x1234567890abcdef1234567890abcdef12345678',
					contractABI: [],
					transactionParameters: [
						{ type: 'uint256', value: 42 },
						{ type: 'address', value: '0xabcdefabcdefabcdefabcdefabcdefabcdef' }
					],
					blockchainActionType: 'write',
					functionName: 'someFunction',
					chainId: 'Ethereum'
				}
			]
		}

		const result = createMetadata(metadata)
		expect(result).toHaveProperty('metadata')
		expect(result).toHaveProperty('message')
	})
})

Licencia

Este proyecto está licenciado bajo la licencia MIT. Consulta el archivo LICENSE para obtener más detalles.

Contribuciones

Las contribuciones son bienvenidas. Si quieres mejorar el SDK, por favor abre un issue o un pull request en el repositorio de GitHub.

Contacto

Si tienes alguna pregunta o comentario, siéntete libre de abrir un issue en GitHub o contacta al autor:


¡Gracias por utilizar Slinky SDK! Esperamos que te sea útil y fácil de integrar. Cualquier retroalimentación es siempre apreciada.