npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

ys-codegen-trans-param

v0.3.5

Published

代码生成之将yapi文档接口转代码生成的参数结构的工具

Downloads

11

Readme

ys-codegen-trans-param

代码生成之将yapi文档接口转代码生成的参数结构的工具

安装

使用 npm:

$ npm install -D ys-codegen-trans-param

使用 yarn:

$ yarn add -D ys-codegen-trans-param

更新:

$ yarn upgrade ys-codegen-trans-param --latest

使用

import { IndexParams,YApi } from 'ys-codegen-trans-param'
const engine = new YApi({ token: '9a444ebafbea360eab663677865aacc949c156a67b1d9f7152b42541b3840a33' })
const params = await engine.getInterface(18047)
if (false !== params) {
    const sdk = new IndexParams()
    let res = sdk.trans(params)
    sdk.outFile(__dirname + '/json/test.json')
    console.log('res', res)
} else {
    console.log('error', engine.getError())
}

// 修改默认json文件 模板 字符串方式
const sdk = new IndexParams({
  tpl:`{
            /* 列表表格配置 */
            "indexTable": {
                /* 列表表格数据 */
                "data": {
                    "columns": [<%- tableColumns %>]
                },
                /* 列表查询接口地址 */
                "apiQuery": "<%- apiQuery %>",
                /* 列表表格删除按钮接口地址 */
                "apiDelete": "<%- apiDelete %>",
                /* 新增的参数 */
                "apiDelete2": "<%- apiDelete %>",
                /* 列表html配置 */
                "_config": {
                    /* 列表表格标题 */
                    "title": "<%- indexTableTitle %>"
                }
            },
            /* 搜索区配置 */
            "searchForm": {
                /* 搜索区html配置 */
                "_config": {
                    "query": [<%- searchQuery %>]
                }
            }
        }`
})

// UTF8文件方式
const sdk = new IndexParams({
  tplPath:"./tpl.json"
})

转换

  • IndexParams 转换yapi query接口为列表页模板参数

    // 默认tpl
    tpl = `{
            /* 表单配置 */
            "block": {
                /* 搜索区配置 */
                "searchForm": {
                    type: "search",
                    render: "",
                    ref: "searchForm",
                    defaultValue: {},
                    jsonData: {
                        "list": [
                            <%- searchQuery %>
                        ],
                        "config": {
                            "layout": "inline",
                            "labelCol": {
                                "xs": 4,
                                "sm": 4,
                                "md": 4,
                                "lg": 4,
                                "xl": 4,
                                "xxl": 4
                            },
                            "wrapperCol": {
                                "xs": 20,
                                "sm": 20,
                                "md": 20,
                                "lg": 20,
                                "xl": 20,
                                "xxl": 20
                            },
                            "hideRequiredMark": false,
                            "customStyle": ""
                        }
                    }
                },
                /* 列表表格配置 */
                "indexTable": {
                    type: "list",
                    /* 列表表格数据 */
                    "data": {
                        "columns": [<%- tableColumns %>]
                    },
                    "apiQueryUrl": "<%- apiQuery %>", /* 列表查询接口地址 */
                    "apiDeleteUrl": "<%- apiDelete %>", /* 列表表格删除按钮接口地址 */
                    /* 列表html配置 */
                    "title": "<%- indexTableTitle %>" /* 列表表格标题 */
                },
            },
            title: "<%- indexTableTitle %>" /* 页面标题 */
        }`
  • FormParams 转换yapi read、update、save接口为表单页模板参数

    // 默认tpl
    tpl = `{
            /* 表单配置 */
            "block": {
                "editForm": {
                    apiSaveUrl: "<%- apiSave %>" /* 表单保存按钮接口地址 */,
                    apiUpdateUrl: "<%- apiUpdate %>" /* 表单更新按钮接口地址 */,
                    apiReadUrl: "<%- apiRead %>" /* 表单数据读取接口地址 */,
                    type: "form",
                    render: "k-form-design",
                    ref: "editForm",
                    defaultValue: {},
                    jsonData: {
                        "list": [
                            <%- list %>
                        ],
                        "config": {
                            "layout": "horizontal",
                            "labelCol": {
                                "xs": 4,
                                "sm": 4,
                                "md": 4,
                                "lg": 4,
                                "xl": 4,
                                "xxl": 4
                            },
                            "wrapperCol": {
                                "xs": 20,
                                "sm": 20,
                                "md": 20,
                                "lg": 20,
                                "xl": 20,
                                "xxl": 20
                            },
                            "hideRequiredMark": false,
                            "customStyle": ""
                        }
                    },
                }
            },
            /* 表单HTML配置 */
            "title": "<%- title %>" /* 表单区域标题显示内容 */
        }`

结构

引擎转化出来的结构

{
	"path": "/admin/SystemConfig/save",
	"post": [{
		"index": "title",
		"title": "配置标题",
		"type": "string",
		"rules": [{
			"max": 100,
			"message": "最大长度: 100"
		}],
		"items": []
	}, {
		"index": "type",
		"title": "配置类型",
		"type": "integer",
		"rules": [],
		"items": []
	}, {
		"index": "status",
		"title": "状态",
		"type": "integer",
		"rules": [],
		"items": [{
			"key": "1",
			"value": "有效"
		}, {
			"key": "0",
			"value": "无效"
		}]
	...
	}],
	"data": [
		// 结构同post
	],
	"query": [{
		"required": false,
		"name": "pageNo",
		"title": "页码",
		"items": []
	}, {
		"required": false,
		"name": "pageSize",
		"title": "每页条数",
		"items": []
	}, {
		"required": false,
		"name": "text",
		"title": "字典名称",
		"items": []
	}, {
		"required": false,
		"name": "code",
		"title": "字典代码",
		"items": []
	}],
	"method": "POST",
	"title": "系统配置新增"
}

模板参数

IndexParams 列表模板参数结构

{
  /* 表单配置 */
  "block": {
    /* 搜索区配置 */
    "searchForm": {
      "type": "search",
      "render": "",
      "ref": "searchForm",
      "defaultValue": {},
      "jsonData": {
        "list": [
          {
            "type": "input" /* 表单控件类型 */,
            "label": "配置标题" /* 表单控件显示名称 */,
            "icon": "icon-write",
            "options": {
              "type": "text",
              "width": "100%",
              "defaultValue": "",
              "placeholder": "请选择配置标题",
              "clearable": false,
              "maxLength": null,
              "hidden": false,
              "disabled": false
            },
            "model": "title" /* 表单控件name值 */,
            "key": "input_16117146443281",
            /* 表单控件数据校验规则 https://www.antdv.com/components/form-cn/ 更多高级用法可研究 https://github.com/yiminghe/async-validator */
            "rules": [
              //{
              // "required": false, /* boolean,默认false, 是否必选 */
              //"message": "最大长度: 100", /* string, 校验文案 */
              //"max": 100, /* number, 最大长度 */
              // "pattern": "", /* RegExp,正则表达式校验 */
              // "whitespace": boolean, /* boolean,默认false, 必选时,空格是否会被视为错误 */
              // "len": 120, /* number, 字段长度 */
              // "min": 0, /* number, 最小长度 */
              // "type": "string", /* string, 内建校验类型(string、number、integer、boolean、float、email、any、hex、array、url、object、date、enum、method、regexp,参考 https://github.com/yiminghe/async-validator#type) */
              // "transform": "", /* function(value) => transformedValue:any, 校验前转换字段值	这里填写函数名 */
              // "validator": "", /* function(rule, value, callback), 自定义校验(注意,callback 必须被调用)这里填写函数名 */
              // "enum": "", /* string, 枚举类型 */
              //},
            ]
          },
        ],
        "config": {
          "layout": "inline",
          "labelCol": {
            "xs": 4,
            "sm": 4,
            "md": 4,
            "lg": 4,
            "xl": 4,
            "xxl": 4
          },
          "wrapperCol": {
            "xs": 20,
            "sm": 20,
            "md": 20,
            "lg": 20,
            "xl": 20,
            "xxl": 20
          },
          "hideRequiredMark": false,
          "customStyle": ""
        }
      }
    },
    /* 列表表格配置 */
    "indexTable": {
      "type": "list",
      /* 列表表格数据 */
      "data": {
        "columns": [
          {
            "title": "id" /* 列表列头名称 */,
            "index": "id" /* 列表字段名称 */,
            "type": "integer" /* 列表字段类型 */
          },
          {
            "title": "配置标题" /* 列表列头名称 */,
            "index": "title" /* 列表字段名称 */,
            "type": "string" /* 列表字段类型 */
          },
          {
            "title": "配置名称" /* 列表列头名称 */,
            "index": "name" /* 列表字段名称 */,
            "type": "string" /* 列表字段类型 */
          },
        ]
      },
      "apiQueryUrl": "/admin/SystemConfig/query" /* 列表查询接口地址 */,
      "apiDeleteUrl": "/admin/SystemConfig/delete" /* 列表表格删除按钮接口地址 */,
      /* 列表html配置 */
      "title": "系统配置列表" /* 列表表格标题 */
    }
  },
  "title": "系统配置列表" /* 页面标题 */
}

FormParams 表单模板参数结构

{
  /* 表单配置 */
  "block": {
    "editForm": {
      "apiSaveUrl": "/admin/SystemConfig/save" /* 表单保存按钮接口地址 */,
      "apiUpdateUrl": "/admin/SystemConfig/update" /* 表单更新按钮接口地址 */,
      "apiReadUrl": "/admin/SystemConfig/read" /* 表单数据读取接口地址 */,
      "type": "form",
      "render": "k-form-design",
      "ref": "editForm",
      "defaultValue": {},
      "jsonData": {
        "list": [
          {
            "type": "number" /* 表单控件类型 */,
            "label": "id" /* 表单控件显示名称 */,
            "icon": "icon-number",
            "options": {
              "width": "100%",
              "defaultValue": 0,
              "min": null,
              "max": null,
              "precision": null,
              "step": 1,
              "hidden": false,
              "disabled": false,
              "placeholder": "请选择id"
            },
            "model": "id" /* 表单控件name值 */,
            "key": "number_161171464460015",
            /* 表单控件数据校验规则 https://www.antdv.com/components/form-cn/ 更多高级用法可研究 https://github.com/yiminghe/async-validator */
            "rules": [
              //{
              // "required": false, /* boolean,默认false, 是否必选 */
              //"message": "最大长度: 100", /* string, 校验文案 */
              //"max": 100, /* number, 最大长度 */
              // "pattern": "", /* RegExp,正则表达式校验 */
              // "whitespace": boolean, /* boolean,默认false, 必选时,空格是否会被视为错误 */
              // "len": 120, /* number, 字段长度 */
              // "min": 0, /* number, 最小长度 */
              // "type": "string", /* string, 内建校验类型(string、number、integer、boolean、float、email、any、hex、array、url、object、date、enum、method、regexp,参考 https://github.com/yiminghe/async-validator#type) */
              // "transform": "", /* function(value) => transformedValue:any, 校验前转换字段值	这里填写函数名 */
              // "validator": "", /* function(rule, value, callback), 自定义校验(注意,callback 必须被调用)这里填写函数名 */
              // "enum": "", /* string, 枚举类型 */
              //},
            ]
          },
        ],
        "config": {
          "layout": "horizontal",
          "labelCol": {
            "xs": 4,
            "sm": 4,
            "md": 4,
            "lg": 4,
            "xl": 4,
            "xxl": 4
          },
          "wrapperCol": {
            "xs": 20,
            "sm": 20,
            "md": 20,
            "lg": 20,
            "xl": 20,
            "xxl": 20
          },
          "hideRequiredMark": false,
          "customStyle": ""
        }
      }
    }
  },
  /* 表单HTML配置 */
  "title": "系统配置获取详情" /* 表单区域标题显示内容 */
}