diff --git a/package.json b/package.json index bbb4c2d..8a8f061 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ }, "dependencies": { "@atao60/fse-cli": "^0.1.6", + "@extollo/ui": "^0.1.0", "@types/bcrypt": "^5.0.0", "@types/busboy": "^0.2.3", "@types/cli-table": "^0.3.0", @@ -81,6 +82,9 @@ "discover": true, "units": { "discover": false + }, + "recursiveDependencies": { + "discover": true } } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 75db94a..252f461 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2,6 +2,7 @@ lockfileVersion: 5.3 specifiers: '@atao60/fse-cli': ^0.1.6 + '@extollo/ui': ^0.1.0 '@types/bcrypt': ^5.0.0 '@types/busboy': ^0.2.3 '@types/chai': ^4.2.22 @@ -50,6 +51,7 @@ specifiers: dependencies: '@atao60/fse-cli': 0.1.6 + '@extollo/ui': 0.1.0_@types+node@14.17.4 '@types/bcrypt': 5.0.0 '@types/busboy': 0.2.3 '@types/cli-table': 0.3.0 @@ -161,6 +163,18 @@ packages: to-fast-properties: 2.0.0 dev: false + /@cspotcode/source-map-consumer/0.8.0: + resolution: {integrity: sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==} + engines: {node: '>= 12'} + dev: false + + /@cspotcode/source-map-support/0.7.0: + resolution: {integrity: sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==} + engines: {node: '>=12'} + dependencies: + '@cspotcode/source-map-consumer': 0.8.0 + dev: false + /@eslint/eslintrc/0.4.1: resolution: {integrity: sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ==} engines: {node: ^10.12.0 || >=12.0.0} @@ -178,6 +192,25 @@ packages: - supports-color dev: true + /@extollo/ui/0.1.0_@types+node@14.17.4: + resolution: {integrity: sha512-EuFpNfIyL9ZTbrlCxeOwIJaZnZo3EOLEKNUDHgGgTfEUJPDKKl8VTrGsuCEGWtPnwZwz/kwD0q8Qv+jTdgducQ==} + dependencies: + '@popperjs/core': 2.10.2 + '@types/rimraf': 3.0.2 + '@types/uuid': 8.3.3 + bootstrap: 5.1.3_@popperjs+core@2.10.2 + dotenv: 10.0.0 + mkdirp: 1.0.4 + rimraf: 3.0.2 + ts-node: 10.4.0_9033393ac6e1960c4e4feb229fa8feef + typescript: 4.5.2 + uuid: 8.3.2 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + - '@types/node' + dev: false + /@mapbox/node-pre-gyp/1.0.5: resolution: {integrity: sha512-4srsKPXWlIxp5Vbqz5uLfBN+du2fJChBoYn/f2h991WLdk7jUvcSk/McVLSv/X+xQIPI8eGD5GjrnygdyHnhPA==} hasBin: true @@ -216,6 +249,10 @@ packages: fastq: 1.11.0 dev: true + /@popperjs/core/2.10.2: + resolution: {integrity: sha512-IXf3XA7+XyN7CP9gGh/XB0UxVMlvARGEgGXLubFICsUMGz6Q+DU+i4gGlpOxTjKvXjkJDJC8YdqdKkDj9qZHEQ==} + dev: false + /@sinonjs/commons/1.8.3: resolution: {integrity: sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==} dependencies: @@ -246,6 +283,22 @@ packages: resolution: {integrity: sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==} dev: true + /@tsconfig/node10/1.0.8: + resolution: {integrity: sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==} + dev: false + + /@tsconfig/node12/1.0.9: + resolution: {integrity: sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==} + dev: false + + /@tsconfig/node14/1.0.1: + resolution: {integrity: sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==} + dev: false + + /@tsconfig/node16/1.0.2: + resolution: {integrity: sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==} + dev: false + /@types/bcrypt/5.0.0: resolution: {integrity: sha512-agtcFKaruL8TmcvqbndlqHPSJgsolhf/qPWchFlgnW1gECTN/nKbFcoFnvKAQRFfKbh+BO6A3SWdJu9t+xF3Lw==} dependencies: @@ -270,7 +323,7 @@ packages: resolution: {integrity: sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==} dependencies: '@types/minimatch': 3.0.4 - '@types/node': 14.17.1 + '@types/node': 14.17.6 dev: false /@types/ioredis/4.26.6: @@ -348,6 +401,13 @@ packages: '@types/node': 14.17.1 dev: false + /@types/rimraf/3.0.2: + resolution: {integrity: sha512-F3OznnSLAUxFrCEu/L5PY8+ny8DtcFRjx7fZZ9bycvXRi3KPTRS9HOitGZwvPg0juRhXFWIeKX58cnX5YqLohQ==} + dependencies: + '@types/glob': 7.1.3 + '@types/node': 14.17.6 + dev: false + /@types/sinon/10.0.6: resolution: {integrity: sha512-6EF+wzMWvBNeGrfP3Nx60hhx+FfwSg1JJBLAAP/IdIUq0EYkqCYf70VT3PhuhPX9eLD+Dp+lNdpb/ZeHG8Yezg==} dependencies: @@ -371,6 +431,10 @@ packages: resolution: {integrity: sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ==} dev: false + /@types/uuid/8.3.3: + resolution: {integrity: sha512-0LbEEx1zxrYB3pgpd1M5lEhLcXjKJnYghvhTRgaBeUivLHMDM1TzF3IJ6hXU2+8uA4Xz+5BA63mtZo5DjVT8iA==} + dev: false + /@typescript-eslint/eslint-plugin/4.26.0_942c48837be95e76bb4156c78358cdbe: resolution: {integrity: sha512-yA7IWp+5Qqf+TLbd8b35ySFOFzUfL7i+4If50EqvjT6w35X8Lv0eBHb6rATeWmucks37w+zV+tWnOXI9JlG6Eg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -493,11 +557,22 @@ packages: acorn: 7.4.1 dev: true + /acorn-walk/8.2.0: + resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} + engines: {node: '>=0.4.0'} + dev: false + /acorn/7.4.1: resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} engines: {node: '>=0.4.0'} hasBin: true + /acorn/8.6.0: + resolution: {integrity: sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: false + /agent-base/6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} @@ -680,6 +755,14 @@ packages: readable-stream: 3.6.0 dev: false + /bootstrap/5.1.3_@popperjs+core@2.10.2: + resolution: {integrity: sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==} + peerDependencies: + '@popperjs/core': ^2.10.2 + dependencies: + '@popperjs/core': 2.10.2 + dev: false + /brace-expansion/1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -1037,6 +1120,11 @@ packages: resolution: {integrity: sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=} dev: false + /dotenv/10.0.0: + resolution: {integrity: sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==} + engines: {node: '>=10'} + dev: false + /dotenv/8.2.0: resolution: {integrity: sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==} engines: {node: '>=8'} @@ -2679,6 +2767,36 @@ packages: resolution: {integrity: sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ=} dev: false + /ts-node/10.4.0_9033393ac6e1960c4e4feb229fa8feef: + resolution: {integrity: sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.7.0 + '@tsconfig/node10': 1.0.8 + '@tsconfig/node12': 1.0.9 + '@tsconfig/node14': 1.0.1 + '@tsconfig/node16': 1.0.2 + '@types/node': 14.17.4 + acorn: 8.6.0 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 4.5.2 + yn: 3.1.1 + dev: false + /ts-node/9.1.1_typescript@4.2.3: resolution: {integrity: sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==} engines: {node: '>=10.0.0'} @@ -2802,6 +2920,12 @@ packages: hasBin: true dev: false + /typescript/4.5.2: + resolution: {integrity: sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==} + engines: {node: '>=4.2.0'} + hasBin: true + dev: false + /uglify-js/3.13.8: resolution: {integrity: sha512-PvFLMFIQHfIjFFlvAch69U2IvIxK9TNzNWt1SxZGp9JZ/v70yvqIQuiJeVPPtUMOzoNt+aNRDk4wgxb34wvEqA==} engines: {node: '>=0.8.0'} diff --git a/src/index.ts b/src/index.ts index 76285f4..c3205c2 100644 --- a/src/index.ts +++ b/src/index.ts @@ -76,6 +76,7 @@ export * from './service/Files' export * from './service/HTTPServer' export * from './service/Routing' export * from './service/Middlewares' +export * from './service/Discovery' export * from './support/redis/Redis' export * from './support/cache/MemoryCache' diff --git a/src/service/Discovery.ts b/src/service/Discovery.ts new file mode 100644 index 0000000..96115d6 --- /dev/null +++ b/src/service/Discovery.ts @@ -0,0 +1,10 @@ +import {Unit} from '../lifecycle/Unit' +import {Singleton} from '../di' +import {NodeModules} from '../support/NodeModules' + +@Singleton() +export class Discovery extends Unit { + async up(): Promise { + await this.make(NodeModules).discover() + } +}