JSPM

@stackbit/schema

0.1.5
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 27
  • Score
    100M100P100Q69941F
  • License MIT

Stackbit schema tools

Package Exports

  • @stackbit/schema

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 (@stackbit/schema) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Stackbit Schema

Stackbit schema tools

Install

npm install @stackbit/schema

Utility Functions

loadModels(models)

Takes raw models map as defined by stackbit.yaml format and returns an array of sanitized models.

# part of stackbit.yaml

models:
  post:
    type: page
    layout: post
    folder: blog
    fields:
      - type: string
        name: title
        label: Title
        required: true
      # ...fields
  person:
    type: data
    label: Person
    folder: authors
    fields:
      # ...fields
const stackbitYaml = await parseFile('path/to/stackbit.yaml');
const models = loadModels(stackbitYaml.models);

The returned models is a sanitized array of models:

[
  {
    "name": "post",
    "type": "page",
    "label": "Post",
    "fieldLabel": "title",
    "layout": "post",
    "folder": "blog",
    "fields": [ /* fields */ ]
  },
  {
    "name": "person",
    "type": "data",
    "label": "Person",
    "folder": "authors",
    "fields": [ /* fields */ ]
  }
]

getModelByQuery(query, models)

Takes a query object representing a loaded content file and models array returned by loadModels() and returns a model matching the query.

const model = getModelByQuery({ filePath: 'authors/john-doe.json' }, models);
// model => model for "person" type