@cleanmate/cip-sdk
v1.0.4
Published
CleanMate CIP metadata standard utilities for smart contract metadata parsing and validation
Downloads
536
Maintainers
Readme
@cleanmate/cip-sdk
CleanMate CIP metadata standard utilities for smart contract metadata parsing and validation.
Installation
npm install @cleanmate/cip-sdkUsage
Basic Import
import { parseUserProfileMetadata, stringifyUserProfileMetadata } from '@cleanmate/cip-sdk';Subpath Imports
You can also import from specific subpaths:
import { parseCleanupMetadata } from '@cleanmate/cip-sdk/cleanup';
import { parseUserProfileMetadata } from '@cleanmate/cip-sdk/user';
import { parseStreakSubmissionMetadata } from '@cleanmate/cip-sdk/streak';API
User Profile Metadata
import { parseUserProfileMetadata, stringifyUserProfileMetadata, type UserProfileMetadata } from '@cleanmate/cip-sdk/user';
// Parse metadata from smart contract
const metadataString = userProfile.metadata; // JSON string from contract
const parsed = parseUserProfileMetadata(metadataString);
if (parsed) {
console.log(parsed.name);
}
// Create metadata for smart contract
const newMetadata: UserProfileMetadata<string> = {
name: 'John Doe',
bio: 'Environmental enthusiast',
photo: 'ipfs://Qm...',
interests: ['cleaning', 'environment']
};
const jsonString = stringifyUserProfileMetadata(newMetadata);Cleanup Metadata
import { parseCleanupMetadata, stringifyCleanupMetadata, type CleanupMetadata } from '@cleanmate/cip-sdk/cleanup';
const metadata = parseCleanupMetadata(cleanupEvent.metadata);
const jsonString = stringifyCleanupMetadata({
title: 'Beach Cleanup',
description: 'Monthly beach cleanup event',
category: 'beach',
media: []
});Streak Metadata
import {
parseStreakSubmissionMetadata,
stringifyStreakSubmissionMetadata,
parseStreakStatsMetadata,
stringifyStreakStatsMetadata,
type StreakSubmissionMetadata,
type StreakStatsMetadata
} from '@cleanmate/cip-sdk/streak';
// Streak submission
const submissionMetadata: StreakSubmissionMetadata = {
description: 'Completed cleanup',
timestamp: new Date().toISOString(),
mediaCount: 3
};
const jsonString = stringifyStreakSubmissionMetadata(submissionMetadata);
// Streak statistics
const statsMetadata: StreakStatsMetadata = {
currentStreak: 5,
longestStreak: 10,
lastActivityDate: new Date().toISOString()
};
const statsJson = stringifyStreakStatsMetadata(statsMetadata);Base Utilities
import {
parseMetadata,
stringifyMetadata,
hasRequiredFields,
isMetadataObject,
type BaseMetadata
} from '@cleanmate/cip-sdk';Building
npm run buildThis will compile TypeScript to JavaScript in the dist directory.
