{"_id":"@breezez/m2mock","_rev":"2-057b3d4ae5994e4cc7de8b60ecd4624e","name":"@breezez/m2mock","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@breezez/m2mock","version":"1.0.0","description":"Convert the interface markdown to mock json","main":"./index.js","bin":{"m2mock":"bin/index.js"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["mock","markdown","json","parser","generate","umijs"],"author":"","license":"ISC","dependencies":{"cheerio":"^1.0.0-rc.12","commander":"^9.4.1","htmlparser2":"^8.0.1","markdown-it":"^13.0.1","mockjs":"^1.1.0","picocolors":"^1.0.0"},"gitHead":"90d164a1ca26c331cceeba87dd158df6df742871","_id":"@breezez/m2mock@1.0.0","_nodeVersion":"16.16.0","_npmVersion":"6.14.12","dist":{"integrity":"sha512-FJ8gE19ZCJkvOVHPWtNFFc0GfUY1yWAyOOF1AgII0JCbbIPzEdRgl6oUyn5UoZt99DGPvRALuoHMDlr0/iQlRg==","shasum":"86cdb7e382056f717e2d9203890f9521a7ab330c","tarball":"https://registry.npmjs.org/@breezez/m2mock/-/m2mock-1.0.0.tgz","fileCount":5,"unpackedSize":11425,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCMdVH+y+PPPOZ+OZg/xOrXlQKHAf7GF7kcK1VU1YdWDQIgAids0vBVkT4gl+hOzPtRPOYVcmUHMEy9RgimYVqJ2GI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjdyqQACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqzwA//daO0t8ibvBk6iFDa/bhW9N4dxkrfRwuZxeloFaYwOaXYhJq+\r\nx4clS6wjK+27XD9bLxdy97tuiTdrTRtzLuDyu3VS2cQgjFverfDstGHRjtNt\r\ntIMESZEgWH1Tt1MnIQ9oMdZ3ycUsTiJN2woizH89HT8iVDYtUn+RH4a9jTep\r\napyyfuKiiNuoDOw7bA3olULimWlbkcazSOLK98L3zqs0tHGOs11JaCKT8XRw\r\nSEetn6C+u1nthtjHLtKvfDAqzto05z9q2w40DCJanZO38rApJA+5KEbLlPFy\r\n4TcGG0HOL08XpgI0QMLVFR+1NO8us1ZSImbSig61EsVryfVQ9rwEyEZyRsEo\r\n0nJHp4leq7J9c3TYF8ohlznJ6UqZf0F5V+1Byq1xRKN6Zdr63I3uIq9ev6Zf\r\nIdCse4hDyQ8DNVSFDsZo9FzT71sXCPNYsYvTYNrc9B94JTQnlVfBY3s6dVQl\r\nZGHklyxnuICSkAT51/GVVtYQihEe3XyWjC9ZOWkSwl5jww3f4ZyAznaTdFLI\r\nI+PHysh3OOQdJIEVyl/sTSuh8+I1ESkBukj2+AdcgcQTXQIFDH2v6yyjpxYF\r\ntDpmRA/TwGToFInuA0cHoUbokDB8GLBkQjyXK9LNS5ObHSqYIA1/G/gCgEJl\r\n8C3bshv37KZ4kY/4FuQg4md/jPcVWanTFOs=\r\n=eGjW\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"breezez","email":"927978917@qq.com"},"directories":{},"maintainers":[{"name":"breezez","email":"927978917@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/m2mock_1.0.0_1668754064467_0.3571315133324462"},"_hasShrinkwrap":false},"1.0.1":{"name":"@breezez/m2mock","version":"1.0.1","description":"Convert the interface markdown to mock json","main":"./index.js","bin":{"m2mock":"bin/index.js"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["mock","markdown","json","parser","generate","umijs"],"author":"","license":"ISC","dependencies":{"cheerio":"^1.0.0-rc.12","commander":"^9.4.1","htmlparser2":"^8.0.1","markdown-it":"^13.0.1","mockjs":"^1.1.0","picocolors":"^1.0.0"},"gitHead":"6a867d2390a7a1f16b3f6d26eec0e4ba3750ff7e","_id":"@breezez/m2mock@1.0.1","_nodeVersion":"16.16.0","_npmVersion":"6.14.12","dist":{"integrity":"sha512-jw4dCLc2Cj8q97pbmialxYUgd0wbCfM3oT1+sFgz3qahKCUGZu/7V9J+d+drTh2WkNYDvBsNeBMmwZ3fGEyT7A==","shasum":"8a5eb9abcc82f20e0fba0485aef682368643721c","tarball":"https://registry.npmjs.org/@breezez/m2mock/-/m2mock-1.0.1.tgz","fileCount":5,"unpackedSize":11441,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBY3wCwAEo3LNjm4Q6vo2Yo475M31EpBlBbwKXiXXoT0AiEAvsClxKJqI+uj89JqH0RayCq9cxGSsycs4n59VIHXdyk="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjdy0xACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpTxw/9F/G7UZct7KquwedODrEek4HHoam6KtfJp2npguqgHw7CNKj9\r\nTb8yDtrz10I4LbaKbwUbTA3p2aEGtDWy/6RbjOeTNIQ94lAXS1lfBi3sn1x4\r\nJXK0YI92XrQ/vzgaOTMzvZcCB2mPTH+SMt2T/ijooPwKpw9EzUwIAgbuzaCo\r\nb/eGeUIrqWRGbUPwmGkOobLz306EndyQ6IlEhJHvqNX9Pbzn9dXPG4EVhhIp\r\nXQRzKw8dsx5cDzvvNcLhQ0v2ld6MJEQv3ibmDyjgddmoFpuYmcaza/PqcXmy\r\n2brR9oVAhtaMSzEbzjmIrztd4Kj9xAUTYnKb+QFNOg8oQkjClxaThZIkYWDt\r\n2K0Kh4ot2p6rX8YhEkZhtcluLWK1q+hx5UY1LhQyavfphLaexhhH7H+HOW7Q\r\nN19dfBlG+/04WdXMMAmiLw7wET088URb9GwxtaRpIZC12YWLtj/yGuE3vsO3\r\nbwz/LYW669MtGdcSbkkmfk5p8rO4Lh8nz5EX6yChzo3yqmfd4uWcoAWnX9Cp\r\npRrRCWWBeLzMMEEXogX0Q9M4DaVUNTjBumvXbWiuvkauVxQ8i9dccZvGPrJk\r\nZDWJ+mF4XtY9qmGgwIVwZ2jrNjjxA30IlT52UlsjyjtuO4xFmc5puCS4M2A7\r\ng1PHugAb2wmERV9lDMlF7gIEfvnZOJtYYmw=\r\n=haDB\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"breezez","email":"927978917@qq.com"},"directories":{},"maintainers":[{"name":"breezez","email":"927978917@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/m2mock_1.0.1_1668754737678_0.5215169777596165"},"_hasShrinkwrap":false},"1.0.2":{"name":"@breezez/m2mock","version":"1.0.2","description":"Convert the interface markdown to mock json","bin":{"m2mock":"bin/index.js"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["mock","markdown","json","parser","generate","umijs"],"author":"","license":"ISC","dependencies":{"cheerio":"^1.0.0-rc.12","commander":"^9.4.1","htmlparser2":"^8.0.1","markdown-it":"^13.0.1","mockjs":"^1.1.0","picocolors":"^1.0.0"},"gitHead":"45dced25c87f14825d01f4336184152627ce9bf8","_id":"@breezez/m2mock@1.0.2","_nodeVersion":"16.16.0","_npmVersion":"6.14.12","dist":{"integrity":"sha512-R/jiXUsPMy1I9o+hPRCmkhkiKyHQSdR7F3DZ1Yci5y+Z8ik7y0iATSXclejtgmCl7AMCRG6wurY3MCZ3TU4XOw==","shasum":"a4096d4f5e4fa541f14a6889c51906b4a5a03da8","tarball":"https://registry.npmjs.org/@breezez/m2mock/-/m2mock-1.0.2.tgz","fileCount":6,"unpackedSize":13133,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC7x6qjTlSf41jnuK8iacps2kp7N2zan/CLJxm9Z86GdAiBln5pHUPdeusyL0ZfDFjpuRG3b6LnSb5Skzl0DO6yjGg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjdzmKACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr8Bw/9GaCI0XxZbzJORpFqfTA44MNCMh2yGfrmHiZUqeG3SsVtGsFb\r\nN4k1b1u7DQTwHHXS8AS4DTxFaml4gahsnY4R/9qu2/hOZWoe6iqvHiZCDHK3\r\njPy2F5u6voOhS3onmQFtmAAmnkxcRfYeXVT8reTCicFAfA8aGxC2MhsxShSy\r\n1VQJaDTO2x1LSF1Yggvl+3K/aCIq7B2iYRSXgkQq7oT3it0V6rOzbX6mAool\r\nP1ZvJKuuSvKpji5qk9QSw0OM5fFaOO2NzHhoY2tUmd7P6O4NtFB37NkzRsU5\r\nOJo5/cKmnRJsHhjj3ydu918042ebL09cylS8NsXkhF3uvOuhDnM/N8ujPilc\r\nDaDKJqdN7dhOFmTAdI+8XCRSNK18LNhxGp0jwLb+K1x+ICA+pUjJ5Wgx791H\r\nbZIQb/WQG0xNViqui1xtrPFZJroEMg47vOdZxK1mRfuWSS53dgaXwu4s/Gc7\r\nHKHZkHm3KGub+KNdoCrigxtKktwhoDB/+/QaYnrwDMTkRndFv6oRBDwje8uH\r\nK0mnR3olBJRD3rD9zJZS5Hsw4COqqj8DJSzUieSxCYFctQfBOmKH/z8+UciX\r\nH931zKcXgiPNAYmpRBJbxkpGO6+5PmeDJ85NxWpXc2ujEHNko5LFRhl8oGGS\r\nEujIX9HlITxB4/4Atf9+RSVvSjC/2rYlxFc=\r\n=Geor\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"breezez","email":"927978917@qq.com"},"directories":{},"maintainers":[{"name":"breezez","email":"927978917@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/m2mock_1.0.2_1668757898314_0.32310699052675806"},"_hasShrinkwrap":false}},"time":{"created":"2022-11-18T06:47:44.419Z","1.0.0":"2022-11-18T06:47:44.620Z","modified":"2022-11-18T07:51:38.596Z","1.0.1":"2022-11-18T06:58:57.926Z","1.0.2":"2022-11-18T07:51:38.518Z"},"maintainers":[{"name":"breezez","email":"927978917@qq.com"}],"description":"Convert the interface markdown to mock json","keywords":["mock","markdown","json","parser","generate","umijs"],"license":"ISC","readme":"# m2mock\n\nm2mock 即markdown to mock，本项目是解析markdown接口文档为mock json的一个命令行工具。接口文档必须满足一定规则，并不能灵活处理各种格式。\n\n该项目旨在分享一下思路：\n1. 将markdown转换为html字符，这里用`markdown-it`；\n2. html字符利用DOM解析工具处理，这里用`cheerio`;\n3. 核心内容是根据DOM树规律，提取以下信息：请求方法、请求路径、请求参数、响应参数、参数类型等信息；对于mock数据，只关注请求方法、请求路径、响应参数和参数类型等；\n4. 取得需要的信息后，再利用`mock.js`即可生成一个json假数据。\n\n# 使用方法\n```\nm2mock -f example.md -n mock.js\n```\n* -f, --from `<file>` : 原始mackdown文件\n* -n, --name `<filename>`: 输出文件名，默认为`./mock.json`\n\n# 接口文档示例\n接口文件markdown文件，需要满足以下规则：\n```\n通话明细搜索接口\n\"\"\"\nGET '/api/search'\n\nPARAMS:\n* `keyword` (str) - 关键词、句，用空格' '隔开，不用逗号是防止句子中出现逗号。\n* `caller` (str) **optional** - 拨打人\\部门id，用英文半角逗号','隔开，部门id前加字母D\n* `call_time_begin` (timestamp) **optional** - 呼叫时间起始值(13位，含)\n* `call_time_end` (timestamp) **optional** - 呼叫时间结束值（13位，含）\n* `duration_begin` (int) **optional** - 通话时长起始值（秒、含）\n* `duration_end` (int) **optional** - 通话时长结束值（秒、含）\n* `rank_model` (str) **optional** - 通话评级模型id\n* `rank_value` (str) **optional** - 通话模型评级id\n* `callee_number` (str) **optional** - 被叫号码\n* `company_name` (str) **optional** - 公司名称\n* `call_id` (str) **optional** - 通话ID\n* `sort` (int) **optional** - 数据排序: 1-呼叫时间升序；2-呼叫时间降序；3-通话时长升序；4-通话时长降序\n    * `1` (int) - 呼叫时间升序\n    * `2` (int) - 呼叫时间降序 (默认)\n    * `3` (int) - 通话时长升序\n    * `4` (int) - 通话时长降序\n* `page` (int) - 页码，默认1， 这里还没有确定，可能要采用缓存数据的方法\n* `limit` (int) - 每页返回数据量，默认10\n* `search_after` (str) - 如果翻页前的返回是非算法类型的，翻页时带上这个参数\n\nRETURNS:\n* `total` (int) - 共有多少条数据，虚数\n* `type` (int) - 搜索类型\n    * `0` (int) - 非算法\n    * `1` (int) - 算法\n* `data` (list of dict)\n    * `_id` (str) - 实际存储id\n    * `call_id` (str) - 通话ID\n    * `tags` (list) - 标签列表\n        * `tag_name` (str) - 标签名\n        * `count` (int) - 出现次数\n        * `color` (int) - 标签颜色：1-蓝色；2-红色\n            * `1` (int) - 蓝色\n            * `2` (int) - 红色\n    * `rank` (list of dict) - 通话评级列表\n        * `_id` (str) - 评级id\n        * `name` (str) - 评级名\n    * `caller_id` (str) - 拨打人id\n    * `caller_name` (str) - 拨打人名\n    * `department_id` (str) - 拨打人所属部门id\n    * `department_name` (str) - 拨打人所属部门名\n    * `callee_number` (str) - 被叫号码\n    * `callee_operater` (str) - 被叫号码归属运营商\n    * `callee_company_name` (str) - 被叫号所属公司名\n    * `callee_user_name` (str) - 被叫号所属人\n    * `call_time` (timestamp) - 呼叫时间(13位)\n    * `duration` (int) - 通话时长（秒）\n    * `voice_oss_key` (str) - 录音播放地址\n    * `hit_text` (list of dict) - 命中文本\n        * `start` (int) - 命中对话开始时间（秒）\n        * `text` (str) - 命中对话文本\n* `search_after` (str) - 非算法类翻页参数\n\"\"\"\n\n```\n* `GET '/api/search'` 请求方法大写 + 请求路径在同一行；\n* `PARAMS` 单独一行，用来识别参数\n* `RETURNS` 单独一行，用来识别响应\n* 参数通过缩进表示父子关系\n* ``` `total` (int) - 共有多少条数据，虚数```: 每个参数包括：``包裹的属性名、括号包裹的类型，以及中华线后面的说明。\n\n# 解析结果示例\n```\n{\n  \"GET /api/search\": {\n    \"total\": 147,\n    \"type\": \"1\",\n    \"data\": [\n      {\n        \"_id\": \"任娜\",\n        \"call_id\": \"钱丽\",\n        \"tags\": [\n          { \"tag_name\": \"程丽\", \"count\": 38, \"color\": \"2\" },\n          { \"tag_name\": \"程丽\", \"count\": 38, \"color\": \"2\" }\n        ],\n        \"rank\": \"name\",\n        \"caller_id\": \"田勇\",\n        \"caller_name\": \"沈勇\",\n        \"department_id\": \"姜强\",\n        \"department_name\": \"范磊\",\n        \"callee_number\": \"黄磊\",\n        \"callee_operater\": \"周洋\",\n        \"callee_company_name\": \"秦娜\",\n        \"callee_user_name\": \"王娜\",\n        \"call_time\": 1668658968916,\n        \"duration\": 16,\n        \"voice_oss_key\": \"唐平\",\n        \"hit_text\": [\n          { \"start\": 128, \"text\": \"方敏\" },\n          { \"start\": 128, \"text\": \"方敏\" },\n          { \"start\": 128, \"text\": \"方敏\" },\n          { \"start\": 128, \"text\": \"方敏\" },\n          { \"start\": 128, \"text\": \"方敏\" }\n        ]\n      },\n      {\n        \"_id\": \"任娜\",\n        \"call_id\": \"钱丽\",\n        \"tags\": [\n          { \"tag_name\": \"程丽\", \"count\": 38, \"color\": \"2\" },\n          { \"tag_name\": \"程丽\", \"count\": 38, \"color\": \"2\" }\n        ],\n        \"rank\": \"name\",\n        \"caller_id\": \"田勇\",\n        \"caller_name\": \"沈勇\",\n        \"department_id\": \"姜强\",\n        \"department_name\": \"范磊\",\n        \"callee_number\": \"黄磊\",\n        \"callee_operater\": \"周洋\",\n        \"callee_company_name\": \"秦娜\",\n        \"callee_user_name\": \"王娜\",\n        \"call_time\": 1668658968916,\n        \"duration\": 16,\n        \"voice_oss_key\": \"唐平\",\n        \"hit_text\": [\n          { \"start\": 128, \"text\": \"方敏\" },\n          { \"start\": 128, \"text\": \"方敏\" },\n          { \"start\": 128, \"text\": \"方敏\" },\n          { \"start\": 128, \"text\": \"方敏\" },\n          { \"start\": 128, \"text\": \"方敏\" }\n        ]\n      }\n    ],\n    \"search_after\": \"傅娟\"\n  }\n}\n\n```\n* 最终会生成`mock.json`文件，对应的类型会随机生成对应原始值\n* 枚举会随机返回枚举值\n* 数组会随机返回2-5组值\n\n\n","readmeFilename":"README.md"}