sskmy1024y / microcms-typescript

Repository from Github https://github.comsskmy1024y/microcms-typescriptRepository from Github https://github.comsskmy1024y/microcms-typescript

microcms-typescript

description

Convert MicroCMS schema to TypeScript type definitions.

usage

microcms-typescript src-dir [dist-file]

Use the file name as the type name.
If there are multiple schema files with the same type name, the one with the latest date will be used for conversion.

For output types

api-contents-20210905132840.json -> cms-types.ts

{
  "apiFields": [
    {
      "idValue": "g8ZUm5uLha",
      "fieldId": "title",
      "name": "title",
      "kind": "text",
      "required": true,
      "isUnique": false
    },
    { "fieldId": "visible", "name": "visible", "kind": "boolean", "required": true },
    { "fieldId": "keyword", "name": "keyword", "kind": "textArea" },
    { "fieldId": "parent", "name": "parent", "kind": "relation" },
    { "fieldId": "body", "name": "body", "kind": "textArea" }
  ],
  "customFields": []
}
import type { EndPoints } from './cms-types';

let a:EndPoints["gets"]["contents"];
/*
{
    limit:number
    offset:number
    totalCount:number
    contents:{
        id: string;
        title: string;
        visible: boolean;
        keyword?: string;
        parent?: string;
        body?: string;
        createdAt: string;
        updatedAt: string;
        publishedAt: string;
        revisedAt: string;
    }[]
}
*/

let b:EndPoints["get"]["contents"];
/*
{
    id: string;
    title: string;
    visible: boolean;
    keyword?: string;
    parent?: string;
    body?: string;
    createdAt: string;
    updatedAt: string;
    publishedAt: string;
    revisedAt: string;
}
*/

let c:EndPoints["post"]["contents"];
let d:EndPoints["put"]["contents"];
/*
{
    title: string;
    visible: boolean;
    keyword?: string;
    parent?: string;
    body?: string;
    createdAt?: string;
    updatedAt?: string;
    publishedAt?: string;
    revisedAt?: string;
}
*/

let e:EndPoints["patch"]["contents"];
/*
{
    title?: string;
    visible?: boolean;
    keyword?: string;
    parent?: string;
    body?: string;
    createdAt?: string;
    updatedAt?: string;
    publishedAt?: string;
    revisedAt?: string;
}
*/

About


Languages

Language:JavaScript 94.6%Language:TypeScript 5.4%