@cleanmate/cip-sdk
v1.3.1
Published
Cleanmate CIP metadata standard utilities for smart contract metadata parsing and validation
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 { parseImpactMetadata } from "@cleanmate/cip-sdk/impact";
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);Impact Metadata
import {
parseImpactMetadata,
stringifyImpactMetadata,
type ImpactMetadata,
} from "@cleanmate/cip-sdk/impact";
const metadata = parseImpactMetadata(impactEvent.metadata);
const jsonString = stringifyImpactMetadata({
title: "Beach Impact",
description: "Monthly beach impact 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 impact",
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.
