UNPKG

contentful-orm

Version:

A TypeScript-first ORM for Contentful CMS that enables a code-first approach to content modeling

54 lines 1.73 kB
import 'reflect-metadata'; import { ContentfulFieldType } from '../types/index.js'; // Decorator metadata keys const CONTENT_TYPE_KEY = 'contentful:content-type'; const FIELD_KEY = 'contentful:field'; export function ContentType(options) { return function (target) { Reflect.defineMetadata(CONTENT_TYPE_KEY, options, target); return target; }; } export function Field(options) { return function (target, propertyKey) { const fields = Reflect.getMetadata(FIELD_KEY, target.constructor) || new Map(); fields.set(propertyKey.toString(), options); Reflect.defineMetadata(FIELD_KEY, fields, target.constructor); }; } export function MediaField(options) { return Field({ ...options, type: ContentfulFieldType.Media, linkType: 'Asset' }); } export function ReferenceField(options) { return Field({ ...options, type: ContentfulFieldType.Reference, linkType: options.linkType || 'Entry' }); } export function ArrayField(options) { return Field({ ...options, type: ContentfulFieldType.Array }); } export function SymbolField(options = {}) { return Field({ ...options, type: ContentfulFieldType.Symbol }); } export function IntegerField(options = {}) { return Field({ ...options, type: ContentfulFieldType.Integer }); } export function ObjectField(options = {}) { return Field({ ...options, type: ContentfulFieldType.Object }); } export function getContentTypeMetadata(target) { return Reflect.getMetadata(CONTENT_TYPE_KEY, target); } export function getFieldsMetadata(target) { return Reflect.getMetadata(FIELD_KEY, target) || new Map(); } //# sourceMappingURL=index.js.map