Split framework into separated packages

This commit is contained in:
kamil.mysliwiec
2017-05-14 16:03:09 +02:00
parent 693ec204de
commit 0c0caa2ae7
122 changed files with 526 additions and 253 deletions

6
.gitignore vendored
View File

@@ -8,9 +8,15 @@
# misc
npm-debug.log
/src/common/npm-debug.log
/src/core/npm-debug.log
/src/testing/npm-debug.log
/src/microservices/npm-debug.log
/src/websockets/npm-debug.log
# example
/quick-start
/example_dist
# tests
/test

View File

@@ -1,12 +1,12 @@
import { NestFactory } from '../../src/nest-factory';
import { Transport } from '../../src/common/enums/transport.enum';
import { NestFactory } from '../../src/core/nest-factory';
import { Transport } from '../../src/microservices/enums/transport.enum';
import { MicroserviceModule } from './modules/microservice.module';
const app = NestFactory.createMicroservice(
MicroserviceModule,
{
transport: Transport.REDIS,
url: 'redis://localhost:6379'
}
url: 'redis://localhost:6379',
},
);
app.listen(() => console.log('Microservice listen on port:', 5667 ));

View File

@@ -3,7 +3,7 @@ import { Client } from '../../../src/microservices/utils/client.decorator';
import { RequestMapping } from '../../../src/common/utils/decorators/request-mapping.decorator';
import { ClientProxy } from '../../../src/microservices/client/client-proxy';
import { Observable } from 'rxjs';
import { Transport } from '../../../src/common/enums/transport.enum';
import { Transport } from '../../../src/microservices/enums/transport.enum';
import 'rxjs/add/operator/catch';
const MicroserviceClient = { transport: Transport.TCP, port: 5667 };

View File

@@ -1,7 +1,7 @@
import { UsersService } from './users.service';
import { HttpException } from '../../../src/core/exceptions/http-exception';
import { Middleware } from '../../../src/common/utils';
import { NestMiddleware } from '../../../src/core/middlewares/interfaces/nest-middleware.interface';
import { NestMiddleware } from '../../../src/common/interfaces/middlewares/nest-middleware.interface';
@Middleware()
export class AuthMiddleware implements NestMiddleware {

View File

@@ -1,4 +1,4 @@
import { ExceptionFilter } from '../../../src/common/interfaces/exception-filter.interface';
import { ExceptionFilter } from '../../../src/common/interfaces/exceptions/exception-filter.interface';
import { Catch } from '../../../src/common/utils/decorators/catch.decorator';
import { UsersService } from './users.service';

View File

@@ -1,6 +1,6 @@
{
"name": "nest.js",
"version": "1.0.6",
"name": "@nestjs",
"version": "2.0.0",
"description": "Modern, fast, powerful node.js web framework",
"main": "index.js",
"scripts": {
@@ -19,7 +19,9 @@
],
"exclude": [
"node_modules/",
"src/*.ts",
"src/core/nest-application.ts",
"src/core/nest-factory.ts",
"src/core/nest-microservice.ts",
"src/**/*.spec.ts",
"src/common/services/logger.service.ts",
"src/microservices/exceptions/",
@@ -54,11 +56,13 @@
"typescript": "^2.2.1"
},
"devDependencies": {
"@nestjs/common": "^1.0.0",
"@types/chai": "^3.4.34",
"@types/express": "^4.0.35",
"@types/mocha": "^2.2.38",
"@types/node": "^7.0.5",
"@types/redis": "^0.12.36",
"@types/reflect-metadata": "0.0.5",
"@types/sinon": "^1.16.36",
"@types/socket.io": "^1.4.29",
"awesome-typescript-loader": "^3.0.0-beta.18",

View File

@@ -1,3 +1,2 @@
export * from './request-method.enum';
export * from './transport.enum';
export * from './http-status.enum';

View File

@@ -0,0 +1,2 @@
export const InvalidModuleConfigMessage = (property: string) =>
`Invalid property '${property}' in @Module() decorator.`;

View File

@@ -0,0 +1,7 @@
import { InvalidModuleConfigMessage } from './constants';
export class InvalidModuleConfigException extends Error {
constructor(property: string) {
super(InvalidModuleConfigMessage(property));
}
}

View File

@@ -1,3 +1,10 @@
/*
* Nest @common
* Copyright(c) 2017-... Kamil Mysliwiec
* www.nestjs.com || www.kamilmysliwiec.com
* MIT Licensed
*/
export * from './utils';
export * from './enums';
export {
@@ -5,6 +12,8 @@ export {
INestApplication,
INestMicroservice,
MiddlewareConfigProxy,
MiddlewareConfiguration,
NestMiddleware,
MiddlewaresConsumer,
OnModuleInit,
ExceptionFilter,

View File

@@ -0,0 +1,2 @@
export * from './controller-metadata.interface';
export * from './controller.interface';

View File

@@ -1,5 +1,5 @@
import { ExceptionFilter } from './exception-filter.interface';
import { Metatype } from './metatype.interface';
import { Metatype } from '../metatype.interface';
export interface ExceptionFilterMetadata {
func: ExceptionFilter['catch'];

View File

@@ -0,0 +1,2 @@
export * from './exception-filter-metadata.interface';
export * from './exception-filter.interface'

View File

@@ -1,14 +1,13 @@
export * from './request-mapping-metadata.interface';
export * from './nest-module.interface';
export * from './module-metadata.interface';
export * from './controller.interface';
export * from './modules/nest-module.interface';
export * from './modules/module-metadata.interface';
export * from './controllers/controller.interface';
export * from './injectable.interface';
export * from './controller-metadata.interface';
export * from './module-metadata.interface';
export * from './controllers/controller-metadata.interface';
export * from './modules/module-metadata.interface';
export * from './metatype.interface';
export * from './nest-application.interface';
export * from './nest-microservice.interface';
export * from './middlewares-consumer.interface';
export * from './on-init.interface';
export * from './middleware-config-proxy.interface';
export * from './exception-filter.interface';
export * from './modules/on-init.interface';
export * from './exceptions/exception-filter.interface';
export * from './middlewares';

View File

@@ -0,0 +1,4 @@
export * from './middleware-config-proxy.interface';
export * from './middlewares-consumer.interface';
export * from './middleware-configuration.interface';
export * from './nest-middleware.interface';

View File

@@ -1,5 +1,5 @@
import { MiddlewaresConsumer } from './middlewares-consumer.interface';
import { RequestMappingMetadata } from './request-mapping-metadata.interface';
import { RequestMappingMetadata } from '../request-mapping-metadata.interface';
export interface MiddlewareConfigProxy {
with: (...data) => MiddlewareConfigProxy;

View File

@@ -0,0 +1,8 @@
import { ControllerMetadata } from '../controllers/controller-metadata.interface';
import { Controller } from '../controllers/controller.interface';
import { RequestMethod } from '../../enums/request-method.enum';
export interface MiddlewareConfiguration {
middlewares: any;
forRoutes: (Controller | ControllerMetadata & { method?: RequestMethod })[];
}

View File

@@ -1,4 +1,4 @@
import { Metatype } from './metatype.interface';
import { Metatype } from '../metatype.interface';
import { MiddlewareConfigProxy } from './middleware-config-proxy.interface';
export interface MiddlewaresConsumer {

View File

@@ -0,0 +1,4 @@
export * from './module-metadata.interface';
export * from './module-metatype.interface';
export * from './nest-module.interface';
export * from './on-init.interface';

View File

@@ -1,5 +1,5 @@
import { NestModule } from './nest-module.interface';
import { Controller } from './controller.interface';
import { Controller } from '../controllers/controller.interface';
export interface ModuleMetadata {
modules?: NestModule[] | any[];

View File

@@ -1,4 +1,4 @@
import { NestModule } from './nest-module.interface';
import { Metatype } from './metatype.interface';
import { Metatype } from '../metatype.interface';
export interface NestModuleMetatype extends Metatype<NestModule> {}

View File

@@ -0,0 +1,5 @@
import { MiddlewaresConsumer } from '../middlewares/middlewares-consumer.interface';
export interface NestModule {
configure?: (consumer: MiddlewaresConsumer) => MiddlewaresConsumer | void;
}

View File

@@ -1,6 +0,0 @@
import { MiddlewareBuilder } from '../../core/middlewares/builder';
import { MiddlewaresConsumer } from './middlewares-consumer.interface';
export interface NestModule {
configure?: (consumer: MiddlewaresConsumer) => MiddlewaresConsumer | void;
}

16
src/common/package.json Normal file
View File

@@ -0,0 +1,16 @@
{
"name": "@nestjs/common",
"version": "2.0.0",
"description": "Nest - modern, fast, powerful node.js web framework (@common)",
"author": "Kamil Mysliwiec",
"license": "MIT",
"scripts": {
"compile": "tsc -p tsconfig.json"
},
"dependencies": {
"cli-color": "1.1.0"
},
"peerDependencies": {
"reflect-metadata": "0.1.10"
}
}

View File

@@ -2,7 +2,7 @@ import 'mocha';
import 'reflect-metadata';
import { expect } from 'chai';
import { BindResolveMiddlewareValues } from '../../utils/bind-resolve-values.util';
import { NestMiddleware } from '../../../core/middlewares/interfaces/nest-middleware.interface';
import { NestMiddleware } from '../../interfaces/middlewares/nest-middleware.interface';
describe('BindResolveMiddlewareValues', () => {
let type;

View File

@@ -1,7 +1,7 @@
import 'reflect-metadata';
import { expect } from 'chai';
import { Module } from '../../utils/decorators/module.decorator';
import { InvalidModuleConfigException } from '../../../errors/exceptions/invalid-module-config.exception';
import { InvalidModuleConfigException } from '../../exceptions/invalid-module-config.exception';
describe('@Module', () => {
const moduleProps = {

25
src/common/tsconfig.json Normal file
View File

@@ -0,0 +1,25 @@
{
"compilerOptions": {
"module": "commonjs",
"declaration": true,
"noImplicitAny": false,
"noUnusedLocals": false,
"removeComments": false,
"noLib": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es6",
"sourceMap": false,
"allowJs": false,
"rootDir": "./",
"outDir": "../../node_modules/@nestjs/common"
},
"include": [
"*.ts",
"**/*.ts"
],
"exclude": [
"../../node_modules",
"./**/*.spec.ts"
]
}

View File

@@ -1,5 +1,5 @@
import { Constructor } from './merge-with-values.util';
import { NestMiddleware } from '../../core/middlewares/interfaces/nest-middleware.interface';
import { NestMiddleware } from '../interfaces/middlewares/nest-middleware.interface';
export const BindResolveMiddlewareValues = <T extends Constructor<NestMiddleware>>(data: Array<any>) => {
return (Metatype: T): any => {

View File

@@ -1,5 +1,5 @@
import 'reflect-metadata';
import { ControllerMetadata } from '../../interfaces/controller-metadata.interface';
import { ControllerMetadata } from '../../interfaces/controllers/controller-metadata.interface';
import { isUndefined, isObject } from '../shared.utils';
import { PATH_METADATA } from '../../constants';

View File

@@ -1,6 +1,6 @@
import 'reflect-metadata';
import { ModuleMetadata } from '../../interfaces/module-metadata.interface';
import { InvalidModuleConfigException } from '../../../errors/exceptions/invalid-module-config.exception';
import { ModuleMetadata } from '../../interfaces/modules/module-metadata.interface';
import { InvalidModuleConfigException } from '../../exceptions/invalid-module-config.exception';
import { metadata } from '../../constants';
const metadataKeys = [

View File

@@ -1,8 +1,8 @@
import 'reflect-metadata';
import { ControllerMetadata } from '../../interfaces/controller-metadata.interface';
import { ControllerMetadata } from '../../interfaces/controllers/controller-metadata.interface';
import { isString } from '../shared.utils';
import { PATH_METADATA, SHARED_MODULE_METADATA } from '../../constants';
import { NestModuleMetatype } from '../../interfaces/module-metatype.interface';
import { NestModuleMetatype } from '../../interfaces/modules/module-metatype.interface';
export const Shared = (token: string = 'global'): ClassDecorator => {
return (target: FunctionConstructor) => {

View File

@@ -1,5 +1,5 @@
import { RuntimeException } from './exceptions/runtime.exception';
import { Logger } from '../common/services/logger.service';
import { Logger } from '@nestjs/common/services/logger.service';
export class ExceptionHandler {
private readonly logger = new Logger(ExceptionHandler.name);

View File

@@ -1,9 +1,6 @@
export const InvalidMiddlewareMessage = (name: string) =>
`Your middleware doesn't have "resolve" method (${name})`;
export const InvalidModuleConfigMessage = (property: string) =>
`Invalid property '${property}' in @Module() decorator.`;
export const UnknownDependenciesMessage = (type: string) =>
`Nest could not resolves dependencies of ${type}.`;

View File

@@ -1,9 +1,9 @@
import { HttpException } from './http-exception';
import { messages } from '../constants';
import { Logger } from '../../common/services/logger.service';
import { ExceptionFilterMetadata } from '../../common/interfaces/exception-filter-metadata.interface';
import { isEmpty, isObject } from '../../common/utils/shared.utils';
import { InvalidExceptionFilterException } from '../../errors/exceptions/invalid-exception-filter.exception';
import { Logger } from '@nestjs/common';
import { ExceptionFilterMetadata } from '@nestjs/common/interfaces/exceptions/exception-filter-metadata.interface';
import { isEmpty, isObject } from '@nestjs/common/utils/shared.utils';
import { InvalidExceptionFilterException } from '../errors/exceptions/invalid-exception-filter.exception';
export class ExceptionsHandler {
private readonly logger = new Logger(ExceptionsHandler.name);

View File

@@ -1,4 +1,4 @@
import { RequestMethod } from '../../common/enums/request-method.enum';
import { RequestMethod } from '@nestjs/common/enums/request-method.enum';
export const ModuleInitMessage = (module: string) => `${module} dependencies initialized`;
export const RouteMappedMessage = (path: string, method) => `Mapped {${path}, ${RequestMethod[method]}} route`;

View File

@@ -1,4 +1,4 @@
import { RequestMethod } from '../../common/enums/request-method.enum';
import { RequestMethod } from '@nestjs/common/enums/request-method.enum';
export class RouterMethodFactory {
public get(target, requestMethod: RequestMethod) {

View File

@@ -1,4 +1,13 @@
/*
* Nest @core
* Copyright(c) 2017-... Kamil Mysliwiec
* www.nestjs.com || www.kamilmysliwiec.com
* MIT Licensed
*/
export { HttpException } from './exceptions/http-exception';
export { NestMiddleware, MiddlewareConfiguration } from './middlewares/interfaces';
export { MiddlewareBuilder } from './middlewares/builder';
export { ModuleRef } from './injector/module-ref';
export * from './nest-factory';
export * from './nest-application';
export * from './nest-microservice';

View File

@@ -1,11 +1,11 @@
import 'reflect-metadata';
import { Controller, Injectable } from '../../common/interfaces/';
import { Controller, Injectable } from '@nestjs/common/interfaces';
import { NestModuleMetatype } from '@nestjs/common/interfaces/modules/module-metatype.interface';
import { Metatype } from '@nestjs/common/interfaces/metatype.interface';
import { SHARED_MODULE_METADATA } from '@nestjs/common/constants';
import { isUndefined } from '@nestjs/common/utils/shared.utils';
import { Module } from './module';
import { UnknownModuleException } from '../../errors/exceptions/unknown-module.exception';
import { NestModuleMetatype } from '../../common/interfaces/module-metatype.interface';
import { Metatype } from '../../common/interfaces/metatype.interface';
import { SHARED_MODULE_METADATA } from '../../common/constants';
import { isUndefined } from '../../common/utils/shared.utils';
import { UnknownModuleException } from '../errors/exceptions/unknown-module.exception';
import { ModuleTokenFactory } from './module-token-factory';
export class NestContainer {

View File

@@ -1,14 +1,14 @@
import 'reflect-metadata';
import { InstanceWrapper } from './container';
import { UnknownDependenciesException } from '../../errors/exceptions/unknown-dependencies.exception';
import { RuntimeException } from '../../errors/exceptions/runtime.exception';
import { UnknownDependenciesException } from '../errors/exceptions/unknown-dependencies.exception';
import { RuntimeException } from '../errors/exceptions/runtime.exception';
import { Module } from './module';
import { Metatype } from '../../common/interfaces/metatype.interface';
import { Controller } from '../../common/interfaces/controller.interface';
import { Injectable } from '../../common/interfaces/injectable.interface';
import { Metatype } from '@nestjs/common/interfaces/metatype.interface';
import { Controller } from '@nestjs/common/interfaces/controllers/controller.interface';
import { Injectable } from '@nestjs/common/interfaces/injectable.interface';
import { MiddlewareWrapper } from '../middlewares/container';
import { isUndefined, isNil, isFunction } from '../../common/utils/shared.utils';
import { PARAMTYPES_METADATA, SELF_DECLARED_DEPS_METADATA } from '../../common/constants';
import { isUndefined, isNil, isFunction } from '@nestjs/common/utils/shared.utils';
import { PARAMTYPES_METADATA, SELF_DECLARED_DEPS_METADATA } from '@nestjs/common/constants';
export class Injector {
public loadInstanceOfMiddleware(

View File

@@ -1,13 +1,12 @@
import iterate from 'iterare';
import { NestContainer } from './container';
import { Injector } from './injector';
import { Injectable } from '../../common/interfaces/injectable.interface';
import { Controller } from '../../common/interfaces/controller.interface';
import { Injectable } from '@nestjs/common/interfaces/injectable.interface';
import { Controller } from '@nestjs/common/interfaces/controllers/controller.interface';
import { Module } from './module';
import { Logger } from '../../common/services/logger.service';
import { Logger, OnModuleInit } from '@nestjs/common';
import { ModuleInitMessage } from '../helpers/messages';
import { isUndefined, isNil } from '../../common/utils/shared.utils';
import { OnModuleInit } from '../../common/interfaces/index';
import { isUndefined, isNil } from '@nestjs/common/utils/shared.utils';
export class InstanceLoader {
private injector = new Injector();

View File

@@ -1,6 +1,6 @@
import { isUndefined } from '../../common/utils/shared.utils';
import { NestModuleMetatype } from '../../common/interfaces/module-metatype.interface';
import { SHARED_MODULE_METADATA } from '../../common/constants';
import { isUndefined } from '@nestjs/common/utils/shared.utils';
import { NestModuleMetatype } from '@nestjs/common/interfaces/modules/module-metatype.interface';
import { SHARED_MODULE_METADATA } from '@nestjs/common/constants';
export class ModuleTokenFactory {
public create(metatype: NestModuleMetatype, scope: NestModuleMetatype[]) {

View File

@@ -1,11 +1,11 @@
import { InstanceWrapper } from './container';
import { Injectable, Controller, NestModule } from '../../common/interfaces';
import { UnknownExportException } from '../../errors/exceptions/unknown-export.exception';
import { NestModuleMetatype } from '../../common/interfaces/module-metatype.interface';
import { Metatype } from '../../common/interfaces/metatype.interface';
import { Injectable, Controller, NestModule } from '@nestjs/common/interfaces';
import { UnknownExportException } from '../errors/exceptions/unknown-export.exception';
import { NestModuleMetatype } from '@nestjs/common/interfaces/modules/module-metatype.interface';
import { Metatype } from '@nestjs/common/interfaces/metatype.interface';
import { ModuleRef } from './module-ref';
import { isFunction, isNil, isUndefined } from '../../common/utils/shared.utils';
import { RuntimeException } from '../../errors/exceptions/runtime.exception';
import { isFunction, isNil, isUndefined } from '@nestjs/common/utils/shared.utils';
import { RuntimeException } from '../errors/exceptions/runtime.exception';
export interface CustomComponent {
provide: any;

View File

@@ -1,6 +1,6 @@
import iterate from 'iterare';
import { Injectable } from '../common/interfaces/injectable.interface';
import { isConstructor, isFunction, isNil } from '../common/utils/shared.utils';
import { Injectable } from '@nestjs/common/interfaces/injectable.interface';
import { isConstructor, isFunction, isNil } from '@nestjs/common/utils/shared.utils';
export class MetadataScanner {
public scanFromPrototype<T extends Injectable, R>(instance: T, prototype, callback: (name: string) => R): R[] {

View File

@@ -1,10 +1,10 @@
import { MiddlewareConfiguration } from './interfaces/middleware-configuration.interface';
import { InvalidMiddlewareConfigurationException } from '../../errors/exceptions/invalid-middleware-configuration.exception';
import { isUndefined, isNil } from '../../common/utils/shared.utils';
import { BindResolveMiddlewareValues } from '../../common/utils/bind-resolve-values.util';
import { Logger } from '../../common/services/logger.service';
import { Metatype, MiddlewaresConsumer } from '../../common/interfaces';
import { MiddlewareConfigProxy } from '../../index';
import { MiddlewareConfiguration } from '@nestjs/common/interfaces/middlewares/middleware-configuration.interface';
import { InvalidMiddlewareConfigurationException } from '../errors/exceptions/invalid-middleware-configuration.exception';
import { isUndefined, isNil } from '@nestjs/common/utils/shared.utils';
import { BindResolveMiddlewareValues } from '@nestjs/common/utils/bind-resolve-values.util';
import { Logger } from '@nestjs/common/services/logger.service';
import { Metatype, MiddlewaresConsumer } from '@nestjs/common/interfaces';
import { MiddlewareConfigProxy } from '@nestjs/common/interfaces/middlewares';
import { RoutesMapper } from './routes-mapper';
export class MiddlewareBuilder implements MiddlewaresConsumer {

View File

@@ -1,6 +1,6 @@
import { MiddlewareConfiguration } from './interfaces/middleware-configuration.interface';
import { NestMiddleware } from './interfaces/nest-middleware.interface';
import { Metatype } from '../../common/interfaces/metatype.interface';
import { MiddlewareConfiguration } from '@nestjs/common/interfaces/middlewares/middleware-configuration.interface';
import { NestMiddleware } from '@nestjs/common/interfaces/middlewares/nest-middleware.interface';
import { Metatype } from '@nestjs/common/interfaces/metatype.interface';
export class MiddlewaresContainer {
private readonly middlewares = new Map<string, Map<string, MiddlewareWrapper>>();

View File

@@ -1,2 +0,0 @@
export * from './middleware-configuration.interface';
export * from './nest-middleware.interface';

View File

@@ -1,8 +0,0 @@
import { ControllerMetadata } from '../../../common/interfaces/controller-metadata.interface';
import { Controller } from '../../../common/interfaces/controller.interface';
import { RequestMethod } from '../../../common/enums/request-method.enum';
export interface MiddlewareConfiguration {
middlewares: any;
forRoutes: (Controller | ControllerMetadata & { method?: RequestMethod })[];
}

View File

@@ -3,20 +3,20 @@ import { NestContainer } from '../injector/container';
import { MiddlewareBuilder } from './builder';
import { MiddlewaresContainer, MiddlewareWrapper } from './container';
import { MiddlewaresResolver } from './resolver';
import { ControllerMetadata } from '../../common/interfaces/controller-metadata.interface';
import { NestModule } from '../../common/interfaces/nest-module.interface';
import { MiddlewareConfiguration } from './interfaces/middleware-configuration.interface';
import { InvalidMiddlewareException } from '../../errors/exceptions/invalid-middleware.exception';
import { RequestMethod } from '../../common/enums/request-method.enum';
import { ControllerMetadata } from '@nestjs/common/interfaces/controllers/controller-metadata.interface';
import { NestModule } from '@nestjs/common/interfaces/modules/nest-module.interface';
import { MiddlewareConfiguration } from '@nestjs/common/interfaces/middlewares/middleware-configuration.interface';
import { InvalidMiddlewareException } from '../errors/exceptions/invalid-middleware.exception';
import { RequestMethod } from '@nestjs/common/enums/request-method.enum';
import { RoutesMapper } from './routes-mapper';
import { RouterProxy } from '../router/router-proxy';
import { ExceptionsHandler } from '../exceptions/exceptions-handler';
import { Module } from '../injector/module';
import { RouterMethodFactory } from '../helpers/router-method-factory';
import { NestMiddleware } from './interfaces/nest-middleware.interface';
import { Metatype } from '../../common/interfaces/metatype.interface';
import { RuntimeException } from '../../errors/exceptions/runtime.exception';
import { isUndefined } from '../../common/utils/shared.utils';
import { NestMiddleware } from '@nestjs/common/interfaces/middlewares/nest-middleware.interface';
import { Metatype } from '@nestjs/common/interfaces/metatype.interface';
import { RuntimeException } from '../errors/exceptions/runtime.exception';
import { isUndefined } from '@nestjs/common/utils/shared.utils';
export class MiddlewaresModule {
private static routesMapper = new RoutesMapper();

View File

@@ -1,9 +1,9 @@
import 'reflect-metadata';
import { ExpressRouterExplorer } from '../router/router-explorer';
import { UnknownRequestMappingException } from '../../errors/exceptions/unknown-request-mapping.exception';
import { RequestMethod } from '../../common/enums/request-method.enum';
import { isUndefined, validatePath } from '../../common/utils/shared.utils';
import { PATH_METADATA } from '../../common/constants';
import { UnknownRequestMappingException } from '../errors/exceptions/unknown-request-mapping.exception';
import { RequestMethod } from '@nestjs/common/enums/request-method.enum';
import { isUndefined, validatePath } from '@nestjs/common/utils/shared.utils';
import { PATH_METADATA } from '@nestjs/common/constants';
import { MetadataScanner } from '../metadata-scanner';
export class RoutesMapper {

View File

@@ -1,13 +1,13 @@
import { MiddlewaresModule } from './core/middlewares/middlewares-module';
import { SocketModule } from './websockets/socket-module';
import { NestContainer } from './core/injector/container';
import { ExpressAdapter } from './core/adapters/express-adapter';
import { RoutesResolver } from './core/router/routes-resolver';
import { Logger } from './common/services/logger.service';
import { messages } from './core/constants';
import { MicroservicesModule } from './microservices/microservices-module';
import { Resolver } from './core/router/interfaces/resolver.interface';
import { INestApplication } from './common/interfaces';
import { MiddlewaresModule } from './middlewares/middlewares-module';
import { SocketModule } from '@nestjs/websockets/socket-module';
import { NestContainer } from './injector/container';
import { ExpressAdapter } from './adapters/express-adapter';
import { RoutesResolver } from './router/routes-resolver';
import { Logger } from '@nestjs/common/services/logger.service';
import { messages } from './constants';
import { MicroservicesModule } from '@nestjs/microservices/microservices-module';
import { Resolver } from './router/interfaces/resolver.interface';
import { INestApplication } from '@nestjs/common';
export class NestApplication implements INestApplication {
private readonly routesResolver: Resolver;

View File

@@ -1,16 +1,16 @@
import { DependenciesScanner } from './core/scanner';
import { InstanceLoader } from './core/injector/instance-loader';
import { NestContainer } from './core/injector/container';
import { DependenciesScanner } from './scanner';
import { InstanceLoader } from './injector/instance-loader';
import { NestContainer } from './injector/container';
import { ExceptionsZone } from './errors/exceptions-zone';
import { NestModuleMetatype } from './common/interfaces/module-metatype.interface';
import { Logger } from './common/services/logger.service';
import { messages } from './core/constants';
import { NestModuleMetatype } from '@nestjs/common/interfaces/modules/module-metatype.interface';
import { Logger } from '@nestjs/common/services/logger.service';
import { messages } from './constants';
import { NestApplication } from './nest-application';
import { NestMicroservice } from './nest-microservice';
import { isFunction } from './common/utils/shared.utils';
import { MicroserviceConfiguration } from './microservices/interfaces/microservice-configuration.interface';
import { ExpressAdapter } from './core/adapters/express-adapter';
import { INestApplication, INestMicroservice } from './common/interfaces';
import { isFunction } from '@nestjs/common/utils/shared.utils';
import { MicroserviceConfiguration } from '@nestjs/microservices/interfaces/microservice-configuration.interface';
import { ExpressAdapter } from './adapters/express-adapter';
import { INestApplication, INestMicroservice } from '@nestjs/common';
export class NestFactory {
private static container = new NestContainer();

View File

@@ -1,12 +1,12 @@
import { NestContainer } from './core/injector/container';
import { MicroservicesModule } from './microservices/microservices-module';
import { messages } from './core/constants';
import { Logger } from './common/services/logger.service';
import { Server } from './microservices/server/server';
import { MicroserviceConfiguration } from './microservices/interfaces/microservice-configuration.interface';
import { ServerFactory } from './microservices/server/server-factory';
import { Transport } from './common/enums/transport.enum';
import { INestMicroservice } from './common/interfaces';
import { NestContainer } from './injector/container';
import { MicroservicesModule } from '@nestjs/microservices/microservices-module';
import { messages } from './constants';
import { Logger } from '@nestjs/common/services/logger.service';
import { Server } from '@nestjs/microservices/server/server';
import { MicroserviceConfiguration } from '@nestjs/microservices/interfaces/microservice-configuration.interface';
import { ServerFactory } from '@nestjs/microservices/server/server-factory';
import { Transport } from '@nestjs/common/enums/transport.enum';
import { INestMicroservice } from '@nestjs/common';
export class NestMicroservice implements INestMicroservice {
private readonly logger = new Logger(NestMicroservice.name);

21
src/core/package.json Normal file
View File

@@ -0,0 +1,21 @@
{
"name": "@nestjs/core",
"version": "2.0.0",
"description": "Nest - modern, fast, powerful node.js web framework (@core)",
"author": "Kamil Mysliwiec",
"license": "MIT",
"scripts": {
"compile": "tsc -p tsconfig.json"
},
"dependencies": {
"express": "^4.14.0",
"iterare": "0.0.8"
},
"peerDependencies": {
"@nestjs/common": "^1.0.0",
"@nestjs/websockets": "^1.0.0",
"@nestjs/microservices": "^1.0.0",
"reflect-metadata": "0.1.10",
"rxjs": "^5.0.3"
}
}

View File

@@ -1,4 +1,4 @@
import { Controller } from '../../../common/interfaces/controller.interface';
import { Controller } from '@nestjs/common/interfaces/controllers/controller.interface';
import { ExceptionsHandler } from '../../exceptions/exceptions-handler';
export interface ExceptionsFilter {

View File

@@ -1,5 +1,5 @@
import { Controller } from '../../../common/interfaces/index';
import { Metatype } from '../../../common/interfaces/metatype.interface';
import { Controller } from '@nestjs/common/interfaces/index';
import { Metatype } from '@nestjs/common/interfaces/metatype.interface';
export interface RouterExplorer {
explore(instance: Controller, metatype: Metatype<Controller>, moduleName: string);

View File

@@ -1,4 +1,4 @@
import { RouteParamtypes } from '../../../common/enums/route-paramtypes.enum';
import { RouteParamtypes } from '@nestjs/common/enums/route-paramtypes.enum';
export interface IRouteParamsFactory {
exchangeKeyForValue(key: RouteParamtypes, data, { req, res, next });

View File

@@ -1,4 +1,4 @@
import { RouteParamtypes } from '../../common/enums/route-paramtypes.enum';
import { RouteParamtypes } from '@nestjs/common/enums/route-paramtypes.enum';
import { IRouteParamsFactory } from './interfaces/route-params-factory.interface';
export class RouteParamsFactory implements IRouteParamsFactory {

View File

@@ -1,14 +1,14 @@
import 'reflect-metadata';
import iterate from 'iterare';
import { Controller } from '../../common/interfaces/controller.interface';
import { Controller } from '@nestjs/common/interfaces/controllers/controller.interface';
import { ExceptionsHandler } from '../exceptions/exceptions-handler';
import { EXCEPTION_FILTERS_METADATA, FILTER_CATCH_EXCEPTIONS } from '../../common/constants';
import { isEmpty, isFunction } from '../../common/utils/shared.utils';
import { Metatype } from '../../common/interfaces/index';
import { ExceptionFilterMetadata } from '../../common/interfaces/exception-filter-metadata.interface';
import { EXCEPTION_FILTERS_METADATA, FILTER_CATCH_EXCEPTIONS } from '@nestjs/common/constants';
import { isEmpty, isFunction } from '@nestjs/common/utils/shared.utils';
import { Metatype } from '@nestjs/common/interfaces/index';
import { ExceptionFilterMetadata } from '@nestjs/common/interfaces/exceptions/exception-filter-metadata.interface';
import { NestContainer } from '../injector/container';
import { UnknownModuleException } from '../../errors/exceptions/unknown-module.exception';
import { ExceptionFilter } from '../../common/interfaces/exception-filter.interface';
import { UnknownModuleException } from '../errors/exceptions/unknown-module.exception';
import { ExceptionFilter } from '@nestjs/common/interfaces/exceptions/exception-filter.interface';
export class RouterExceptionFilters {
constructor(private container: NestContainer) {}

View File

@@ -1,9 +1,9 @@
import 'reflect-metadata';
import { ROUTE_ARGS_METADATA } from '../../common/constants';
import { isUndefined } from '../../common/utils/shared.utils';
import { RouteParamtypes } from '../../common/enums/route-paramtypes.enum';
import { Controller } from '../../common/interfaces';
import { RouteParamsMetadata } from '../../index';
import { ROUTE_ARGS_METADATA } from '@nestjs/common/constants';
import { isUndefined } from '@nestjs/common/utils/shared.utils';
import { RouteParamtypes } from '@nestjs/common/enums/route-paramtypes.enum';
import { Controller } from '@nestjs/common/interfaces';
import { RouteParamsMetadata } from '@nestjs/common/utils';
import { IRouteParamsFactory } from './interfaces/route-params-factory.interface';
export interface IndexValuePair {

View File

@@ -1,14 +1,14 @@
import 'reflect-metadata';
import { Controller } from '../../common/interfaces/controller.interface';
import { RequestMethod } from '../../common/enums/request-method.enum';
import { Controller } from '@nestjs/common/interfaces/controllers/controller.interface';
import { RequestMethod } from '@nestjs/common/enums/request-method.enum';
import { RouterProxy, RouterProxyCallback } from './router-proxy';
import { UnknownRequestMappingException } from '../../errors/exceptions/unknown-request-mapping.exception';
import { UnknownRequestMappingException } from '../errors/exceptions/unknown-request-mapping.exception';
import { ExpressAdapter } from '../adapters/express-adapter';
import { Metatype } from '../../common/interfaces/metatype.interface';
import { isUndefined, validatePath } from '../../common/utils/shared.utils';
import { Metatype } from '@nestjs/common/interfaces/metatype.interface';
import { isUndefined, validatePath } from '@nestjs/common/utils/shared.utils';
import { RouterMethodFactory } from '../helpers/router-method-factory';
import { PATH_METADATA, METHOD_METADATA } from '../../common/constants';
import { Logger } from '../../common/services/logger.service';
import { PATH_METADATA, METHOD_METADATA } from '@nestjs/common/constants';
import { Logger } from '@nestjs/common/services/logger.service';
import { RouteMappedMessage } from '../helpers/messages';
import { RouterExecutionContext } from './router-execution-context';
import { ExceptionsFilter } from './interfaces/exceptions-filter.interface';

View File

@@ -1,8 +1,8 @@
import { Application } from 'express';
import { NestContainer, InstanceWrapper } from '../injector/container';
import { RouterProxy } from './router-proxy';
import { Controller } from '../../common/interfaces/controller.interface';
import { Logger } from '../../common/services/logger.service';
import { Controller } from '@nestjs/common/interfaces/controllers/controller.interface';
import { Logger } from '@nestjs/common/services/logger.service';
import { ControllerMappingMessage } from '../helpers/messages';
import { Resolver } from './interfaces/resolver.interface';
import { RouterExceptionFilters } from './router-exception-filters';

View File

@@ -1,11 +1,11 @@
import 'reflect-metadata';
import { NestContainer } from './injector/container';
import { Controller } from '../common/interfaces/controller.interface';
import { Injectable } from '../common/interfaces/injectable.interface';
import { metadata, EXCEPTION_FILTERS_METADATA } from '../common/constants';
import { NestModuleMetatype } from '../common/interfaces/module-metatype.interface';
import { Metatype } from '../common/interfaces/metatype.interface';
import { GATEWAY_MIDDLEWARES } from '../websockets/constants';
import { Controller } from '@nestjs/common/interfaces/controllers/controller.interface';
import { Injectable } from '@nestjs/common/interfaces/injectable.interface';
import { metadata, EXCEPTION_FILTERS_METADATA } from '@nestjs/common/constants';
import { NestModuleMetatype } from '@nestjs/common/interfaces/modules/module-metatype.interface';
import { Metatype } from '@nestjs/common/interfaces/metatype.interface';
import { GATEWAY_MIDDLEWARES } from '@nestjs/websockets/constants';
export class DependenciesScanner {
constructor(private container: NestContainer) {}

View File

@@ -4,7 +4,7 @@ import { ExceptionsHandler } from '../../exceptions/exceptions-handler';
import { HttpException } from '../../exceptions/http-exception';
import { Logger } from '../../../common/services/logger.service';
import { NestEnvironment } from '../../../common/enums/nest-environment.enum';
import { InvalidExceptionFilterException } from '../../../errors/exceptions/invalid-exception-filter.exception';
import { InvalidExceptionFilterException } from '../../errors/exceptions/invalid-exception-filter.exception';
describe('ExceptionsHandler', () => {
let handler: ExceptionsHandler;

View File

@@ -2,7 +2,7 @@ import { expect } from 'chai';
import * as sinon from 'sinon';
import { NestContainer } from '../../injector/container';
import { Module } from '../../../common/utils/decorators/module.decorator';
import { UnknownModuleException } from '../../../errors/exceptions/unknown-module.exception';
import { UnknownModuleException } from '../../errors/exceptions/unknown-module.exception';
describe('NestContainer', () => {
let container: NestContainer;

View File

@@ -3,9 +3,9 @@ import { expect } from 'chai';
import { InstanceWrapper } from '../../injector/container';
import { Injector } from '../../injector/injector';
import { Component } from '../../../common/utils/decorators/component.decorator';
import { RuntimeException } from '../../../errors/exceptions/runtime.exception';
import { RuntimeException } from '../../errors/exceptions/runtime.exception';
import { Module } from '../../injector/module';
import { UnknownDependenciesException } from '../../../errors/exceptions/unknown-dependencies.exception';
import { UnknownDependenciesException } from '../../errors/exceptions/unknown-dependencies.exception';
describe('Injector', () => {
let injector: Injector;

View File

@@ -1,10 +1,10 @@
import { expect } from 'chai';
import * as sinon from 'sinon';
import { Module as ModuleDecorator } from '../../../common/utils/decorators/module.decorator';
import { UnknownExportException } from '../../../errors/exceptions/unknown-export.exception';
import { UnknownExportException } from '../../errors/exceptions/unknown-export.exception';
import { Module } from '../../injector/module';
import { Component } from '../../../common/utils/decorators/component.decorator';
import { RuntimeException } from '../../../errors/exceptions/runtime.exception';
import { RuntimeException } from '../../errors/exceptions/runtime.exception';
describe('Module', () => {
let module: Module;

View File

@@ -1,6 +1,6 @@
import { expect } from 'chai';
import { MiddlewareBuilder } from '../../middlewares/builder';
import { InvalidMiddlewareConfigurationException } from '../../../errors/exceptions/invalid-middleware-configuration.exception';
import { InvalidMiddlewareConfigurationException } from '../../errors/exceptions/invalid-middleware-configuration.exception';
import { RoutesMapper } from '../../middlewares/routes-mapper';
import { Controller, Get } from '../../../index';

View File

@@ -1,7 +1,7 @@
import { expect } from 'chai';
import { MiddlewaresContainer } from '../../middlewares/container';
import { MiddlewareConfiguration } from '../../middlewares/interfaces/middleware-configuration.interface';
import { NestMiddleware } from '../../middlewares/interfaces/nest-middleware.interface';
import { MiddlewareConfiguration } from '../../../common/interfaces/middlewares/middleware-configuration.interface';
import { NestMiddleware } from '../../../common/interfaces/middlewares/nest-middleware.interface';
import { Component } from '../../../common/utils/decorators/component.decorator';
import { Controller } from '../../../common/utils/decorators/controller.decorator';
import { RequestMapping } from '../../../common/utils/decorators/request-mapping.decorator';

View File

@@ -1,14 +1,14 @@
import { expect } from 'chai';
import * as sinon from 'sinon';
import { NestMiddleware } from '../../middlewares/interfaces/nest-middleware.interface';
import { NestMiddleware } from '../../../common/interfaces/middlewares/nest-middleware.interface';
import { Component } from '../../../common/utils/decorators/component.decorator';
import { MiddlewareBuilder } from '../../middlewares/builder';
import { MiddlewaresModule } from '../../middlewares/middlewares-module';
import { InvalidMiddlewareException } from '../../../errors/exceptions/invalid-middleware.exception';
import { InvalidMiddlewareException } from '../../errors/exceptions/invalid-middleware.exception';
import { RequestMethod } from '../../../common/enums/request-method.enum';
import { Controller } from '../../../common/utils/decorators/controller.decorator';
import { RequestMapping } from '../../../common/utils/decorators/request-mapping.decorator';
import { RuntimeException } from '../../../errors/exceptions/runtime.exception';
import { RuntimeException } from '../../errors/exceptions/runtime.exception';
import { RoutesMapper } from "../../middlewares/routes-mapper";
describe('MiddlewaresModule', () => {

View File

@@ -3,7 +3,7 @@ import { expect } from 'chai';
import { MiddlewaresResolver } from '../../middlewares/resolver';
import { MiddlewaresContainer } from '../../middlewares/container';
import { Component } from '../../../common/utils/decorators/component.decorator';
import { NestMiddleware } from '../../middlewares/interfaces/nest-middleware.interface';
import { NestMiddleware } from '../../../common/interfaces/middlewares/nest-middleware.interface';
import { Logger } from '../../../common/services/logger.service';
import { NestEnvironment } from '../../../common/enums/nest-environment.enum';

View File

@@ -3,7 +3,7 @@ import { RoutesMapper } from '../../middlewares/routes-mapper';
import { Controller } from '../../../common/utils/decorators/controller.decorator';
import { RequestMapping } from '../../../common/utils/decorators/request-mapping.decorator';
import { RequestMethod } from '../../../common/enums/request-method.enum';
import { UnknownRequestMappingException } from '../../../errors/exceptions/unknown-request-mapping.exception';
import { UnknownRequestMappingException } from '../../errors/exceptions/unknown-request-mapping.exception';
describe('RoutesMapper', () => {
@Controller({ path: 'test' })

View File

@@ -2,7 +2,7 @@ import * as sinon from 'sinon';
import { DependenciesScanner } from './../scanner';
import { NestContainer } from './../injector/container';
import { Module } from '../../common/utils/decorators/module.decorator';
import { NestModule } from '../../common/interfaces/nest-module.interface';
import { NestModule } from '../../common/interfaces/modules/nest-module.interface';
import { Component } from '../../common/utils/decorators/component.decorator';
import { Controller } from '../../common/utils/decorators/controller.decorator';

27
src/core/tsconfig.json Normal file
View File

@@ -0,0 +1,27 @@
{
"compilerOptions": {
"module": "commonjs",
"declaration": true,
"noImplicitAny": false,
"noUnusedLocals": false,
"removeComments": false,
"noLib": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es6",
"sourceMap": false,
"allowJs": false,
"rootDir": "./",
"baseUrl": "./../../",
"outDir": "../../node_modules/@nestjs/core"
},
"include": [
"*.ts",
"**/*.ts"
],
"exclude": [
"node_modules/reflect-metadata",
"node_modules/@types/reflect-metadata",
"./**/*.spec.ts"
]
}

View File

@@ -1,8 +0,0 @@
import { RuntimeException } from './runtime.exception';
import { InvalidModuleConfigMessage } from '../messages';
export class InvalidModuleConfigException extends RuntimeException {
constructor(property: string) {
super(InvalidModuleConfigMessage(property));
}
}

View File

@@ -1,12 +1,12 @@
/*
* Nest
* Copyright(c) 2017-... Kamil Mysliwiec
* www.kamilmysliwiec.com
* www.nestjs.com || www.kamilmysliwiec.com
* MIT Licensed
*/
export * from './common';
export * from './core';
export * from './nest-factory';
export * from './nest-application';
export * from './nest-microservice';
export * from './core/nest-factory';
export * from './core/nest-application';
export * from './core/nest-microservice';

View File

@@ -1,7 +1,7 @@
import { ClientTCP } from './client-tcp';
import { ClientRedis } from './client-redis';
import { ClientMetadata } from '../interfaces/client-metadata.interface';
import { Transport } from '../../common/enums/transport.enum';
import { Transport } from '@nestjs/common/enums/transport.enum';
import { ClientProxy } from './client-proxy';
export class ClientProxyFactory {

View File

@@ -1,6 +1,6 @@
import { Observable } from 'rxjs/Observable';
import { Observer } from 'rxjs/Observer';
import { isNil } from '../../common/utils/shared.utils';
import { isNil } from '@nestjs/common/utils/shared.utils';
import { InvalidMessageException } from '../exceptions/invalid-message.exception';
export abstract class ClientProxy {

View File

@@ -1,6 +1,6 @@
import * as redis from 'redis';
import { ClientProxy } from './client-proxy';
import { Logger } from '../../common/services/logger.service';
import { Logger } from '@nestjs/common/services/logger.service';
import { ClientMetadata } from '../interfaces/client-metadata.interface';
export class ClientRedis extends ClientProxy {

View File

@@ -0,0 +1 @@
export * from './transport.enum';

View File

@@ -1,4 +1,4 @@
import { RuntimeException } from '../../errors/exceptions/runtime.exception';
import { RuntimeException } from '@nestjs/core/errors/exceptions/runtime.exception';
export class InvalidMessageException extends RuntimeException {
constructor() {

View File

@@ -1,3 +1,11 @@
/*
* Nest @microservices
* Copyright(c) 2017-... Kamil Mysliwiec
* www.nestjs.com || www.kamilmysliwiec.com
* MIT Licensed
*/
export * from './utils';
export * from './interfaces';
export * from './client';
export * from './enums';

View File

@@ -1,4 +1,4 @@
import { Transport } from '../../common/enums/transport.enum';
import { Transport } from '@nestjs/common/enums/transport.enum';
export interface MicroserviceConfiguration {
transport?: Transport;

View File

@@ -1,13 +1,12 @@
import { Controller } from '../common/interfaces/controller.interface';
import { isFunction } from '../common/utils/shared.utils';
import { Controller } from '@nestjs/common/interfaces/controllers/controller.interface';
import { isFunction, isUndefined } from '@nestjs/common/utils/shared.utils';
import {
PATTERN_METADATA, PATTERN_HANDLER_METADATA, CLIENT_CONFIGURATION_METADATA,
CLIENT_METADATA,
} from './constants';
import { isUndefined } from 'util';
import { PatternMetadata } from './interfaces/pattern-metadata.interface';
import { ClientMetadata } from './interfaces/client-metadata.interface';
import { MetadataScanner } from './../core/metadata-scanner';
import { MetadataScanner } from '@nestjs/core/metadata-scanner';
export class ListenerMetadataExplorer {
constructor(private readonly metadataScanner: MetadataScanner) {}

Some files were not shown because too many files have changed in this diff Show More