{"_id":"snowball-all","_rev":"58-601fb8ad9428ded319e4cd0bb8ff5aa9","name":"snowball-all","dist-tags":{"latest":"1.0.0"},"versions":{"0.1.0":{"name":"snowball-all","version":"0.1.0","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^24.8.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"24.7.1","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.0.1","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","style-loader":"0.23.1","terser-webpack-plugin":"1.2.3","ts-pnp":"1.1.2","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0","canvas":"^2.5.0","node-sass":"^4.12.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","sprity":"node scripts/sprity.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"563569962b72dbfa7fc4e93df7bc40f95dec385d","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思想。 * 视图：fiber模式渲染，高性","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.1.0","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-lw6oqBCxuZEMjtqI8aC6Ta0nkwzBLLrMKlyVyfJS1bG2NtXEiVFBMF0UwC1iw3EH8yyAY8FMVJU0hnqjjjeOcA==","shasum":"00975fd7611fbe8b6e2d41d45f94dcaf7efa359b","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.1.0.tgz","fileCount":234,"unpackedSize":1184807,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdLp44CRA9TVsSAnZWagAA6EAP/0DL0d5RH2QRg/aRS4o2\nDw0JK7GlGQtaoof2jWleNRuQcnXuxYbt+0/e5NVC+7gNISq+QgA+GuxuqfJ8\neQsKoWz0XGvU53G2EabbpclhO0emtWngxuJTMB98/n8W530tX3uyBHOIMO74\nbSAVk1+nmqe8Ih4aaGSHqxtDNYBWEH4IdCB0NYxTHuUcxBHOjDXFw76A/smb\nW59IfDvE4jhFORAwHdps4oPvhGiXja0NcBuMzt4zLAC36HhScw2D8bmQkMX6\nCH6Q8l1mwWse1b+6DNF0DBi8cI+jGP5ORyPG5S4VqeO4jlsCCg0xXNXbeW+8\nUAUx53gpqh03PWxKNg46PCIIsaNlbLOHdLbZEJepyOnQ9eGj8QwEo2o8Xnrv\nauFCP8Qr+YJVynWlIIdpTPG6EwiFbXdSb5FyiVLlEy1By3GEAtw6Ji4pi5Yi\nxKSeMniKFFUxdLtzu381l1omn9S388KKcOmWG9tFBm7rUIB/+t8yKflTM4BN\nDU+KVXeXuelnVGurl8QcfP622fvMJkpDP6oNvQGZhLUgz6CfKsUb3PNPlDX5\nB562RH//yk9L0eEgW57EDR7c+T/NdgoC1Dy5O9K6Pjzl0r2QhYZxM1Ahplmk\nhzldpfZ5sW5EnbRYo+s4jfM9Q5S4fFb1BP2uTsyL9lM5JVlTsbmcvER9poLp\n2MXe\r\n=7xQH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFSVGmJ1zxdi8tWkz87C4EvX75dCITMCTO6HaZKZ3mSYAiEA5eMOQvoLjFN2321EEuqt5gM5HmuAKzutAGHwygAJvVs="}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.1.0_1563336247991_0.6889878615898211"},"_hasShrinkwrap":false},"0.1.1":{"name":"snowball-all","version":"0.1.1","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^24.8.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","canvas":"^2.5.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"24.7.1","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.12.0","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.0.0-rc.1","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.0.1","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","style-loader":"0.23.1","terser-webpack-plugin":"1.2.3","ts-pnp":"1.1.2","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","sprity":"node scripts/sprity.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"5a56fd7108f7b7f324aeac8f1c606fc21d17db3b","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思想。 * 视图：fiber模式渲染，高性","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.1.1","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-SFJnSGXdzdt8bphLfq6vawK5iq9Qj5xN118RXf/58F0ab0q1dU1MniP23j+O5IUNM8FOhbBNCcExFnFyoymNMg==","shasum":"b5843e9354fa1bd9d664e779f4200a7328e7aafb","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.1.1.tgz","fileCount":237,"unpackedSize":1189837,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdYzjzCRA9TVsSAnZWagAA6MsP/R+/mT08x++TF45/2MDT\nRS06YH0whoVOsVOwiB/6p6UUuHU6drDk1jSJadWK4i4Rqc/wL07XcQKUoJ4s\nyn4jZ9vRkbZLawAUR4ckKqiFEcqPuvm9pSrPybto/oe+Q0ELvP+aXD0ea+Qn\nxKHtTGejPrruDXsxJJpeBSFrZ+p0BFUWujRwzUNjnL/8exa1AIIJYTSANG/v\nImG5xD7miSzL0ff7EZ19TuXu1uv8Ou/5i5gOtEge3j6+NldmwTcSmke4YdgM\n1njNrTKvM9pOJdJ7fKBkZ9XuDFRCd7bpT1nXFCWFhjTRHLNico3DTA4AMxAm\ngyw/icUZtebAA1GPamUTAfORB1UrAlfiu3ygHq1BVkAMPZZfB8i+0e/rEq8C\n1d/Ghvml+kGqZtJI1zKxPc3aXHprCL2bfFL6bme9NG+ar+n72d9ORP4u5I+D\ngvfwVsZNYBkiVlAocfWO3kOQnDS3IEHzrqfRrsfLPVi1bCw6zXsne4lJb1Lx\nbWrmxDoVVedqegHS14Ib5MY+Bcc25+c7InnNsyPsqqYJTVfgoBEKj/pW/Htr\nxvV4lbmakA7ek2GK09UWPhddI9wSioHiwqqJD7tDcHb3sneNKNjJmcfq8u4V\nGUudmgqEU84EVhze/k1umP7N/wjF2HYJfOTT8nSrj0HTNClY9JEi5RuB9SaV\n70UU\r\n=kRpe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBhDfTpULbVdU87xCbZYCm61Ozv5TaxDz3rANLMx3YqrAiEAjqe6xET5rwN6daTWhd+Nyi8WryPvsmB20XoTmcJu88E="}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.1.1_1566783730466_0.4949984691669371"},"_hasShrinkwrap":false},"0.1.2":{"name":"snowball-all","version":"0.1.2","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^24.8.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","canvas":"^2.5.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"24.7.1","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.12.0","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.0.0-rc.1","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.0.1","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","style-loader":"0.23.1","terser-webpack-plugin":"1.2.3","ts-pnp":"1.1.2","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","sprity":"node scripts/sprity.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"fe45b2916e7399b6a9ddb41715016c77ad0ec9ed","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思想。 * 视图：fiber模式渲染，高性","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.1.2","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-1UVY5cdlW2N6miB+Err705YgcrYQrptrKkYRRNYQrBJ/YiVX/WFUZqvcEiRaEGKS8GIrA3Y01Hh9z80dkdyG9A==","shasum":"8cde20bf837ecf7fa9e3bf15e7e0c5b816100dbd","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.1.2.tgz","fileCount":237,"unpackedSize":1190197,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdZJANCRA9TVsSAnZWagAA7esQAJxuZyoPxxFm4Ju2KY6V\nMqQj4J+d1ZW1Tw+ACv5+ZzrY7X/u6OjxqEq4rKBu0IrKGNIgetEqra5Wkg8S\n/1JndNyMofsjtxGf371Cv3VOYwFJl8iXHEGmf58rZ7gLeezZ0ELYKzh5mDeV\nc/PeIWInp36lJcyOAjaMtWslbIU2f1kF5YTfT3dx4WooDsNaJr9gkM38P95u\nAlY7qgB2PqFmcouua34hbTybjIjdIfAGFKcnC4PIBVdD0ssjpRXXsmbvYU5e\n6WTDSn9maDjkld+lyAKSqyeCP8g0EQFJG5+a0YDth13dW6Enh5K2nUIC0LJs\niBWhH41xhnA6bWpMmK9nF85HuQ/kUoDe9LNMJ+8tD0FQX2QPS5P3uE51Zc8o\nxbGZezZpJpDPyVH4XnE7WSR82vn5BCJT0Wokm1EMrZGfQKKCdLcejAq1E/iF\nschlqaj1XGG5Iv9ehrwwWFSJ0EqmGE2KE0eAMXFQBwWQwkuBg2v6SNo08Wf1\nKpVDYJWqvW8mLtrdDlySbyhUuU/oSatBPmr5gv4Q8oMI19DdyrVbjrEcFahe\nyK7UmCk7mTi+iHRYabVLTYPBqXuhEGkf1mZzPL0Wo6DVHJsz4egw5Wuvo6Re\no15g+XKDMSlPNvf7E/C4olJKB32Lk3xi3PRjcOQkfPdGj0m8B9DkqCVI5NCS\n6dT6\r\n=gkAi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDTYDdza2bslV94GejlPJQg7RzHDTP6WtNDoov2NpQhjgIgBrPoxIke79Eh4VMZELu3jmcISkmE1rgJBljiHJ0JaK0="}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.1.2_1566871565027_0.5696234823607063"},"_hasShrinkwrap":false},"0.1.3":{"name":"snowball-all","version":"0.1.3","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^24.8.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","canvas":"^2.5.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"24.7.1","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.12.0","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.0.0-rc.1","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.0.1","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","style-loader":"0.23.1","terser-webpack-plugin":"1.2.3","ts-pnp":"1.1.2","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","sprity":"node scripts/sprity.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"cc0b2b537807912ef2d66e519f2d48a940d90267","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思想。 * 视图：fiber模式渲染，高性","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.1.3","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-WUtKqkhkFXDCuW2njHJ5UwPfmENBhJzOp1Z/rqEW6OcmqI96HWgG8f5C2MQDcbdrj3oG+VBhevZYIL8NsYq/uw==","shasum":"7c802e4a51c2751f13aa48879e90e85742138f50","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.1.3.tgz","fileCount":237,"unpackedSize":1191799,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdZlCpCRA9TVsSAnZWagAArCYQAJHFcQMD3kDRYDO4KEOt\nUIlwGK2buGAWkOixJgLiJqycVUBGGqdPHt2rzrheHDluOC41vAHGaW0h9GpE\n+9G6VvAKolA3HS466+YguE5Vj5JJL+Wb6kGxy074jH56IjD5uxsWdZnw4vcb\nncnw65NxWxNRqgsdHUo0pCgc7G6YVOTqTADwLHQ4Xnh5P7cv0M6o/eYPhOEn\nBcJQMgwY0vIytbb3Rv1OuClP5rfIqfIKmkQ76IyEs54ULJrLKZsnYZDgJnTE\nJeE6r8xymDviOl6kuWUOCYa8JqWqR7mxI6TAWh7l8mtRC00L1miFAAa6KbYx\nFOVHeXEbGhCfsjEDu9VzztGjJtLwqAIe9Xt1wgeZlCdcqu8gSFqpXBRZ0/kC\nvu1KZd6oAceZtYBwWj5XTYsBYU52wTtrbZ1cNE1oTNOZuAjTkoUUNURiJaLV\nDEmsdseqK6RCkJQ6OefHbbONjtgmyTvkpIpWk0S/vfhwk+Jr0F0FLGuIkGS/\nZjQx00S8foi4nk1RTuR8XDjSpSf+k38bbji3BvgTF7FE0y1BU2OlgZqHbkvI\ni7uV+VuR6jTHEb09RLam4J1EeWX1TIpqR/6o9OOY1a6f85phslVDZNbbdaAC\nPwW1v5cyGdx1V/gV2ZXeZE6A+R/8kNc0Oj1q3Su5k2YaW8JrTe40Ftha2Yhf\n9d78\r\n=Fqo0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD466C9ghLe5dw/kXqyPl69xp4TpIFQWrMxIer5h9/K8AIgbtqrOEe81MA3COicJLv268dzGZo+b8JofBJ8b7oMf50="}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.1.3_1566986408674_0.443374213849395"},"_hasShrinkwrap":false},"0.1.4":{"name":"snowball-all","version":"0.1.4","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^24.8.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","canvas":"^2.5.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"24.7.1","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.12.0","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.0.0-rc.1","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.0.1","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","style-loader":"0.23.1","terser-webpack-plugin":"1.2.3","ts-pnp":"1.1.2","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","sprity":"node scripts/sprity.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"b825037cf47e92debb30bde5cdc59757ebf53079","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思想。 * 视图：fiber模式渲染，高性","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.1.4","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-7mZ5uJiIiP7AI6oD7O74f5yyY0khguzqMQuQ4envIQfDp78SXD+K/5+niSOpEZRqv0d1c26730kEn/Eo0XZ1Rg==","shasum":"06cdded99bf5b3e2af30800f1c3bbcc0863a60b7","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.1.4.tgz","fileCount":238,"unpackedSize":1192550,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdeF7aCRA9TVsSAnZWagAAdQsP/2svZUAXdH2Qdh6/N6nP\nQTJgy6vgqdFrJgFnPRyWVpwHXA9Yr3/KWA6WcLBOg77r9g/dbVOUeSYLapk1\nKCkTILGhYPSzhhYBQZXCTxao4aBhhaU2JkX3J2odZMAFIiMAMzmlOmiLwGRU\nwMthd4CA7pjSpEK0Debk/Zy4Kw8wZ2A83aR9ev1c4RiVwauyFivGhPw3vHW1\nsiihFRPu7mcJ38yCsy2O0N7UXrD6B5vo+aLDWcbEivrhdlnexPut/hWNXfmW\nS5axdgSBBx0lUlfvvn4QhvGN+Trl7v3xdCghlidcvKtVoOj71zktkafAu5HF\nYAmTG9ReybHh3eLyJBKpd7hZs0mraMahrDs2YUBt1ux0ttdCT4QSRGluGuqQ\na5B7z/dZSV8J3xhLWyxDD2A6L5cdfAnGVd+w8R1bTDo+D3M0QKskKP673JTK\nDpP5h0PPzyeE2JBK3kBhR7ZemUEuhrf3dRO2qdPEYzJG9rnR9bVzISE1asNd\no9o63aUCYaBENRJbeUqcie00uHpBJykBT1g4qvTURYBDXQtiqI8WwlxRut42\ngGR7At25YkVujuG7n8Ay2CUn5GkWuu02ewP1MAMQpFFXJD23yhatl9gpBFu9\nwGzlhY+P4f2xgjKy+CJT5Dk7m7+LU0Tztq2j2p10WRwgU3tt4Ni6YBq6J1ba\n8enC\r\n=sNAE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDu000qIfuZr1oiDpJRNDgJJXaY/DlZHqnuOqYYSekvIQIhAKqiLHopiRgPfyo6zvDib1Qf7yzbUJI745WVp//Lb9WV"}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.1.4_1568169690018_0.025786945815006845"},"_hasShrinkwrap":false},"0.1.5":{"name":"snowball-all","version":"0.1.5","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^24.8.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","canvas":"^2.5.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"24.7.1","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.12.0","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.0.0-rc.1","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.0.1","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","style-loader":"0.23.1","terser-webpack-plugin":"1.2.3","ts-pnp":"1.1.2","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","sprity":"node scripts/sprity.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"7e3bd74ace806be4fe4e1098568531b3024870b2","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思想。 * 视图：fiber模式渲染，高性","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.1.5","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-d1f6W0zdApZs3HE+C1+r9qZJhubTycsgDyBF4s/kixEpL9GrtBeHwGpmk2/xm3yN2pvObR7zUM/QnJVbeN61wg==","shasum":"1e4c6d1225aab86c62d0c9cea4c810f1f35079da","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.1.5.tgz","fileCount":239,"unpackedSize":1196110,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdebGtCRA9TVsSAnZWagAAXhYQAJhAuKVJZCWXF5QCX6c5\nM9QGWZOsvCJHTCqI/PHtj8QKtmi2GGwjBKVLaz3ikKrDHtCus5Yb7ucKz4r6\nUtqpCvI+1lCQSQz9bF4B42+YWUTv3D3Z51eylyO45Ck0PXbtQnDREIh+jkCS\nddNqmUMEUNTvq5nAoaX2SF6NT+F49ZdExCgc2sxuLE56KG95Yn+Ow/4X/uRU\nrVatSEiM6WyeyC/0UfbPwgb1OH6UNK7Nf90MspdsPs8IL/qNTyNhnv8bswfb\naOdCOT5SVglNkfQ8GgZIaV/P5I+dIRG1khOLAPEgH4ysijSec1IxQQnBF7Zk\nWmVviCigc50RVTHIps+ARGSwXLnLE8bEgIqvceYCApSdwdxgogy/6CoPnNEo\nn6YLDi488c1kv9Vfg2eC8qSFueR0lujtOD9ClSaSaO6/yRg7LFz2KWLpJBPn\nGicHYEqdhw/tjoBcQs65So7UnWiN57pkffO7/91sGrEjfvjo0fM9aYaRRYEi\n1z0Vc5PL1W4PYg3/oSdtKvbQrDq69hxjeUZv+wtrxDqEIHiXyHwXtufOq33w\n567KkCvinZKvUCacDD9nvAEcuK7yhIpF7tZZMgw/AvlM7a3qz/WSXW9kGJjj\nJVEMlXA2KaMx+0HLH/mvgQ00cBUcypSi8F1/0dWZ9EPZ7nnKl2FJgAtSG+kt\n9X6d\r\n=Km0j\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBYXezCHCVP10b8XHtl0CDWIgqHAIi7oh8+MupacuX08AiEA/SNjTOIV18uRyq2upIi+0hAkot/qE4eTry7DRFGvmR8="}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.1.5_1568256427973_0.5330149791971173"},"_hasShrinkwrap":false},"0.1.6":{"name":"snowball-all","version":"0.1.6","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^24.8.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","canvas":"^2.5.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"24.7.1","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.12.0","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.0.0-rc.1","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.0.1","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","style-loader":"0.23.1","terser-webpack-plugin":"1.2.3","ts-pnp":"1.1.2","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","sprity":"node scripts/sprity.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"b22baf22ba843eee3efc9af19097a1113aebc079","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思想。 * 视图：fiber模式渲染，高性","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.1.6","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-GroVXZR/2Hq13NQ+4N8QPvw3x8DLhxNAsz5oskw/C2Rm2+DV11e78SIkS6QpYBiXN7HnT7HYBfr43qa5Gj+MmA==","shasum":"7ada617f7f4193e4254bebdacaccaf3acc300349","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.1.6.tgz","fileCount":239,"unpackedSize":1202179,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdhH4wCRA9TVsSAnZWagAAyXQP/iegy6QgBQ0mQOX7qdhl\nwZuwlZ0zj7J9MWa9cnFl3TbtEcgiryO7OZc0VqmG3jOXgqXG0ukLG2GfISjH\nVIuJTKHE72j9CsDccQ1mK2tKoRqWtJiO2VJlzyf5zTBbZ6++GAduCVTC43k3\n9wTggcw1APRnw67/1sUx1exTD7c+sC2tyHUdb4ktqeNzoM8VX7tw/13+8caH\nbrMZ9VMqumu6qtSmC9F1G1BycNSE0sBGSyDIyJco09bv6B5yQTOukjxeU28A\nT7tc6Vw83/ct+nMacMtussSnG9MvMiZVkbxx9GbBZzXmLA04KAzb/H6X3zl5\nvvR0xPOocOZOo3kDMcOHsxkjER9MHJgxIL8JHTYPDJALoYmC6FBHt6zOdXpm\nDWysUo+m9kNfmW9WS22MnXVkTADwwIvUnZWHAdijLx0YPVplkjiZyxzFdtIO\ntQ+zHbV12HPzGQ7zSk2x9nEHB6Y2MrVJMwuQ0vB0sTbOIRRsMrqjlDqRXKz1\nwI5vccZhkcJ+5b7RL/45sVQ+wFC2DL1ec6dtDDlvmgN6xRB9w7r6p8vUlwiz\nyAx2lBOYuZurrp7rVA4r+2M9L7eh/ErKAmbS4dMg4InWBsLsltF9xGpOcyBT\nZcSDlrV0g1xVd78aM8cR0S/kpn0ap+W3N8E6kVag/xlygng7bjf/Z6qcOfhI\n8fFT\r\n=Lcy0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGfW49XiwcoQWbw1xVLnhbELI6WJim/mmpTttpGhjcfSAiEA34QH9wKN4ikeDoc2PRryyD+TJbVGeeDGxbo+B5FPOL4="}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.1.6_1568964143046_0.5785888142404387"},"_hasShrinkwrap":false},"0.1.7":{"name":"snowball-all","version":"0.1.7","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^24.8.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","canvas":"^2.5.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"24.7.1","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.12.0","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.0.0-rc.1","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.0.1","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","style-loader":"0.23.1","terser-webpack-plugin":"1.2.3","ts-pnp":"1.1.2","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","sprity":"node scripts/sprity.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"8c7ecb43280637435446d6902068ceb568c05149","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思想。 * 视图：fiber模式渲染，高性","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.1.7","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-1OjA0zHK8uampOoR2cy8xMkwuSEkSE9V/a66Suc0xlJLhT1u12Z3hsnGpovZa6vCZLwT92UuRjA7+NE488VTNg==","shasum":"9d32571de652458a537c2519c4679e308618360f","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.1.7.tgz","fileCount":239,"unpackedSize":1201688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdiLgTCRA9TVsSAnZWagAA/bQP/iuGsvb/bmwxAVg94NVk\nByv5z1VGTOtENYmjUQsGDx6Mn0rrAven7X8hIf5e5/FsS2xr2YARcCjCF8Bo\n3PpcybKkkfDq96foxR5bS9I+JcByWHujthIJ09drsMUKEozxZUN2KnqYCHKD\nKxsdrv86SsP/y1b8tAlfiSjXID2hsLTAczG7HFpKsI5Qctv+QmtlsJCfT961\nwMbbBTk9q5enS12BoowwQQ6638sgi/EcBndB1OApBvk6gcCq77U/51TdQ6h4\n7L0ht/ROy+AgQG6Rbtkf6FWZWpGymNOzjj6k8NUyb9wACXCfGMm92xj8THbn\nedOMIsYfmvEUmp7+qPTQEd7+Rn8f1Shrktp/YAXTFgFboROXNuKYGDQUUocR\naRgP2SsK/eiZ8B4lFRu8VeixTImezbhoP0xN9iPPJCAk6UWcmJ6ROoWDQVur\nGBKY+OtesaDC97lrMt7NWMVMVrQfTZZxhx8wnH1qd9TGcY1y0PCL8SHJMk64\nHQqlouOlZlrQfrg9H77LEGL2iFqQybmnmM2r6sAILgokQhoBB1wR4HYgxiEg\nRDln6duwaxaQF6KSq5RfhkysVeLFq/D0cnAQ/D98k+rIFuox84Rb+gc94S5d\noIqohFzAD1JidLe79tJjLADQfWQ4WO+RdV7u4F0gB2USDqkmmabH+1K34Jls\noeG6\r\n=5POh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHfvVPVlfDQOJmguZL81ApPPAt2vgtMIUt8Bd2YcUPsQAiEAzy2cVFIz6v3yZdvocZWXq6w+MuV+3FpYybtKIZxdHrA="}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.1.7_1569241106529_0.658327089024487"},"_hasShrinkwrap":false},"0.1.8":{"name":"snowball-all","version":"0.1.8","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^24.8.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","canvas":"^2.5.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"24.7.1","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.12.0","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.0.0-rc.1","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.0.1","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","style-loader":"0.23.1","terser-webpack-plugin":"1.2.3","ts-pnp":"1.1.2","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","sprity":"node scripts/sprity.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"97cc4144ac82a33266775f7fa5ba6182e76cb5d3","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思想。 * 视图：fiber模式渲染，高性","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.1.8","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-g2qPzw+qwVPECeAUTDrxwXTjnR5dixgZQksN8TC10pNBb40Jh9ngtxQ4j4DvbAVfqYUMUteRatgWUO8b6btPiA==","shasum":"b422b6a9a3cbcbe6ec8596ff8bab3faa5b5cb2d3","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.1.8.tgz","fileCount":239,"unpackedSize":1202077,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdiewTCRA9TVsSAnZWagAAP58P/1x/6vy0lO+5Sfpiqeck\ndz6q/j3rMy+KqmjIL0o5cDdLASoMGAkmpYwB+mz3Q0M0Fak8qpzkTzwipFpg\nWKtpUsfBCcEUUlPJM6R+oNYyWvS1B8a4YEITpJlh2l1mdk8t7oj4Y/sGtgzE\n60UYnGYc5uB5la761w4uGJn1br25c8Bjd8ETqrLgjBmnj65w2d8dWb3RPiO2\nPXDF7eTRYFyDEmwVVbDiLSAmanCtpCx1tLeD1ZVeroFKcEyUzAlcHAqwY/Fa\nAHPtuq1jL4TLT0fExKtY/1r1DbZx775LCIgPUle10aIi+A0DQJuqMPrtskwN\nfWpmYVsp7HQZsFPyyZEcbfBo8QyCe2aAGaS4kBtsIOqnt2BGx/FZggbPdeCS\n5UmCNju5LMD2pgLt0mK0bv9u1jWHWGGvVJD7eHXKlz6iMYXHbSGL4Wg5ZzBX\nfM5BPS8k76UIjErfYlThbkx2vK2UsaUIQFE/rkOX5fnc4nkM96iomHJD3ROR\n0w5mF5uLP4kdN3m0tx24o1CtNBVZtMApUxrHR97xQxMf/Wq4z9rXgwzTaUbd\nTOrytuJM9ByIz00r86u8PBIJ/5uwtb8SuSBbN32+uYmKNaaskpv8Y8CRf/OJ\njxwgcAys2V1TC+r9RS/sl7n76Dm2ESa/l/ybAC4C7Dlbrty6KT4GyNaiL0qO\nEn45\r\n=fWUq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD2SZMQeCqsIHfGvpQmX+BycDG0xZk/s5n0u/VsaiiBigIgEYT05ulqUznr8vt2QyyDoqToQxkSgc9VxNJm2CMLF1c="}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.1.8_1569319954202_0.2937958004266068"},"_hasShrinkwrap":false},"0.1.9":{"name":"snowball-all","version":"0.1.9","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^24.8.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","canvas":"^2.5.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"24.7.1","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.12.0","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.0.1","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.0.1","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","style-loader":"0.23.1","terser-webpack-plugin":"1.2.3","ts-pnp":"1.1.2","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","sprity":"node scripts/sprity.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"b23dcd89a30b10543a9ed9a35d696987ca521b9a","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思想。 * 视图：fiber模式渲染，高性","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.1.9","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-QGzZWPAFFOcv4K49S7uogHcg4IkSkzZzyaxNzJm3BHTCFCwQVcMH5zjrnuKnjyjo5bIwEvtowAeqK5I1UCSOAQ==","shasum":"2a111abdde7f3a006de618a077ebec2907846e54","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.1.9.tgz","fileCount":241,"unpackedSize":1206150,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdsbINCRA9TVsSAnZWagAAVWUP/3y/n/QAWlkJrRwJrNVJ\ns9zK/a8t11BsoLieby7nZvt+7LUyJncnGaYWe5mJ/q72OD3ZkbUQA0zI2Rxt\nwS7MWDpJwevuNPDUTJusaM4l61FAK8x7KfETqdhbM9BgatbSWtA4fOeWW2Sy\nyYXYmRZLc/f+S23Kqwiv8aYESi6zOyh/UGnGsBddbuIDGUk3R0EQams0kjUt\ntfIp6nAMZdrZFQ/nkBHIBZMJlmdcob+rFyD3xjm+JUtwC5y3IKWZMmruUqOG\nu5YopTM64bbJWqo73qioymVyG7fTpbDKK581G30UahG6QYyXVIflQs/79tMe\nEV8CNtmisy4V96rfNS/C5U/fhni82Rush2SYMWK311/UTV+7wJvDDIP9VjXi\n008DhM7lZ+NBZTGG+CtLAbhsMgPHln7G6E2UXS7TdHqc7EyiBTq/eUOgydQm\nM3h9lrarMPgKMseuPV7xDoPs96rMsXnCvu9Q+qftSxuJsyfFKVoRBWiKBPyP\nMogrzXxnZ2+F0gXNJ8Bq5ZaXAdaVNZ8XUX2ByWhqM3jzveNwnhYaHuDzmnrb\n1AEECcviMHAv00RxRftzzwARR5ucZV7xNhflVk8ZR/QWKKXK/evVtVHh5zda\nDSvIqRLzG7+9hxY3tvsIYPWfCM4H4ff3ZKwv7A7tk1JDyVDgLXWIHlhCb4am\n3OEN\r\n=vRuw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIADwgfYvATUE9DHwicJVo+QV8A/pgsWi4HlC608/m4D9AiEAnNbS6pTD7rVmfJoV98PKSjj61bRnKjFLip1gDuIpLn4="}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.1.9_1571926540515_0.5390664900014781"},"_hasShrinkwrap":false},"0.2.0":{"name":"snowball-all","version":"0.2.0","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^24.8.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","canvas":"^2.5.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"24.7.1","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.12.0","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.0.1","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.0.1","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","style-loader":"0.23.1","terser-webpack-plugin":"1.2.3","ts-pnp":"1.1.2","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","sprity":"node scripts/sprity.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"82c6cab1584f28f2aa5a05ab22050612a2f1d724","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思想。 * 视图：fiber模式渲染，高性","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.2.0","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-+JNSmUGRnwz90BoQSPBpOIpdBXr6lPEQgIZmazn/0KcCfFlIXTijDfQuScuTvEGAIaVGoWRBV6iFVJ/hL4Rcog==","shasum":"2e9c20d51af4677b5d24da9e05e8f33e1e56caef","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.2.0.tgz","fileCount":241,"unpackedSize":1212003,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdxCfpCRA9TVsSAnZWagAAwqoQAJgJDUJvf6ZC8/6P5jc+\nSGGSbJ6sohw8zkbW/KQ2kXHwB74KgCL9DuD5z+36blySQrOyJupRge3klA7Z\np/SDQdMfCy5OndU9NFDEZH7A4/BKBV4J0Aly48DNkE6wJm2f/q1VN5cznXp/\n46mW1TQYCI1Fon178k9z2DWi2v1ZV58vh/pc2tOxIK8snWca5Qs6x09sJn8Y\n0xtegcCvLWMQLvJcLssiS/qoKEwMsTMdOZtU2jHc9isktKAeaZHaRkLvUr5D\nw4mAkhY+TB9VHE3FPtRdeIK3k8b4g2HkeXthbVxetyfdnYikWkK0md5Hl8qI\njAO2ODsECE1clRyzyfk3KkEsd+yqatJ87svHMnVdv/UA2QqueHnCaps0guAo\n0PXTKef3cpLjTBuK5ETBP60/SGINvvRKlgqABt+Fn/+TMcu3yn8bF0pkZfiQ\nk7FiMuxnM64cpbGaomdil4uAVTjwNoGY4ZIIfrPOSAKXgWTtqoZQhrOb0AYH\n2A2VEpqnMo5jQ7hgiUI+cTWX/cV5nrkYP/DyrcdDyfT71NyyNI2jbn/tL8Zf\n6Y34/5c7B2rXiQniRVa50BU6PHRdqKvYA3ft/74tDBwgmBsnRvFMp+bglRuh\nMlySvj+Cld9v0xJu03t+u0t6uukmWSY3nMLDIRlK8CFQU1N+j6Qp85iUqY9y\nPvZh\r\n=MOdC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGLVxtL1T+qOmO1Dt7JXOTaeD2wutTv2J34/teJyMVS2AiEA3kO6zlzHWz8eaqJ9XKc9M0pyglGlgyL9adRE5kfkv0Y="}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.2.0_1573136361255_0.14499725155300713"},"_hasShrinkwrap":false},"0.2.1":{"name":"snowball-all","version":"0.2.1","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^24.8.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","canvas":"^2.5.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"24.7.1","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.12.0","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.0.1","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.0.1","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","style-loader":"0.23.1","terser-webpack-plugin":"1.2.3","ts-pnp":"1.1.2","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","sprity":"node scripts/sprity.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"7da9c680aac765e0c4886faf6b04c0f4745378ce","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思想。 * 视图：fiber模式渲染，高性","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.2.1","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-gw4FzL89zp3nk3sYHnCX4+MkLgYHKONzH/S8ZbflBFwDJvZkn/bX6qv4bQ272ycyKe4nyiPk0WG+8F+yhoIF2Q==","shasum":"89505af66ffa754d70948810275e59319904c0f1","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.2.1.tgz","fileCount":241,"unpackedSize":1212208,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdxNxLCRA9TVsSAnZWagAAWroQAJCMqna7Sf7oaxgqr8IG\n2qdXOx6AUZdrt6IIJ8TCMTYdVa/g8XvdDN+4CkXXdzqPEnWrljw+SjDYfbN3\niQ7p8JbPsU2mijw7L9JdfuXWtEYzpsWVx4FJZFzIzRuFr0/ZcmkhCqXfMFDe\nXaC2kBogHNyjrC7PcvuTlP9BULkG8ibsgI6uo7f/mKXHNcaUvawdIgnbeyv5\nhXfo+JBPkmHpPQSIXRyoUJFogc25dbrtWLiageQyEDD4tQiHhf2KvGCf8UvD\n7Pj/TdAK4vydST2Dg3UIeGFcV2f4YynSHyOpXXuyyFIE/ZQAYyyE5OTHj0dd\neVhqLhiAewbGq+m9k+2g4L+nYS52u8w/WVKOc90FRGcFylVQgd5Z+FGzPZx+\nhYqBOj19sYUbYDaoV1p25C1UMw2tB78PmjMtRzxcrA9zfnOuhAhDRcQmHDrr\n8dZ6szgW0Fa2pALQStuANqfZo6LJkP1kzVmIOZwo2t2paHw4dnVju9TKQA7f\nSQivAaISu1aB1pbfeLEkqeiENEQbbW+i63wzAXvcgW6dTuI7rZlFHWwOEpAo\n6FB6cHwQgtV2lHxsUFtDqjPqefCdt+9HRNRPiVTnHJbiq9wbFx4H8k20y1Ef\n0fx1n3onwQNmJyzGPzxwwxPciLSyXQV0wzzZBvZ25Cn0snIBCbmFFdrcfxI5\nI37V\r\n=ar2k\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFUv5dneoz+ijBOL4pH28zfpPPyeNm8SnOQl8RCNYUfHAiB9xsPgt9P3nqxiIwKHn7d4AhKauNEC6hWiijKpzk2Bvg=="}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.2.1_1573182538328_0.9340634074958274"},"_hasShrinkwrap":false},"0.2.2":{"name":"snowball-all","version":"0.2.2","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^24.8.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","canvas":"^2.5.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"24.7.1","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.12.0","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.0.1","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.0.1","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","style-loader":"0.23.1","terser-webpack-plugin":"1.2.3","ts-pnp":"1.1.2","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","sprity":"node scripts/sprity.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":["android >= 2.3","ios_saf > 6"],"development":["android >= 2.3","ios_saf > 6"],"pc":[">0.2%","not dead","not op_mini all"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"907c959c0e75db073c8425698ceb3e1894ac302f","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思想。 * 视图：fiber模式渲染，高性","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.2.2","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-G1l3dZyn5ppPrNYtV2WAp9MDgvv0662obl7qYYqve2CBkVcrx0kTmyI8ygkZhNDy4MKT39EmClmz8uudumUUeA==","shasum":"07a0c29ec429813f4b21a247e95bfe335c46c02c","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.2.2.tgz","fileCount":241,"unpackedSize":1213092,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdxUcfCRA9TVsSAnZWagAAUvoQAIWTfcqp0lmQVDqkZzUe\nU71QLkjDUQIpk2GGcOSHNOYOMX5XP6VtgCQF1bsYeknOlByIEuCHx4gmZ7wJ\n21DoYW54V0r7txjvHS7VsEkqZI4nv2Ai/kc++PBZoc/WvtoLCtWLvhi0oVsR\nxFP4AiTkAqg7pvaiRynyRxDyiK/7O57VFGFN3xYGHaRSjIUe4PISB9OiQNM2\nbsh/Zgcec+wbRdgqURtt/coHFkJ8wv/YDV2aLNQR1CM91YI8Gnt+QObVpJ3F\nGEkCBuqCC9HRBx0YAWSM08cqK79OAipNO54PQDGbYVvqsk2eVqULWBTW8kyi\nZND+3GIE7TQdKB4xxLGo4nUOcSq8mUc0snb+5rsKtcpGCxeiwWJyeC535xg5\nCKePESLD5k2C+qIpbAl2p1wJnLqzFAjvZxwndwNkMdgZciRg/g8Hl82Y3jqr\nmuqjnuT3KYcYTsVZmcnt5xAFYMT2Os9rnTyQQRGU3bTqMe/JjeoLQf5xHTIl\nnjRCZopEIbZUnx5xE0z7E+DP+dajZdBJ1BusOtxyRX+6sezlq8t4JuKpiX0D\nneFYwFEhY362llX4u8l6svP7fRUKa+UEYiowiYdKhtIp0KY/q0//TXRfTK2D\nNa47zVIjiCG4MNlFq0dZ4reUENnxclcf4t5+XnR5W0Kg0tDhWvJngKI71LuC\nsW02\r\n=mX96\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDE+SBm1d/OW0VajBpL+r4pC4pGGmPmsCB+VC/Ms7A3owIgIJ1x2/fyxeN2KWdgD+tugV/Cl9xwI3iOFaIknxWfoqU="}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.2.2_1573209886684_0.897546841962209"},"_hasShrinkwrap":false},"0.2.3":{"name":"snowball-all","version":"0.2.3","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^24.8.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","canvas":"^2.5.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"24.7.1","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.12.0","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.0.1","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.0.1","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","style-loader":"0.23.1","terser-webpack-plugin":"1.2.3","ts-pnp":"1.1.2","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","sprity":"node scripts/sprity.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":["android >= 2.3","ios_saf > 6"],"development":["android >= 2.3","ios_saf > 6"],"pc":[">0.2%","not dead","not op_mini all"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"832694700a92eac38ba705d3fd3756bf98485099","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思想。 * 视图：fiber模式渲染，高性","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.2.3","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-RRz7CgGaLRPFt9SctQQ7/Q6w7AkLyoiSc7OHAa2Wn1F4/y3tc0AbWOgFynEGMIERLAbWFYi2opDumomkfQw8Eg==","shasum":"55f3d0211b57c193e14d41455817246fb234e188","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.2.3.tgz","fileCount":241,"unpackedSize":1213193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdyRKlCRA9TVsSAnZWagAAMAwP/R01LbXcfuv8X16aAcAd\nJkqa2xZ11qN1Eu9+/wZe96dNhmW4Ay4qxt/xjJUEd6stC/20PJdWMuLx2cku\nK6WIVHe/cGrI0rZ6dy6OzGybYKns/DPgGixnkG4+BVxu7IEaJzw9czJriC4l\nuKHGK/817s04i5FSqFIEdm0YthGhl8Ck4QGURZa3OkzU+GeNSKtgE6btUzua\nALFs7EBdJVL+PSBFRXqU37jsGkwiXpXfEo8Igznb3bLpqsyOV1LdLUU23N3L\nyKdjg6inFGVjwXulS/Owfm+OYGrGBSyrSRO35SQN89uXw8jS99QL79tcAGe5\n0S74GrOT3Fl+guvaYjSZMJrwjwYP0ThSRmWYfQd6aiOSeZSeQEsRYdQRC3o2\nvfPR8GuLuFt2JgxL9Olod7V7WzwSypVxF6hwfxXTCEWbKn6Vou2ZrC+BUaIO\nqI6WESc/CUxYk7D2OsJl6ubwR5svR0axDDByHODadqLdRuInmhwMaZo0QNcH\n3XO9DhpD9LlOBg18Ghz/Byt1VX8hCfArV9ymiVjsv9GASd5p8MSkH4NRhRsR\nXxW7lytNqduAnuHqxaoiBFF3CYhx2BIysa7dce4LO2W5SmN0GsO1PjI3DDFx\nqKdES1SsezTRPJIWt11V7NHvyu6ClDubRiyhjfo4eXWoriLSDJ9eiFKvtoXW\nKoL9\r\n=ss7t\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDKL5CKvv1iN/hz8bBHmHyEXl+0dLq9yvqScTz1MNeOQAiBgJjupzIFswWpLA25GSAL+8MFFp048fX0TNDD9Wh5g8w=="}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.2.3_1573458596601_0.36831103834799217"},"_hasShrinkwrap":false},"0.2.4":{"name":"snowball-all","version":"0.2.4","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^24.8.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","canvas":"^2.5.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"24.7.1","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.12.0","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.0.1","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.0.1","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","style-loader":"0.23.1","terser-webpack-plugin":"1.2.3","ts-pnp":"1.1.2","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","sprity":"node scripts/sprity.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":["android >= 2.3","ios_saf > 6"],"development":["android >= 2.3","ios_saf > 6"],"pc":[">0.2%","not dead","not op_mini all"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"7bc0f7179ddf04d3bcf10d651a8e256b1a9c16f8","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思想。 * 视图：fiber模式渲染，高性","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.2.4","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-fGzTRal3JofNCUj90gHdTC7IEFScmwr6ZviGb2cnW/AJwr1R2YheVfntbZvi7rdz+5BYLbZUFiP/dVZVYT0/uQ==","shasum":"162627c2f508e49eab8a5210f10396a1d8fc13a5","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.2.4.tgz","fileCount":241,"unpackedSize":1213050,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdyXl0CRA9TVsSAnZWagAAPRIP/j+FJn1JOXwapiqRFdVm\nkmBYQ3vX4L/5RevMs2hx+navt3KimAILweHj/z/KP94cla/qo57eVdgZ6gJS\nyIfvowLc9pFjbdwqlSpo92RA7m+pfL1G4jQiJIEiXmJimFabmAWOKkGixMc8\nD+V+IYK5X9tiEprqIUNA6vkqWvPIzUhZoXFE3Y8AFztzk6i+N3Eookrbz9dm\nTnQyuVKzxyfPDZkJ6c/01wMqO/gu2yq+UWcsJdV+uv4/U5YRl1oiPj3EnlaT\nfC4/XYD9JDsxM26aLMB7tJMtfQY0dmlTsBMFcxtmOrp3hKMNkJ2bmDLnqcv/\nqbTWbbD5juhqZuxxwQ4yklTWKpfbJ47h7DwpGUtXwlSdSKNomA3u/TZ4Pjql\nHkDJ6nZXyDGMYu5W3A8uE3HBeV4wxrQiHyzWAEnlAEAwuzuZoI58raKHW8/V\nrN2QvF3jf0Yfx03OS79C6CaJsxQ1cYzfZHNPYRC46RC4ycNgdIxYF7/YDW0B\n2qGyjdKVDbWooG/x3TpRwbHHttYgyNin9xTj0AGOuIdQtRRQfqNRF1ZqCeQM\nClSZEKGqVzNMjR2fYZiQZZbmoPrLYJow2u7LK5/eRwCYFb9pO/Nb74f53D8K\nrSuoD9h7obsE1lC1V1SJ5+YlVPD9bu5J8nXzmqRskroc8DHPae1g1Ggus4Gd\nEuQe\r\n=l3f8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF2YSO874X3cezOunTODnHWatz6B0HBVMLtZ8h5GQtr4AiEArn/JXdW0cGuIkf9WI9hWJyOTQMKKMNBQ51KNA3RSqEE="}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.2.4_1573484916253_0.9684307948742907"},"_hasShrinkwrap":false},"0.2.5":{"name":"snowball-all","version":"0.2.5","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^24.8.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","canvas":"^2.5.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"24.7.1","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.12.0","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.0.1","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.0.1","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","style-loader":"0.23.1","terser-webpack-plugin":"1.2.3","ts-pnp":"1.1.2","uglify-js":"^3.4.10","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","sprity":"node scripts/sprity.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":["android >= 2.3","ios_saf > 6"],"development":["android >= 2.3","ios_saf > 6"],"pc":[">0.2%","not dead","not op_mini all"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"41ba39ef9ec298d56c7f95ba27ac2296fbcfb92d","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思想。 * 视图：fiber模式渲染，高性","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.2.5","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-RF90rTsqdppg8gdmZLO/Ptjik3rRyqok+WoTqUBXi+PASGXyxL4v+3+IToViKDJLQ2IpPnb1OIu3yPilmswgmw==","shasum":"b16b4f2370f01549d3048abc4561936d68f488c7","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.2.5.tgz","fileCount":243,"unpackedSize":1218432,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0LuSCRA9TVsSAnZWagAAoDsP/RpkJtFTsgKFcS1VO84Z\nZRvHAP4W3rxYDahD4BdADcTD8Puta4DJkchVwcfSlhgRmNVXsagI0faLAqqP\nJwklKdzqfqgTNiOnecEk9AJ9xmI5k6jk+21AwU9lDKJfm0Mn6Cy3Zz0eCfpb\na5Rl1HSUghdJfX9SrPzs4cyZ5t6kMoOqpB6jQ0cYT1L16xqp+ecrnviiC+gR\nAk619QQhCHztqKdRUAZYWwufz9RLePr+RwBPsKA5MCHODetCm3GLik7IyzlL\nASx4IwR0E8mW0dBDC3lZ61heIU/eIdFEJFH6QPbPlD6sy4aUWN8nH0hOn6Sr\nAxT8n4m9rrLQc6XXD3KkuHBPqYnWX9q4QAM9rOCyf5MvCnzIf/V4UedvvqVT\nfQjn7mRe17a7hz+xIDZtjfXcMR2Fnl6SWf+nj+ZsvYZIG0FLUJosdwB5V2Ge\n78f7LqcwrHpS4tWJZtKUpdTTopbe85G9E3apoxuP51/MzOxXkyfm6WUX0ObT\n+qd93wKX39i+m/8O9mevXGQzXCnnw55vejlltyrYfexuqkZ9eNtAhsTLeX0e\ngQrXdrZnl9o5WnILzFg8YFbW1zvOS1oB0v5mn2lHhY0cPqngJQziF8OXxjCU\n6qW3EKQ8Rt301tw5lZiQ9nS0of4hOFP/tJhksVd3XITwLDabY4Pm0nchEDMY\nfBdA\r\n=Onhf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICm2Xd6UfU9q0INi8uH0Ww92/3QYAFztV8xeWMeqc9CrAiBw7zeFBwAm19mrAA7Fvz4bfYB3YSDgkUfBkBpeXFxRUQ=="}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.2.5_1573960594139_0.5885868260463512"},"_hasShrinkwrap":false},"0.2.6":{"name":"snowball-all","version":"0.2.6","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^24.8.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","canvas":"^2.5.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"24.7.1","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.12.0","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.0.1","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.0.1","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","style-loader":"0.23.1","terser-webpack-plugin":"1.2.3","ts-pnp":"1.1.2","uglify-js":"^3.4.10","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","sprity":"node scripts/sprity.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":["android >= 2.3","ios_saf > 6"],"development":["android >= 2.3","ios_saf > 6"],"pc":[">0.2%","not dead","not op_mini all"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"bc991dccdd8030abcae6b863311973d74b5b1d4c","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思想。 * 视图：fiber模式渲染，高性","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.2.6","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-X9RX4eHh+up5u9O7Rf3IXyOzGAbmpGbKeAW5mc+qtUrsWJmg+pzqMYs3vXaurKmhxpHdCyKb2MlMXLdxDSfOkA==","shasum":"51e6bc07e047ac806b23fd002b76d463572b4392","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.2.6.tgz","fileCount":243,"unpackedSize":1218697,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0Uv+CRA9TVsSAnZWagAAEQAP/iSpCK+GvoNx4vwJ8QWu\n6ozhjJctest1uv0At2Q+8avt6ao+MfjvFGSH/1MQMOg1S/8SFgFUYXO1kTHz\nhDAywdbiTV1iiBmh5atx+oXw1aonCNWDzpGjKj84VPwUxtuheyXsU4kMHAW/\nteatpJrH4gv6tA9uoMR99FxnT4pi3vjKD7dXt3cqAcOD70mKeN1HSfiwm/+/\njwikehhbApazewitQ+HnUQaWOB81j4FJl8x6Z5Ui3MuSGx02r3AkSUU6Iz9S\n/7CQqMEMCqAhQIxzZOun5E2GkN+3P9K/19heu7VxWm2f6lhWqs+Bp38GhnR5\n+TJ/zffD6HbFYtsAJumjp99f29/PRtBFqZ7wgsUjmCGTJXD9ka5XBR8x0ZXl\nMgkNggz5NMkgXSzgNgeg8NMDVtPSh96Pa6I6NJrVH5I+XP474sOVBMbmOiQY\nY4bhZAaUoq3JXq19TtXSMZP6PHMTSybEvMMwzYBVs0lVt99PDDSsJ67gwIeL\nGkGGTFqFFh04EXgZzwcIZ+npilekUaLpW1FBFzQ3DO7Jz66wEcmVulmC64QU\nPqeLkiJqrOTYYOvedA5BjfYWzEOjjaZ3Gc+h33Y3qfNekI5+BmgPnLwhQVex\nCHura6R4Vik19hq2wUhHeqhHqBuIVDwGXjNKIyTunxfPITcWbqN/zXYW+mCN\nvdq4\r\n=lFfw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE+4KJmCYZSe/d/RZDB6Kr9fqGQulT2Aufj0ql9SrTVnAiEAukXQFr6bXuLYlO1hfv4HL3JEuLP2WT41xt/4HqwK9to="}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.2.6_1573997565656_0.5790955192709495"},"_hasShrinkwrap":false},"0.2.7":{"name":"snowball-all","version":"0.2.7","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^24.8.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","canvas":"^2.5.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"24.7.1","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.12.0","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.0.1","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.0.1","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","style-loader":"0.23.1","terser-webpack-plugin":"1.2.3","ts-pnp":"1.1.2","uglify-js":"^3.4.10","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","sprity":"node scripts/sprity.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":["android >= 2.3","ios_saf > 6"],"development":["android >= 2.3","ios_saf > 6"],"pc":[">0.2%","not dead","not op_mini all"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"51304f6892dc847a3cc51d2875c9d44cf7c4bed5","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思想。 * 视图：fiber模式渲染，高性","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.2.7","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-+cTJ185xYW1N5qqflqxqDBFh4yKPqYCfnOqAGrxtKNmFpBLFBAk0lU/WmPkw+0H4XBB634UoKoPIPUjYl65Azw==","shasum":"d6923e20ace8e465785b23a48a52a0641f92e931","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.2.7.tgz","fileCount":243,"unpackedSize":1219620,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd04viCRA9TVsSAnZWagAAm7kP/in7OZ8Nuu/DjL5iM1iI\nBUtx13C+hKW+S+swAJpMbtvXGtGZgAV5oRhn5FcEeeRIZ0AR3E/kPM8ezsCe\nj4IlHrq5rdHyXQTkGgr7vhvIvd8HlTiqp59uq762HTQhcxopBkMC+nG0+FZR\nu0CxfFIO4ShVhyB95GBCuKSve92A3Q12cAUZ4cJzZlQAoWWS46EF9hMzm6bK\nWtzKYaqgt4qflBrQhXqT6O7a6xaA9OoUBzm8k3+a0SPr7nCtWU0vrJYsdxpG\nd+N2KCzdWqxjkq5aJxP91ARqKevBFeDLx+W+NJbHn4nEZa8CULMvibM8T0ke\nVjIh+KkSEuGWoPdZGdVufI82yf+owsBPmUeMAKT8rkC5lgERv71QaGt0FsEf\nT9uTt14CFUHBm91gBdOYLVAk2H6Wl+Rf4IaysfxEuIqzeMWTMPf3iUCWqtLg\nhH1FH2EiIilFVyhBQ2b7vlrXoUVnfC2hWkKuAdGc0D2wqhYNLs23nhr7H8Zj\nOQ2vYmufewQfO5ejn+5B7oARD4oZDZoKcFngH2X7GdSQs8wSWsCtVU1yzMbZ\n4PbZ/0fT3g6924RW0D9y3H6uYbkcS3HZF1a30Gb46H6xHEKwEasI+DJsbqAN\n8mOg1svtYfTBGLorpSGgnM8NQP0ub9gfJr33LDJfDkKS79ndrgqTxNy2oDRx\nGlz2\r\n=kBBa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGbBcRlZGQw8ZXcDdZrFGOce8mKZDrZXaeZpqzvwWktZAiBv3AXalafD62ISyjxBh66LBfLA2NDet5nobgzwyi+p2g=="}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.2.7_1574144993365_0.9153747325805497"},"_hasShrinkwrap":false},"0.2.8":{"name":"snowball-all","version":"0.2.8","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^24.8.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","canvas":"^2.5.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"24.7.1","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.12.0","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.0.1","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.0.1","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","style-loader":"0.23.1","terser-webpack-plugin":"1.2.3","ts-pnp":"1.1.2","uglify-js":"^3.4.10","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","sprity":"node scripts/sprity.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":["android >= 2.3","ios_saf > 6"],"development":["android >= 2.3","ios_saf > 6"],"pc":[">0.2%","not dead","not op_mini all"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"a50afad2f1b68b8974a4d8f661e8aa9ff2a79afb","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思想。 * 视图：fiber模式渲染，高性","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.2.8","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-W3ZZkWPe7agycHmURH4+3VE6HNQ4GjIKCuPm/tp2fEfPL/MAaM5BqvHsmv0tsSafWXTSpmVRdlcydL1FQsk5dw==","shasum":"6fa6c673825b0636cc48436eb874a548e3e30b27","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.2.8.tgz","fileCount":243,"unpackedSize":1219882,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd05HdCRA9TVsSAnZWagAAAMgP/2y2vwRlJMejQG7w4ZdM\nkQ2cM4KbeXDIXIFjUHLmEyNcQQFLWzKbQvcLoi9hZLVyaGyadYv//Hdr0cmG\nn5fyCyFpo1y37xdwYe0Vql/9yyJJ1Jtj44g3Ru0KUCcrY5tZGefLmgQaFkf3\nNa8Fp/DOCgdNHaCznPNhR+OAS/jHYyc5wy5yYU9c65vyw2iLs+ei3N5u7YJD\nk0iRTF3h2Iu7J+eHeyocv6vMKkFd6AIEeCXkXW7mbj9vtxzSSwFiPsOr/DV2\nqdVSz/z7FKvBoQ5qJECltwnrwo8ot2yHnFEyLUINiqnLCUIadeUcAoIolveP\nN/js+2HmZo64Iamg1T9UyA+5Wr3YrhRfiWNgWa2TvxItJG2jvmyw0Aip6opv\nNpuHFit+uh1rwcT37MwjsgWgGoFTm8kAgP4+c4u8kLnOxhxzx+D4fImPu1Ov\nuc4BNpA0F7mPAgj7rJHC8ZIZtbrbGedILRhXTXS68I19chd9X/to3uXVgsoH\nYbpnz0a+eh6uJ86Msupu3UFbvETFGVfzjSCmn1oMB7lTfRomfG4jW/Ssl6A8\nFBJE5gCONv6nN2cy3lxXV94WGgF81tOX9DSECbhqPMLP4BfU5bPv6LmvuEhP\nVlG2JWOj3Xsy03QzNA0Zp8n6XDYNxYN8t5tmHXOd/61nKSpO1vdyObQ8iwsj\nOTDD\r\n=Hk7O\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBrUROCWnkKa3HbjxIl2d+X8EeRMd0PiwASNOZ3PPT87AiEAjSp/rrhGA38aFNj+HbbwX2rQw6Kyc9oHN+GrjBM25hY="}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.2.8_1574146524873_0.6901790188343784"},"_hasShrinkwrap":false},"0.2.9":{"name":"snowball-all","version":"0.2.9","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^24.8.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","canvas":"^2.5.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"24.7.1","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.12.0","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.0.1","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.0.1","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","style-loader":"0.23.1","terser-webpack-plugin":"1.2.3","ts-pnp":"1.1.2","uglify-js":"^3.4.10","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","sprity":"node scripts/sprity.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":["android >= 2.3","ios_saf > 6"],"development":["android >= 2.3","ios_saf > 6"],"pc":[">0.2%","not dead","not op_mini all"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"8b10555c74f7a43938b2c81365f5baf2f51c9011","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思想。 * 视图：fiber模式渲染，高性","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.2.9","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-/efO5sKFOuIDG5YpgGGJ3uB7I7KbZ6YUY/xHANTn90jn3417jxJx0UGsKOSLPSrkN53WqkDMKXNKnWiQvrk1kw==","shasum":"c772320b1aaf825acb0b423f28cb1dc468c570cc","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.2.9.tgz","fileCount":243,"unpackedSize":1220684,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd13o2CRA9TVsSAnZWagAAgYgP/RigIOjXjmGCsl/wmPN6\nf29kEvOsOsi9l5zhgRYTSzgNDivvffXdNy/xhcNt8AqMXC94t33Tr85MauOb\nlJt4W7nHlzrZkFlrCVd8MSs/yoJj6SFI0QRmceclC4tG37hUkxddO+KukO6P\nDJOCXlqMKeMVAIW83de/8nedQFcpS5E4nViNmvluQv2Z9uHH/41HzkYxtkwk\nJdOjUHPdP2QdmhQJ80qDnmneo11NPfSYTQFWFTm3J34YWaiLG6/7HtdInlxi\n2IeBPPs3Tg2n98D+TO3Mys5+AIe7h/1oUOrZxM6Vo85LDI4zrzrR8PXBwuUp\nhqbcjSfUi/Y4RUe+kgWy8D+9DSUEMJRQfqmBSY2MVrdvOSgboBE8a2PrNGCl\nIBBw00GLte8ykhrJlu8ws9jU59BBWt5702NWobi6gi3fOdvT4DheQEGSHLKm\nTfbzBJSVPm51pa0LkICKCzpivwK7xPrv7cS/YJy1yJeH0gE6scJnQgPWhUxE\nwpfamj/f1I3mOH8F+Q9oV1m3QTgnchYsHbvJVbrNvvptvdZZGecAswTickMX\nJNELQDUjuYd5ceAl7Ald40lIwvsl248D6Qet1wmgrL9zKUQO5+yf5lKMQetO\nXVsauVSbe0o7NmuC0XUwQPJRoSaOXFB5uRaTnusfoGtwswtjCIE7eeu1+lz6\nuPcq\r\n=tvb6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC7cU0mAeMGqKUZg1bY21tMBi/9uWVFOXe1o3j2ygV6FwIhAOGCkc3Aq0Lz0P3H6X6nWcnIFBK5cDq0TYHmXEyizRjt"}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.2.9_1574402613802_0.7809095662347783"},"_hasShrinkwrap":false},"0.2.10":{"name":"snowball-all","version":"0.2.10","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^24.8.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","canvas":"^2.5.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"24.7.1","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.12.0","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.0.1","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.0.1","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","style-loader":"0.23.1","terser-webpack-plugin":"1.2.3","ts-pnp":"1.1.2","uglify-js":"^3.4.10","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","sprity":"node scripts/sprity.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":["android >= 2.3","ios_saf > 6"],"development":["android >= 2.3","ios_saf > 6"],"pc":[">0.2%","not dead","not op_mini all"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"636aa0b11d2b954dbef49a2410872b4ba095bb5c","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思想。 * 视图：fiber模式渲染，高性","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.2.10","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-2sgMCm5eKZvUKV9bucGenhyX7l8MwR1t5JQL94pkWYhJxGDr4Bb+UMwAbQmDJ1pxvW5v+MHxgUXE97G+3FWPkw==","shasum":"2b10a4fc348fdbf301810881d5cb4b93a5a6a6fd","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.2.10.tgz","fileCount":243,"unpackedSize":1221144,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd4JQ5CRA9TVsSAnZWagAAOH4P/if+C3nnM/W4EGfURPdw\nr8ZIX89nF04VTww6JNq9VY+FZ/SswF7ZdL3gtSBUlMn+wXS+DIq6JqgAZjGe\nrvFSHilS0lnw2TYSs+w7//0VOQ/zqBgOJRqriBHleqW2YvvBYvg+3tqmf/B/\nVJj7snEDiQgQ1QUoFaq7tyBgSk2Pk2felSrZTVZXM0H51TOAVAV//1rOMxVz\nmo9mZ6aIODiN/q3QCC3olySthuPdaJJt/AJWquvuKL5MrjVDWQEkAFPhraHa\nQTeeZ7Er2xYDeQJhZ42ckGG1a/9M1nfgn0lWeO3m3NjAnPUHM6dZeeautqJw\nO6xZ+VLB9DeXkUzozNvSZA12grArrCsq3vsKEKltxEi+5SMkJtuLi6vn0vIM\ncJg+HIt1ajdTzCRjcUf3cmh/Vl1oKdlcpbeOaprzmSu32YZJGyJDC+OvZ5NQ\noRiCOafzUfEsJgdncuztYqNsLR1tc/M7v/7u7RJU8ckD79GLicF4AqRIBNA8\npCC1Ur80Az34yUp1BhH/PX3pnR9WzGB541HCxfygZwBzc8JmWS9TZfDuxgMq\n2A/nCvsrrimxbglCkAli6mzHLQAB3HJAHBPLINnOUhQbyW715ueD05s4Xasn\nSORWviL/3+EksBgYyRYNb9PKTzlq4c8rHOV8gLsrAgHaj2OsZBaJglipCn7K\nEb8F\r\n=q8Mg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH/5OzQNIuUbwNhDZR8kxgqttk4L/sXLdAvg66kK8iXbAiAfF++4iG5dztutLtSyd85LP9RFGvOAB604k55LicV6Tw=="}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.2.10_1574999097297_0.7594022516459393"},"_hasShrinkwrap":false},"0.2.11":{"name":"snowball-all","version":"0.2.11","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^24.8.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","canvas":"^2.5.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"24.7.1","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.12.0","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.0.1","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.0.1","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","style-loader":"0.23.1","terser-webpack-plugin":"1.2.3","ts-pnp":"1.1.2","uglify-js":"^3.4.10","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","sprity":"node scripts/sprity.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":["android >= 2.3","ios_saf > 6"],"development":["android >= 2.3","ios_saf > 6"],"pc":[">0.2%","not dead","not op_mini all"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"8f3393c671d395721c1aa71d43ca93714e6a1616","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思想。 * 视图：fiber模式渲染，高性","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.2.11","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-fjGAme88FtUwSzgjP29IvOjTZBDfwB0OvD1nzB4cRv3BWu9doPY8JbMVlfNqmm5iY5TIm5AD0/sWNgohvGe9kw==","shasum":"4a5dfe203a6ba45a98d8afa295f2e4fad2855cd7","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.2.11.tgz","fileCount":243,"unpackedSize":1221219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd5I7WCRA9TVsSAnZWagAAynIP/1rLzEltBLDx/rJKnY8S\nJdD3UkSQ4omiROBG0EEtFktPeNDNLEtATY2+16dVwG8FQ4r22adUr3cwM4vv\npT71hqHFIo/PXDCdFjKM+6/pgWsDJuYV8fGsEpCkE4zHSCVe49leSJLUf4SY\nKbKwCYokq+MlwSj7Z2Peu76argvNyikxkmWJvNVQBDwBgbLi2w+3oUL5IdII\ng+lDXSLnfwkjkTxigjnS8hLWiFlLzC0YxXnJo7FzR0xmaGJtvlbMOrp+37r4\nWjYPAspNrMySREWrUr/RYE5qcuXhfE46WdlwKiJ2tfZVbe5+9c3+II0VmdnT\nFRVTIqSVhG5cVi/rYjOw1CG887ayd2lfBKlWqlRAZANUj8fPHkfZzTJ6QLa5\nYiFkmklF/yhB4N4M3oXgEryb8eZggjYsF5l0HWiMibco0kmJ/1x6CTlFcuo3\n0r956x9gTGo1TibOQjcRHJWsFiwXsUXGaATflWG4u+bSX0SXrgw5SBbyskwA\no8K1t+7G/xuCbwgb4FoP31dmpX/kFjun9jl98nU1qYKU3zKtPi7f3K9Hh5PA\nFaqqrrAL4hfvE95Rk9vBLyRv1DwR0eTfb5tuNg58M4BhnKtlujLksEiA5y6O\nlq3XDZMd4JDc5ZsVAkXo9X8E59Ge9k3VRhjKZcIrZN8GYUwuertWfbjHYciN\nlPn6\r\n=00Ig\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDHWdYCUSdsRmIl0R4AZZFPoLAmhwwQNflkp2cEXFd7tAIgJ51FUFFZbstlrXvLQ3ISpOKyQBzCaQxm/5Ywo1yTPRc="}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.2.11_1575259861602_0.3296800041467922"},"_hasShrinkwrap":false},"0.3.0":{"name":"snowball-all","version":"0.3.0","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^24.8.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","canvas":"^2.5.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"24.7.1","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.12.0","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.0.1","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.0.1","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","style-loader":"0.23.1","terser-webpack-plugin":"1.2.3","ts-pnp":"1.1.2","uglify-js":"^3.4.10","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","sprity":"node scripts/sprity.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":["android >= 2.3","ios_saf > 6"],"development":["android >= 2.3","ios_saf > 6"],"pc":[">0.2%","not dead","not op_mini all"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"550a64a37ece060f5b13fdb90439f46e7e41c676","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 依赖注入：通过注解进行依赖注入。  * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.3.0","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-822kcAVdZ8sTwshyBWyXOwV6Se31JMFms6SPJ4ba+0mBfebkcm6535epigciYD8ZzmzjPEDBBcpfPjyKSuuexw==","shasum":"ed8537621d1b7a67f52a21f1db667174af533186","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.3.0.tgz","fileCount":241,"unpackedSize":1279670,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeEqTVCRA9TVsSAnZWagAAQHgP/1jTv8Ywl5AFLxWO8t1y\n0bOeRoWmIdzU0me6d0YH7jBaqhyAbgSk5HUqRplNgFALLWstysxIImpk8ixz\nt1mOGPkFSG3YQZMz4hP34ZY9sgxqV2v904SYv2MMn3CewmERi7k5X24FM0k+\nGPJSrruBo1R29PHuIzDdg6DX8s2P20P9tZm6GdJgDBCKDu4NQhmSYGHsfK/j\n6yumx/uN0DcZd4TLMP7Ys6r7eRG62had1k7rcdli08zpWmSak7vo6uRRJ6GV\nETY0r6tZP8T/eDAQt4GuoiJeLHLdr559xjoeyIkXIts5aKiq5tdpBq6vP279\nJSGHTp428iA7JxEGzEhLJHRDX+P9d2irD0YDi8rdJtIrmp0+cTJMuIr3z83Q\n4JCdVKTWyEO4OihL25qWRvvWxb2C+3SnJ4yqFrmzBGJC1nY44H+Bn53ayUft\nqn/U6XZqzXcdzVjNnGblToO0R3tLjn2xuC3rAg8BNOEyVrNwpyRuRgXEm7QL\niHEcPwypjmKAN7MCWSoFFGUoVYcPAJP9LLuFwFtVuwitHh4o0vQTnUryYxly\n5zqvwOGZ2ubZZhF1EiQCmQdoJfNk51Kky0omlOb0Kf1g/t3xReiRPm4mnqVq\nJftqCmN7QvW1G3FqPDKguYQgdPClhcl6B/VxTVuEyGoEB6IApcoP3RJO+BjS\nonLS\r\n=crhi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC/G4zV6snGCKNABoAxvh1GNlJk0Ee5SbUA5/Q9YxBDpwIgR6Oc6WeYSBwsBHEnC63qs+OSfIWduQPIU2mrGAsUcwc="}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.3.0_1578280148052_0.13857428120706827"},"_hasShrinkwrap":false},"0.3.1":{"name":"snowball-all","version":"0.3.1","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^24.8.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","canvas":"^2.5.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"24.7.1","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.13.1","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.0.1","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.0.1","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","style-loader":"0.23.1","terser-webpack-plugin":"1.2.3","ts-pnp":"1.1.2","uglify-js":"^3.4.10","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","sprity":"node scripts/sprity.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":["android >= 2.3","ios_saf > 6"],"development":["android >= 2.3","ios_saf > 6"],"pc":[">0.2%","not dead","not op_mini all"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"6c4f8894df6602255b7676d2a1da18647687d16f","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 依赖注入：通过注解进行依赖注入。  * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.3.1","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-FrfN0pQyT60YO/kQ1tYs2kTiNj02SJX13tDYYRNTkS0ivZZnImlJKZ9NTKxWfpR3ML1cX08tKRUa1Pa0bdD1zg==","shasum":"267d8d4d565fec0871d051f48fbfcec2b593645b","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.3.1.tgz","fileCount":247,"unpackedSize":1304959,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeXMDeCRA9TVsSAnZWagAAhXoP/iakwmCegRAmchAXgi1f\nnncY8xO2hVy5qpwRjf4Pya9u21A2iu8orT5ebRHKQzg0qOG4iibZsAyeDKAq\nuFOKQ/lZgP0lUecgcrinsrLHDKlfgr1XZCVhXrEPETqdyubZ7hxyA3/V4zfM\ns/uuKfxfUJvOH1a/Xqgu5HpNg+1pLtXYOZu/3Bh63G8H0kX56X6OMCfshbQk\n78w69ehsLPCgQriU4Kg5A9FfeZsofQ6ioZOHQtkIIxdg7zumsm/BfnMN6P/N\nRdG+poh1mxW8xo5kWoBSLwVgY3xAoe4wztfXFPgjvie2UHtp2RwOV8brKgK8\nxo37IYaJ0hsRHSQVeD5IiQtQfh259rSKaRlyBzOigP+RM2/SZ6EREIwU/I6n\nu4qBzUVcFdTU9mTBatYeADIPeN99BiYLf3UueEDIYYxvpHkrwEzVTQJsYWA0\nnsq5KE+2723e3e+J75BI60bDPK55R2HvA0q8/GH0qGgYU7RtY9PgsVLnu+CS\nashSKA4VBmu1JB3EYQbp5XMH0gnb+e0UvVxMTk98rQqFtiwEa5DxiyCgE3fl\n87h9jjai6QE76/PJ6bdbxV7fQvwh/StIZ+Qh3DoXnmoKtv4VJ52GfzpSAfoP\ninjj7JRMaJ7J3d72Yy2Aak3/6TDbso8b3WwxVYpAWv4q66iLTm+B/WXigwij\nA9Jr\r\n=SgSs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD203pGqMCh3wk6l4pZqrqdugI4SCLsKiOwIl31FJt9owIhAMqWFiJQGF3G0j0fU7oizZH10DtUtZVuD0QaYyFEYLI4"}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.3.1_1583136990094_0.07599488389017073"},"_hasShrinkwrap":false},"0.3.5":{"name":"snowball-all","version":"0.3.5","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^24.8.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","canvas":"^2.5.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"24.7.1","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.13.1","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.0.1","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.0.1","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","style-loader":"0.23.1","terser-webpack-plugin":"1.2.3","ts-pnp":"1.1.2","uglify-js":"^3.4.10","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","sprity":"node scripts/sprity.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":["android >= 2.3","ios_saf > 6"],"development":["android >= 2.3","ios_saf > 6"],"pc":[">0.2%","not dead","not op_mini all"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"be916e1fc92592da1671bb71ccc3f9c9e652d518","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 依赖注入：通过注解进行依赖注入。  * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.3.5","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-5KK/OaGM+md5nQtTzammAx3696cSaZ48Aq8OXMt7od3QFSRrdoc8SZyQaz4H/Bu/UEzQHSlXTTIw73JrJrm3VQ==","shasum":"4bde76fe0121381aaa76c9e20c7c6d1435f90539","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.3.5.tgz","fileCount":247,"unpackedSize":1304900,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeXiqZCRA9TVsSAnZWagAA038P/i2dWH6Ka1mRR8+neC/+\n63C8YOxM6ci2E6AKGXXnggGSw/+ORoYoxdtCyEpHYUWQyGYTQCRf+8Pc/uIe\nxSPDL8iHolzPiT0cAKLz5WkuRyLvPeVilYpo/3wd05FGXhMSf7F4IqnQ7Bes\nX12goiiwQVUs/rw9/Q3OvBhL7M5ucrdARrwd/6skqfXUw16Mm5he9ec2JFJW\nBLP38DK/3WermmBadlTGlSMkkHq5IhcwmLNhiaeUJF2eGu6/6TOQjOlVTOhi\nx8zo/1DZWmpchTl1TGiVNSbgpWjA+6w3/WmY+29LufKqjVS6pRlcm/7kUUcS\nBQx7BXLcJfEL7lbXUMj1GDm6irpRY1b68KahyRXc3AqkVyZNdfWBKIc9lcBv\nVS05USTzwedPfoLKpJgWg5Ftl1B2Op3Vgk7DI9Lhge2gPc5cDYsbDIJ/0FtA\nELikoqXZ191ai8qDHtEKOTacwF5lQGCOH4ogzUABpbIHRBEr1tDQkIqPwdBQ\nYxiDC/jI0e1mItdxz3r5cxQixWl8LbQuv3ynxRbM9aZGEmgy+Dy2dkYay6TK\nv8ml6WFGsPkXKWjMM2RNLt7q/uOGXybyDBtyHr0Yxr0T6Cm58aYk2666lC0k\n71rbQ9+IFk3t+bACIu7oAKJunz38FCDGxKqHdx/CRgiAGVALZo71msaKqZja\nBCug\r\n=EsZl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCJudpzzJ53F+Ke04gCEY3PDwv59gM1dWtme0up030fqQIga7IR5rn3xYWD9LkDMbUBjSdfKznEI5tssx0j2IOaLuE="}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.3.5_1583229592744_0.8597218990871878"},"_hasShrinkwrap":false},"0.3.6":{"name":"snowball-all","version":"0.3.6","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^24.8.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","canvas":"^2.5.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"24.7.1","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.13.1","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.0.1","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.0.1","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","style-loader":"0.23.1","terser-webpack-plugin":"1.2.3","ts-pnp":"1.1.2","uglify-js":"^3.4.10","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","sprity":"node scripts/sprity.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":["android >= 2.3","ios_saf > 6"],"development":["android >= 2.3","ios_saf > 6"],"pc":[">0.2%","not dead","not op_mini all"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"02e34febbd33ff55aecdb65b215817a6c742bc4b","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 依赖注入：通过注解进行依赖注入。  * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.3.6","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-g/4r4MTZS7a6KNaOIV2dWY8VLXvqmnll6DG32bWB8CXlSB3ZPTwJeVjZ5rH2aWK6Bvov+cfwvemZ+SEQ3Ucfpw==","shasum":"1713507bae0a6704ad33ac74d5865419272261e8","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.3.6.tgz","fileCount":247,"unpackedSize":1304947,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeXxP/CRA9TVsSAnZWagAAqvQP/iMq2yzh0wdN4Cx9D6MG\n1JSyHbueV9hE6MTTCkMLgNV0IojJ88deZFolqtI2LcGi1gmhxCjKvkH46Qem\nY8qFKsJ8hPOzJNYED3uGtDKdBiyXm3Gq3LHi7BKS8y/5An/DWvAKFvEHW5T/\nHHVkILhCS73ocF9WdMBcBTFH+gDeLFdtHRb/A61CrFTUeA9F2cG0g0afVXJ4\n6/vPuGpJQuEg+lKzvABbwdnxZZDDS9um9YC0MKj3axOlH3IPNmojqSPb9ozo\npzOcLEaOISn6iQqt+rK1sikavKYYPVX+b6GWcFH+LwAyQ4KcaQi68wrYVvgs\nRqsQHSmzyDSMVRn5Xxn/5+/aH4sghEbiz29DA5Q4sYfJqt//I2O0yEhPkXw3\n1OgpYUj1Pz7MpJ/FNSctD8t2KAdW094JjPsv/OYZWeqIx+STueMKIlMAGrNK\nXAQwQzDR8aWAfeBe6i0GLgzrsK231B2leV6XjnhrpgpT5NkVzbfcutU1mETk\ndMOtR1o76Vxd4UItKSP9e38IAT8GK1KKaexGiMXIh2RDQOX35bO+nt7XVfLH\nJ79XDNAcGuRV5Uldu4QkbJXWvRa2Zj2H5OjgVO5N+CzXBFzBfg4ePzQLK+1o\nbl+Y2jfdRcuTsrmA7wgcSdQVR3SHd2hiPTcOGt6E7cw48bZzsQbaKuL4e+Sk\nNIeN\r\n=iNCi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCR/L76ESfGEXnSh2QqkwuODL0J0ILSij4mPnyFUde2BwIgbTYg8yvbZbBVpfWA7grU5cr27ViYYVCjVuYEUjzRbig="}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.3.6_1583289343309_0.057185830905868595"},"_hasShrinkwrap":false},"0.3.9":{"name":"snowball-all","version":"0.3.9","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^24.8.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","canvas":"^2.5.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"24.7.1","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.13.1","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.0.1","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.0.1","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","style-loader":"0.23.1","terser-webpack-plugin":"1.2.3","ts-pnp":"1.1.2","uglify-js":"^3.4.10","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","sprity":"node scripts/sprity.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":["android >= 2.3","ios_saf > 6"],"development":["android >= 2.3","ios_saf > 6"],"pc":[">0.2%","not dead","not op_mini all"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"8e817051c887b6bde37531c11649da4799ed0e10","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 依赖注入：通过注解进行依赖注入。  * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.3.9","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-mbYSTadzosMJR/gV6vr7N13lL2sRnOy6/e33aBBL9rXgt+NlZ8BEz2IFx9Xt2KxMOhqBRElASQUPr/RIecabZA==","shasum":"8101d4acee80ceedc35e4ce927ac84ba3172da7a","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.3.9.tgz","fileCount":247,"unpackedSize":1305933,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeYhNFCRA9TVsSAnZWagAAhckP/iRdSJbbexm4Bwv/8KJt\nUX3NlW/p657dtxnkMLgMQe9Z3vMLdblQ7kZup84e2kkG6BvxgBXgI0FLXBjn\nCLpUK4G6yuKRUlrdYqYGM4RKr8IcSospHo8ro35GsTS6lb1KdBYFyORUYPTg\n2o1O8+EI6VOSVs8tIK/K3oafgPAsmc3pMlnb+zCsSTPbrW3xo9/jt67iL4wE\nHiXbqJ/HDu0W7Ti4zY97rw1f2O5lTcnByZp66gfC4BRjVIryeb6NpdoCo8u8\nVj54z5bBPezMfamGUtGfFkZtMHCT5I4p86PlCZ5Si7NHGdBMsGJ1kC/4ovNN\n2SBpBfNIGVJhNcttCuYr460crw2zIx9WdUTNuMIh614dBlZ2fblvJ6NGSklj\nVMo/XHEve0RW/vwxFfpjb1t+oyg4WH4BvfuAXVAyGkWzpAolZek05x+luHwf\nru7J7uwbSbQWnlWob6KYUcn3/Vb0zHrpzadQ5FTUjHp9W9/O+kNAC4EJvfPk\nZoXwwlE4PdCM0Oyywzfc0Kvrx3lta1MSAHFkSYtrIrI4oCQD/cKOD7MkHnd9\n5LYbxKALOyHFcsx7J5Sd84X8bYIgrsNADsy96PBwm+45abkV0Dp5E9fOr+Cr\nzpu5l9VF61VJiXHJE+0pEhW/Jm+lrOU75xJ4ciiC+k7+5pxZae6JfWedmjZU\ncKEi\r\n=WNqU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBMG3RlBv2F5r1uemNzwVBHPtG5v2f/zrykXVQN+0y2WAiARSbSuG+cXagTzwlIr2HeBf6Hb238MfpggSebfUyQ3qA=="}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.3.9_1583485764710_0.2647685326520788"},"_hasShrinkwrap":false},"0.3.12":{"name":"snowball-all","version":"0.3.12","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^24.8.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","canvas":"^2.5.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"24.7.1","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.13.1","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.3.3","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.0.1","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","style-loader":"0.23.1","terser-webpack-plugin":"1.2.3","ts-pnp":"1.1.2","uglify-js":"^3.4.10","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","sprity":"node scripts/sprity.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":["android >= 2.3","ios_saf > 6"],"development":["android >= 2.3","ios_saf > 6"],"pc":[">0.2%","not dead","not op_mini all"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"dee62edda0de0aa59888b5054c343b70cb9180dd","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 依赖注入：通过注解进行依赖注入。  * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.3.12","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-fjS1jsKNdJZnEBBqMl6fg00IdVEWdsbLSGI4zfxWU9i5FxUycB8OBuPA3BA5jTxo/iBSYgLrMpErLaFUZkLdrA==","shasum":"c71808859ecdfafde1b4115d3553c3ca2c1de277","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.3.12.tgz","fileCount":248,"unpackedSize":1310629,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeaZsmCRA9TVsSAnZWagAA/dkP/j3gJfSNtGGlXCrg4zA7\n5rfvtkGRyFbN6m2RD/YiN5oKKEsLmtCgQAIun7JVei7D/xwMeOeZxLE9gakC\ngjhPMQoW3bjHdBa/whJXixD167Tvvuqe1mDBlSAPeZ642auJgkeXz+xvv6Mt\nimakNS0oeo0amzi7E8tVknMMtUYprLnCMoRDkdEmZjrr3calR4lJBlbPgOkm\ny8MbZUAZ0PhHfOZrtP+UzcVTF19/hobA0W8aEWgncv8mUtRS6A9AD0r2ngg5\nYf9FvERG1zqemFEF6dqYFk779pIHUR/cux7bamW4LeGxta973CGD+KW3NqsT\njMpoNm02O1ClbmxvpvFp7/HRjsr01v6U6xYACq7yL1nxSLcHDdq3u7hzDaT2\nRtR/4AHaAXb3H/7hPy6QQrYhTEvHgUTpUoUkgCHSkbGJbtAAGoJcCwV4BvyL\nE8ifgUfREjhj2znfftdmG8k8xhjeZf1uMD2xrRYCrgufN1W1AvPpMbJyY4Mg\n9+k21bygXWjEKPZGFdrAvcnQywNzlQ+TB0wAqdVRXlWTxX+i/ah0Yd1+q5B5\ndbDJR95KHgcpk98Pz+CwUmDb1rFCLv+KGIg4KqA7U+iZB1gg8IoeeDfOUUz2\npBz30xwXGj027LEmUjFsOTE2UG+jEs9aD7746Ku0H48dfwOE+5aAOeF0wnWL\nBI3B\r\n=tgLq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBnkxD5gPpMW3dLOY5SvUWeo9q3iUbrC1VxSvNen3o+cAiEAx6MGdvulBp5wKltQQA2vPGAYQ0D3a3ZdKPGm7IwUMqM="}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.3.12_1583979302324_0.3679997762247684"},"_hasShrinkwrap":false},"0.3.13":{"name":"snowball-all","version":"0.3.13","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^24.8.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","canvas":"^2.5.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"24.7.1","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.13.1","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.3.3","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.0.1","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","style-loader":"0.23.1","terser-webpack-plugin":"1.2.3","ts-pnp":"1.1.2","uglify-js":"^3.4.10","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","sprity":"node scripts/sprity.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":["android >= 2.3","ios_saf > 6"],"development":["android >= 2.3","ios_saf > 6"],"pc":[">0.2%","not dead","not op_mini all"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"455ae067dd172795ac5372d6c702f6e9d5ed9bd4","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 依赖注入：通过注解进行依赖注入。  * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.3.13","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-uIeM+L/wWabSEuJXhHCW1/SQ5/Zhg6kv/oMddR0E4gCIYWoL6rv5pDRtqQFDp4VdR4D6pllNLIVKITPFo+XqSQ==","shasum":"8dc1cbe8d99a7d4f661f65c47e209b7c9551d3db","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.3.13.tgz","fileCount":242,"unpackedSize":1319999,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJecEpiCRA9TVsSAnZWagAAXBgP/Ro2a90cYsnMR7Cvqvom\n8S+NjniLmozARZuQscVs+zjM0S2blRWcD8fMHmuvCtpsXt9IEz7/r7HzrIBO\nzBIhURBt+ToeCQoXb91zEC8RYoh2BRvyM3HvaZM+9YbmnQtSvb4bGDexTIjx\nkN53mD6/Fwe84fN9YcF5m4E4ewhH5F8QqSgU2cAH5vWkbXmxszpJid3rfmmE\nKB9jDIKdVDS1cZxPrZQDrX9Wu67jUyvflcm+YQhmditX7KAuI//yphjUbUA3\nXLHP9oo8pTu02+EHdwt0F4QwiY2s7Dy+jFzfX2+JeWPZeLO1UssSS5U9Rj11\nITbAyvQfNU6aorVBIoYokGD76qBLIX0VPA8kSiHkaoU0zBi1yvPKfOUmpVRC\n0crmMokJKPY5W7+VNAObGyfFFAum/g9bMARoZ8UWg68yXKa0MwcsD6YKOyL/\n0WKIR4k6VmtOoy7gHt4iuTlnNnkR77Dzmn5oqibSUATpIC/zEKWHRocWHU65\nryTbCkmtNG1yM1X41WQd8mikndto389AoAmXkJ93bW5V2Eju1P0ykBbzYw/t\na7HffhqREfgDMGN2PEojm5rGzatoNCwdifu+nPB4Akx/jFlOouUimOrSIYf2\nzTWt+cGgDZuWDOItUi4GYirs1dcpbgqFdf9HqZ8FEJA2xwvNX/V6I1mEjFaT\nq8Ap\r\n=7889\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCJiqZs+BQgjhLi2vqJG0/C/MpLoS50/MqdyI86ukUY9AIgCu+OQ16zEmPQS4kDkdjrqOBNxmc8gkMt+/o3gkuF8pQ="}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.3.13_1584417377868_0.5206271220818013"},"_hasShrinkwrap":false},"0.3.14":{"name":"snowball-all","version":"0.3.14","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^25.2.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"^25.2.0","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.13.1","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.3.3","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^10.2.1","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","style-loader":"0.23.1","terser-webpack-plugin":"^2.3.5","ts-pnp":"1.1.2","uglify-js":"^3.4.10","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":["android >= 2.3","ios_saf > 6"],"development":["android >= 2.3","ios_saf > 6"],"pc":[">0.2%","not dead","not op_mini all"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"92577892ca39395fa93041cbdb1b4ee423a7aeea","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 依赖注入：通过注解进行依赖注入。  * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.3.14","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-0iD6NzooNExowqMr5xjAHeGi+FYKjlsHNA+yGrrU1DFQZCzYbIZ+hNmXhxje28Od4AFCtZ6Tomm2F4cRIHmTyQ==","shasum":"2428e42599f7759fce9875b5d331c856254135a0","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.3.14.tgz","fileCount":243,"unpackedSize":1320619,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJefcFWCRA9TVsSAnZWagAAeqIP/RoL9GS5K3lA1XHwyawP\ncqsEVOjXTa4yzq7W83IKRYrU3V+QVY92K0aAeKlzVh9ayIAqGxSrdhi54JBO\nMyI3ixA1X20EBAQs0H3C0RZQfNetIKJEkplm4t7NeQ2FMS7etpzfh21U7Cea\nbPuklZD9Kks2jk1+hTgoZ2oOJjnsrKY0O83HT9R9V+Y0Y17IkWXbiG00KWCF\nrmVYfLiSJgpZiuPAQ6sXWbXMN+TUjBZshG+BlAjCm/BL/C3w+37eB9EWB/bM\nI2FdCtxmcFbYCUJrzN5lfaztHsvlMQH+D/LqrCCKqwigqXQlbB0GtMr9BQJJ\n9pPSxN1q1gMWaPv6rCFzmgu0pTFbfYuTXZ4gF3AAPj9Mp/IwWjEnzlnHzmOz\n2mu/XiT1pIvc92qoCevyWLWFlC0/2kpv6SOd0rLyiTFzhVk35O96BAktYUAh\nme7DsUB7UXZyPnjOfbbIlA8SamLCSyO+Dg/ZQ0jj43Sq4kbwVI+Pf9yWOA0O\nJuHbe1IGIy+9t1zL61hnAnzw5hlYwc4Fsy4etVw3o+0ct/eCODvwnXfYp7NB\nd7CIz8B9kdf585hx8vcuxYeP0Qj4V0yrtzjiao4tO96v/sj+i+0bYDpVlwLQ\niLBA3sZs9GiZ5KsPGF1YFJCQbsgBYV/wdvjTahahynN83gLekm1Hqwf6Afcs\n/GOq\r\n=iR2o\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCN8/QVxc6RRlYneziklFUwQLQis6ENWdenREN7xf3NZQIhANMBXdDE/9eWG+lvUdXcXUhXTGqjpVSEb98fLhk+gwHe"}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.3.14_1585299797637_0.6060852827286467"},"_hasShrinkwrap":false},"0.3.15":{"name":"snowball-all","version":"0.3.15","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^25.2.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"^25.2.0","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.13.1","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.3.3","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.1.0","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","sharp":"^0.25.2","style-loader":"0.23.1","terser-webpack-plugin":"^2.3.5","ts-pnp":"1.1.2","uglify-js":"^3.4.10","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":["android >= 2.3","ios_saf > 6"],"development":["android >= 2.3","ios_saf > 6"],"pc":[">0.2%","not dead","not op_mini all"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"25ea7ec93a4e1e9cd7b9cc3bc3f3a926f979e825","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 依赖注入：通过注解进行依赖注入。  * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.3.15","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-G0cCct452YbY4TtunUlMozYv2tSdfJ8GmKkQnCfShzKvypqkraho3fq2od1/ZghFa58OvT73z+sIzDqrqVs6rw==","shasum":"56267adff52b8cd9ebaf536d5dca2f5bb6fdc4c9","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.3.15.tgz","fileCount":243,"unpackedSize":1321337,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJegZ2PCRA9TVsSAnZWagAA4v0P/AvP22zJs+RLoOG1w9LF\naJAKLZuP52n+2NIuJq0fGQtEajbmpLIuKYNSR3Z4YM36OvDI1CiPTluvyOxt\n6c7+9I92SYMhIfNbtDpyy0sJVMbOq8AnfH07pG8eXtCi7R/jPYWcBz2VV+jE\nXBJMr0AIKhIq28rep/7zydSo3Fhmc353f61NJ5x80DuEfv2XGlJB4LWKkNwU\nKi5FqqdOTwCu9dy/pBQqff1QqmZ9WZZ1ZPj4V4g1IojUmMkC6GAqlDw3eml/\n3O+f9cVJGuUSeanc46FnIe5XY9tTYJUZxNp9GN3by9O5ySzpE8PCSCd5cL+s\n8v/tzeVFlnmsHIzk6QbI2/I3RUhuzJ8UufVPLrnbBNyRwGzMCcF2J4fLIWWp\nYhjX0VIaVrMqEsl+f10tf6ihaw3u1S1UeuxGhnbFe8HZim3iIV/7aBsmLWgv\nGFDDgIPAh2phiFNXVIIlFQ/y4mb88fNl6wMsj29+Rw58kSiNgyyyyE6HQHX8\n2AU9XL6bDnsb4guzK07YydmRKV8jNwy6w8uU+IhNoPmFEjnzFH9eTGKB8LqG\njLf/P9N/HdgjNpr+oKnNYqw0lyRyt5oO/Tl7v7rwgZOgVGYGEOoXUXeKgb7D\nc+ZNIL+KUufQ71HrwHU+vyCp/nhT8evFgfek4ot/ehU5J6QH7aRCi873z9NQ\nWStk\r\n=O7IQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDeO+CWuSQeXfmQNW007ywgkswm1/8Rq4BUuFpVs3/UoAIgSGqPvWrklHoDIp1zqIdLoHPDxRsyRaDtbxcwSIyWqfY="}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.3.15_1585552782404_0.1807445817578679"},"_hasShrinkwrap":false},"0.3.16":{"name":"snowball-all","version":"0.3.16","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^25.2.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"^25.2.0","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.13.1","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.3.3","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.1.0","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","sharp":"^0.25.2","style-loader":"0.23.1","terser-webpack-plugin":"^2.3.5","ts-pnp":"1.1.2","uglify-js":"^3.4.10","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":["android >= 2.3","ios_saf > 6"],"development":["android >= 2.3","ios_saf > 6"],"pc":[">0.2%","not dead","not op_mini all"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"cc33c113affea7bf7acf2896dee8867edb1aeb68","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 依赖注入：通过注解进行依赖注入。  * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.3.16","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-09I6NCmGFi8Kn2IwtUo281C6XD+M4dYPOsP8L8rwrvgruNaOgzpA1ruCUJxYEhDUy/UXGwUk/EJ8TCYv2l+hTw==","shasum":"58977a3ce44710618d96daaea752c45fd2d1e325","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.3.16.tgz","fileCount":243,"unpackedSize":1321389,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJehAH4CRA9TVsSAnZWagAA1LoQAKUZaTkt1RU82gywzuqe\nyXLUORC66Iz1cHE8sef2P4VDGrgjiIpFV5SyXhe405g6iwqHtcB0QKTYzzkO\n4VfB0qjDMh1Mm8DSzjBbIGDyA0e/z9tkJ0/bDhT/Z0o8gTL9wUjNaibjo6GS\nB4HATEmXefAlx3FYonJFL50d/NOeV1JIaiBnrL2F4/tMOexfmhBGP+Mx/NkG\n0XjGWd1SFXmO3HwjbDZgb4ikr4CfGGSCyCnjslZTZMo4D5NSVMEeB7WYSmkZ\nEXDql8TCARLzgzkTFVSU6W9sHFVo3v6yZs+BWll/hEzBP3Htx3LaYMfwfQUE\nAvUGVI4ccyOBXtcGyhJRme0xSXJvDgED6sUa6G+aY+CPqRaZ8Bu+n8apcxt9\nz/3RkF/K4czn5t6O4QbblC9Ez9UO62+wU0keHzvqqrkoQuX4CksXDxYnpJcL\nadV8RLzylFEjnZ6ly3ik5M6AVL0rCy8h0nmWiVfsRBglf7YAIPw5tPq+hKUC\ni/sGmpy34naKVi7OrPbeYoDlVNDezpgGIY1sATRA6EJkypdCXDI0SyX3sg/r\ny2BPRfAmvberA12YawQUcrJFP87UtmYNWMrGzQFbOIjzQQhdHvqM51PttGP5\nt/JQhAaaXw2OQw8W9nWvOczoEmglXaeVxE346dzi/K0c3ecpyAdRbJHnqfw/\nw1jq\r\n=KyfA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHYIceQELXamoNfpKo7KRIJ9bMUYn26e7Iw6NIDLiWLEAiBhMRiOGKD3lQCqySrDWkQF7mhg+UzkKuTg44AhvjAzFA=="}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.3.16_1585709559899_0.9273285965952578"},"_hasShrinkwrap":false},"0.3.17":{"name":"snowball-all","version":"0.3.17","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^25.2.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"^25.2.0","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.13.1","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.3.3","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.1.0","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","sharp":"^0.25.2","style-loader":"0.23.1","terser-webpack-plugin":"^2.3.5","ts-pnp":"1.1.2","uglify-js":"^3.4.10","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":["android >= 2.3","ios_saf > 6"],"development":["android >= 2.3","ios_saf > 6"],"pc":[">0.2%","not dead","not op_mini all"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"b4f726c89c449384e36068d79b713a50779a1b92","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 依赖注入：通过注解进行依赖注入。  * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.3.17","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-j3F0EFwSmvLbJ1vIo1ut2n2Raov91FOlsE3stWSSTcdmivxbloK56SxZ3N+8pA2XO6kuh/61PBpaCX/Wri395A==","shasum":"df3077dd7bb61400401309f46d0515cfcb55d62b","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.3.17.tgz","fileCount":243,"unpackedSize":1322555,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJenWHoCRA9TVsSAnZWagAAxNcP/0G1qSUrLTxZoVhOeOXf\nKjxktNLtXMP6UWfVlkn06RHq4TE/GhjupYdRHI63f9jBRzpxtOMwA4fhQXD/\ny9qHIvuTkO7OlOopntKUM4QmDILKoOD4zPDIZMjlVvxhvFs4CcrsEdCWTKGe\ng+KpjEpmuIqY0zysuSKsnWzl+w4qv5buBQQcomm6vCcSj0yIcfMydtk6fyLg\nr9zltqdZQOqDifkTF5Yd+0BBLLZKVlF7jXTmlkFbfzPGjlurPqJa1+fT5D1s\nPYO4hVVDHGQfdsjYArR07b64FTJWKfdL8y45tS/dNFwUPU3yC4iuoR0B+NLX\ndjesJ87I/YJPHT7VSUJGYIrXCWRELig2Xu0qXE8Gb8M3RJqQA3GTVUXpEiwp\nmo5laPNJo9OhiqFJElHOoebxQrMm9LuORoSoE45rKPYxrVM9GyvFsGsKu7u7\n0Q2L195jh3a3h/XLQHVxfJRpbJs4oQIiIntpc8cNtNR9DI6cnLd3V1ajMnjS\n4ymoikcFLhro0t/lsiqAL8ZgE4OkMOQ4o6FLRVI+N5k7JLYVHFcxzMrhTwP5\nJgdyLgSxTbqCOVc8KUlh1ILpvj3eFmzzJ8e4HqNJeICqyOIk4JDP962inLrN\n4nYDt3SIEV2wfMcSpRYS8oywsVT2oF/k6EOmcBdemKUncuj7Wp9wWsmWshtY\n1V+R\r\n=ul0o\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE6TA9yEAn8+xG36CrOmVzb+9pvYv6DPfzx9ISY9sflOAiAL2KqyztaGl4YiCOR7KDMNsgw5nQbsIR+fOWdO4e/TRg=="}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.3.17_1587372520183_0.1839224555661183"},"_hasShrinkwrap":false},"0.3.18":{"name":"snowball-all","version":"0.3.18","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^25.2.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"^25.2.0","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.13.1","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.3.3","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.1.0","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","sharp":"^0.25.2","style-loader":"0.23.1","terser-webpack-plugin":"^2.3.5","ts-pnp":"1.1.2","uglify-js":"^3.4.10","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":["android >= 2.3","ios_saf > 6"],"development":["android >= 2.3","ios_saf > 6"],"pc":[">0.2%","not dead","not op_mini all"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"326fe3787b37f6000fdbaf29fddee7ddde531348","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 依赖注入：通过注解进行依赖注入。  * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.3.18","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-5CIBVx6ZUpqqB5prgVtXyJQAIf5Lc7+THUkzMyIv+bAaqfFQYNqt4qrBTOUh4EPa8V9FA2FgDFqpNhILsA6l5w==","shasum":"6754c46ab771c2655854764cc73fcdcde6134511","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.3.18.tgz","fileCount":244,"unpackedSize":1320642,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe0HssCRA9TVsSAnZWagAACf4QAKLicNmTMIrJTvIGGlvP\nLiLnlB+1JAIR/C1aSOVCDVgfcAtODEByUa78AQA/EvRSvKI6ZgsRboA2kUhS\nV1ffcOKMChOBLghz3QPL4TR2UshxQHFYWr7WlpUYYj42uY/S1Mr2OLpPVDV9\n4wdeeH3D9jumtc2A1l4d/hwYaxkyCy3SVSBWzeehqkHyNrI8SBuALxOqqoPF\nFYxzIRV0kGv6VrTF8K+uyeRQc3CPytGZ8YLqmzuSSUy3mDFpVzinummSKKl5\nQ+gFUFIrvH3q7DgUH/4FbmCiUDQZWVKwqSRNsg0zlZlEJAIKN1DxjNPJtNDy\njkdNmOgGJ9Uj7Qj0HLlqG+zMCD6R4F4r4CYwftkcXdTWMoaELe4sglYlXAs1\ngLaPYrKAHQVYN0qsF7dS6KH3+vNGFjz4Ekn4i/sGDYAxK/GDGypoa8JVchQ4\nDejTQKDEth/0Z32uTgN0VKt+E1nUYNW2VGeTNOMjfdyW9lXEHQ7BbwYThag1\nVEwlsZLh2CDZ5a+MHCmwF4LjiUEb4TYH123UTQH4oXkSrSMOg8ssYw8wcFpb\no5b5ReubKhq85Y8mYAcsNrU0lzqNlM2G2Bn35MsRsnq7ICBvxP2zunWmRGgP\nVivoMjyLU4fjMBHs0/aEAClUvpj7YOwzOHyeKNMlH8AIFiGjPG0/Nhn5xPBn\nGzz7\r\n=YCIE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB/YBDWd2wEVV7NIqgKV4Vj2xPMjiPNTEppYifqRrTEaAiAfJJECf2G5IQJzpxwLYwTPGIRJa5A8XE+S+/LV52U0eA=="}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.3.18_1590721323514_0.46425667381233926"},"_hasShrinkwrap":false},"0.3.19":{"name":"snowball-all","version":"0.3.19","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^25.2.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"^25.2.0","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.13.1","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.3.3","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.1.0","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","sharp":"^0.25.2","style-loader":"0.23.1","terser-webpack-plugin":"^2.3.5","ts-pnp":"1.1.2","uglify-js":"^3.4.10","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":["android >= 2.3","ios_saf > 6"],"development":["android >= 2.3","ios_saf > 6"],"pc":[">0.2%","not dead","not op_mini all"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"115dc6416da885ddc3aaffec72acd54b6f59fa1f","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 依赖注入：通过注解进行依赖注入。  * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.3.19","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-8qZyx/JT6CCl2KdwupQa9+O4ijEjRx3HoH/NC7dcD0uys+VymhY7Rh3QfwJkn3pMOedgA2NR4kBzSFz/5i14PA==","shasum":"4ac93a53d91d0663d0beb8e06471bdb1f0555773","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.3.19.tgz","fileCount":244,"unpackedSize":1320942,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2ElmCRA9TVsSAnZWagAA6KMP/0PmCaWfOYLPuQC3topJ\nGq1Kgb7Sb1K/G08adIAAZ4yQnMHo4/eNSS3WcKCubRDmlxhINN6vmPeLksG8\ngjwLbKgk6A+NxwHbWNw50VNumtbbp2ab0ScwIq+uhKRHg0ZEo9uvecPxzRU+\nLtj5414nSCCyJ9IP56eryymLTB9Ufkmg5gYa1lJTmfHwgiAI9J/+BgGadIWM\nwnQ4d4/o5Uu+6aONf4gTmvHEeH0HOKc+YyAMB/zTktgHs1HIVVkaTlDrEC/c\nt1s46SrfzfQUuWdfS9TAkFTzfbPml4ifmcWafj2uJdEEppZP3G+qucAb3bVT\nSfca7qxhvClaujk+7k0qruu792IzIIj/QS2zAQRcTS8N1ww30x8DV1AVDYeX\naSU8o5SlkyND8bY3YkuHVHcDgVhgZSHHKSoNqV33An55G+7FOM2MjPnuVNGK\nnVlKGOL3FuDbo/x2cyrCBztRLaJsDUSZIiGDyMTcEintdZEx7oZGeAFI1jhG\nFWKnBeuuixbNv+X+rY/qQlir8OFsbErKGP9ydtcoME+mqSSofEkaokfJB7NU\nkfd19WPfJ4Bcyl9rJfKKO4shGy2BxJAf5XJbsi4DNQPjQbk082AAd+2y6up+\nGk1L0Z9vYdTdeuMVPKgYsxbUDbAm/DNrYG7zj6WdXQ6WdO2o9kPuJuThtQbP\n/PkW\r\n=+Y9N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIENaqW3nR/QTYQP/iysdZA47y03TbovsQ5HCF3XiiPSlAiEApqyUyXb+srmKhW/Ansbn40oAh4AVuEkrLx1C7XWmgSc="}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.3.19_1591232870105_0.8531099873954151"},"_hasShrinkwrap":false},"0.3.20":{"name":"snowball-all","version":"0.3.20","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^25.2.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"^25.2.0","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.13.1","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.3.3","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.1.0","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","sharp":"^0.25.2","style-loader":"0.23.1","terser-webpack-plugin":"^2.3.5","ts-pnp":"1.1.2","uglify-js":"^3.4.10","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":["android >= 2.3","ios_saf > 6"],"development":["android >= 2.3","ios_saf > 6"],"pc":[">0.2%","not dead","not op_mini all"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"115dc6416da885ddc3aaffec72acd54b6f59fa1f","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 依赖注入：通过注解进行依赖注入。  * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.3.20","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-K6SVcYoxGB4v0CCd8KEdfZo8xUZobLNPkFCBEBbDd3GLac/O5c0gyaU00vJhWJWyHPcWjEgXUvYXPdUPgVp41g==","shasum":"fcb05966e592a92096c1d26031892cb2923da038","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.3.20.tgz","fileCount":244,"unpackedSize":1320973,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2JNtCRA9TVsSAnZWagAADgQQAIscqvytGiUu4UtIjyCs\nXWz04AtkcFkeC/ceY6itCHnUQDYXUbiKWOxtOCeBUtz5MST55hhBQ56neb4R\n5ngIYa67yw6KYS5IED547ax9wSQDuqFgpLrHm3/6ImPEkiFHvY9yJ8DD6ADd\ngyJBTbO7oQAmZqX2xZqgG8MCsTh7y/5mQg9hNimAre7tey+o6c+jlI55shPv\ntA7C0lnGkwQIz6cq5O8lQ244iSC6xsPeRmVgPmR05sUXZk0OYTCuI1v6hb/J\nxCU/0oPyVwQ9Ka94YXLJCXZw+yHZrKVY6kQv2CexB7AkzQ0BICLKGuHWSvJR\n9iMLqLRJxFmcrvVW6j+Dh2O1hyz9Wug1iPl96t/L68eS/e1kY1/tXn8As98K\nw0xLtEfm+w8JcZ9XIM0mS2swhlnz5+kxDyZs7QCYiy1EEqrKbQU7uM3g6fFc\nP42lyJzGyRx1Jftjd2ZfaedCNU+45KljGzKaHpZBwqWi5N4UcqSMnpWXZIzT\nm7HV2E3MrBql8UOJXvDEWVG2hkU1wtcjYRtVJtr4zHG+zS/jbkpBgEVpDQJi\nRYhqqMBby/rV2Zh/v+/3RJDVUucwpkbPCt9v7PohUFDoikuTeTLCSq4JXNqT\nUclRHiDtiYo33nVpVbKIBoXfn8BU1V/ctAs9EGTzDFEV7mCmmbv+SpzGmZm+\nQFNH\r\n=gAqG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDuZj5J/w2uiY1hT1g+zbirZbGuUJS1LnSWlUJJyPbHXgIhAPqXG3cyzy6cDVmsTNnwtDhmZrhHy0IzHxmctpBagEsS"}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.3.20_1591251820702_0.11834122643936729"},"_hasShrinkwrap":false},"0.3.21":{"name":"snowball-all","version":"0.3.21","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^25.2.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"^25.2.0","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.13.1","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.3.3","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.1.0","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","sharp":"^0.25.2","style-loader":"0.23.1","terser-webpack-plugin":"^2.3.5","ts-pnp":"1.1.2","uglify-js":"^3.4.10","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":["android >= 2.3","ios_saf > 6"],"development":["android >= 2.3","ios_saf > 6"],"pc":[">0.2%","not dead","not op_mini all"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"1d25f0020651858313586022382168c161ebabc8","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 依赖注入：通过注解进行依赖注入。  * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.3.21","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-jqcL1ndBryhBR4/iahClkKMvi+HMYJSAmOMHTGi/U3ZJKxQMJwwm/nfLnHwnE0fgo9SpcWnhM4c0vdlzXnD9Kg==","shasum":"7c975791d4b692f10b27828934bad23e97f18471","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.3.21.tgz","fileCount":244,"unpackedSize":1321435,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2K9lCRA9TVsSAnZWagAA1xoP+gIzGhD+/mYStbhau8QE\no1gpofAaqAoetY88qIJjvbhoYrFQ5Sl1E4nxpsm3H8wB9NmgcLV/yBr4c1El\n7wYNafOK3A2sEyQfPQmeuvR4YJ8fDEBp6TzLHIXAFE3wgfmZUJ4ep8Y3UVBW\nLVCIOrWuq92uOd4+yBn5YSHTdpVz49eU8OrCeXvFcoI/4gfhkRjq6ZSSoJ9U\nmd0ZC8D23XFPvksQrNNtXeXXynE4BjExKkNctaEU7Ac10OlGL2ZXq0bq0p+A\nZXmu0cnGgWelQjIENWVZXDgHCN4gl22aUXJb8Jhvp25OmzJQ8RkFGPI2dGnM\ncdV7dyAkyr6NWH/oJ7GBTyjbcmcc9TpKhZl3HfORFC96qoVZ+zbcNnLkbtY0\n2eytenOxqUy5h0+5h0oNkYdLY19wTLm020HGG1BzhsHhuRzjknrZJyMABNDJ\nC7X2fGXAzZYNZWX5zlnRod1w9edC1w1urx2wMfGf/QPwicxvRvOcqNZq/fpB\nrzSvSTw+4eiMO20sIJ8r8l/yrVoS48DY3eA/e7Eg6xanT3vvPJGtcJrXh33a\ncHxg61PU6mm2HaqEJbmf49PUKS1uOC89VXWVw80CjPL1FRWS4PctSBwTMEiR\nvVEmYOe8a1m+VJUeXsL865TbGVyHR+WlKvaRmggr5s8KA2HcvIjZ05/Tq7gC\nOOeX\r\n=Sn/9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDi6e+5ocjDOpX43w6DY3r/3XfjxV1JLb7523Ln5l9OEgIgX/tfGuKla/M4yNRxfj/7ruqz/KrTcXKbWkUpTH1ju8c="}]},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.3.21_1591258980907_0.22526765076773847"},"_hasShrinkwrap":false},"0.3.22":{"name":"snowball-all","version":"0.3.22","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^25.2.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"^25.2.0","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.13.1","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.3.3","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.1.0","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","sharp":"^0.25.2","style-loader":"0.23.1","terser-webpack-plugin":"^2.3.5","ts-pnp":"1.1.2","uglify-js":"^3.4.10","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":["android >= 2.3","ios_saf > 6"],"development":["android >= 2.3","ios_saf > 6"],"pc":[">0.2%","not dead","not op_mini all"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"79a2333178ab9ab57f08b2865d617a03c3f58899","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 依赖注入：通过注解进行依赖注入。  * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.3.22","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-by1uRFvLhYHDEJwbZ6uaSTf8aZRvCTLzx6vQMYz56GfvMiphggQrz/gyjRVLmsL2U1b64rs3E3fUi+Meyb2k+g==","shasum":"9314011572c49d86dcfc63dc9ee80d6689c61f0c","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.3.22.tgz","fileCount":244,"unpackedSize":1322599,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUAjeCRA9TVsSAnZWagAAe4MP/1vZAH+fwUcb4PkN0L3U\ncEOBPJg6UkkfSpu/lhNusuYYO7CM5sA5FXO/dsn2SdBDV23HIMcJGl7qKuJm\neg+H0acPgQu82NJdPSy+oG4Ez2qdlCBTK+HGbyDkjEGbN+RZ96zi2EXpvy0A\nUlfR9wergGJ8Sv5/plYn7JuuS57AitoapPg7ntUHNe5PFxC1KwbdxQLxLs4o\n2qXOn38jGPPCnWxYvfGTEhcdFHQdm8t8fIgpb5+5E+6RYUllR9viSwZ2feGa\nwvb89HsIged5Q0LhFbhWt6YCARFQ+0RLrc9Lk/YDRDzgJDcMTq/WKRTNR7kt\nCyLSfDq7Ea++HOEcx0h1XSeFoabx9ZRGFD/PqkZK1OyIDqWdId0YX18Lt54k\nIDFu+7kqwF9jM0kldQPiAyzRosYnlDRv9A9M1Ab6ZcK1ZY7hkdVFVzPijMuB\nUYXmdDbAmORn1BAPSh7SHluVe8PmIlgRBU3/pOttlSJnHk2MPo6dR0rzXML7\n3FuTx6/m4DWyyzcUGl7S4Af9pgfPUnUR4BBpMkxXTzJHqlOJ+Lwi9i1GiDuX\npPErOLSTRjf/72MRUnBP5iFVMC9gTybJ27nJ15ishKcdTrYPY928IPmFoudj\n4HlZZYJQz/6sVu/vPwuzsnkKsJo4tv69ee8FcpqBSKQx1L1gPC9DY0WLfwqK\neF4J\r\n=GOFo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDJPAwPoyjHlYQaCARihWLfg/QMKu4FZV9vyUCtRsfJigIgONj5WZshsFIUGsfzr+6uvPMRKibW48Ki1QQ6sC9/azY="}]},"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.3.22_1615857886023_0.12774490752740708"},"_hasShrinkwrap":false},"0.3.23":{"name":"snowball-all","version":"0.3.23","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^25.2.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"^25.2.0","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.13.1","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.3.3","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.1.0","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","sharp":"^0.25.2","style-loader":"0.23.1","terser-webpack-plugin":"^2.3.5","ts-pnp":"1.1.2","uglify-js":"^3.4.10","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":["android >= 2.3","ios_saf > 6"],"development":["android >= 2.3","ios_saf > 6"],"pc":[">0.2%","not dead","not op_mini all"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"c3d87c1e4913884ebb8b2b979444149f57284418","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 依赖注入：通过注解进行依赖注入。  * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@0.3.23","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-lxyDmmdRy+pq17qbQIb0AF9SqzxYxbYscLor49g1rN1syChFjf0JfvCq70eO9m6ALmYPEXOtJPcmM0Z4YTDxlQ==","shasum":"37ae67efea5ae0245661ca331f009bed2b55f73e","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-0.3.23.tgz","fileCount":244,"unpackedSize":1323159,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgokhyCRA9TVsSAnZWagAAAu4P/RYbodQWiUdwRKdmFGNS\nXTLEcR7yPAZhF0HSFumGeCR7EkzXfDzkxYFJRe4c5zjS3N4Ww0E9wXKYOi3o\nUhCaFF2oEIOx2H+bqY3vSCZL5epGd3msXR2tjKxFFdnPH6/uma++eBAh1PyA\njSi6IpqkB6GbeYk8LFtnT+vf1+RoKE682gTLWXdChvj1QwyR3YC5/lIvBhUu\nW4fYACJU0bFJy/jWVNzRQ8saCXqBNBVU/V94BGZ3axUNZzG0e4xIrZZwLxgR\n6YhJ1Xipufav/q4R5m9xawt6CtBcevQvP1TaFmJuEJd9hsggp7ISE51860l/\nKMgKrJJ81zq73Pu6s8IEEZH8YyjVQuPhhLCZkQrkvBqpg/JQAb6q5nC8rJKm\ne9LV0xQzXTvmmfyg3C7BxW+1PFGMUl1PPvx0Vb6gjH2uPDT9V5FyPvb0T3+3\nhigc6ZKbI+9UkbheH4Swvo3Io3yjrWFwO5C+0Uik2Vz+AXzzUv+x6wiEGd9x\ns6e8la78RFVTxcawteMLvXU8xfPuZaBuRkGLrmi3UlFQAImu6rRmkrX+5tL/\nLFmvEbovg07N0rX50KVe6g8NPIIabzHDTZ0D/vBsJ4dTPIHQd7TcQ/HGsocx\n72lsJZvVaKoQbP4pRaZwOxZDseUK1t9rQNnBw4NQIfXeWAR3UAEAGog5Ki28\nBVs4\r\n=yNit\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDYKzxKpM8zP8jXB7wS6gOiSFCchzVMh0UuuwicaFbSzQIhAPfghJLEElWlwpsrAO8uDiaWJ/CYlarWvr+oxcakofI3"}]},"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_0.3.23_1621248114307_0.3345250964591584"},"_hasShrinkwrap":false},"1.0.0-SNAPSHOT":{"name":"snowball-all","version":"1.0.0-SNAPSHOT","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^25.2.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"^25.2.0","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.13.1","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.3.3","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.1.0","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","sharp":"^0.25.2","style-loader":"0.23.1","terser-webpack-plugin":"^2.3.5","ts-pnp":"1.1.2","uglify-js":"^3.4.10","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":["android >= 2.3","ios_saf > 6"],"development":["android >= 2.3","ios_saf > 6"],"pc":[">0.2%","not dead","not op_mini all"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"957b6b8221659e20b3c024ce58a17ebd3b1070e4","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 依赖注入：通过注解进行依赖注入。  * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@1.0.0-SNAPSHOT","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-g2NCvuBj4qHou8fKlvgjVGJQ2ToDJekA+/irKAFWBIAEJVrn27cHedoppeh0uyzQlE05id9fLzGWiBpa43MoEQ==","shasum":"c51a536eb39fc70449f2381c4837fe959cab59fd","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-1.0.0-SNAPSHOT.tgz","fileCount":244,"unpackedSize":1299832,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBX5jmENg32opul17PJfEDcwbAHyaa+uJk7dhnejLsFMAiAUidlni3OlMP3r0cSxiVIRmNU+B5ODPMsl2IVrh8CeDg=="}]},"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_1.0.0-SNAPSHOT_1633917431311_0.9565646333119557"},"_hasShrinkwrap":false},"1.0.0-SNAPSHOT1":{"name":"snowball-all","version":"1.0.0-SNAPSHOT1","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^25.2.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"^25.2.0","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.13.1","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.3.3","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.1.0","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","sharp":"^0.25.2","style-loader":"0.23.1","terser-webpack-plugin":"^2.3.5","ts-pnp":"1.1.2","uglify-js":"^3.4.10","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":["android >= 2.3","ios_saf > 6"],"development":["android >= 2.3","ios_saf > 6"],"pc":[">0.2%","not dead","not op_mini all"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"957b6b8221659e20b3c024ce58a17ebd3b1070e4","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 依赖注入：通过注解进行依赖注入。  * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@1.0.0-SNAPSHOT1","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-KSN/iU0/ommCCQgWidjeyYRDSg30YTq1fyB6T3ajnNerLMS0wiLAMyKRylZfKaF/oD62JNbTYW2HoLeV0Ax5gQ==","shasum":"7c755fed63a3eb69a2b58ff9232273024c8746df","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-1.0.0-SNAPSHOT1.tgz","fileCount":244,"unpackedSize":1299825,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDkpzjjfmlcwH6kcxa+jdCLR24VGaPwQ8v330joxtiikAIgBAoYOBlnxn+TxSbCmBVKmTS61v4IlQDANae3uWRjLt4="}]},"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_1.0.0-SNAPSHOT1_1633923639121_0.9722476775218611"},"_hasShrinkwrap":false},"1.0.0-SNAPSHOT2":{"name":"snowball-all","version":"1.0.0-SNAPSHOT2","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^25.2.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"^25.2.0","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.13.1","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.3.3","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.1.0","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","sharp":"^0.25.2","style-loader":"0.23.1","terser-webpack-plugin":"^2.3.5","ts-pnp":"1.1.2","uglify-js":"^3.4.10","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":["android >= 2.3","ios_saf > 6"],"development":["android >= 2.3","ios_saf > 6"],"pc":[">0.2%","not dead","not op_mini all"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"957b6b8221659e20b3c024ce58a17ebd3b1070e4","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 依赖注入：通过注解进行依赖注入。  * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@1.0.0-SNAPSHOT2","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-7ekVkICoGFZkSXT3a5UfiA+T+oPYk/ajN6oj6HBs2Y8ySFqsLvFzdOFL0AnMq1Do3fPtuKZ+fkZC7aAjoPhj4g==","shasum":"6e6a8f9269eb17f44807261c506716babbc9759a","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-1.0.0-SNAPSHOT2.tgz","fileCount":244,"unpackedSize":1299951,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh27fvCRA9TVsSAnZWagAA5M8QAIz67nqcm09MolajH3ya\n8WC9HyHBqr/CKaI6FAjICsCOsw4IzPSKqMK6e5/Pz2EE8PmUCuFSt1v8u5f0\n7zpjeu5TkOofeg4yLm9RkcWkMF5i+5yB9LQPuunzcBuk6FWXUevwYH4211KE\n9VSASVH6cqNJQZMB8j+gkJOyl3rY5wty+XgmJK4zAz/IgJZjY8aQo7z3AS5i\ns8G7CYSh5W9YfYiMIgsy5MXdRtUy+neyzx7xtZ74x8cjeKg10rr6WCljy2uG\nY+75ro5Q5qTRIe5nFuBxz6VWH62Ay5LlPuK86xcRzhokh0XejZFXIViw/OFW\n77UeAvO6f7AwQpn/AKdJSThZIf5G4Ey+8UyhoBgbKKegjf9774oFSIuIbGOe\nycABt53kM9bupquzJ8K4G1uJLi9BjL6AgIS3s3zUp0aXshoGOlmb5tkOB8sB\n6pgrIGpZi86w64FDKLm6NR582i+MnIhMD3ZRHKPPaSWYeKLFgYwgF7r1VSRV\ngizYt/e/Jfe+Lnm3mSKpnsqy9JM+BJkz1hYGknDaGVV0eeEteK8V0MOyFpn4\nbDZ4UnPlRYX02osbrLt3KsdiAdo6zW8Y+768gebIJpffYrZYmV/rk0y9yKh/\nE6ayi4im1ffmz9JtpLnMK1FvktD3bGs5KacE+BwcnLlIz9TEPejBbsG1xOGp\na/rD\r\n=ImW3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC6danUCJ7cS6NIV05ymu0xEWnkKEvzYGB02CLRQiOq0AiBfQVlJmv/Ow2K8I7giffeExpdWOesVfBbSLdAKM31qGQ=="}]},"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_1.0.0-SNAPSHOT2_1633933514626_0.651865219758722"},"_hasShrinkwrap":false},"1.0.0":{"name":"snowball-all","version":"1.0.0","main":"./src/index","repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"keywords":["mvc","mvvm","immutable","template","snowball"],"devDependencies":{"@babel/core":"7.4.5","@babel/plugin-proposal-decorators":"^7.4.4","@svgr/webpack":"4.1.0","@typescript-eslint/eslint-plugin":"1.6.0","@typescript-eslint/parser":"1.6.0","babel-eslint":"10.0.1","babel-jest":"^25.2.0","babel-loader":"8.0.5","babel-plugin-named-asset-import":"^0.3.2","babel-preset-react-app":"^9.0.0","camelcase":"^5.2.0","case-sensitive-paths-webpack-plugin":"2.2.0","css-loader":"2.1.1","dotenv":"6.2.0","dotenv-expand":"4.2.0","eslint":"^5.16.0","eslint-config-react-app":"^4.0.1","eslint-loader":"2.1.2","eslint-plugin-flowtype":"2.50.1","eslint-plugin-import":"2.16.0","eslint-plugin-jsx-a11y":"6.2.1","eslint-plugin-react":"7.12.4","eslint-plugin-react-hooks":"^1.5.0","file-loader":"3.0.1","fs-extra":"7.0.1","html-webpack-plugin":"4.0.0-beta.5","identity-obj-proxy":"3.0.0","is-wsl":"^1.1.0","jest":"^25.2.0","jest-environment-jsdom-fourteen":"0.1.0","jest-resolve":"24.7.1","jest-watch-typeahead":"0.3.0","mini-css-extract-plugin":"0.5.0","node-sass":"^4.13.1","optimize-css-assets-webpack-plugin":"5.0.1","pnp-webpack-plugin":"1.2.1","postcss-flexbugs-fixes":"4.1.0","postcss-loader":"3.0.0","postcss-normalize":"7.0.1","postcss-preset-env":"6.6.0","postcss-safe-parser":"4.0.1","preact":"^10.3.3","react":"^16.8.6","react-app-polyfill":"^1.0.1","react-dev-utils":"^9.1.0","react-dom":"^16.8.6","resolve":"1.10.0","sass-loader":"7.1.0","semver":"6.0.0","sharp":"^0.25.2","style-loader":"0.23.1","terser-webpack-plugin":"^2.3.5","ts-pnp":"1.1.2","uglify-js":"^3.4.10","url-loader":"1.1.2","webpack":"4.29.6","webpack-dev-server":"3.2.1","webpack-manifest-plugin":"2.0.4","workbox-webpack-plugin":"4.2.0"},"dependencies":{},"scripts":{"start":"node scripts/start.js","build":"node scripts/build.js","project":"node scripts/project.js","test":"node scripts/test.js"},"eslintConfig":{"extends":"react-app"},"browserslist":{"production":["android >= 2.3","ios_saf > 6"],"development":["android >= 2.3","ios_saf > 6"],"pc":[">0.2%","not dead","not op_mini all"]},"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFiles":["react-app-polyfill/jsdom"],"setupFilesAfterEnv":[],"testMatch":["<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}","<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"],"testEnvironment":"jest-environment-jsdom-fourteen","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest","^.+\\.css$":"<rootDir>/config/jest/cssTransform.js","^(?!.*\\.(js|jsx|ts|tsx|css|json)$)":"<rootDir>/config/jest/fileTransform.js"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"],"watchPlugins":["jest-watch-typeahead/filename","jest-watch-typeahead/testname"]},"babel":{"presets":["react-app"],"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}]]},"gitHead":"eb00960cd31cb56f112acfb867d7e2ca2f4e4777","description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 依赖注入：通过注解进行依赖注入。  * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思","bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"homepage":"https://github.com/sorrymeika/snowball#readme","_id":"snowball-all@1.0.0","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-FHBiH9c5mf3hkP9qhrP3PS0KZMmb+Q1hVGVqzVXczpI0t+Q352hncXZ2Hn3H+Alm6vdsI31VFE+V4vQry2Ge4w==","shasum":"698c24e2e412d8532ca1fe580fddced8beca4502","tarball":"https://registry.npmjs.org/snowball-all/-/snowball-all-1.0.0.tgz","fileCount":244,"unpackedSize":1299997,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH0NKbCUeQljFxmgZtsk9WP8a7kvohjrfEE1qA20KBDeAiEAkFzkYANe09xwBdNYl6WW6BiHn0hRb1Joj2Gj4OfwHZg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi/Jl7ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqfWA/9Gcge5qCMaDD9O0HAxhTQlrqTSW0UsIhzSQTLEDFhzh4zVk+w\r\nxeQVmyJzfHQL9QhYy22uuoBrGGODmuJU03nsskdZRiJZKSieIqtNIIG3tO2f\r\ncpVFDmMgT6lHxd15UvJ8zFpH01Ih7eWi2YfyaDUzx+UKgsDGYSbtu9PD0S7s\r\nnRZWVrWSMYIJigjvJjVf/wZFFUIZh9PysVJ0AYqMt+a17+nRD2ms3WNsV7aw\r\nGkMoBEhzUYLlNPw1CYSQRKh/FcUuaRnKYn8VLbF+fZeAzLN9XzieDMYUh1UR\r\n7dNjvC1Qx3ZoA1B9aUUYzor/heEXoEfcDUD4+AvRTQWI8w/mBBKU+atDBw4i\r\nCPMdz0guzNq1pdzizo09pe5iO5PXXD4SksU20Eciq4pAPcmqKoHjEfN3zAP9\r\nSioeldO3Q/nVwkuxQIiTu8/Tvoih2xmjZv5HuN5JQ+OgurYSJ/xuiOp3U+sC\r\nC32HvpEuzd/eS9LCkzpT0N1bO/J8TrhwdDtra7b6/vcZ/xMeqh8XuhhPWtsL\r\nRJQjUKRe8oz4c4GK/eAzph5e+Z4BjRjMUfhxNNoUn8xBUIOzNi9dWRo4+7uq\r\nttLPOlvzcXh3BEae619A4GQHNhH9MBE3jee/Oqn7pdt1GCVrUmbchOhpWKBi\r\nm64JY/LcfgDwDkE8nQsKds78JJ9Q6o49LSs=\r\n=Dqk3\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"sorrymeika","email":"sorrymeika@163.com"},"directories":{},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/snowball-all_1.0.0_1660721530752_0.6484341676185594"},"_hasShrinkwrap":false}},"time":{"created":"2019-07-17T04:04:07.990Z","0.1.0":"2019-07-17T04:04:08.150Z","modified":"2022-08-17T07:32:11.141Z","0.1.1":"2019-08-26T01:42:10.635Z","0.1.2":"2019-08-27T02:06:05.198Z","0.1.3":"2019-08-28T10:00:08.843Z","0.1.4":"2019-09-11T02:41:30.211Z","0.1.5":"2019-09-12T02:47:08.241Z","0.1.6":"2019-09-20T07:22:23.481Z","0.1.7":"2019-09-23T12:18:26.674Z","0.1.8":"2019-09-24T10:12:34.428Z","0.1.9":"2019-10-24T14:15:40.697Z","0.2.0":"2019-11-07T14:19:21.389Z","0.2.1":"2019-11-08T03:08:58.514Z","0.2.2":"2019-11-08T10:44:46.894Z","0.2.3":"2019-11-11T07:49:56.863Z","0.2.4":"2019-11-11T15:08:36.478Z","0.2.5":"2019-11-17T03:16:34.376Z","0.2.6":"2019-11-17T13:32:45.892Z","0.2.7":"2019-11-19T06:29:53.653Z","0.2.8":"2019-11-19T06:55:25.056Z","0.2.9":"2019-11-22T06:03:33.976Z","0.2.10":"2019-11-29T03:44:57.527Z","0.2.11":"2019-12-02T04:11:01.806Z","0.3.0":"2020-01-06T03:09:08.281Z","0.3.1":"2020-03-02T08:16:30.236Z","0.3.2":"2020-03-03T07:09:55.939Z","0.3.3":"2020-03-03T08:09:18.464Z","0.3.4":"2020-03-03T08:21:54.813Z","0.3.5":"2020-03-03T09:59:53.008Z","0.3.6":"2020-03-04T02:35:43.519Z","0.3.7":"2020-03-06T03:56:00.390Z","0.3.8":"2020-03-06T09:06:42.131Z","0.3.9":"2020-03-06T09:09:24.942Z","0.3.11":"2020-03-11T10:15:59.713Z","0.3.12":"2020-03-12T02:15:02.502Z","0.3.13":"2020-03-17T03:56:18.108Z","0.3.14":"2020-03-27T09:03:17.797Z","0.3.15":"2020-03-30T07:19:42.718Z","0.3.16":"2020-04-01T02:52:40.213Z","0.3.17":"2020-04-20T08:48:40.363Z","0.3.18":"2020-05-29T03:02:03.804Z","0.3.19":"2020-06-04T01:07:50.352Z","0.3.20":"2020-06-04T06:23:40.873Z","0.3.21":"2020-06-04T08:23:01.192Z","0.3.22":"2021-03-16T01:24:46.231Z","0.3.23":"2021-05-17T10:41:54.490Z","1.0.0-SNAPSHOT":"2021-10-11T01:57:11.569Z","1.0.0-SNAPSHOT1":"2021-10-11T03:40:39.319Z","1.0.0-SNAPSHOT2":"2021-10-11T06:25:14.863Z","1.0.0":"2022-08-17T07:32:11.062Z"},"maintainers":[{"name":"sorrymeika","email":"sorrymeika@163.com"}],"description":"* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下： * 依赖注入：通过注解进行依赖注入。  * 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。  * 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思","homepage":"https://github.com/sorrymeika/snowball#readme","keywords":["mvc","mvvm","immutable","template","snowball"],"repository":{"type":"git","url":"git+https://github.com/sorrymeika/snowball.git"},"bugs":{"url":"https://github.com/sorrymeika/snowball/issues"},"readme":"# Snowball\n\n* `snowball` 是一个一站式前端开发框架，你可以使用`snowball`轻松构建出一套`web app/hybrid app`。`snowball`内置了`view`层，但同时也支持`React`。它比`React`全家桶轻量又支持更多功能，如下：\n* 依赖注入：通过注解进行依赖注入。 \n* 路由系统：拥有多工程跨工程加载、页面切换前进后退动画效果、手势返回、动态管理DOM等功能。 \n* 状态管理：immutable、响应式，和`redux`不同，`snowball`的状态管理更符合`OOP`思想。\n* 视图：fiber模式渲染，高性能，双向绑定。 支持字符串模版，采用运行时模版编译。\n* 路由系统和状态管理都完全适配`React`。\n* 业务项目采用分层架构，主要分为`Controller`、`ViewModel`、`Service`、`View`。\n\n\n## 路由\n\n```\n该路由方案专为多团队协作开发设计，将多个库整合成一个单页应用，让所有业务都使用相同的跳转动画、手势返回、页面缓存。\n发布后到业务库共用一份核心库的js/css/image/iconfont，减少下载资源的大小。\n一个核心框架库＋多个业务库。业务库之间不依赖，可单独发布。\n```\n\n### 多工程跨工程加载\n\n1. 核心框架 `snowball` 统一控制路由，需要在 `snowball` 中注册需要加载的业务\n2. 业务库打包后会生成`asset-manifest.json`文件，`snowball` 通过路由匹配到业务，并加载manifest中的js和css。\n3. 业务js加载时调用`registerRoutes({...})` 方法注册子路由\n4. `snowball` 在业务js／css加载完成后，根据业务注册的子路由跳至对应页面。\n\n### 跳转动画和手势返回\n\n1. 应用启动后，可使用 `navigation.forward` 和 `navigation.back` 方法来控制页面跳转的动画效果。使用 `navigation.forward` 跳转页面后，点击浏览器`返回上一页`会自带返回动画。若无需跳转动画可使用 `navigation.transitionTo` 方法。\n2. 应用默认开启`手势返回`功能，`navigation.forward` 跳转到新页面之后，左滑页面可返回上一页。\n3. 页面`render`时会监听dom数量，若dom数量超过指定数量(默认20k)，会自动umount老页面的dom。\n\n\n## 状态管理\n\n1. 内置多种数据类型，如`Model`和`Collection`，`Collection`类中包含多种常用数组操作方法\n2. `immutable`，数据变更后对比非常方便\n3. 使用观察者模式并且提供多种操作函数，轻松监听数据的变化\n\n## 内置视图\n\n`snowball`的视图层采用专有的模版语言、实时模版编译和`fiber`模式渲染。视图层接收`string`类型模版，组件实例化后，`snowball`会对模版进行实时编译，生成虚拟`dom`。渲染阶段会对实体`dom`的生成和变更进行`分片`渲染，避免界面卡顿。\n\n\n## 开发\n\n### Use Snowball\n\n1. run `git clone git@github.com:sorrymeika/snowball.git`\n2. run `cd snowball && npm install`\n3. run `npm run project yourProjectName` to create your own project\n4. `import { env, Model } from \"snowball\"`\n5. see `https://github.com/sorrymeika/juicy` or `https://github.com/sorrymeika/nuclear` to get the full example!\n\n### Getting Start\n\n* run `cd yourProject && npm start` to start development server, it'll open the project url in browser automatically!\n* run `npm run test` to run test cases!\n* run `npm run build` to build the production bundle.\n* run `npm run sprity` to build sprity images.\n* to see the built project, please visit `http://localhost:3000/dist/#/`\n\n## 打包\n```\n业务项目打包后会剔除掉`react`,`react-dom`,`polyfill`等框架和框架中的公共组件/公共样式\n```\n1. `snowball`会将`React`等框架注册到 `window.Snowball` 上\n2. 使用 `snowball-loader`, 该loader会将 `import React from \"react\"` 替换成 `const React = window.Snowball._React`\n\n\n## 框架版本管理\n\n1. `snowball` 会分大版本（1.x和2.x）和小版本（1.x.x和1.x.x），小版本升级(自动化测试)业务不感知。大版本升级业务需处理。\n2. `snowball` 会尽量保证兼容性。让大版本升级尽量平滑。\n\n## 项目结构\n\n* 项目结构主要分为`Controller`、`ViewModel`、`Service`、`View`层\n\n```html\nsnowball-project\n├── package.json\n├── index.js\n├── app\n|   ├── router.js\n│   └── home <!-- 业务文件夹 -->\n│       ├── controllers <!-- 页面控制器 -->\n│       ├── view-models <!-- 视图状态/业务逻辑 -->\n│       ├── services <!-- api调用/业务逻辑 -->\n│       ├── scss \n│       ├── containers <!-- 页面组件 -->\n│       └── components <!-- 组件 -->\n├── shared\n│   ├── view-models\n│   └── services <!-- 公共服务 -->\n```\n\n## 启动应用\n\n* `index.js` 创建并启动应用\n\n```js\nimport { createApplication, lazy } from 'snowball/app';\n\nconst app = createApplication({\n    projects: {\n        \"^/(subroute1|subroute2)/\": 'http://localhost/subproject/assets-manifest.json'\n    },\n    routes: {\n        '/': require('./app/home/controllers/HomeController'),\n        // 异步加载\n        '/item/\\\\d+:id': import('./app/item/controllers/ItemController'),\n        // 懒加载\n        '/type/\\\\d+:type(?:/\\\\d+:subType)?': lazy(() => import('./app/type/controllers/TypeController')),\n    },\n    configuration: configuration({\n        modules: {\n            // 公共模块注册，注册的模块可使用`autowired`自动加载依赖\n            userService: singleton(UserService)\n        }\n    }),\n    options: {\n        // 禁用跳转切换动画\n        disableTransition: true\n    },\n    // 对app进行扩展\n    extend() {\n        return {\n            env: {\n                api: 'https://**'\n            },\n            get server() {\n                if (!this[SymbolServer]) {\n                    this[SymbolServer] = new Server({\n                        baseUrl: this.env.api\n                    })\n                }\n                return this[SymbolServer];\n            }\n        }\n    }\n}, document.getElementById('root'), callback);\n```\n\n* `domain/services/UserService.js`\n\n```js\n// Service 的接口必须定义\ninterface IUserService {\n    getUser(): Promise<IUser>;\n}\n\nclass UserService implements IUserService {\n    getUser() {\n        // Service 和 Controller 都可直接使用 app\n        return this.app.server.post('/getUser');\n    }\n}\n```\n\n* `app/home/configuration.js`\n\n```js\nimport { configuration } from \"snowball/app\";\n\nexport const HomeConfiguration = configuration({\n    modules: {\n        typeViewModel: TypeViewModel\n    }\n});\n```\n\n* `app/home/controllers/HomeController.js`\n\n```js\nimport { controller, autowired, configuration } from \"snowball/app\";\n\n// Controller\n@controller({\n    component: Home,\n    configuration: HomeConfiguration\n})\nclass HomeController {\n    @autowired\n    typeViewModel;\n\n    onInit() {\n    }\n}\n```\n\n* `app/shared/view-models/TypeViewModel.js`\n\n```js\nimport { observable } from 'snowball';\nimport { ViewModel, disposable } from 'snowball/app';\n\nclass TypeViewModel extends ViewModel {\n    @observable types = [];\n    @observable subTypes = [];\n\n     @disposable\n    _eventEmitter = new EventEmitter();\n\n    constructor() {\n        super();\n\n        this._eventEmitter.on((e, typeId) => this.onTypeChange(typeId));\n    }\n\n    // 初始化事件，页面`onInit`完成且`autowired`第一次调用时触发\n    // `ViewModel`的生命周期事件同`Controller`基本一样\n    onInit() {\n        this.types = await this.app.server.post('/getTypes');\n    }\n\n    dispatch = (e) => this._eventEmitter.emit(e);\n\n    onTypeChange(typeId) {\n        this.subTypes = await this.app.server.post('/getSubTypes', typeId);\n    }\n}\n```\n\n* `app/home/containers/Home.jsx`\n\n```js\nimport { observable } from \"snowball\";\nimport { observer } from \"snowball/app\";\n\n@observer\nclass Home extends Component {\n    // 在 React.Component 中 `attributes` 可和 `observer` 配合使用\n    @observable.string\n    ohNo = 'oh, no!!';\n\n    ohYes = () => {\n        this.ohNo = 'oh, yeah!!';\n    }\n\n    render() {\n        return (\n            <div>\n                <p onClick={this.ohYes}>{this.ohNo}</p>\n                <TypeSelect />\n            </div>\n        )\n    }\n}\n```\n\n* `app/home/containers/TypeSelect.jsx`\n\n```js\nimport { inject, loadModule } from \"snowball/app\";\n\n// 可通过 `inject` 方法将 `controller` 的属性注入到组件的 `props` 中\n// `inject`方法内使用`autowired`可根据注册名称自动加载并实例化依赖\n// `controller` 中以 `_`和'$'开头的属性会认为是私有属性，不可注入\nconst TypeSelect = inject(() => {\n    const typeViewModel = loadModule('typeViewModel');\n    return {\n        types: typeViewModel.types,\n        onTypeChange: typeViewModel.onTypeChange,\n    };\n})((props) => {\n    const { type, subTypes, onTypeChange } = props;\n\n    return (\n        <>\n            <select onChange={onTypeChange}>{types.map((type)=><option value={type.id}>{type.name}<option>)}</select>\n            <select>{subTypes.map((subType)=><option>{subType.name}<option>)}</select>\n        </>\n    );\n})\n```\n\n\n### 控制层 `controllers`\n\n* 控制层，可依赖`shared`,`components`,`models`,`services`，主要用来处理UI状态、整合service并暴露给UI等，本层一般只做整合，是页面/组件和应用层service的中介。\n\n#### `@controller` 方法\n\n* 关联页面/组件跟Controller类的方法，一般使用修饰符模式\n\n#### `@autowired` 方法\n\n* 自动装载依赖\n\n#### 例\n\n```js\nimport { controller } from \"snowball\";\nimport Home from \"../containers/Home\";\n\n/**\n * Controller类生命周期\n *     onInit: 页面第一次打开，且动画开始前触发\n *     onShow: 页面显示，动画结束时触发\n *     onCreate: 页面第一次打开，且动画结束后触发\n *     onResume: 页面从后台进入前台，且动画结束时触发\n *     onPause: 页面从前台进入后台，且动画结束时触发\n *     onDestroy: 页面被销毁后触发\n * Controller方法、属性排序\n *     constructor\n *     页面生命周期\n *     属性 (get, set)\n *     方法\n */\n@controller({\n    component: Home,\n    configuration: HomeConfiguration\n})\nexport default class HomeController {\n    // 将url上的参数或configuration.parameters的配置自动注入到this.type上\n    // 同等于 @param('type', { \n    //    type: 'number' // 数据类型\n    // });\n    @param\n    type;\n\n    @autowired\n    _userService;\n\n    constructor(props, ctx) {\n        // 框架会自动带入路由参数到 props 中\n        // props.location.params 为路由 `/product/:type/:id ` 中的配置\n        // props.location.query 为hash链接`?`后面的参数\n        const id = ctx.location.params.id;\n        const type = ctx.location.params.type;\n\n        console.log('this.type === type:', this.type, type)\n\n        // /home?source=wap&id=1\n        // 此时 props.location.query 为 { source: 'wap',id: 1 }\n        console.log(ctx.location.query);\n\n        // 页面信息\n        // 页面是否是激活状态\n        // console.log(ctx.page.isActive());\n        // 页面是否是销毁\n        // console.log(ctx.page.isDestroyed());\n    }\n\n    // 页面初始化事件，数据请求不要放到 `constructor` 里，而是放在 `onInit` 里\n    async onInit() {\n        await this._userService.fetch();\n\n        // 缓存页面数据到localStorage\n        this.ctx.page.setCache({\n            pageInfo: this.pageInfo\n        });\n    }\n\n    onPause() {\n    }\n\n    onResume() {\n    }\n\n    onDestroy() {\n    }\n\n    get user() {\n        return this._userService.getModel();\n    }\n\n    handleTitleClick() {\n        this._userService.update();\n    }\n}\n```\n\n<br>\n\n-------\n\n<br>\n\n\n\n### 服务层 `services`\n\n* 服务层，主要作用为调用服务端接口，处理业务逻辑。应用services间可互相调用。必须写interface.\n\n```js\nimport UserModel from \"../models/UserModel\";\n\nexport default class UserService implements IUserService {\n\n    constructor() {\n        this._userModel = new UserModel();\n    }\n\n    userModel() {\n        return this._userModel;\n    }\n\n    // 从服务端请求数据，命名规范为 request[Something](args)\n    async request() {\n        return await unicorn.getUserInfo();\n    }\n\n    // 从服务端请求数据并保存到本地model，命名规范为 pull[Something](args)\n    async pull() {\n        var res = await this.request();\n        this.userModel.set(res.data);\n        return res;\n    }\n\n    // 更新本地/远程数据，命名规范为 update[Something](args)\n    update() {\n        this.userModel.set({\n            title: 'afsdfas'\n        })\n    }\n}\n```\n<br>\n\n-------\n\n<br>\n\n### 页面层（containers）\n\n* 存放页面级组件，只负责展示和整合components，一般使用无状态组件，事件和业务逻辑操作统一交给`controllers`或`services`来处理。可依赖`components`\n\n```js\nvar User = function (props) {\n    // 被映射的数据\n    console.log(props.user);\n\n    return <div onClick={controller.onClick}>{props.user.name}</div>;\n}\n```\n\n### `inject` 方法\n\n* `controller`的属性和方法，可通过inject跨组件注入到子组件的props中\n\n```js\nimport { inject } from 'snowball';\n\n// 尽量使用修饰符和字符串参数，保证传 `props` 时能够覆盖 `context`\n@inject('home', 'child')\nclass SomeComponent extends Component {\n}\n\n// `return`的属性会覆盖`props`的属性\ninject(({ user, data }, props)=>{\n    // 可自动加载configuration配置的类\n    const userService = loadModule('userService');\n    return {\n        user,\n        data\n    }\n})(Component)\n```\n\n<br>\n\n-------\n\n<br>\n\n### 应用和路由\n\n#### `createApplication` 方法\n\n* 启动应用\n\n```js\nimport { createApplication, configuration, singleton } from 'snowball';\nimport HomeController from 'controller/HomeController';\n\n// 子应用根路由注册\nconst projects = {\n    \"^/trade(?=/|)\": \"https://project.com/asset-manifest.json\"\n};\n// 主应用路由注册，不可和子应用根路由重合\n// 尽量把路由收敛到 `routes.js` 中\nconst routes = {\n    '/': HomeController,\n    '/product': import('controllers/ProductController')\n};\n// 启动应用\nconst app = createApplication({\n    projects,\n    routes,\n    configuration: configuration({\n        modules: {\n            userService: singleton(UserService)\n        }\n    }),\n    options: {\n        // 禁用跳转切换动画\n        disableTransition: true\n    }\n}, document.getElementById('root'), callback);\n```\n\n#### `registerRoutes` 方法\n\n* 注册路由\n\n```js\nimport { registerRoutes } from 'snowball';\n\n/**\n * 路由列表格式为: \n * {\n *   [key]: require('module')\n * }\n * 其中key为路由规则，可完全匹配、模糊匹配和正则匹配，示例：\n */\nvar routes = {\n    // 完全匹配\n    '/cart': require('bundle?lazy&name=cart!controllers/CartController')\n    // 完全匹配\n    \"/medical\": require('someComponent')\n    // 模糊匹配\n    \"/market/:id\": require('someComponent')\n    // 正则匹配\n    \"/o2omarket/\\\\d+:id\": require('someComponent'),\n    // 正则匹配多路由\n    \"/proxy/home(?:/\\\\d+:logicId)?\": require('someComponent')\n    // 懒加载\n    \"/shop\": require('bundle?lazy&name=ur-package-name!someComponent')\n};\n// 注册新路由\nregisterRoutes(routes);\n```\n\n<br>\n\n-------\n\n<br>\n\n\n### app 和 ctx 应用上下文\n\n* 可在`Controller`和`Service`中使用`app`和`ctx`属性\n* `app`是应用级的，`ctx`是页面级的。`createApplication`时通过`extend`扩展的属性都会挂到`app`上面。\n\n```js\nimport { controller } from 'snowball/app';\nimport User from './components/User';\n\n@controller(User)\nclass UserController {\n    @autowired\n    _userService;\n    \n    constructor(props, ctx) {\n        this.userId = ctx.location.params.id;\n    }\n\n    transitionToFav() {\n        this.ctx.navigation.forward('/fav', {\n            platform: this.app.env.PLATFORM\n        })\n    }\n}\n\nclass UserService extends Service {\n    transitionToOrder() {\n        this.ctx.navigation.forward('/order')\n    }\n}\n```\n\n### `ctx.page` 属性\n\n* 页面信息\n\n```js\n// 当前页面是否活跃\nctx.page.isActive();\n\n// 当前页面是否已被销毁\nctx.page.isDestroyed();\n\n// 页面标题\nctx.page.title;\n\n// 获取dom节点\nctx.page.findNode(selector);\nctx.page.findNodeAll(selector);\n```\n\n\n### `ctx.navigation` 页面跳转，同`app.navigation`\n\n#### `ctx.navigation.forward` 方法\n\n* 跳转页面，带前进动画\n\n```js\n\n// 跳转到商品页\nctx.navigation.forward('/item/1')\n\n// 跳转并传入 props\nctx.navigation.forward('/item/2', {\n    action: 'dofast'\n})\n```\n\n#### `ctx.navigation.back` 方法\n\n* 跳转页面，带返回动画\n\n```js\n// 返回到首页\nctx.navigation.back('/')\n\n// 返回到首页并传入 props\nctx.navigation.back('/', {\n    action: 'dofast'\n})\n```\n\n#### `ctx.navigation.transitionTo` 方法\n\n* 跳转页面\n\n```js\n/**\n * @param {string} [url] 跳转连接\n * @param {boolean} [isForward] 是否带前进动画，前进动画:true，后退动画:false，不填无动画\n * @param {object} [props] 传给下个页面的props \n */\n\n// 不带动画跳转返回到首页并动画跳转到商品页，这样使用history records才不会错乱\nctx.navigation.transitionTo('/')\n    .forward('/product/5');\n\n// 不带动画跳转\nctx.navigation.transitionTo('/product/4');\n```\n\n#### `ctx.navigation.replace` 方法\n\n* 替换当前链接，覆盖最后一条历史\n\n```js\nctx.navigation.replace('/error/notfound?error=店铺状态异常');\n```\n\n\n#### `ctx.navigation.home` 方法\n\n* 返回到首页\n\n```js\nctx.navigation.home()\n```\n\n#### `ctx.app`\n\n* 同等于 `app`\n\n#### `ctx.service`\n\n* 同等于 `app.service`\n\n\n## 扩展页面页面和`ctx`\n\n```js\nimport { Page } from 'snowball/app';\n\n// 生命周期\nPage.extentions.lifecycle({\n    initialize() {\n        this.sharer = new Sharer();\n    }\n\n    onShow() {\n        this.sharer.sync();\n    }\n});\n\n// 扩展页面属性\nPage.extentions.minxin({\n    // console.log(this.ctx.page.newProp());\n    newProp() {\n        return 'newProp' + Date.now();\n    }\n});\n\n// 扩展`ctx`\nPage.extentions.ctx((page, ctx) => {\n    const logger = {\n        error: (message) => {\n            console.error(ctx.location.url, \":\", message);\n        }\n    }\n\n    return {\n        get logger() {\n            return logger;\n        }\n    }\n});\n```\n\n## Model\n\n* `models/UserModel.js`\n\n```js\nimport { Model, Collection, Reaction, observable, initReactiveObject } from 'snowball';\nimport { controller, service, observer } from 'snowball/app';\n\n// Model 的接口必须定义\ninterface IUser {\n    userId: number;\n    userName: string;\n}\n\n// Model\nclass UserModel extends Model {\n    static defaultAttributes = {\n    }\n    attributes: IUser\n};\n\nconst user = new UserModel({\n    userName: 'aaa'\n});\n\nconsole.log(user.get(''));\n\n// 可用 Reactive Object 替换 Model\nclass User implements IUser {\n    @observable.number\n    userId;\n\n    @observable.string\n    userName;\n\n    constructor(user: IUser) {\n        initReactiveObject(this, user);\n    }\n}\n\n// Reaction 需和 Reactive Object 配合使用\n// observer 基于 Reaction 实现\nconst user = new User();\nconst reaction = new Reaction(() => {\n    console.log('it works!');\n});\nreaction.track(() => {\n    console.log(user.userId);\n});\n\nsetTimeout(() => {\n    user.userId = Date.now();\n    reaction.destroy();\n}, 1000);\n\n```\n\n\n## vm\n\n* vm是一个MVVM框架，内置模版引擎和多种数据类型\n\n### 模版引擎\n\n* 这是一个简单的 `template` \n* 使用 `{expression}` 和 `sn-属性` 来绑定数据\n\n```html\n<header class=\"header {titleClass}\">这是标题{title}{title?'aaa':encodeURIComponent(title)}</header>\n<div class=\"main\">\n    <h1>{title}</h1>\n    <ul>\n        <li>时间:{util.formateDate(date,'yyyy-MM-dd')}</li>\n        <li>user:{user.userName}</li>\n        <li>friend:{friend.friendName}</li>\n        <li sn-repeat=\"msg in messages\">msg:{msg.content}</li>\n        <li sn-repeat=\"item in collection\">item:{item.name}</li>\n    </ul>\n    <sn-template id=\"item\"><li>{name}</li></sn-template>\n    <ul>\n        <li sn-repeat=\"item in list\">{item.name}</li>\n        <sn-item props=\"{{ name: item.name }}\" sn-repeat=\"item in list\"></sn-item>\n    </ul>\n</div>\n```\n\n# sn-属性\n\n* `on[event]` dom事件\n\n```js\n\nmodel.onButtonClick = function(userName) {\n    alert(userName);\n}\n\n// 设置 `model` 的事件代理\nmodel.delegate = {\n    onButtonClick: function(user) {\n        alert(user.userName);\n    }\n}\n```\n\n```html\n<div>\n    <button onclick=\"this.onButtonClick(user.userName)\">Click 0</button>\n    <button onclick=\"delegate.onButtonClick(user)\">Click 1</button>\n</div>\n```\n\n\n* `sn-repeat` 循环\n\n```html\n<div class=\"item\" sn-repeat=\"item,i in list|filter:like(item.name,'2')|orderBy:name asc,id desc,{orderByWhat} {ascOrDesc}\">\n    <p>这是标题{title}，加上{item.name}</p>\n    <ul>\n        <li sn-repeat=\"child in item.children|orderBy:this.orderByFunction\">{i}/{child.name+child.age}</li>\n    </ul>\n</div>\n```\n\n* `[sn-if]` `[sn-else-if]` `[sn-else]` 条件控制\n\n```html\n<div class=\"item\" sn-if=\"{!title}\">当title不为空时插入该element</div>\n<div class=\"item\" sn-else-if=\"{title==3}\">当title不为空时插入该element</div>\n<div class=\"item\" sn-else>当title不为空时插入该element</div>\n```\n\n* `sn-display` 控件是否显示（有淡入淡出效果，若不需要动画效果可使用`sn-visible`或`sn-if`）\n\n```html\n<div class=\"item\" sn-display=\"{title}\">当title不为空时显示</div>\n```\n\n* `sn-html` 设置innerHTML\n\n```html\n<div class=\"item\" sn-html=\"{title}\"></div>\n```\n\n\n* `sn-[componentName]` 或 `大写字母开头的标签` 引入其他组件\n\n```html\n<sn-tab class=\"tab\" props=\"{{items:['生活服务','通信服务']}}\"></sn-tab>\n<Tab class=\"tab\" props=\"{{items:['生活服务','通信服务']}}\"></Tab>\n```\n\n#### `Observer` 类\n\n* 可观察对象，类的数据变化可被监听\n*  `Model`, `Collection`, `List`, `Dictionary`, `Frame`, `State` 都是 `Observer` 的子类，分别有不同的作用\n\n```js\nimport { Observer, Model, Collection, List, Frame, State } from 'snowball';\n\nvar model = new Model({\n    id: 1,\n    name: '名称'\n});\n\nvar collection = new Collection([{\n    id: 2,\n    name: '名称2'\n}]);\n\ncollection.add(model);\ncollection.add([{ id: 3, name: '名称3' }]);\n\nviewModel.set({\n    data: model,\n    list: collection\n})\n```\n#### `Model|Dictionary` 类\n\n* `Observer` 的属性变化不能被监听，`Model|Dictionary` 的属性变化可被监听\n* `Model` 是深拷贝，且是 `immutable` 的，`Dictionary` 浅拷贝对象，`Observer` 不拷贝对象可接收值类型\n\n#### `List|Collection` 类\n\n* List和Collection都是集合类，类实例及其子项的变化都可被监听\n* `List` 的子项如果是Plain Object,会使用`Dictionary`存储,非Plain Object使用`Observer`存储\n* `Collection` 的子项是 `Model`\n* `List` 性能优于 `Collection`\n\n```js\nvar collection = new Collection([{\n    id: 2,\n    name: '名称2'\n}]);\n\ncollection.add(model);\ncollection.add([{ id: 3, name: '名称3' }]);\n\n// 原数据中ID存在相同的则更新，否则添加\ncollection.update([{ id: 2, name: '新名称2' },{ id: 3, name: '新名称3' }], 'id');\n\n// 根据ID更新\ncollection.updateBy('id', { id: 3, name: '新名称' });\n\n// 更换数组\ncollection.updateTo([{ id: 3, name: '新名称' }], 'id');\n\n```\n\n#### `(Observer|...).prototype.get` 方法\n#### `Model.prototype.attributes|Collection.prototype.array` 属性(只读)\n\n```js\nvar data = new Model({\n    id: 1,\n    name: 'immutable data'\n})\n// 同等于 data.get()\nvar oldAttributes = data.attributes;\n\n// 数据无变化\ndata.set({\n    id: 1\n});\nconsole.log(oldAttributes == data.attributes);\n// true\n\ndata.set({\n    name: '数据变化了'\n});\nconsole.log(oldAttributes == data.attributes);\n// false\n\nconsole.log(data.get('id'))\n// 1\n```\n\n#### `(Observer|...).prototype.set` 方法\n\n* 设置 `Model`、`Collection`\n\n```js\n// 通过 `set` 方法来改变数据\n// 此时关联了 `user` 的 `home` 的数据也会改变 \n// 若原先的 `userName` 已是'asdf'，则不会触发view更新\nuser.set({\n    userName: 'asdf'\n});\n\nhome.set({\n    title: 1,\n    user: {\n        age: 10\n    }\n});\n\n// 通过 `collection.set` 方法覆盖数据\n// 更新数据使用 `collection.update|updateBy` 等方法性能会更好\ncollection.set([{\n    id: 1,\n    name: 'A'\n}]);\n\n```\n\n#### `(Observer|...).prototype.observe` 方法\n\n* 监听 Model变化\n\n```js\n// 监听所有数据变动\nmodel.observe(function(e) {\n\n});\n\n// Model|Dictionary 可监听 `user` 属性的数据变动\nmodel.observe('user', function(e) {\n\n});\n\n// Model 监听 `user.userName` 属性变动\nmodel.observe('user.userName', function(e) {\n});\n```\n\n#### `(Observer|...).prototype.unobserve` 方法\n\n* 移除监听\n\n#### `(Collection|Model).prototype._` 方法\n\n* Model/Collection 查询\n\n```js\n\n/**\n  * 搜索子Model/Collection，\n  * 支持多种搜索条件\n  * \n  * 搜索子Model:\n  * model._('user') 或 model._('user.address')\n  * \n  * 根据查询条件查找子Collection下的Model:\n  * model._('collection[id=222][0].options[text~=\"aa\"&value=\"1\"][0]')\n  * model._('collection[id=222][0].options[text~=\"aa\"&value=\"1\",attr^='somevalue'|attr=1][0]')\n  * \n  * 且条件:\n  * model._(\"collection[attr='somevalue'&att2=2][1].aaa[333]\")\n  * \n  * 或条件:\n  * model._(\"collection[attr^='somevalue'|attr=1]\")\n  * \n  * 不存在时添加，不可用模糊搜索:\n  * model._(\"collection[attr='somevalue',attr2=1][+]\")\n  * \n  * @param {string} search 搜索条件\n  * @param {any} [def] collection[attr='val'][+]时的默认值\n  */\nhome._('collection[name~=\"aa\"|id=1,type!=2]').toJSON();\n\n\n/**\n * 查询Collection的子Model/Collection\n * \n * 第n个:\n * collection._(1)\n * \n * 查询所有符合的:\n * collection._(\"[attr='val']\")\n * 数据类型也相同:[attr=='val']\n * 以val开头:[attr^='val']\n * 以val结尾:[attr$='val']\n * 包含val，区分大小写:[attr*='val']\n * 包含val，不区分大小写:[attr~='val']\n * 或:[attr='val'|attr=1,attr='val'|attr=1]\n * 且:[attr='val'&attr=1,attr='val'|attr=1]\n * \n * 查询并返回第n个:\n * collection._(\"[attr='val'][n]\")\n * \n * 一个都不存在则添加:\n * collection._(\"[attr='val'][+]\")\n * \n * 结果小于n个时则添加:\n * collection._(\"[attr='val'][+n]\")\n * \n * 删除全部搜索到的，并返回被删除的:\n * collection._(\"[attr='val'][-]\")\n * \n * 删除搜索结果中第n个，并返回被删除的:\n * collection._(\"[attr='val'][-n]\")\n * \n * @param {string} search 查询条件\n * @param {object} [def] 数据不存在时默认添加的数据\n * \n * @return {array|Model|Collection}\n */\ncollection._('[name=\"aa\"]').toJSON();\n```\n\n#### `Collection.prototype.add` 方法\n\n```js\n// 通过 `collection.add` 方法添加数据\ncollection.add({ id: 2, name: 'B' })\ncollection.add([{ id: 3, name: 'C' }, { id: 4, name: 'D' }])\n```\n\n#### `Collection.prototype.update` 方法\n\n```js\n// 通过 `collection.update` 方法更新数据\ncollection.update([{ id: 3, name: 'C1' }, { id: 4, name: 'D1' }], 'id');\ncollection.update([{ id: 3, name: 'C1' }, { id: 4, name: 'D1' }], function(a, b) {\n    return a.id === b.id;\n});\n```\n\n#### `Collection.prototype.updateTo` 方法\n\n* 更新成传入的数组\n\n```js\nvar arr = [{ id: 3, name: 'C1' }, { id: 4, name: 'D1' }];\n\n// 通过 `collection.updateTo` 方法更新数据\ncollection.updateTo(arr, 'id');\n```\n\n\n#### `Collection.prototype.updateBy` 方法\n\n* 根据 comparator 更新 collection\n\n```js\nvar data = [{ id: 3, name: 'C1' }, { id: 4, name: 'D1' }];\n\n/**\n * 根据 comparator 更新Model\n * collection.updateBy('id', { id: 123 name: '更新掉name' })\n * collection.updateBy('id', [{ id: 123 name: '更新掉name' }])\n *\n * @param {String} comparator 属性名/比较方法\n * @param {Object} data\n * @param {boolean} renewItem 是否覆盖匹配项\n *\n * @return {Collection} self\n */\ncollection.updateBy(id, data, true|false);\n```\n\n#### `Collection.prototype.unshift` 方法\n\n* 首部插入数据\n\n```js\ncollection.unshift({ id: 1 });\n```\n\n#### `Collection.prototype.splice` 方法\n\n* 移除或插入数据\n\n```js\ncollection.splice(0,1,[{ id: 1 }]);\n```\n\n#### `Collection.prototype.size` 方法 | `Collection.prototype.length` 属性\n\n* Collection 长度\n\n\n#### `Collection.prototype.map` 方法\n\n* 同 `Array.prototype.map`\n\n#### `Collection.prototype.find` 方法\n\n* 查找某条子Model\n\n```js\ncollection.find('id', 1);\n```\n\n#### `Collection.prototype.filter` 方法\n\n* 同 `Array.prototype.filter`\n\n\n#### `Collection.prototype.remove` 方法\n\n* 从 collection 中移除\n\n```js\ncollection.remove('id', 1);\n\ncollection.remove(model);\n\ncollection.remove(function(item) {\n    return true|false;\n});\n```\n\n\n#### `Collection.prototype.clear` 方法\n\n* 清除 collection\n\n\n#### `Collection.prototype.each` 方法\n\n* 遍历 collection\n\n\n#### `Collection.prototype.toArray` | `Collection.prototype.toJSON` 方法\n\n* 将 collection 转为数组\n\n#### `(Observer|Model|Collection).prototype.destroy`\n\n* 销毁 Model | Collection\n\n\n### `observable`\n\n* 可观察对象\n\n#### `observable()`\n\n```js\n// 自动根据数据类型生成 observable object\n// plainObject对应Model, array对应Collection, 其他对应Observer\nconst observer = observable(0|{}|[]|'');\n\n// 设置数据\nobserver.set(1);\n\n// 数据无变化不会触发事件\nobserver.observe((val) => {\n    console.log(val);\n});\n\n// 移除监听\nobserver.unobserve((val) => {\n    console.log(val);\n});\n\n// 传入function生成 observable object，它是只读的，不能set\nconst observer = observable((fn)=>{\n  document.body.addEventListener('click', fn);\n    return () => {\n      document.body.removeEventListener('click', fn);\n    }\n});\n```\n\n### `State` 类\n\n```js\nconst state = new State();\n\n// 异步设置触发事件，并且会触发3次\nstate.set(1);\nstate.set(2);\nstate.set(3);\n\nconsole.log(state.get());\n// undefined\n```\n\n### `Frame` 类\n\n```js\nconst emitter = new Frame();\n\n// 每次界面渲染完成之后触发事件，并且会触发3次\nemitter.set(1);\nemitter.set(2);\nemitter.set(3);\n\nconsole.log(emitter.get());\n// 3\n```\n\n### `observable`\n\n```js\nclass User {\n    @observable\n    anyType;\n\n    @observable.number\n    userId = 0;\n\n    @observable.string\n    userName;\n\n    @observable.object\n    auth;\n}\n\nconst user = User.from({\n    userId: 1,\n    userName: '张三'\n});\n\n// 监听user.userId\nasObservable(user).observe('userId', ()=>{\n});\n\n// 计算user.userId\ncompute(asObservable(user).observe('userId'), (userId) => {\n    return 'userId:' + userId;\n});\n\nasObservable(user).set({\n    name: 1\n});\n\nfor (var key in user) {\n    console.log(key);\n}\n// userId\n// userName\n```\n\n\n<br>\n\n-------\n\n<br>\n\n### 公共组件\n\n#### MainScrollView|ScrollView\n\n* 带滚动条和自动加载数据功能的组件\n\n```js\nimport { ScrollView, MainScrollView, scrollUtils } from 'snowball/components';\n\n/**\n * @param {function} [onScrollViewInit] 初始化事件\n * @param {function} [pullToRefresh] 下拉刷新\n * @param {function} [onScrollToBottom] 滚动到底部事件\n * @param {string|PagiationStatus} [loadMoreStatus] 加载更多状态\n*/\n\n<MainScrollView\n    loadMoreStatus={PagiationStatus}\n    onScrollToBottom={autoLoadMore}\n    onScroll={(e) => {\n        console.log(e, e.target, e.x, e.y);\n    }}\n    pullToRefresh={()=>{  }}\n    ref={mainScrollViewRef}\n>\n</MainScrollView>\n\n<ScrollView onScroll={()=>{}} className=\"mk_shop__list\">\n<div>content</div>\n</ScrollView>\n```\n\n#### Header\n\n* app头组件\n\n```js\nimport { Header } from 'snowball/components';\n\n// 普通app头\n<Header \n    title=\"Title\"\n/>\n\n// 带搜索和按钮的app头\n<Header\n    className=\"hp_homepage__header header_primary\"\n    buttons={\n        <button\n            app-link=\"/order\"\n            className=\"iconfont icon-list cl_fff pl_s pr_s dp_b ta_c lh_1\"\n        >\n            <i className=\"dp_b fs_xxs mt_2\">我的订单</i>\n        </button>\n    }\n>\n    <form\n        app-link=\"/medicalsearch\"\n        className=\"header_search iconfont icon-search flex\"\n        style={{ marginLeft: '-8%', width: '85%' }}\n        onSubmit={() => false}\n    >\n        <span className=\"ps_r fs_m cl_999\">{searchDocument ? searchDocument : '搜索'}</span>\n    </form>\n</Header>\n```\n\n#### 小文字/小文字Tag标签（修复安卓小与12px的文字偏上）\n\n* 小文字/小文字Tag标签（修复安卓小与12px的文字偏上）\n\n```js\nimport { SmallTag, SmallText } from 'snowball/components';\n\n<SmallTag className={'ur_tag'} text=\"aaa\" fontSize=\"8\" />\n<SmallText text=\"aaa\" fontSize=\"8\" />\n```\n\n\n#### 图片轮播\n\n* 图片轮播组件\n```js\nimport { Slider } from 'snowball/components';\n\n<Slider \n    data={\n        [{\n            link: '/',\n            src: 'image src'\n        }]\n    }\n/>\n```\n\n#### 图片浏览组件\n\n* 图片浏览组件\n\n```js\nimport { PhotoViewer } from 'snowball/components';\n\n<PhotoViewer \n    images={\n        [{\n            src: 'image src'\n        }]\n    }\n/>\n```\n\n\n### 通用弹框组件\n\n```js\nimport { toast, loader, popup } from 'snowball/widget';\n\n// Toast\ntoast.showToast('2秒后消失');\n\n// 显示／隐藏加载中\nloader.showLoader();\nloader.hideLoader();\n\n// 弹框，具体参数见代码注释\npopup.confirm({ title, content, onOk, onCancel });\npopup.alert({ title, content, onOk });\npopup.prompt();\n// 通用弹框\npopup.popup();\n```\n\n<br>\n\n-------\n\n<br>\n\n###  自定义事件\n\n```js\nimport { Event, EventEmitter } from 'snowball';\n\nconst emitter = new EventEmitter();\n\nemitter.on('dataload', (e)=>{});\nemitter.one('dataload', (e)=>{});\nemitter.off('dataload');\n\nemitter.trigger('dataload');\nemitter.trigger(new Event('dataload', {\n    target\n}));\n\n```\n\n<br>\n\n-------\n\n<br>\n\n###  `@component` 注解\n\n```js\n// 这是一个简单的 `component` 示例\n@component({\n    tagName: 'Order',\n    template: `<div @click={user.name='new name'}>{user.name}</div>\n    <ul>\n        <li sn-repeat=\"item,i in orderList\" @click={this.handleOrder(item, i)}>{i}:{item.tradeCode}</li>\n    </ul>`\n})\nclass Order extends Model {\n    handleOrder(item, i) {\n        console.log(item, i);\n    }\n}\n\nnew Order({\n    user: {\n        name: 'UserName'\n    },\n    orderList: [{\n        tradeCode: '1234'\n    }]\n}).appendTo(document.body)\n```\n\n\n-------\n\n<br>\n\n###  `jsonp` 接口请求\n\n```js\nimport { jsonp } from 'snowball';\n\nawait jsonp('src', params);\n```\n\n<br>\n\n-------\n\n<br>\n\n###  `loadJs` 加载js\n\n```js\nimport { loadJs } from 'snowball';\n\nawait loadJs('src');\nawait loadJs(['src', 'src1']);\n```\n\n<br>\n\n-------\n\n<br>\n\n###  `util`\n\n* 工具类\n\n```js\nimport { util } from 'snowball';\n```\n#### `util.is(PlainObject|EmptyObject|Boolean|Number|String|Object|Array|Yes|No|Thenable)`\n\n#### `util.qs`\n#### `util.hashQs`\n\n```js\nimport { util } from 'snowball';\nconst url = 'https://www.whatever.com/?app=snowball#/item/123?source=home';\nconst queryStringObject = util.qs(url);\n// { app: 'snowball' }\n\nconst newUrl = util.qs(url, { biz: 'DJ' });\n// 'https://www.whatever.com/?app=snowball&biz=DJ#/item/123?source=home'\n\nconst hashObject = util.hashQs(url);\n// { source: 'home' }\n\nconst newUrlWithHash = util.hashQs(url, { biz: 'DJ' });\n// 'https://www.whatever.com/?app=snowball#/item/123?source=home&biz=DJ'\n```\n\n#### `util.clone`\n\n#### `util.deepClone`\n\n#### `util.extend`\n\n#### `util.style`\n\n* 插入样式表\n\n#### `util.encodeHTML` 方法\n\n* html 转码\n\n#### `util.pick` 方法\n\n* 同 _.pick\n\n#### `util.debounce`\n\n#### `util.throttle`\n\n#### `util.cookie` 方法\n\n* 获取、设置document.cookie\n\n#### `util.store` 方法\n\n* 获取、设置localStorage\n\n#### `util.equals` 方法\n\n* 判断两个 Object、Array 结构和值是否相同（引用不同）\n\n#### `util.groupBy` 方法\n\n* 数组分组\n\n#### `util.sum` 方法\n\n* 数组求和\n\n#### `util.array` 方法\n\n* 数组操作链\n\n```js\n// 链式处理，并返回数组中某个item\nutil.array([{ id: 1 }, { id: 2 }])\n    .filter('id', 1)\n    .concat([{ id: 3 }])\n    .map((item) => item)\n    .exclude('id', 2)\n    .find('id', 3);\n\n// 链式处理，并返回 Array\nutil.array([{ id: 1 }, { id: 2 }])\n    ._('[id=1,name=2]')\n    .filter((item) => item.id == 1)\n    .toArray();\n```\n\n#### `util.query` 方法\n\n* 数组搜索，类似 `Collection.prototype._`\n\n#### `util.formatDate` 方法\n\n* 日期转字符串\n\n```js\n\nutil.formatDate(new Date(), 'yyyy-MM-dd HH:mm:ss_ffff');\n\n// 2012-02-03 星期一\nutil.formatDate(new Date(), 'yyyy-MM-dd W');\n\n// 刚刚、n分钟前、n小时前、昨天 HH:mm、yyyy-MM-dd HH:mm\nutil.formatDate(Date.now(), 'short');\n\n// HH:mm、昨天 HH:mm、yyyy-MM-dd HH:mm\nutil.formatDate(Date.now(), 'minutes');\n\n```\n\n#### `util.timeLeft` 方法\n```js\n\n// 1天 00:10:00\nutil.timeLeft(10000000);\n\n// 00:10:00\nutil.timeLeft(10000);\n```\n\n<br>\n\n-------\n\n<br>\n\n## Zepto\n\n```js\n// 不推荐使用\nimport { $ } from 'snowball'\n$('.class').on('click', ()=>alert(1));\n```\n","readmeFilename":"README.md"}