Cleanmate CIP metadata standard utilities for smart contract metadata parsing and validation
npm install @cleanmate/cip-sdkbash
npm install @cleanmate/cip-sdk
`
Usage
$3
`typescript
import {
parseUserProfileMetadata,
stringifyUserProfileMetadata,
} from "@cleanmate/cip-sdk";
`
$3
You can also import from specific subpaths:
`typescript
import { parseImpactMetadata } from "@cleanmate/cip-sdk/impact";
import { parseUserProfileMetadata } from "@cleanmate/cip-sdk/user";
import { parseStreakSubmissionMetadata } from "@cleanmate/cip-sdk/streak";
`
API
$3
`typescript
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 = {
name: "John Doe",
bio: "Environmental enthusiast",
photo: "ipfs://Qm...",
interests: ["cleaning", "environment"],
};
const jsonString = stringifyUserProfileMetadata(newMetadata);
`
$3
`typescript
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: [],
});
`
$3
`typescript
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
`typescript
import {
parseMetadata,
stringifyMetadata,
hasRequiredFields,
isMetadataObject,
type BaseMetadata,
} from "@cleanmate/cip-sdk";
`
Building
`bash
npm run build
`
This will compile TypeScript to JavaScript in the dist` directory.