ing
This commit is contained in:
parent
944da03d1a
commit
5d268cfbf7
|
@ -26,18 +26,42 @@ module.exports = {
|
|||
},
|
||||
|
||||
module: {
|
||||
loaders: [
|
||||
rules:[
|
||||
{
|
||||
enforce: 'pre',
|
||||
test: /\.tsx?$/,
|
||||
exclude: [
|
||||
Path.resolve(__dirname, '../../node_modules/')
|
||||
],
|
||||
enforce: 'pre',
|
||||
use: [
|
||||
{
|
||||
loader: 'tslint-loader'
|
||||
}
|
||||
],
|
||||
]
|
||||
},
|
||||
{
|
||||
test: /\.html$/,
|
||||
use: [
|
||||
{
|
||||
loader: 'html-loader'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
test: /\.png$/,
|
||||
use: [
|
||||
{
|
||||
loader: 'url-loader?limit=10000'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
test: /\.jpg$/,
|
||||
use: [
|
||||
{
|
||||
loader: 'file-loader'
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
|
|
@ -34,61 +34,54 @@ module.exports = WebpackMerge(configBase, {
|
|||
},
|
||||
|
||||
module: {
|
||||
loaders: [
|
||||
// source-map
|
||||
rules: [
|
||||
{
|
||||
enforce: 'pre',
|
||||
test: /\.js$/,
|
||||
use: [
|
||||
{
|
||||
loader: 'source-map-loader'
|
||||
}
|
||||
],
|
||||
exclude: [
|
||||
Path.resolve(__dirname, '../../node_modules/')
|
||||
]
|
||||
},
|
||||
{
|
||||
],
|
||||
enforce: 'pre',
|
||||
test: /\.tsx?$/,
|
||||
use: [
|
||||
{
|
||||
loader: 'source-map-loader'
|
||||
}
|
||||
],
|
||||
exclude: [
|
||||
Path.resolve(__dirname, '../../node_modules/')
|
||||
]
|
||||
},
|
||||
// .ts, .tsx
|
||||
{
|
||||
test: /\.tsx?$/,
|
||||
exclude: [
|
||||
Path.resolve(__dirname, '../../node_modules/')
|
||||
],
|
||||
enforce: 'pre',
|
||||
use: [
|
||||
{
|
||||
loader: 'source-map-loader'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
test: /\.tsx?$/,
|
||||
include: [
|
||||
Path.resolve(__dirname, '../../src/')
|
||||
Path.resolve(__dirname, '../../src/')
|
||||
],
|
||||
exclude: [
|
||||
Path.resolve(__dirname, '../../node_modules/')
|
||||
],
|
||||
use: [
|
||||
{
|
||||
loader: 'react-hot-loader/webpack'
|
||||
loader: 'react-hot-loader/webpack'
|
||||
},
|
||||
{
|
||||
loader: 'awesome-typescript-loader',
|
||||
options: {
|
||||
transpileOnly: true,
|
||||
useTranspileModule: false,
|
||||
sourceMap: true,
|
||||
},
|
||||
loader: 'awesome-typescript-loader',
|
||||
options: {
|
||||
transpileOnly: true,
|
||||
useTranspileModule: false,
|
||||
sourceMap: true,
|
||||
}
|
||||
},
|
||||
]
|
||||
},
|
||||
|
||||
// static assets
|
||||
{ test: /\.html$/, use: 'html-loader' },
|
||||
{ test: /\.png$/, use: 'url-loader?limit=10000' },
|
||||
{ test: /\.jpg$/, use: 'file-loader' },
|
||||
],
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
plugins: [
|
||||
|
|
|
@ -16,29 +16,24 @@ module.exports = WebpackMerge(configBase, {
|
|||
devtool: 'source-map',
|
||||
|
||||
module: {
|
||||
loaders: [
|
||||
// .ts, .tsx
|
||||
rules: [
|
||||
{
|
||||
test: /\.tsx?$/,
|
||||
exclude: [
|
||||
Path.resolve(__dirname, '../../node_modules/')
|
||||
],
|
||||
include: [
|
||||
Path.resolve(__dirname, '../../src/')
|
||||
],
|
||||
exclude: [
|
||||
Path.resolve(__dirname, '../../node_modules/')
|
||||
],
|
||||
use: [
|
||||
{
|
||||
loader: 'awesome-typescript-loader?module=es6'
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
// static assets
|
||||
{ test: /\.html$/, use: 'html-loader' },
|
||||
{ test: /\.png$/, use: 'url-loader?limit=10000' },
|
||||
{ test: /\.jpg$/, use: 'file-loader' },
|
||||
],
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
plugins: [
|
||||
new Webpack.DefinePlugin({
|
||||
'process.env': {
|
||||
|
|
58
src/ts/@overflow/commons/di/decorators/inject.ts
Normal file
58
src/ts/@overflow/commons/di/decorators/inject.ts
Normal file
|
@ -0,0 +1,58 @@
|
|||
import {
|
||||
Annotation,
|
||||
Decorator,
|
||||
} from '@overflow/commons/core/reflect';
|
||||
|
||||
import {
|
||||
MetadataKeyType,
|
||||
PropertyKeyType,
|
||||
TypeUtil,
|
||||
} from '@overflow/commons/core/type';
|
||||
|
||||
|
||||
export interface InjectAnnotationAttributes {
|
||||
value: string[];
|
||||
}
|
||||
|
||||
export class InjectAnnotation implements Annotation {
|
||||
public readonly attributes: InjectAnnotationAttributes;
|
||||
|
||||
public constructor(value: string | string[] | InjectAnnotationAttributes) {
|
||||
|
||||
if (undefined === value) {
|
||||
throw new Error(`value attribute must be specified.`);
|
||||
}
|
||||
|
||||
if (TypeUtil.isString(value)) {
|
||||
this.attributes = {
|
||||
value: [<string>value],
|
||||
};
|
||||
} else if (TypeUtil.isArray(value)) {
|
||||
this.attributes = {
|
||||
value: <string[]>value,
|
||||
};
|
||||
} else {
|
||||
this.attributes = <InjectAnnotationAttributes>value;
|
||||
}
|
||||
}
|
||||
|
||||
public classDecorator<TFunction extends Function>(target: TFunction): TFunction | void {
|
||||
console.log('Inject');
|
||||
}
|
||||
|
||||
public propertyDecorator?(target: Object, propertyKey: PropertyKeyType): void {
|
||||
console.log('Inject');
|
||||
}
|
||||
|
||||
public methodDecorator<T>(target: Object, propertyKey: PropertyKeyType,
|
||||
descriptor: TypedPropertyDescriptor<T>): TypedPropertyDescriptor<T> | void {
|
||||
console.log('Inject');
|
||||
}
|
||||
|
||||
public parameterDecorator?(target: Object, propertyKey: PropertyKeyType, parameterIndex: number): void {
|
||||
console.log('Inject');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export const Inject = Decorator.create(InjectAnnotation);
|
46
src/ts/@overflow/commons/di/decorators/injectable.ts
Normal file
46
src/ts/@overflow/commons/di/decorators/injectable.ts
Normal file
|
@ -0,0 +1,46 @@
|
|||
import {
|
||||
Annotation,
|
||||
Decorator,
|
||||
} from '@overflow/commons/core/reflect';
|
||||
|
||||
import {
|
||||
MetadataKeyType,
|
||||
PropertyKeyType,
|
||||
TypeUtil,
|
||||
} from '@overflow/commons/core/type';
|
||||
|
||||
|
||||
export interface InjectableAnnotationAttributes {
|
||||
name?: string[];
|
||||
}
|
||||
|
||||
export class InjectableAnnotation implements Annotation {
|
||||
public readonly attributes: InjectableAnnotationAttributes;
|
||||
|
||||
public constructor(name: string | string[] | InjectableAnnotationAttributes) {
|
||||
|
||||
if (undefined === name) {
|
||||
throw new Error(`value attribute must be specified.`);
|
||||
}
|
||||
|
||||
if (TypeUtil.isString(name)) {
|
||||
this.attributes = {
|
||||
name: [<string>name],
|
||||
};
|
||||
} else {
|
||||
this.attributes = <InjectableAnnotationAttributes>name;
|
||||
}
|
||||
}
|
||||
|
||||
public classDecorator<TFunction extends Function>(target: TFunction): TFunction | void {
|
||||
console.log('Injectable');
|
||||
}
|
||||
|
||||
public methodDecorator<T>(target: Object, propertyKey: PropertyKeyType,
|
||||
descriptor: TypedPropertyDescriptor<T>): TypedPropertyDescriptor<T> | void {
|
||||
console.log('Injectable');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export const Injectable = Decorator.create(InjectableAnnotation);
|
57
src/ts/@overflow/commons/di/decorators/resource.ts
Normal file
57
src/ts/@overflow/commons/di/decorators/resource.ts
Normal file
|
@ -0,0 +1,57 @@
|
|||
import {
|
||||
Annotation,
|
||||
Decorator,
|
||||
} from '@overflow/commons/core/reflect';
|
||||
|
||||
import {
|
||||
MetadataKeyType,
|
||||
PropertyKeyType,
|
||||
TypeUtil,
|
||||
} from '@overflow/commons/core/type';
|
||||
|
||||
|
||||
export interface ResourceAnnotationAttributes {
|
||||
value: string[];
|
||||
}
|
||||
|
||||
export class ResourceAnnotation implements Annotation {
|
||||
public readonly attributes: ResourceAnnotationAttributes;
|
||||
|
||||
public constructor(value: string | string[] | ResourceAnnotationAttributes) {
|
||||
|
||||
if (undefined === value) {
|
||||
throw new Error(`value attribute must be specified.`);
|
||||
}
|
||||
|
||||
if (TypeUtil.isString(value)) {
|
||||
this.attributes = {
|
||||
value: [<string>value],
|
||||
};
|
||||
} else if (TypeUtil.isArray(value)) {
|
||||
this.attributes = {
|
||||
value: <string[]>value,
|
||||
};
|
||||
} else {
|
||||
this.attributes = <ResourceAnnotationAttributes>value;
|
||||
}
|
||||
}
|
||||
|
||||
public classDecorator<TFunction extends Function>(target: TFunction): TFunction | void {
|
||||
console.log('Resource');
|
||||
}
|
||||
|
||||
public propertyDecorator?(target: Object, propertyKey: PropertyKeyType): void {
|
||||
console.log('Resource');
|
||||
}
|
||||
|
||||
public methodDecorator<T>(target: Object, propertyKey: PropertyKeyType,
|
||||
descriptor: TypedPropertyDescriptor<T>): TypedPropertyDescriptor<T> | void {
|
||||
console.log('Resource');
|
||||
}
|
||||
|
||||
public parameterDecorator?(target: Object, propertyKey: PropertyKeyType, parameterIndex: number): void {
|
||||
console.log('Resource');
|
||||
}
|
||||
}
|
||||
|
||||
export const Resource = Decorator.create(ResourceAnnotation);
|
|
@ -17,11 +17,11 @@ import {
|
|||
import { Class } from '@overflow/commons/core/reflect';
|
||||
import { Action } from './action';
|
||||
|
||||
export default class LPCReducer {
|
||||
export default class DispatchReducer {
|
||||
|
||||
private reducerMap: Map<string, any[]>;
|
||||
|
||||
protected constructor() {
|
||||
public constructor() {
|
||||
this.reducerMap = new Map();
|
||||
}
|
||||
|
|
@ -29,7 +29,7 @@ import {
|
|||
} from 'react-hot-loader';
|
||||
|
||||
import config from './config';
|
||||
import WebAppReducer from '@overflow/webapp/redux/webapp_reducer';
|
||||
import DispatchReducer from '@overflow/commons/redux/dispatch_reducer';
|
||||
import WebApp from './pages/webapp';
|
||||
// declare let module: { hot: any };
|
||||
|
||||
|
@ -41,6 +41,8 @@ declare global {
|
|||
const module: { hot: any };
|
||||
}
|
||||
|
||||
|
||||
|
||||
class WebAppApplication {
|
||||
private static isProduction:boolean = process.env.NODE_ENV === 'production' ? true : false;
|
||||
private static useReduxDevTools:boolean = window.devToolsExtension && !WebAppApplication.isProduction ? true : false;
|
||||
|
@ -57,7 +59,7 @@ class WebAppApplication {
|
|||
public async run(): Promise<void> {
|
||||
try {
|
||||
this.renderLoading();
|
||||
let reducer: WebAppReducer = WebAppReducer.getInstance();
|
||||
let reducer: DispatchReducer = new DispatchReducer();
|
||||
reducer.registerReducers(config.redux.reducers);
|
||||
this.store = createStore(reducer.reducer, config.redux.state);
|
||||
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
import LPCReducer from '@overflow/commons/redux/lpc_reducer';
|
||||
|
||||
export default class WebAppReducer extends LPCReducer {
|
||||
private static readonly instance: WebAppReducer = new WebAppReducer();
|
||||
public static getInstance(): WebAppReducer {
|
||||
return WebAppReducer.instance;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user