{"_id":"@yunzhijia/qing","_rev":"27-439cd696956c12d94be12fa313dda061","name":"@yunzhijia/qing","dist-tags":{"beta":"0.2.2-2","latest":"1.0.1"},"versions":{"0.2.0-3":{"name":"@yunzhijia/qing","version":"0.2.0-3","keywords":["yunzhijia","yzj","qingjs","cloudhub","lightapp"],"author":{"name":"yunzhijia"},"license":"","_id":"@yunzhijia/qing@0.2.0-3","maintainers":[{"name":"mailhap","email":"mailhap@qq.com"},{"name":"smildlzj","email":"24comic@gmail.com"}],"dist":{"shasum":"1e885070f6b3520dbae3d5a770e208638debd009","tarball":"https://registry.npmjs.org/@yunzhijia/qing/-/qing-0.2.0-3.tgz","fileCount":17,"integrity":"sha512-LukOG2t4NGYWcVOypd8+LXtR6gUJ6blvalHrJcc0c9trRY3M85cWLLkaFYy7SOL+8/RW+/zT3nPWd2Vv2ukHJw==","signatures":[{"sig":"MEYCIQDY3DZSntl4jca+75vXM7eeReuczbB7CEnd/Ox8LdROogIhAMCBAOUnHsifemmqnDlUf94BF6mutnQ67eV2bSRVjXVD","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":414553,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJerT2GCRA9TVsSAnZWagAA4nYP/RspzFHbuJx2uKc0y8C1\nJKwNLvhGKAR3dW+SkRdD8ISYHTEN/P4SDp4Hb5eBZDYjAgCW+8eZfHF/jyyd\nN6B5YjY2Ep7OEhkcz2T5LNod2tc37+9780KHJARcysgKwPKKMa1N4k7YSOiI\nit8/yAT51u4TJeB/cmtX6n6USfWx26N3qYZ6nu2MpxGtcm/XoMNABVEUDXsH\nP2QUfG+otgHhzMka/XsKoiWLi/j9S8LD2iVldA/tUhra0ktmZEuea09VqyrQ\n/t4CxT3hSapdTmxkF5YHxhkgmuKNB9eWjDY2d7kNiyF0JyAYvoSW9/o+9Dsa\nAHGpDaW5sVENhQvpyXOA3XowF2GfH/ltpGS8pKsAGY89NiRl6tgVGQEZxjWu\n/LFxG9cSLbkZFck8vNbME+0+3xS5vE2AlQS/6XPJv7kvE1sGec6z/tAAdA5P\nxsOPF7IVq5OJWWsK3C/Hml+arMAcAaTtEd8fr4dBr0EItrUxT+CV1DltPDrO\ncSRt2usdwzqw5do51iLV3rJouQ88hLYvXlaxtikcVfb/J0M6dbjppJZmCJuV\nWhOZlWS4Zm0D3asX0x0Qgy4TmmH3NNKzWLLXeZNIAFPj0nzgWFvwD5WhQEa0\nlCRU3i/kEOUNbiHn40LFYxYjSfPRcHBKbEkvfp2blFcHKxAQt18dMAbT5x6k\niQOE\r\n=QnLQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/qing.js","gitHead":"f5534798096edcb2542434810b3b375716e96e2c","scripts":{"dev":"sh tools/scripts/server.sh","docs":"http-server docs --p 4000","test":"sh tools/scripts/test.sh","build":"yun-pack --task=build --profile=production","build:npm":"yun-pack --task=build --profile=npm","build:test":"sh tools/scripts/build.sh test","publish:beta":"npm publish --registry https://registry.npmjs.org --access=public --tag beta","publish:latest":"npm publish --registry https://registry.npmjs.org --access=public"},"_npmUser":{"name":"smildlzj","email":"24comic@gmail.com"},"_npmVersion":"6.4.1","description":"> qingjs是为了方便前端人员在云之家环境调用native代码的工具类，兼容新版桌面端、老版桌面端、移动端、微信","directories":{},"_nodeVersion":"8.16.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^14.1.1","chai":"^4.2.0","mocha":"^6.2.2","eslint":"^6.6.0","webpack":"^4.16.1","yun-pack":"^0.1.0","clean-css":"^4.2.1","cross-env":"^4.0.0","node-sass":"4.9.3","uglify-es":"^3.3.9","@babel/cli":"^7.6.4","css-loader":"^1.0.0","dot-loader":"^0.1.1","@babel/core":"^7.6.4","@babel/node":"^7.6.3","file-loader":"^1.1.11","http-server":"^0.11.1","mochawesome":"^4.1.0","sass-loader":"^7.0.3","scss-loader":"^0.0.1","autoprefixer":"^7.1.4","babel-eslint":"^10.0.3","babel-loader":"^8.0.6","loader-utils":"^2.0.0","eslint-loader":"^3.0.2","webpack-merge":"^4.1.3","@babel/preset-env":"^7.6.3","eslint-plugin-html":"^6.0.0","babel-plugin-istanbul":"^5.2.0","eslint-plugin-promise":"^4.2.1","webpack-dev-middleware":"^3.1.3","webpack-hot-middleware":"^2.22.3","mini-css-extract-plugin":"0.4.2","webpack-bundle-analyzer":"^2.13.1","eslint-friendly-formatter":"^2.0.7","@istanbuljs/nyc-config-babel":"^2.1.1","string-replace-webpack-plugin":"^0.1.3","friendly-errors-webpack-plugin":"^1.6.1"},"optionalDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/qing_0.2.0-3_1588411782377_0.17495618531249812","host":"s3://npm-registry-packages"}},"0.2.0-5":{"name":"@yunzhijia/qing","version":"0.2.0-5","keywords":["yunzhijia","yzj","qingjs","cloudhub","lightapp"],"author":{"name":"yunzhijia"},"license":"","_id":"@yunzhijia/qing@0.2.0-5","maintainers":[{"name":"mailhap","email":"mailhap@qq.com"},{"name":"smildlzj","email":"24comic@gmail.com"}],"dist":{"shasum":"1fe6e907de9a1aa51d3bc1faf4c13fdde2c7a56a","tarball":"https://registry.npmjs.org/@yunzhijia/qing/-/qing-0.2.0-5.tgz","fileCount":16,"integrity":"sha512-mai4JBbvRZiVtxtQHtiW6QTGdqEHNZ+I3dnPKda08Cb+mO+s+3syapsZiFIPFDxHhqIFqxeY2eZikmLrozzGiA==","signatures":[{"sig":"MEUCIBlCYT7qLNvXTYwUwD2zcVaocrLQ+lcSV9GPzYfm8yyIAiEA4fQ/OdIk0ULaIzoUMj4eIIVk4OcYYUdolELaLWMKsM0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":269994,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJerUaiCRA9TVsSAnZWagAAgSsP/34q+m41qPpRcBrOcIps\nV78efpLjCBBXpqbnjlmaHeO6z07fwJ+I9zBp4rEHUjelBpgN6bpxbtf5E0PI\niqBXWVpKBdA79zJ7SJOrlt4vQR/aIo4M8KQPw9QVaQxZJn+k7OoR5moYuS0n\novhjCwQNtwn1fY2tWIFZGDFribxw9jZu4bFihkvBhTmvaTrlh5Yb9VnXqtlO\nsRb3M0Nj93h+5aFUTPqkskkfvZvkNENo+3CKKuvDBrHanyuMKQicEHWh4pVL\nAWHkNcG8pokdr9zN5/0zTxo+E8he4ZIVHhi+fn+XG/69IQz7kYeJDjuWmLdY\n3+FlnI7qDPvZO1obhfbn4S9iVvoVCWOxTdKVzm6SzBrUO/M4lz5BlOBh6DVS\nH7ENLZ4/Kg1fvL9OkNixTQRdyYZdiQyZ35I+6/w7xtKSz2wUQ1p5zMx1nmBi\n6P0KkTSY1l6Gho4nfgF1V8Hw2AGjkUUROt8eObsWGvyJYGWJsYuxV5o3YRvK\nivmKqZvL6oGRkzJRfmSV5T5MK7gpSgrqAnDbvuobkf0Bge7AYZmzZfKm2DaV\n3DBalZWpMzEr/NOQbhhw6Iap+3Pb0qmcR8T6DUZlS8iWrKJJ6gZcbTpPuOki\n209vymURG60B1d+IA2rHJTE9UPbbuFLm6o/CzEIO+ocr1eIodG/cCY77/Y7j\n5E0N\r\n=gm7Z\r\n-----END PGP SIGNATURE-----\r\n"},"readme":"ERROR: No README data found!","_npmUser":{"name":"smildlzj","email":"24comic@gmail.com"},"_npmVersion":"6.4.1","description":"","directories":{},"_nodeVersion":"8.16.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qing_0.2.0-5_1588414113772_0.5748285017082524","host":"s3://npm-registry-packages"}},"0.2.0-6":{"name":"@yunzhijia/qing","version":"0.2.0-6","keywords":["yunzhijia","yzj","qingjs","cloudhub","lightapp"],"author":{"name":"yunzhijia"},"license":"","_id":"@yunzhijia/qing@0.2.0-6","maintainers":[{"name":"mailhap","email":"mailhap@qq.com"},{"name":"smildlzj","email":"24comic@gmail.com"}],"dist":{"shasum":"2de13bfb177e281f5b43d5169156cd27d106c48e","tarball":"https://registry.npmjs.org/@yunzhijia/qing/-/qing-0.2.0-6.tgz","fileCount":18,"integrity":"sha512-9hSSE6aYS/EPc2CVyamvzfTq9fQhaaynojNp1zc9Zju3xYePAB9sLHKJWG3UP8H2lOReEB4KzOexpPuGc6i8ig==","signatures":[{"sig":"MEUCIDBtWVPJQAHBT097B1eIB/ugnORltMYBOJKDj6sYsv6nAiEA6eQ1szTbEK1SrSqDmsSQSwdp/TOGxUznJRDyUgiK8Sc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":276709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJetiYECRA9TVsSAnZWagAAmCUP/0yQMI5trqq8472rD7OQ\nipYMOz6mJnwzV8qwDZnMcpWAz04pfRg7bYnEiW84GNfk2kbDx9i6oyT0pyAy\nhF5YRdD/UP5FHATR8AdIV/6lgFfT2cGvmh4QPg/64cexcnQVUcvJG0sY7z2o\nUNTn3kTerYVRMxJBfBp42sqhXfx0rL3T0J7DqTywGU/dLss+rTQNlWc72DWT\nvHY0S7M3KINTsh2bM8PSdxeVH7DYeIFufEu6Tq1uwgIMv5snFjbDhh9s2fCG\nFEhNJhXDZHHn1Vkkf0c2jlcJEzNEUx6FABJS247wgEEoz2uM3QabMaxOQNVT\n8HJxvWV/T4F2HxF6mUwbVzexUYRUim0kyaEPDaaLKZnS3nbmY68Goi7WlKMb\nACIOHN7Y3fue0aA1FdVcZ3InQ9+rfl5pI/ro+kS2/t07cLZho3AHLDOKgCbp\nhvAkpXDd32sTSiA/3z6oQ8T8pQjkC3yRWPvsy5M+kHWh6f1CcWc8tCmZ359Y\nNJ69DaDnAdLyyPPpp/GvaBMhlt0hhn6dWnzNdePBtrnatLzocP0Rouvpyd8K\nn0J5FFSxRQ5rk5QAxa2XcnC8fBwAWyNarDLJoc8bvo2oF0ka3iOt1W1jTEzU\nefuwbToEAzbb1mtnm1oFBawYJHrEYp/ky9y1GJ9JyH+MOvp3zpsvmp8sOfzw\nLAUE\r\n=UkKF\r\n-----END PGP SIGNATURE-----\r\n"},"readme":"# qing\r\n> qingjs是为了方便前端人员在云之家环境调用native代码的工具类，兼容新版桌面端、老版桌面端、移动端、微信\r\n\r\n桥测试页面：http://www.yunzhijia.com/public/js/qing/latest/test_qing.html\r\n\r\n## 如何使用\r\n\r\n### 常规使用案例\r\n\r\n* NPM版本\r\n```\r\n  npm install @yunzhijia/qing\r\n```\r\n\r\n* 常规版本\r\n\r\n```html\r\n<!DOCTYPE html>\r\n<html>\r\n<head>\r\n<meta charset=\"utf-8\">\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0,maximum-scale=1.0,user-scalable=no\" />\r\n<title>usecase</title>\r\n</head>\r\n<body>\r\n<!-- 引入qing -->\r\n<script src=\"//static.yunzhijia.com/public/js/qing/latest/qing.js\"></script>\r\n<script>\r\n// 在 qing.config 执行前，所有其它的 ydk api 都不会真正被调用\r\n// 这里是一个简单的配置，其它 API list 请参考详细文档\r\nqing.config({\r\n  debug : false,\r\n  jsApiList : ['checkJsApi', 'share'],\r\n  jsEventList: ['appear', 'disappear'] // 自动绑定事件，会通过document.dispatchEvent分发\r\n});\r\n// 获取个人信息\r\nqing.call('getPersonInfo', {\r\n  success : function(res){}\r\n});\r\n\r\nqing.on('appear', {\r\n  complete: function (res) {},\r\n  error: function (res) {},\r\n  success : function(res){}\r\n});\r\n</script>\r\n</body>\r\n</html>\r\n```\r\n\r\n### 接口调用说明\r\n\r\n所有接口的调用形式为 `qing.call('xxx', {...})`，参数必须是一个对象。\r\n\r\n每个接口除了自身必须的参数外，还支持以下通用参数：\r\n\r\n1. `success`：接口调用成功时执行的回调函数。\r\n1. `error`：接口调用失败时执行的回调函数。\r\n1. `complete`：接口调用完成时执行的回调函数，无论成功或失败都会执行。\r\n\r\n以上所述的回调函数的参数说明，如 `success : function (res) { ... }`，这里的 `res` 为对象，除了每个接口自身返回的数据之外，还有两个通用属性 `code` 和 `errMsg`，其值格式如下：\r\n\r\n1. 调用成功(`success`)：`{code: 200, errMsg: \"\", data: {}}`\r\n1. 调用失败(`error`)：`{code: 500, errMsg: \"不合法的图片文件大小\", data: {}}`\r\n\r\n> **注：** code 类型为数字，非字符串。\r\n\r\n## 接口说明\r\n\r\n### 基础接口\r\n\r\n#### qing.config 获取app信息\r\n\r\n在 qing.config 未成功执行前，其他 api 将无法正常使用（在调用队列里安静的等着，不会被执行）\r\n\r\n```javascript\r\nqing.config({\r\n  debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过 log 打出，仅在 pc 端时才会打印。\r\n  jsApiList: ['api-1', 'api-2', '...'] //必填，需要使用的JS接口列表\r\n});\r\n```\r\n\r\n> 只有在 jsApiList 中明确指定的 API，当前 webview 中才可用。因为某些 API 的初始化需要额外的开销，从而导致资源浪费。\r\n\r\n#### qing.checkJsApi 判断当前客户端版本是否支持指定 API 接口\r\n\r\n用于检测当前客户端支持哪些桥。\r\n\r\n```javascript\r\nqing.checkJsApi({\r\n  jsApiList: [\r\n    \"gotoLightApp\",   // qing.nativeJsBridgeVersion >= 0.9.18\r\n    \"todoList\",       // qing.nativeJsBridgeVersion >= 0.9.80\r\n    \"setBounce\",      // qing.nativeJsBridgeVersion >= 0.9.27, iosOnly\r\n    \"selectLocalFile\" // qing.nativeJsBridgeVersion >= 0.9.30, androidOnly\r\n  ],\r\n  success: function(res){\r\n    console.log(res);\r\n  }\r\n});\r\n\r\n// success返回结果res示例：\r\n{\r\n  \"success\": true,\r\n  \"data\":{\r\n    \"gotoLightApp\": true,\r\n    \"todoList\": false,\r\n    \"setBounce\": true,\r\n    \"selectLocalFile\": false\r\n  }\r\n}\r\n```\r\n\r\n### 通过应用后端返回的签名信息获取ticket\r\n\r\n在活动页或者混合应用中， 可以通过 `qing.call('getTicket')` 取得ticket。\r\n\r\n方法一：\r\n\r\n```javascript\r\nqing.call('getTicket', {\r\n    signUrl: '/path/to/myapp/sign',\r\n    signMethod: 'post',\r\n    success (e) {\r\n        alert(e.data.ticket)\r\n    },\r\n    error (error) {\r\n        alert(error)\r\n    }\r\n})\r\n```\r\n\r\nsignUrl是获取签名的接口，各个轻应用的后端应该提供这样一个接口，这个接口会接收到一个名为url参数（post）\r\n\r\n返回结果的格式必须如下：\r\n\r\n```json\r\n  {\r\n    \"success\": true,\r\n    \"data\": {\r\n        appId: \"\",\r\n        timeStamp: \"\",\r\n        nonceStr: \"\",\r\n        signature: \"\"\r\n    }\r\n  }\r\n```\r\n\r\n方法二：\r\n\r\n如果你通过别的方式（例如页面直出）拿到了签名信息，也可以像下面的例子直接传入。\r\n\r\n```javascript\r\nqing.call('getTicket', {\r\n    timeStamp:'1530867948317',\r\n    signature:'7qaScdppiMKuDoYadUqbZhlZhgw=',\r\n    appId:'101091520',\r\n    nonceStr:'0.7057841489531929',\r\n    success (e) {\r\n        alert(e.data.ticket)\r\n    },\r\n    error (error) {\r\n        alert(error)\r\n    }\r\n})\r\n```\r\n\r\n## 附录1：所有 API 列表\r\n\r\n#### - 与 native 相关的 API\r\n\r\n##### 以下为 base api，也就是对第三方开放的无限制的部分\r\n\r\n1. qing.config\r\n1. qing.checkApi\r\n\r\n#### - qing 中还包含了一些为了便于编码便利而存在的一些辅助性 api\r\n1. qing.version，qing版本号\r\n1. qing.isSupportNativeJsBridge，当前 webview 支持桥\r\n1. qing.nativeJsBridgeVersion，当前客户端桥版本\r\n1. qing.hasOwn，见 `Object.hasOwnProperty`\r\n1. qing.isFunction，是否函数\r\n1. qing.isString，是否字符串\r\n1. qing.isNumber，是否数字\r\n1. qing.isObject，是否对象\r\n1. qing.isArray，是否数组\r\n1. qing.forEach，见 `Array.prototype.forEach`\r\n1. qing.keys，见`Object.keys`\r\n1. qing.ns，把字符串转换为命名空间，`\"a.b.c\"` 1.> `{a:{b:{c:{}}}}`\r\n1. qing.isWX，是否微信客户端\r\n1. qing.isChrome，是否 chrome\r\n1. qing.isFirefox，是否 firefox\r\n1. qing.isOpera，是否 opera\r\n1. qing.isSafari，是否 safari\r\n1. qing.isIe，是否 IE 浏览器，这个用法稍微不一样，如 `qing.isIe() or qing.isIe(6)`\r\n1. qing.isIphone，是否 iphone\r\n1. qing.isIpad，是否 ipad\r\n1. qing.isIpod，是否 ipod\r\n1. qing.isIos，是否 ios 平台\r\n1. qing.isAndroid，是否 Android 平台\r\n1. qing.isAndroidPhone，是否 Android 手机\r\n1. qing.isAndroidTable，是否 Android 平板\r\n1. qing.isBlackberry，是否黑莓\r\n1. qing.isMac，是否 mac 本\r\n1. qing.isWindows，是否 win 系统\r\n1. qing.isWindowsPhone，是否 win 手机\r\n1. qing.isWindowsTable，是否 win 平板\r\n1. qing.isMobile，是否手机\r\n1. qing.isDesktop，是否 PC 机\r\n1. qing.isTouchDevice，是否触屏设备\r\n\r\n## 附录2：全局返回码说明\r\n> **注：** code类型为数字，非字符串。\r\n\r\n|  返回码  |      说明      |\r\n|  :--------  |  :--------|\r\n|   100|  调用成功，并且有多次返回|\r\n|   200|  调用成功|\r\n|   404|  接口不存在|\r\n|   500|  全局调用失败code|\r\n","_npmUser":{"name":"smildlzj","email":"24comic@gmail.com"},"_npmVersion":"6.4.1","description":"> qingjs是为了方便前端人员在云之家环境调用native代码的工具类，兼容新版桌面端、老版桌面端、移动端、微信","directories":{},"_nodeVersion":"8.16.0","_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/qing_0.2.0-6_1588995588266_0.09654690726555559","host":"s3://npm-registry-packages"}},"0.2.0-7":{"name":"@yunzhijia/qing","version":"0.2.0-7","keywords":["yunzhijia","yzj","qingjs","cloudhub","lightapp"],"author":{"name":"yunzhijia"},"license":"","_id":"@yunzhijia/qing@0.2.0-7","maintainers":[{"name":"mailhap","email":"mailhap@qq.com"},{"name":"smildlzj","email":"24comic@gmail.com"}],"dist":{"shasum":"9e75ae94fe9063b1833d9c31f4a0a271334c28ea","tarball":"https://registry.npmjs.org/@yunzhijia/qing/-/qing-0.2.0-7.tgz","fileCount":18,"integrity":"sha512-uFVrUkMRIIb0scR5uUr7OmThyIzZtLEgwp77mIAG+293KsN155apGB+gKbqG9QAjQ+Go/t/TLSeoOtEDBfU+FA==","signatures":[{"sig":"MEUCIG9/JW2xKD/Em6/8PABtZiAbz1C5NzcrHbnys89W92D+AiEAzI0zn5iUwY0WSGJn6n7osbc8L7jTTnc1+W/7eUH4vog=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":276721,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJetia/CRA9TVsSAnZWagAA+AgP/0xMfEPFqKl+awvgPlTn\nvrCG1zeHO4wTgiq4wLjqqcy41vTwgVeNdzlZ4qlJyD5myCiLr4F2oOtd8hG4\nbXfbm/w2vFJ0EqCbVMjjE+8UmsH0dkqvDZnqigdeqchIfzFO5iiD7qCT1XoI\nW2kp425ZlWxefiHS/v9NYzNgNlMJjeVQyv+bkMcb+faxiZGvLVFung4wkPS8\nhkXFsDksetbxVNJTRxcYqidyk4gS5lWqrb5w1PsOCMRojZUQrYl2p/8WMQSz\noOcge7USJTjLBHTsPKQ7pu8uu+jR9KoFLZrxaZho8DDUefrxyE0+U7uCfqPO\n34oFBFrL/Jg74rp0xmVKgZY/nx/zjmuyzmPy9ZjJWZ938bqVJTICzG1Dk+pZ\nw2ofTdzurXxvDUAkfn+d06AMwpx2ck7LajWeXB7r3m9C66V5TqR87KVpOjtF\npfJelcPmv3wTteON/TxtM5HeQeedpaVCq1Kpwr6nG2hIhsbGzf0bksF2+lHc\n4JcGmBQnKINlbK1KKBGHeHJ/O4qZXuGfZ6O91LThTPJNo12E4yvQxTO2nd3D\nGFmoXqRjJ0B3kzAdQo/ex+pn9DS6anjWuk4fBLCn6V0m9UZSIusgRuSOpKCg\nEmrR6UCvOHmH//2kfzsmFXiiS63bv3mT/YAEpWYpOXdPIHLNr5LWL+cDc8Wd\ns8KC\r\n=ciDn\r\n-----END PGP SIGNATURE-----\r\n"},"readme":"# qing\r\n> qingjs是为了方便前端人员在云之家环境调用native代码的工具类，兼容新版桌面端、老版桌面端、移动端、微信\r\n\r\n桥测试页面：http://www.yunzhijia.com/public/js/qing/latest/test_qing.html\r\n\r\n## 如何使用\r\n\r\n### 常规使用案例\r\n\r\n* NPM版本\r\n```\r\n  npm install @yunzhijia/qing\r\n```\r\n\r\n* 常规版本\r\n\r\n```html\r\n<!DOCTYPE html>\r\n<html>\r\n<head>\r\n<meta charset=\"utf-8\">\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0,maximum-scale=1.0,user-scalable=no\" />\r\n<title>usecase</title>\r\n</head>\r\n<body>\r\n<!-- 引入qing -->\r\n<script src=\"//static.yunzhijia.com/public/js/qing/latest/qing.js\"></script>\r\n<script>\r\n// 在 qing.config 执行前，所有其它的 ydk api 都不会真正被调用\r\n// 这里是一个简单的配置，其它 API list 请参考详细文档\r\nqing.config({\r\n  debug : false,\r\n  jsApiList : ['checkJsApi', 'share'],\r\n  jsEventList: ['appear', 'disappear'] // 自动绑定事件，会通过document.dispatchEvent分发\r\n});\r\n// 获取个人信息\r\nqing.call('getPersonInfo', {\r\n  success : function(res){}\r\n});\r\n\r\nqing.on('appear', {\r\n  complete: function (res) {},\r\n  error: function (res) {},\r\n  success : function(res){}\r\n});\r\n</script>\r\n</body>\r\n</html>\r\n```\r\n\r\n### 接口调用说明\r\n\r\n所有接口的调用形式为 `qing.call('xxx', {...})`，参数必须是一个对象。\r\n\r\n每个接口除了自身必须的参数外，还支持以下通用参数：\r\n\r\n1. `success`：接口调用成功时执行的回调函数。\r\n1. `error`：接口调用失败时执行的回调函数。\r\n1. `complete`：接口调用完成时执行的回调函数，无论成功或失败都会执行。\r\n\r\n以上所述的回调函数的参数说明，如 `success : function (res) { ... }`，这里的 `res` 为对象，除了每个接口自身返回的数据之外，还有两个通用属性 `code` 和 `errMsg`，其值格式如下：\r\n\r\n1. 调用成功(`success`)：`{code: 200, errMsg: \"\", data: {}}`\r\n1. 调用失败(`error`)：`{code: 500, errMsg: \"不合法的图片文件大小\", data: {}}`\r\n\r\n> **注：** code 类型为数字，非字符串。\r\n\r\n## 接口说明\r\n\r\n### 基础接口\r\n\r\n#### qing.config 获取app信息\r\n\r\n在 qing.config 未成功执行前，其他 api 将无法正常使用（在调用队列里安静的等着，不会被执行）\r\n\r\n```javascript\r\nqing.config({\r\n  debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过 log 打出，仅在 pc 端时才会打印。\r\n  jsApiList: ['api-1', 'api-2', '...'] //必填，需要使用的JS接口列表\r\n});\r\n```\r\n\r\n> 只有在 jsApiList 中明确指定的 API，当前 webview 中才可用。因为某些 API 的初始化需要额外的开销，从而导致资源浪费。\r\n\r\n#### qing.checkJsApi 判断当前客户端版本是否支持指定 API 接口\r\n\r\n用于检测当前客户端支持哪些桥。\r\n\r\n```javascript\r\nqing.checkJsApi({\r\n  jsApiList: [\r\n    \"gotoLightApp\",   // qing.nativeJsBridgeVersion >= 0.9.18\r\n    \"todoList\",       // qing.nativeJsBridgeVersion >= 0.9.80\r\n    \"setBounce\",      // qing.nativeJsBridgeVersion >= 0.9.27, iosOnly\r\n    \"selectLocalFile\" // qing.nativeJsBridgeVersion >= 0.9.30, androidOnly\r\n  ],\r\n  success: function(res){\r\n    console.log(res);\r\n  }\r\n});\r\n\r\n// success返回结果res示例：\r\n{\r\n  \"success\": true,\r\n  \"data\":{\r\n    \"gotoLightApp\": true,\r\n    \"todoList\": false,\r\n    \"setBounce\": true,\r\n    \"selectLocalFile\": false\r\n  }\r\n}\r\n```\r\n\r\n### 通过应用后端返回的签名信息获取ticket\r\n\r\n在活动页或者混合应用中， 可以通过 `qing.call('getTicket')` 取得ticket。\r\n\r\n方法一：\r\n\r\n```javascript\r\nqing.call('getTicket', {\r\n    signUrl: '/path/to/myapp/sign',\r\n    signMethod: 'post',\r\n    success (e) {\r\n        alert(e.data.ticket)\r\n    },\r\n    error (error) {\r\n        alert(error)\r\n    }\r\n})\r\n```\r\n\r\nsignUrl是获取签名的接口，各个轻应用的后端应该提供这样一个接口，这个接口会接收到一个名为url参数（post）\r\n\r\n返回结果的格式必须如下：\r\n\r\n```json\r\n  {\r\n    \"success\": true,\r\n    \"data\": {\r\n        appId: \"\",\r\n        timeStamp: \"\",\r\n        nonceStr: \"\",\r\n        signature: \"\"\r\n    }\r\n  }\r\n```\r\n\r\n方法二：\r\n\r\n如果你通过别的方式（例如页面直出）拿到了签名信息，也可以像下面的例子直接传入。\r\n\r\n```javascript\r\nqing.call('getTicket', {\r\n    timeStamp:'1530867948317',\r\n    signature:'7qaScdppiMKuDoYadUqbZhlZhgw=',\r\n    appId:'101091520',\r\n    nonceStr:'0.7057841489531929',\r\n    success (e) {\r\n        alert(e.data.ticket)\r\n    },\r\n    error (error) {\r\n        alert(error)\r\n    }\r\n})\r\n```\r\n\r\n## 附录1：所有 API 列表\r\n\r\n#### - 与 native 相关的 API\r\n\r\n##### 以下为 base api，也就是对第三方开放的无限制的部分\r\n\r\n1. qing.config\r\n1. qing.checkApi\r\n\r\n#### - qing 中还包含了一些为了便于编码便利而存在的一些辅助性 api\r\n1. qing.version，qing版本号\r\n1. qing.isSupportNativeJsBridge，当前 webview 支持桥\r\n1. qing.nativeJsBridgeVersion，当前客户端桥版本\r\n1. qing.hasOwn，见 `Object.hasOwnProperty`\r\n1. qing.isFunction，是否函数\r\n1. qing.isString，是否字符串\r\n1. qing.isNumber，是否数字\r\n1. qing.isObject，是否对象\r\n1. qing.isArray，是否数组\r\n1. qing.forEach，见 `Array.prototype.forEach`\r\n1. qing.keys，见`Object.keys`\r\n1. qing.ns，把字符串转换为命名空间，`\"a.b.c\"` 1.> `{a:{b:{c:{}}}}`\r\n1. qing.isWX，是否微信客户端\r\n1. qing.isChrome，是否 chrome\r\n1. qing.isFirefox，是否 firefox\r\n1. qing.isOpera，是否 opera\r\n1. qing.isSafari，是否 safari\r\n1. qing.isIe，是否 IE 浏览器，这个用法稍微不一样，如 `qing.isIe() or qing.isIe(6)`\r\n1. qing.isIphone，是否 iphone\r\n1. qing.isIpad，是否 ipad\r\n1. qing.isIpod，是否 ipod\r\n1. qing.isIos，是否 ios 平台\r\n1. qing.isAndroid，是否 Android 平台\r\n1. qing.isAndroidPhone，是否 Android 手机\r\n1. qing.isAndroidTable，是否 Android 平板\r\n1. qing.isBlackberry，是否黑莓\r\n1. qing.isMac，是否 mac 本\r\n1. qing.isWindows，是否 win 系统\r\n1. qing.isWindowsPhone，是否 win 手机\r\n1. qing.isWindowsTable，是否 win 平板\r\n1. qing.isMobile，是否手机\r\n1. qing.isDesktop，是否 PC 机\r\n1. qing.isTouchDevice，是否触屏设备\r\n\r\n## 附录2：全局返回码说明\r\n> **注：** code类型为数字，非字符串。\r\n\r\n|  返回码  |      说明      |\r\n|  :--------  |  :--------|\r\n|   100|  调用成功，并且有多次返回|\r\n|   200|  调用成功|\r\n|   404|  接口不存在|\r\n|   500|  全局调用失败code|\r\n","_npmUser":{"name":"smildlzj","email":"24comic@gmail.com"},"_npmVersion":"6.4.1","description":"> qingjs是为了方便前端人员在云之家环境调用native代码的工具类，兼容新版桌面端、老版桌面端、移动端、微信","directories":{},"_nodeVersion":"8.16.0","_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/qing_0.2.0-7_1588995774802_0.8961563592012483","host":"s3://npm-registry-packages"}},"0.2.0-8":{"name":"@yunzhijia/qing","version":"0.2.0-8","keywords":["yunzhijia","yzj","qingjs","cloudhub","lightapp"],"author":{"name":"yunzhijia"},"license":"","_id":"@yunzhijia/qing@0.2.0-8","maintainers":[{"name":"mailhap","email":"mailhap@qq.com"},{"name":"smildlzj","email":"24comic@gmail.com"}],"dist":{"shasum":"f64bf4a89ff8ffe205664f57847bce76c52b8449","tarball":"https://registry.npmjs.org/@yunzhijia/qing/-/qing-0.2.0-8.tgz","fileCount":18,"integrity":"sha512-U/MTpW20sEzmhr6wu3CwT3iLQaYGOG4S8zcxD4x3ABo0OXJpiOwA619BdDl61SQ0Hv1NXEwNBZqCYXnzFn/3Pw==","signatures":[{"sig":"MEYCIQD/HuDAV39lC1z08se9b7isCs6a8jkMD4zz6WA/3KC6vwIhAIFMaD7UHMRRFyqS4CLAnDXPtpJJlO4H/k6t4gHLzWcJ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":276797,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJetnTOCRA9TVsSAnZWagAATtwP/A39p3MQ77PQ51HMdYpt\npIFHxs94VCys35UJR1W8KOK5gWfE/WG70xoVDxHU/ApeWgJXrkj6n7yQUrN/\n8I0IeyWQFf1SIbVzham/uXDYxclpt2MzozPmDR9jTYX7OTDuTrv0j8Or0QMC\nE5sxDO4rMBBEvLt/mYMa6Ew+4AeJD472Y7fNPbPoFB7uSbPEy1ml54R4h5Kx\nX5VGiKRrE9D+B3QSJvQX0K30o/SeUpB1qKf4lVhl3fyIRjaIJUP7fJBSsRqn\nJ4kroKMUB/iPyLZU+uW5ReoUGB1vmfXMr6qvJs6Yes3kKQWRWqaubpiwKyiv\nJ92gTMVFbyXAZ+4s9816+1cNE80rx15MrudVSFpRbXfzS/dNDxuuKFc7r/Df\npo0l45wafHtszg/h4R3/x8WCt4AgO/E8DJXQkThYAg8KZZT9/R9QFiBXSjwa\nQIruJWYPQFauIePnzTCUCZJgRjz8ZIOAMl6x5I8oB5cRJoGzVBRaYAASPKiv\noV/dB69RSJcgIyqOxaDf6AZwaNLj0+G9SNveaSEwXI5qIV3eqTPtVtqvAYmC\n9zImOHjq1bkmtrt4u3G92fPyQOHTHA7rufMIbvp/NR+5iJ+YjFEDY4CZ+JQZ\nm+pnGr7/ifACVlyN2ow4pWnMfzoBiSnEjuD+7GPsNEnkeiHoHkBs/OCmrU9X\nm8cI\r\n=iZQY\r\n-----END PGP SIGNATURE-----\r\n"},"readme":"# qing\r\n> qingjs是为了方便前端人员在云之家环境调用native代码的工具类，兼容新版桌面端、老版桌面端、移动端、微信\r\n\r\n桥测试页面：http://www.yunzhijia.com/public/js/qing/latest/test_qing.html\r\n\r\n## 如何使用\r\n\r\n### 常规使用案例\r\n\r\n* NPM版本\r\n```\r\n  npm install @yunzhijia/qing\r\n```\r\n\r\n* 常规版本\r\n\r\n```html\r\n<!DOCTYPE html>\r\n<html>\r\n<head>\r\n<meta charset=\"utf-8\">\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0,maximum-scale=1.0,user-scalable=no\" />\r\n<title>usecase</title>\r\n</head>\r\n<body>\r\n<!-- 引入qing -->\r\n<script src=\"//static.yunzhijia.com/public/js/qing/latest/qing.js\"></script>\r\n<script>\r\n// 在 qing.config 执行前，所有其它的 ydk api 都不会真正被调用\r\n// 这里是一个简单的配置，其它 API list 请参考详细文档\r\nqing.config({\r\n  debug : false,\r\n  jsApiList : ['checkJsApi', 'share'],\r\n  jsEventList: ['appear', 'disappear'] // 自动绑定事件，会通过document.dispatchEvent分发\r\n});\r\n// 获取个人信息\r\nqing.call('getPersonInfo', {\r\n  success : function(res){}\r\n});\r\n\r\nqing.on('appear', {\r\n  complete: function (res) {},\r\n  error: function (res) {},\r\n  success : function(res){}\r\n});\r\n</script>\r\n</body>\r\n</html>\r\n```\r\n\r\n### 接口调用说明\r\n\r\n所有接口的调用形式为 `qing.call('xxx', {...})`，参数必须是一个对象。\r\n\r\n每个接口除了自身必须的参数外，还支持以下通用参数：\r\n\r\n1. `success`：接口调用成功时执行的回调函数。\r\n1. `error`：接口调用失败时执行的回调函数。\r\n1. `complete`：接口调用完成时执行的回调函数，无论成功或失败都会执行。\r\n\r\n以上所述的回调函数的参数说明，如 `success : function (res) { ... }`，这里的 `res` 为对象，除了每个接口自身返回的数据之外，还有两个通用属性 `code` 和 `errMsg`，其值格式如下：\r\n\r\n1. 调用成功(`success`)：`{code: 200, errMsg: \"\", data: {}}`\r\n1. 调用失败(`error`)：`{code: 500, errMsg: \"不合法的图片文件大小\", data: {}}`\r\n\r\n> **注：** code 类型为数字，非字符串。\r\n\r\n## 接口说明\r\n\r\n### 基础接口\r\n\r\n#### qing.config 获取app信息\r\n\r\n在 qing.config 未成功执行前，其他 api 将无法正常使用（在调用队列里安静的等着，不会被执行）\r\n\r\n```javascript\r\nqing.config({\r\n  debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过 log 打出，仅在 pc 端时才会打印。\r\n  jsApiList: ['api-1', 'api-2', '...'] //必填，需要使用的JS接口列表\r\n});\r\n```\r\n\r\n> 只有在 jsApiList 中明确指定的 API，当前 webview 中才可用。因为某些 API 的初始化需要额外的开销，从而导致资源浪费。\r\n\r\n#### qing.checkJsApi 判断当前客户端版本是否支持指定 API 接口\r\n\r\n用于检测当前客户端支持哪些桥。\r\n\r\n```javascript\r\nqing.checkJsApi({\r\n  jsApiList: [\r\n    \"gotoLightApp\",   // qing.nativeJsBridgeVersion >= 0.9.18\r\n    \"todoList\",       // qing.nativeJsBridgeVersion >= 0.9.80\r\n    \"setBounce\",      // qing.nativeJsBridgeVersion >= 0.9.27, iosOnly\r\n    \"selectLocalFile\" // qing.nativeJsBridgeVersion >= 0.9.30, androidOnly\r\n  ],\r\n  success: function(res){\r\n    console.log(res);\r\n  }\r\n});\r\n\r\n// success返回结果res示例：\r\n{\r\n  \"success\": true,\r\n  \"data\":{\r\n    \"gotoLightApp\": true,\r\n    \"todoList\": false,\r\n    \"setBounce\": true,\r\n    \"selectLocalFile\": false\r\n  }\r\n}\r\n```\r\n\r\n### 通过应用后端返回的签名信息获取ticket\r\n\r\n在活动页或者混合应用中， 可以通过 `qing.call('getTicket')` 取得ticket。\r\n\r\n方法一：\r\n\r\n```javascript\r\nqing.call('getTicket', {\r\n    signUrl: '/path/to/myapp/sign',\r\n    signMethod: 'post',\r\n    success (e) {\r\n        alert(e.data.ticket)\r\n    },\r\n    error (error) {\r\n        alert(error)\r\n    }\r\n})\r\n```\r\n\r\nsignUrl是获取签名的接口，各个轻应用的后端应该提供这样一个接口，这个接口会接收到一个名为url参数（post）\r\n\r\n返回结果的格式必须如下：\r\n\r\n```json\r\n  {\r\n    \"success\": true,\r\n    \"data\": {\r\n        appId: \"\",\r\n        timeStamp: \"\",\r\n        nonceStr: \"\",\r\n        signature: \"\"\r\n    }\r\n  }\r\n```\r\n\r\n方法二：\r\n\r\n如果你通过别的方式（例如页面直出）拿到了签名信息，也可以像下面的例子直接传入。\r\n\r\n```javascript\r\nqing.call('getTicket', {\r\n    timeStamp:'1530867948317',\r\n    signature:'7qaScdppiMKuDoYadUqbZhlZhgw=',\r\n    appId:'101091520',\r\n    nonceStr:'0.7057841489531929',\r\n    success (e) {\r\n        alert(e.data.ticket)\r\n    },\r\n    error (error) {\r\n        alert(error)\r\n    }\r\n})\r\n```\r\n\r\n## 附录1：所有 API 列表\r\n\r\n#### - 与 native 相关的 API\r\n\r\n##### 以下为 base api，也就是对第三方开放的无限制的部分\r\n\r\n1. qing.config\r\n1. qing.checkApi\r\n\r\n#### - qing 中还包含了一些为了便于编码便利而存在的一些辅助性 api\r\n1. qing.version，qing版本号\r\n1. qing.isSupportNativeJsBridge，当前 webview 支持桥\r\n1. qing.nativeJsBridgeVersion，当前客户端桥版本\r\n1. qing.hasOwn，见 `Object.hasOwnProperty`\r\n1. qing.isFunction，是否函数\r\n1. qing.isString，是否字符串\r\n1. qing.isNumber，是否数字\r\n1. qing.isObject，是否对象\r\n1. qing.isArray，是否数组\r\n1. qing.forEach，见 `Array.prototype.forEach`\r\n1. qing.keys，见`Object.keys`\r\n1. qing.ns，把字符串转换为命名空间，`\"a.b.c\"` 1.> `{a:{b:{c:{}}}}`\r\n1. qing.isWX，是否微信客户端\r\n1. qing.isChrome，是否 chrome\r\n1. qing.isFirefox，是否 firefox\r\n1. qing.isOpera，是否 opera\r\n1. qing.isSafari，是否 safari\r\n1. qing.isIe，是否 IE 浏览器，这个用法稍微不一样，如 `qing.isIe() or qing.isIe(6)`\r\n1. qing.isIphone，是否 iphone\r\n1. qing.isIpad，是否 ipad\r\n1. qing.isIpod，是否 ipod\r\n1. qing.isIos，是否 ios 平台\r\n1. qing.isAndroid，是否 Android 平台\r\n1. qing.isAndroidPhone，是否 Android 手机\r\n1. qing.isAndroidTable，是否 Android 平板\r\n1. qing.isBlackberry，是否黑莓\r\n1. qing.isMac，是否 mac 本\r\n1. qing.isWindows，是否 win 系统\r\n1. qing.isWindowsPhone，是否 win 手机\r\n1. qing.isWindowsTable，是否 win 平板\r\n1. qing.isMobile，是否手机\r\n1. qing.isDesktop，是否 PC 机\r\n1. qing.isTouchDevice，是否触屏设备\r\n\r\n## 附录2：全局返回码说明\r\n> **注：** code类型为数字，非字符串。\r\n\r\n|  返回码  |      说明      |\r\n|  :--------  |  :--------|\r\n|   100|  调用成功，并且有多次返回|\r\n|   200|  调用成功|\r\n|   404|  接口不存在|\r\n|   500|  全局调用失败code|\r\n","_npmUser":{"name":"smildlzj","email":"24comic@gmail.com"},"_npmVersion":"6.4.1","description":"> qingjs是为了方便前端人员在云之家环境调用native代码的工具类，兼容新版桌面端、老版桌面端、移动端、微信","directories":{},"_nodeVersion":"8.16.0","_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/qing_0.2.0-8_1589015758262_0.5978944053799318","host":"s3://npm-registry-packages"}},"0.2.0-9":{"name":"@yunzhijia/qing","version":"0.2.0-9","keywords":["yunzhijia","yzj","qingjs","cloudhub","lightapp"],"author":{"name":"yunzhijia"},"license":"","_id":"@yunzhijia/qing@0.2.0-9","maintainers":[{"name":"mailhap","email":"mailhap@qq.com"},{"name":"smildlzj","email":"24comic@gmail.com"}],"dist":{"shasum":"48621ed1e0fd0b678d94229de51abafccb390e1c","tarball":"https://registry.npmjs.org/@yunzhijia/qing/-/qing-0.2.0-9.tgz","fileCount":18,"integrity":"sha512-z2O28GgIqbtYWoo0ITtMMgUqh+CW+8QOQUn2cDftCdqLBhjVQOxZMTQ6JpNfR4qFoop0mqCA4sOGqblGgoWQMg==","signatures":[{"sig":"MEUCIQCD/GQ6IhckwoxSV3cBy6uXI8FHC14hvgiqo1kFJdhLggIgGNuepPT7owDi+A/RfSCSjeLF0by5Iv+z9vsckt5veL8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":276673,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe0ME0CRA9TVsSAnZWagAAVwsP/1BTDZkUzVprLaLGjjGL\nejYFZzOOG+s7e08o0ZuTLtvlfwczywL+qe5mGN9stiMBSOCwm/S2lvQYkOkv\nYEHvy9R8+sJ6uJqFSWEmcHaomK8Q1V3Dh/BeQ3nOgGt/ipcXAk1K0QXWEwop\nqUW1zno9AQZNjb/07BuIn/Rl6LQHGn7N8xwDNkrjdiivB3uQGSFBgAQtIE/h\n1aOIMhwSn2FNUla1vZbfELIJexSBHQW2U2TNRx8FDadZoitEZkwOnmXuW1go\ngBYImulz9Eekr3qS6ZXq2fhwJgfVG2jnNexOZqq2udusFEeCWXWxtAXo7l2D\n5i2y9jl7Xi4VElciyg+Tk0Uc4lIlzOpNE4a7HquIhTntWu5cjVXjvNX7JaJi\n6uX+CrZCekIA2VP4RhYVdUAQR5MWBRHFhKG1s6fX4o32ahc1GkUVQOGMuAJQ\n5bO1Lvft6EObEpa5T1p6K1X2SJQg3OLytri0TeLv7dBbdIsUH0zLaG8kHjEP\nASZp0IVPZAO0TaeLVb5sjba/KhTPQ/gmZ37CpuMWEmd858vM9FoQKaRuBAx4\n8bCKr9YEnfM/X+SYdB2jhckXzhqB8IWD/IhzL0twrvVBIkVRDsd+l1sBpJNy\n1Uju0sFho6KpelkKsS/n92mcDInm5ky8z8DDNRXM0kraaWBRfGwwutP3PP1F\nzTOf\r\n=NOx2\r\n-----END PGP SIGNATURE-----\r\n"},"readme":"# qing\r\n> qingjs是为了方便前端人员在云之家环境调用native代码的工具类，兼容新版桌面端、老版桌面端、移动端、微信\r\n\r\n桥测试页面：http://www.yunzhijia.com/public/js/qing/latest/test_qing.html\r\n\r\n## 如何使用\r\n\r\n### 常规使用案例\r\n\r\n* NPM版本\r\n```\r\n  npm install @yunzhijia/qing\r\n```\r\n\r\n* 常规版本\r\n\r\n```html\r\n<!DOCTYPE html>\r\n<html>\r\n<head>\r\n<meta charset=\"utf-8\">\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0,maximum-scale=1.0,user-scalable=no\" />\r\n<title>usecase</title>\r\n</head>\r\n<body>\r\n<!-- 引入qing -->\r\n<script src=\"//static.yunzhijia.com/public/js/qing/latest/qing.js\"></script>\r\n<script>\r\n// 在 qing.config 执行前，所有其它的 ydk api 都不会真正被调用\r\n// 这里是一个简单的配置，其它 API list 请参考详细文档\r\nqing.config({\r\n  debug : false,\r\n  jsApiList : ['checkJsApi', 'share'],\r\n  jsEventList: ['appear', 'disappear'] // 自动绑定事件，会通过document.dispatchEvent分发\r\n});\r\n// 获取个人信息\r\nqing.call('getPersonInfo', {\r\n  success : function(res){}\r\n});\r\n\r\nqing.on('appear', {\r\n  complete: function (res) {},\r\n  error: function (res) {},\r\n  success : function(res){}\r\n});\r\n</script>\r\n</body>\r\n</html>\r\n```\r\n\r\n### 接口调用说明\r\n\r\n所有接口的调用形式为 `qing.call('xxx', {...})`，参数必须是一个对象。\r\n\r\n每个接口除了自身必须的参数外，还支持以下通用参数：\r\n\r\n1. `success`：接口调用成功时执行的回调函数。\r\n1. `error`：接口调用失败时执行的回调函数。\r\n1. `complete`：接口调用完成时执行的回调函数，无论成功或失败都会执行。\r\n\r\n以上所述的回调函数的参数说明，如 `success : function (res) { ... }`，这里的 `res` 为对象，除了每个接口自身返回的数据之外，还有两个通用属性 `code` 和 `errMsg`，其值格式如下：\r\n\r\n1. 调用成功(`success`)：`{code: 200, errMsg: \"\", data: {}}`\r\n1. 调用失败(`error`)：`{code: 500, errMsg: \"不合法的图片文件大小\", data: {}}`\r\n\r\n> **注：** code 类型为数字，非字符串。\r\n\r\n## 接口说明\r\n\r\n### 基础接口\r\n\r\n#### qing.config 获取app信息\r\n\r\n在 qing.config 未成功执行前，其他 api 将无法正常使用（在调用队列里安静的等着，不会被执行）\r\n\r\n```javascript\r\nqing.config({\r\n  debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过 log 打出，仅在 pc 端时才会打印。\r\n  jsApiList: ['api-1', 'api-2', '...'] //必填，需要使用的JS接口列表\r\n});\r\n```\r\n\r\n> 只有在 jsApiList 中明确指定的 API，当前 webview 中才可用。因为某些 API 的初始化需要额外的开销，从而导致资源浪费。\r\n\r\n#### qing.checkJsApi 判断当前客户端版本是否支持指定 API 接口\r\n\r\n用于检测当前客户端支持哪些桥。\r\n\r\n```javascript\r\nqing.checkJsApi({\r\n  jsApiList: [\r\n    \"gotoLightApp\",   // qing.nativeJsBridgeVersion >= 0.9.18\r\n    \"todoList\",       // qing.nativeJsBridgeVersion >= 0.9.80\r\n    \"setBounce\",      // qing.nativeJsBridgeVersion >= 0.9.27, iosOnly\r\n    \"selectLocalFile\" // qing.nativeJsBridgeVersion >= 0.9.30, androidOnly\r\n  ],\r\n  success: function(res){\r\n    console.log(res);\r\n  }\r\n});\r\n\r\n// success返回结果res示例：\r\n{\r\n  \"success\": true,\r\n  \"data\":{\r\n    \"gotoLightApp\": true,\r\n    \"todoList\": false,\r\n    \"setBounce\": true,\r\n    \"selectLocalFile\": false\r\n  }\r\n}\r\n```\r\n\r\n### 通过应用后端返回的签名信息获取ticket\r\n\r\n在活动页或者混合应用中， 可以通过 `qing.call('getTicket')` 取得ticket。\r\n\r\n方法一：\r\n\r\n```javascript\r\nqing.call('getTicket', {\r\n    signUrl: '/path/to/myapp/sign',\r\n    signMethod: 'post',\r\n    success (e) {\r\n        alert(e.data.ticket)\r\n    },\r\n    error (error) {\r\n        alert(error)\r\n    }\r\n})\r\n```\r\n\r\nsignUrl是获取签名的接口，各个轻应用的后端应该提供这样一个接口，这个接口会接收到一个名为url参数（post）\r\n\r\n返回结果的格式必须如下：\r\n\r\n```json\r\n  {\r\n    \"success\": true,\r\n    \"data\": {\r\n        appId: \"\",\r\n        timeStamp: \"\",\r\n        nonceStr: \"\",\r\n        signature: \"\"\r\n    }\r\n  }\r\n```\r\n\r\n方法二：\r\n\r\n如果你通过别的方式（例如页面直出）拿到了签名信息，也可以像下面的例子直接传入。\r\n\r\n```javascript\r\nqing.call('getTicket', {\r\n    timeStamp:'1530867948317',\r\n    signature:'7qaScdppiMKuDoYadUqbZhlZhgw=',\r\n    appId:'101091520',\r\n    nonceStr:'0.7057841489531929',\r\n    success (e) {\r\n        alert(e.data.ticket)\r\n    },\r\n    error (error) {\r\n        alert(error)\r\n    }\r\n})\r\n```\r\n\r\n## 附录1：所有 API 列表\r\n\r\n#### - 与 native 相关的 API\r\n\r\n##### 以下为 base api，也就是对第三方开放的无限制的部分\r\n\r\n1. qing.config\r\n1. qing.checkApi\r\n\r\n#### - qing 中还包含了一些为了便于编码便利而存在的一些辅助性 api\r\n1. qing.version，qing版本号\r\n1. qing.isSupportNativeJsBridge，当前 webview 支持桥\r\n1. qing.nativeJsBridgeVersion，当前客户端桥版本\r\n1. qing.hasOwn，见 `Object.hasOwnProperty`\r\n1. qing.isFunction，是否函数\r\n1. qing.isString，是否字符串\r\n1. qing.isNumber，是否数字\r\n1. qing.isObject，是否对象\r\n1. qing.isArray，是否数组\r\n1. qing.forEach，见 `Array.prototype.forEach`\r\n1. qing.keys，见`Object.keys`\r\n1. qing.ns，把字符串转换为命名空间，`\"a.b.c\"` 1.> `{a:{b:{c:{}}}}`\r\n1. qing.isWX，是否微信客户端\r\n1. qing.isChrome，是否 chrome\r\n1. qing.isFirefox，是否 firefox\r\n1. qing.isOpera，是否 opera\r\n1. qing.isSafari，是否 safari\r\n1. qing.isIe，是否 IE 浏览器，这个用法稍微不一样，如 `qing.isIe() or qing.isIe(6)`\r\n1. qing.isIphone，是否 iphone\r\n1. qing.isIpad，是否 ipad\r\n1. qing.isIpod，是否 ipod\r\n1. qing.isIos，是否 ios 平台\r\n1. qing.isAndroid，是否 Android 平台\r\n1. qing.isAndroidPhone，是否 Android 手机\r\n1. qing.isAndroidTable，是否 Android 平板\r\n1. qing.isBlackberry，是否黑莓\r\n1. qing.isMac，是否 mac 本\r\n1. qing.isWindows，是否 win 系统\r\n1. qing.isWindowsPhone，是否 win 手机\r\n1. qing.isWindowsTable，是否 win 平板\r\n1. qing.isMobile，是否手机\r\n1. qing.isDesktop，是否 PC 机\r\n1. qing.isTouchDevice，是否触屏设备\r\n\r\n## 附录2：全局返回码说明\r\n> **注：** code类型为数字，非字符串。\r\n\r\n|  返回码  |      说明      |\r\n|  :--------  |  :--------|\r\n|   100|  调用成功，并且有多次返回|\r\n|   200|  调用成功|\r\n|   404|  接口不存在|\r\n|   500|  全局调用失败code|\r\n","_npmUser":{"name":"smildlzj","email":"24comic@gmail.com"},"_npmVersion":"6.12.0","description":"> qingjs是为了方便前端人员在云之家环境调用native代码的工具类，兼容新版桌面端、老版桌面端、移动端、微信","directories":{},"_nodeVersion":"12.13.0","_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/qing_0.2.0-9_1590739251889_0.48356324653626404","host":"s3://npm-registry-packages"}},"0.2.2":{"name":"@yunzhijia/qing","version":"0.2.2","keywords":["yunzhijia","yzj","qingjs","cloudhub","lightapp"],"author":{"name":"yunzhijia"},"license":"","_id":"@yunzhijia/qing@0.2.2","maintainers":[{"name":"mailhap","email":"mailhap@qq.com"},{"name":"smildlzj","email":"24comic@gmail.com"}],"dist":{"shasum":"c459259acbde336b93b83ada5d99b4c5dc83b974","tarball":"https://registry.npmjs.org/@yunzhijia/qing/-/qing-0.2.2.tgz","fileCount":18,"integrity":"sha512-xZX82wrfJpisLaLA2CLeRqPC+WCUz6ffMVoTGC3vfZNjMKDUdaZyMYI9YWSqfYY6xHfLYQ/hU17SWWxXBggEOw==","signatures":[{"sig":"MEUCIQDiURXLpw4bTLu8icz5YFVdbFrXuGumT+KnonPAswYx4QIgLXJvWIhwXEy/w9OQAY7WaPP++zQYQNMA25RJFFOpnMk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":275541,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaBAbCRA9TVsSAnZWagAAAXgP/2HaAcErm/73v+OrVd7m\ndjW03uDHeSZsBm9TedBcS/XyZRRDBlwADqYpEOWWhgyMh0597IfAPsIlb1dE\nyTIcfgmFQNjhTHwgWnsCQnvu1tV6fXnx9lQz+l1uDjppMiNlqO3NmLWMx777\n4XDiJ4oCx2/1sWWSacYJ9cAEbuOhVoJUMlEbDYIr4h3hsFvaPh2JqGtqNRnM\n3t98kojclhnykhlJ8YkAysihRAfA6CE7HZEQfj1aSoQDL1VcfERWaTXDt0ci\nzdhrl5pCnGyCnNFnCqFW1xEF4Rqsz2u4A2z0AmO/aZf1RSXgGQJd1g9L66at\nlq4kvc1EXDW7GsNJ+90huj/GAJZXg/S2iSsM4tlrtKjnXlAG5vDIooEuFUcC\n7osJhmD5Mf/FvvPWXrGjcNbnVuVcs02I3X/uB/9bqXPS9RtzAtkop8Fdjwn+\nbI2wTay3+V1EQ3IE7B4FAIM4ldSgVT3yAvZG8uz9DFh7gBIdVSEZFUKpnffY\nSdPpkMKsDyqXaSxLXV9vAfWIrm2Olay/nXMoUMV1AMjwgYR9BZ0KDWx+n0rb\n23YoUVYKfZ0ylTu/Bpbi7qdSjT7rSDqadHUcXRkclrV+9rPmoI8QReX2iGjQ\nXHaUMP7jO5cR+tcs+pnXIaWehpoKYLMUFuzKZZLxmsqtM6yk4Sge0VxkKahf\n6c1r\r\n=7aie\r\n-----END PGP SIGNATURE-----\r\n"},"readme":"# qing\r\n> qingjs是为了方便前端人员在云之家环境调用native代码的工具类，兼容新版桌面端、老版桌面端、移动端、微信\r\n\r\n桥测试页面：http://www.yunzhijia.com/public/js/qing/latest/test_qing.html\r\n\r\n## 如何使用\r\n\r\n### 常规使用案例\r\n\r\n* NPM版本\r\n```\r\n  npm install @yunzhijia/qing\r\n```\r\n\r\n* 常规版本\r\n\r\n```html\r\n<!DOCTYPE html>\r\n<html>\r\n<head>\r\n<meta charset=\"utf-8\">\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0,maximum-scale=1.0,user-scalable=no\" />\r\n<title>usecase</title>\r\n</head>\r\n<body>\r\n<!-- 引入qing -->\r\n<script src=\"//static.yunzhijia.com/public/js/qing/latest/qing.js\"></script>\r\n<script>\r\n// 在 qing.config 执行前，所有其它的 ydk api 都不会真正被调用\r\n// 这里是一个简单的配置，其它 API list 请参考详细文档\r\nqing.config({\r\n  debug : false,\r\n  jsApiList : ['checkJsApi', 'share'],\r\n  jsEventList: ['appear', 'disappear'] // 自动绑定事件，会通过document.dispatchEvent分发\r\n});\r\n// 获取个人信息\r\nqing.call('getPersonInfo', {\r\n  success : function(res){}\r\n});\r\n\r\nqing.on('appear', {\r\n  complete: function (res) {},\r\n  error: function (res) {},\r\n  success : function(res){}\r\n});\r\n</script>\r\n</body>\r\n</html>\r\n```\r\n\r\n### 接口调用说明\r\n\r\n所有接口的调用形式为 `qing.call('xxx', {...})`，参数必须是一个对象。\r\n\r\n每个接口除了自身必须的参数外，还支持以下通用参数：\r\n\r\n1. `success`：接口调用成功时执行的回调函数。\r\n1. `error`：接口调用失败时执行的回调函数。\r\n1. `complete`：接口调用完成时执行的回调函数，无论成功或失败都会执行。\r\n\r\n以上所述的回调函数的参数说明，如 `success : function (res) { ... }`，这里的 `res` 为对象，除了每个接口自身返回的数据之外，还有两个通用属性 `code` 和 `errMsg`，其值格式如下：\r\n\r\n1. 调用成功(`success`)：`{code: 200, errMsg: \"\", data: {}}`\r\n1. 调用失败(`error`)：`{code: 500, errMsg: \"不合法的图片文件大小\", data: {}}`\r\n\r\n> **注：** code 类型为数字，非字符串。\r\n\r\n## 接口说明\r\n\r\n### 基础接口\r\n\r\n#### qing.config 获取app信息\r\n\r\n在 qing.config 未成功执行前，其他 api 将无法正常使用（在调用队列里安静的等着，不会被执行）\r\n\r\n```javascript\r\nqing.config({\r\n  debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过 log 打出，仅在 pc 端时才会打印。\r\n  jsApiList: ['api-1', 'api-2', '...'] //必填，需要使用的JS接口列表\r\n});\r\n```\r\n\r\n> 只有在 jsApiList 中明确指定的 API，当前 webview 中才可用。因为某些 API 的初始化需要额外的开销，从而导致资源浪费。\r\n\r\n#### qing.checkJsApi 判断当前客户端版本是否支持指定 API 接口\r\n\r\n用于检测当前客户端支持哪些桥。\r\n\r\n```javascript\r\nqing.checkJsApi({\r\n  jsApiList: [\r\n    \"gotoLightApp\",   // qing.nativeJsBridgeVersion >= 0.9.18\r\n    \"todoList\",       // qing.nativeJsBridgeVersion >= 0.9.80\r\n    \"setBounce\",      // qing.nativeJsBridgeVersion >= 0.9.27, iosOnly\r\n    \"selectLocalFile\" // qing.nativeJsBridgeVersion >= 0.9.30, androidOnly\r\n  ],\r\n  success: function(res){\r\n    console.log(res);\r\n  }\r\n});\r\n\r\n// success返回结果res示例：\r\n{\r\n  \"success\": true,\r\n  \"data\":{\r\n    \"gotoLightApp\": true,\r\n    \"todoList\": false,\r\n    \"setBounce\": true,\r\n    \"selectLocalFile\": false\r\n  }\r\n}\r\n```\r\n\r\n### 通过应用后端返回的签名信息获取ticket\r\n\r\n在活动页或者混合应用中， 可以通过 `qing.call('getTicket')` 取得ticket。\r\n\r\n方法一：\r\n\r\n```javascript\r\nqing.call('getTicket', {\r\n    signUrl: '/path/to/myapp/sign',\r\n    signMethod: 'post',\r\n    success (e) {\r\n        alert(e.data.ticket)\r\n    },\r\n    error (error) {\r\n        alert(error)\r\n    }\r\n})\r\n```\r\n\r\nsignUrl是获取签名的接口，各个轻应用的后端应该提供这样一个接口，这个接口会接收到一个名为url参数（post）\r\n\r\n返回结果的格式必须如下：\r\n\r\n```json\r\n  {\r\n    \"success\": true,\r\n    \"data\": {\r\n        appId: \"\",\r\n        timeStamp: \"\",\r\n        nonceStr: \"\",\r\n        signature: \"\"\r\n    }\r\n  }\r\n```\r\n\r\n方法二：\r\n\r\n如果你通过别的方式（例如页面直出）拿到了签名信息，也可以像下面的例子直接传入。\r\n\r\n```javascript\r\nqing.call('getTicket', {\r\n    timeStamp:'1530867948317',\r\n    signature:'7qaScdppiMKuDoYadUqbZhlZhgw=',\r\n    appId:'101091520',\r\n    nonceStr:'0.7057841489531929',\r\n    success (e) {\r\n        alert(e.data.ticket)\r\n    },\r\n    error (error) {\r\n        alert(error)\r\n    }\r\n})\r\n```\r\n\r\n## 附录1：所有 API 列表\r\n\r\n#### - 与 native 相关的 API\r\n\r\n##### 以下为 base api，也就是对第三方开放的无限制的部分\r\n\r\n1. qing.config\r\n1. qing.checkApi\r\n\r\n#### - qing 中还包含了一些为了便于编码便利而存在的一些辅助性 api\r\n1. qing.version，qing版本号\r\n1. qing.isSupportNativeJsBridge，当前 webview 支持桥\r\n1. qing.nativeJsBridgeVersion，当前客户端桥版本\r\n1. qing.hasOwn，见 `Object.hasOwnProperty`\r\n1. qing.isFunction，是否函数\r\n1. qing.isString，是否字符串\r\n1. qing.isNumber，是否数字\r\n1. qing.isObject，是否对象\r\n1. qing.isArray，是否数组\r\n1. qing.forEach，见 `Array.prototype.forEach`\r\n1. qing.keys，见`Object.keys`\r\n1. qing.ns，把字符串转换为命名空间，`\"a.b.c\"` 1.> `{a:{b:{c:{}}}}`\r\n1. qing.isWX，是否微信客户端\r\n1. qing.isChrome，是否 chrome\r\n1. qing.isFirefox，是否 firefox\r\n1. qing.isOpera，是否 opera\r\n1. qing.isSafari，是否 safari\r\n1. qing.isIe，是否 IE 浏览器，这个用法稍微不一样，如 `qing.isIe() or qing.isIe(6)`\r\n1. qing.isIphone，是否 iphone\r\n1. qing.isIpad，是否 ipad\r\n1. qing.isIpod，是否 ipod\r\n1. qing.isIos，是否 ios 平台\r\n1. qing.isAndroid，是否 Android 平台\r\n1. qing.isAndroidPhone，是否 Android 手机\r\n1. qing.isAndroidTable，是否 Android 平板\r\n1. qing.isBlackberry，是否黑莓\r\n1. qing.isMac，是否 mac 本\r\n1. qing.isWindows，是否 win 系统\r\n1. qing.isWindowsPhone，是否 win 手机\r\n1. qing.isWindowsTable，是否 win 平板\r\n1. qing.isMobile，是否手机\r\n1. qing.isDesktop，是否 PC 机\r\n1. qing.isTouchDevice，是否触屏设备\r\n\r\n## 附录2：全局返回码说明\r\n> **注：** code类型为数字，非字符串。\r\n\r\n|  返回码  |      说明      |\r\n|  :--------  |  :--------|\r\n|   100|  调用成功，并且有多次返回|\r\n|   200|  调用成功|\r\n|   404|  接口不存在|\r\n|   500|  全局调用失败code|\r\n","_npmUser":{"name":"smildlzj","email":"24comic@gmail.com"},"_npmVersion":"6.12.0","description":"> qingjs是为了方便前端人员在云之家环境调用native代码的工具类，兼容新版桌面端、老版桌面端、移动端、微信","directories":{},"_nodeVersion":"12.13.0","_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/qing_0.2.2_1600655387434_0.09291202083119243","host":"s3://npm-registry-packages"}},"0.2.2-1":{"name":"@yunzhijia/qing","version":"0.2.2-1","keywords":["yunzhijia","yzj","qingjs","cloudhub","lightapp"],"author":{"name":"yunzhijia"},"license":"","_id":"@yunzhijia/qing@0.2.2-1","maintainers":[{"name":"mailhap","email":"mailhap@qq.com"},{"name":"smildlzj","email":"24comic@gmail.com"}],"dist":{"shasum":"710a7fb3f983077aa6755a127d332f8b511a4cd8","tarball":"https://registry.npmjs.org/@yunzhijia/qing/-/qing-0.2.2-1.tgz","fileCount":18,"integrity":"sha512-hgPahchzKo/NNmW+BFZzeGB39D3eYk7tTS83kku3yj/oo5aFaD03KjZ/BpkhJD6WgzEnsgIY85QT9fow6zlP4g==","signatures":[{"sig":"MEQCIEclbkVJ06iIeQc+5EcVkdRsk3mZvfjtKp61s2DXVSy6AiAl5Eglyx86V5suZMGwbeX2FTy+mpv8++0G9utVMiLNQA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":275559,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaHSRCRA9TVsSAnZWagAARvYQAKPqBImNm9dil1lCt5U4\nDvS3JGEG6gmZpM3iac23AHYKfspb9gNycdwxEzk2cbAGxLhW/4mo0kug51ur\ntMeuiE7rtKL8hCCQvtRCyv+Gb76byPHdy4XQFpdudPf5G5XX1pDkInVIyPt9\nhtgTSK0igCG3gH0eXCb9THerVuwB6QVuhoDMfDdNkFQnrsGrQDtkqHzbmgFT\njROZ+flu9RTxlv2m77m/jG30dAu33AW7NhQm6B9tXkDe9fRXU1WyCYYCynJu\nKU06M9STMWHS2C4v1oUOkZW89J3A6S/jGm/1gCbVce7DKCdeq2egwzYHXuK5\nZNwdLCg+hG3akTOBsY9pLN2xQra9ONvgyYNm4ByjR6N7Icb8mnEg48N0A/OJ\n6+k237rbaBEOHbmXBdDZt6qqcl80N/CeatNmPEaf1F+Mb+CsRSTRvTajZMOK\nj1b6s51CUw3IiOePfgbkG8Ufoe4yA4hn+/2k+VNrmFvurv+1Q2OC1hzmAg/I\n5E4Fe2ejBRp18P+8mwnCX46LGtSxPnY4IK546xmYFKKmycvjOaWlIMMcfb+d\nSgrmYCS9mwcoRIpceZFK5086bn1F1iMNYcVCTlr80yiGA57efcOzRO3pWUSC\nAqGALXZEekSRyPvH48skQnX6grzjYNthmKdky6KoB2UvDCPbcSbZVQWtAtfo\nhppb\r\n=a9yC\r\n-----END PGP SIGNATURE-----\r\n"},"readme":"# qing\r\n> qingjs是为了方便前端人员在云之家环境调用native代码的工具类，兼容新版桌面端、老版桌面端、移动端、微信\r\n\r\n桥测试页面：http://www.yunzhijia.com/public/js/qing/latest/test_qing.html\r\n\r\n## 如何使用\r\n\r\n### 常规使用案例\r\n\r\n* NPM版本\r\n```\r\n  npm install @yunzhijia/qing\r\n```\r\n\r\n* 常规版本\r\n\r\n```html\r\n<!DOCTYPE html>\r\n<html>\r\n<head>\r\n<meta charset=\"utf-8\">\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0,maximum-scale=1.0,user-scalable=no\" />\r\n<title>usecase</title>\r\n</head>\r\n<body>\r\n<!-- 引入qing -->\r\n<script src=\"//static.yunzhijia.com/public/js/qing/latest/qing.js\"></script>\r\n<script>\r\n// 在 qing.config 执行前，所有其它的 ydk api 都不会真正被调用\r\n// 这里是一个简单的配置，其它 API list 请参考详细文档\r\nqing.config({\r\n  debug : false,\r\n  jsApiList : ['checkJsApi', 'share'],\r\n  jsEventList: ['appear', 'disappear'] // 自动绑定事件，会通过document.dispatchEvent分发\r\n});\r\n// 获取个人信息\r\nqing.call('getPersonInfo', {\r\n  success : function(res){}\r\n});\r\n\r\nqing.on('appear', {\r\n  complete: function (res) {},\r\n  error: function (res) {},\r\n  success : function(res){}\r\n});\r\n</script>\r\n</body>\r\n</html>\r\n```\r\n\r\n### 接口调用说明\r\n\r\n所有接口的调用形式为 `qing.call('xxx', {...})`，参数必须是一个对象。\r\n\r\n每个接口除了自身必须的参数外，还支持以下通用参数：\r\n\r\n1. `success`：接口调用成功时执行的回调函数。\r\n1. `error`：接口调用失败时执行的回调函数。\r\n1. `complete`：接口调用完成时执行的回调函数，无论成功或失败都会执行。\r\n\r\n以上所述的回调函数的参数说明，如 `success : function (res) { ... }`，这里的 `res` 为对象，除了每个接口自身返回的数据之外，还有两个通用属性 `code` 和 `errMsg`，其值格式如下：\r\n\r\n1. 调用成功(`success`)：`{code: 200, errMsg: \"\", data: {}}`\r\n1. 调用失败(`error`)：`{code: 500, errMsg: \"不合法的图片文件大小\", data: {}}`\r\n\r\n> **注：** code 类型为数字，非字符串。\r\n\r\n## 接口说明\r\n\r\n### 基础接口\r\n\r\n#### qing.config 获取app信息\r\n\r\n在 qing.config 未成功执行前，其他 api 将无法正常使用（在调用队列里安静的等着，不会被执行）\r\n\r\n```javascript\r\nqing.config({\r\n  debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过 log 打出，仅在 pc 端时才会打印。\r\n  jsApiList: ['api-1', 'api-2', '...'] //必填，需要使用的JS接口列表\r\n});\r\n```\r\n\r\n> 只有在 jsApiList 中明确指定的 API，当前 webview 中才可用。因为某些 API 的初始化需要额外的开销，从而导致资源浪费。\r\n\r\n#### qing.checkJsApi 判断当前客户端版本是否支持指定 API 接口\r\n\r\n用于检测当前客户端支持哪些桥。\r\n\r\n```javascript\r\nqing.checkJsApi({\r\n  jsApiList: [\r\n    \"gotoLightApp\",   // qing.nativeJsBridgeVersion >= 0.9.18\r\n    \"todoList\",       // qing.nativeJsBridgeVersion >= 0.9.80\r\n    \"setBounce\",      // qing.nativeJsBridgeVersion >= 0.9.27, iosOnly\r\n    \"selectLocalFile\" // qing.nativeJsBridgeVersion >= 0.9.30, androidOnly\r\n  ],\r\n  success: function(res){\r\n    console.log(res);\r\n  }\r\n});\r\n\r\n// success返回结果res示例：\r\n{\r\n  \"success\": true,\r\n  \"data\":{\r\n    \"gotoLightApp\": true,\r\n    \"todoList\": false,\r\n    \"setBounce\": true,\r\n    \"selectLocalFile\": false\r\n  }\r\n}\r\n```\r\n\r\n### 通过应用后端返回的签名信息获取ticket\r\n\r\n在活动页或者混合应用中， 可以通过 `qing.call('getTicket')` 取得ticket。\r\n\r\n方法一：\r\n\r\n```javascript\r\nqing.call('getTicket', {\r\n    signUrl: '/path/to/myapp/sign',\r\n    signMethod: 'post',\r\n    success (e) {\r\n        alert(e.data.ticket)\r\n    },\r\n    error (error) {\r\n        alert(error)\r\n    }\r\n})\r\n```\r\n\r\nsignUrl是获取签名的接口，各个轻应用的后端应该提供这样一个接口，这个接口会接收到一个名为url参数（post）\r\n\r\n返回结果的格式必须如下：\r\n\r\n```json\r\n  {\r\n    \"success\": true,\r\n    \"data\": {\r\n        appId: \"\",\r\n        timeStamp: \"\",\r\n        nonceStr: \"\",\r\n        signature: \"\"\r\n    }\r\n  }\r\n```\r\n\r\n方法二：\r\n\r\n如果你通过别的方式（例如页面直出）拿到了签名信息，也可以像下面的例子直接传入。\r\n\r\n```javascript\r\nqing.call('getTicket', {\r\n    timeStamp:'1530867948317',\r\n    signature:'7qaScdppiMKuDoYadUqbZhlZhgw=',\r\n    appId:'101091520',\r\n    nonceStr:'0.7057841489531929',\r\n    success (e) {\r\n        alert(e.data.ticket)\r\n    },\r\n    error (error) {\r\n        alert(error)\r\n    }\r\n})\r\n```\r\n\r\n## 附录1：所有 API 列表\r\n\r\n#### - 与 native 相关的 API\r\n\r\n##### 以下为 base api，也就是对第三方开放的无限制的部分\r\n\r\n1. qing.config\r\n1. qing.checkApi\r\n\r\n#### - qing 中还包含了一些为了便于编码便利而存在的一些辅助性 api\r\n1. qing.version，qing版本号\r\n1. qing.isSupportNativeJsBridge，当前 webview 支持桥\r\n1. qing.nativeJsBridgeVersion，当前客户端桥版本\r\n1. qing.hasOwn，见 `Object.hasOwnProperty`\r\n1. qing.isFunction，是否函数\r\n1. qing.isString，是否字符串\r\n1. qing.isNumber，是否数字\r\n1. qing.isObject，是否对象\r\n1. qing.isArray，是否数组\r\n1. qing.forEach，见 `Array.prototype.forEach`\r\n1. qing.keys，见`Object.keys`\r\n1. qing.ns，把字符串转换为命名空间，`\"a.b.c\"` 1.> `{a:{b:{c:{}}}}`\r\n1. qing.isWX，是否微信客户端\r\n1. qing.isChrome，是否 chrome\r\n1. qing.isFirefox，是否 firefox\r\n1. qing.isOpera，是否 opera\r\n1. qing.isSafari，是否 safari\r\n1. qing.isIe，是否 IE 浏览器，这个用法稍微不一样，如 `qing.isIe() or qing.isIe(6)`\r\n1. qing.isIphone，是否 iphone\r\n1. qing.isIpad，是否 ipad\r\n1. qing.isIpod，是否 ipod\r\n1. qing.isIos，是否 ios 平台\r\n1. qing.isAndroid，是否 Android 平台\r\n1. qing.isAndroidPhone，是否 Android 手机\r\n1. qing.isAndroidTable，是否 Android 平板\r\n1. qing.isBlackberry，是否黑莓\r\n1. qing.isMac，是否 mac 本\r\n1. qing.isWindows，是否 win 系统\r\n1. qing.isWindowsPhone，是否 win 手机\r\n1. qing.isWindowsTable，是否 win 平板\r\n1. qing.isMobile，是否手机\r\n1. qing.isDesktop，是否 PC 机\r\n1. qing.isTouchDevice，是否触屏设备\r\n\r\n## 附录2：全局返回码说明\r\n> **注：** code类型为数字，非字符串。\r\n\r\n|  返回码  |      说明      |\r\n|  :--------  |  :--------|\r\n|   100|  调用成功，并且有多次返回|\r\n|   200|  调用成功|\r\n|   404|  接口不存在|\r\n|   500|  全局调用失败code|\r\n","_npmUser":{"name":"smildlzj","email":"24comic@gmail.com"},"_npmVersion":"6.12.0","description":"> qingjs是为了方便前端人员在云之家环境调用native代码的工具类，兼容新版桌面端、老版桌面端、移动端、微信","directories":{},"_nodeVersion":"12.13.0","_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/qing_0.2.2-1_1600681104919_0.31482290753401876","host":"s3://npm-registry-packages"}},"0.2.2-2":{"name":"@yunzhijia/qing","version":"0.2.2-2","keywords":["yunzhijia","yzj","qingjs","cloudhub","lightapp"],"author":{"name":"yunzhijia"},"license":"","_id":"@yunzhijia/qing@0.2.2-2","maintainers":[{"name":"mailhap","email":"mailhap@qq.com"},{"name":"smildlzj","email":"24comic@gmail.com"}],"dist":{"shasum":"9a48ae87de618874838eb0d0a918d9a8251533d3","tarball":"https://registry.npmjs.org/@yunzhijia/qing/-/qing-0.2.2-2.tgz","fileCount":18,"integrity":"sha512-EfiduKfSyCCw1J7/eSTVR1osoebWkFOFugZPX4Sm1fvl/Qr47V+tC0CqF/4I/ChFIZobOCnB/GO0UHHmOsNGTA==","signatures":[{"sig":"MEUCIHjrhjWaalXVUu32nHYDnw4cZyUYGosRZY0su7tXDHizAiEAmwWCgA034DpzkKusYz2XjOaL9cgaxLdwAVHJeiaNSR8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":275573,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaIbvCRA9TVsSAnZWagAA+vUP/0rd0AtJ8j+kfC0lEhRY\nlQtgwVHfm7v/PY+t2qwB0DCufpeQxLGWevZQ0XUuy8QHMI8cTYjRQ8bQ10Gg\n8rMR3Y1gsZYNbJkNS99zorQaKBlf/vf1ry7ytp8h/Fg8v4OwJ9jy+IFUzoWG\nsw6YaLVjdlo3kMqjjTBEkSYnNhq/PMLFw4l4rgvnHH92rXgmrlmnl+zTnlbn\nwCBc4yNyZQEkFyzcd1USCT28N1AAFDzz/AGnYhhaySaTFN4cmZALj8/Jgplv\nEVPIkWmMZaED4x+eXJZgtS8O5s0zor8zBzebyCw/bG6Xs+/PhNprYIg4nMQT\nn0bFdqitInXu3TBni1LyprLvTOfro7p/+JvVe9Qojl99MrKTRgIVuSYCmTx2\nbMqssMLidQc4JzEhQWavqtm1Pnr1Y9dHA2RI8kLELnCrgj0fHbeKNHLR2p5f\nf/3L5/nkZ2B8SDOStHP/VojUtTe1TpU+UXd084ds0u5ZQNaiNvRH5nuiEFFy\nMdZzwUD+GWeJVPXCkqdubc74WvmeaevgBxBLlaiHN78pyvyz8FvSiE4GWj8H\n3f2M/Se2nNUyuWM/TM3JcofM0vM8/8WyROTl88Y3f8gLCyBACZeB+vbSNR34\nFVwoTCsdrvxt4aWCiKcxP/xnnqriRXJG7PzhxxVNew9OjQBse+Uu/ggCSY5Q\noGAR\r\n=7pnM\r\n-----END PGP SIGNATURE-----\r\n"},"readme":"# qing\r\n> qingjs是为了方便前端人员在云之家环境调用native代码的工具类，兼容新版桌面端、老版桌面端、移动端、微信\r\n\r\n桥测试页面：http://www.yunzhijia.com/public/js/qing/latest/test_qing.html\r\n\r\n## 如何使用\r\n\r\n### 常规使用案例\r\n\r\n* NPM版本\r\n```\r\n  npm install @yunzhijia/qing\r\n```\r\n\r\n* 常规版本\r\n\r\n```html\r\n<!DOCTYPE html>\r\n<html>\r\n<head>\r\n<meta charset=\"utf-8\">\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0,maximum-scale=1.0,user-scalable=no\" />\r\n<title>usecase</title>\r\n</head>\r\n<body>\r\n<!-- 引入qing -->\r\n<script src=\"//static.yunzhijia.com/public/js/qing/latest/qing.js\"></script>\r\n<script>\r\n// 在 qing.config 执行前，所有其它的 ydk api 都不会真正被调用\r\n// 这里是一个简单的配置，其它 API list 请参考详细文档\r\nqing.config({\r\n  debug : false,\r\n  jsApiList : ['checkJsApi', 'share'],\r\n  jsEventList: ['appear', 'disappear'] // 自动绑定事件，会通过document.dispatchEvent分发\r\n});\r\n// 获取个人信息\r\nqing.call('getPersonInfo', {\r\n  success : function(res){}\r\n});\r\n\r\nqing.on('appear', {\r\n  complete: function (res) {},\r\n  error: function (res) {},\r\n  success : function(res){}\r\n});\r\n</script>\r\n</body>\r\n</html>\r\n```\r\n\r\n### 接口调用说明\r\n\r\n所有接口的调用形式为 `qing.call('xxx', {...})`，参数必须是一个对象。\r\n\r\n每个接口除了自身必须的参数外，还支持以下通用参数：\r\n\r\n1. `success`：接口调用成功时执行的回调函数。\r\n1. `error`：接口调用失败时执行的回调函数。\r\n1. `complete`：接口调用完成时执行的回调函数，无论成功或失败都会执行。\r\n\r\n以上所述的回调函数的参数说明，如 `success : function (res) { ... }`，这里的 `res` 为对象，除了每个接口自身返回的数据之外，还有两个通用属性 `code` 和 `errMsg`，其值格式如下：\r\n\r\n1. 调用成功(`success`)：`{code: 200, errMsg: \"\", data: {}}`\r\n1. 调用失败(`error`)：`{code: 500, errMsg: \"不合法的图片文件大小\", data: {}}`\r\n\r\n> **注：** code 类型为数字，非字符串。\r\n\r\n## 接口说明\r\n\r\n### 基础接口\r\n\r\n#### qing.config 获取app信息\r\n\r\n在 qing.config 未成功执行前，其他 api 将无法正常使用（在调用队列里安静的等着，不会被执行）\r\n\r\n```javascript\r\nqing.config({\r\n  debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过 log 打出，仅在 pc 端时才会打印。\r\n  jsApiList: ['api-1', 'api-2', '...'] //必填，需要使用的JS接口列表\r\n});\r\n```\r\n\r\n> 只有在 jsApiList 中明确指定的 API，当前 webview 中才可用。因为某些 API 的初始化需要额外的开销，从而导致资源浪费。\r\n\r\n#### qing.checkJsApi 判断当前客户端版本是否支持指定 API 接口\r\n\r\n用于检测当前客户端支持哪些桥。\r\n\r\n```javascript\r\nqing.checkJsApi({\r\n  jsApiList: [\r\n    \"gotoLightApp\",   // qing.nativeJsBridgeVersion >= 0.9.18\r\n    \"todoList\",       // qing.nativeJsBridgeVersion >= 0.9.80\r\n    \"setBounce\",      // qing.nativeJsBridgeVersion >= 0.9.27, iosOnly\r\n    \"selectLocalFile\" // qing.nativeJsBridgeVersion >= 0.9.30, androidOnly\r\n  ],\r\n  success: function(res){\r\n    console.log(res);\r\n  }\r\n});\r\n\r\n// success返回结果res示例：\r\n{\r\n  \"success\": true,\r\n  \"data\":{\r\n    \"gotoLightApp\": true,\r\n    \"todoList\": false,\r\n    \"setBounce\": true,\r\n    \"selectLocalFile\": false\r\n  }\r\n}\r\n```\r\n\r\n### 通过应用后端返回的签名信息获取ticket\r\n\r\n在活动页或者混合应用中， 可以通过 `qing.call('getTicket')` 取得ticket。\r\n\r\n方法一：\r\n\r\n```javascript\r\nqing.call('getTicket', {\r\n    signUrl: '/path/to/myapp/sign',\r\n    signMethod: 'post',\r\n    success (e) {\r\n        alert(e.data.ticket)\r\n    },\r\n    error (error) {\r\n        alert(error)\r\n    }\r\n})\r\n```\r\n\r\nsignUrl是获取签名的接口，各个轻应用的后端应该提供这样一个接口，这个接口会接收到一个名为url参数（post）\r\n\r\n返回结果的格式必须如下：\r\n\r\n```json\r\n  {\r\n    \"success\": true,\r\n    \"data\": {\r\n        appId: \"\",\r\n        timeStamp: \"\",\r\n        nonceStr: \"\",\r\n        signature: \"\"\r\n    }\r\n  }\r\n```\r\n\r\n方法二：\r\n\r\n如果你通过别的方式（例如页面直出）拿到了签名信息，也可以像下面的例子直接传入。\r\n\r\n```javascript\r\nqing.call('getTicket', {\r\n    timeStamp:'1530867948317',\r\n    signature:'7qaScdppiMKuDoYadUqbZhlZhgw=',\r\n    appId:'101091520',\r\n    nonceStr:'0.7057841489531929',\r\n    success (e) {\r\n        alert(e.data.ticket)\r\n    },\r\n    error (error) {\r\n        alert(error)\r\n    }\r\n})\r\n```\r\n\r\n## 附录1：所有 API 列表\r\n\r\n#### - 与 native 相关的 API\r\n\r\n##### 以下为 base api，也就是对第三方开放的无限制的部分\r\n\r\n1. qing.config\r\n1. qing.checkApi\r\n\r\n#### - qing 中还包含了一些为了便于编码便利而存在的一些辅助性 api\r\n1. qing.version，qing版本号\r\n1. qing.isSupportNativeJsBridge，当前 webview 支持桥\r\n1. qing.nativeJsBridgeVersion，当前客户端桥版本\r\n1. qing.hasOwn，见 `Object.hasOwnProperty`\r\n1. qing.isFunction，是否函数\r\n1. qing.isString，是否字符串\r\n1. qing.isNumber，是否数字\r\n1. qing.isObject，是否对象\r\n1. qing.isArray，是否数组\r\n1. qing.forEach，见 `Array.prototype.forEach`\r\n1. qing.keys，见`Object.keys`\r\n1. qing.ns，把字符串转换为命名空间，`\"a.b.c\"` 1.> `{a:{b:{c:{}}}}`\r\n1. qing.isWX，是否微信客户端\r\n1. qing.isChrome，是否 chrome\r\n1. qing.isFirefox，是否 firefox\r\n1. qing.isOpera，是否 opera\r\n1. qing.isSafari，是否 safari\r\n1. qing.isIe，是否 IE 浏览器，这个用法稍微不一样，如 `qing.isIe() or qing.isIe(6)`\r\n1. qing.isIphone，是否 iphone\r\n1. qing.isIpad，是否 ipad\r\n1. qing.isIpod，是否 ipod\r\n1. qing.isIos，是否 ios 平台\r\n1. qing.isAndroid，是否 Android 平台\r\n1. qing.isAndroidPhone，是否 Android 手机\r\n1. qing.isAndroidTable，是否 Android 平板\r\n1. qing.isBlackberry，是否黑莓\r\n1. qing.isMac，是否 mac 本\r\n1. qing.isWindows，是否 win 系统\r\n1. qing.isWindowsPhone，是否 win 手机\r\n1. qing.isWindowsTable，是否 win 平板\r\n1. qing.isMobile，是否手机\r\n1. qing.isDesktop，是否 PC 机\r\n1. qing.isTouchDevice，是否触屏设备\r\n\r\n## 附录2：全局返回码说明\r\n> **注：** code类型为数字，非字符串。\r\n\r\n|  返回码  |      说明      |\r\n|  :--------  |  :--------|\r\n|   100|  调用成功，并且有多次返回|\r\n|   200|  调用成功|\r\n|   404|  接口不存在|\r\n|   500|  全局调用失败code|\r\n","_npmUser":{"name":"smildlzj","email":"24comic@gmail.com"},"_npmVersion":"6.12.0","description":"> qingjs是为了方便前端人员在云之家环境调用native代码的工具类，兼容新版桌面端、老版桌面端、移动端、微信","directories":{},"_nodeVersion":"12.13.0","_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/qing_0.2.2-2_1600685806748_0.23071458638114617","host":"s3://npm-registry-packages"}},"0.2.3":{"name":"@yunzhijia/qing","version":"0.2.3","keywords":["yunzhijia","yzj","qingjs","cloudhub","lightapp"],"author":{"name":"yunzhijia"},"license":"","_id":"@yunzhijia/qing@0.2.3","maintainers":[{"name":"smildlzj","email":"24comic@gmail.com"},{"name":"mailhap","email":"mailhap@qq.com"},{"name":"joveyzheng","email":"jovey.zheng@gmail.com"}],"dist":{"shasum":"0a0f80bf8993fef1987ed60559dc365a16eb1099","tarball":"https://registry.npmjs.org/@yunzhijia/qing/-/qing-0.2.3.tgz","fileCount":21,"integrity":"sha512-gNfILnGKh/bRmDT3476N6McxcTw8glXgircypfc8V9qMmZv6fQMeYfVghoZm1K6s2rfma7Z2VArPbBebha4iNw==","signatures":[{"sig":"MEYCIQCsbtZFwvDUZHOmgRZhiGipieScR/P1F22hdcgouasg+AIhAM7l3c5g1Tz73ZWeYzV5y4N8EHe4iKoVbETlPHySI2Tq","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":378932,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2iRoCRA9TVsSAnZWagAABs8P/2sWgjSyWQ4/+OvBWB4e\nzh6CM0YwOSLoX0WoZ0cge3bvI1EOWyVFr7AGVXYEhy/fDTJJgbXeE2nIfpLv\ndfmPpAXszhG9UUs66yUjSaC3AMvwMon4gE/MXdl0ClEpPMxsUygxRn3BvHM1\nkeuUiyovTBZUam4sZthpb/ClMSo5YMGILuufQ01JhagqDO6N+3WunfORqtCm\nEVCDvVuMMoQoHc418mKqFekQzkeKWCQkfWCin5QfD9Cnw/v5PHNN417IR3aV\nSM7nJHyhl2NrEStGTcNgiT8QmR0J1sJuHksvAMAVu0LGyOYhvHShrPC86UXZ\nF87pmU8jBHa07VWb/WfbuoAYUqoCtDIRAue0BtqYqM7IpggSvm22CHEc15Cg\nvtFdCwbLUXw34BjkEJ/8lkYoAfA8qEqe4SM5D/JSWWSBPKDDKYinVsGFnSDp\nFprS6gw6pETaMya0bqGdrD8GN3GfE8PUPPjh6sH/tq2f6dOpu00eKrEWB9Ja\nwbMXsw4MQmhbMaxP/BBg2ZXRrlK/3H4jjIrFjNVoWzSlRol1TD1qe8Y1Z5m1\nkzuKmLGLMUxw2ZM5Lhft0ozufTig1qRWu5fxwqA5pbnD530KVv+DFNSeQNy4\nB2UG9uW6aWzyokDKViUhY96EvwvZ6zG4+2DcN1naO0WcNxLt5gfB/EO1GUTd\na3JT\r\n=7ks2\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"smildlzj","email":"24comic@gmail.com"},"_npmVersion":"6.12.0","description":"> qingjs是为了方便前端人员在云之家环境调用native代码的工具类，兼容新版桌面端、老版桌面端、移动端、微信","directories":{},"_nodeVersion":"12.13.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qing_0.2.3_1632363641642_0.0810390814849431","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@yunzhijia/qing","version":"1.0.1","keywords":["yunzhijia","yzj","qingjs","cloudhub","lightapp"],"author":{"name":"yunzhijia"},"license":"","_id":"@yunzhijia/qing@1.0.1","maintainers":[{"name":"smildlzj","email":"24comic@gmail.com"},{"name":"mailhap","email":"mailhap@qq.com"},{"name":"joveyzheng","email":"jovey.zheng@gmail.com"}],"dist":{"shasum":"75e7d17b51a844eb1174d3a9e14fdef0d0cbac29","tarball":"https://registry.npmjs.org/@yunzhijia/qing/-/qing-1.0.1.tgz","fileCount":22,"integrity":"sha512-O/fVlsAKdYZ/SCGgCirlB7RM392CMqe0vYwWhtn58cOyTj5w1zkdu5VeioPfg9/0NYlflbm6SbKhtZZf6Yyf1Q==","signatures":[{"sig":"MEYCIQCPv4/6lUyPkh7nFqaU1zYfTEtRkt1FWA9avMcgE+ofeQIhAOtguyuDUE/XjL7Kh461PnEQYUVNUI4Ti4Cf12uP2cG8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":263524},"main":"dist/qing.js","gitHead":"1a58397c0232bfe08a9dbea26d99d0dd2cb89a3f","scripts":{"dev":"sh tools/scripts/server.sh","docs":"http-server docs --p 4000","test":"sh tools/scripts/test.sh","build":"yun-pack --task=build --profile=production","build:npm":"yun-pack --task=build --profile=npm","build:test":"sh tools/scripts/build.sh test","publish:beta":"npm publish --registry https://registry.npmjs.org --access=public --tag beta dist","build:miniapp":"yun-pack --task=build --profile=miniapp","publish:latest":"npm publish --registry https://registry.npmjs.org --access=public dist"},"_npmUser":{"name":"smildlzj","email":"24comic@gmail.com"},"_npmVersion":"8.11.0","description":"> qingjs是为了方便前端人员在云之家环境调用native代码的工具类，兼容新版桌面端、老版桌面端、移动端、微信","directories":{},"_nodeVersion":"16.15.1","dependencies":{"cross-fetch":"^3.1.5","es6-promise":"^4.2.8","localforage":"^1.9.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^14.1.1","chai":"^4.2.0","sass":"1.43.4","mocha":"^6.2.2","eslint":"^7.20.0","webpack":"^5.75.0","yun-pack":"^0.1.1","clean-css":"^5.3.1","cross-env":"^4.0.0","uglify-es":"^3.3.9","@babel/cli":"^7.20.7","css-loader":"^6.7.3","dot-loader":"^0.1.1","@babel/core":"^7.20.7","@babel/node":"^7.20.7","file-loader":"^6.2.0","http-server":"^0.11.1","mochawesome":"^4.1.0","sass-loader":"7.3.1","babel-loader":"^8.2.2","loader-utils":"^2.0.0","style-loader":"^3.3.1","eslint-loader":"^4.0.2","webpack-merge":"^5.8.0","@babel/preset-env":"^7.20.2","eslint-plugin-html":"^6.1.1","@babel/eslint-parser":"^7.15.7","babel-plugin-istanbul":"^6.1.1","eslint-plugin-promise":"^4.2.1","webpack-dev-middleware":"^6.0.1","webpack-hot-middleware":"^2.22.3","mini-css-extract-plugin":"^2.7.2","eslint-friendly-formatter":"^2.0.7","@istanbuljs/nyc-config-babel":"^3.0.0","string-replace-webpack-plugin":"^0.1.3","friendly-errors-webpack-plugin":"^1.7.0"},"optionalDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/qing_1.0.1_1694756419657_0.7783383659101291","host":"s3://npm-registry-packages"}}},"time":{"created":"2020-05-02T09:29:42.190Z","modified":"2026-08-12T08:16:01.767Z","0.2.0-2":"2020-05-02T09:22:03.712Z","0.2.0-3":"2020-05-02T09:29:42.498Z","0.2.0-4":"2020-05-02T09:38:25.367Z","0.2.0-5":"2020-05-02T10:08:33.965Z","0.2.0-6":"2020-05-09T03:39:48.426Z","0.2.0-7":"2020-05-09T03:42:55.006Z","0.2.0-8":"2020-05-09T09:15:58.384Z","0.2.0-9":"2020-05-29T08:00:52.211Z","0.2.2":"2020-09-21T02:29:47.607Z","0.2.2-1":"2020-09-21T09:38:25.173Z","0.2.2-2":"2020-09-21T10:56:47.000Z","0.2.3":"2021-09-23T02:20:41.837Z","1.0.1":"2023-09-15T05:40:19.995Z"},"author":{"name":"yunzhijia"},"keywords":["yunzhijia","yzj","qingjs","cloudhub","lightapp"],"description":"> qingjs是为了方便前端人员在云之家环境调用native代码的工具类，兼容新版桌面端、老版桌面端、移动端、微信","maintainers":[{"email":"24comic@gmail.com","name":"smildlzj"}],"readme":"# qing\r\n> qingjs是为了方便前端人员在云之家环境调用native代码的工具类，兼容新版桌面端、老版桌面端、移动端、微信\r\n\r\n桥测试页面：http://www.yunzhijia.com/public/js/qing/latest/test_qing.html\r\n\r\n## 如何使用\r\n\r\n### 常规使用案例\r\n\r\n* NPM版本\r\n```\r\n  npm install @yunzhijia/qing\r\n  // QingJS资源请求路径，可以是CDN地址\r\n  qing.assertHost = 'https://static.yunzhijia.com' // 这改为云之家服务域名\r\n```\r\n\r\n* 常规版本\r\n\r\n```html\r\n<!DOCTYPE html>\r\n<html>\r\n<head>\r\n<meta charset=\"utf-8\">\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0,maximum-scale=1.0,user-scalable=no\" />\r\n<title>usecase</title>\r\n</head>\r\n<body>\r\n<!-- 引入qing -->\r\n<script src=\"//static.yunzhijia.com/public/js/qing/latest/qing.js\"></script>\r\n<script>\r\n// 在 qing.config 执行前，所有其它的 ydk api 都不会真正被调用\r\n// 这里是一个简单的配置，其它 API list 请参考详细文档\r\nqing.config({\r\n  debug : false,\r\n  jsApiList : ['checkJsApi', 'share'],\r\n  jsEventList: ['appear', 'disappear'] // 自动绑定事件，会通过document.dispatchEvent分发\r\n});\r\n// 获取个人信息\r\nqing.call('getPersonInfo', {\r\n  success : function(res){}\r\n});\r\n\r\nqing.on('appear', {\r\n  complete: function (res) {},\r\n  error: function (res) {},\r\n  success : function(res){}\r\n});\r\n</script>\r\n</body>\r\n</html>\r\n```\r\n\r\n### 接口调用说明\r\n\r\n所有接口的调用形式为 `qing.call('xxx', {...})`，参数必须是一个对象。\r\n\r\n每个接口除了自身必须的参数外，还支持以下通用参数：\r\n\r\n1. `success`：接口调用成功时执行的回调函数。\r\n1. `error`：接口调用失败时执行的回调函数。\r\n1. `complete`：接口调用完成时执行的回调函数，无论成功或失败都会执行。\r\n\r\n以上所述的回调函数的参数说明，如 `success : function (res) { ... }`，这里的 `res` 为对象，除了每个接口自身返回的数据之外，还有两个通用属性 `code` 和 `errMsg`，其值格式如下：\r\n\r\n1. 调用成功(`success`)：`{code: 200, errMsg: \"\", data: {}}`\r\n1. 调用失败(`error`)：`{code: 500, errMsg: \"不合法的图片文件大小\", data: {}}`\r\n\r\n> **注：** code 类型为数字，非字符串。\r\n\r\n## 接口说明\r\n\r\n### 基础接口\r\n\r\n#### qing.config 获取app信息\r\n\r\n在 qing.config 未成功执行前，其他 api 将无法正常使用（在调用队列里安静的等着，不会被执行）\r\n\r\n```javascript\r\nqing.config({\r\n  debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过 log 打出，仅在 pc 端时才会打印。\r\n  jsApiList: ['api-1', 'api-2', '...'] //必填，需要使用的JS接口列表\r\n});\r\n```\r\n\r\n> 只有在 jsApiList 中明确指定的 API，当前 webview 中才可用。因为某些 API 的初始化需要额外的开销，从而导致资源浪费。\r\n\r\n#### qing.checkJsApi 判断当前客户端版本是否支持指定 API 接口\r\n\r\n用于检测当前客户端支持哪些桥。\r\n\r\n```javascript\r\nqing.checkJsApi({\r\n  jsApiList: [\r\n    \"gotoLightApp\",   // qing.nativeJsBridgeVersion >= 0.9.18\r\n    \"todoList\",       // qing.nativeJsBridgeVersion >= 0.9.80\r\n    \"setBounce\",      // qing.nativeJsBridgeVersion >= 0.9.27, iosOnly\r\n    \"selectLocalFile\" // qing.nativeJsBridgeVersion >= 0.9.30, androidOnly\r\n  ],\r\n  success: function(res){\r\n    console.log(res);\r\n  }\r\n});\r\n\r\n// success返回结果res示例：\r\n{\r\n  \"success\": true,\r\n  \"data\":{\r\n    \"gotoLightApp\": true,\r\n    \"todoList\": false,\r\n    \"setBounce\": true,\r\n    \"selectLocalFile\": false\r\n  }\r\n}\r\n```\r\n\r\n### 通过应用后端返回的签名信息获取ticket\r\n\r\n在活动页或者混合应用中， 可以通过 `qing.call('getTicket')` 取得ticket。\r\n\r\n方法一：\r\n\r\n```javascript\r\nqing.call('getTicket', {\r\n    signUrl: '/path/to/myapp/sign',\r\n    signMethod: 'post',\r\n    success (e) {\r\n        alert(e.data.ticket)\r\n    },\r\n    error (error) {\r\n        alert(error)\r\n    }\r\n})\r\n```\r\n\r\nsignUrl是获取签名的接口，各个轻应用的后端应该提供这样一个接口，这个接口会接收到一个名为url参数（post）\r\n\r\n返回结果的格式必须如下：\r\n\r\n```json\r\n  {\r\n    \"success\": true,\r\n    \"data\": {\r\n        appId: \"\",\r\n        timeStamp: \"\",\r\n        nonceStr: \"\",\r\n        signature: \"\"\r\n    }\r\n  }\r\n```\r\n\r\n方法二：\r\n\r\n如果你通过别的方式（例如页面直出）拿到了签名信息，也可以像下面的例子直接传入。\r\n\r\n```javascript\r\nqing.call('getTicket', {\r\n    timeStamp:'1530867948317',\r\n    signature:'7qaScdppiMKuDoYadUqbZhlZhgw=',\r\n    appId:'101091520',\r\n    nonceStr:'0.7057841489531929',\r\n    success (e) {\r\n        alert(e.data.ticket)\r\n    },\r\n    error (error) {\r\n        alert(error)\r\n    }\r\n})\r\n```\r\n\r\n## 附录1：所有 API 列表\r\n\r\n#### - 与 native 相关的 API\r\n\r\n##### 以下为 base api，也就是对第三方开放的无限制的部分\r\n\r\n1. qing.config\r\n1. qing.checkApi\r\n\r\n#### - qing 中还包含了一些为了便于编码便利而存在的一些辅助性 api\r\n1. qing.version，qing版本号\r\n1. qing.isSupportNativeJsBridge，当前 webview 支持桥\r\n1. qing.nativeJsBridgeVersion，当前客户端桥版本\r\n1. qing.hasOwn，见 `Object.hasOwnProperty`\r\n1. qing.isFunction，是否函数\r\n1. qing.isString，是否字符串\r\n1. qing.isNumber，是否数字\r\n1. qing.isObject，是否对象\r\n1. qing.isArray，是否数组\r\n1. qing.forEach，见 `Array.prototype.forEach`\r\n1. qing.keys，见`Object.keys`\r\n1. qing.ns，把字符串转换为命名空间，`\"a.b.c\"` 1.> `{a:{b:{c:{}}}}`\r\n1. qing.isWX，是否微信客户端\r\n1. qing.isChrome，是否 chrome\r\n1. qing.isFirefox，是否 firefox\r\n1. qing.isOpera，是否 opera\r\n1. qing.isSafari，是否 safari\r\n1. qing.isIe，是否 IE 浏览器，这个用法稍微不一样，如 `qing.isIe() or qing.isIe(6)`\r\n1. qing.isIphone，是否 iphone\r\n1. qing.isIpad，是否 ipad\r\n1. qing.isIpod，是否 ipod\r\n1. qing.isIos，是否 ios 平台\r\n1. qing.isAndroid，是否 Android 平台\r\n1. qing.isAndroidPhone，是否 Android 手机\r\n1. qing.isAndroidTable，是否 Android 平板\r\n1. qing.isBlackberry，是否黑莓\r\n1. qing.isMac，是否 mac 本\r\n1. qing.isWindows，是否 win 系统\r\n1. qing.isWindowsPhone，是否 win 手机\r\n1. qing.isWindowsTable，是否 win 平板\r\n1. qing.isMobile，是否手机\r\n1. qing.isDesktop，是否 PC 机\r\n1. qing.isTouchDevice，是否触屏设备\r\n\r\n## 附录2：全局返回码说明\r\n> **注：** code类型为数字，非字符串。\r\n\r\n|  返回码  |      说明      |\r\n|  :--------  |  :--------|\r\n|   100|  调用成功，并且有多次返回|\r\n|   200|  调用成功|\r\n|   404|  接口不存在|\r\n|   500|  全局调用失败code|\r\n","readmeFilename":"README.md"}