Package Exports
- @lens-protocol/metadata
- @lens-protocol/metadata/dist/index.cjs
- @lens-protocol/metadata/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@lens-protocol/metadata) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Lens Protocol Metadata Standards
Schema vaidation and TS types for LIP-2 Lens Protocol Metadata Standards.
Features
- Zod schema definitions
- JSON Schema definitions
- TypeScript type definitions
Installation
# npm:
npm install @lens-protocol/metadata zod
# yarn:
yarn add @lens-protocol/metadata zod
# pnpm:
pnpm add @lens-protocol/metadata zod
[!NOTE]
zod
is marked as optional peer dependency, so if you all you need is the JSON Schema definitions, you can install@lens-protocol/metadata
withoutzod
.
Usage
Parsing and validating metadata
import { PublicationMetadataSchema } from '@lens-protocol/metadata';
const valid = {
/** example of valid publication metadata **/
};
const invalid = {
/** example of invalid publication metadata **/
};
PublicationMetadataSchema.parse(valid); // => PublicationMetadata
PublicationMetadataSchema.parse(invalid); // => throws ZodError
// OR
PublicationMetadataSchema.safeParse(valid);
// => { success: true, data: PublicationMetadata }
PublicationMetadataSchema.safeParse(invalid);
// => { success: false, error: ZodError }
Format validation error
ZodError
contains all the information needed to inform you about the validation error, but it's not very user friendly. You can use formatZodError
to get a more readable error message.
import { PublicationMetadataSchema, formatZodError } from '@lens-protocol/metadata';
const result = PublicationMetadataSchema.safeParse(invalid);
if (!result.success) {
console.log(formatZodError(result.error));
}
Narrowing types
import { PublicationMetadata, PublicationMetadataSchema, SchemaId } from '@lens-protocol/metadata';
const publicationMetadata = PublicationMetadataSchema.parse(valid);
switch (publicationMetadata.$schema) {
case SchemaId.ARTICLE:
// publicationMetadata is ArticleMetadata
break;
case SchemaId.AUDIO:
// publicationMetadata is AudioMetadata
break;
case SchemaId.IMAGE:
// publicationMetadata is ImageMetadata
break;
case SchemaId.TEXT_ONLY:
// publicationMetadata is TextOnlyMetadata
break;
// ...
}
JSON schemas
Importing JSON schema in TypeScript is a simple as:
import audio from '@lens-protocol/metadata/jsonschemas/audio/1-0-0.json' assert { type: 'json' };
import embed from '@lens-protocol/metadata/jsonschemas/embed/1-0-0.json' assert { type: 'json' };
You can the use them in your JSON Schema validator of choice, for example ajv.
Contributing
To contribute to the Lens Protocol Metadata Standards, please fork this repository and submit a pull request with your changes.
To build the project, run:
pnpm build
Add changeset with:
pnpm changeset add
Use keepachangelog format for the changeset message.
Releasing
Release flow is managed by changesets.
To release a new version follow the steps below:
- Create a new branch from
main
with the namerelease/<version>
- Build the project
pnpm install && pnpm build
- Update relevant
package.json
's versions and updateCHANGELOG.md
for each package:
pnpm changeset version
- Review, commit and push the changes
- Create a PR from
release/<version>
tomain
- Once approved, publish with (you need to be logged in to npm authorized to publish under
@lens-protocol
):
pnpm changeset publish
- Push the tags
git push origin release/<version> --follow-tags
- Merge the PR with a merge commit
License
Lens Protocol Metadata Standards is MIT licensed
Support
See the Lens API and SDK channel on our Discord