{"_id":"@quicker-js/class-decorator","_rev":"43-03b552ec1ad151983a0d7ad8d5c84faf","time":{"0.0.1-dev.2021102803":"2021-10-28T08:11:34.922Z","created":"2021-10-28T08:18:40.999Z","0.0.1-dev.2021102804":"2021-10-28T08:18:41.223Z","modified":"2022-04-06T17:43:36.204Z","0.0.1-dev.2021103101":"2021-10-31T08:33:33.282Z","0.0.1-dev.2021103102":"2021-10-31T13:05:25.116Z","0.0.1-dev.2021103103":"2021-11-01T08:09:12.682Z","0.0.1-dev.2021110301":"2021-11-03T11:26:32.755Z","0.0.1-dev.2021111301":"2021-11-13T07:44:22.315Z","0.0.1-dev.2021111302":"2021-11-17T11:08:57.967Z","0.0.1-dev.2021111701":"2021-11-17T12:29:22.269Z","0.0.1-dev.2021111702":"2021-11-17T12:34:14.481Z","1.1.0":"2022-01-13T16:17:01.854Z"},"name":"@quicker-js/class-decorator","dist-tags":{"latest":"1.1.0"},"versions":{"0.0.1-dev.2021102804":{"name":"@quicker-js/class-decorator","version":"0.0.1-dev.2021102804","description":"class-decorator is typescript decorator framework.","main":"dist/cjs","types":"dist/types","scripts":{"build:es2015":"tsc --project tsconfig.prod.esm2015.json","build:esm5":"tsc --project tsconfig.prod.esm5.json","build:cjs":"tsc --project tsconfig.prod.cjs.json","build:amd":"tsc --project tsconfig.prod.amd.json","build:umd":"tsc --project tsconfig.prod.umd.json","build:types":"tsc --project tsconfig.prod.types.json","doc":"typedoc --options ./typedoc.json","release":"yarn build:es2015 && yarn build:esm5 && yarn build:cjs && yarn build:amd && yarn build:umd && yarn build:types && yarn doc","test":"mocha -w"},"repository":{"type":"git","url":"git+https://github.com/quicker-js/class-decorator.git"},"keywords":["class-decorator"],"author":{"name":"YunlongRan","email":"549510622@qq.com"},"license":"MIT","bugs":{"url":"https://github.com/quicker-js/class-transformer/issues"},"homepage":"https://github.com/quicker-js/class-transformer#readme","devDependencies":{"@types/chai":"^4.2.22","@types/mocha":"^8.2.3","@types/node":"^16.11.3","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","chai":"^4.3.4","eslint":"7","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","mocha":"^9.1.3","prettier":"^2.4.1","reflect-metadata":"^0.1.13","ts-node":"^10.3.1","typedoc":"^0.22.7","typescript":"^4.4.4"},"gitHead":"35c65abf2d2b4c54f19e1550641565bfab906f3f","_id":"@quicker-js/class-decorator@0.0.1-dev.2021102804","_nodeVersion":"14.16.1","_npmVersion":"8.1.1","dist":{"integrity":"sha512-bdVHhBiRoFGnfs3If5U6Fji1thNHKHu6/z7aCU0HkLUFA3Ff3NsfTSw7d1JdtkUXPzvyVMh7k8EQYjk0b20h6A==","shasum":"dc920ae95e5198d3c2a4ca41d3290487977f237e","tarball":"https://registry.npmjs.org/@quicker-js/class-decorator/-/class-decorator-0.0.1-dev.2021102804.tgz","fileCount":163,"unpackedSize":188898,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEBLXwGfG22fMKJeEP1hN1C9wkYmuW5WjIEXIMcT5AWZAiAabSAMt8KG7eEa29Yw2tiM7Q9WpB9mWOEI8e/wqoE7Cg=="}]},"_npmUser":{"name":"leo_ran","email":"admin@ranyunlong.com"},"directories":{},"maintainers":[{"name":"leo_ran","email":"admin@ranyunlong.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/class-decorator_0.0.1-dev.2021102804_1635409121060_0.0670887502797064"},"_hasShrinkwrap":false},"0.0.1-dev.2021103101":{"name":"@quicker-js/class-decorator","version":"0.0.1-dev.2021103101","description":"class-decorator is typescript decorator framework.","main":"dist/cjs","types":"dist/types","scripts":{"build:es2015":"tsc --project tsconfig.prod.esm2015.json","build:esm5":"tsc --project tsconfig.prod.esm5.json","build:cjs":"tsc --project tsconfig.prod.cjs.json","build:amd":"tsc --project tsconfig.prod.amd.json","build:umd":"tsc --project tsconfig.prod.umd.json","build:types":"tsc --project tsconfig.prod.types.json","doc":"typedoc --options ./typedoc.json","release":"yarn build:es2015 && yarn build:esm5 && yarn build:cjs && yarn build:amd && yarn build:umd && yarn build:types && yarn doc","test":"mocha -w"},"repository":{"type":"git","url":"git+https://github.com/quicker-js/class-decorator.git"},"keywords":["class-decorator"],"author":{"name":"YunlongRan","email":"549510622@qq.com"},"license":"MIT","bugs":{"url":"https://github.com/quicker-js/class-transformer/issues"},"homepage":"https://github.com/quicker-js/class-transformer#readme","devDependencies":{"@types/chai":"^4.2.22","@types/mocha":"^8.2.3","@types/node":"^16.11.3","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","chai":"^4.3.4","eslint":"7","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","mocha":"^9.1.3","prettier":"^2.4.1","reflect-metadata":"^0.1.13","ts-node":"^10.3.1","typedoc":"^0.22.7","typescript":"^4.4.4"},"gitHead":"93eccaa87a3b89d7334316972389a668ae2662d4","_id":"@quicker-js/class-decorator@0.0.1-dev.2021103101","_nodeVersion":"14.16.1","_npmVersion":"8.1.1","dist":{"integrity":"sha512-9xuKN+6KYGzOm0h6KUchXjOb0GBzfdCYH4e/mNLGogX/OfAop4DX02FatUVQDu3DXnP7noIPfHZci4cqOOxu+Q==","shasum":"b2ae28b232ef4513ebbe04a26441c4742dc9e974","tarball":"https://registry.npmjs.org/@quicker-js/class-decorator/-/class-decorator-0.0.1-dev.2021103101.tgz","fileCount":169,"unpackedSize":210260,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDbgdhCVwqy4qPDt6pYtPw5zMAnKO4ztdrft2VBL4Wn2QIgPl94fDxfRjc6DaEFjV5FHWM1fIPHe1rtMjwZOgW0rSE="}]},"_npmUser":{"name":"leo_ran","email":"admin@ranyunlong.com"},"directories":{},"maintainers":[{"name":"leo_ran","email":"admin@ranyunlong.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/class-decorator_0.0.1-dev.2021103101_1635669213097_0.13165941844063256"},"_hasShrinkwrap":false},"0.0.1-dev.2021103102":{"name":"@quicker-js/class-decorator","version":"0.0.1-dev.2021103102","description":"class-decorator is typescript decorator framework.","main":"dist/cjs","types":"dist/types","scripts":{"build:es2015":"tsc --project tsconfig.prod.esm2015.json","build:esm5":"tsc --project tsconfig.prod.esm5.json","build:cjs":"tsc --project tsconfig.prod.cjs.json","build:amd":"tsc --project tsconfig.prod.amd.json","build:umd":"tsc --project tsconfig.prod.umd.json","build:types":"tsc --project tsconfig.prod.types.json","doc":"typedoc --options ./typedoc.json","release":"yarn build:es2015 && yarn build:esm5 && yarn build:cjs && yarn build:amd && yarn build:umd && yarn build:types && yarn doc","test":"mocha -w"},"repository":{"type":"git","url":"git+https://github.com/quicker-js/class-decorator.git"},"keywords":["class-decorator"],"author":{"name":"YunlongRan","email":"549510622@qq.com"},"license":"MIT","bugs":{"url":"https://github.com/quicker-js/class-transformer/issues"},"homepage":"https://github.com/quicker-js/class-transformer#readme","devDependencies":{"@types/chai":"^4.2.22","@types/mocha":"^8.2.3","@types/node":"^16.11.3","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","chai":"^4.3.4","eslint":"7","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","mocha":"^9.1.3","prettier":"^2.4.1","reflect-metadata":"^0.1.13","ts-node":"^10.3.1","typedoc":"^0.22.7","typescript":"^4.4.4"},"gitHead":"24290640f53aa429ba7d58602eb2f070e0cb7659","_id":"@quicker-js/class-decorator@0.0.1-dev.2021103102","_nodeVersion":"14.16.1","_npmVersion":"8.1.1","dist":{"integrity":"sha512-/OAM4xYSBsydpFieECBmlRv/LmQk5K3dL8DXhPCgkmaJK47J1ds1w3uYkmtFHWi3VyoPZB+LLq3YNkWeA4tImA==","shasum":"3202a59e9b9cb9b59993f46c3aaf3aa5af9e20ac","tarball":"https://registry.npmjs.org/@quicker-js/class-decorator/-/class-decorator-0.0.1-dev.2021103102.tgz","fileCount":169,"unpackedSize":212362,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCpZD/gJxRPiGeXYmnQem9qDs8TTwsZy0s3vFgmqMu4vgIhAKpzK5AGpVhQDS5GzS3AngCjE4Wu4GTVv30AeCkWj4mc"}]},"_npmUser":{"name":"leo_ran","email":"admin@ranyunlong.com"},"directories":{},"maintainers":[{"name":"leo_ran","email":"admin@ranyunlong.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/class-decorator_0.0.1-dev.2021103102_1635685524953_0.4994722009262722"},"_hasShrinkwrap":false},"0.0.1-dev.2021103103":{"name":"@quicker-js/class-decorator","version":"0.0.1-dev.2021103103","description":"class-decorator is typescript decorator framework.","main":"dist/cjs","types":"dist/types","scripts":{"build:clean":"rimraf dist && rimraf docs","build:es2015":"tsc --project tsconfig.prod.esm2015.json","build:esm5":"tsc --project tsconfig.prod.esm5.json","build:cjs":"tsc --project tsconfig.prod.cjs.json","build:amd":"tsc --project tsconfig.prod.amd.json","build:umd":"tsc --project tsconfig.prod.umd.json","build:types":"tsc --project tsconfig.prod.types.json","doc":"typedoc --options ./typedoc.json","build:rollup":"rollup --config rollup.config.js","release":"yarn build:clean && yarn build:es2015 && yarn build:esm5 && yarn build:cjs && yarn build:amd && yarn build:umd && yarn build:types && yarn build:rollup && yarn doc","test":"mocha -w"},"repository":{"type":"git","url":"git+https://github.com/quicker-js/class-decorator.git"},"keywords":["class-decorator"],"author":{"name":"YunlongRan","email":"549510622@qq.com"},"license":"MIT","bugs":{"url":"https://github.com/quicker-js/class-transformer/issues"},"homepage":"https://github.com/quicker-js/class-transformer#readme","devDependencies":{"@rollup/plugin-commonjs":"^21.0.1","@rollup/plugin-node-resolve":"^13.0.6","@types/chai":"^4.2.22","@types/mocha":"^8.2.3","@types/node":"^16.11.3","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","chai":"^4.3.4","eslint":"7","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","mocha":"^9.1.3","prettier":"^2.4.1","reflect-metadata":"^0.1.13","rollup":"^2.58.3","rollup-plugin-terser":"^7.0.2","ts-node":"^10.3.1","typedoc":"^0.22.7","typescript":"^4.4.4"},"dependencies":{"rimraf":"^3.0.2"},"gitHead":"09b56e18bf8c76ec401799f8202096c522288eb8","_id":"@quicker-js/class-decorator@0.0.1-dev.2021103103","_nodeVersion":"14.16.1","_npmVersion":"8.1.1","dist":{"integrity":"sha512-8igfLvhFlqjkZVbHVA/3hD80zqNjivEGqo3oLsVnDrmUkIuFj9tpHRRwuB69Dpuz7+o4UKQk6Ov454aM6uArGA==","shasum":"dbcd1f02f2520a10a1468792a5568ef19e50b0c7","tarball":"https://registry.npmjs.org/@quicker-js/class-decorator/-/class-decorator-0.0.1-dev.2021103103.tgz","fileCount":174,"unpackedSize":347042,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD30nZHxtUYWBnrxcjnnNo7by+HZdcjLhAsEFjYh97fTwIhAI6m/znpXPYn+pbMnLFyNRD0idcsdQ1XdJk/KhX7Ce7V"}]},"_npmUser":{"name":"leo_ran","email":"admin@ranyunlong.com"},"directories":{},"maintainers":[{"name":"leo_ran","email":"admin@ranyunlong.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/class-decorator_0.0.1-dev.2021103103_1635754152535_0.5455420646114566"},"_hasShrinkwrap":false},"0.0.1-dev.2021110301":{"name":"@quicker-js/class-decorator","version":"0.0.1-dev.2021110301","description":"class-decorator is typescript decorator framework.","main":"dist/cjs","types":"dist/types","scripts":{"build:clean":"rimraf dist && rimraf docs","build:es2015":"tsc --project tsconfig.prod.esm2015.json","build:esm5":"tsc --project tsconfig.prod.esm5.json","build:cjs":"tsc --project tsconfig.prod.cjs.json","build:amd":"tsc --project tsconfig.prod.amd.json","build:umd":"tsc --project tsconfig.prod.umd.json","build:types":"tsc --project tsconfig.prod.types.json","doc":"typedoc --options ./typedoc.json","build:rollup":"rollup --config rollup.config.js","release":"yarn build:clean && yarn build:es2015 && yarn build:esm5 && yarn build:cjs && yarn build:amd && yarn build:umd && yarn build:types && yarn build:rollup && yarn doc","test":"mocha -w"},"repository":{"type":"git","url":"git+https://github.com/quicker-js/class-decorator.git"},"keywords":["class-decorator"],"author":{"name":"YunlongRan","email":"549510622@qq.com"},"license":"MIT","bugs":{"url":"https://github.com/quicker-js/class-transformer/issues"},"homepage":"https://github.com/quicker-js/class-transformer#readme","devDependencies":{"@rollup/plugin-commonjs":"^21.0.1","@rollup/plugin-node-resolve":"^13.0.6","@types/chai":"^4.2.22","@types/mocha":"^8.2.3","@types/node":"^16.11.3","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","chai":"^4.3.4","eslint":"7","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","mocha":"^9.1.3","prettier":"^2.4.1","reflect-metadata":"^0.1.13","rollup":"^2.58.3","rollup-plugin-terser":"^7.0.2","ts-node":"^10.3.1","typedoc":"^0.22.7","typescript":"^4.4.4"},"dependencies":{"rimraf":"^3.0.2"},"gitHead":"6d784997a850fa27592b9a5bd7836e128547f218","_id":"@quicker-js/class-decorator@0.0.1-dev.2021110301","_nodeVersion":"14.16.1","_npmVersion":"8.1.1","dist":{"integrity":"sha512-4EHqsG5WiFSbIMntAxOIqQva8x4kODdc6+tLcVZmTnxJo/QZ4tWlLRCYJJzJnlNhgVXK0qAWflzKCeFXp5poxw==","shasum":"cf9940b2a8fa97146a212cfaacb1f40d2adb8785","tarball":"https://registry.npmjs.org/@quicker-js/class-decorator/-/class-decorator-0.0.1-dev.2021110301.tgz","fileCount":174,"unpackedSize":331221,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDS5lAUSHGLsjGtQR0086eEcJCuUZSSbfgus1Muv/hYdAIhAJL2MzwsASnixCUVlD8i4g0ALSAt2mY8ZomsTQo4gMOL"}]},"_npmUser":{"name":"leo_ran","email":"admin@ranyunlong.com"},"directories":{},"maintainers":[{"name":"leo_ran","email":"admin@ranyunlong.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/class-decorator_0.0.1-dev.2021110301_1635938792582_0.30734576733741537"},"_hasShrinkwrap":false},"0.0.1-dev.2021111301":{"name":"@quicker-js/class-decorator","version":"0.0.1-dev.2021111301","description":"class-decorator is typescript decorator framework.","main":"dist/cjs","types":"dist/types","scripts":{"build:clean":"rimraf dist && rimraf docs","build:es2015":"tsc --project tsconfig.prod.esm2015.json","build:esm5":"tsc --project tsconfig.prod.esm5.json","build:cjs":"tsc --project tsconfig.prod.cjs.json","build:amd":"tsc --project tsconfig.prod.amd.json","build:umd":"tsc --project tsconfig.prod.umd.json","build:types":"tsc --project tsconfig.prod.types.json","doc":"typedoc --options ./typedoc.json","build:rollup":"rollup --config rollup.config.js","release":"yarn build:clean && yarn build:es2015 && yarn build:esm5 && yarn build:cjs && yarn build:amd && yarn build:umd && yarn build:types && yarn build:rollup && yarn doc","test":"mocha -w"},"repository":{"type":"git","url":"git+https://github.com/quicker-js/class-decorator.git"},"keywords":["class-decorator"],"author":{"name":"YunlongRan","email":"549510622@qq.com"},"license":"MIT","bugs":{"url":"https://github.com/quicker-js/class-transformer/issues"},"homepage":"https://github.com/quicker-js/class-transformer#readme","devDependencies":{"@rollup/plugin-commonjs":"^21.0.1","@rollup/plugin-node-resolve":"^13.0.6","@types/chai":"^4.2.22","@types/mocha":"^8.2.3","@types/node":"^16.11.3","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","chai":"^4.3.4","eslint":"7","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","mocha":"^9.1.3","prettier":"^2.4.1","reflect-metadata":"^0.1.13","rollup":"^2.58.3","rollup-plugin-terser":"^7.0.2","ts-node":"^10.3.1","typedoc":"^0.22.7","typescript":"^4.4.4"},"dependencies":{"rimraf":"^3.0.2"},"gitHead":"6d784997a850fa27592b9a5bd7836e128547f218","_id":"@quicker-js/class-decorator@0.0.1-dev.2021111301","_nodeVersion":"16.13.0","_npmVersion":"8.1.0","dist":{"integrity":"sha512-Z2srl2sRRbhRE3CfP9EJViZ+hOJC0osY6UYmLoPNfjO0e6XeUCZDgRPzfOTQOe18NILBxGP7Cn2m9oHzU8ciHg==","shasum":"8a2a856e1a602692e2886966ad6fecee63103f9e","tarball":"https://registry.npmjs.org/@quicker-js/class-decorator/-/class-decorator-0.0.1-dev.2021111301.tgz","fileCount":151,"unpackedSize":307438,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAMPKK9sbebmDGHeWp5bhz0evV44wkd1YDW4/lu7XEeBAiEAjgosqDv5ZwjXvHN/XnlwKBfL++YUsMyCgxDQ8i+g4Nk="}]},"_npmUser":{"name":"leo_ran","email":"admin@ranyunlong.com"},"directories":{},"maintainers":[{"name":"leo_ran","email":"admin@ranyunlong.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/class-decorator_0.0.1-dev.2021111301_1636789462159_0.6490243540763811"},"_hasShrinkwrap":false},"0.0.1-dev.2021111302":{"name":"@quicker-js/class-decorator","version":"0.0.1-dev.2021111302","description":"class-decorator is typescript decorator framework.","main":"dist/cjs","types":"dist/types","scripts":{"build:clean":"rimraf dist && rimraf docs","build:es2015":"tsc --project tsconfig.prod.esm2015.json","build:esm5":"tsc --project tsconfig.prod.esm5.json","build:cjs":"tsc --project tsconfig.prod.cjs.json","build:amd":"tsc --project tsconfig.prod.amd.json","build:umd":"tsc --project tsconfig.prod.umd.json","build:types":"tsc --project tsconfig.prod.types.json","doc":"typedoc --options ./typedoc.json","build:rollup":"rollup --config rollup.config.js","release":"yarn build:clean && yarn build:es2015 && yarn build:esm5 && yarn build:cjs && yarn build:amd && yarn build:umd && yarn build:types && yarn build:rollup && yarn doc","test":"mocha -w"},"repository":{"type":"git","url":"git+https://github.com/quicker-js/class-decorator.git"},"keywords":["class-decorator"],"author":{"name":"YunlongRan","email":"549510622@qq.com"},"license":"MIT","bugs":{"url":"https://github.com/quicker-js/class-transformer/issues"},"homepage":"https://github.com/quicker-js/class-transformer#readme","devDependencies":{"@rollup/plugin-commonjs":"^21.0.1","@rollup/plugin-node-resolve":"^13.0.6","@types/chai":"^4.2.22","@types/mocha":"^8.2.3","@types/node":"^16.11.3","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","chai":"^4.3.4","eslint":"7","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","mocha":"^9.1.3","prettier":"^2.4.1","reflect-metadata":"^0.1.13","rollup":"^2.58.3","rollup-plugin-terser":"^7.0.2","ts-node":"^10.3.1","typedoc":"^0.22.7","typescript":"^4.4.4"},"dependencies":{"rimraf":"^3.0.2"},"gitHead":"eb1521d995658ea4912c793961b302f9e36ab3b8","_id":"@quicker-js/class-decorator@0.0.1-dev.2021111302","_nodeVersion":"16.13.0","_npmVersion":"8.1.0","dist":{"integrity":"sha512-m/kl1JziQ0sJ6pH8hWBFelE/1LRhigl98WFtnJ7oJlF9/ZvRkZUhWOI04HcvrHRYNJ8bpTAIhIaC+CYTj8XEAQ==","shasum":"db6e596bc87d49a4c789a2dace670d5f68e4f283","tarball":"https://registry.npmjs.org/@quicker-js/class-decorator/-/class-decorator-0.0.1-dev.2021111302.tgz","fileCount":151,"unpackedSize":307408,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlOLJCRA9TVsSAnZWagAA3yIQAIVp43oBZVXZGKcEWbM7\n4GjjdBsJ9V5ckPRYLmmJVPzSfK/SWXsFxWvECTrPseKv21yXd0Yt+O/mDbU7\nnE1GwKiWt5Z7YjK+6rEUEhW9tg4+qAjUuknjNaT/LO+aM2WuvZS7kmPQZEW/\nYvSS+tQOsT7H8ufntvDCAUXxHvqUcIWG26wSskXCvt6aeKCfmBh/7lxKSLmC\nJIoFzGHSamkdleyZx4uscVSItmKGaB7xmkdNY6f8TffMtOV7xP7P0vhat2lD\n/oCvFqKa6WyAwmDsJE5bxaa5QSeN5fzwJJGK2IKbpJetGCqnAkJAaxjgwPXT\n8y0RhebJJN7P+QsZOr816FlMWaPTKqCsxViD/nlQfxg7Fw/UJ1ZU2vVUtbfU\niV1Qc2zLAz3TK/LDfnDhmtH7jBPlWK7fWuafpVRw3ifC8OChOwVC11zuVV3T\nSbzShyNh8Vl2VCflVjd+9YCBLDRA4NB05i/IkTnlkUXtxUkNUpio80JLgwat\nOATOyi67PH+CdAMPSufCSMncpqrF53hoA/Dzk8Tleg8Wt65vDhXtm0f42Yca\nGz086cMlxlvx50zV8KsTHYs6OrDv/Q6MffGtqc1n3Aweg2St1y/VsHTo9KKr\n+AGiXm9AxIa2VowhvTwy5z6DqO9jHyCq4cNqNePeZNFcltZP2jjYcWfMepPX\n+jX9\r\n=QxZS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICFxzAg/vczvT0Vt4izyxIUwUHAhe9H+uLRiZgfb3s83AiEA+4RhrecPgW85oQm737ka5wYaNIJsXXYLtZhjro1qm64="}]},"_npmUser":{"name":"leo_ran","email":"admin@ranyunlong.com"},"directories":{},"maintainers":[{"name":"leo_ran","email":"admin@ranyunlong.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/class-decorator_0.0.1-dev.2021111302_1637147337827_0.2248329813358716"},"_hasShrinkwrap":false},"0.0.1-dev.2021111701":{"name":"@quicker-js/class-decorator","version":"0.0.1-dev.2021111701","description":"class-decorator is typescript decorator framework.","main":"dist/umd","types":"dist/types","scripts":{"build:clean":"rimraf dist && rimraf docs","build:cjs":"tsc --project tsconfig.prod.cjs.json","build:types":"tsc --project tsconfig.prod.types.json","doc":"typedoc --options ./typedoc.json","build:umd":"webpack --config ./webpack.config.js","release":"yarn build:clean  && yarn build:cjs && yarn build:umd && yarn build:types && yarn doc","test":"mocha -w"},"repository":{"type":"git","url":"git+https://github.com/quicker-js/class-decorator.git"},"keywords":["class-decorator"],"author":{"name":"YunlongRan","email":"549510622@qq.com"},"license":"MIT","bugs":{"url":"https://github.com/quicker-js/class-transformer/issues"},"homepage":"https://github.com/quicker-js/class-transformer#readme","devDependencies":{"@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@types/chai":"^4.2.22","@types/mocha":"^8.2.3","@types/node":"^16.11.3","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","chai":"^4.3.4","eslint":"7","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","mocha":"^9.1.3","prettier":"^2.4.1","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","ts-node":"^10.3.1","typedoc":"^0.22.7","typescript":"^4.4.4","webpack":"^5.64.1","webpack-cli":"^4.9.1","babel-loader":"^8.2.3"},"dependencies":{},"gitHead":"41eed9d65d18682483f0617a13a7f7156cd004d5","_id":"@quicker-js/class-decorator@0.0.1-dev.2021111701","_nodeVersion":"16.13.0","_npmVersion":"8.1.0","dist":{"integrity":"sha512-SDmvyQGj5RKzIX8XNqgxUwE+ifV+z4RcpxKeHzQKSIPS95QBMoZoA4qqaFFPxbJMMWgzoqlzoKKFGLEmpgHDWg==","shasum":"3f3c99006974cc7281be1d5a3615d0c1908777df","tarball":"https://registry.npmjs.org/@quicker-js/class-decorator/-/class-decorator-0.0.1-dev.2021111701.tgz","fileCount":53,"unpackedSize":79977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlPWiCRA9TVsSAnZWagAApTEP/j7khF2UAVpYkf1ouogK\n68mlA6CxgIRF4ETeXAPzZKqPDCH+e+OJyZLAC/77HO+8/nYkMADbriXNdqNX\n+HCnorsw7rIExMeAEyUUYtg5lmPAh8yvDNNanpkbcgOAW7hTDUQqRYLdQDfh\nrB0scOGavLfJ5iHtzyLG+LLaeOxYNg/oMzRucLDCFztrogFZ7QFsY16vaA4l\nl3C5orDy0IOs6UYgeqKkLirMnsHWSQBsaMlK/oCsGoBxUIgYorHIg3SARj6C\nC9h8aP0oNeMLmPfo6X5tamSzkYc6emLZRj1/6nGsodF4cEodwjNbyadxSU9O\n7qhGMsZdMGqeWBkdmhrezqy/gbMDuQ7w+/SyEomO0/hMJcFcXaHxafb4AQNj\npfnjVRxIJOBGPaNaOMnXcDGsUtaaGOweJzU1NEeaVZVUpY636QIYZeDVtYUS\nRh+63p54MDpt3o1H39kC86fkNlI2OwOTcE2gIzhrbprhnIt2PfZnP6Pn9dap\nOZCJQn9ulDoLfOcF9k31SIeFtaJ2Xo+eXvgOWWYBJqHnfQiHfx2POlgPomti\nH25hzHchp4h0rola4q1YjnB3OxfL+82X9uYz72ZC7VKDZJ0794vCv8QuRxEF\nfVYn3ZYm9dvo2jvvpcbSkeI7aZzESHEucyqTl3xqCAh/7w3XlYaHtcdti7vc\nMTz6\r\n=UElU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCLQMqIWdh9u+zuMWvNyNa5ncg9RW+mrqFtLoNn8mDaZAIhAJw6bocWMVcCLbgrx3Crd9ItPYdzxISMYVZC5wGcxOQc"}]},"_npmUser":{"name":"leo_ran","email":"admin@ranyunlong.com"},"directories":{},"maintainers":[{"name":"leo_ran","email":"admin@ranyunlong.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/class-decorator_0.0.1-dev.2021111701_1637152162107_0.11919577497912726"},"_hasShrinkwrap":false},"0.0.1-dev.2021111702":{"name":"@quicker-js/class-decorator","version":"0.0.1-dev.2021111702","description":"class-decorator is typescript decorator framework.","main":"dist/cjs","types":"dist/types","scripts":{"build:clean":"rimraf dist && rimraf docs","build:cjs":"tsc --project tsconfig.prod.cjs.json","build:types":"tsc --project tsconfig.prod.types.json","doc":"typedoc --options ./typedoc.json","build:umd":"webpack --config ./webpack.config.js","release":"yarn build:clean  && yarn build:cjs && yarn build:umd && yarn build:types && yarn doc","test":"mocha -w"},"repository":{"type":"git","url":"git+https://github.com/quicker-js/class-decorator.git"},"keywords":["class-decorator"],"author":{"name":"YunlongRan","email":"549510622@qq.com"},"license":"MIT","bugs":{"url":"https://github.com/quicker-js/class-transformer/issues"},"homepage":"https://github.com/quicker-js/class-transformer#readme","devDependencies":{"@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@types/chai":"^4.2.22","@types/mocha":"^8.2.3","@types/node":"^16.11.3","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","chai":"^4.3.4","eslint":"7","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","mocha":"^9.1.3","prettier":"^2.4.1","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","ts-node":"^10.3.1","typedoc":"^0.22.7","typescript":"^4.4.4","webpack":"^5.64.1","webpack-cli":"^4.9.1","babel-loader":"^8.2.3"},"dependencies":{},"gitHead":"41eed9d65d18682483f0617a13a7f7156cd004d5","_id":"@quicker-js/class-decorator@0.0.1-dev.2021111702","_nodeVersion":"16.13.0","_npmVersion":"8.1.0","dist":{"integrity":"sha512-W29GTuoGsSLZQBLrtzyuwbLz94GrdeUebaPn/JMzHgsf1AUxVuwJQOcqX1n8iqwDHLOXLjCIGAf/l5V08zJupg==","shasum":"d6ca65d6895e8fb353ecd7a41c4d92ff2e5cd5e5","tarball":"https://registry.npmjs.org/@quicker-js/class-decorator/-/class-decorator-0.0.1-dev.2021111702.tgz","fileCount":53,"unpackedSize":79977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlPbGCRA9TVsSAnZWagAAYPEP/j5PtV1e40+4xPWrGYpn\ny2KMsjNVv0zFNKx2sSB1Ll+eHLncZVf7kTqG9iLe6BtR/j7LEIcq1bBTC1sE\nXN3EZ2zY7Qobu3Ze/hbak52gFkMIEZ5Jz85midMuurGO4XT8/AlxQKABeHe2\n6zo4TKm9I8o8y86Tc5K0xzETsRMH1vOphTbdER3rwkLsBHHgV/mXk14Pv568\nitCSi/SaDUjiMDlKmHw2226hc5fgyjf+XNb7UtyAsoOpLjPl8L5J+HgsCjYK\nL89KPvKS7Aj4Uj8ACk7cHHLtpF+4PoiHPZrAdJ2u+fAO3AJ13neSI4DhJEmU\n3wii25jT9mLif1IhQH5vj5WisjILgE+eZLcMMB+Fvop/s+mmL0OhtGT2RKu3\nXSolb8bNBkwORvHx6jleOZ9kg/jeIf4tjMyaO6/BpXVk/PpXW1cOvqk1m2pa\ngEaL30fIshw8r3sRbYtgZ/Cg8oq510k0XFzFIoaFErdvw0P7zcvObQc22q/z\njk/Tv58WS7F1wzo7ctqCVtfswjnRGE/XPAfqKRnR67jkXEckHDEgvGkhwy8B\n5rtVl7ZvgOOv3bqw3RvwIOYCVZKprAeEeMh+V0FpnzXBrAzzRjI9KCn28aS/\nDOFcWoAysCQFaKYfTL6MLsBdQLOzbnC+AT2bS0KD6Xh2SDFgrEN2Aax5UlQ1\naSfC\r\n=tsVO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCAsf1KO7s2651dkeB09bMjZUMw7un8d8gPF+m3vrVulgIhAP+0Ly6zHAGswLm94Hi47FXtBAv8QTieUd8n8Nwm5lya"}]},"_npmUser":{"name":"leo_ran","email":"admin@ranyunlong.com"},"directories":{},"maintainers":[{"name":"leo_ran","email":"admin@ranyunlong.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/class-decorator_0.0.1-dev.2021111702_1637152454282_0.31921206395294166"},"_hasShrinkwrap":false},"1.1.0":{"name":"@quicker-js/class-decorator","version":"1.1.0","description":"class-decorator is typescript decorator framework.","main":"dist/cjs","types":"dist/types","scripts":{"build:clean":"rimraf dist && rimraf docs","build:cjs":"tsc --project tsconfig.prod.cjs.json","build:types":"tsc --project tsconfig.prod.types.json","doc":"typedoc --options ./typedoc.json","build:umd":"webpack --config ./webpack.config.js","release":"yarn build:clean  && yarn build:cjs && yarn build:umd && yarn build:types && yarn doc","test":"mocha -w"},"repository":{"type":"git","url":"git+https://github.com/quicker-js/class-decorator.git"},"keywords":["class-decorator"],"author":{"name":"YunlongRan","email":"549510622@qq.com"},"license":"MIT","bugs":{"url":"https://github.com/quicker-js/class-transformer/issues"},"homepage":"https://github.com/quicker-js/class-transformer#readme","devDependencies":{"@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@types/chai":"^4.2.22","@types/mocha":"^8.2.3","@types/node":"^16.11.3","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","chai":"^4.3.4","eslint":"7","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","mocha":"^9.1.3","prettier":"^2.4.1","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","ts-node":"^10.3.1","typedoc":"^0.22.7","typescript":"^4.4.4","webpack":"^5.64.1","webpack-cli":"^4.9.1","babel-loader":"^8.2.3"},"dependencies":{},"gitHead":"cd6f7552e6d472b03a7e05ad7a1d30dac030e374","_id":"@quicker-js/class-decorator@1.1.0","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-g7+lzRtg6R1l2bvOyzcBIimcgOd/k51hz06S2T/2o3lvUKIgPixKjFV6dwbBNCdCcR7QDuTgLCEkG54k6FnNMA==","shasum":"55ca97eb5860dc9533db676d748751efbee309ef","tarball":"https://registry.npmjs.org/@quicker-js/class-decorator/-/class-decorator-1.1.0.tgz","fileCount":53,"unpackedSize":82343,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh4FB9CRA9TVsSAnZWagAARxEP+waAoFbVtNa37ciHm3lq\n/l32+EgqUAewKS28OWzhLyZt5+R4GFrfyouO2A3j7rjoJlxa8WmQsJId2Wr2\n6nWGVUGBjJojHsQVwpOTOpyfeY6tiSR0WLbucgB7JZ+0razKQug/hdbLKaMV\nzy2rH7h6UcSUhuGhfeb9RYTYhzocmABKZ/J9CVqKOfKPy6FRWdx1d5Kh8Kb+\nTmA8hbdRTfhnRnDqSGpWxqutVRvkdurkqCOCWC7jNbEo6uzYn7gjyQYj6mRd\nhXeAEPYwpY3stUew98Ob4yE5TiCZ2ngaEYe5wiiNgrS4dV93JyujBaM6wztr\nC7VdNiIDCS2yRKULTNjMyE8yOVUW/YN+0vAhbpmMLtO2SINsBkygvoCW4R6d\n8VgcbS+ScqHfd+527WDMKP+f6EneWPqbqGD5VR3XpMyZFkXbep87Kk8zVwzy\nqwBMWKtADVp95SRjCwY7dGNRJqAkgsbGzZ7K0gJqfid8MFrssSWNaJRUnaee\nI0+4qR0pr7EmjwYMfpd1kkt5hZGdltUwfH9V3oqBfe40uv/v4q0Lo4voV9Uo\nyIu/CdV623CrkQPIySS5nHd/o2C7EMfL10kRM1Mhz/BOBj+EdIlHgv6qLQi0\nvLPapsFaiA5xz40gHkI1DyERr57NhcPlP7VgVG09D86752dQFeF1ni7SjN+k\nqT6q\r\n=QW3H\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBdQUEu/Hmy06g1lRGBFRjQ02znh+NjKiJx+FGeIeCedAiBnw8dKqZBm3FIBtvCdcFgeFIMreJLt9JEs2RJKizIG0Q=="}]},"_npmUser":{"name":"leo_ran","email":"admin@ranyunlong.com"},"directories":{},"maintainers":[{"name":"leo_ran","email":"admin@ranyunlong.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/class-decorator_1.1.0_1642090621629_0.522609741640292"},"_hasShrinkwrap":false}},"maintainers":[{"name":"leo_ran","email":"admin@ranyunlong.com"}],"description":"class-decorator is typescript decorator framework.","homepage":"https://github.com/quicker-js/class-transformer#readme","keywords":["class-decorator"],"repository":{"type":"git","url":"git+https://github.com/quicker-js/class-decorator.git"},"author":{"name":"YunlongRan","email":"549510622@qq.com"},"bugs":{"url":"https://github.com/quicker-js/class-transformer/issues"},"license":"MIT","readme":"# class-decorator\nclass-decorator is typescript decorator framework.\n\n[![npm (scoped)](https://img.shields.io/npm/v/@quicker-js/class-decorator)](https://www.npmjs.com/package/@quicker-js/class-decorator)\n\n## Installing\n\n```shell\nnpm i reflect-metadata @quicker-js/class-decorator\n#or\nyarn add reflect-metadata @quicker-js/class-decorator\n```\n\n## Example Usage\n\nThe following examples contain basic usage methods. For more high-level usage methods, please refer to the `test` directory.    \n\n- [Create class decorator](#create-class-decorator)\n- [Create property decorator](#create-property-decorator)\n- [Create method decorator](#create-property-decorator)\n- [Create parameter decorator](#create-parameter-decorator)\n\n### Create class decorator\n\nCreate custom metadata file or use `ClassMetadata`, custom metadata must use the `ClassMetadata` extension.\n`entity-metadata.ts`\n```ts\nexport class EntityMetadata<\n  T = EntityMetadataOption\n> extends ClassMetadata<T> {}\n\nexport interface EntityMetadataOption {\n  readonly title?: string;\n  readonly description?: string;\n}\n```\nCreate decorator file.\n```ts\n// import class-decorator\nimport { ClassMirror } from '@quicker-js/class-decorator';\n// import entity-metadata.ts\nimport { EntityMetadata } from './entity-metadata';\n\n// The decorator can be used in two ways.\nexport function Entity<T extends Function>(target: T): T | void;\nexport function Entity(title: string, description: string): ClassDecorator;\nexport function Entity<T extends Function>(\n  ...args: unknown[]\n): T | void | ClassDecorator {\n  if (args.length === 2) {\n    const [title, description] = args as [string, string];\n    return ClassMirror.createDecorator(\n      new EntityMetadata({\n        title,\n        description,\n      })\n    );\n  } else {\n    return ClassMirror.createDecorator(new EntityMetadata(null))(args[0] as T);\n  }\n}\n```\nCreate any class file, use `@Entity` or `@Entity(...)` decorator.\n```ts\n@Entity\nclass Foo {}\n\n// or\n\n@Entity({title: 'Bar', description: 'Class Bar'})\nclass Bar {}\n```\nUse `ClassMirror.reflect` get metadata.\n\n```ts\nimport {ClassMirror} from \"./index\";\n\nvar reflect1 = ClassMirror.reflect(Foo);\nvar reflect2 = ClassMirror.reflect(Bar);\n\nconsole.log(reflect1.metadata) // Set<EntityMetadata>\nconsole.log(reflect2.metadata) // Set<EntityMetadata>\n```\n\n### Create property decorator\n\nCreate custom metadata file or use `PropertyMetadata`, custom metadata must use the `PropertyMetadata` extension.\n`exclude-metadata.ts`\n```ts\nimport { PropertyMetadata } from '@quicker-js/class-decorator';\n\n/**\n * @class ExcludeMetadata\n */\nexport class ExcludeMetadata<\n  T = ExcludeMetadataOption\n> extends PropertyMetadata<T> {}\n\nexport interface ExcludeMetadataOption {\n  readonly toPlainOnly?: boolean;\n  readonly toClassOnly?: boolean;\n}\n```\nCreate custom property decorator\n\nuse `PropertyMirror.createDecorator` create property decorator.\n```ts\nimport { ExcludeMetadata, ExcludeMetadataOption } from './exclude-metadata';\nimport { PropertyMirror } from '@quicker-js/class-decorator';\n\n// The decorator can be used in two ways.\nexport function Exclude(target: Object, propertyKey: string | symbol): void;\nexport function Exclude(option: ExcludeMetadataOption): PropertyDecorator;\nexport function Exclude(...args: unknown[]): void | PropertyDecorator {\n  if (args.length === 1) {\n    return PropertyMirror.createDecorator(\n      new ExcludeMetadata(args[0] as ExcludeMetadataOption)\n    );\n  } else {\n    const [target, propertyKey] = args as [Object, string | symbol];\n    return PropertyMirror.createDecorator(new ExcludeMetadata(null))(\n      target,\n      propertyKey\n    );\n  }\n}\n```\n\nCreate any class file, use `@Exclude` or `@Exclude(...)` decorator.\n```ts\nimport {Exclude} from \"your decoraror path\"\nclass Foo {\n    @Exclude\n    public id: string;\n    \n    @Exclude({toPlainOnly: true})\n    public name: string;\n\n    @Exclude\n    public static age: number;\n}\n```\n\nUse `PropertMirror.reflect` or `ClassMirror.reflect` get metadata.\n\n```ts\nimport {ClassMirror, PropertyMirror} from \"./index\";\n\n// use ClassMirror get metadata.\nconst reflectClass = ClassMirror.reflect(Foo);\nreflectClass.getMirror('id', false) // PropertyMirror<PropertyMetadata>\nreflectClass.getMirror('age', false) //PropertyMirror<PropertyMetadata>\n\n// use PropertyMirror get metadata.\nconst refect1 = PropertyMirror.reflect(Foo, 'id', false); // PropertyMirror<PropertyMetadata>\nconst refect2 = PropertyMirror.reflect(Foo, 'age', true); // PropertyMirror<PropertyMetadata>\n\nconsole.log(refect1.metadata) // Set<ExcludeMetadata>\nconsole.log(refect2.metadata) // Set<ExcludeMetadata>\n\n// id: string\nconsole.log(refect1.getDesignType()) // String\n// age: number\nconsole.log(refect2.getDesignType()) // Number\n```\n\n### Create method decorator\n\nCreate custom metadata file or use `MethodMetadata`, custom metadata must use the `MethodMetadata` extension.\n`request-metadata.ts`\n```ts\nimport { MethodMetadata } from '@quicker-js/class-decorator';\n\n/**\n * @class RequestMetadata\n */\nexport class RequestMetadata<T = MetadataOption> extends MethodMetadata<T> {}\n\nexport interface RequestMetadataOption {\n    readonly path?: string;\n    readonly method?: string;\n}\n\n```\nCreate custom method decorator\n\nuse `MethodMirror.createDecorator` create method decorator.\n```ts\nimport { RequestMetadata, RequestMetadataOption } from './request-metadata';\nimport { MethodMirror } from '@quicker-js/class-decorator';\n\n// Unlike the previous case, the decorator has only one use，but it can also be used in two ways, You must add your own implementation logic.\nexport function Request(metadata: RequestMetadataOption): MethodDecorator {\n    return MethodMirror.createDecorator(new RequestMetadata(metadata));\n}\n```\n\nCreate any class file, use`@Request(...)` decorator.\n```ts\nimport {Request} from \"your decoraror path\"\nclass Foo {\n    @Request({path: '/', method: 'post'})\n    public zoo(): string {\n        return 'zoo';\n    }\n\n    @Request({path: '/', method: 'post'})\n    public static bar(): number {\n        return 1;\n    }\n}\n```\n\nUse `Method.reflect` or `ClassMirror.reflect` get metadata.\n\n```ts\nimport {ClassMirror, PropertyMirror} from \"./index\";\n\n// use ClassMirror get metadata.\nconst reflectClass = ClassMirror.reflect(Foo);\nreflectClass.getMirror('zoo', false) // MethodMirror<MethodMetadata>\nreflectClass.getMirror('bar', false) // MethodMirror<MethodMetadata>\n\n// use MethodMirror get metadata.\nconst refectMethod1 = MethodMirror.reflect(Foo, 'zoo', false); // MethodMirror<MethodMetadata>\nconst refectMethod2 = MethodMirror.reflect(Foo, 'bar', true); // MethodMirror<MethodMetadata>\n\n// Use function reflect metadata\nMethodMirror.reflect(Foo, Foo.bar, true); // MethodMirror<MethodMetadata>\n\n// Instance use Function reflect metadata\nconst foo = new Foo();\nMethodMirror.reflect(Foo, Foo.zoo, false); // MethodMirror<MethodMetadata>\n\n// Get method parameter metadata mirrors.\nconsole.log(refectMethod1.parameters); // Map<number, ParameterMirror>\nconsole.log(refectMethod2.parameters); // Map<number, ParameterMirror>\n\n//Get reflect medatadata.\nconsole.log(refectMethod1.metadata); // Set<MethodMetadata>\nconsole.log(refectMethod2.metadata); // Set<MethodMetadata>\n\n// Get parameters type\nconsole.log(refectMethod1.getDesignParamTypes()); // []\nconsole.log(refectMethod2.getDesignParamTypes()); // []\n\n// Get Return type\nconsole.log(refectMethod1.getReturnType()); // String\nconsole.log(refectMethod2.getReturnType()); // Number\n```\n\n# Create parameter decorator\n\nCreate custom metadata file or use `ParameterMetadata`, custom metadata must use the `ParameterMetadata` extension.\n`param-metadata.ts`\n```ts\nimport { ParameterMetadata } from '@quicker-js/class-decorator';\n\n/**\n * @class ParamMetadata\n */\nexport class ParamMetadata<T = MetadataOption> extends ParameterMetadata<T> {}\n\nexport interface ParamMetadataOption {\n    readonly path: string;\n}\n\n```\nCreate custom parameter decorator\n\nuse `ParameterMirror.createDecorator` create parameter decorator.\n```ts\nimport { ParamMetadata, ParamMetadataOption } from './param-metadata';\nimport { ParameterMirror } from '@quicker-js/class-decorator';\n\n// The decorator can be used in two ways.\nexport function Param(target: Object, propertyKey: string | symbol, parameterIndex: number): void;\nexport function Param(option: MetadataOption): ParameterDecorator;\nexport function Param(...args: unknown[]): ParameterDecorator | void {\n    if (args.length === 1) {\n        const [option] = args as [MetadataOption];\n        return ParameterMirror.createDecorator(new Metadata(option));\n    } else {\n        const [target, propertyKey, parameterIndex] = args as [\n            Object,\n                string | symbol,\n            number\n        ];\n        return ParameterMirror.createDecorator(new Metadata(null))(\n            target,\n            propertyKey,\n            parameterIndex\n        );\n    }\n}\n```\n\nCreate any class file, use `@Param` or `@Param(...)` decorator.\n```ts\nimport {Exclude} from \"your decoraror path\";\nimport {Request} from \"your decoraror path\";\n\nclass Foo {\n    public constructor(\n        @Param({ path: 'constructor', method: 'post' }) public path: string,\n        @Param public index: number\n    ) {}\n    \n    @Request({path: '/', method: 'post'})\n    public zoo(@Param test: Number, @Param({path: '/'}) path: string): string {\n        return 'zoo';\n    }\n    \n    public static bar(@Param test: Object, @Param({path: '/'}) path: string): number {\n        return 1;\n    }\n}\n```\n\nUse `ParameterMirror.reflect` or `ParameterMirror.reflect` get metadata.\n\n```ts\nimport {ClassMirror, MethodMirror, ParameterMirror} from \"./index\";\n\n// use ClassMirror get metadata.\nconst reflectClass = ClassMirror.reflect(Foo);\nreflectClass.getMirror('zoo', false) // MethodMirror<MethodMetadata>\nreflectClass.getMirror('bar', false) // MethodMirror<MethodMetadata>\n\n// use MethodMirror get metadata.\nconst refectMethod1 = MethodMirror.reflect(Foo, 'zoo', false); // MethodMirror<MethodMetadata>\nconst refectMethod2 = MethodMirror.reflect(Foo, 'bar', true); // MethodMirror<MethodMetadata>\n\n// Get parameters type\nconsole.log(refectMethod1.getDesignParamTypes()); // [Number, String]\nconsole.log(refectMethod2.getDesignParamTypes()); // [Object, String]\n\n// Get method parameter metadata mirrors, you can find metadata in parameters.\nconsole.log(refectMethod1.parameters); // Map<number, ParameterMirror>\nconsole.log(refectMethod2.parameters); // Map<number, ParameterMirror>\n\n// Find 1st parameter metadata\nconst parameterMirror1 = refectMethod1.parameters.get(0); // ParameterMirror<ParameterMetadata>\n// Find 2nd parameter metadata\nconst parameterMirror2 = refectMethod1.parameters.get(1); // ParameterMirror<ParameterMetadata>\n// or\nParameterMirror.reflect(Foo, 'zoo', 0, false); // ParameterMirror<ParameterMetadata>\nParameterMirror.reflect(Foo, 'bar', 0, true); // ParameterMirror<ParameterMetadata>\n\nparameterMirror1.getDesignParamType(); // Number\nparameterMirror2.getDesignParamType(); // String\n\nparameterMirror1.metadata // Set<ParameterMetadata>\nparameterMirror2.metadata // Set<ParameterMetadata>\n\n// If it is a parameter decorator of a constructor, you need to obtain metadata through the following methods\nconsole.log(reflectClass.parameters); // Map<number, ParameterMirror>;\nconst parameterMirror3  = reflectClass.parameters.get(0) // ParameterMirror\nconst parameterMirror4  = reflectClass.parameters.get(1) // ParameterMirror\n\nparameterMirror3.metadata // Set<ParameterMetadata>\nparameterMirror4.metadata // Set<ParameterMetadata>\n\nparameterMirror3.getDesignParamType(); // String\nparameterMirror4.getDesignParamType(); // Number\n```\n\n## Documentation\n- [ApiDocs](https://quicker-js.github.io/class-decorator/)\n- [samples](https://github.com/quicker-js/class-decorator/tree/master/sample)\n\n\n## Issues\nCreate [issues](https://github.com/quicker-js/class-decorator/issues) in this repository for anything related to the Class Decorator. When creating issues please search for existing issues to avoid duplicates.\n\n\n## License\nLicensed under the [MIT](https://github.com/quicker-js/class-decorator/blob/master/LICENSE) License.\n","readmeFilename":"README.md"}