{"_id":"a2n","_rev":"93-38f421ea36df2c221cd51ca14806fc7e","name":"a2n","dist-tags":{"latest":"2.1.5"},"versions":{"1.0.1":{"name":"a2n","version":"1.0.1","keywords":["express","a2n","server","node"],"author":{"name":"liweiqiang"},"license":"ISC","_id":"a2n@1.0.1","maintainers":[{"name":"liweiqiang","email":"1072864729@qq.com"}],"dist":{"shasum":"b483a2702ece1a704d629eec6c874fe497427253","tarball":"https://registry.npmjs.org/a2n/-/a2n-1.0.1.tgz","fileCount":29,"integrity":"sha512-N1irWLwDu9mrkZus853acAUlmh3af1sh6mO2lqFpqPFbnYOYXaYRV6t476gutgEollkCc75u68LshW97GGvXMQ==","signatures":[{"sig":"MEUCIEDpcn6VgfWoRx85AP+HCYBwgcVDzDEc+A1z07cJ1sVjAiEAivdFPzn8qgRi8UlMFG4kV3UcXevyZ0RwQIHkOmhm2z8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1156843},"main":"core/dist/a2n.core.js","type":"commonjs","types":"core/src/index.d.ts","exports":{".":"./core/dist/a2n.core.js","./start":"./main/start.ts"},"gitHead":"c3ae766b33984bd031d5283bde589dfffa1f47d4","scripts":{"test":"cross-env NODE_ENV=test nodemon -e * --ignore **/dist --exec npm run start","serve":"cross-env NODE_ENV=tsnode nodemon -e * --exec ts-node -r tsconfig-paths/register --esm main/tsnode.ts --files","start":"npm run build:core && npm run build:serve && node dist/a2n.serve.js","build:core":"webpack --config core/webpack.config.js","build:serve":"webpack --config webpack.config.js"},"_npmUser":{"name":"liweiqiang","email":"1072864729@qq.com"},"deprecated":"请使用最新版本","_npmVersion":"8.19.2","description":"基于express的轻量级服务器","directories":{},"_nodeVersion":"16.18.1","dependencies":{"express":"^4.18.2","nodemon":"^2.0.20","ts-node":"^10.9.1","webpack":"^5.75.0","cross-env":"^7.0.3","ts-loader":"^9.4.2","typescript":"^4.9.5","body-parser":"^1.20.1","webpack-cli":"^5.0.1","@types/express":"^4.17.17","tsconfig-paths":"^4.1.2","@types/webpack-env":"^1.18.3","clean-webpack-plugin":"^4.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/a2n_1.0.1_1699320228960_0.9315134046227138","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"a2n","version":"1.0.2","keywords":["express","a2n","server","node","spirng","ioc","aop"],"author":{"name":"liweiqiang"},"license":"ISC","_id":"a2n@1.0.2","maintainers":[{"name":"liweiqiang","email":"1072864729@qq.com"}],"dist":{"shasum":"f9872d56e9550ad712f39284fa430dab0254510a","tarball":"https://registry.npmjs.org/a2n/-/a2n-1.0.2.tgz","fileCount":30,"integrity":"sha512-sGD3v/aMpYDdD/aadt9ABzB+Nrz1YeDGs0WCO3fxltGICLM7iK8+LAu4yS1fpR5oJsbDJEmBy2wE3mAKBXJv8g==","signatures":[{"sig":"MEQCIEPs8fPzYFgJRlRzpLcLYoTknsMLy5r/JNnIYtfNHXcjAiBZxm51tzu1MniC+/vOHUn4OGJ8sG4K9ncjDdGTfJIckg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1159486},"main":"core/dist/a2n.core.js","type":"commonjs","types":"core/src/index.d.ts","gitHead":"0031df9775c4920ccc268c2f4f096fe766f8fedc","scripts":{"test":"cross-env NODE_ENV=test nodemon -e * --ignore **/dist --exec npm run start","serve":"cross-env NODE_ENV=tsnode nodemon -e * --exec ts-node -r tsconfig-paths/register --esm main/tsnode.ts --files","start":"npm run build:core && npm run build:serve && node dist/a2n.serve.js","build:core":"webpack --config core/webpack.config.js","build:serve":"webpack --config webpack.config.js"},"_npmUser":{"name":"liweiqiang","email":"1072864729@qq.com"},"deprecated":"请使用最新版本","_npmVersion":"8.19.2","description":"基于express的轻量级服务器","directories":{},"_nodeVersion":"16.18.1","dependencies":{"express":"^4.18.2","body-parser":"^1.20.1"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^2.0.20","ts-node":"^10.9.1","webpack":"^5.75.0","cross-env":"^7.0.3","ts-loader":"^9.4.2","typescript":"^4.9.5","webpack-cli":"^5.0.1","@types/express":"^4.17.17","tsconfig-paths":"^4.1.2","@types/webpack-env":"^1.18.3","clean-webpack-plugin":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/a2n_1.0.2_1699343334183_0.257103790036447","host":"s3://npm-registry-packages"}},"1.0.3":{"name":"a2n","version":"1.0.3","keywords":["express","a2n","server","node","spirng","ioc","aop"],"author":{"name":"liweiqiang"},"license":"ISC","_id":"a2n@1.0.3","maintainers":[{"name":"liweiqiang","email":"1072864729@qq.com"}],"dist":{"shasum":"ac45da0c0e038fd7ef89001a8af9c5bbc7d489ac","tarball":"https://registry.npmjs.org/a2n/-/a2n-1.0.3.tgz","fileCount":30,"integrity":"sha512-WLRxA4aRP0FxoywKfQUK6V1cTle/pDR/N9nSqxb52DphufbqN36Yz+dWzuSd+/kBAtXDBWTafumk9rfXerxcbg==","signatures":[{"sig":"MEYCIQDjXIx00me3ystFqOWv/fV/5Oz3PFaRTOVsEiLJDqfNsgIhAOWghDBUB6+wZP4SX5SBQFqOAvfaunSjKukUKov49bxg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1159488},"main":"core/dist/a2n.core.js","type":"commonjs","types":"core/src/index.d.ts","gitHead":"727821b74f72013a6995c68ba5fbc81b7bae2344","scripts":{"test":"cross-env NODE_ENV=test nodemon -e * --ignore **/dist --exec npm run start","serve":"cross-env NODE_ENV=tsnode nodemon -e * --exec ts-node -r tsconfig-paths/register --esm main/tsnode.ts --files","start":"npm run build:core && npm run build:serve && node dist/a2n.serve.js","build:core":"webpack --config core/webpack.config.js","build:serve":"webpack --config webpack.config.js"},"_npmUser":{"name":"liweiqiang","email":"1072864729@qq.com"},"deprecated":"请使用最新版本","_npmVersion":"8.19.2","description":"基于express的轻量级服务器","directories":{},"_nodeVersion":"16.18.1","dependencies":{"express":"^4.18.2","body-parser":"^1.20.1"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^2.0.20","ts-node":"^10.9.1","webpack":"^5.75.0","cross-env":"^7.0.3","ts-loader":"^9.4.2","typescript":"^4.9.5","webpack-cli":"^5.0.1","@types/express":"^4.17.17","tsconfig-paths":"^4.1.2","@types/webpack-env":"^1.18.3","clean-webpack-plugin":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/a2n_1.0.3_1699343560160_0.26650900018526613","host":"s3://npm-registry-packages"}},"1.0.4":{"name":"a2n","version":"1.0.4","keywords":["express","a2n","server","node","spirng","ioc","aop"],"author":{"name":"liweiqiang"},"license":"ISC","_id":"a2n@1.0.4","maintainers":[{"name":"liweiqiang","email":"1072864729@qq.com"}],"dist":{"shasum":"eaa070adda248910c6f7e051755b9c1fdfa4a940","tarball":"https://registry.npmjs.org/a2n/-/a2n-1.0.4.tgz","fileCount":9,"integrity":"sha512-92GJHY2yFuNlKNCevNqT/WrcgtnxUKAQCA3ixwDWI/MZgMxw7GOUzkxogGg4cbj8L6AJDSkQvcYflEKqrMYAhw==","signatures":[{"sig":"MEUCIQDheHdXYKIylgmDC0R+wNZYFNNLDuLhJLQNAdFINBerUwIgRrRTLt5znvy3ZARpEBiCeLR9+Q9mw82SuNBhjQ/q4KU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1089902},"main":"core/dist/a2n.core.js","type":"commonjs","types":"core/src/index.d.ts","gitHead":"003c9033613c47322a5faaed6316f8141608c0bf","scripts":{"dev":"webpack --watch --config main/config/webpack-hot.config.js","test":"nodemon -e * --ignore **/dist --exec npm run start","start":"npm run build:core && npm run build:serve && node dist/a2n.serve.js","build:core":"webpack --config core/webpack.config.js","build:serve":"webpack --config main/config/webpack.config.js"},"_npmUser":{"name":"liweiqiang","email":"1072864729@qq.com"},"deprecated":"请使用最新版本","_npmVersion":"8.19.3","description":"基于express的轻量级服务器","directories":{},"_nodeVersion":"16.19.0","dependencies":{"express":"^4.18.2","body-parser":"^1.20.1"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^2.0.20","ts-node":"^10.9.1","webpack":"^5.75.0","cross-env":"^7.0.3","ts-loader":"^9.4.2","typescript":"^4.9.5","webpack-cli":"^5.0.1","@types/express":"^4.17.17","tsconfig-paths":"^4.1.2","@types/webpack-env":"^1.18.3","clean-webpack-plugin":"^4.0.0","webpack-node-externals":"^3.0.0","run-script-webpack-plugin":"^0.2.0","@types/webpack-node-externals":"^3.0.4"},"_npmOperationalInternal":{"tmp":"tmp/a2n_1.0.4_1699443890409_0.06847386767097641","host":"s3://npm-registry-packages"}},"1.0.5":{"name":"a2n","version":"1.0.5","keywords":["express","a2n","server","node","spirng","ioc","aop"],"author":{"name":"liweiqiang"},"license":"ISC","_id":"a2n@1.0.5","maintainers":[{"name":"liweiqiang","email":"1072864729@qq.com"}],"dist":{"shasum":"2eabb4d284f6f79e653371556146361abe653ee4","tarball":"https://registry.npmjs.org/a2n/-/a2n-1.0.5.tgz","fileCount":9,"integrity":"sha512-ogJe1mrgzVBmJf8iTqHiLhC4Iost+mhpWefQjlXvx/w5Ujm0eC3s+qbZ2XZ8E8pnq75e6E7yU7MPT9+dm8/+sQ==","signatures":[{"sig":"MEUCIQDQ6cJflS6iJ+yUIR87p1FnRz1RY08dxp3U/obEBlAYcgIgMh1h/13udMxGG2RSEjqwWtA6rDsy8m3FWWfiqeZfZ04=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1091300},"main":"core/dist/a2n.core.js","type":"commonjs","types":"core/src/index.d.ts","gitHead":"ed0ab1f27933211592587cf522c69f938b4e6242","scripts":{"dev":"webpack --watch --config main/config/webpack-hot.config.js","test":"nodemon -e * --ignore **/dist --exec npm run start","start":"npm run build:core && npm run build:serve && node dist/a2n.serve.js","build:core":"webpack --config core/webpack.config.js","build:serve":"webpack --config main/config/webpack.config.js"},"_npmUser":{"name":"liweiqiang","email":"1072864729@qq.com"},"deprecated":"请使用最新版本","_npmVersion":"8.19.3","description":"基于express的轻量级服务器","directories":{},"_nodeVersion":"16.19.0","dependencies":{"express":"^4.18.2","body-parser":"^1.20.1"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^2.0.20","ts-node":"^10.9.1","webpack":"^5.75.0","cross-env":"^7.0.3","ts-loader":"^9.4.2","typescript":"^4.9.5","webpack-cli":"^5.0.1","@types/express":"^4.17.17","tsconfig-paths":"^4.1.2","@types/webpack-env":"^1.18.3","clean-webpack-plugin":"^4.0.0","webpack-node-externals":"^3.0.0","run-script-webpack-plugin":"^0.2.0","@types/webpack-node-externals":"^3.0.4"},"_npmOperationalInternal":{"tmp":"tmp/a2n_1.0.5_1699681930650_0.014248858784305929","host":"s3://npm-registry-packages"}},"1.0.6":{"name":"a2n","version":"1.0.6","keywords":["express","a2n","server","node","spirng","ioc","aop"],"author":{"name":"liweiqiang"},"license":"ISC","_id":"a2n@1.0.6","maintainers":[{"name":"liweiqiang","email":"18150027197@163.com"}],"dist":{"shasum":"e68d82db5d22a793a607f178f5d822dbb7fd9436","tarball":"https://registry.npmjs.org/a2n/-/a2n-1.0.6.tgz","fileCount":9,"integrity":"sha512-njsdUbNVye1sdToh96YLHfz0UrIKYiIjeh0BUa0MlGQ4ap19MDagStwF0Ff4yGDSNtFl74S5h5CAYWZcpmrCdQ==","signatures":[{"sig":"MEYCIQDTtLQUmxXfT00rzfS07w7QDxrIMs4CzXGaJasnJiItngIhAM/9iz00tQPuKReq20dkHspk5zmPHaWTPz7h6tSxNJ1B","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1701729},"main":"core/dist/a2n.core.js","type":"commonjs","types":"core/src/index.d.ts","gitHead":"622007642ba4a7f06f5ad3ee6b7a2dd44eb23815","scripts":{"dev":"webpack --watch --config main/config/webpack-hot.config.js","test":"nodemon -e * --ignore **/dist --exec npm run start","start":"npm run build:core && npm run build:serve && node dist/a2n.serve.js","build:core":"webpack --config core/webpack.config.js","build:serve":"webpack --config main/config/webpack.config.js"},"_npmUser":{"name":"liweiqiang","email":"18150027197@163.com"},"deprecated":"请使用最新版本","_npmVersion":"8.19.2","description":"基于express的轻量级服务器","directories":{},"_nodeVersion":"16.18.1","dependencies":{"lodash":"^4.17.21","express":"^4.18.2","body-parser":"^1.20.1","@types/lodash":"^4.14.201"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^2.0.20","ts-node":"^10.9.1","webpack":"^5.75.0","cross-env":"^7.0.3","ts-loader":"^9.4.2","typescript":"^4.9.5","webpack-cli":"^5.0.1","@types/express":"^4.17.17","tsconfig-paths":"^4.1.2","@types/webpack-env":"^1.18.3","clean-webpack-plugin":"^4.0.0","webpack-node-externals":"^3.0.0","run-script-webpack-plugin":"^0.2.0","@types/webpack-node-externals":"^3.0.4"},"_npmOperationalInternal":{"tmp":"tmp/a2n_1.0.6_1702860958687_0.5448419290243471","host":"s3://npm-registry-packages"}},"1.0.7":{"name":"a2n","version":"1.0.7","keywords":["express","a2n","server","node","spirng","ioc","aop"],"author":{"name":"liweiqiang"},"license":"ISC","_id":"a2n@1.0.7","maintainers":[{"name":"liweiqiang","email":"18150027197@163.com"}],"dist":{"shasum":"d524e04cceec6ddce11b37ff5b5ecbff2ecaa4b9","tarball":"https://registry.npmjs.org/a2n/-/a2n-1.0.7.tgz","fileCount":9,"integrity":"sha512-iwzMCMFbbrK9Dnzo+Jb4E+llckumyPkIHi+adYSZ0plhwHd8rAC5UurkoTV10drKm8ASQGaZAiCJGk40J3cGvw==","signatures":[{"sig":"MEUCIQDKIewdgFXd0LCavXe9gYTSSNnLzRCyYCYUgyAW+WZWJgIgSsvV0MtfSR9XE5QucRaJ8OkJkgW2LOWC8g5vP/FF7tg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1702789},"main":"core/dist/a2n.core.js","type":"commonjs","types":"core/src/index.d.ts","gitHead":"dbd2c794fe6fe711ba35aa12201386e16dbc44fe","scripts":{"dev":"webpack --watch --config main/config/webpack-hot.config.js","test":"nodemon -e * --ignore **/dist --exec npm run start","start":"npm run build:core && npm run build:serve && node dist/a2n.serve.js","build:core":"webpack --config core/webpack.config.js","build:serve":"webpack --config main/config/webpack.config.js"},"_npmUser":{"name":"liweiqiang","email":"18150027197@163.com"},"deprecated":"请使用最新版本","_npmVersion":"8.19.2","description":"基于express的轻量级服务器","directories":{},"_nodeVersion":"16.18.1","dependencies":{"lodash":"^4.17.21","express":"^4.18.2","body-parser":"^1.20.1","@types/lodash":"^4.14.201"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^2.0.20","ts-node":"^10.9.1","webpack":"^5.75.0","cross-env":"^7.0.3","ts-loader":"^9.4.2","typescript":"^4.9.5","webpack-cli":"^5.0.1","@types/express":"^4.17.17","tsconfig-paths":"^4.1.2","@types/webpack-env":"^1.18.3","clean-webpack-plugin":"^4.0.0","webpack-node-externals":"^3.0.0","run-script-webpack-plugin":"^0.2.0","@types/webpack-node-externals":"^3.0.4"},"_npmOperationalInternal":{"tmp":"tmp/a2n_1.0.7_1710404771053_0.7312723602543043","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"a2n","version":"2.0.0","keywords":["express","a2n","server","node","spirng","ioc","aop"],"author":{"name":"liweiqiang"},"license":"ISC","_id":"a2n@2.0.0","maintainers":[{"name":"liweiqiang","email":"18150027197@163.com"}],"bin":{"a2n-dev":"bin/dev.js","a2n-build":"bin/build.js"},"dist":{"shasum":"25d2f35f2685c2b237f51f9ffcd6426b563771ec","tarball":"https://registry.npmjs.org/a2n/-/a2n-2.0.0.tgz","fileCount":36,"integrity":"sha512-WmdjFnHVNd13pIY3BBCGqoPA6JgOplmrN35hHgjKtdPWUMz47q4jNCa274YbvYL3o21LGBKI2TaRAHLFrCkWuQ==","signatures":[{"sig":"MEQCIGHUvAzw+aRTB1koR7rjGTioPjXalIcb58hgNR008mlRAiA1Sslr5dLTJmeca13Vt61lR6k+0+a/cToadz6jEVXj2w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":47076},"main":"core/index.ts","type":"commonjs","types":"core/index.d.ts","gitHead":"8c5a80b91837920064809237d564464423f07647","scripts":{"dev":"webpack --watch --config main/config/webpack-hot.config.js","test":"nodemon -e * --ignore **/dist --exec npm run start","start":"npm run build:core && npm run build:serve && node dist/a2n.serve.js","build:core":"webpack --config core/webpack.config.js","build:serve":"webpack --config main/config/webpack.config.js"},"_npmUser":{"name":"liweiqiang","email":"18150027197@163.com"},"deprecated":"请使用最新版本","_npmVersion":"8.19.3","description":"基于express的轻量级服务器","directories":{},"_nodeVersion":"16.19.0","dependencies":{"lodash":"^4.17.21","express":"^4.18.2","body-parser":"^1.20.1"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^2.0.20","ts-node":"^10.9.1","webpack":"^5.75.0","cross-env":"^7.0.3","ts-loader":"^9.4.2","typescript":"^4.9.5","webpack-cli":"^5.0.1","@types/lodash":"^4.14.201","@types/express":"^4.17.17","tsconfig-paths":"^4.1.2","@types/webpack-env":"^1.18.3","clean-webpack-plugin":"^4.0.0","webpack-node-externals":"^3.0.0","run-script-webpack-plugin":"^0.2.0","@types/webpack-node-externals":"^3.0.4"},"_npmOperationalInternal":{"tmp":"tmp/a2n_2.0.0_1713384188977_0.9895642821490893","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"a2n","version":"2.0.1","keywords":["express","a2n","server","node","spirng","ioc","aop"],"author":{"name":"liweiqiang"},"license":"ISC","_id":"a2n@2.0.1","maintainers":[{"name":"liweiqiang","email":"18150027197@163.com"}],"bin":{"a2n-dev":"bin/dev.js","a2n-build":"bin/build.js"},"dist":{"shasum":"96bbc5a7c95632b55f5b0d58ef624db15c8d9f50","tarball":"https://registry.npmjs.org/a2n/-/a2n-2.0.1.tgz","fileCount":36,"integrity":"sha512-JFWOsQbt8Gr4TSHE7Tg1Q6hOg3dl27FD0TECIL1IU4VTUL0533WciAZVzDXQUFync7c+/hOydEyA27tF9zqEIA==","signatures":[{"sig":"MEQCIDKJUj8Y1AI8UdE2wgzE+jg6q/9q3PEd/PusPjKzyRSdAiAf46hJky/E+eLrGlP+ntyI+iAABQrK7OR1lcprjz4HDw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":46613},"main":"core/index.ts","type":"commonjs","types":"core/index.d.ts","gitHead":"8c5a80b91837920064809237d564464423f07647","_npmUser":{"name":"liweiqiang","email":"18150027197@163.com"},"deprecated":"请使用最新版本","_npmVersion":"8.19.3","description":"基于express的轻量级服务器","directories":{},"_nodeVersion":"16.19.0","dependencies":{"lodash":"^4.17.21","express":"^4.18.2","ts-node":"^10.9.1","webpack":"^5.75.0","ts-loader":"^9.4.2","typescript":"^4.9.5","body-parser":"^1.20.1","webpack-cli":"^5.0.1","@types/lodash":"^4.14.201","@types/express":"^4.17.17","tsconfig-paths":"^4.1.2","@types/webpack-env":"^1.18.3","clean-webpack-plugin":"^4.0.0","webpack-node-externals":"^3.0.0","run-script-webpack-plugin":"^0.2.0","@types/webpack-node-externals":"^3.0.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/a2n_2.0.1_1713384541992_0.8475888589512817","host":"s3://npm-registry-packages"}},"2.0.2":{"name":"a2n","version":"2.0.2","keywords":["express","a2n","server","node","spirng","ioc","aop"],"author":{"name":"liweiqiang"},"license":"ISC","_id":"a2n@2.0.2","maintainers":[{"name":"liweiqiang","email":"18150027197@163.com"}],"bin":{"a2n":"bin/index.js"},"dist":{"shasum":"bb1d9e4f67d57c76a1dee42cbf7705695a1d0310","tarball":"https://registry.npmjs.org/a2n/-/a2n-2.0.2.tgz","fileCount":24,"integrity":"sha512-0Xs4JvTVGNkKWgP3UCnJXm9g4xbj8tjR0Um/AIWErAr+jX6pGzs9GvxdF7ZIQuZjNi5k7PHFgydokwzYy8kumQ==","signatures":[{"sig":"MEUCIQCd2c0lk+rvnJczN4eUg//HoSgDGUn93Y8QIpH4dXgglAIgP0tYEgiuRjmCwj3icRQKpcw2SmePF5Fb3NYNNqP7qH4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1845882},"main":"core/dist/a2n.core.js","type":"commonjs","types":"core/dist/a2n.core.d.ts","gitHead":"9a20ed370c88f4cec65eaca4d3c0160dd948fb70","scripts":{"dev":"node webpack.config.js","build":"webpack --config core/build/webpack.config.js"},"_npmUser":{"name":"liweiqiang","email":"18150027197@163.com"},"deprecated":"请使用最新版本","_npmVersion":"8.1.0","description":"基于express的轻量级服务器","directories":{},"_nodeVersion":"16.13.0","dependencies":{"ts-node":"^10.9.1","commander":"^12.0.0","ts-loader":"^9.4.2","typescript":"^4.9.5","webpack-merge":"^5.10.0","tsconfig-paths":"^4.1.2","@types/webpack-env":"^1.18.3","clean-webpack-plugin":"^4.0.0","webpack-node-externals":"^3.0.0","run-script-webpack-plugin":"^0.2.0","@types/webpack-node-externals":"^3.0.4"},"_hasShrinkwrap":false,"devDependencies":{"lodash":"^4.17.21","express":"^4.18.2","body-parser":"^1.20.1","@types/lodash":"^4.14.201","@types/express":"^4.17.17"},"peerDependencies":{"webpack":"^5.75.0","webpack-cli":"^5.0.1"},"_npmOperationalInternal":{"tmp":"tmp/a2n_2.0.2_1714296668292_0.7002647185359465","host":"s3://npm-registry-packages"}},"2.0.3":{"name":"a2n","version":"2.0.3","keywords":["express","a2n","server","node","spirng","ioc","aop"],"author":{"name":"liweiqiang"},"license":"ISC","_id":"a2n@2.0.3","maintainers":[{"name":"liweiqiang","email":"18150027197@163.com"}],"bin":{"a2n":"bin/index.js"},"dist":{"shasum":"7e449a636aeeafc871c35163ed0857074d591600","tarball":"https://registry.npmjs.org/a2n/-/a2n-2.0.3.tgz","fileCount":18,"integrity":"sha512-KRGaWdMVUTluRWgFi5p+BqHBps8UCDDXyr1f2KCquGkprs4L3a+RSqFYwKgbIclcaUymMCDG/VrBmKrdRz+AkA==","signatures":[{"sig":"MEYCIQCrPl3+RBqTQ8hXNu3KfIN9WIL1mzWI5kMBSxul75XoywIhANsVibMlI5BMmF/aX5rBpDCWOHDu/8WGQ06/sFGBZYzf","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":717323},"main":"core/dist/a2n.core.js","type":"commonjs","types":"core/dist/a2n.core.d.ts","gitHead":"a11097ec2d6af590ef930ed561673fa31de633f9","scripts":{"dev":"node webpack.config.js","build":"webpack --config core/build/webpack.config.js"},"_npmUser":{"name":"liweiqiang","email":"18150027197@163.com"},"deprecated":"请使用最新版本","_npmVersion":"8.19.3","description":"基于express的轻量级服务器","directories":{},"_nodeVersion":"16.19.0","dependencies":{"ts-node":"^10.9.1","commander":"^12.0.0","ts-loader":"^9.4.2","typescript":"^4.9.5","webpack-merge":"^5.10.0","tsconfig-paths":"^4.1.2","@types/webpack-env":"^1.18.3","clean-webpack-plugin":"^4.0.0","webpack-node-externals":"^3.0.0","run-script-webpack-plugin":"^0.2.0","@types/webpack-node-externals":"^3.0.4"},"_hasShrinkwrap":false,"devDependencies":{"lodash":"^4.17.21","express":"^4.18.2","body-parser":"^1.20.1","@types/lodash":"^4.14.201","@types/express":"^4.17.17"},"peerDependencies":{"webpack":"^5.75.0","webpack-cli":"^5.0.1"},"_npmOperationalInternal":{"tmp":"tmp/a2n_2.0.3_1714319815737_0.878908207295618","host":"s3://npm-registry-packages"}},"2.0.4":{"name":"a2n","version":"2.0.4","keywords":["express","a2n","server","node","spirng","ioc","aop"],"author":{"name":"liweiqiang"},"license":"ISC","_id":"a2n@2.0.4","maintainers":[{"name":"liweiqiang","email":"18150027197@163.com"}],"bin":{"a2n":"bin/index.js"},"dist":{"shasum":"1edb2d0bfc05dbf17e6464c23ddf24ee76e6c146","tarball":"https://registry.npmjs.org/a2n/-/a2n-2.0.4.tgz","fileCount":24,"integrity":"sha512-jemwmJWwVaOvTJk/wBm01BjN72xse6xYUtkdz/XvGrl8op511YD4hKU2qHCuEwo5PV/53JFrkka3azjwzjBqfQ==","signatures":[{"sig":"MEUCIQCS9U5AGCqeHKlC5xREJ0705eXkGzUfiONvC6gTIlCqjwIgPNldfrBHtCnmyCyaUNLVWD+1Gl7tK83OBtR3m3Sj6HQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1849793},"main":"core/dist/a2n.core.js","type":"commonjs","types":"core/dist/a2n.core.d.ts","gitHead":"ce0c9112428298d5a01f41185027d7ebf5ed508f","scripts":{"dev":"node webpack.config.js","build":"webpack --config core/build/webpack.config.js"},"_npmUser":{"name":"liweiqiang","email":"18150027197@163.com"},"deprecated":"请使用最新版本","_npmVersion":"8.1.0","description":"基于express的轻量级服务器","directories":{},"_nodeVersion":"16.13.0","dependencies":{"chalk":"^4.0.0","dotenv":"^16.4.5","ts-node":"^10.9.1","commander":"^12.0.0","ts-loader":"^9.4.2","typescript":"^4.9.5","log-symbols":"^4.0.0","webpack-merge":"^5.10.0","tsconfig-paths":"^4.1.2","@types/webpack-env":"^1.18.3","clean-webpack-plugin":"^4.0.0","webpack-node-externals":"^3.0.0","run-script-webpack-plugin":"^0.2.0","@types/webpack-node-externals":"^3.0.4"},"_hasShrinkwrap":false,"devDependencies":{"lodash":"^4.17.21","express":"^4.18.2","body-parser":"^1.20.1","@types/lodash":"^4.14.201","@types/express":"^4.17.17"},"peerDependencies":{"webpack":"^5.75.0","webpack-cli":"^5.0.1"},"_npmOperationalInternal":{"tmp":"tmp/a2n_2.0.4_1714469141384_0.7291699122048776","host":"s3://npm-registry-packages"}},"2.0.5":{"name":"a2n","version":"2.0.5","keywords":["express","a2n","server","node","spirng","ioc","aop"],"author":{"name":"liweiqiang"},"license":"ISC","_id":"a2n@2.0.5","maintainers":[{"name":"liweiqiang","email":"18150027197@163.com"}],"bin":{"a2n":"bin/index.js"},"dist":{"shasum":"40e5ab59ed9a9773e1b2850de67f4aa7156c2d40","tarball":"https://registry.npmjs.org/a2n/-/a2n-2.0.5.tgz","fileCount":24,"integrity":"sha512-FNJ+oyHrH8NcfrgF5gCVPrEo2r2kSHpN1dql98yEISDTKssZAvm9aE1pBEGrumOY0KoxBu6pd8Oo+1RKyDMvWw==","signatures":[{"sig":"MEQCICwJ7M+FFcP66AE3d7YCjINE4m5BXfU2thjzWmx3jqboAiAKV79NI2fHJ1vpUUTE0gBFPt5QWxQa3UJ4d/w6vZEPmw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1849873},"main":"core/dist/a2n.core.js","type":"commonjs","types":"core/dist/a2n.core.d.ts","gitHead":"ce0c9112428298d5a01f41185027d7ebf5ed508f","scripts":{"dev":"node webpack.config.js","build":"webpack --config core/build/webpack.config.js"},"_npmUser":{"name":"liweiqiang","email":"18150027197@163.com"},"deprecated":"请使用最新版本","_npmVersion":"8.1.0","description":"基于express的轻量级服务器","directories":{},"_nodeVersion":"16.13.0","dependencies":{"chalk":"^4.0.0","dotenv":"^16.4.5","ts-node":"^10.9.1","webpack":"^5.75.0","commander":"^12.0.0","ts-loader":"^9.4.2","typescript":"^4.9.5","log-symbols":"^4.0.0","webpack-cli":"^5.0.1","webpack-merge":"^5.10.0","tsconfig-paths":"^4.1.2","@types/webpack-env":"^1.18.3","clean-webpack-plugin":"^4.0.0","webpack-node-externals":"^3.0.0","run-script-webpack-plugin":"^0.2.0","@types/webpack-node-externals":"^3.0.4"},"_hasShrinkwrap":false,"devDependencies":{"lodash":"^4.17.21","express":"^4.18.2","body-parser":"^1.20.1","@types/lodash":"^4.14.201","@types/express":"^4.17.17"},"_npmOperationalInternal":{"tmp":"tmp/a2n_2.0.5_1714911354590_0.6515762602724946","host":"s3://npm-registry-packages"}},"2.0.7":{"name":"a2n","version":"2.0.7","keywords":["express","a2n","server","node","spring","ioc","aop"],"author":{"name":"liweiqiang"},"license":"ISC","_id":"a2n@2.0.7","maintainers":[{"name":"liweiqiang","email":"18150027197@163.com"}],"bin":{"a2n":"bin/index.js"},"dist":{"shasum":"675748e72afce029cce99b16d0021db7959a98fa","tarball":"https://registry.npmjs.org/a2n/-/a2n-2.0.7.tgz","fileCount":20,"integrity":"sha512-xHu8BPNst6bWRH/G3Ho4b/q5mDmhwfVtphNAJgxc+29fJ8PJyc24f4RsZkJ7QnL0a1dsgf+7HP+bJQR3xsVmZg==","signatures":[{"sig":"MEUCIQD+dtz07sjRdU/eAEhcYJKVYj2X/rwH+2kJeqNPsbrsJAIgA3lSiYpmLSKLqMfJBV6KSgx1n2THtO+ThORD5T8Ihtw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":750547},"main":"core/dist/a2n.core.js","type":"commonjs","types":"core/dist/a2n.core.d.ts","gitHead":"7ff2e841ab1e27852442679317e5b42a5459860f","scripts":{"dev":"node webpack.config.js","lint":"eslint --ext .ts,.json,.js ./","build":"webpack --config core/build/webpack.config.js","lint:fix":"eslint --fix --ext .ts,.json,.js ./"},"_npmUser":{"name":"liweiqiang","email":"18150027197@163.com"},"deprecated":"请使用最新版本","_npmVersion":"9.8.1","description":"基于express的轻量级服务器","directories":{},"_nodeVersion":"18.18.1","dependencies":{"chalk":"^4.0.0","dotenv":"^16.4.5","lodash":"^4.17.21","ts-node":"^10.9.1","webpack":"^5.75.0","commander":"^12.0.0","ts-loader":"^9.4.2","typescript":"^4.9.5","log-symbols":"^4.0.0","webpack-cli":"^5.0.1","@types/lodash":"^4.14.201","webpack-merge":"^5.10.0","@types/express":"^5.0.0","tsconfig-paths":"^4.1.2","@types/webpack-env":"^1.18.3","clean-webpack-plugin":"^4.0.0","webpack-node-externals":"^3.0.0","run-script-webpack-plugin":"^0.2.0","@types/webpack-node-externals":"^3.0.4","friendly-errors-webpack-plugin":"^1.7.0","@types/express-serve-static-core":"^5.0.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","express":"^4.18.2","body-parser":"^1.20.1","@typescript-eslint/parser":"^8.12.2","@typescript-eslint/eslint-plugin":"^8.12.2"},"_npmOperationalInternal":{"tmp":"tmp/a2n_2.0.7_1730429997322_0.8330933169955219","host":"s3://npm-registry-packages"}},"2.0.8":{"name":"a2n","version":"2.0.8","keywords":["express","a2n","server","node","spring","ioc","aop"],"author":{"name":"liweiqiang"},"license":"ISC","_id":"a2n@2.0.8","maintainers":[{"name":"liweiqiang","email":"18150027197@163.com"}],"bin":{"a2n":"bin/index.js"},"dist":{"shasum":"569cfcf92e75aa7c7356f05381435830b735bd05","tarball":"https://registry.npmjs.org/a2n/-/a2n-2.0.8.tgz","fileCount":20,"integrity":"sha512-dFWcTeyWHzLFIDZcD2u2UAtWLVRzTqIMp4MMAkfg/7b7zM8Ud6W6dagfSi9JlpHEpsRsuxIiVDI7BKn2pHybRg==","signatures":[{"sig":"MEUCIBQFbh4ft82CyB/FL2ejWCz1WB3avYVp0D0Cfnh7/k5XAiEA+PMo0+TudenrmVAZ8lK+fnqNq9rdp2jOwyMah1Qr2jg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":752746},"main":"core/dist/a2n.core.js","type":"commonjs","types":"core/dist/a2n.core.d.ts","gitHead":"bef76b8024b6f1750f7558b866595b54f9c27c87","scripts":{"dev":"node webpack.config.js","lint":"eslint --ext .ts,.json,.js ./","test":"node bin/index.js dev","build":"webpack --config core/build/webpack.config.js","lint:fix":"eslint --fix --ext .ts,.json,.js ./"},"_npmUser":{"name":"liweiqiang","email":"18150027197@163.com"},"deprecated":"请使用最新版本","_npmVersion":"9.8.1","description":"基于express的轻量级服务器","directories":{},"_nodeVersion":"18.18.1","dependencies":{"chalk":"^4.0.0","dotenv":"^16.4.5","lodash":"^4.17.21","ts-node":"^10.9.1","webpack":"^5.75.0","commander":"^12.0.0","ts-loader":"^9.4.2","typescript":"^4.9.5","log-symbols":"^4.0.0","webpack-cli":"^5.0.1","@types/lodash":"^4.14.201","webpack-merge":"^5.10.0","@types/express":"^5.0.0","tsconfig-paths":"^4.1.2","@types/webpack-env":"^1.18.3","clean-webpack-plugin":"^4.0.0","webpack-node-externals":"^3.0.0","run-script-webpack-plugin":"^0.2.0","@types/webpack-node-externals":"^3.0.4","friendly-errors-webpack-plugin":"^1.7.0","@types/express-serve-static-core":"^5.0.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","express":"^4.18.2","body-parser":"^1.20.1","@typescript-eslint/parser":"^8.12.2","@typescript-eslint/eslint-plugin":"^8.12.2"},"_npmOperationalInternal":{"tmp":"tmp/a2n_2.0.8_1731058830650_0.23361074657457603","host":"s3://npm-registry-packages"}},"2.0.9":{"name":"a2n","version":"2.0.9","keywords":["express","a2n","server","node","spring","ioc","aop"],"author":{"name":"liweiqiang"},"license":"ISC","_id":"a2n@2.0.9","maintainers":[{"name":"liweiqiang","email":"18150027197@163.com"}],"bin":{"a2n":"bin/index.js"},"dist":{"shasum":"44a192f4bf7aea9ee3ba532016c5a968b39870e5","tarball":"https://registry.npmjs.org/a2n/-/a2n-2.0.9.tgz","fileCount":20,"integrity":"sha512-UzD6yx9pg7m2PKw907b1B7VtkzekiOAcswNkLELc2Dm5tG2DLMoLC9fko6HI/pufAifd0HnniAust+cgfTry0g==","signatures":[{"sig":"MEQCIENw9ZodpV/atq2pATsSnUczn0Qydz/TfuhwrpsqVJaeAiAqJMO2nh2W/l/ASF4gdwyLRS1QuR4DcCOj/NAjqlLcig==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":756950},"main":"core/dist/a2n.core.js","type":"commonjs","types":"core/index.d.ts","gitHead":"511f8c4acdb0c207b2cd700a4291d3b725e194f2","scripts":{"dev":"node webpack.config.js","lint":"eslint --ext .ts,.json,.js ./","test":"node bin/index.js dev","build":"webpack --config core/build/webpack.config.js","lint:fix":"eslint --fix --ext .ts,.json,.js ./"},"_npmUser":{"name":"liweiqiang","email":"18150027197@163.com"},"deprecated":"请使用最新版本","_npmVersion":"9.8.1","description":"基于express的轻量级服务器","directories":{},"_nodeVersion":"18.18.1","dependencies":{"chalk":"^4.0.0","dotenv":"^16.4.5","lodash":"^4.17.21","ts-node":"^10.9.1","webpack":"^5.75.0","commander":"^12.0.0","ts-loader":"^9.4.2","typescript":"^4.9.5","log-symbols":"^4.0.0","webpack-cli":"^5.0.1","@types/lodash":"^4.14.201","webpack-merge":"^5.10.0","@types/express":"^5.0.0","tsconfig-paths":"^4.1.2","@types/webpack-env":"^1.18.3","clean-webpack-plugin":"^4.0.0","webpack-node-externals":"^3.0.0","run-script-webpack-plugin":"^0.2.0","@types/webpack-node-externals":"^3.0.4","friendly-errors-webpack-plugin":"^1.7.0","@types/express-serve-static-core":"^5.0.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","express":"^4.18.2","body-parser":"^1.20.1","@typescript-eslint/parser":"^8.12.2","@typescript-eslint/eslint-plugin":"^8.12.2"},"_npmOperationalInternal":{"tmp":"tmp/a2n_2.0.9_1731493300040_0.9004313665154153","host":"s3://npm-registry-packages"}},"2.0.10":{"name":"a2n","version":"2.0.10","keywords":["express","a2n","server","node","spring","ioc","aop"],"author":{"name":"liweiqiang"},"license":"ISC","_id":"a2n@2.0.10","maintainers":[{"name":"liweiqiang","email":"18150027197@163.com"}],"bin":{"a2n":"bin/index.js"},"dist":{"shasum":"5185848401ede3da7c1715171760168ece39a134","tarball":"https://registry.npmjs.org/a2n/-/a2n-2.0.10.tgz","fileCount":20,"integrity":"sha512-ewWY62yhgBb+R1R3oLJXNWzFGEoscSi9eywmk1BObdJm3i1P9IRurN5/jYQCLIgTambcZRSKpgMJZVDu9JAxRA==","signatures":[{"sig":"MEUCIQC+jbYN/w8bioVMhGD2LCpZyEZtEcPdgBO1w8walJlUCgIgfPWZo4UMhvdgRS51bOC7GQsHRyq+BjEK/4G1uXlYLjk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":757596},"main":"core/dist/a2n.core.js","type":"commonjs","types":"core/index.d.ts","gitHead":"5589ccf6ec2f6818a815488a0a84920efe0c0c8c","scripts":{"dev":"node webpack.config.js","lint":"eslint --ext .ts,.json,.js ./","test":"node bin/index.js dev","build":"webpack --config core/build/webpack.config.js","lint:fix":"eslint --fix --ext .ts,.json,.js ./"},"_npmUser":{"name":"liweiqiang","email":"18150027197@163.com"},"_npmVersion":"9.8.1","description":"基于express的轻量级服务器","directories":{},"_nodeVersion":"18.18.1","dependencies":{"chalk":"^4.0.0","dotenv":"^16.4.5","lodash":"^4.17.21","ts-node":"^10.9.1","webpack":"^5.75.0","commander":"^12.0.0","ts-loader":"^9.4.2","typescript":"^4.9.5","log-symbols":"^4.0.0","webpack-cli":"^5.0.1","@types/lodash":"^4.14.201","webpack-merge":"^5.10.0","@types/express":"^5.0.0","tsconfig-paths":"^4.1.2","@types/webpack-env":"^1.18.3","clean-webpack-plugin":"^4.0.0","webpack-node-externals":"^3.0.0","run-script-webpack-plugin":"^0.2.0","@types/webpack-node-externals":"^3.0.4","friendly-errors-webpack-plugin":"^1.7.0","@types/express-serve-static-core":"^5.0.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","express":"^4.18.2","body-parser":"^1.20.1","@typescript-eslint/parser":"^8.12.2","@typescript-eslint/eslint-plugin":"^8.12.2"},"_npmOperationalInternal":{"tmp":"tmp/a2n_2.0.10_1731917843934_0.674382613087251","host":"s3://npm-registry-packages"}},"2.0.14":{"name":"a2n","version":"2.0.14","keywords":["express","a2n","server","node","spring","ioc","aop"],"author":{"name":"liweiqiang"},"license":"ISC","_id":"a2n@2.0.14","maintainers":[{"name":"liweiqiang","email":"18150027197@163.com"}],"bin":{"a2n":"bin/index.js"},"dist":{"shasum":"842db0d51dbe652cfbbd4f1650898f47bd0cf82e","tarball":"https://registry.npmjs.org/a2n/-/a2n-2.0.14.tgz","fileCount":22,"integrity":"sha512-CRENH0UNA9Dpn06ieBszSw6g54gI6eYUxlN9HS9zXiFfvpMKJAvR6HlD2/nk32U3ZRP+dkVV6hAH067qzahc7g==","signatures":[{"sig":"MEUCIQDPehm8b2fjfrPennZt//HRdGkWO7+5r80bAU5vX9Sn7gIgAaSZl/ZuvyQeOpZsUaM4sK0/VZmajSPJ+E4xrGitbVs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1473165},"main":"core/dist/a2n.core.cjs","type":"commonjs","types":"core/index.d.ts","module":"core/dist/a2n.core.mjs","gitHead":"7ae9cfed473f5bfeaf30930fbc280a183af2e881","scripts":{"dev":"node webpack.config.js","lint":"eslint --ext .ts,.json,.js ./","test":"node bin/index.js dev","build":"node core/build/webpack.config.js","lint:fix":"eslint --fix --ext .ts,.json,.js ./"},"_npmUser":{"name":"liweiqiang","email":"18150027197@163.com"},"_npmVersion":"9.8.1","description":"基于express的轻量级服务器","directories":{},"_nodeVersion":"18.18.1","dependencies":{"chalk":"^4.0.0","dotenv":"^16.4.5","lodash":"^4.17.21","ts-node":"^10.9.1","webpack":"^5.75.0","commander":"^12.0.0","ts-loader":"^9.4.2","typescript":"^4.9.5","log-symbols":"^4.0.0","webpack-cli":"^5.0.1","@types/lodash":"^4.14.201","webpack-merge":"^5.10.0","@types/express":"^5.0.0","tsconfig-paths":"^4.1.2","reflect-metadata":"^0.2.2","@types/webpack-env":"^1.18.3","clean-webpack-plugin":"^4.0.0","webpack-node-externals":"^3.0.0","run-script-webpack-plugin":"^0.2.0","@types/webpack-node-externals":"^3.0.4","friendly-errors-webpack-plugin":"^1.7.0","@types/express-serve-static-core":"^5.0.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","express":"^4.18.2","body-parser":"^1.20.1","@typescript-eslint/parser":"^8.12.2","@typescript-eslint/eslint-plugin":"^8.12.2"},"peerDependencies":{"chalk":"^4.0.0","dotenv":"^16.4.5","lodash":"^4.17.21","ts-node":"^10.9.1","webpack":"^5.75.0","commander":"^12.0.0","ts-loader":"^9.4.2","typescript":"^4.9.5","log-symbols":"^4.0.0","webpack-cli":"^5.0.1","@types/lodash":"^4.14.201","webpack-merge":"^5.10.0","@types/express":"^5.0.0","tsconfig-paths":"^4.1.2","reflect-metadata":"^0.2.2","@types/webpack-env":"^1.18.3","clean-webpack-plugin":"^4.0.0","webpack-node-externals":"^3.0.0","run-script-webpack-plugin":"^0.2.0","@types/webpack-node-externals":"^3.0.4","friendly-errors-webpack-plugin":"^1.7.0","@types/express-serve-static-core":"^5.0.1"},"peerDependenciesMeta":{"chalk":{"optional":false},"dotenv":{"optional":false},"lodash":{"optional":false},"ts-node":{"optional":false},"webpack":{"optional":false},"commander":{"optional":false},"ts-loader":{"optional":false},"typescript":{"optional":false},"log-symbols":{"optional":false},"webpack-cli":{"optional":false},"@types/lodash":{"optional":false},"webpack-merge":{"optional":false},"@types/express":{"optional":false},"tsconfig-paths":{"optional":false},"reflect-metadata":{"optional":false},"@types/webpack-env":{"optional":false},"clean-webpack-plugin":{"optional":false},"webpack-node-externals":{"optional":false},"run-script-webpack-plugin":{"optional":false},"@types/webpack-node-externals":{"optional":false},"friendly-errors-webpack-plugin":{"optional":false},"@types/express-serve-static-core":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/a2n_2.0.14_1749537272065_0.3911169970242887","host":"s3://npm-registry-packages-npm-production"}},"2.0.15":{"name":"a2n","version":"2.0.15","keywords":["express","a2n","server","node","spring","ioc","aop"],"author":{"name":"liweiqiang"},"license":"ISC","_id":"a2n@2.0.15","maintainers":[{"name":"liweiqiang","email":"18150027197@163.com"}],"bin":{"a2n":"bin/index.js"},"dist":{"shasum":"6517d9c30a690d4abe5c8d1f323be37ed2ae349d","tarball":"https://registry.npmjs.org/a2n/-/a2n-2.0.15.tgz","fileCount":23,"integrity":"sha512-2lVBbUcWI/cZQjqFsgNvhVZPDp9xAvssFkHEXEAidGbrAu/fdr3aFuh9H5S9LvAugdejVhapaOuK+uCEcJtC+g==","signatures":[{"sig":"MEYCIQDO7AePsUpjc6bO6uNxIt2pgghgkZYDYU8l7c6GyLpM5QIhAJ/T979qe2xjpyeX/hvg2UvCiczl/NVT7bIbPUW8lWbs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1473417},"main":"core/dist/a2n.core.cjs","type":"commonjs","types":"core/index.d.ts","module":"core/dist/a2n.core.mjs","gitHead":"805b88bdf58e6397f97dce79073c1ab05d106068","scripts":{"dev":"node webpack.config.js","lint":"eslint .","test":"node bin/index.js dev","build":"node core/build/webpack.config.js","lint:fix":"eslint . --fix"},"_npmUser":{"name":"liweiqiang","email":"18150027197@163.com"},"_npmVersion":"9.8.1","description":"基于express的轻量级服务器","directories":{},"_nodeVersion":"18.18.1","dependencies":{"chalk":"^4.0.0","dotenv":"^16.4.5","lodash":"^4.17.21","ts-node":"^10.9.1","webpack":"^5.75.0","commander":"^12.0.0","ts-loader":"^9.4.2","iconv-lite":"^0.6.3","typescript":"^4.9.5","log-symbols":"^4.0.0","webpack-cli":"^5.0.1","@types/lodash":"^4.14.201","webpack-merge":"^5.10.0","@types/express":"^5.0.0","tsconfig-paths":"^4.1.2","reflect-metadata":"^0.2.2","@types/webpack-env":"^1.18.3","clean-webpack-plugin":"^4.0.0","eslint-config-prettier":"^10.1.5","webpack-node-externals":"^3.0.0","run-script-webpack-plugin":"^0.2.0","@types/webpack-node-externals":"^3.0.4","friendly-errors-webpack-plugin":"^1.7.0","@types/express-serve-static-core":"^5.0.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.28.0","express":"^4.18.2","globals":"^16.2.0","prettier":"^3.5.3","@eslint/js":"^9.28.0","body-parser":"^1.20.1","typescript-eslint":"^8.34.0","eslint-plugin-prettier":"^5.4.1"},"_npmOperationalInternal":{"tmp":"tmp/a2n_2.0.15_1749808358231_0.23547471299972478","host":"s3://npm-registry-packages-npm-production"}},"2.1.2":{"name":"a2n","version":"2.1.2","keywords":["express","a2n","server","node","spring","ioc","aop"],"author":{"name":"liweiqiang"},"license":"ISC","_id":"a2n@2.1.2","maintainers":[{"name":"liweiqiang","email":"18150027197@163.com"}],"bin":{"a2n":"bin/index.js"},"dist":{"shasum":"6f21f25be56de4abbddf499b8c26e57468894e22","tarball":"https://registry.npmjs.org/a2n/-/a2n-2.1.2.tgz","fileCount":23,"integrity":"sha512-IjY34tFPRSRK5pZQVvsc2hI+nIhDX0Vulw5otZrWitkE/trx+2ykT1RbCqezUoSL9nd7LJrRf3TtL8sZ4wUuPg==","signatures":[{"sig":"MEYCIQDRdCEfaMeUjUCGciD1mDJmOS5IVUU9TDqBq+cW79SnWgIhAINJWSpcMfhsnD0fnp3hkZgxbOjzdgGVD0tIpI3at9ck","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1475571},"main":"core/dist/a2n.core.cjs","type":"commonjs","types":"core/index.d.ts","module":"core/dist/a2n.core.mjs","gitHead":"79fccf8b442ef3970450c258e163dc9a8cf9fb6b","scripts":{"dev":"node webpack.config.js","lint":"eslint .","test":"node bin/index.js dev","build":"node core/build/webpack.config.js","lint:fix":"eslint . --fix"},"_npmUser":{"name":"liweiqiang","actor":{"name":"liweiqiang","type":"user","email":"18150027197@163.com"},"email":"18150027197@163.com"},"_npmVersion":"9.8.1","description":"基于express的轻量级服务器","directories":{},"_nodeVersion":"18.18.1","dependencies":{"chalk":"^4.0.0","dotenv":"^16.4.5","lodash":"^4.17.21","ts-node":"^10.9.1","webpack":"^5.75.0","commander":"^12.0.0","ts-loader":"^9.4.2","iconv-lite":"^0.6.3","typescript":"^4.9.5","log-symbols":"^4.0.0","webpack-cli":"^5.0.1","@types/lodash":"^4.14.201","webpack-merge":"^5.10.0","@types/express":"^5.0.0","tsconfig-paths":"^4.1.2","reflect-metadata":"^0.2.2","@types/webpack-env":"^1.18.3","clean-webpack-plugin":"^4.0.0","eslint-config-prettier":"^10.1.5","webpack-node-externals":"^3.0.0","run-script-webpack-plugin":"^0.2.0","@types/webpack-node-externals":"^3.0.4","friendly-errors-webpack-plugin":"^1.7.0","@types/express-serve-static-core":"^5.0.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.28.0","express":"^4.18.2","globals":"^16.2.0","prettier":"^3.5.3","@eslint/js":"^9.28.0","body-parser":"^1.20.1","typescript-eslint":"^8.34.0","eslint-plugin-prettier":"^5.4.1"},"_npmOperationalInternal":{"tmp":"tmp/a2n_2.1.2_1750240645655_0.5339957894296521","host":"s3://npm-registry-packages-npm-production"}},"2.1.4":{"name":"a2n","version":"2.1.4","keywords":["express","a2n","server","node","spring","ioc","aop"],"author":{"name":"liweiqiang"},"license":"ISC","_id":"a2n@2.1.4","maintainers":[{"name":"liweiqiang","email":"18150027197@163.com"}],"bin":{"a2n":"bin/index.js"},"dist":{"shasum":"53e0e461528e6c06d074054fb931122c53efb1a1","tarball":"https://registry.npmjs.org/a2n/-/a2n-2.1.4.tgz","fileCount":23,"integrity":"sha512-Jgns6Es9qD8uxlPJy/vlngd5MoWCGS+MPZOkrlWFDKTrXlEpeMJYN+s39K16yaS4B/1YNYGXhftrXEli5pYgLg==","signatures":[{"sig":"MEQCIFi2vFR4ZeGIThcX8UvtzEE28xQ8UDS/D/34wh6sKgrkAiA5+nIHpMerqo4WXqccU+tn3dgVjdIn0HnWCN6xFqFzdA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1480141},"main":"core/dist/a2n.core.cjs","type":"commonjs","types":"core/index.d.ts","module":"core/dist/a2n.core.mjs","gitHead":"e9c8896274f142c32ce16a3e24cacc15b5c5d6a3","scripts":{"dev":"node webpack.config.js","lint":"eslint .","build":"node core/build/webpack.config.js","lint:fix":"eslint . --fix"},"_npmUser":{"name":"liweiqiang","actor":{"name":"liweiqiang","type":"user","email":"18150027197@163.com"},"email":"18150027197@163.com"},"_npmVersion":"9.8.1","description":"基于express的轻量级服务器","directories":{},"_nodeVersion":"18.18.1","dependencies":{"chalk":"^4.0.0","dotenv":"^16.4.5","lodash":"^4.17.21","ts-node":"^10.9.1","webpack":"^5.75.0","commander":"^12.0.0","ts-loader":"^9.4.2","iconv-lite":"^0.6.3","typescript":"^4.9.5","log-symbols":"^4.0.0","webpack-cli":"^5.0.1","@types/lodash":"^4.14.201","webpack-merge":"^5.10.0","@types/express":"^5.0.0","tsconfig-paths":"^4.1.2","reflect-metadata":"^0.2.2","@types/webpack-env":"^1.18.3","clean-webpack-plugin":"^4.0.0","eslint-config-prettier":"^10.1.5","webpack-node-externals":"^3.0.0","run-script-webpack-plugin":"^0.2.0","@types/webpack-node-externals":"^3.0.4","friendly-errors-webpack-plugin":"^1.7.0","@types/express-serve-static-core":"^5.0.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.28.0","express":"^4.18.2","globals":"^16.2.0","prettier":"^3.5.3","@eslint/js":"^9.28.0","body-parser":"^1.20.1","typescript-eslint":"^8.34.0","eslint-plugin-prettier":"^5.4.1"},"_npmOperationalInternal":{"tmp":"tmp/a2n_2.1.4_1750820998662_0.8662741266604341","host":"s3://npm-registry-packages-npm-production"}},"2.1.5":{"name":"a2n","version":"2.1.5","description":"基于express的轻量级服务器","main":"core/dist/a2n.core.cjs","module":"core/dist/a2n.core.mjs","type":"commonjs","types":"core/index.d.ts","author":{"name":"liweiqiang"},"license":"ISC","bin":{"a2n":"bin/index.js"},"scripts":{"dev":"node webpack.config.js","build":"node core/build/webpack.config.js","lint":"eslint .","lint:fix":"eslint . --fix"},"keywords":["express","a2n","server","node","spring","ioc","aop"],"devDependencies":{"@eslint/js":"^9.28.0","body-parser":"^1.20.1","eslint":"^9.28.0","eslint-plugin-prettier":"^5.4.1","express":"^4.18.2","globals":"^16.2.0","prettier":"^3.5.3","typescript-eslint":"^8.34.0"},"dependencies":{"@types/express":"^5.0.0","@types/express-serve-static-core":"^5.0.1","@types/lodash":"^4.14.201","@types/webpack-env":"^1.18.3","@types/webpack-node-externals":"^3.0.4","chalk":"^4.0.0","clean-webpack-plugin":"^4.0.0","commander":"^12.0.0","dotenv":"^16.4.5","eslint-config-prettier":"^10.1.5","friendly-errors-webpack-plugin":"^1.7.0","iconv-lite":"^0.6.3","lodash":"^4.17.21","log-symbols":"^4.0.0","reflect-metadata":"^0.2.2","run-script-webpack-plugin":"^0.2.0","ts-loader":"^9.4.2","ts-node":"^10.9.1","tsconfig-paths":"^4.1.2","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1","webpack-merge":"^5.10.0","webpack-node-externals":"^3.0.0"},"_id":"a2n@2.1.5","gitHead":"29557661589056d853fb1abd0dfa34e164763dd8","_nodeVersion":"18.18.1","_npmVersion":"9.8.1","dist":{"integrity":"sha512-4R7Np6MnGAeKxEPzcbAFVFZNedigX8iiJfO/nnUY5ZSXjqZnww2LSfey6SnNpNDbKFTAg63pbEqLy8qfRWk/dQ==","shasum":"e9105fa5fd2b0c94a762ba7345ea9e1546776914","tarball":"https://registry.npmjs.org/a2n/-/a2n-2.1.5.tgz","fileCount":23,"unpackedSize":1481381,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCc1ml8uQR6JmJz3M7SkCHeMOYmwWOXY4boaXgkHqXZYwIgY1duFoO8Iupk+zaKommGW1z8ePBN6DAu7S7YPMX6fYE="}]},"_npmUser":{"name":"liweiqiang","email":"18150027197@163.com","actor":{"name":"liweiqiang","email":"18150027197@163.com","type":"user"}},"directories":{},"maintainers":[{"name":"liweiqiang","email":"18150027197@163.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/a2n_2.1.5_1750930945878_0.5324383405640325"},"_hasShrinkwrap":false}},"time":{"created":"2023-02-08T12:31:27.636Z","modified":"2025-06-26T09:42:26.341Z","0.0.1":"2023-02-08T12:31:27.829Z","0.0.2":"2023-02-08T12:33:25.881Z","0.0.3":"2023-02-08T12:41:51.159Z","0.0.4":"2023-02-08T13:13:28.334Z","0.0.5":"2023-02-09T14:17:56.455Z","0.0.6":"2023-02-09T14:18:47.784Z","0.0.7":"2023-02-09T14:33:04.936Z","0.0.8":"2023-02-09T14:45:13.797Z","0.0.9":"2023-02-09T14:56:38.645Z","0.0.10":"2023-02-09T15:14:12.475Z","0.0.11":"2023-02-09T15:23:42.272Z","0.0.12":"2023-03-29T08:18:57.013Z","0.0.13":"2023-03-29T09:24:06.310Z","0.0.14":"2023-03-29T14:01:28.934Z","0.0.15":"2023-06-07T07:08:37.666Z","1.0.1":"2023-11-07T01:23:49.239Z","1.0.2":"2023-11-07T07:48:54.447Z","1.0.3":"2023-11-07T07:52:40.528Z","1.0.4":"2023-11-08T11:44:50.737Z","1.0.5":"2023-11-11T05:52:10.953Z","1.0.6":"2023-12-18T00:55:58.909Z","1.0.7":"2024-03-14T08:26:11.359Z","2.0.0":"2024-04-17T20:03:09.131Z","2.0.1":"2024-04-17T20:09:02.181Z","2.0.2":"2024-04-28T09:31:08.497Z","2.0.3":"2024-04-28T15:56:55.938Z","2.0.4":"2024-04-30T09:25:41.693Z","2.0.5":"2024-05-05T12:15:54.842Z","2.0.6":"2024-11-01T02:29:58.914Z","2.0.7":"2024-11-01T02:59:57.613Z","2.0.8":"2024-11-08T09:40:30.942Z","2.0.9":"2024-11-13T10:21:40.274Z","2.0.10":"2024-11-18T08:17:24.283Z","2.0.11":"2025-06-10T03:43:31.174Z","2.0.12":"2025-06-10T05:37:52.623Z","2.0.13":"2025-06-10T05:56:40.885Z","2.0.14":"2025-06-10T06:34:32.291Z","2.0.15":"2025-06-13T09:52:38.410Z","2.1.0":"2025-06-18T08:36:45.078Z","2.1.1":"2025-06-18T09:38:41.288Z","2.1.2":"2025-06-18T09:57:25.873Z","2.1.3":"2025-06-24T10:32:37.609Z","2.1.4":"2025-06-25T03:09:58.891Z","2.1.5":"2025-06-26T09:42:26.179Z"},"author":{"name":"liweiqiang"},"license":"ISC","keywords":["express","a2n","server","node","spring","ioc","aop"],"description":"基于express的轻量级服务器","maintainers":[{"name":"liweiqiang","email":"18150027197@163.com"}],"readme":"<h1 align=\"center\">a2n</h1>\n\n<div align=\"center\">\n  \n基于Spring设计理念开发的NodeJs服务端框架（>=V2.1.0）\n\n[NPM][npm-url]&nbsp;&nbsp;&nbsp;&nbsp;[Github][github-url]\n\n[npm-url]: https://www.npmjs.com/package/a2n\n[github-url]: https://github.com/lwq0615/a2n\n[a2n-export-plugin-url]: https://github.com/lwq0615/a2n-export-plugin\n  \n</div>\n\n## ✨ 语言\n\n- 🌍 基于 NodeJs+Express+TS 进行开发\n- 🌈 采用了 Java 语言 Spring 框架的设计理念\n\n## ✨ 特性\n\n- 🌍 无需配置即可快速启动项目\n- 🔨 实现了 Spring 中 AOP，IOC，自动配置等主要的功能\n- 🌈 支持自定义装饰器\n- 📦 自动追踪的全局ctx上下文\n- 🔨 根据文件目录和类结构自动生成接口\n\n## 📦 快速开始\n\n- 初始化 npm 环境\n\n```bash\nnpm init\n```\n\n- 安装依赖\n\n```bash\nnpm install a2n\n```\n\n- package.json 添加启动命令\n\n```json\n\"scripts\": {\n  \"dev\": \"a2n dev\",\n  \"build\": \"a2n build\",\n  \"pnpm:init\": \"a2n pnpm:init\"\n}\n```\n\n> 如果使用的是pnpm，需要在install后运行`pnpm pnpm:init`\n\n- 运行服务\n\n```bash\nnpm run dev\n```\n\n- 打包\n\n```bash\nnpm run build\n```\n\n> 打包后的产物在根目录`dist`文件夹内，入口文件为`a2n.serve.js`，通过`node dist/a2n.serve.js`运行\n\n## 🔨 项目结构\n\n- 配置文件 a2n.config.js\n\n> a2n.config.js 为项目配置文件，配置项如下，a2n有一份默认的配置文件，如果需要修改覆盖它，只需要在项目根目录创建名为 a2n.config.js 的文件\n\n```js\nmodule.exports = {\n  // 全局接口前缀\n  baseUrl: '/api',\n  // 导出接口的前缀\n  apiExportBaseUrl: '',\n  // 组件扫描路径，该路径下的js,ts文件将会被容器扫描，默认src\n  componentScan: 'src',\n  // 服务启动端口号，默认8080\n  port: 8088,\n  // 一些自定义的配置项\n  datasource: {\n    url: 'mysql:127.0.0.1:3306'\n  },\n  // webpack配置，值可以是以下两种情况\n  // 1.一个object，会通过webpack-merge与默认webpack配置进行合并\n  // 2.也可以是一个函数，入参: [程序提供的默认webpack配置, webpack-merge的merge函数]，返回值：最终的webpack配置\n  webpack: {\n    ...\n  } || (baseWebpackConfig, merge) => ({...})\n}\n```\n\n- ts语言配置\n\n> 在项目启动时，程序会在根目录默认生成一份ts配置文件，通过修改根目录下的 tsconfig.json 配置ts语言能力。\n\n## 🔨 配置环境变量\n\n> 在 2.0.4 版本中，a2n 集成了 dotenv 插件，可以自定义环境变量，在项目启动时，程序会自动加载根目录下的 .env 文件，该文件内容会注入到 process.env 中，如果需要自定义环境变量，可以通过命令行指定 -e 或者 --env 参数指定自定义的环境变量文件。\n\n- package.json\n\n```js\n\"scripts\": {\n  // 不指定 -e 或 --env，默认读取根目录下 .env 文件\n  \"dev\": \"a2n dev\",\n  // 指定任意的参数名称，例如 --env production，读取根目录下 .env.production 文件\n  \"build\": \"a2n dev --env production\"\n},\n```\n\n- .env\n\n```env\nAPP_TITLE = a2n服务端框架\n```\n\n- 在程序中获取环境变量值\n\n```ts\nconsole.log(process.env.APP_TITLE)\n```\n\n> 优先级：通过 -e 或 --env 指定的配置文件如果存在同名参数，则会覆盖默认的 .env 文件\n\n## 🌈 如何使用\n\n> 在根目录下创建 src 文件夹（a2n.config.js 中配置的 componentScan 属性，此处以 src 为例），在 src 文件夹下创建 .ts 或 .js 文件，并 export default 导出默认 Class，该 Class 将会被容器扫描注册\n\n### 编写接口\n\n```ts\nimport { Control, Get, Query, Post, Body, Put, Req, Res, Request, Response } from 'a2n';\n\n/**\n * 使用@Control标记一个Class\n * Class下的@Get，@Post，@Delete，@Put，@RequestMapping方法都会被注册为接口，方法return的值作为接口返回值\n */\n@Control(\"/user\")\nexport default class UserControl{\n\n  @Get(\"/get\")\n  get(@Query query: any, @Query(\"name\") name: string){\n    // 使用@Query注入url携带的参数，@Query(\"name\")表示注入url参数中名称为name的参数\n    return query.name\n  }\n\n  @Post(\"/post\")\n  get1(@Body body: any, @Body(\"name\") name: string){\n    // 使用@Body注入请求报文携带的参数，@Body(\"name\")表示注入请求报文中名称为name的参数\n    return body\n  }\n\n  @Put(\"/put\")\n  get1(@Req request: Request, @Res response: Response){\n    // 使用@Req注入请求对象，@Res注入响应对象\n    // 请求和响应对象使用参考express的Request、Response使用方法 https://nodejs.cn/express/4x/api/req/\n  }\n\n}\n```\n\n### 依赖注入\n\n```ts\nimport { Autowired, Bean, Config, PostConstruct, BeanScope, Scope, getBean, getBeans } from \"a2n\";\nimport RoleService from \"./RoleService\";\nimport OtherBean from \"./OtherBean\";\n\n// @Service将该类交给bean容器管理，与@Bean具有相同的功能，只是命名不同\n@Service\n// @Scope定义了bean的创建方式，BeanScope.PROTOTYPE：多例，每次获取创建新的bean\n// BeanScope.REQUEST，每个请求生成一次bean\n// BeanScope.SINGLETON（默认），在单例池生成bean，每次从单例池获取\n@Scope(BeanScope.PROTOTYPE)\nexport default class UserServicer {\n\n  // 获取一个RoleService类型的bean注入到role属性\n  // 从2.0.15版本开始，可以省略Autowired的装饰器参数，根据ts类型进行注入\n  @Autowired\n  role: RoleService\n\n  // 从a2n.config.js配置文件中查询datasource.url注入到url属性中\n  @Config('datasource.url')\n  url: string = null\n\n  @PostConstruct\n  init() {\n    // bean创建并完成依赖注入后，将会执行@PostConstruct的内容\n    console.log(this.role)\n    console.log(this.url)\n  }\n\n  async getUser() {\n    // 可以通过getBean手动获取bean\n    const other = await getBean<OtherBean>(OtherBean)\n    // getBeans会获取所有属于或者继承自OtherBean的bean\n    const others = await getBeans<OtherBean>(OtherBean)\n  }\n\n}\n```\n\n### 拦截器\n\n```ts\nimport { Bean, Interceptor, Context } from \"a2n\";\n\n/**\n * 继承Interceptor类并注入到容器中，该类会被注册为拦截器\n * return false拦截请求\n */\n@Bean\nexport default class AuthInterceptor extends Interceptor {\n\n  /**\n   * 拦截器校验方法\n   * @param req 请求对象\n   * @param ctx 请求上下文\n   * @returns false：拦截，true：不拦截\n   */\n  async doFilter(req: Request, ctx: Context): boolean {\n    // 从2.1.0版本开始，doFilter的第二个参数变更为ctx，ctx内包含了之前的所有参数内容\n    if(ctx.request.baseUrl === \"/user\") {\n      return true\n    }else {\n      return false\n    }\n  }\n\n}\n```\n\n### 自动配置\n\na2n也提供了SpringBoot中的自动配置功能，通过`yarn add`或者`npm i`（暂不支持pnpm）添加到node_modules的依赖包中，如果包含`__a2n.inject.js`文件，则a2n会自动查找并引入该文件。因此，只要在该文件中引入Bean相关代码，在安装此依赖包时，相关的Bean都会被自动注入容器中\n\n> 以下是开发一个简单的a2n依赖包的案例\n\n* 创建一个npm项目（a2n-dep），在项目根目录创建`__a2n.inject.js`文件，在该文件内引入需要自动注入到容器中的bean\n![image](https://github.com/user-attachments/assets/aac856be-e3ee-4b9c-8ef3-8aa37d70e070)\n\n* 编写src/User.ts代码，不需要安装a2n直接引入，并使用@Bean装饰器（如果`a2n-dep`项目中需要引入其他依赖，请添加依赖到`peerDependencies`中）\n```ts\nimport { AppLifecycle, Bean } from 'a2n'\n\n// 继承AppLifecycle的bean都会被注册为生命周期管理器\n@Bean\nexport default class AppLife extends AppLifecycle {\n  // 在a2n启动完成后触发该函数\n  afterAppStart() {\n    console.log('dep start')\n  }\n  // 在a2n程序关闭时触发函数\n  afterAppClose() {\n    console.log('app close')\n  }\n}\n```\n\n* 效果：当一个a2n项目引入此依赖包（yarn add a2n-dep或npm i a2n-dep）后，a2n项目启动成功后，会打印`dep start`\n\n### 自定义装饰器\n\n通过自定义装饰器，配合Aspect切面实现对函数的精准切面控制\n\n* 定义一个自定义装饰器，装饰需要切入的函数\n\n```ts\nimport { Bean, Context, getContext, registerCustomDecorator } from 'a2n'\n\nexport const CustomAspect: MethodDecorator = (target, name) => {\n  registerCustomDecorator(CustomAspect, target, name)\n}\n\n@Bean\nexport default class UserService {\n  @CustomAspect\n  getUser(query: any) {\n    const ctx: Context = getContext()\n    return ctx.request.path\n  }\n}\n```\n* 添加一个切面类，在被`CustomAspect`装饰的函数执行前插入逻辑\n\n```ts\nimport { Aspect, Before } from 'a2n'\nimport { CustomAspect } from '@/src/UserService'\n\n@Aspect\nexport default class AspectHandler {\n  @Before(CustomAspect)\n  before() {\n    console.log('before')\n  }\n}\n```\n\n* 至此，调用任何装饰了`CustomAspect`的bean函数，都会触发`AspectHandler.before`逻辑，例如`UserService.getUser`函数，\n\n\n### ApiExport自动生成接口\n\n快速将一个类的所有函数导出为接口，主要目的是配合[a2n-export-plugin][a2n-export-plugin-url]插件使用\n\n```ts\n// src/api-export.ts\nimport { ApiExport } from '@core/control/api-export'\n\n@ApiExport\nexport default class ExportApi {\n  async getName(id: number, age: number) {\n    return [id, age]\n  }\n}\n```\n\n在以上demo中，通过为类添加@ApiExport装饰器，生成如下接口\n\n* url: /api-export/getName <br/>\n* body: [id, age]\n\n> * url的生成规则：baseUrl+apiExportBaseUrl+文件路径+函数名（baseUrl和apiExportBaseUrl来源于a2n配置文件，文件路径为基于componentScan的相对路径） <br/>\n> * body参数的规则：body传参固定为数组，数组中的每个元素会被解构到函数的入参\n\n请求接口\n\n```ts\naxios.post(\"/api-export/getName\", [id, age])\n```\n","readmeFilename":"README.md"}