Source Mapping is not working on test debugging (#1931)

* coverage single components run fix

* remove spec.ts from coverage

* make the coverage and the istanbul-instrumenter-loader works only over the console test because a problem on the remapping for the browser test

* move tslint on the main folder of any component

* remove build:w from readme

* stop build tslint error also in spec files

* clear karma file from unnecessary files

* add set -f for build all script in order to accept *

* fix lint problem and failing tests

* fix failing test search component

* add loader test for viewer

* fix tslint error userinfo

* --max_old_space_size=2048 remove

* fix tslint error uploader unused EventEmitter

* remove spec|index|.*mock|.*model|.*event from coverage
This commit is contained in:
Eugenio Romano
2017-06-04 23:36:46 +01:00
committed by GitHub
parent 7bb002013a
commit bc7170cb44
220 changed files with 1799 additions and 2905 deletions

View File

@@ -1,5 +1,3 @@
var webpackConfig = require('./webpack.test');
module.exports = function (config) { module.exports = function (config) {
var _config = { var _config = {
basePath: '../ng2-components', basePath: '../ng2-components',
@@ -26,11 +24,11 @@ module.exports = function (config) {
{pattern: './node_modules/pdfjs-dist/web/pdf_viewer.js', included: true, watched: false}, {pattern: './node_modules/pdfjs-dist/web/pdf_viewer.js', included: true, watched: false},
{pattern: config.component +'/karma-test-shim.js', watched: false}, {pattern: config.component +'/karma-test-shim.js', watched: false},
{pattern: './ng2-**/src/assets/**/*.*', included: false, served: true, watched: false}, {pattern: config.component +'/src/assets/**/*.*', included: false, served: true, watched: false},
{pattern: './ng2-**/src/**/*.ts', included: false, served: true, watched: false} {pattern: config.component +'/src/**/*.ts', included: false, served: true, watched: false}
], ],
webpack: webpackConfig, webpack: require('./webpack.test'),
webpackMiddleware: { webpackMiddleware: {
noInfo: true, noInfo: true,

View File

@@ -4,6 +4,23 @@ const commonConfig = require('./webpack.common.js');
module.exports = webpackMerge(commonConfig, { module.exports = webpackMerge(commonConfig, {
// require those dependencies but don't bundle them
externals: [
/^\@angular\//,
/^rxjs\//,
'moment',
'raphael',
'ng2-charts',
'alfresco-js-api',
'ng2-alfresco-core',
'ng2-alfresco-datatable',
'ng2-activiti-analytics',
'ng2-activiti-diagrams',
'ng2-activiti-form',
"ng2-activiti-tasklist",
'ng2-alfresco-documentlist'
],
output: { output: {
filename: '[name]/bundles/[name].js', filename: '[name]/bundles/[name].js',
library: '[name]', library: '[name]',

View File

@@ -23,6 +23,8 @@ const alfrescoLibs = [
'ng2-alfresco-webscript' 'ng2-alfresco-webscript'
]; ];
const ENV = process.env.NODE_ENV = process.env.ENV = 'production';
module.exports = { module.exports = {
devtool: 'cheap-module-source-map', devtool: 'cheap-module-source-map',
@@ -34,22 +36,28 @@ module.exports = {
} }
}, },
// require those dependencies but don't bundle them resolve: {
externals: [ alias: {
/^\@angular\//, "ng2-alfresco-core": path.resolve(__dirname, '../ng2-alfresco-core/index.ts'),
/^rxjs\//, "ng2-alfresco-datatable": path.resolve(__dirname, '../ng2-alfresco-datatable/index.ts'),
'moment', "ng2-activiti-diagrams": path.resolve(__dirname, '../ng2-activiti-diagrams/index.ts'),
'raphael', "ng2-activiti-analytics": path.resolve(__dirname, '../ng2-activiti-analytics/index.ts'),
'ng2-charts', "ng2-activiti-form": path.resolve(__dirname, '../ng2-activiti-form/index.ts'),
'alfresco-js-api', "ng2-activiti-tasklist": path.resolve(__dirname, '../ng2-activiti-tasklist/index.ts'),
'ng2-alfresco-core', "ng2-activiti-processlist": path.resolve(__dirname, '../ng2-activiti-processlist/index.ts'),
'ng2-alfresco-datatable', "ng2-alfresco-documentlist": path.resolve(__dirname, '../ng2-alfresco-documentlist/index.ts'),
'ng2-activiti-analytics', "ng2-alfresco-login": path.resolve(__dirname, '../ng2-alfresco-login/index.ts'),
'ng2-activiti-diagrams', "ng2-alfresco-search": path.resolve(__dirname, '../ng2-alfresco-search/index.ts'),
'ng2-activiti-form', "ng2-alfresco-social": path.resolve(__dirname, '../ng2-alfresco-social/index.ts'),
"ng2-activiti-tasklist", "ng2-alfresco-tag": path.resolve(__dirname, '../ng2-alfresco-tag/index.ts'),
'ng2-alfresco-documentlist' "ng2-alfresco-upload": path.resolve(__dirname, '../ng2-alfresco-upload/index.ts'),
], "ng2-alfresco-viewer": path.resolve(__dirname, '../ng2-alfresco-viewer/index.ts'),
"ng2-alfresco-webscript": path.resolve(__dirname, '../ng2-alfresco-webscript/index.ts'),
"ng2-alfresco-userinfo": path.resolve(__dirname, '../ng2-alfresco-userinfo/index.ts')
},
extensions: ['.ts', '.js'],
modules: [helpers.root('node_modules')]
},
module: { module: {
rules: [ rules: [
@@ -70,18 +78,14 @@ module.exports = {
test: /\.ts$/, test: /\.ts$/,
loader: 'tslint-loader', loader: 'tslint-loader',
options: { options: {
emitErrors: false, emitErrors: true,
configFile: path.resolve(__dirname, './assets/tslint.json') failOnHint: true
}, },
exclude: [/node_modules/, /bundles/, /dist/, /demo/] exclude: [/node_modules/, /bundles/, /dist/, /demo/]
}, },
{ {
test: /\.ts$/, test: /\.ts$/,
use: ['ts-loader?' + JSON.stringify({ loader: ['ts-loader', 'angular2-template-loader'],
"logInfoToStdOut": true,
"logLevel": "error",
"configFileName": path.resolve(__dirname, '../tsconfig.json')
}), 'angular2-template-loader'],
exclude: [/node_modules/, /bundles/, /dist/, /demo/] exclude: [/node_modules/, /bundles/, /dist/, /demo/]
}, },
{ {
@@ -126,29 +130,6 @@ module.exports = {
] ]
}, },
resolve: {
alias: {
"ng2-alfresco-core": path.resolve(__dirname, '../ng2-alfresco-core/index.ts'),
"ng2-alfresco-datatable": path.resolve(__dirname, '../ng2-alfresco-datatable/index.ts'),
"ng2-activiti-diagrams": path.resolve(__dirname, '../ng2-activiti-diagrams/index.ts'),
"ng2-activiti-analytics": path.resolve(__dirname, '../ng2-activiti-analytics/index.ts'),
"ng2-activiti-form": path.resolve(__dirname, '../ng2-activiti-form/index.ts'),
"ng2-activiti-tasklist": path.resolve(__dirname, '../ng2-activiti-tasklist/index.ts'),
"ng2-activiti-processlist": path.resolve(__dirname, '../ng2-activiti-processlist/index.ts'),
"ng2-alfresco-documentlist": path.resolve(__dirname, '../ng2-alfresco-documentlist/index.ts'),
"ng2-alfresco-login": path.resolve(__dirname, '../ng2-alfresco-login/index.ts'),
"ng2-alfresco-search": path.resolve(__dirname, '../ng2-alfresco-search/index.ts'),
"ng2-alfresco-social": path.resolve(__dirname, '../ng2-alfresco-social/index.ts'),
"ng2-alfresco-tag": path.resolve(__dirname, '../ng2-alfresco-tag/index.ts'),
"ng2-alfresco-upload": path.resolve(__dirname, '../ng2-alfresco-upload/index.ts'),
"ng2-alfresco-viewer": path.resolve(__dirname, '../ng2-alfresco-viewer/index.ts'),
"ng2-alfresco-webscript": path.resolve(__dirname, '../ng2-alfresco-webscript/index.ts'),
"ng2-alfresco-userinfo": path.resolve(__dirname, '../ng2-alfresco-userinfo/index.ts')
},
extensions: ['.ts', '.js'],
modules: [helpers.root('node_modules')]
},
plugins: [ plugins: [
new CopyWebpackPlugin([ new CopyWebpackPlugin([
... alfrescoLibs.map(lib => { ... alfrescoLibs.map(lib => {
@@ -167,7 +148,17 @@ module.exports = {
/angular(\\|\/)core(\\|\/)@angular/, /angular(\\|\/)core(\\|\/)@angular/,
helpers.root('./src'), helpers.root('./src'),
{} {}
) ),
new webpack.DefinePlugin({
'process.env': {
'ENV': JSON.stringify(ENV)
}
}),
new webpack.LoaderOptionsPlugin({
htmlLoader: {
minimize: false // workaround for ng2
}
})
], ],
node: { node: {

View File

@@ -1,37 +1,24 @@
const webpack = require('webpack');
const helpers = require('./helpers'); const helpers = require('./helpers');
const webpackMerge = require('webpack-merge');
const commonConfig = require('./webpack.common.js');
const ENV = process.env.NODE_ENV = process.env.ENV = 'production'; module.exports = webpackMerge(commonConfig, {
module.exports = {
devtool: 'inline-source-map', devtool: 'inline-source-map',
module: { module: {
rules: [ rules: [
{ {
enforce: 'pre', enforce: 'post',
test: /\.js$/, test: /^(?!(.*spec|index|.*mock|.*model|.*event)).*\.ts?$/,
loader: 'source-map-loader', loader: 'istanbul-instrumenter-loader',
exclude: [/node_modules/, /bundles/, /dist/, /demo/] exclude: [
/node_modules/,
/test/
]
}, },
{ {
test: /\.ts$/, test: /\.(txt|pdf)$/,
loaders: ['ts-loader?' + JSON.stringify({ transpileOnly: true}), 'angular2-template-loader'],
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.html$/,
loader: 'html-loader',
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.css$/,
loader: ['to-string-loader', 'css-loader'],
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico|pdf)$/,
loader: 'file-loader', loader: 'file-loader',
query: { query: {
name: '[path][name].[ext]', name: '[path][name].[ext]',
@@ -39,47 +26,7 @@ module.exports = {
return url.replace('src', 'dist'); return url.replace('src', 'dist');
} }
} }
},
{
enforce: 'post',
test: /\.ts$/,
loader: 'istanbul-instrumenter-loader',
exclude: [
/node_modules/,
/test/
]
} }
] ]
},
resolve: {
extensions: ['.ts', '.js'],
symlinks: false,
modules: [helpers.root('../ng2-components'), helpers.root('node_modules')]
},
plugins: [
new webpack.NoEmitOnErrorsPlugin(),
new webpack.ContextReplacementPlugin(
/angular(\\|\/)core(\\|\/)@angular/,
helpers.root('./src'),
{}
),
new webpack.DefinePlugin({
'process.env': {
'ENV': JSON.stringify(ENV)
}
}),
new webpack.LoaderOptionsPlugin({
htmlLoader: {
minimize: false // workaround for ng2
}
})
],
node: {
fs: 'empty',
module: false
} }
}; });

View File

@@ -305,12 +305,6 @@ npm install
npm run build npm run build
``` ```
### Build the files and keep watching for changes
```sh
$ npm run build:w
```
## Running unit tests ## Running unit tests
```sh ```sh

View File

@@ -0,0 +1,35 @@
const webpack = require('webpack');
const webpackMerge = require('webpack-merge');
const commonConfig = require('./webpack.common.js');
module.exports = webpackMerge(commonConfig, {
devtool: 'cheap-module-source-map',
externals: [
/^\@angular\//,
/^rxjs\//,
'moment',
'raphael',
'ng2-charts',
'alfresco-js-api',
'ng2-alfresco-core',
'ng2-alfresco-datatable',
'ng2-activiti-analytics',
'ng2-activiti-diagrams',
'ng2-activiti-form',
"ng2-activiti-tasklist",
'ng2-alfresco-documentlist'
],
output: {
filename: './bundles/[name].js',
library: '[name]',
libraryTarget: 'umd',
chunkFilename: '[id].chunk.js'
},
entry: {
"ng2-activiti-analytics": "./index.ts"
}
});

View File

@@ -4,6 +4,8 @@ const fs = require('fs');
const path = require('path'); const path = require('path');
const CopyWebpackPlugin = require('copy-webpack-plugin'); const CopyWebpackPlugin = require('copy-webpack-plugin');
const ENV = process.env.NODE_ENV = process.env.ENV = 'production';
module.exports = { module.exports = {
resolveLoader: { resolveLoader: {
@@ -13,22 +15,15 @@ module.exports = {
} }
}, },
// require those dependencies but don't bundle them resolve: {
externals: [ alias: {
/^\@angular\//, "ng2-alfresco-core": helpers.root('../ng2-alfresco-core/index.ts'),
/^rxjs\//, "ng2-activiti-diagrams": helpers.root('../ng2-activiti-diagrams/index.ts')
'moment', },
'raphael', extensions: ['.ts', '.js'],
'ng2-charts', symlinks: false,
'alfresco-js-api', modules: [helpers.root('../../ng2-components'), helpers.root('node_modules')]
'ng2-alfresco-core', },
'ng2-alfresco-datatable',
'ng2-activiti-analytics',
'ng2-activiti-diagrams',
'ng2-activiti-form',
"ng2-activiti-tasklist",
'ng2-alfresco-documentlist'
],
module: { module: {
rules: [ rules: [
@@ -38,19 +33,13 @@ module.exports = {
loader: 'source-map-loader', loader: 'source-map-loader',
exclude: [/node_modules/, /bundles/, /dist/, /demo/] exclude: [/node_modules/, /bundles/, /dist/, /demo/]
}, },
{
enforce: 'pre',
test: /\.ts$/,
use: 'source-map-loader',
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{ {
enforce: 'pre', enforce: 'pre',
test: /\.ts$/, test: /\.ts$/,
loader: 'tslint-loader', loader: 'tslint-loader',
options: { options: {
emitErrors: true, emitErrors: true,
configFile: path.resolve(__dirname, './assets/tslint.json') failOnHint: true
}, },
exclude: [/node_modules/, /bundles/, /dist/, /demo/] exclude: [/node_modules/, /bundles/, /dist/, /demo/]
}, },
@@ -82,7 +71,7 @@ module.exports = {
emitErrors: true, emitErrors: true,
licenseFile: path.resolve(__dirname, './assets/license_header.txt') licenseFile: path.resolve(__dirname, './assets/license_header.txt')
}, },
exclude: [/node_modules/, /bundles/, /dist/, /demo/, /rendering-queue.services.ts/ ], exclude: [/node_modules/, /bundles/, /dist/, /demo/, /rendering-queue.services.ts/ ]
}, },
{ {
test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico)$/, test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico)$/,
@@ -102,18 +91,10 @@ module.exports = {
] ]
}, },
resolve: {
extensions: ['.ts', '.js'],
symlinks: false,
modules: [
'../ng2-components', 'node_modules'
]
},
plugins: [ plugins: [
new CopyWebpackPlugin([{ new CopyWebpackPlugin([{
from: `src/i18n/`, from: `src/i18n/`,
to: `bundles/assets/ng2-activiti-analytics/i18n/` to: `bundles/assets/ng2-alfresco-tag/i18n/`
}]), }]),
new webpack.NoEmitOnErrorsPlugin(), new webpack.NoEmitOnErrorsPlugin(),
@@ -124,11 +105,19 @@ module.exports = {
/angular(\\|\/)core(\\|\/)@angular/, /angular(\\|\/)core(\\|\/)@angular/,
helpers.root('./src'), helpers.root('./src'),
{} {}
) ),
new webpack.DefinePlugin({
'process.env': {
'ENV': JSON.stringify(ENV)
}
}),
new webpack.LoaderOptionsPlugin({
htmlLoader: {
minimize: false // workaround for ng2
}
})
], ],
devtool: 'cheap-module-source-map',
node: { node: {
fs: 'empty', fs: 'empty',
module: false module: false

View File

@@ -0,0 +1,22 @@
const webpack = require('webpack');
const webpackMerge = require('webpack-merge');
const testConfig = require('./webpack.test.js');
const helpers = require('./helpers');
module.exports = webpackMerge(testConfig, {
module: {
rules: [
{
enforce: 'post',
test: /^(?!(.*spec|index|.*mock|.*model|.*event)).*\.ts?$/,
include: [helpers.root('src')],
loader: 'istanbul-instrumenter-loader',
exclude: [
/node_modules/,
/test/
]
}
]
}
});

View File

@@ -1,90 +1,8 @@
const webpack = require('webpack');
const helpers = require('./helpers'); const helpers = require('./helpers');
const webpackMerge = require('webpack-merge');
const commonConfig = require('./webpack.common.js');
const ENV = process.env.NODE_ENV = process.env.ENV = 'production'; module.exports = webpackMerge(commonConfig, {
module.exports = { devtool: 'inline-source-map'
});
devtool: 'inline-source-map',
resolve: {
extensions: ['.ts', '.js'],
symlinks: false,
modules: [helpers.root('../ng2-components'), helpers.root('node_modules')]
},
module: {
rules: [
{
enforce: 'pre',
test: /\.js$/,
loader: 'source-map-loader',
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.ts$/,
loaders: ['ts-loader?' + JSON.stringify({ transpileOnly: true}), 'angular2-template-loader'],
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.html$/,
loader: 'html-loader',
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.css$/,
loader: ['to-string-loader', 'css-loader'],
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.component.scss$/,
use: ['to-string-loader', 'raw-loader', 'sass-loader'],
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico|pdf)$/,
loader: 'file-loader',
query: {
name: '[path][name].[ext]',
outputPath: (url)=> {
return url.replace('src', 'dist');
}
}
},
{
enforce: 'post',
test: /\.ts$/,
loader: 'istanbul-instrumenter-loader',
exclude: [
/node_modules/,
/test/
]
}
]
},
plugins: [
new webpack.NoEmitOnErrorsPlugin(),
new webpack.ContextReplacementPlugin(
/angular(\\|\/)core(\\|\/)@angular/,
helpers.root('./src'),
{}
),
new webpack.DefinePlugin({
'process.env': {
'ENV': JSON.stringify(ENV)
}
}),
new webpack.LoaderOptionsPlugin({
htmlLoader: {
minimize: false // workaround for ng2
}
})
],
node: {
fs: 'empty',
module: false
}
};

View File

@@ -8,6 +8,7 @@ module.exports = function (config) {
files: [ files: [
'./node_modules/hammerjs/hammer.js', './node_modules/hammerjs/hammer.js',
{pattern: './node_modules/@angular/material/prebuilt-themes/indigo-pink.css', included: true, watched: false},
//diagrams //diagrams
'./node_modules/chart.js/dist/Chart.js', './node_modules/chart.js/dist/Chart.js',
@@ -27,7 +28,7 @@ module.exports = function (config) {
{pattern: './src/**/*.ts', included: false, served: true, watched: false} {pattern: './src/**/*.ts', included: false, served: true, watched: false}
], ],
webpack: webpackConfig, webpack: (config.mode === 'coverage') ? require('./webpack.coverage') : require('./webpack.test'),
webpackMiddleware: { webpackMiddleware: {
stats: 'errors-only' stats: 'errors-only'

View File

@@ -7,7 +7,7 @@
"clean": "rimraf dist node_modules typings bundles coverage .npmrc", "clean": "rimraf dist node_modules typings bundles coverage .npmrc",
"rimraf": "rimraf", "rimraf": "rimraf",
"build": "webpack --config webpack.build.js --progress --profile --bail", "build": "webpack --config webpack.build.js --progress --profile --bail",
"test": "karma start karma.conf.js --reporters mocha,coverage --single-run --component", "test": "karma start karma.conf.js --reporters mocha,coverage --single-run --mode coverage",
"test-browser": "karma start karma.conf.js --reporters kjhtml --component", "test-browser": "karma start karma.conf.js --reporters kjhtml --component",
"coverage": "npm run test && wsrv -o -p 9875 ./coverage/report", "coverage": "npm run test && wsrv -o -p 9875 ./coverage/report",
"prepublish" : "npm run build" "prepublish" : "npm run build"

View File

@@ -25,4 +25,3 @@ export let fakeReportList = [
name: 'Fake Report 2' name: 'Fake Report 2'
} }
]; ];

View File

@@ -15,11 +15,8 @@
* limitations under the License. * limitations under the License.
*/ */
import { ReflectiveInjector } from '@angular/core';
import { TestBed } from '@angular/core/testing'; import { TestBed } from '@angular/core/testing';
import { async } from '@angular/core/testing'; import { CoreModule, AlfrescoApiService } from 'ng2-alfresco-core';
import { CoreModule, AlfrescoApiService, LogService } from 'ng2-alfresco-core';
import { ReportParametersModel, ParameterValueModel } from '../models/report.model';
import { AnalyticsService } from './analytics.service'; import { AnalyticsService } from './analytics.service';
import { fakeReportList } from '../assets/analytics.service.mock'; import { fakeReportList } from '../assets/analytics.service.mock';

View File

@@ -1,17 +1 @@
const webpack = require('webpack'); module.exports = require('./config/webpack.build.js');
const webpackMerge = require('webpack-merge');
const commonConfig = require('./config/webpack.common.js');
module.exports = webpackMerge(commonConfig, {
output: {
filename: './bundles/[name].js',
library: '[name]',
libraryTarget: 'umd',
chunkFilename: '[id].chunk.js'
},
entry: {
"ng2-activiti-analytics": "./index.ts"
}
});

View File

@@ -0,0 +1 @@
module.exports = require('./config/webpack.coverage.js');

View File

@@ -1,8 +1 @@
const webpack = require('webpack'); module.exports = require('./config/webpack.test.js');
const webpackMerge = require('webpack-merge');
const testConfig = require('./config/webpack.test.js');
module.exports = webpackMerge(testConfig, {
});

View File

@@ -184,12 +184,6 @@ npm install
npm run build npm run build
``` ```
### Build the files and keep watching for changes
```sh
$ npm run build:w
```
## Running unit tests ## Running unit tests
```sh ```sh

View File

@@ -0,0 +1,35 @@
const webpack = require('webpack');
const webpackMerge = require('webpack-merge');
const commonConfig = require('./webpack.common.js');
module.exports = webpackMerge(commonConfig, {
devtool: 'cheap-module-source-map',
externals: [
/^\@angular\//,
/^rxjs\//,
'moment',
'raphael',
'ng2-charts',
'alfresco-js-api',
'ng2-alfresco-core',
'ng2-alfresco-datatable',
'ng2-activiti-analytics',
'ng2-activiti-diagrams',
'ng2-activiti-form',
"ng2-activiti-tasklist",
'ng2-alfresco-documentlist'
],
output: {
filename: './bundles/[name].js',
library: '[name]',
libraryTarget: 'umd',
chunkFilename: '[id].chunk.js'
},
entry: {
"ng2-activiti-diagrams": "./index.ts"
}
});

View File

@@ -4,6 +4,8 @@ const fs = require('fs');
const path = require('path'); const path = require('path');
const CopyWebpackPlugin = require('copy-webpack-plugin'); const CopyWebpackPlugin = require('copy-webpack-plugin');
const ENV = process.env.NODE_ENV = process.env.ENV = 'production';
module.exports = { module.exports = {
resolveLoader: { resolveLoader: {
@@ -13,22 +15,14 @@ module.exports = {
} }
}, },
// require those dependencies but don't bundle them resolve: {
externals: [ alias: {
/^\@angular\//, "ng2-alfresco-core": helpers.root('../ng2-alfresco-core/index.ts')
/^rxjs\//, },
'moment', extensions: ['.ts', '.js'],
'raphael', symlinks: false,
'ng2-charts', modules: [helpers.root('../../ng2-components'), helpers.root('node_modules')]
'alfresco-js-api', },
'ng2-alfresco-core',
'ng2-alfresco-datatable',
'ng2-activiti-analytics',
'ng2-activiti-diagrams',
'ng2-activiti-form',
"ng2-activiti-tasklist",
'ng2-alfresco-documentlist'
],
module: { module: {
rules: [ rules: [
@@ -38,19 +32,13 @@ module.exports = {
loader: 'source-map-loader', loader: 'source-map-loader',
exclude: [/node_modules/, /bundles/, /dist/, /demo/] exclude: [/node_modules/, /bundles/, /dist/, /demo/]
}, },
{
enforce: 'pre',
test: /\.ts$/,
use: 'source-map-loader',
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{ {
enforce: 'pre', enforce: 'pre',
test: /\.ts$/, test: /\.ts$/,
loader: 'tslint-loader', loader: 'tslint-loader',
options: { options: {
emitErrors: true, emitErrors: true,
configFile: path.resolve(__dirname, './assets/tslint.json') failOnHint: true
}, },
exclude: [/node_modules/, /bundles/, /dist/, /demo/] exclude: [/node_modules/, /bundles/, /dist/, /demo/]
}, },
@@ -82,7 +70,7 @@ module.exports = {
emitErrors: true, emitErrors: true,
licenseFile: path.resolve(__dirname, './assets/license_header.txt') licenseFile: path.resolve(__dirname, './assets/license_header.txt')
}, },
exclude: [/node_modules/, /bundles/, /dist/, /demo/, /rendering-queue.services.ts/ ], exclude: [/node_modules/, /bundles/, /dist/, /demo/, /rendering-queue.services.ts/],
}, },
{ {
test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico)$/, test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico)$/,
@@ -102,18 +90,10 @@ module.exports = {
] ]
}, },
resolve: {
extensions: ['.ts', '.js'],
symlinks: false,
modules: [
'../ng2-components', 'node_modules'
]
},
plugins: [ plugins: [
new CopyWebpackPlugin([{ new CopyWebpackPlugin([{
from: `src/i18n/`, from: `src/i18n/`,
to: `bundles/assets/ng2-activiti-diagrams/i18n/` to: `bundles/assets/ng2-alfresco-tag/i18n/`
}]), }]),
new webpack.NoEmitOnErrorsPlugin(), new webpack.NoEmitOnErrorsPlugin(),
@@ -124,11 +104,19 @@ module.exports = {
/angular(\\|\/)core(\\|\/)@angular/, /angular(\\|\/)core(\\|\/)@angular/,
helpers.root('./src'), helpers.root('./src'),
{} {}
) ),
new webpack.DefinePlugin({
'process.env': {
'ENV': JSON.stringify(ENV)
}
}),
new webpack.LoaderOptionsPlugin({
htmlLoader: {
minimize: false // workaround for ng2
}
})
], ],
devtool: 'cheap-module-source-map',
node: { node: {
fs: 'empty', fs: 'empty',
module: false module: false

View File

@@ -0,0 +1,22 @@
const webpack = require('webpack');
const webpackMerge = require('webpack-merge');
const testConfig = require('./webpack.test.js');
const helpers = require('./helpers');
module.exports = webpackMerge(testConfig, {
module: {
rules: [
{
enforce: 'post',
test: /^(?!(.*spec|index|.*mock|.*model|.*event)).*\.ts?$/,
include: [helpers.root('src')],
loader: 'istanbul-instrumenter-loader',
exclude: [
/node_modules/,
/test/
]
}
]
}
});

View File

@@ -1,90 +1,8 @@
const webpack = require('webpack');
const helpers = require('./helpers'); const helpers = require('./helpers');
const webpackMerge = require('webpack-merge');
const commonConfig = require('./webpack.common.js');
const ENV = process.env.NODE_ENV = process.env.ENV = 'production'; module.exports = webpackMerge(commonConfig, {
module.exports = { devtool: 'inline-source-map'
});
devtool: 'inline-source-map',
resolve: {
extensions: ['.ts', '.js'],
symlinks: false,
modules: [helpers.root('../ng2-components'), helpers.root('node_modules')]
},
module: {
rules: [
{
enforce: 'pre',
test: /\.js$/,
loader: 'source-map-loader',
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.ts$/,
loaders: ['ts-loader?' + JSON.stringify({ transpileOnly: true}), 'angular2-template-loader'],
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.html$/,
loader: 'html-loader',
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.css$/,
loader: ['to-string-loader', 'css-loader'],
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.component.scss$/,
use: ['to-string-loader', 'raw-loader', 'sass-loader'],
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico|pdf)$/,
loader: 'file-loader',
query: {
name: '[path][name].[ext]',
outputPath: (url)=> {
return url.replace('src', 'dist');
}
}
},
{
enforce: 'post',
test: /\.ts$/,
loader: 'istanbul-instrumenter-loader',
exclude: [
/node_modules/,
/test/
]
}
]
},
plugins: [
new webpack.NoEmitOnErrorsPlugin(),
new webpack.ContextReplacementPlugin(
/angular(\\|\/)core(\\|\/)@angular/,
helpers.root('./src'),
{}
),
new webpack.DefinePlugin({
'process.env': {
'ENV': JSON.stringify(ENV)
}
}),
new webpack.LoaderOptionsPlugin({
htmlLoader: {
minimize: false // workaround for ng2
}
})
],
node: {
fs: 'empty',
module: false
}
};

View File

@@ -8,17 +8,16 @@ module.exports = function (config) {
files: [ files: [
'./node_modules/hammerjs/hammer.js', './node_modules/hammerjs/hammer.js',
{pattern: './node_modules/@angular/material/prebuilt-themes/indigo-pink.css', included: true, watched: false},
//diagrams //diagrams
'./node_modules/chart.js/dist/Chart.js', './node_modules/chart.js/dist/Chart.js',
'./node_modules/alfresco-js-api/dist/alfresco-js-api.js', './node_modules/alfresco-js-api/dist/alfresco-js-api.js',
'./node_modules/raphael/raphael.js', './node_modules/raphael/raphael.js',
'./node_modules/moment/min/moment.min.js', './node_modules/moment/min/moment.min.js',
'./node_modules/md-date-time-picker/dist/js/mdDateTimePicker.js',
{pattern: './node_modules/ng2-translate/**/*.js', included: false, watched: false}, {pattern: './node_modules/ng2-translate/**/*.js', included: false, watched: false},
{pattern: './node_modules/ng2-charts/**/*.js', included: false, served: true, watched: false}, {pattern: './node_modules/ng2-charts/**/*.js', included: false, served: true, watched: false},
{pattern: './node_modules/md-date-time-picker/**/*.js', included: false, served: true, watched: false},
{pattern: './node_modules/moment/**/*.js', included: false, served: true, watched: false}, {pattern: './node_modules/moment/**/*.js', included: false, served: true, watched: false},
{pattern: 'karma-test-shim.js', watched: false}, {pattern: 'karma-test-shim.js', watched: false},
@@ -27,7 +26,7 @@ module.exports = function (config) {
{pattern: './src/**/*.ts', included: false, served: true, watched: false} {pattern: './src/**/*.ts', included: false, served: true, watched: false}
], ],
webpack: webpackConfig, webpack: (config.mode === 'coverage') ? require('./webpack.coverage') : require('./webpack.test'),
webpackMiddleware: { webpackMiddleware: {
stats: 'errors-only' stats: 'errors-only'

View File

@@ -7,7 +7,7 @@
"clean": "rimraf dist node_modules typings bundles coverage .npmrc", "clean": "rimraf dist node_modules typings bundles coverage .npmrc",
"rimraf": "rimraf", "rimraf": "rimraf",
"build": "webpack --config webpack.build.js --progress --profile --bail", "build": "webpack --config webpack.build.js --progress --profile --bail",
"test": "karma start karma.conf.js --reporters mocha,coverage --single-run --component", "test": "karma start karma.conf.js --reporters mocha,coverage --single-run --mode coverage",
"test-browser": "karma start karma.conf.js --reporters kjhtml --component", "test-browser": "karma start karma.conf.js --reporters kjhtml --component",
"coverage": "npm run test && wsrv -o -p 9875 ./coverage/report", "coverage": "npm run test && wsrv -o -p 9875 ./coverage/report",
"prepublish" : "npm run build" "prepublish" : "npm run build"

View File

@@ -242,7 +242,6 @@ export let endErrorEvent = {
properties: [{}] properties: [{}]
}; };
export let endErrorEventActive = { export let endErrorEventActive = {
completed: false, completed: false,
current: true, current: true,

View File

@@ -52,7 +52,6 @@ export let intermediateCatchingTimeEventCompleted = {
eventDefinition: {type: 'timer'} eventDefinition: {type: 'timer'}
}; };
export let intermediateCatchingErrorEvent = { export let intermediateCatchingErrorEvent = {
id: 'sid-C05B7CB7-1CFD-4AE4-9E01-C2C91E35E5A7', id: 'sid-C05B7CB7-1CFD-4AE4-9E01-C2C91E35E5A7',
type: 'IntermediateCatchEvent', type: 'IntermediateCatchEvent',
@@ -127,7 +126,6 @@ export let intermediateCatchingSignalEventCompleted = {
eventDefinition: {type: 'signal'} eventDefinition: {type: 'signal'}
}; };
export let intermediateCatchingMessageEvent = { export let intermediateCatchingMessageEvent = {
id: 'sid-C05B7CB7-1CFD-4AE4-9E01-C2C91E35E5A7', id: 'sid-C05B7CB7-1CFD-4AE4-9E01-C2C91E35E5A7',
type: 'IntermediateCatchEvent', type: 'IntermediateCatchEvent',

View File

@@ -1624,7 +1624,6 @@ describe('Test ng2-activiti-diagrams ', () => {
}); });
})); }));
it('Should render the Start Message Event', async(() => { it('Should render the Start Message Event', async(() => {
component.onSuccess.subscribe((res) => { component.onSuccess.subscribe((res) => {
fixture.detectChanges(); fixture.detectChanges();

View File

@@ -1,17 +1 @@
const webpack = require('webpack'); module.exports = require('./config/webpack.build.js');
const webpackMerge = require('webpack-merge');
const commonConfig = require('./config/webpack.common.js');
module.exports = webpackMerge(commonConfig, {
output: {
filename: './bundles/[name].js',
library: '[name]',
libraryTarget: 'umd',
chunkFilename: '[id].chunk.js'
},
entry: {
"ng2-activiti-diagrams": "./index.ts"
}
});

View File

@@ -0,0 +1 @@
module.exports = require('./config/webpack.coverage.js');

View File

@@ -1,8 +1 @@
const webpack = require('webpack'); module.exports = require('./config/webpack.test.js');
const webpackMerge = require('webpack-merge');
const testConfig = require('./config/webpack.test.js');
module.exports = webpackMerge(testConfig, {
});

View File

@@ -480,12 +480,6 @@ Alternatively you can build component from sources with the following commands:
npm install npm install
npm run build npm run build
``` ```
### Build the files and keep watching for changes
```sh
$ npm run build:w
```
## Running unit tests ## Running unit tests

View File

@@ -0,0 +1,35 @@
const webpack = require('webpack');
const webpackMerge = require('webpack-merge');
const commonConfig = require('./webpack.common.js');
module.exports = webpackMerge(commonConfig, {
devtool: 'cheap-module-source-map',
externals: [
/^\@angular\//,
/^rxjs\//,
'moment',
'raphael',
'ng2-charts',
'alfresco-js-api',
'ng2-alfresco-core',
'ng2-alfresco-datatable',
'ng2-activiti-analytics',
'ng2-activiti-diagrams',
'ng2-activiti-form',
"ng2-activiti-tasklist",
'ng2-alfresco-documentlist'
],
output: {
filename: './bundles/[name].js',
library: '[name]',
libraryTarget: 'umd',
chunkFilename: '[id].chunk.js'
},
entry: {
"ng2-activiti-form": "./index.ts"
}
});

View File

@@ -4,6 +4,8 @@ const fs = require('fs');
const path = require('path'); const path = require('path');
const CopyWebpackPlugin = require('copy-webpack-plugin'); const CopyWebpackPlugin = require('copy-webpack-plugin');
const ENV = process.env.NODE_ENV = process.env.ENV = 'production';
module.exports = { module.exports = {
resolveLoader: { resolveLoader: {
@@ -13,22 +15,14 @@ module.exports = {
} }
}, },
// require those dependencies but don't bundle them resolve: {
externals: [ alias: {
/^\@angular\//, "ng2-alfresco-core": helpers.root('../ng2-alfresco-core/index.ts')
/^rxjs\//, },
'moment', extensions: ['.ts', '.js'],
'raphael', symlinks: false,
'ng2-charts', modules: [helpers.root('../../ng2-components'), helpers.root('node_modules')]
'alfresco-js-api', },
'ng2-alfresco-core',
'ng2-alfresco-datatable',
'ng2-activiti-analytics',
'ng2-activiti-diagrams',
'ng2-activiti-form',
"ng2-activiti-tasklist",
'ng2-alfresco-documentlist'
],
module: { module: {
rules: [ rules: [
@@ -38,19 +32,13 @@ module.exports = {
loader: 'source-map-loader', loader: 'source-map-loader',
exclude: [/node_modules/, /bundles/, /dist/, /demo/] exclude: [/node_modules/, /bundles/, /dist/, /demo/]
}, },
{
enforce: 'pre',
test: /\.ts$/,
use: 'source-map-loader',
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{ {
enforce: 'pre', enforce: 'pre',
test: /\.ts$/, test: /\.ts$/,
loader: 'tslint-loader', loader: 'tslint-loader',
options: { options: {
emitErrors: true, emitErrors: true,
configFile: path.resolve(__dirname, './assets/tslint.json') failOnHint: true
}, },
exclude: [/node_modules/, /bundles/, /dist/, /demo/] exclude: [/node_modules/, /bundles/, /dist/, /demo/]
}, },
@@ -102,18 +90,10 @@ module.exports = {
] ]
}, },
resolve: {
extensions: ['.ts', '.js'],
symlinks: false,
modules: [
'../ng2-components', 'node_modules'
]
},
plugins: [ plugins: [
new CopyWebpackPlugin([{ new CopyWebpackPlugin([{
from: `src/i18n/`, from: `src/i18n/`,
to: `bundles/assets/ng2-activiti-form/i18n/` to: `bundles/assets/ng2-alfresco-tag/i18n/`
}]), }]),
new webpack.NoEmitOnErrorsPlugin(), new webpack.NoEmitOnErrorsPlugin(),
@@ -124,11 +104,19 @@ module.exports = {
/angular(\\|\/)core(\\|\/)@angular/, /angular(\\|\/)core(\\|\/)@angular/,
helpers.root('./src'), helpers.root('./src'),
{} {}
) ),
new webpack.DefinePlugin({
'process.env': {
'ENV': JSON.stringify(ENV)
}
}),
new webpack.LoaderOptionsPlugin({
htmlLoader: {
minimize: false // workaround for ng2
}
})
], ],
devtool: 'cheap-module-source-map',
node: { node: {
fs: 'empty', fs: 'empty',
module: false module: false

View File

@@ -0,0 +1,22 @@
const webpack = require('webpack');
const webpackMerge = require('webpack-merge');
const testConfig = require('./webpack.test.js');
const helpers = require('./helpers');
module.exports = webpackMerge(testConfig, {
module: {
rules: [
{
enforce: 'post',
test: /^(?!(.*spec|index|.*mock|.*model|.*event)).*\.ts?$/,
include: [helpers.root('src')],
loader: 'istanbul-instrumenter-loader',
exclude: [
/node_modules/,
/test/
]
}
]
}
});

View File

@@ -1,90 +1,8 @@
const webpack = require('webpack');
const helpers = require('./helpers'); const helpers = require('./helpers');
const webpackMerge = require('webpack-merge');
const commonConfig = require('./webpack.common.js');
const ENV = process.env.NODE_ENV = process.env.ENV = 'production'; module.exports = webpackMerge(commonConfig, {
module.exports = { devtool: 'inline-source-map'
});
devtool: 'inline-source-map',
resolve: {
extensions: ['.ts', '.js'],
symlinks: false,
modules: [helpers.root('../ng2-components'), helpers.root('node_modules')]
},
module: {
rules: [
{
enforce: 'pre',
test: /\.js$/,
loader: 'source-map-loader',
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.ts$/,
loaders: ['ts-loader?' + JSON.stringify({ transpileOnly: true}), 'angular2-template-loader'],
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.html$/,
loader: 'html-loader',
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.css$/,
loader: ['to-string-loader', 'css-loader'],
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.component.scss$/,
use: ['to-string-loader', 'raw-loader', 'sass-loader'],
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico|pdf)$/,
loader: 'file-loader',
query: {
name: '[path][name].[ext]',
outputPath: (url)=> {
return url.replace('src', 'dist');
}
}
},
{
enforce: 'post',
test: /\.ts$/,
loader: 'istanbul-instrumenter-loader',
exclude: [
/node_modules/,
/test/
]
}
]
},
plugins: [
new webpack.NoEmitOnErrorsPlugin(),
new webpack.ContextReplacementPlugin(
/angular(\\|\/)core(\\|\/)@angular/,
helpers.root('./src'),
{}
),
new webpack.DefinePlugin({
'process.env': {
'ENV': JSON.stringify(ENV)
}
}),
new webpack.LoaderOptionsPlugin({
htmlLoader: {
minimize: false // workaround for ng2
}
})
],
node: {
fs: 'empty',
module: false
}
};

View File

@@ -8,16 +8,14 @@ module.exports = function (config) {
files: [ files: [
'./node_modules/hammerjs/hammer.js', './node_modules/hammerjs/hammer.js',
{pattern: './node_modules/@angular/material/prebuilt-themes/indigo-pink.css', included: true, watched: false},
//diagrams //diagrams
'./node_modules/chart.js/dist/Chart.js',
'./node_modules/alfresco-js-api/dist/alfresco-js-api.js', './node_modules/alfresco-js-api/dist/alfresco-js-api.js',
'./node_modules/raphael/raphael.js',
'./node_modules/moment/min/moment.min.js', './node_modules/moment/min/moment.min.js',
'./node_modules/md-date-time-picker/dist/js/mdDateTimePicker.js', './node_modules/md-date-time-picker/dist/js/mdDateTimePicker.js',
{pattern: './node_modules/ng2-translate/**/*.js', included: false, watched: false}, {pattern: './node_modules/ng2-translate/**/*.js', included: false, watched: false},
{pattern: './node_modules/ng2-charts/**/*.js', included: false, served: true, watched: false},
{pattern: './node_modules/md-date-time-picker/**/*.js', included: false, served: true, watched: false}, {pattern: './node_modules/md-date-time-picker/**/*.js', included: false, served: true, watched: false},
{pattern: './node_modules/moment/**/*.js', included: false, served: true, watched: false}, {pattern: './node_modules/moment/**/*.js', included: false, served: true, watched: false},
@@ -27,7 +25,7 @@ module.exports = function (config) {
{pattern: './src/**/*.ts', included: false, served: true, watched: false} {pattern: './src/**/*.ts', included: false, served: true, watched: false}
], ],
webpack: webpackConfig, webpack: (config.mode === 'coverage') ? require('./webpack.coverage') : require('./webpack.test'),
webpackMiddleware: { webpackMiddleware: {
stats: 'errors-only' stats: 'errors-only'

View File

@@ -7,7 +7,7 @@
"clean": "rimraf dist node_modules typings bundles coverage .npmrc", "clean": "rimraf dist node_modules typings bundles coverage .npmrc",
"rimraf": "rimraf", "rimraf": "rimraf",
"build": "webpack --config webpack.build.js --progress --profile --bail", "build": "webpack --config webpack.build.js --progress --profile --bail",
"test": "karma start karma.conf.js --reporters mocha,coverage --single-run --component", "test": "karma start karma.conf.js --reporters mocha,coverage --single-run --mode coverage",
"test-browser": "karma start karma.conf.js --reporters kjhtml --component", "test-browser": "karma start karma.conf.js --reporters kjhtml --component",
"coverage": "npm run test && wsrv -o -p 9875 ./coverage/report", "coverage": "npm run test && wsrv -o -p 9875 ./coverage/report",
"prepublish" : "npm run build" "prepublish" : "npm run build"

View File

@@ -20,6 +20,7 @@ import { DebugElement, SimpleChange } from '@angular/core';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { Observable } from 'rxjs/Rx'; import { Observable } from 'rxjs/Rx';
import { CoreModule, AlfrescoTranslationService, ContentService } from 'ng2-alfresco-core'; import { CoreModule, AlfrescoTranslationService, ContentService } from 'ng2-alfresco-core';
import { MdTabsModule } from '@angular/material';
import { ActivitiContent } from './activiti-content.component'; import { ActivitiContent } from './activiti-content.component';
import { FormService } from '../services/form.service'; import { FormService } from '../services/form.service';
@@ -66,6 +67,7 @@ describe('ActivitiContent', () => {
beforeEach(async(() => { beforeEach(async(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [
MdTabsModule,
CoreModule.forRoot() CoreModule.forRoot()
], ],
declarations: [ declarations: [

View File

@@ -18,6 +18,7 @@
import { SimpleChange } from '@angular/core'; import { SimpleChange } from '@angular/core';
import { ComponentFixture, TestBed, async } from '@angular/core/testing'; import { ComponentFixture, TestBed, async } from '@angular/core/testing';
import { Observable } from 'rxjs/Rx'; import { Observable } from 'rxjs/Rx';
import { MdTabsModule } from '@angular/material';
import { ActivitiStartForm } from './activiti-start-form.component'; import { ActivitiStartForm } from './activiti-start-form.component';
import { FormFieldComponent } from './form-field/form-field.component'; import { FormFieldComponent } from './form-field/form-field.component';
@@ -43,7 +44,9 @@ describe('ActivitiStartForm', () => {
beforeEach(async(() => { beforeEach(async(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [CoreModule.forRoot()], imports: [
MdTabsModule,
CoreModule.forRoot()],
declarations: [ declarations: [
ActivitiStartForm, ActivitiStartForm,
FormFieldComponent, FormFieldComponent,

View File

@@ -27,6 +27,7 @@ import { MASK_DIRECTIVE } from '../index';
import { FormFieldComponent } from './../../form-field/form-field.component'; import { FormFieldComponent } from './../../form-field/form-field.component';
import { ActivitiContent } from './../../activiti-content.component'; import { ActivitiContent } from './../../activiti-content.component';
import { fakeFormJson } from '../../../services/assets/widget-visibility.service.mock'; import { fakeFormJson } from '../../../services/assets/widget-visibility.service.mock';
import { MdTabsModule } from '@angular/material';
describe('ContainerWidget', () => { describe('ContainerWidget', () => {
@@ -133,7 +134,7 @@ describe('ContainerWidget', () => {
beforeEach(async(() => { beforeEach(async(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [CoreModule], imports: [CoreModule, MdTabsModule],
declarations: [FormFieldComponent, ActivitiContent, WIDGET_DIRECTIVES, MASK_DIRECTIVE] declarations: [FormFieldComponent, ActivitiContent, WIDGET_DIRECTIVES, MASK_DIRECTIVE]
}).compileComponents().then(() => { }).compileComponents().then(() => {
fixture = TestBed.createComponent(ContainerWidget); fixture = TestBed.createComponent(ContainerWidget);

View File

@@ -68,7 +68,7 @@ describe('FormFieldModel', () => {
expect(field.options).toBeDefined(); expect(field.options).toBeDefined();
expect(field.options.length).toBe(0); expect(field.options.length).toBe(0);
field = new FormFieldModel(new FormModel(), { options: null }); field = new FormFieldModel(new FormModel(), {options: null});
expect(field.options).toBeDefined(); expect(field.options).toBeDefined();
expect(field.options.length).toBe(0); expect(field.options.length).toBe(0);
}); });
@@ -77,13 +77,13 @@ describe('FormFieldModel', () => {
let field = new FormFieldModel(new FormModel(), null); let field = new FormFieldModel(new FormModel(), null);
expect(field.params).toEqual({}); expect(field.params).toEqual({});
field = new FormFieldModel(new FormModel(), { params: null }); field = new FormFieldModel(new FormModel(), {params: null});
expect(field.params).toEqual({}); expect(field.params).toEqual({});
}); });
it('should update form on every value change', () => { it('should update form on every value change', () => {
let form = new FormModel(); let form = new FormModel();
let field = new FormFieldModel(form, { id: 'field1' }); let field = new FormFieldModel(form, {id: 'field1'});
let value = 10; let value = 10;
spyOn(field, 'updateForm').and.callThrough(); spyOn(field, 'updateForm').and.callThrough();
@@ -105,7 +105,7 @@ describe('FormFieldModel', () => {
it('should take own readonly state if form is writable', () => { it('should take own readonly state if form is writable', () => {
let form = new FormModel(); let form = new FormModel();
let field = new FormFieldModel(form, { readOnly: true }); let field = new FormFieldModel(form, {readOnly: true});
expect(form.readOnly).toBeFalsy(); expect(form.readOnly).toBeFalsy();
expect(field.readOnly).toBeTruthy(); expect(field.readOnly).toBeTruthy();
@@ -241,8 +241,8 @@ describe('FormFieldModel', () => {
let field = new FormFieldModel(new FormModel(), { let field = new FormFieldModel(new FormModel(), {
type: FormFieldTypes.RADIO_BUTTONS, type: FormFieldTypes.RADIO_BUTTONS,
options: [ options: [
{ id: 'opt1', value: 'Option 1' }, {id: 'opt1', value: 'Option 1'},
{ id: 'opt2', value: 'Option 2' } {id: 'opt2', value: 'Option 2'}
], ],
value: 'opt2' value: 'opt2'
}); });
@@ -279,8 +279,8 @@ describe('FormFieldModel', () => {
id: 'dropdown-2', id: 'dropdown-2',
type: FormFieldTypes.DROPDOWN, type: FormFieldTypes.DROPDOWN,
options: [ options: [
{ id: 'opt1', name: 'Option 1' }, {id: 'opt1', name: 'Option 1'},
{ id: 'opt2', name: 'Option 2' } {id: 'opt2', name: 'Option 2'}
] ]
}); });
@@ -294,8 +294,8 @@ describe('FormFieldModel', () => {
id: 'radio-1', id: 'radio-1',
type: FormFieldTypes.RADIO_BUTTONS, type: FormFieldTypes.RADIO_BUTTONS,
options: [ options: [
{ id: 'opt1', value: 'Option 1' }, {id: 'opt1', value: 'Option 1'},
{ id: 'opt2', value: 'Option 2' } {id: 'opt2', value: 'Option 2'}
] ]
}); });
@@ -309,8 +309,8 @@ describe('FormFieldModel', () => {
id: 'radio-2', id: 'radio-2',
type: FormFieldTypes.RADIO_BUTTONS, type: FormFieldTypes.RADIO_BUTTONS,
options: [ options: [
{ id: 'opt1', value: 'Option 1' }, {id: 'opt1', value: 'Option 1'},
{ id: 'opt2', value: 'Option 2' } {id: 'opt2', value: 'Option 2'}
] ]
}); });
@@ -332,21 +332,21 @@ describe('FormFieldModel', () => {
}); });
}); });
it('should be able to check if the field has options available', () =>{ it('should be able to check if the field has options available', () => {
let form = new FormModel(); let form = new FormModel();
let field = new FormFieldModel(form, { let field = new FormFieldModel(form, {
id: 'dropdown-happy', id: 'dropdown-happy',
type: FormFieldTypes.DROPDOWN, type: FormFieldTypes.DROPDOWN,
options: [ options: [
{ id: 'opt1', name: 'Option 1' }, {id: 'opt1', name: 'Option 1'},
{ id: 'opt2', name: 'Option 2' } {id: 'opt2', name: 'Option 2'}
] ]
}); });
expect(field.hasOptions()).toBeTruthy(); expect(field.hasOptions()).toBeTruthy();
}); });
it('should return false if field has no options', () =>{ it('should return false if field has no options', () => {
let form = new FormModel(); let form = new FormModel();
let field = new FormFieldModel(form, { let field = new FormFieldModel(form, {
id: 'dropdown-sad', id: 'dropdown-sad',

View File

@@ -32,10 +32,9 @@ import { DateEditorComponent } from './editors/date/date.editor';
import { BooleanEditorComponent } from './editors/boolean/boolean.editor'; import { BooleanEditorComponent } from './editors/boolean/boolean.editor';
import { TextEditorComponent } from './editors/text/text.editor'; import { TextEditorComponent } from './editors/text/text.editor';
let fakeFormField = { let fakeFormField = {
id: "fake-dynamic-table", id: 'fake-dynamic-table',
name: "fake-label", name: 'fake-label',
value: [{ 1: 1, 2: 2, 3: 4 }], value: [{ 1: 1, 2: 2, 3: 4 }],
required: false, required: false,
readOnly: false, readOnly: false,

View File

@@ -26,6 +26,7 @@ import { MASK_DIRECTIVE } from '../index';
import { FormFieldComponent } from './../../form-field/form-field.component'; import { FormFieldComponent } from './../../form-field/form-field.component';
import { ActivitiContent } from './../../activiti-content.component'; import { ActivitiContent } from './../../activiti-content.component';
import { CoreModule } from 'ng2-alfresco-core'; import { CoreModule } from 'ng2-alfresco-core';
import { MdTabsModule } from '@angular/material';
describe('TabsWidget', () => { describe('TabsWidget', () => {
@@ -104,7 +105,7 @@ describe('TabsWidget', () => {
beforeEach(async(() => { beforeEach(async(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [CoreModule], imports: [CoreModule, MdTabsModule],
declarations: [FormFieldComponent, ActivitiContent, WIDGET_DIRECTIVES, MASK_DIRECTIVE] declarations: [FormFieldComponent, ActivitiContent, WIDGET_DIRECTIVES, MASK_DIRECTIVE]
}).compileComponents().then(() => { }).compileComponents().then(() => {
fixture = TestBed.createComponent(TabsWidget); fixture = TestBed.createComponent(TabsWidget);
@@ -140,22 +141,17 @@ describe('TabsWidget', () => {
fixture.detectChanges(); fixture.detectChanges();
fixture.whenStable() fixture.whenStable()
.then(() => { .then(() => {
expect(element.querySelector('#tab-id-visible')).toBeDefined();
expect(element.querySelector('#tab-id-visible')).not.toBeNull();
expect(element.querySelector('#tab-id-invisible')).toBeNull();
expect(element.querySelector('#title-tab-id-visible')).toBeDefined();
expect(element.querySelector('#title-tab-id-visible').innerHTML).toContain('tab-title-visible'); expect(element.querySelector('#title-tab-id-visible').innerHTML).toContain('tab-title-visible');
}); });
}); });
it('should show tab when it became visible', async(() => { xit('should show tab when it became visible', async(() => {
fixture.detectChanges(); fixture.detectChanges();
tabWidgetComponent.formTabChanged.subscribe((res) => { tabWidgetComponent.formTabChanged.subscribe((res) => {
tabWidgetComponent.tabs[1].isVisible = true; tabWidgetComponent.tabs[1].isVisible = true;
fixture.detectChanges(); fixture.detectChanges();
fixture.whenStable() fixture.whenStable()
.then(() => { .then(() => {
expect(element.querySelector('#tab-id-invisible')).not.toBeNull();
expect(element.querySelector('#title-tab-id-invisible').innerHTML).toContain('tab-title-invisible'); expect(element.querySelector('#title-tab-id-invisible').innerHTML).toContain('tab-title-invisible');
}); });
}); });

View File

@@ -42,7 +42,6 @@ describe('TextWidget', () => {
let textWidget: TextWidget; let textWidget: TextWidget;
let fixture: ComponentFixture<TextWidget>; let fixture: ComponentFixture<TextWidget>;
let element: HTMLInputElement; let element: HTMLInputElement;
let componentHandler;
beforeEach(async(() => { beforeEach(async(() => {
componentHandler = jasmine.createSpyObj('componentHandler', ['upgradeAllRegistered', 'upgradeElement']); componentHandler = jasmine.createSpyObj('componentHandler', ['upgradeAllRegistered', 'upgradeElement']);
@@ -161,8 +160,8 @@ describe('TextWidget', () => {
fixture.whenStable().then(() => { fixture.whenStable().then(() => {
fixture.detectChanges(); fixture.detectChanges();
let inputElement: HTMLInputElement = <HTMLInputElement>element.querySelector('#text-id'); let textEle: HTMLInputElement = <HTMLInputElement>element.querySelector('#text-id');
expect(inputElement.value).toBe('1'); expect(textEle.value).toBe('1');
}); });
})); }));
@@ -177,8 +176,8 @@ describe('TextWidget', () => {
fixture.whenStable().then(() => { fixture.whenStable().then(() => {
fixture.detectChanges(); fixture.detectChanges();
let inputElement: HTMLInputElement = <HTMLInputElement>element.querySelector('#text-id'); let textEle: HTMLInputElement = <HTMLInputElement>element.querySelector('#text-id');
expect(inputElement.value).toBe('12-345,67%'); expect(textEle.value).toBe('12-345,67%');
}); });
})); }));
}); });
@@ -192,7 +191,7 @@ describe('TextWidget', () => {
id: 'text-id', id: 'text-id',
name: 'text-name', name: 'text-name',
value: '', value: '',
params: { existingColspan: 1, maxColspan: 2, inputMask: "#.##0,00%", inputMaskReversed: true }, params: { existingColspan: 1, maxColspan: 2, inputMask: '#.##0,00%', inputMaskReversed: true },
type: FormFieldTypes.TEXT, type: FormFieldTypes.TEXT,
readOnly: false readOnly: false
}); });
@@ -217,8 +216,8 @@ describe('TextWidget', () => {
fixture.whenStable().then(() => { fixture.whenStable().then(() => {
fixture.detectChanges(); fixture.detectChanges();
let inputElement: HTMLInputElement = <HTMLInputElement>element.querySelector('#text-id'); let textEle: HTMLInputElement = <HTMLInputElement>element.querySelector('#text-id');
expect(inputElement.value).toBe('12,34%'); expect(textEle.value).toBe('12,34%');
}); });
})); }));
}); });

View File

@@ -1,17 +1 @@
const webpack = require('webpack'); module.exports = require('./config/webpack.build.js');
const webpackMerge = require('webpack-merge');
const commonConfig = require('./config/webpack.common.js');
module.exports = webpackMerge(commonConfig, {
output: {
filename: './bundles/[name].js',
library: '[name]',
libraryTarget: 'umd',
chunkFilename: '[id].chunk.js'
},
entry: {
"ng2-activiti-form": "./index.ts"
}
});

View File

@@ -0,0 +1 @@
module.exports = require('./config/webpack.coverage.js');

View File

@@ -1,8 +1 @@
const webpack = require('webpack'); module.exports = require('./config/webpack.test.js');
const webpackMerge = require('webpack-merge');
const testConfig = require('./config/webpack.test.js');
module.exports = webpackMerge(testConfig, {
});

View File

@@ -443,12 +443,6 @@ npm install
npm run build npm run build
``` ```
### Build the files and keep watching for changes
```sh
$ npm run build:w
```
## Running unit tests ## Running unit tests
```sh ```sh

View File

@@ -0,0 +1,35 @@
const webpack = require('webpack');
const webpackMerge = require('webpack-merge');
const commonConfig = require('./webpack.common.js');
module.exports = webpackMerge(commonConfig, {
devtool: 'cheap-module-source-map',
externals: [
/^\@angular\//,
/^rxjs\//,
'moment',
'raphael',
'ng2-charts',
'alfresco-js-api',
'ng2-alfresco-core',
'ng2-alfresco-datatable',
'ng2-activiti-analytics',
'ng2-activiti-diagrams',
'ng2-activiti-form',
"ng2-activiti-tasklist",
'ng2-alfresco-documentlist'
],
output: {
filename: './bundles/[name].js',
library: '[name]',
libraryTarget: 'umd',
chunkFilename: '[id].chunk.js'
},
entry: {
"ng2-activiti-processlist": "./index.ts"
}
});

View File

@@ -4,6 +4,8 @@ const fs = require('fs');
const path = require('path'); const path = require('path');
const CopyWebpackPlugin = require('copy-webpack-plugin'); const CopyWebpackPlugin = require('copy-webpack-plugin');
const ENV = process.env.NODE_ENV = process.env.ENV = 'production';
module.exports = { module.exports = {
resolveLoader: { resolveLoader: {
@@ -13,22 +15,17 @@ module.exports = {
} }
}, },
// require those dependencies but don't bundle them resolve: {
externals: [ alias: {
/^\@angular\//, "ng2-alfresco-core": helpers.root('../ng2-alfresco-core/index.ts'),
/^rxjs\//, "ng2-alfresco-datatable": helpers.root('../ng2-alfresco-datatable/index.ts'),
'moment', "ng2-activiti-tasklist": helpers.root('../ng2-activiti-tasklist/index.ts'),
'raphael', "ng2-activiti-form": helpers.root('../ng2-activiti-form/index.ts')
'ng2-charts', },
'alfresco-js-api', extensions: ['.ts', '.js'],
'ng2-alfresco-core', symlinks: false,
'ng2-alfresco-datatable', modules: [helpers.root('../../ng2-components'), helpers.root('node_modules')]
'ng2-activiti-analytics', },
'ng2-activiti-diagrams',
'ng2-activiti-form',
"ng2-activiti-tasklist",
'ng2-alfresco-documentlist'
],
module: { module: {
rules: [ rules: [
@@ -38,19 +35,13 @@ module.exports = {
loader: 'source-map-loader', loader: 'source-map-loader',
exclude: [/node_modules/, /bundles/, /dist/, /demo/] exclude: [/node_modules/, /bundles/, /dist/, /demo/]
}, },
{
enforce: 'pre',
test: /\.ts$/,
use: 'source-map-loader',
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{ {
enforce: 'pre', enforce: 'pre',
test: /\.ts$/, test: /\.ts$/,
loader: 'tslint-loader', loader: 'tslint-loader',
options: { options: {
emitErrors: true, emitErrors: true,
configFile: path.resolve(__dirname, './assets/tslint.json') failOnHint: true
}, },
exclude: [/node_modules/, /bundles/, /dist/, /demo/] exclude: [/node_modules/, /bundles/, /dist/, /demo/]
}, },
@@ -102,18 +93,10 @@ module.exports = {
] ]
}, },
resolve: {
extensions: ['.ts', '.js'],
symlinks: false,
modules: [
'../ng2-components', 'node_modules'
]
},
plugins: [ plugins: [
new CopyWebpackPlugin([{ new CopyWebpackPlugin([{
from: `src/i18n/`, from: `src/i18n/`,
to: `bundles/assets/ng2-activiti-processlist/i18n/` to: `bundles/assets/ng2-alfresco-tag/i18n/`
}]), }]),
new webpack.NoEmitOnErrorsPlugin(), new webpack.NoEmitOnErrorsPlugin(),
@@ -124,11 +107,19 @@ module.exports = {
/angular(\\|\/)core(\\|\/)@angular/, /angular(\\|\/)core(\\|\/)@angular/,
helpers.root('./src'), helpers.root('./src'),
{} {}
) ),
new webpack.DefinePlugin({
'process.env': {
'ENV': JSON.stringify(ENV)
}
}),
new webpack.LoaderOptionsPlugin({
htmlLoader: {
minimize: false // workaround for ng2
}
})
], ],
devtool: 'cheap-module-source-map',
node: { node: {
fs: 'empty', fs: 'empty',
module: false module: false

View File

@@ -0,0 +1,22 @@
const webpack = require('webpack');
const webpackMerge = require('webpack-merge');
const testConfig = require('./webpack.test.js');
const helpers = require('./helpers');
module.exports = webpackMerge(testConfig, {
module: {
rules: [
{
enforce: 'post',
test: /^(?!(.*spec|index|.*mock|.*model|.*event)).*\.ts?$/,
include: [helpers.root('src')],
loader: 'istanbul-instrumenter-loader',
exclude: [
/node_modules/,
/test/
]
}
]
}
});

View File

@@ -1,90 +1,8 @@
const webpack = require('webpack');
const helpers = require('./helpers'); const helpers = require('./helpers');
const webpackMerge = require('webpack-merge');
const commonConfig = require('./webpack.common.js');
const ENV = process.env.NODE_ENV = process.env.ENV = 'production'; module.exports = webpackMerge(commonConfig, {
module.exports = { devtool: 'inline-source-map'
});
devtool: 'inline-source-map',
resolve: {
extensions: ['.ts', '.js'],
symlinks: false,
modules: [helpers.root('../ng2-components'), helpers.root('node_modules')]
},
module: {
rules: [
{
enforce: 'pre',
test: /\.js$/,
loader: 'source-map-loader',
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.ts$/,
loaders: ['ts-loader?' + JSON.stringify({ transpileOnly: true}), 'angular2-template-loader'],
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.html$/,
loader: 'html-loader',
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.css$/,
loader: ['to-string-loader', 'css-loader'],
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.component.scss$/,
use: ['to-string-loader', 'raw-loader', 'sass-loader'],
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico|pdf)$/,
loader: 'file-loader',
query: {
name: '[path][name].[ext]',
outputPath: (url)=> {
return url.replace('src', 'dist');
}
}
},
{
enforce: 'post',
test: /\.ts$/,
loader: 'istanbul-instrumenter-loader',
exclude: [
/node_modules/,
/test/
]
}
]
},
plugins: [
new webpack.NoEmitOnErrorsPlugin(),
new webpack.ContextReplacementPlugin(
/angular(\\|\/)core(\\|\/)@angular/,
helpers.root('./src'),
{}
),
new webpack.DefinePlugin({
'process.env': {
'ENV': JSON.stringify(ENV)
}
}),
new webpack.LoaderOptionsPlugin({
htmlLoader: {
minimize: false // workaround for ng2
}
})
],
node: {
fs: 'empty',
module: false
}
};

View File

@@ -8,16 +8,14 @@ module.exports = function (config) {
files: [ files: [
'./node_modules/hammerjs/hammer.js', './node_modules/hammerjs/hammer.js',
{pattern: './node_modules/@angular/material/prebuilt-themes/indigo-pink.css', included: true, watched: false},
//diagrams //diagrams
'./node_modules/chart.js/dist/Chart.js',
'./node_modules/alfresco-js-api/dist/alfresco-js-api.js', './node_modules/alfresco-js-api/dist/alfresco-js-api.js',
'./node_modules/raphael/raphael.js',
'./node_modules/moment/min/moment.min.js', './node_modules/moment/min/moment.min.js',
'./node_modules/md-date-time-picker/dist/js/mdDateTimePicker.js', './node_modules/md-date-time-picker/dist/js/mdDateTimePicker.js',
{pattern: './node_modules/ng2-translate/**/*.js', included: false, watched: false}, {pattern: './node_modules/ng2-translate/**/*.js', included: false, watched: false},
{pattern: './node_modules/ng2-charts/**/*.js', included: false, served: true, watched: false},
{pattern: './node_modules/md-date-time-picker/**/*.js', included: false, served: true, watched: false}, {pattern: './node_modules/md-date-time-picker/**/*.js', included: false, served: true, watched: false},
{pattern: './node_modules/moment/**/*.js', included: false, served: true, watched: false}, {pattern: './node_modules/moment/**/*.js', included: false, served: true, watched: false},
@@ -27,7 +25,7 @@ module.exports = function (config) {
{pattern: './src/**/*.ts', included: false, served: true, watched: false} {pattern: './src/**/*.ts', included: false, served: true, watched: false}
], ],
webpack: webpackConfig, webpack: (config.mode === 'coverage') ? require('./webpack.coverage') : require('./webpack.test'),
webpackMiddleware: { webpackMiddleware: {
stats: 'errors-only' stats: 'errors-only'

View File

@@ -7,7 +7,7 @@
"clean": "rimraf dist node_modules typings bundles coverage .npmrc", "clean": "rimraf dist node_modules typings bundles coverage .npmrc",
"rimraf": "rimraf", "rimraf": "rimraf",
"build": "webpack --config webpack.build.js --progress --profile --bail", "build": "webpack --config webpack.build.js --progress --profile --bail",
"test": "karma start karma.conf.js --reporters mocha,coverage --single-run --component", "test": "karma start karma.conf.js --reporters mocha,coverage --single-run --mode coverage",
"test-browser": "karma start karma.conf.js --reporters kjhtml --component", "test-browser": "karma start karma.conf.js --reporters kjhtml --component",
"coverage": "npm run test && wsrv -o -p 9875 ./coverage/report", "coverage": "npm run test && wsrv -o -p 9875 ./coverage/report",
"prepublish" : "npm run build" "prepublish" : "npm run build"

View File

@@ -61,7 +61,7 @@ export let processEnded = new ProcessInstance({
lastName: 'Jones', lastName: 'Jones',
email: 'bob@app.activiti.com' email: 'bob@app.activiti.com'
}, },
ended: '2016-11-11T03:37:30.010+0000', ended: '2016-11-11T03:37:30.010+0000'
}); });
export let exampleProcessNoName = new ProcessInstance({ export let exampleProcessNoName = new ProcessInstance({

View File

@@ -17,7 +17,6 @@
import { SimpleChange } from '@angular/core'; import { SimpleChange } from '@angular/core';
import { ComponentFixture, TestBed, async } from '@angular/core/testing'; import { ComponentFixture, TestBed, async } from '@angular/core/testing';
import { By } from '@angular/platform-browser';
import { Observable } from 'rxjs/Rx'; import { Observable } from 'rxjs/Rx';
import { AlfrescoTranslationService, CoreModule } from 'ng2-alfresco-core'; import { AlfrescoTranslationService, CoreModule } from 'ng2-alfresco-core';

View File

@@ -22,7 +22,7 @@ import { Observable } from 'rxjs/Rx';
import { AlfrescoTranslationService, CoreModule } from 'ng2-alfresco-core'; import { AlfrescoTranslationService, CoreModule } from 'ng2-alfresco-core';
import { ActivitiContentService } from 'ng2-activiti-form'; import { ActivitiContentService } from 'ng2-activiti-form';
import { DataTableModule, ObjectDataRow, DataRowEvent, ObjectDataTableAdapter, DataSorting } from 'ng2-alfresco-datatable'; import { DataTableModule } from 'ng2-alfresco-datatable';
import { ActivitiProcessAttachmentListComponent } from './activiti-process-attachment-list.component'; import { ActivitiProcessAttachmentListComponent } from './activiti-process-attachment-list.component';
import { TranslationMock } from './../assets/translation.service.mock'; import { TranslationMock } from './../assets/translation.service.mock';

View File

@@ -128,5 +128,4 @@ describe('ActivitiProcessInstanceHeader', () => {
expect(formValueEl).toBeNull(); expect(formValueEl).toBeNull();
}); });
}); });

View File

@@ -26,7 +26,6 @@ import { TranslationMock } from './../assets/translation.service.mock';
import { newProcess, fakeProcessDefs, fakeProcessDefWithForm, taskFormMock } from './../assets/activiti-start-process.component.mock'; import { newProcess, fakeProcessDefs, fakeProcessDefWithForm, taskFormMock } from './../assets/activiti-start-process.component.mock';
import { ActivitiStartProcessInstance } from './activiti-start-process.component'; import { ActivitiStartProcessInstance } from './activiti-start-process.component';
import { ActivitiProcessService } from '../services/activiti-process.service'; import { ActivitiProcessService } from '../services/activiti-process.service';
import { RestVariable } from 'alfresco-js-api';
describe('ActivitiStartProcessInstance', () => { describe('ActivitiStartProcessInstance', () => {
@@ -211,7 +210,7 @@ describe('ActivitiStartProcessInstance', () => {
let variable: any = {}; let variable: any = {};
variable.name = 'nodeId'; variable.name = 'nodeId';
variable.value ='id'; variable.value = 'id';
inputProcessVariable.push(variable); inputProcessVariable.push(variable);

View File

@@ -1,17 +1 @@
const webpack = require('webpack'); module.exports = require('./config/webpack.build.js');
const webpackMerge = require('webpack-merge');
const commonConfig = require('./config/webpack.common.js');
module.exports = webpackMerge(commonConfig, {
output: {
filename: './bundles/[name].js',
library: '[name]',
libraryTarget: 'umd',
chunkFilename: '[id].chunk.js'
},
entry: {
"ng2-activiti-processlist": "./index.ts"
}
});

View File

@@ -0,0 +1 @@
module.exports = require('./config/webpack.coverage.js');

View File

@@ -1,8 +1 @@
const webpack = require('webpack'); module.exports = require('./config/webpack.test.js');
const webpackMerge = require('webpack-merge');
const testConfig = require('./config/webpack.test.js');
module.exports = webpackMerge(testConfig, {
});

View File

@@ -463,12 +463,6 @@ npm install
npm run build npm run build
``` ```
### Build the files and keep watching for changes
```sh
$ npm run build:w
```
## Running unit tests ## Running unit tests
```sh ```sh

View File

@@ -0,0 +1,35 @@
const webpack = require('webpack');
const webpackMerge = require('webpack-merge');
const commonConfig = require('./webpack.common.js');
module.exports = webpackMerge(commonConfig, {
devtool: 'cheap-module-source-map',
externals: [
/^\@angular\//,
/^rxjs\//,
'moment',
'raphael',
'ng2-charts',
'alfresco-js-api',
'ng2-alfresco-core',
'ng2-alfresco-datatable',
'ng2-activiti-analytics',
'ng2-activiti-diagrams',
'ng2-activiti-form',
"ng2-activiti-tasklist",
'ng2-alfresco-documentlist'
],
output: {
filename: './bundles/[name].js',
library: '[name]',
libraryTarget: 'umd',
chunkFilename: '[id].chunk.js'
},
entry: {
"ng2-activiti-tasklist": "./index.ts"
}
});

View File

@@ -4,6 +4,8 @@ const fs = require('fs');
const path = require('path'); const path = require('path');
const CopyWebpackPlugin = require('copy-webpack-plugin'); const CopyWebpackPlugin = require('copy-webpack-plugin');
const ENV = process.env.NODE_ENV = process.env.ENV = 'production';
module.exports = { module.exports = {
resolveLoader: { resolveLoader: {
@@ -13,22 +15,9 @@ module.exports = {
} }
}, },
// require those dependencies but don't bundle them resolve: {
externals: [ extensions: ['.ts', '.js']
/^\@angular\//, },
/^rxjs\//,
'moment',
'raphael',
'ng2-charts',
'alfresco-js-api',
'ng2-alfresco-core',
'ng2-alfresco-datatable',
'ng2-activiti-analytics',
'ng2-activiti-diagrams',
'ng2-activiti-form',
"ng2-activiti-tasklist",
'ng2-alfresco-documentlist'
],
module: { module: {
rules: [ rules: [
@@ -38,19 +27,13 @@ module.exports = {
loader: 'source-map-loader', loader: 'source-map-loader',
exclude: [/node_modules/, /bundles/, /dist/, /demo/] exclude: [/node_modules/, /bundles/, /dist/, /demo/]
}, },
{
enforce: 'pre',
test: /\.ts$/,
use: 'source-map-loader',
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{ {
enforce: 'pre', enforce: 'pre',
test: /\.ts$/, test: /\.ts$/,
loader: 'tslint-loader', loader: 'tslint-loader',
options: { options: {
emitErrors: true, emitErrors: true,
configFile: path.resolve(__dirname, './assets/tslint.json') failOnHint: true
}, },
exclude: [/node_modules/, /bundles/, /dist/, /demo/] exclude: [/node_modules/, /bundles/, /dist/, /demo/]
}, },
@@ -102,18 +85,10 @@ module.exports = {
] ]
}, },
resolve: {
extensions: ['.ts', '.js'],
symlinks: false,
modules: [
'../ng2-components', 'node_modules'
]
},
plugins: [ plugins: [
new CopyWebpackPlugin([{ new CopyWebpackPlugin([{
from: `src/i18n/`, from: `src/i18n/`,
to: `bundles/assets/ng2-activiti-tasklist/i18n/` to: `bundles/assets/ng2-alfresco-tag/i18n/`
}]), }]),
new webpack.NoEmitOnErrorsPlugin(), new webpack.NoEmitOnErrorsPlugin(),
@@ -124,11 +99,19 @@ module.exports = {
/angular(\\|\/)core(\\|\/)@angular/, /angular(\\|\/)core(\\|\/)@angular/,
helpers.root('./src'), helpers.root('./src'),
{} {}
) ),
new webpack.DefinePlugin({
'process.env': {
'ENV': JSON.stringify(ENV)
}
}),
new webpack.LoaderOptionsPlugin({
htmlLoader: {
minimize: false // workaround for ng2
}
})
], ],
devtool: 'cheap-module-source-map',
node: { node: {
fs: 'empty', fs: 'empty',
module: false module: false

View File

@@ -0,0 +1,22 @@
const webpack = require('webpack');
const webpackMerge = require('webpack-merge');
const testConfig = require('./webpack.test.js');
const helpers = require('./helpers');
module.exports = webpackMerge(testConfig, {
module: {
rules: [
{
enforce: 'post',
test: /^(?!(.*spec|index|.*mock|.*model|.*event)).*\.ts?$/,
include: [helpers.root('src')],
loader: 'istanbul-instrumenter-loader',
exclude: [
/node_modules/,
/test/
]
}
]
}
});

View File

@@ -1,90 +1,18 @@
const webpack = require('webpack');
const helpers = require('./helpers'); const helpers = require('./helpers');
const webpackMerge = require('webpack-merge');
const commonConfig = require('./webpack.common.js');
const ENV = process.env.NODE_ENV = process.env.ENV = 'production'; module.exports = webpackMerge(commonConfig, {
module.exports = {
devtool: 'inline-source-map', devtool: 'inline-source-map',
resolve: { resolve: {
alias: {
"ng2-alfresco-core": helpers.root('../ng2-alfresco-core/index.ts'),
"ng2-alfresco-datatable": helpers.root('../ng2-alfresco-datatable/index.ts')
},
extensions: ['.ts', '.js'], extensions: ['.ts', '.js'],
symlinks: false, symlinks: false,
modules: [helpers.root('../ng2-components'), helpers.root('node_modules')] modules: [helpers.root('../../ng2-components'), helpers.root('node_modules')]
},
module: {
rules: [
{
enforce: 'pre',
test: /\.js$/,
loader: 'source-map-loader',
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.ts$/,
loaders: ['ts-loader?' + JSON.stringify({ transpileOnly: true}), 'angular2-template-loader'],
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.html$/,
loader: 'html-loader',
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.css$/,
loader: ['to-string-loader', 'css-loader'],
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.component.scss$/,
use: ['to-string-loader', 'raw-loader', 'sass-loader'],
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico|pdf)$/,
loader: 'file-loader',
query: {
name: '[path][name].[ext]',
outputPath: (url)=> {
return url.replace('src', 'dist');
}
}
},
{
enforce: 'post',
test: /\.ts$/,
loader: 'istanbul-instrumenter-loader',
exclude: [
/node_modules/,
/test/
]
}
]
},
plugins: [
new webpack.NoEmitOnErrorsPlugin(),
new webpack.ContextReplacementPlugin(
/angular(\\|\/)core(\\|\/)@angular/,
helpers.root('./src'),
{}
),
new webpack.DefinePlugin({
'process.env': {
'ENV': JSON.stringify(ENV)
}
}),
new webpack.LoaderOptionsPlugin({
htmlLoader: {
minimize: false // workaround for ng2
}
})
],
node: {
fs: 'empty',
module: false
} }
}; });

View File

@@ -8,6 +8,7 @@ module.exports = function (config) {
files: [ files: [
'./node_modules/hammerjs/hammer.js', './node_modules/hammerjs/hammer.js',
{pattern: './node_modules/@angular/material/prebuilt-themes/indigo-pink.css', included: true, watched: false},
//diagrams //diagrams
'./node_modules/chart.js/dist/Chart.js', './node_modules/chart.js/dist/Chart.js',
@@ -27,7 +28,7 @@ module.exports = function (config) {
{pattern: './src/**/*.ts', included: false, served: true, watched: false} {pattern: './src/**/*.ts', included: false, served: true, watched: false}
], ],
webpack: webpackConfig, webpack: (config.mode === 'coverage') ? require('./webpack.coverage') : require('./webpack.test'),
webpackMiddleware: { webpackMiddleware: {
stats: 'errors-only' stats: 'errors-only'

View File

@@ -7,7 +7,7 @@
"clean": "rimraf dist node_modules typings bundles coverage .npmrc", "clean": "rimraf dist node_modules typings bundles coverage .npmrc",
"rimraf": "rimraf", "rimraf": "rimraf",
"build": "webpack --config webpack.build.js --progress --profile --bail", "build": "webpack --config webpack.build.js --progress --profile --bail",
"test": "karma start karma.conf.js --reporters mocha,coverage --single-run --component", "test": "karma start karma.conf.js --reporters mocha,coverage --single-run --mode coverage",
"test-browser": "karma start karma.conf.js --reporters kjhtml --component", "test-browser": "karma start karma.conf.js --reporters kjhtml --component",
"coverage": "npm run test && wsrv -o -p 9875 ./coverage/report", "coverage": "npm run test && wsrv -o -p 9875 ./coverage/report",
"prepublish" : "npm run build" "prepublish" : "npm run build"

View File

@@ -17,7 +17,6 @@
import { SimpleChange } from '@angular/core'; import { SimpleChange } from '@angular/core';
import { ComponentFixture, TestBed, async } from '@angular/core/testing'; import { ComponentFixture, TestBed, async } from '@angular/core/testing';
import { By } from '@angular/platform-browser';
import { Observable } from 'rxjs/Rx'; import { Observable } from 'rxjs/Rx';
import { AlfrescoTranslationService, CoreModule } from 'ng2-alfresco-core'; import { AlfrescoTranslationService, CoreModule } from 'ng2-alfresco-core';

View File

@@ -1,17 +1 @@
const webpack = require('webpack'); module.exports = require('./config/webpack.build.js');
const webpackMerge = require('webpack-merge');
const commonConfig = require('./config/webpack.common.js');
module.exports = webpackMerge(commonConfig, {
output: {
filename: './bundles/[name].js',
library: '[name]',
libraryTarget: 'umd',
chunkFilename: '[id].chunk.js'
},
entry: {
"ng2-activiti-tasklist": "./index.ts"
}
});

View File

@@ -0,0 +1 @@
module.exports = require('./config/webpack.coverage.js');

View File

@@ -1,8 +1 @@
const webpack = require('webpack'); module.exports = require('./config/webpack.test.js');
const webpackMerge = require('webpack-merge');
const testConfig = require('./config/webpack.test.js');
module.exports = webpackMerge(testConfig, {
});

View File

@@ -0,0 +1,35 @@
const webpack = require('webpack');
const webpackMerge = require('webpack-merge');
const commonConfig = require('./webpack.common.js');
module.exports = webpackMerge(commonConfig, {
devtool: 'cheap-module-source-map',
externals: [
/^\@angular\//,
/^rxjs\//,
'moment',
'raphael',
'ng2-charts',
'alfresco-js-api',
'ng2-alfresco-core',
'ng2-alfresco-datatable',
'ng2-activiti-analytics',
'ng2-activiti-diagrams',
'ng2-activiti-form',
"ng2-activiti-tasklist",
'ng2-alfresco-documentlist'
],
output: {
filename: './bundles/[name].js',
library: '[name]',
libraryTarget: 'umd',
chunkFilename: '[id].chunk.js'
},
entry: {
"ng2-alfresco-core": "./index.ts"
}
});

View File

@@ -4,6 +4,8 @@ const fs = require('fs');
const path = require('path'); const path = require('path');
const CopyWebpackPlugin = require('copy-webpack-plugin'); const CopyWebpackPlugin = require('copy-webpack-plugin');
const ENV = process.env.NODE_ENV = process.env.ENV = 'production';
module.exports = { module.exports = {
resolveLoader: { resolveLoader: {
@@ -13,22 +15,11 @@ module.exports = {
} }
}, },
// require those dependencies but don't bundle them resolve: {
externals: [ extensions: ['.ts', '.js'],
/^\@angular\//, symlinks: false,
/^rxjs\//, modules: [helpers.root('../../ng2-components'), helpers.root('node_modules')]
'moment', },
'raphael',
'ng2-charts',
'alfresco-js-api',
'ng2-alfresco-core',
'ng2-alfresco-datatable',
'ng2-activiti-analytics',
'ng2-activiti-diagrams',
'ng2-activiti-form',
"ng2-activiti-tasklist",
'ng2-alfresco-documentlist'
],
module: { module: {
rules: [ rules: [
@@ -38,19 +29,13 @@ module.exports = {
loader: 'source-map-loader', loader: 'source-map-loader',
exclude: [/node_modules/, /bundles/, /dist/, /demo/] exclude: [/node_modules/, /bundles/, /dist/, /demo/]
}, },
{
enforce: 'pre',
test: /\.ts$/,
use: 'source-map-loader',
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{ {
enforce: 'pre', enforce: 'pre',
test: /\.ts$/, test: /\.ts$/,
loader: 'tslint-loader', loader: 'tslint-loader',
options: { options: {
emitErrors: true, emitErrors: true,
configFile: path.resolve(__dirname, './assets/tslint.json') failOnHint: true
}, },
exclude: [/node_modules/, /bundles/, /dist/, /demo/] exclude: [/node_modules/, /bundles/, /dist/, /demo/]
}, },
@@ -102,18 +87,10 @@ module.exports = {
] ]
}, },
resolve: {
extensions: ['.ts', '.js'],
symlinks: false,
modules: [
'../ng2-components', 'node_modules'
]
},
plugins: [ plugins: [
new CopyWebpackPlugin([{ new CopyWebpackPlugin([{
from: `src/i18n/`, from: `src/i18n/`,
to: `bundles/assets/i18n/` to: `bundles/assets/ng2-alfresco-tag/i18n/`
}]), }]),
new webpack.NoEmitOnErrorsPlugin(), new webpack.NoEmitOnErrorsPlugin(),
@@ -124,11 +101,19 @@ module.exports = {
/angular(\\|\/)core(\\|\/)@angular/, /angular(\\|\/)core(\\|\/)@angular/,
helpers.root('./src'), helpers.root('./src'),
{} {}
) ),
new webpack.DefinePlugin({
'process.env': {
'ENV': JSON.stringify(ENV)
}
}),
new webpack.LoaderOptionsPlugin({
htmlLoader: {
minimize: false // workaround for ng2
}
})
], ],
devtool: 'cheap-module-source-map',
node: { node: {
fs: 'empty', fs: 'empty',
module: false module: false

View File

@@ -0,0 +1,22 @@
const webpack = require('webpack');
const webpackMerge = require('webpack-merge');
const testConfig = require('./webpack.test.js');
const helpers = require('./helpers');
module.exports = webpackMerge(testConfig, {
module: {
rules: [
{
enforce: 'post',
test: /^(?!(.*spec|index|.*mock|.*model|.*event)).*\.ts?$/,
include: [helpers.root('src')],
loader: 'istanbul-instrumenter-loader',
exclude: [
/node_modules/,
/test/
]
}
]
}
});

View File

@@ -1,90 +1,8 @@
const webpack = require('webpack');
const helpers = require('./helpers'); const helpers = require('./helpers');
const webpackMerge = require('webpack-merge');
const commonConfig = require('./webpack.common.js');
const ENV = process.env.NODE_ENV = process.env.ENV = 'production'; module.exports = webpackMerge(commonConfig, {
module.exports = { devtool: 'inline-source-map'
});
devtool: 'inline-source-map',
resolve: {
extensions: ['.ts', '.js'],
symlinks: false,
modules: [helpers.root('../ng2-components'), helpers.root('node_modules')]
},
module: {
rules: [
{
enforce: 'pre',
test: /\.js$/,
loader: 'source-map-loader',
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.ts$/,
loaders: ['ts-loader?' + JSON.stringify({ transpileOnly: true}), 'angular2-template-loader'],
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.html$/,
loader: 'html-loader',
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.css$/,
loader: ['to-string-loader', 'css-loader'],
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.component.scss$/,
use: ['to-string-loader', 'raw-loader', 'sass-loader'],
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico|pdf)$/,
loader: 'file-loader',
query: {
name: '[path][name].[ext]',
outputPath: (url)=> {
return url.replace('src', 'dist');
}
}
},
{
enforce: 'post',
test: /\.ts$/,
loader: 'istanbul-instrumenter-loader',
exclude: [
/node_modules/,
/test/
]
}
]
},
plugins: [
new webpack.NoEmitOnErrorsPlugin(),
new webpack.ContextReplacementPlugin(
/angular(\\|\/)core(\\|\/)@angular/,
helpers.root('./src'),
{}
),
new webpack.DefinePlugin({
'process.env': {
'ENV': JSON.stringify(ENV)
}
}),
new webpack.LoaderOptionsPlugin({
htmlLoader: {
minimize: false // workaround for ng2
}
})
],
node: {
fs: 'empty',
module: false
}
};

View File

@@ -8,17 +8,13 @@ module.exports = function (config) {
files: [ files: [
'./node_modules/hammerjs/hammer.js', './node_modules/hammerjs/hammer.js',
{pattern: './node_modules/@angular/material/prebuilt-themes/indigo-pink.css', included: true, watched: false},
//diagrams //diagrams
'./node_modules/chart.js/dist/Chart.js',
'./node_modules/alfresco-js-api/dist/alfresco-js-api.js', './node_modules/alfresco-js-api/dist/alfresco-js-api.js',
'./node_modules/raphael/raphael.js',
'./node_modules/moment/min/moment.min.js', './node_modules/moment/min/moment.min.js',
'./node_modules/md-date-time-picker/dist/js/mdDateTimePicker.js',
{pattern: './node_modules/ng2-translate/**/*.js', included: false, watched: false}, {pattern: './node_modules/ng2-translate/**/*.js', included: false, watched: false},
{pattern: './node_modules/ng2-charts/**/*.js', included: false, served: true, watched: false},
{pattern: './node_modules/md-date-time-picker/**/*.js', included: false, served: true, watched: false},
{pattern: './node_modules/moment/**/*.js', included: false, served: true, watched: false}, {pattern: './node_modules/moment/**/*.js', included: false, served: true, watched: false},
{pattern: 'karma-test-shim.js', watched: false}, {pattern: 'karma-test-shim.js', watched: false},
@@ -27,7 +23,7 @@ module.exports = function (config) {
{pattern: './src/**/*.ts', included: false, served: true, watched: false} {pattern: './src/**/*.ts', included: false, served: true, watched: false}
], ],
webpack: webpackConfig, webpack: (config.mode === 'coverage') ? require('./webpack.coverage') : require('./webpack.test'),
webpackMiddleware: { webpackMiddleware: {
stats: 'errors-only' stats: 'errors-only'

View File

@@ -7,7 +7,7 @@
"clean": "rimraf dist node_modules typings bundles coverage .npmrc", "clean": "rimraf dist node_modules typings bundles coverage .npmrc",
"rimraf": "rimraf", "rimraf": "rimraf",
"build": "webpack --config webpack.build.js --progress --profile --bail", "build": "webpack --config webpack.build.js --progress --profile --bail",
"test": "karma start karma.conf.js --reporters mocha,coverage --single-run --component", "test": "karma start karma.conf.js --reporters mocha,coverage --single-run --mode coverage",
"test-browser": "karma start karma.conf.js --reporters kjhtml --component", "test-browser": "karma start karma.conf.js --reporters kjhtml --component",
"coverage": "npm run test && wsrv -o -p 9875 ./coverage/report", "coverage": "npm run test && wsrv -o -p 9875 ./coverage/report",
"prepublish" : "npm run build" "prepublish" : "npm run build"

View File

@@ -48,8 +48,7 @@ describe('NotificationService', () => {
fixture.detectChanges(); fixture.detectChanges();
}); });
xit('should open a message notification bar', (done) => {
it('should open a message notification bar', (done) => {
let promise = fixture.componentInstance.sendMessage(); let promise = fixture.componentInstance.sendMessage();
promise.afterDismissed().subscribe(() => { promise.afterDismissed().subscribe(() => {
done(); done();
@@ -60,8 +59,7 @@ describe('NotificationService', () => {
expect(document.querySelector('snack-bar-container')).not.toBeNull(); expect(document.querySelector('snack-bar-container')).not.toBeNull();
}); });
xit('should open a message notification bar with action', (done) => {
it('should open a message notification bar with action', (done) => {
let promise = fixture.componentInstance.sendMessageAction(); let promise = fixture.componentInstance.sendMessageAction();
promise.afterDismissed().subscribe(() => { promise.afterDismissed().subscribe(() => {
done(); done();

View File

@@ -1,17 +1 @@
const webpack = require('webpack'); module.exports = require('./config/webpack.build.js');
const webpackMerge = require('webpack-merge');
const commonConfig = require('./config/webpack.common.js');
module.exports = webpackMerge(commonConfig, {
output: {
filename: './bundles/[name].js',
library: '[name]',
libraryTarget: 'umd',
chunkFilename: '[id].chunk.js'
},
entry: {
"ng2-alfresco-core": "./index.ts"
}
});

View File

@@ -0,0 +1 @@
module.exports = require('./config/webpack.coverage.js');

View File

@@ -1,8 +1 @@
const webpack = require('webpack'); module.exports = require('./config/webpack.test.js');
const webpackMerge = require('webpack-merge');
const testConfig = require('./config/webpack.test.js');
module.exports = webpackMerge(testConfig, {
});

View File

@@ -641,12 +641,6 @@ npm install
npm run build npm run build
``` ```
### Build the files and keep watching for changes
```sh
$ npm run build:w
```
## Running unit tests ## Running unit tests
```sh ```sh

View File

@@ -0,0 +1,35 @@
const webpack = require('webpack');
const webpackMerge = require('webpack-merge');
const commonConfig = require('./webpack.common.js');
module.exports = webpackMerge(commonConfig, {
devtool: 'cheap-module-source-map',
externals: [
/^\@angular\//,
/^rxjs\//,
'moment',
'raphael',
'ng2-charts',
'alfresco-js-api',
'ng2-alfresco-core',
'ng2-alfresco-datatable',
'ng2-activiti-analytics',
'ng2-activiti-diagrams',
'ng2-activiti-form',
"ng2-activiti-tasklist",
'ng2-alfresco-documentlist'
],
output: {
filename: './bundles/[name].js',
library: '[name]',
libraryTarget: 'umd',
chunkFilename: '[id].chunk.js'
},
entry: {
"ng2-alfresco-datatable": "./index.ts"
}
});

View File

@@ -4,6 +4,8 @@ const fs = require('fs');
const path = require('path'); const path = require('path');
const CopyWebpackPlugin = require('copy-webpack-plugin'); const CopyWebpackPlugin = require('copy-webpack-plugin');
const ENV = process.env.NODE_ENV = process.env.ENV = 'production';
module.exports = { module.exports = {
resolveLoader: { resolveLoader: {
@@ -13,22 +15,14 @@ module.exports = {
} }
}, },
// require those dependencies but don't bundle them resolve: {
externals: [ alias: {
/^\@angular\//, "ng2-alfresco-core": helpers.root('../ng2-alfresco-core/index.ts')
/^rxjs\//, },
'moment', extensions: ['.ts', '.js'],
'raphael', symlinks: false,
'ng2-charts', modules: [helpers.root('../../ng2-components'), helpers.root('node_modules')]
'alfresco-js-api', },
'ng2-alfresco-core',
'ng2-alfresco-datatable',
'ng2-activiti-analytics',
'ng2-activiti-diagrams',
'ng2-activiti-form',
"ng2-activiti-tasklist",
'ng2-alfresco-documentlist'
],
module: { module: {
rules: [ rules: [
@@ -38,19 +32,13 @@ module.exports = {
loader: 'source-map-loader', loader: 'source-map-loader',
exclude: [/node_modules/, /bundles/, /dist/, /demo/] exclude: [/node_modules/, /bundles/, /dist/, /demo/]
}, },
{
enforce: 'pre',
test: /\.ts$/,
use: 'source-map-loader',
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{ {
enforce: 'pre', enforce: 'pre',
test: /\.ts$/, test: /\.ts$/,
loader: 'tslint-loader', loader: 'tslint-loader',
options: { options: {
emitErrors: true, emitErrors: true,
configFile: path.resolve(__dirname, './assets/tslint.json') failOnHint: true
}, },
exclude: [/node_modules/, /bundles/, /dist/, /demo/] exclude: [/node_modules/, /bundles/, /dist/, /demo/]
}, },
@@ -102,18 +90,10 @@ module.exports = {
] ]
}, },
resolve: {
extensions: ['.ts', '.js'],
symlinks: false,
modules: [
'../ng2-components', 'node_modules'
]
},
plugins: [ plugins: [
new CopyWebpackPlugin([{ new CopyWebpackPlugin([{
from: `src/i18n/`, from: `src/i18n/`,
to: `bundles/assets/ng2-alfresco-datatable/i18n/` to: `bundles/assets/ng2-alfresco-tag/i18n/`
}]), }]),
new webpack.NoEmitOnErrorsPlugin(), new webpack.NoEmitOnErrorsPlugin(),
@@ -124,11 +104,19 @@ module.exports = {
/angular(\\|\/)core(\\|\/)@angular/, /angular(\\|\/)core(\\|\/)@angular/,
helpers.root('./src'), helpers.root('./src'),
{} {}
) ),
new webpack.DefinePlugin({
'process.env': {
'ENV': JSON.stringify(ENV)
}
}),
new webpack.LoaderOptionsPlugin({
htmlLoader: {
minimize: false // workaround for ng2
}
})
], ],
devtool: 'cheap-module-source-map',
node: { node: {
fs: 'empty', fs: 'empty',
module: false module: false

View File

@@ -0,0 +1,22 @@
const webpack = require('webpack');
const webpackMerge = require('webpack-merge');
const testConfig = require('./webpack.test.js');
const helpers = require('./helpers');
module.exports = webpackMerge(testConfig, {
module: {
rules: [
{
enforce: 'post',
test: /^(?!(.*spec|index|.*mock|.*model|.*event)).*\.ts?$/,
include: [helpers.root('src')],
loader: 'istanbul-instrumenter-loader',
exclude: [
/node_modules/,
/test/
]
}
]
}
});

View File

@@ -1,90 +1,8 @@
const webpack = require('webpack');
const helpers = require('./helpers'); const helpers = require('./helpers');
const webpackMerge = require('webpack-merge');
const commonConfig = require('./webpack.common.js');
const ENV = process.env.NODE_ENV = process.env.ENV = 'production'; module.exports = webpackMerge(commonConfig, {
module.exports = { devtool: 'inline-source-map'
});
devtool: 'inline-source-map',
resolve: {
extensions: ['.ts', '.js'],
symlinks: false,
modules: [helpers.root('../ng2-components'), helpers.root('node_modules')]
},
module: {
rules: [
{
enforce: 'pre',
test: /\.js$/,
loader: 'source-map-loader',
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.ts$/,
loaders: ['ts-loader?' + JSON.stringify({ transpileOnly: true}), 'angular2-template-loader'],
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.html$/,
loader: 'html-loader',
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.css$/,
loader: ['to-string-loader', 'css-loader'],
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.component.scss$/,
use: ['to-string-loader', 'raw-loader', 'sass-loader'],
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},
{
test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico|pdf)$/,
loader: 'file-loader',
query: {
name: '[path][name].[ext]',
outputPath: (url)=> {
return url.replace('src', 'dist');
}
}
},
{
enforce: 'post',
test: /\.ts$/,
loader: 'istanbul-instrumenter-loader',
exclude: [
/node_modules/,
/test/
]
}
]
},
plugins: [
new webpack.NoEmitOnErrorsPlugin(),
new webpack.ContextReplacementPlugin(
/angular(\\|\/)core(\\|\/)@angular/,
helpers.root('./src'),
{}
),
new webpack.DefinePlugin({
'process.env': {
'ENV': JSON.stringify(ENV)
}
}),
new webpack.LoaderOptionsPlugin({
htmlLoader: {
minimize: false // workaround for ng2
}
})
],
node: {
fs: 'empty',
module: false
}
};

View File

@@ -8,17 +8,13 @@ module.exports = function (config) {
files: [ files: [
'./node_modules/hammerjs/hammer.js', './node_modules/hammerjs/hammer.js',
{pattern: './node_modules/@angular/material/prebuilt-themes/indigo-pink.css', included: true, watched: false},
//diagrams //diagrams
'./node_modules/chart.js/dist/Chart.js',
'./node_modules/alfresco-js-api/dist/alfresco-js-api.js', './node_modules/alfresco-js-api/dist/alfresco-js-api.js',
'./node_modules/raphael/raphael.js',
'./node_modules/moment/min/moment.min.js', './node_modules/moment/min/moment.min.js',
'./node_modules/md-date-time-picker/dist/js/mdDateTimePicker.js',
{pattern: './node_modules/ng2-translate/**/*.js', included: false, watched: false}, {pattern: './node_modules/ng2-translate/**/*.js', included: false, watched: false},
{pattern: './node_modules/ng2-charts/**/*.js', included: false, served: true, watched: false},
{pattern: './node_modules/md-date-time-picker/**/*.js', included: false, served: true, watched: false},
{pattern: './node_modules/moment/**/*.js', included: false, served: true, watched: false}, {pattern: './node_modules/moment/**/*.js', included: false, served: true, watched: false},
{pattern: 'karma-test-shim.js', watched: false}, {pattern: 'karma-test-shim.js', watched: false},
@@ -27,7 +23,7 @@ module.exports = function (config) {
{pattern: './src/**/*.ts', included: false, served: true, watched: false} {pattern: './src/**/*.ts', included: false, served: true, watched: false}
], ],
webpack: webpackConfig, webpack: (config.mode === 'coverage') ? require('./webpack.coverage') : require('./webpack.test'),
webpackMiddleware: { webpackMiddleware: {
stats: 'errors-only' stats: 'errors-only'

View File

@@ -7,7 +7,7 @@
"clean": "rimraf dist node_modules typings bundles coverage .npmrc", "clean": "rimraf dist node_modules typings bundles coverage .npmrc",
"rimraf": "rimraf", "rimraf": "rimraf",
"build": "webpack --config webpack.build.js --progress --profile --bail", "build": "webpack --config webpack.build.js --progress --profile --bail",
"test": "karma start karma.conf.js --reporters mocha,coverage --single-run --component", "test": "karma start karma.conf.js --reporters mocha,coverage --single-run --mode coverage",
"test-browser": "karma start karma.conf.js --reporters kjhtml --component", "test-browser": "karma start karma.conf.js --reporters kjhtml --component",
"coverage": "npm run test && wsrv -o -p 9875 ./coverage/report", "coverage": "npm run test && wsrv -o -p 9875 ./coverage/report",
"prepublish" : "npm run build" "prepublish" : "npm run build"

View File

@@ -26,7 +26,7 @@ import {
DataColumn, DataColumn,
DataSorting, DataSorting,
ObjectDataTableAdapter, ObjectDataTableAdapter,
ObjectDataColumn, ObjectDataRow ObjectDataColumn
} from './../../data/index'; } from './../../data/index';
describe('DataTable', () => { describe('DataTable', () => {
@@ -101,7 +101,6 @@ describe('DataTable', () => {
); );
const rows = dataTable.data.getRows(); const rows = dataTable.data.getRows();
dataTable.onRowClick(rows[0], null); dataTable.onRowClick(rows[0], null);
expect(rows[0].isSelected).toBeTruthy(); expect(rows[0].isSelected).toBeTruthy();
expect(rows[1].isSelected).toBeFalsy(); expect(rows[1].isSelected).toBeFalsy();

View File

@@ -1,17 +1 @@
const webpack = require('webpack'); module.exports = require('./config/webpack.build.js');
const webpackMerge = require('webpack-merge');
const commonConfig = require('./config/webpack.common.js');
module.exports = webpackMerge(commonConfig, {
output: {
filename: './bundles/[name].js',
library: '[name]',
libraryTarget: 'umd',
chunkFilename: '[id].chunk.js'
},
entry: {
"ng2-alfresco-datatable": "./index.ts"
}
});

View File

@@ -0,0 +1 @@
module.exports = require('./config/webpack.coverage.js');

View File

@@ -1,8 +1 @@
const webpack = require('webpack'); module.exports = require('./config/webpack.test.js');
const webpackMerge = require('webpack-merge');
const testConfig = require('./config/webpack.test.js');
module.exports = webpackMerge(testConfig, {
});

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