Re-initialized the project with angular-cli and set it up as the build tool chain.
This commit is contained in:
		
							parent
							
								
									6dd65fd488
								
							
						
					
					
						commit
						17afa92bfe
					
				
					 80 changed files with 6584 additions and 621 deletions
				
			
		
							
								
								
									
										57
									
								
								.angular-cli.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								.angular-cli.json
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,57 @@ | ||||||
|  | { | ||||||
|  |   "$schema": "./node_modules/@angular/cli/lib/config/schema.json", | ||||||
|  |   "project": { | ||||||
|  |     "name": "conv.friedli.info" | ||||||
|  |   }, | ||||||
|  |   "apps": [ | ||||||
|  |     { | ||||||
|  |       "root": "src", | ||||||
|  |       "outDir": "dist", | ||||||
|  |       "assets": [ | ||||||
|  |         "assets", | ||||||
|  |         "favicon.ico" | ||||||
|  |       ], | ||||||
|  |       "index": "index.html", | ||||||
|  |       "main": "main.ts", | ||||||
|  |       "polyfills": "polyfills.ts", | ||||||
|  |       "test": "test.ts", | ||||||
|  |       "tsconfig": "tsconfig.app.json", | ||||||
|  |       "testTsconfig": "tsconfig.spec.json", | ||||||
|  |       "prefix": "app", | ||||||
|  |       "styles": [ | ||||||
|  |         "styles.scss" | ||||||
|  |       ], | ||||||
|  |       "scripts": [], | ||||||
|  |       "environmentSource": "environments/environment.ts", | ||||||
|  |       "environments": { | ||||||
|  |         "dev": "environments/environment.ts", | ||||||
|  |         "prod": "environments/environment.prod.ts" | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   ], | ||||||
|  |   "e2e": { | ||||||
|  |     "protractor": { | ||||||
|  |       "config": "./protractor.conf.js" | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "lint": [ | ||||||
|  |     { | ||||||
|  |       "project": "src/tsconfig.app.json" | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       "project": "src/tsconfig.spec.json" | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       "project": "e2e/tsconfig.e2e.json" | ||||||
|  |     } | ||||||
|  |   ], | ||||||
|  |   "test": { | ||||||
|  |     "karma": { | ||||||
|  |       "config": "./karma.conf.js" | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "defaults": { | ||||||
|  |     "styleExt": "scss", | ||||||
|  |     "component": {} | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										13
									
								
								.editorconfig
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								.editorconfig
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,13 @@ | ||||||
|  | # Editor configuration, see http://editorconfig.org | ||||||
|  | root = true | ||||||
|  | 
 | ||||||
|  | [*] | ||||||
|  | charset = utf-8 | ||||||
|  | indent_style = space | ||||||
|  | indent_size = 2 | ||||||
|  | insert_final_newline = true | ||||||
|  | trim_trailing_whitespace = true | ||||||
|  | 
 | ||||||
|  | [*.md] | ||||||
|  | max_line_length = off | ||||||
|  | trim_trailing_whitespace = false | ||||||
							
								
								
									
										51
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										51
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							|  | @ -1,10 +1,43 @@ | ||||||
| *~ | # See http://help.github.com/ignore-files/ for more about ignoring files. | ||||||
| .idea/ | 
 | ||||||
| *.iml | # compiled output | ||||||
| atlassian-ide-plugin.xml | /dist | ||||||
| node_modules/ | /tmp | ||||||
| typings/ | /out-tsc | ||||||
| src/**/*.js | 
 | ||||||
| src/**/*.js.map | # dependencies | ||||||
|  | /node_modules | ||||||
|  | 
 | ||||||
|  | # IDEs and editors | ||||||
|  | /.idea | ||||||
|  | .project | ||||||
|  | .classpath | ||||||
|  | .c9/ | ||||||
|  | *.launch | ||||||
|  | .settings/ | ||||||
|  | *.sublime-workspace | ||||||
|  | 
 | ||||||
|  | # IDE - VSCode | ||||||
|  | .vscode/* | ||||||
|  | !.vscode/settings.json | ||||||
|  | !.vscode/tasks.json | ||||||
|  | !.vscode/launch.json | ||||||
|  | !.vscode/extensions.json | ||||||
|  | 
 | ||||||
|  | # misc | ||||||
|  | /.sass-cache | ||||||
|  | /connect.lock | ||||||
|  | /coverage | ||||||
|  | /libpeerconnection.log | ||||||
| npm-debug.log | npm-debug.log | ||||||
| dist/ | testem.log | ||||||
|  | /typings | ||||||
|  | 
 | ||||||
|  | # e2e | ||||||
|  | /e2e/*.js | ||||||
|  | /e2e/*.map | ||||||
|  | 
 | ||||||
|  | # System Files | ||||||
|  | .DS_Store | ||||||
|  | Thumbs.db | ||||||
|  | *~ | ||||||
|  |  | ||||||
|  | @ -7,9 +7,11 @@ stages: | ||||||
| build_job: | build_job: | ||||||
|   stage: build |   stage: build | ||||||
|   script: |   script: | ||||||
|     - npm install |     - yarn install | ||||||
|     - npm run build-dev |     - yarn run build | ||||||
|     - npm run test |     - yarn run lint | ||||||
|  |     - yarn run test | ||||||
|  |     - yarn run e2e | ||||||
|   tags: |   tags: | ||||||
|     - javascript |     - javascript | ||||||
|   except: |   except: | ||||||
|  | @ -23,9 +25,11 @@ build_job: | ||||||
| build_job_production: | build_job_production: | ||||||
|   stage: build |   stage: build | ||||||
|   script: |   script: | ||||||
|     - npm install |     - yarn install | ||||||
|     - npm run build |     - yarn run build-prod | ||||||
|     - npm run test |     - yarn run lint | ||||||
|  |     - yarn run test | ||||||
|  |     - yarn run e2e | ||||||
|   tags: |   tags: | ||||||
|     - javascript |     - javascript | ||||||
|   only: |   only: | ||||||
|  |  | ||||||
							
								
								
									
										29
									
								
								README.md
									
										
									
									
									
								
							
							
						
						
									
										29
									
								
								README.md
									
										
									
									
									
								
							|  | @ -7,3 +7,32 @@ Deployment is automated with Gitlab CI. Usage is self-explanatory. What else do | ||||||
| Contact the author at manuel-conv.friedli.info|at|fritteli.ch. | Contact the author at manuel-conv.friedli.info|at|fritteli.ch. | ||||||
| 
 | 
 | ||||||
| Cheers! | Cheers! | ||||||
|  | 
 | ||||||
|  | # AngularCliTestproject | ||||||
|  | 
 | ||||||
|  | This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 1.0.0. | ||||||
|  | 
 | ||||||
|  | ## Development server | ||||||
|  | 
 | ||||||
|  | Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. | ||||||
|  | 
 | ||||||
|  | ## Code scaffolding | ||||||
|  | 
 | ||||||
|  | Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive/pipe/service/class/module`. | ||||||
|  | 
 | ||||||
|  | ## Build | ||||||
|  | 
 | ||||||
|  | Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `-prod` flag for a production build. | ||||||
|  | 
 | ||||||
|  | ## Running unit tests | ||||||
|  | 
 | ||||||
|  | Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). | ||||||
|  | 
 | ||||||
|  | ## Running end-to-end tests | ||||||
|  | 
 | ||||||
|  | Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/). | ||||||
|  | Before running the tests make sure you are serving the app via `ng serve`. | ||||||
|  | 
 | ||||||
|  | ## Further help | ||||||
|  | 
 | ||||||
|  | To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). | ||||||
|  |  | ||||||
|  | @ -1,7 +0,0 @@ | ||||||
| var path = require('path'); |  | ||||||
| var _root = path.resolve(__dirname, '..'); |  | ||||||
| function root(args) { |  | ||||||
|     args = Array.prototype.slice.call(arguments, 0); |  | ||||||
|     return path.join.apply(path, [_root].concat(args)); |  | ||||||
| } |  | ||||||
| exports.root = root; |  | ||||||
|  | @ -1,21 +0,0 @@ | ||||||
| Error.stackTraceLimit = Infinity; |  | ||||||
| 
 |  | ||||||
| require('core-js/es6'); |  | ||||||
| require('core-js/es7/reflect'); |  | ||||||
| 
 |  | ||||||
| require('zone.js/dist/zone'); |  | ||||||
| require('zone.js/dist/long-stack-trace-zone'); |  | ||||||
| require('zone.js/dist/proxy'); |  | ||||||
| require('zone.js/dist/sync-test'); |  | ||||||
| require('zone.js/dist/jasmine-patch'); |  | ||||||
| require('zone.js/dist/async-test'); |  | ||||||
| require('zone.js/dist/fake-async-test'); |  | ||||||
| 
 |  | ||||||
| var appContext = require.context('../src', true, /\.spec\.ts/); |  | ||||||
| 
 |  | ||||||
| appContext.keys().forEach(appContext); |  | ||||||
| 
 |  | ||||||
| var testing = require('@angular/core/testing'); |  | ||||||
| var browser = require('@angular/platform-browser-dynamic/testing'); |  | ||||||
| 
 |  | ||||||
| testing.TestBed.initTestEnvironment(browser.BrowserDynamicTestingModule, browser.platformBrowserDynamicTesting()); |  | ||||||
|  | @ -1,44 +0,0 @@ | ||||||
| var webpackConfig = require('./webpack.test'); |  | ||||||
| 
 |  | ||||||
| module.exports = function (config) { |  | ||||||
|     var _config = { |  | ||||||
|         basePath: '', |  | ||||||
| 
 |  | ||||||
|         frameworks: ['jasmine'], |  | ||||||
| 
 |  | ||||||
|         files: [ |  | ||||||
|             { |  | ||||||
|                 pattern: './config/karma-test-shim.js', |  | ||||||
|                 watched: false |  | ||||||
|             } |  | ||||||
|         ], |  | ||||||
| 
 |  | ||||||
|         preprocessors: { |  | ||||||
|             './config/karma-test-shim.js': ['webpack', 'sourcemap'] |  | ||||||
|         }, |  | ||||||
| 
 |  | ||||||
|         webpack: webpackConfig, |  | ||||||
| 
 |  | ||||||
|         webpackMiddleware: { |  | ||||||
|             stats: 'errors-only' |  | ||||||
|         }, |  | ||||||
| 
 |  | ||||||
|         webpackServer: { |  | ||||||
|             noInfo: true |  | ||||||
|         }, |  | ||||||
| 
 |  | ||||||
|         reporters: ['kjhtml'], |  | ||||||
|         port: 9876, |  | ||||||
|         colors: true, |  | ||||||
|         logLevel: config.LOG_INFO, |  | ||||||
|         autoWatch: false, |  | ||||||
|         browsers: ['PhantomJS'], |  | ||||||
|         singleRun: true, |  | ||||||
|         phantomjsLauncher: { |  | ||||||
|             // Have phantomjs exit if a ResourceError is encountered (useful if karma exits without killing phantom) 
 |  | ||||||
|             exitOnResourceError: true |  | ||||||
|         } |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     config.set(_config); |  | ||||||
| }; |  | ||||||
|  | @ -1,76 +0,0 @@ | ||||||
| var webpack = require('webpack'); |  | ||||||
| var HtmlWebpackPlugin = require('html-webpack-plugin'); |  | ||||||
| var ExtractTextPlugin = require('extract-text-webpack-plugin'); |  | ||||||
| var helpers = require('./helpers'); |  | ||||||
| 
 |  | ||||||
| module.exports = { |  | ||||||
|     entry: { |  | ||||||
|         'polyfills': './src/polyfills.ts', |  | ||||||
|         'vendor': './src/vendor.ts', |  | ||||||
|         'app': './src/main.ts' |  | ||||||
|     }, |  | ||||||
| 
 |  | ||||||
|     resolve: { |  | ||||||
|         extensions: ['.ts', '.js'] |  | ||||||
|     }, |  | ||||||
| 
 |  | ||||||
|     module: { |  | ||||||
|         rules: [ |  | ||||||
|             { |  | ||||||
|                 test: /\.ts$/, |  | ||||||
|                 loaders: [ |  | ||||||
|                     { |  | ||||||
|                         loader: 'awesome-typescript-loader', |  | ||||||
|                         options: { |  | ||||||
|                             configFileName: helpers.root('src', 'tsconfig.json') |  | ||||||
|                         } |  | ||||||
|                     }, |  | ||||||
|                     'angular2-template-loader' |  | ||||||
|                 ] |  | ||||||
|             }, |  | ||||||
|             { |  | ||||||
|                 test: /\.html$/, |  | ||||||
|                 use: 'html-loader' |  | ||||||
|             }, |  | ||||||
|             { |  | ||||||
|                 test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico)$/, |  | ||||||
|                 use: 'file-loader?name=assets/[name].[hash].[ext]' |  | ||||||
|             }, |  | ||||||
|             { |  | ||||||
|                 test: /\.css$/, |  | ||||||
|                 exclude: helpers.root('src', 'app'), |  | ||||||
|                 use: ExtractTextPlugin.extract({ |  | ||||||
|                     fallback: 'style-loader', |  | ||||||
|                     use: 'css-loader?sourceMap' |  | ||||||
|                 }) |  | ||||||
|             }, |  | ||||||
|             { |  | ||||||
|                 test: /\.css$/, |  | ||||||
|                 include: helpers.root('src', 'app'), |  | ||||||
|                 use: 'raw-loader' |  | ||||||
|             } |  | ||||||
|         ] |  | ||||||
|     }, |  | ||||||
| 
 |  | ||||||
|     plugins: [ |  | ||||||
|         // Workaround for angular/angular#11580
 |  | ||||||
|         new webpack.ContextReplacementPlugin( |  | ||||||
|             // The (\\|\/) piece accounts for path separators in *nix and Windows
 |  | ||||||
|             /angular(\\|\/)core(\\|\/)(esm(\\|\/)src|src)(\\|\/)linker/, |  | ||||||
|             helpers.root('./src'), // location of your src
 |  | ||||||
|             {} // a map of your routes
 |  | ||||||
|         ), |  | ||||||
| 
 |  | ||||||
|         new webpack.optimize.CommonsChunkPlugin({ |  | ||||||
|             name: ['app', 'vendor', 'polyfills'] |  | ||||||
|         }), |  | ||||||
| 
 |  | ||||||
|         new HtmlWebpackPlugin({ |  | ||||||
|             template: 'src/index.html' |  | ||||||
|         }), |  | ||||||
| 
 |  | ||||||
|         new webpack.optimize.UglifyJsPlugin({ |  | ||||||
|             comments: false |  | ||||||
|         }) |  | ||||||
|     ] |  | ||||||
| }; |  | ||||||
|  | @ -1,24 +0,0 @@ | ||||||
| var webpackMerge = require('webpack-merge'); |  | ||||||
| var ExtractTextPlugin = require('extract-text-webpack-plugin'); |  | ||||||
| var commonConfig = require('./webpack.common.js'); |  | ||||||
| var helpers = require('./helpers'); |  | ||||||
| 
 |  | ||||||
| module.exports = webpackMerge(commonConfig, { |  | ||||||
|     devtool: 'cheap-module-eval-source-map', |  | ||||||
| 
 |  | ||||||
|     output: { |  | ||||||
|         path: helpers.root('dist'), |  | ||||||
|         publicPath: 'http://localhost:8080/', |  | ||||||
|         filename: '[name].js', |  | ||||||
|         chunkFilename: '[id].chunk.js' |  | ||||||
|     }, |  | ||||||
| 
 |  | ||||||
|     plugins: [ |  | ||||||
|         new ExtractTextPlugin('[name].css') |  | ||||||
|     ], |  | ||||||
| 
 |  | ||||||
|     devServer: { |  | ||||||
|         historyApiFallback: true, |  | ||||||
|         stats: 'minimal' |  | ||||||
|     } |  | ||||||
| }); |  | ||||||
|  | @ -1,39 +0,0 @@ | ||||||
| var webpack = require('webpack'); |  | ||||||
| var webpackMerge = require('webpack-merge'); |  | ||||||
| var ExtractTextPlugin = require('extract-text-webpack-plugin'); |  | ||||||
| var commonConfig = require('./webpack.common.js'); |  | ||||||
| var helpers = require('./helpers'); |  | ||||||
| 
 |  | ||||||
| module.exports = function (env) { |  | ||||||
|     console.log("env:", env); |  | ||||||
|     return webpackMerge(commonConfig, { |  | ||||||
|         devtool: 'source-map', |  | ||||||
| 
 |  | ||||||
|         output: { |  | ||||||
|             path: helpers.root('dist'), |  | ||||||
|             publicPath: '', |  | ||||||
|             filename: '[name].[hash].js', |  | ||||||
|             chunkFilename: '[id].[hash].chunk.js' |  | ||||||
|         }, |  | ||||||
| 
 |  | ||||||
|         plugins: [ |  | ||||||
|             new webpack.NoEmitOnErrorsPlugin(), |  | ||||||
|             new webpack.optimize.UglifyJsPlugin({ // https://github.com/angular/angular/issues/10618
 |  | ||||||
|                 mangle: { |  | ||||||
|                     keep_fnames: true |  | ||||||
|                 } |  | ||||||
|             }), |  | ||||||
|             new ExtractTextPlugin('[name].[hash].css'), |  | ||||||
|             new webpack.DefinePlugin({ |  | ||||||
|                 'process.env': { |  | ||||||
|                     'NODE_ENV': JSON.stringify(env.NODE_ENV) |  | ||||||
|                 } |  | ||||||
|             }), |  | ||||||
|             new webpack.LoaderOptionsPlugin({ |  | ||||||
|                 htmlLoader: { |  | ||||||
|                     minimize: false // workaround for ng2
 |  | ||||||
|                 } |  | ||||||
|             }) |  | ||||||
|         ] |  | ||||||
|     }); |  | ||||||
| }; |  | ||||||
|  | @ -1,52 +0,0 @@ | ||||||
| var webpack = require('webpack'); |  | ||||||
| var helpers = require('./helpers'); |  | ||||||
| 
 |  | ||||||
| module.exports = { |  | ||||||
|     devtool: 'inline-source-map', |  | ||||||
| 
 |  | ||||||
|     resolve: { |  | ||||||
|         extensions: ['.ts', '.js'] |  | ||||||
|     }, |  | ||||||
| 
 |  | ||||||
|     module: { |  | ||||||
|         rules: [ |  | ||||||
|             { |  | ||||||
|                 test: /\.ts$/, |  | ||||||
|                 loaders: [ |  | ||||||
|                     { |  | ||||||
|                         loader: 'awesome-typescript-loader', |  | ||||||
|                         options: {configFileName: helpers.root('src', 'tsconfig.json')} |  | ||||||
|                     }, 'angular2-template-loader' |  | ||||||
|                 ] |  | ||||||
|             }, |  | ||||||
|             { |  | ||||||
|                 test: /\.html$/, |  | ||||||
|                 loader: 'html-loader' |  | ||||||
| 
 |  | ||||||
|             }, |  | ||||||
|             { |  | ||||||
|                 test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico)$/, |  | ||||||
|                 loader: 'null-loader' |  | ||||||
|             }, |  | ||||||
|             { |  | ||||||
|                 test: /\.css$/, |  | ||||||
|                 exclude: helpers.root('src', 'app'), |  | ||||||
|                 loader: 'null-loader' |  | ||||||
|             }, |  | ||||||
|             { |  | ||||||
|                 test: /\.css$/, |  | ||||||
|                 include: helpers.root('src', 'app'), |  | ||||||
|                 loader: 'raw-loader' |  | ||||||
|             } |  | ||||||
|         ] |  | ||||||
|     }, |  | ||||||
| 
 |  | ||||||
|     plugins: [ |  | ||||||
|         new webpack.ContextReplacementPlugin( |  | ||||||
|             // The (\\|\/) piece accounts for path separators in *nix and Windows
 |  | ||||||
|             /angular(\\|\/)core(\\|\/)(esm(\\|\/)src|src)(\\|\/)linker/, |  | ||||||
|             helpers.root('./src'), // location of your src
 |  | ||||||
|             {} // a map of your routes
 |  | ||||||
|         ) |  | ||||||
|     ] |  | ||||||
| }; |  | ||||||
							
								
								
									
										14
									
								
								e2e/app.e2e-spec.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								e2e/app.e2e-spec.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,14 @@ | ||||||
|  | import { ConvFriedliInfoPage } from './app.po'; | ||||||
|  | 
 | ||||||
|  | describe('conv.friedli.info App', () => { | ||||||
|  |   let page: ConvFriedliInfoPage; | ||||||
|  | 
 | ||||||
|  |   beforeEach(() => { | ||||||
|  |     page = new ConvFriedliInfoPage(); | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
|  |   it('should display message saying app works', () => { | ||||||
|  |     page.navigateTo(); | ||||||
|  |     expect(page.getParagraphText()).toEqual('app works!'); | ||||||
|  |   }); | ||||||
|  | }); | ||||||
							
								
								
									
										11
									
								
								e2e/app.po.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								e2e/app.po.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,11 @@ | ||||||
|  | import { browser, element, by } from 'protractor'; | ||||||
|  | 
 | ||||||
|  | export class ConvFriedliInfoPage { | ||||||
|  |   navigateTo() { | ||||||
|  |     return browser.get('/'); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   getParagraphText() { | ||||||
|  |     return element(by.css('app-root h1')).getText(); | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										12
									
								
								e2e/tsconfig.e2e.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								e2e/tsconfig.e2e.json
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,12 @@ | ||||||
|  | { | ||||||
|  |   "extends": "../tsconfig.json", | ||||||
|  |   "compilerOptions": { | ||||||
|  |     "outDir": "../out-tsc/e2e", | ||||||
|  |     "module": "commonjs", | ||||||
|  |     "target": "es5", | ||||||
|  |     "types":[ | ||||||
|  |       "jasmine", | ||||||
|  |       "node" | ||||||
|  |     ] | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | @ -1 +1,44 @@ | ||||||
| module.exports = require('./config/karma.conf.js'); | // Karma configuration file, see link for more information
 | ||||||
|  | // https://karma-runner.github.io/0.13/config/configuration-file.html
 | ||||||
|  | 
 | ||||||
|  | module.exports = function (config) { | ||||||
|  |   config.set({ | ||||||
|  |     basePath: '', | ||||||
|  |     frameworks: ['jasmine', '@angular/cli'], | ||||||
|  |     plugins: [ | ||||||
|  |       require('karma-jasmine'), | ||||||
|  |       require('karma-chrome-launcher'), | ||||||
|  |       require('karma-jasmine-html-reporter'), | ||||||
|  |       require('karma-coverage-istanbul-reporter'), | ||||||
|  |       require('@angular/cli/plugins/karma') | ||||||
|  |     ], | ||||||
|  |     client:{ | ||||||
|  |       clearContext: false // leave Jasmine Spec Runner output visible in browser
 | ||||||
|  |     }, | ||||||
|  |     files: [ | ||||||
|  |       { pattern: './src/test.ts', watched: false } | ||||||
|  |     ], | ||||||
|  |     preprocessors: { | ||||||
|  |       './src/test.ts': ['@angular/cli'] | ||||||
|  |     }, | ||||||
|  |     mime: { | ||||||
|  |       'text/x-typescript': ['ts','tsx'] | ||||||
|  |     }, | ||||||
|  |     coverageIstanbulReporter: { | ||||||
|  |       reports: [ 'html', 'lcovonly' ], | ||||||
|  |       fixWebpackSourcePaths: true | ||||||
|  |     }, | ||||||
|  |     angularCli: { | ||||||
|  |       environment: 'dev' | ||||||
|  |     }, | ||||||
|  |     reporters: config.angularCli && config.angularCli.codeCoverage | ||||||
|  |               ? ['progress', 'coverage-istanbul'] | ||||||
|  |               : ['progress', 'kjhtml'], | ||||||
|  |     port: 9876, | ||||||
|  |     colors: true, | ||||||
|  |     logLevel: config.LOG_INFO, | ||||||
|  |     autoWatch: true, | ||||||
|  |     browsers: ['Chrome'], | ||||||
|  |     singleRun: false | ||||||
|  |   }); | ||||||
|  | }; | ||||||
|  |  | ||||||
							
								
								
									
										77
									
								
								package.json
									
										
									
									
									
								
							
							
						
						
									
										77
									
								
								package.json
									
										
									
									
									
								
							|  | @ -19,54 +19,49 @@ | ||||||
|     "type": "git", |     "type": "git", | ||||||
|     "url": "https://gittr.ch/manuel/dencode.org.git" |     "url": "https://gittr.ch/manuel/dencode.org.git" | ||||||
|   }, |   }, | ||||||
|  |   "scripts": { | ||||||
|  |     "ng": "ng", | ||||||
|  |     "start": "ng serve", | ||||||
|  |     "build": "ng build", | ||||||
|  |     "build-prod": "ng build --env=prod", | ||||||
|  |     "test": "ng test", | ||||||
|  |     "lint": "ng lint", | ||||||
|  |     "e2e": "ng e2e" | ||||||
|  |   }, | ||||||
|  |   "private": true, | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "@angular/common": "^2.4.0", |     "@angular/common": "^4.0.0", | ||||||
|     "@angular/compiler": "^2.4.0", |     "@angular/compiler": "^4.0.0", | ||||||
|     "@angular/core": "^2.4.0", |     "@angular/core": "^4.0.0", | ||||||
|     "@angular/forms": "^2.4.0", |     "@angular/forms": "^4.0.0", | ||||||
|     "@angular/platform-browser": "^2.4.0", |     "@angular/http": "^4.0.0", | ||||||
|     "@angular/platform-browser-dynamic": "^2.4.0", |     "@angular/platform-browser": "^4.0.0", | ||||||
|  |     "@angular/platform-browser-dynamic": "^4.0.0", | ||||||
|  |     "@angular/router": "^4.0.0", | ||||||
|     "core-js": "^2.4.1", |     "core-js": "^2.4.1", | ||||||
|     "rxjs": "^5.0.1", |     "punycode": "^2.1.0", | ||||||
|     "zone.js": "^0.7.4", |  | ||||||
|     "bootstrap": "^3.3.0", |  | ||||||
|     "quoted-printable": "^1.0.0", |     "quoted-printable": "^1.0.0", | ||||||
|  |     "rxjs": "^5.1.0", | ||||||
|     "utf8": "^2.1.0", |     "utf8": "^2.1.0", | ||||||
|     "punycode": "^1.4.0" |     "zone.js": "^0.8.4" | ||||||
|   }, |   }, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|     "@types/jasmine": "2.5.36", |     "@angular/cli": "^1.0.0", | ||||||
|     "@types/node": "^6.0.45", |     "@angular/compiler-cli": "^4.0.0", | ||||||
|     "angular2-template-loader": "^0.6.0", |     "@types/jasmine": "^2.5.38", | ||||||
|     "awesome-typescript-loader": "^3.0.4", |     "@types/node": "^7.0.0", | ||||||
|     "css-loader": "^0.26.1", |     "codelyzer": "^2.0.0", | ||||||
|     "extract-text-webpack-plugin": "^2.0.0", |     "jasmine-core": "^2.5.2", | ||||||
|     "file-loader": "^0.9.0", |     "jasmine-spec-reporter": "^3.2.0", | ||||||
|     "html-loader": "^0.4.3", |     "karma": "^1.4.1", | ||||||
|     "html-webpack-plugin": "^2.16.1", |  | ||||||
|     "jasmine-core": "^2.4.1", |  | ||||||
|     "karma": "^1.2.0", |  | ||||||
|     "karma-chrome-launcher": "^2.0.0", |     "karma-chrome-launcher": "^2.0.0", | ||||||
|     "karma-firefox-launcher": "^1.0.1", |     "karma-cli": "^1.0.1", | ||||||
|     "karma-jasmine": "^1.0.2", |     "karma-coverage-istanbul-reporter": "^1.0.0", | ||||||
|  |     "karma-jasmine": "^1.1.0", | ||||||
|     "karma-jasmine-html-reporter": "^0.2.2", |     "karma-jasmine-html-reporter": "^0.2.2", | ||||||
|     "karma-phantomjs-launcher": "^1.0.4", |     "protractor": "^5.1.0", | ||||||
|     "karma-sourcemap-loader": "^0.3.7", |     "ts-node": "^3.0.0", | ||||||
|     "karma-webpack": "^2.0.1", |     "tslint": "^5.0.0", | ||||||
|     "null-loader": "^0.1.1", |     "typescript": "^2.2.0" | ||||||
|     "phantomjs-prebuilt": "^2.1.14", |  | ||||||
|     "raw-loader": "^0.5.1", |  | ||||||
|     "rimraf": "^2.5.2", |  | ||||||
|     "style-loader": "^0.13.1", |  | ||||||
|     "typescript": "^2.0.10", |  | ||||||
|     "webpack": "^2.2.1", |  | ||||||
|     "webpack-dev-server": "^2.4.1", |  | ||||||
|     "webpack-merge": "^3.0.0" |  | ||||||
|   }, |  | ||||||
|   "scripts": { |  | ||||||
|     "start": "webpack-dev-server --inline --progress --port 8080", |  | ||||||
|     "test": "karma start", |  | ||||||
|     "build-dev": "rimraf dist && webpack --config config/webpack.prod.js --progress --profile --bail --env.NODE_ENV=development", |  | ||||||
|     "build": "rimraf dist && webpack --config config/webpack.prod.js --progress --profile --bail --env.NODE_ENV=production" |  | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
							
								
								
									
										30
									
								
								protractor.conf.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								protractor.conf.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,30 @@ | ||||||
|  | // Protractor configuration file, see link for more information
 | ||||||
|  | // https://github.com/angular/protractor/blob/master/lib/config.ts
 | ||||||
|  | 
 | ||||||
|  | const { SpecReporter } = require('jasmine-spec-reporter'); | ||||||
|  | 
 | ||||||
|  | exports.config = { | ||||||
|  |   allScriptsTimeout: 11000, | ||||||
|  |   specs: [ | ||||||
|  |     './e2e/**/*.e2e-spec.ts' | ||||||
|  |   ], | ||||||
|  |   capabilities: { | ||||||
|  |     'browserName': 'chrome' | ||||||
|  |   }, | ||||||
|  |   directConnect: true, | ||||||
|  |   baseUrl: 'http://localhost:4200/', | ||||||
|  |   framework: 'jasmine', | ||||||
|  |   jasmineNodeOpts: { | ||||||
|  |     showColors: true, | ||||||
|  |     defaultTimeoutInterval: 30000, | ||||||
|  |     print: function() {} | ||||||
|  |   }, | ||||||
|  |   beforeLaunch: function() { | ||||||
|  |     require('ts-node').register({ | ||||||
|  |       project: 'e2e/tsconfig.e2e.json' | ||||||
|  |     }); | ||||||
|  |   }, | ||||||
|  |   onPrepare() { | ||||||
|  |     jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); | ||||||
|  |   } | ||||||
|  | }; | ||||||
							
								
								
									
										27
									
								
								src/app/app-routing.module.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								src/app/app-routing.module.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,27 @@ | ||||||
|  | "use strict"; | ||||||
|  | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { | ||||||
|  |     var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; | ||||||
|  |     if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); | ||||||
|  |     else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; | ||||||
|  |     return c > 3 && r && Object.defineProperty(target, key, r), r; | ||||||
|  | }; | ||||||
|  | var core_1 = require('@angular/core'); | ||||||
|  | var router_1 = require('@angular/router'); | ||||||
|  | var routes = [ | ||||||
|  |     { | ||||||
|  |         path: '', | ||||||
|  |         children: [] | ||||||
|  |     } | ||||||
|  | ]; | ||||||
|  | var AppRoutingModule = (function () { | ||||||
|  |     function AppRoutingModule() { | ||||||
|  |     } | ||||||
|  |     AppRoutingModule = __decorate([ | ||||||
|  |         core_1.NgModule({ | ||||||
|  |             imports: [router_1.RouterModule.forRoot(routes)], | ||||||
|  |             exports: [router_1.RouterModule] | ||||||
|  |         }) | ||||||
|  |     ], AppRoutingModule); | ||||||
|  |     return AppRoutingModule; | ||||||
|  | }()); | ||||||
|  | exports.AppRoutingModule = AppRoutingModule; | ||||||
							
								
								
									
										15
									
								
								src/app/app-routing.module.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								src/app/app-routing.module.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,15 @@ | ||||||
|  | import { NgModule } from '@angular/core'; | ||||||
|  | import { Routes, RouterModule } from '@angular/router'; | ||||||
|  | 
 | ||||||
|  | const routes: Routes = [ | ||||||
|  |   { | ||||||
|  |     path: '', | ||||||
|  |     children: [] | ||||||
|  |   } | ||||||
|  | ]; | ||||||
|  | 
 | ||||||
|  | @NgModule({ | ||||||
|  |   imports: [RouterModule.forRoot(routes)], | ||||||
|  |   exports: [RouterModule] | ||||||
|  | }) | ||||||
|  | export class AppRoutingModule { } | ||||||
|  | @ -1,118 +0,0 @@ | ||||||
| .inputwrapper { |  | ||||||
|     font-family: "ABeeZee", sans-serif; |  | ||||||
|     margin: 0 1em 1em 1em; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .textwrapper { |  | ||||||
|     margin: 0 0 1em 0; |  | ||||||
|     padding: 0 1em 0 0; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .arrow_box { |  | ||||||
|     position: relative; |  | ||||||
|     background: #fff; |  | ||||||
|     border: 1px solid #aaa; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .arrow_box:focus { |  | ||||||
|     border-color: #888; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .arrow_box:hover { |  | ||||||
|     border-color: #333; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .arrow_box:after, .arrow_box:before { |  | ||||||
|     top: 100%; |  | ||||||
|     left: 50%; |  | ||||||
|     border: solid transparent; |  | ||||||
|     content: " "; |  | ||||||
|     height: 0; |  | ||||||
|     width: 0; |  | ||||||
|     position: absolute; |  | ||||||
|     pointer-events: none; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .arrow_box:after { |  | ||||||
|     border-color: rgba(255, 255, 255, 0); |  | ||||||
|     border-top-color: #fff; |  | ||||||
|     border-width: 1em; |  | ||||||
|     margin-left: -1em; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .arrow_box:before { |  | ||||||
|     border-color: rgba(170, 170, 170, 0); |  | ||||||
|     border-top-color: #aaa; |  | ||||||
|     border-width: calc(1em + 1px); |  | ||||||
|     margin-left: calc(-1em - 1px); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .arrow_box:focus:before { |  | ||||||
|     border-color: rgba(136, 136, 136, 0); |  | ||||||
|     border-top-color: #888; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .arrow_box:hover:before { |  | ||||||
|     border-color: rgba(51, 51, 51, 0); |  | ||||||
|     border-top-color: #333; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .selectwrapper > .arrow_box { |  | ||||||
|     display: inline-block; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .textinput { |  | ||||||
|     background-color: #fff; |  | ||||||
|     border: none; |  | ||||||
|     color: #000; |  | ||||||
|     font-family: "Free Monospaced", monospace; |  | ||||||
|     height: 10em; |  | ||||||
|     margin: 0; |  | ||||||
|     padding: 0.5em; |  | ||||||
|     resize: vertical; |  | ||||||
|     width: 100%; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .textinput:focus { |  | ||||||
|     border-color: #888; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .textinput:hover { |  | ||||||
|     border-color: #333; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .selectwrapper { |  | ||||||
|     margin: 0 0 1em 0; |  | ||||||
|     padding: 0; |  | ||||||
|     text-align: center; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .select { |  | ||||||
|     background-color: #fff; |  | ||||||
|     border: none; |  | ||||||
|     color: #000; |  | ||||||
|     font-family: "ABeeZee", sans-serif; |  | ||||||
|     margin: 0; |  | ||||||
|     padding: 0.5em; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .option { |  | ||||||
|     /*    font-family: "ABeeZee", sans-serif;*/ |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .selectwrapper.error > .arrow_box { |  | ||||||
|     border-color: red; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .selectwrapper.error > .arrow_box:before { |  | ||||||
|     border-top-color: red; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .selectwrapper.error select { |  | ||||||
|     color: red; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .errormessage { |  | ||||||
|     color: red; |  | ||||||
|     text-align: center; |  | ||||||
| } |  | ||||||
|  | @ -12,5 +12,6 @@ | ||||||
|       </select> |       </select> | ||||||
|     </div> |     </div> | ||||||
|   </div> |   </div> | ||||||
|     <div class="errormessage" *ngIf="step.error">{{step.message}}</div> |   <div class="errormessage" *ngIf="step.error" [innerHTML]="step.message"></div> | ||||||
| </div> | </div> | ||||||
|  | <!--<router-outlet></router-outlet>--> | ||||||
|  |  | ||||||
							
								
								
									
										65
									
								
								src/app/app.component.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								src/app/app.component.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,65 @@ | ||||||
|  | "use strict"; | ||||||
|  | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { | ||||||
|  |     var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; | ||||||
|  |     if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); | ||||||
|  |     else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; | ||||||
|  |     return c > 3 && r && Object.defineProperty(target, key, r), r; | ||||||
|  | }; | ||||||
|  | var core_1 = require("@angular/core"); | ||||||
|  | var converterregistry_service_1 = require("./converterregistry.service"); | ||||||
|  | var inputcomponentmanager_service_1 = require("./inputcomponentmanager.service"); | ||||||
|  | var nativelibrarywrapper_service_1 = require("./nativelibrarywrapper.service"); | ||||||
|  | var AppComponent = (function () { | ||||||
|  |     function AppComponent(converterRegistryService, inputComponentManagerService) { | ||||||
|  |         this.converterRegistryService = converterRegistryService; | ||||||
|  |         this.inputComponentManagerService = inputComponentManagerService; | ||||||
|  |         this.steps = []; | ||||||
|  |         this.converters = []; | ||||||
|  |     } | ||||||
|  |     AppComponent.prototype.convert = function (step, $event) { | ||||||
|  |         step.selectedConverter = this.converterRegistryService.getConverter($event.target.selectedOptions[0].id); | ||||||
|  |         this.update(step); | ||||||
|  |     }; | ||||||
|  |     AppComponent.prototype.update = function (step) { | ||||||
|  |         var converter = step.selectedConverter; | ||||||
|  |         if (converter !== undefined) { | ||||||
|  |             var content = step.content; | ||||||
|  |             var result = void 0; | ||||||
|  |             try { | ||||||
|  |                 result = converter.convert(content); | ||||||
|  |             } | ||||||
|  |             catch (error) { | ||||||
|  |                 if (typeof console === "object" && typeof console.log === "function") { | ||||||
|  |                     console.log(error); | ||||||
|  |                 } | ||||||
|  |                 step.message = error.message; | ||||||
|  |                 step.error = true; | ||||||
|  |                 result = null; | ||||||
|  |             } | ||||||
|  |             if (result !== null) { | ||||||
|  |                 step.message = ""; | ||||||
|  |                 step.error = false; | ||||||
|  |                 if (result !== "") { | ||||||
|  |                     var nextComponent = this.inputComponentManagerService.getNext(step); | ||||||
|  |                     nextComponent.content = result; | ||||||
|  |                     this.update(nextComponent); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     }; | ||||||
|  |     AppComponent.prototype.ngOnInit = function () { | ||||||
|  |         this.converters = this.converterRegistryService.getAllConverters(); | ||||||
|  |         this.steps = this.inputComponentManagerService.getAllComponents(); | ||||||
|  |         this.inputComponentManagerService.getFirst(); | ||||||
|  |     }; | ||||||
|  |     AppComponent = __decorate([ | ||||||
|  |         core_1.Component({ | ||||||
|  |             selector: 'app-root', | ||||||
|  |             templateUrl: './app.component.html', | ||||||
|  |             styleUrls: ['./app.component.scss'], | ||||||
|  |             providers: [converterregistry_service_1.ConverterRegistryService, inputcomponentmanager_service_1.InputComponentManagerService, nativelibrarywrapper_service_1.NativeLibraryWrapperService] | ||||||
|  |         }) | ||||||
|  |     ], AppComponent); | ||||||
|  |     return AppComponent; | ||||||
|  | }()); | ||||||
|  | exports.AppComponent = AppComponent; | ||||||
							
								
								
									
										107
									
								
								src/app/app.component.scss
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										107
									
								
								src/app/app.component.scss
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,107 @@ | ||||||
|  | .inputwrapper { | ||||||
|  |   font-family: "ABeeZee", sans-serif; | ||||||
|  |   margin: 0 1em 1em 1em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .textwrapper { | ||||||
|  |   margin: 0 0 1em 0; | ||||||
|  |   padding: 0 1em 0 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .arrow_box { | ||||||
|  |   position: relative; | ||||||
|  |   background: #fff; | ||||||
|  |   border: 1px solid #aaa; | ||||||
|  |   &:focus { | ||||||
|  |     border-color: #888; | ||||||
|  |   } | ||||||
|  |   &:hover { | ||||||
|  |     border-color: #333; | ||||||
|  |   } | ||||||
|  |   &:after, &:before { | ||||||
|  |     top: 100%; | ||||||
|  |     left: 50%; | ||||||
|  |     border: solid transparent; | ||||||
|  |     content: " "; | ||||||
|  |     height: 0; | ||||||
|  |     width: 0; | ||||||
|  |     position: absolute; | ||||||
|  |     pointer-events: none; | ||||||
|  |   } | ||||||
|  |   &:after { | ||||||
|  |     border-color: rgba(255, 255, 255, 0); | ||||||
|  |     border-top-color: #fff; | ||||||
|  |     border-width: 1em; | ||||||
|  |     margin-left: -1em; | ||||||
|  |   } | ||||||
|  |   &:before { | ||||||
|  |     border-color: rgba(170, 170, 170, 0); | ||||||
|  |     border-top-color: #aaa; | ||||||
|  |     border-width: calc(1em + 1px); | ||||||
|  |     margin-left: calc(-1em - 1px); | ||||||
|  |   } | ||||||
|  |   &:focus:before { | ||||||
|  |     border-color: rgba(136, 136, 136, 0); | ||||||
|  |     border-top-color: #888; | ||||||
|  |   } | ||||||
|  |   &:hover:before { | ||||||
|  |     border-color: rgba(51, 51, 51, 0); | ||||||
|  |     border-top-color: #333; | ||||||
|  |   } | ||||||
|  |   .selectwrapper > & { | ||||||
|  |     display: inline-block; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .textinput { | ||||||
|  |   background-color: #fff; | ||||||
|  |   border: none; | ||||||
|  |   color: #000; | ||||||
|  |   font-family: "Free Monospaced", monospace; | ||||||
|  |   height: 10em; | ||||||
|  |   margin: 0; | ||||||
|  |   padding: 0.5em; | ||||||
|  |   resize: vertical; | ||||||
|  |   width: 100%; | ||||||
|  |   &:focus { | ||||||
|  |     border-color: #888; | ||||||
|  |   } | ||||||
|  |   &:hover { | ||||||
|  |     border-color: #333; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .selectwrapper { | ||||||
|  |   margin: 0 0 1em 0; | ||||||
|  |   padding: 0; | ||||||
|  |   text-align: center; | ||||||
|  |   &.error { | ||||||
|  |     > .arrow_box { | ||||||
|  |       border-color: red; | ||||||
|  |       &:before { | ||||||
|  |         border-top-color: red; | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     select { | ||||||
|  |       color: red; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .select { | ||||||
|  |   background-color: #fff; | ||||||
|  |   border: none; | ||||||
|  |   color: #000; | ||||||
|  |   font-family: "ABeeZee", sans-serif; | ||||||
|  |   margin: 0; | ||||||
|  |   padding: 0.5em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .option { | ||||||
|  |   /*    font-family: "ABeeZee", sans-serif;*/ | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .errormessage { | ||||||
|  |   color: red; | ||||||
|  |   text-align: center; | ||||||
|  | } | ||||||
							
								
								
									
										21
									
								
								src/app/app.component.spec.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								src/app/app.component.spec.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,21 @@ | ||||||
|  | "use strict"; | ||||||
|  | var testing_1 = require('@angular/core/testing'); | ||||||
|  | var testing_2 = require('@angular/router/testing'); | ||||||
|  | var app_component_1 = require('./app.component'); | ||||||
|  | describe('AppComponent', function () { | ||||||
|  |     beforeEach(testing_1.async(function () { | ||||||
|  |         testing_1.TestBed.configureTestingModule({ | ||||||
|  |             imports: [ | ||||||
|  |                 testing_2.RouterTestingModule | ||||||
|  |             ], | ||||||
|  |             declarations: [ | ||||||
|  |                 app_component_1.AppComponent | ||||||
|  |             ], | ||||||
|  |         }).compileComponents(); | ||||||
|  |     })); | ||||||
|  |     it('should create the app', testing_1.async(function () { | ||||||
|  |         var fixture = testing_1.TestBed.createComponent(app_component_1.AppComponent); | ||||||
|  |         var app = fixture.debugElement.componentInstance; | ||||||
|  |         expect(app).toBeTruthy(); | ||||||
|  |     })); | ||||||
|  | }); | ||||||
|  | @ -1,16 +1,23 @@ | ||||||
| import {TestBed} from "@angular/core/testing"; | import { TestBed, async } from '@angular/core/testing'; | ||||||
| import {AppComponent} from "./app.component"; | import { RouterTestingModule } from '@angular/router/testing'; | ||||||
| import {FormsModule} from "@angular/forms"; |  | ||||||
| 
 | 
 | ||||||
| describe('App', () => { | import { AppComponent } from './app.component'; | ||||||
|     beforeEach(() => { | 
 | ||||||
|  | describe('AppComponent', () => { | ||||||
|  |   beforeEach(async(() => { | ||||||
|     TestBed.configureTestingModule({ |     TestBed.configureTestingModule({ | ||||||
|             declarations: [AppComponent], |       imports: [ | ||||||
|             imports: [FormsModule] |         RouterTestingModule | ||||||
|         }); |       ], | ||||||
|     }); |       declarations: [ | ||||||
|     it('should work', () => { |         AppComponent | ||||||
|         let fixture = TestBed.createComponent(AppComponent); |       ], | ||||||
|         expect(fixture.componentInstance instanceof AppComponent).toBe(true, 'should create AppComponent'); |     }).compileComponents(); | ||||||
|     }); |   })); | ||||||
|  | 
 | ||||||
|  |   it('should create the app', async(() => { | ||||||
|  |     const fixture = TestBed.createComponent(AppComponent); | ||||||
|  |     const app = fixture.debugElement.componentInstance; | ||||||
|  |     expect(app).toBeTruthy(); | ||||||
|  |   })); | ||||||
| }); | }); | ||||||
|  | @ -1,36 +1,34 @@ | ||||||
| import {Component, OnInit} from "@angular/core"; | import {Component, OnInit} from "@angular/core"; | ||||||
| import {ConverterRegistryService} from "./converterregistry.service"; | import {ConverterRegistryService} from "./converterregistry.service"; | ||||||
| import {InputComponentManagerService} from "./inputcomponentmanager.service"; | import {InputComponentManagerService} from "./inputcomponentmanager.service"; | ||||||
| import {Converter} from "./converter/converter"; |  | ||||||
| import {NativeLibraryWrapperService} from "./nativelibrarywrapper.service"; | import {NativeLibraryWrapperService} from "./nativelibrarywrapper.service"; | ||||||
| import {Step} from "./step"; | import {Step} from "./step"; | ||||||
| import "../assets/css/style.css"; | import {Converter} from "./converter/converter"; | ||||||
| 
 | 
 | ||||||
| @Component({ | @Component({ | ||||||
|     selector: "den-app", |   selector: 'app-root', | ||||||
|     templateUrl: "./app.component.html", |   templateUrl: './app.component.html', | ||||||
|     styleUrls: ["./app.component.css"], |   styleUrls: ['./app.component.scss'], | ||||||
|   providers: [ConverterRegistryService, InputComponentManagerService, NativeLibraryWrapperService] |   providers: [ConverterRegistryService, InputComponentManagerService, NativeLibraryWrapperService] | ||||||
| }) | }) | ||||||
| export class AppComponent extends OnInit { | export class AppComponent implements OnInit { | ||||||
|     public steps:Step[] = []; |   public steps: Step[] = []; | ||||||
|     public converters:Converter[] = []; |   public converters: Converter[] = []; | ||||||
| 
 | 
 | ||||||
|     constructor(private converterRegistryService:ConverterRegistryService, private inputComponentManagerService:InputComponentManagerService) { |   constructor(private converterRegistryService: ConverterRegistryService, private inputComponentManagerService: InputComponentManagerService) { | ||||||
|         super(); |  | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|     convert(step:Step, $event:any):void { |   convert(step: Step, $event: any): void { | ||||||
|     step.selectedConverter = this.converterRegistryService.getConverter($event.target.selectedOptions[0].id); |     step.selectedConverter = this.converterRegistryService.getConverter($event.target.selectedOptions[0].id); | ||||||
|     this.update(step); |     this.update(step); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|     update(step:Step):void { |   update(step: Step): void { | ||||||
|         let converter:Converter = step.selectedConverter; |     let converter: Converter = step.selectedConverter; | ||||||
| 
 | 
 | ||||||
|     if (converter !== undefined) { |     if (converter !== undefined) { | ||||||
|             let content:string = step.content; |       let content: string = step.content; | ||||||
|             let result:string; |       let result: string; | ||||||
|       try { |       try { | ||||||
|         result = converter.convert(content); |         result = converter.convert(content); | ||||||
|       } catch (error) { |       } catch (error) { | ||||||
|  | @ -45,7 +43,7 @@ export class AppComponent extends OnInit { | ||||||
|         step.message = ""; |         step.message = ""; | ||||||
|         step.error = false; |         step.error = false; | ||||||
|         if (result !== "") { |         if (result !== "") { | ||||||
|                     let nextComponent:Step = this.inputComponentManagerService.getNext(step); |           let nextComponent: Step = this.inputComponentManagerService.getNext(step); | ||||||
|           nextComponent.content = result; |           nextComponent.content = result; | ||||||
|           this.update(nextComponent); |           this.update(nextComponent); | ||||||
|         } |         } | ||||||
|  | @ -53,7 +51,7 @@ export class AppComponent extends OnInit { | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|     ngOnInit():void { |   ngOnInit(): void { | ||||||
|     this.converters = this.converterRegistryService.getAllConverters(); |     this.converters = this.converterRegistryService.getAllConverters(); | ||||||
|     this.steps = this.inputComponentManagerService.getAllComponents(); |     this.steps = this.inputComponentManagerService.getAllComponents(); | ||||||
|     this.inputComponentManagerService.getFirst(); |     this.inputComponentManagerService.getFirst(); | ||||||
|  |  | ||||||
							
								
								
									
										34
									
								
								src/app/app.module.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								src/app/app.module.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,34 @@ | ||||||
|  | "use strict"; | ||||||
|  | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { | ||||||
|  |     var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; | ||||||
|  |     if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); | ||||||
|  |     else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; | ||||||
|  |     return c > 3 && r && Object.defineProperty(target, key, r), r; | ||||||
|  | }; | ||||||
|  | var platform_browser_1 = require('@angular/platform-browser'); | ||||||
|  | var core_1 = require('@angular/core'); | ||||||
|  | var forms_1 = require('@angular/forms'); | ||||||
|  | var http_1 = require('@angular/http'); | ||||||
|  | var app_routing_module_1 = require('./app-routing.module'); | ||||||
|  | var app_component_1 = require('./app.component'); | ||||||
|  | var AppModule = (function () { | ||||||
|  |     function AppModule() { | ||||||
|  |     } | ||||||
|  |     AppModule = __decorate([ | ||||||
|  |         core_1.NgModule({ | ||||||
|  |             declarations: [ | ||||||
|  |                 app_component_1.AppComponent | ||||||
|  |             ], | ||||||
|  |             imports: [ | ||||||
|  |                 platform_browser_1.BrowserModule, | ||||||
|  |                 forms_1.FormsModule, | ||||||
|  |                 http_1.HttpModule, | ||||||
|  |                 app_routing_module_1.AppRoutingModule | ||||||
|  |             ], | ||||||
|  |             providers: [], | ||||||
|  |             bootstrap: [app_component_1.AppComponent] | ||||||
|  |         }) | ||||||
|  |     ], AppModule); | ||||||
|  |     return AppModule; | ||||||
|  | }()); | ||||||
|  | exports.AppModule = AppModule; | ||||||
|  | @ -1,17 +1,22 @@ | ||||||
| import {NgModule} from "@angular/core"; | import { BrowserModule } from '@angular/platform-browser'; | ||||||
| import {BrowserModule} from "@angular/platform-browser"; | import { NgModule } from '@angular/core'; | ||||||
| import {FormsModule} from "@angular/forms"; | import { FormsModule } from '@angular/forms'; | ||||||
| import {AppComponent} from "./app.component"; | import { HttpModule } from '@angular/http'; | ||||||
|  | 
 | ||||||
|  | import { AppRoutingModule } from './app-routing.module'; | ||||||
|  | import { AppComponent } from './app.component'; | ||||||
| 
 | 
 | ||||||
| @NgModule({ | @NgModule({ | ||||||
|     imports: [ |  | ||||||
|         BrowserModule, |  | ||||||
|         FormsModule |  | ||||||
|     ], |  | ||||||
|   declarations: [ |   declarations: [ | ||||||
|     AppComponent |     AppComponent | ||||||
|   ], |   ], | ||||||
|  |   imports: [ | ||||||
|  |     BrowserModule, | ||||||
|  |     FormsModule, | ||||||
|  |     HttpModule, | ||||||
|  |     AppRoutingModule | ||||||
|  |   ], | ||||||
|  |   providers: [], | ||||||
|   bootstrap: [AppComponent] |   bootstrap: [AppComponent] | ||||||
| }) | }) | ||||||
| export class AppModule { | export class AppModule { } | ||||||
| } |  | ||||||
|  |  | ||||||
							
								
								
									
										21
									
								
								src/app/converter/base64decoder.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								src/app/converter/base64decoder.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,21 @@ | ||||||
|  | "use strict"; | ||||||
|  | var Base64Decoder = (function () { | ||||||
|  |     function Base64Decoder() { | ||||||
|  |     } | ||||||
|  |     Base64Decoder.prototype.getDisplayname = function () { | ||||||
|  |         return "Decode Base 64"; | ||||||
|  |     }; | ||||||
|  |     Base64Decoder.prototype.getId = function () { | ||||||
|  |         return "base64decode"; | ||||||
|  |     }; | ||||||
|  |     Base64Decoder.prototype.convert = function (input) { | ||||||
|  |         try { | ||||||
|  |             return atob(input); | ||||||
|  |         } | ||||||
|  |         catch (exception) { | ||||||
|  |             throw new Error("Could not decode base64 string. Maybe corrupt input?"); | ||||||
|  |         } | ||||||
|  |     }; | ||||||
|  |     return Base64Decoder; | ||||||
|  | }()); | ||||||
|  | exports.Base64Decoder = Base64Decoder; | ||||||
							
								
								
									
										22
									
								
								src/app/converter/base64encoder.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								src/app/converter/base64encoder.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,22 @@ | ||||||
|  | "use strict"; | ||||||
|  | var Base64Encoder = (function () { | ||||||
|  |     function Base64Encoder() { | ||||||
|  |     } | ||||||
|  |     Base64Encoder.prototype.getDisplayname = function () { | ||||||
|  |         return "Encode Base 64"; | ||||||
|  |     }; | ||||||
|  |     Base64Encoder.prototype.getId = function () { | ||||||
|  |         return "base64encode"; | ||||||
|  |     }; | ||||||
|  |     Base64Encoder.prototype.convert = function (input) { | ||||||
|  |         try { | ||||||
|  |             return btoa(input); | ||||||
|  |         } | ||||||
|  |         catch (exception) { | ||||||
|  |             console.error(exception); | ||||||
|  |             throw new Error("Ouch! Looks like you've got a UTF-8 character there. Too bad, this is not supported yet. We're working on it and hope to be ready soon! Why don't you <a href=\"https://duckduckgo.com/?q=cute+kitties&iar=images\">enjoy some kittens</a> meanwhile?"); | ||||||
|  |         } | ||||||
|  |     }; | ||||||
|  |     return Base64Encoder; | ||||||
|  | }()); | ||||||
|  | exports.Base64Encoder = Base64Encoder; | ||||||
|  | @ -1,19 +1,20 @@ | ||||||
| import {Converter} from "./converter"; | import {Converter} from "./converter"; | ||||||
| 
 | 
 | ||||||
| export class Base64Encoder implements Converter { | export class Base64Encoder implements Converter { | ||||||
|     getDisplayname():string { |   getDisplayname(): string { | ||||||
|     return "Encode Base 64"; |     return "Encode Base 64"; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|     getId():string { |   getId(): string { | ||||||
|     return "base64encode"; |     return "base64encode"; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|     convert(input:string):string { |   convert(input: string): string { | ||||||
|     try { |     try { | ||||||
|       return btoa(input); |       return btoa(input); | ||||||
|     } catch (exception) { |     } catch (exception) { | ||||||
|             throw new Error("Could not encode base64 string. This should not happen, so why don't you just try again?"); |       console.error(exception); | ||||||
|  |       throw new Error("Ouch! Looks like you've got a UTF-8 character there. Too bad, this is not supported yet. We're working on it and hope to be ready soon! Why don't you <a href=\"https://duckduckgo.com/?q=cute+kitties&iar=images\">enjoy some kittens</a> meanwhile?"); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
							
								
								
									
										20
									
								
								src/app/converter/bintodecconverter.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								src/app/converter/bintodecconverter.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,20 @@ | ||||||
|  | "use strict"; | ||||||
|  | var BinToDecConverter = (function () { | ||||||
|  |     function BinToDecConverter() { | ||||||
|  |     } | ||||||
|  |     BinToDecConverter.prototype.getDisplayname = function () { | ||||||
|  |         return "Convert binary to decimal"; | ||||||
|  |     }; | ||||||
|  |     BinToDecConverter.prototype.getId = function () { | ||||||
|  |         return "bintodec"; | ||||||
|  |     }; | ||||||
|  |     BinToDecConverter.prototype.convert = function (input) { | ||||||
|  |         var n = parseInt(input, 2); | ||||||
|  |         if (isNaN(n)) { | ||||||
|  |             throw new Error("The input seems not to be a valid binary number."); | ||||||
|  |         } | ||||||
|  |         return n.toString(10); | ||||||
|  |     }; | ||||||
|  |     return BinToDecConverter; | ||||||
|  | }()); | ||||||
|  | exports.BinToDecConverter = BinToDecConverter; | ||||||
							
								
								
									
										1
									
								
								src/app/converter/converter.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								src/app/converter/converter.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | ||||||
|  | "use strict"; | ||||||
							
								
								
									
										20
									
								
								src/app/converter/dectobinconverter.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								src/app/converter/dectobinconverter.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,20 @@ | ||||||
|  | "use strict"; | ||||||
|  | var DecToBinConverter = (function () { | ||||||
|  |     function DecToBinConverter() { | ||||||
|  |     } | ||||||
|  |     DecToBinConverter.prototype.getDisplayname = function () { | ||||||
|  |         return "Convert decimal to binary"; | ||||||
|  |     }; | ||||||
|  |     DecToBinConverter.prototype.getId = function () { | ||||||
|  |         return "dectobin"; | ||||||
|  |     }; | ||||||
|  |     DecToBinConverter.prototype.convert = function (input) { | ||||||
|  |         var n = parseInt(input, 10); | ||||||
|  |         if (isNaN(n)) { | ||||||
|  |             throw new Error("The input seems not to be a valid integer."); | ||||||
|  |         } | ||||||
|  |         return n.toString(2); | ||||||
|  |     }; | ||||||
|  |     return DecToBinConverter; | ||||||
|  | }()); | ||||||
|  | exports.DecToBinConverter = DecToBinConverter; | ||||||
							
								
								
									
										20
									
								
								src/app/converter/dectohexconverter.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								src/app/converter/dectohexconverter.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,20 @@ | ||||||
|  | "use strict"; | ||||||
|  | var DecToHexConverter = (function () { | ||||||
|  |     function DecToHexConverter() { | ||||||
|  |     } | ||||||
|  |     DecToHexConverter.prototype.getDisplayname = function () { | ||||||
|  |         return "Convert decimal to hexadecimal"; | ||||||
|  |     }; | ||||||
|  |     DecToHexConverter.prototype.getId = function () { | ||||||
|  |         return "dectohex"; | ||||||
|  |     }; | ||||||
|  |     DecToHexConverter.prototype.convert = function (input) { | ||||||
|  |         var n = parseInt(input, 10); | ||||||
|  |         if (isNaN(n)) { | ||||||
|  |             throw new Error("The input seems not to be a valid integer."); | ||||||
|  |         } | ||||||
|  |         return n.toString(16); | ||||||
|  |     }; | ||||||
|  |     return DecToHexConverter; | ||||||
|  | }()); | ||||||
|  | exports.DecToHexConverter = DecToHexConverter; | ||||||
							
								
								
									
										20
									
								
								src/app/converter/hextodecconverter.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								src/app/converter/hextodecconverter.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,20 @@ | ||||||
|  | "use strict"; | ||||||
|  | var HexToDecConverter = (function () { | ||||||
|  |     function HexToDecConverter() { | ||||||
|  |     } | ||||||
|  |     HexToDecConverter.prototype.getDisplayname = function () { | ||||||
|  |         return "Convert hexadecimal to decimal"; | ||||||
|  |     }; | ||||||
|  |     HexToDecConverter.prototype.getId = function () { | ||||||
|  |         return "hextodec"; | ||||||
|  |     }; | ||||||
|  |     HexToDecConverter.prototype.convert = function (input) { | ||||||
|  |         var n = parseInt(input, 16); | ||||||
|  |         if (isNaN(n)) { | ||||||
|  |             throw new Error("The input seems not to be a valid hexadecimal number."); | ||||||
|  |         } | ||||||
|  |         return n.toString(10); | ||||||
|  |     }; | ||||||
|  |     return HexToDecConverter; | ||||||
|  | }()); | ||||||
|  | exports.HexToDecConverter = HexToDecConverter; | ||||||
							
								
								
									
										20
									
								
								src/app/converter/htmlentitiesdecoder.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								src/app/converter/htmlentitiesdecoder.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,20 @@ | ||||||
|  | "use strict"; | ||||||
|  | var HTMLEntitiesDecoder = (function () { | ||||||
|  |     function HTMLEntitiesDecoder() { | ||||||
|  |     } | ||||||
|  |     HTMLEntitiesDecoder.prototype.getDisplayname = function () { | ||||||
|  |         return "Decode HTML entities"; | ||||||
|  |     }; | ||||||
|  |     HTMLEntitiesDecoder.prototype.getId = function () { | ||||||
|  |         return "decodehtmlentities"; | ||||||
|  |     }; | ||||||
|  |     HTMLEntitiesDecoder.prototype.convert = function (input) { | ||||||
|  |         return input | ||||||
|  |             .replace(/\"\;/g, "\"") | ||||||
|  |             .replace(/\>\;/g, ">") | ||||||
|  |             .replace(/\<\;/g, "<") | ||||||
|  |             .replace(/\&\;/g, "&"); | ||||||
|  |     }; | ||||||
|  |     return HTMLEntitiesDecoder; | ||||||
|  | }()); | ||||||
|  | exports.HTMLEntitiesDecoder = HTMLEntitiesDecoder; | ||||||
							
								
								
									
										20
									
								
								src/app/converter/htmlentitiesencoder.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								src/app/converter/htmlentitiesencoder.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,20 @@ | ||||||
|  | "use strict"; | ||||||
|  | var HTMLEntitiesEncoder = (function () { | ||||||
|  |     function HTMLEntitiesEncoder() { | ||||||
|  |     } | ||||||
|  |     HTMLEntitiesEncoder.prototype.getDisplayname = function () { | ||||||
|  |         return "Encode HTML entities"; | ||||||
|  |     }; | ||||||
|  |     HTMLEntitiesEncoder.prototype.getId = function () { | ||||||
|  |         return "encodehtmlentities"; | ||||||
|  |     }; | ||||||
|  |     HTMLEntitiesEncoder.prototype.convert = function (input) { | ||||||
|  |         return input | ||||||
|  |             .replace(/\&/g, "&") | ||||||
|  |             .replace(/\</g, "<") | ||||||
|  |             .replace(/\>/g, ">") | ||||||
|  |             .replace(/\"/g, """); | ||||||
|  |     }; | ||||||
|  |     return HTMLEntitiesEncoder; | ||||||
|  | }()); | ||||||
|  | exports.HTMLEntitiesEncoder = HTMLEntitiesEncoder; | ||||||
							
								
								
									
										17
									
								
								src/app/converter/punycodedecoder.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								src/app/converter/punycodedecoder.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,17 @@ | ||||||
|  | "use strict"; | ||||||
|  | var PunycodeDecoder = (function () { | ||||||
|  |     function PunycodeDecoder(nativeLibraryWrapperService) { | ||||||
|  |         this.nativeLibraryWrapperService = nativeLibraryWrapperService; | ||||||
|  |     } | ||||||
|  |     PunycodeDecoder.prototype.getDisplayname = function () { | ||||||
|  |         return "Decode from punycode"; | ||||||
|  |     }; | ||||||
|  |     PunycodeDecoder.prototype.getId = function () { | ||||||
|  |         return "decodepunycode"; | ||||||
|  |     }; | ||||||
|  |     PunycodeDecoder.prototype.convert = function (input) { | ||||||
|  |         return this.nativeLibraryWrapperService.punycode.decode(input); | ||||||
|  |     }; | ||||||
|  |     return PunycodeDecoder; | ||||||
|  | }()); | ||||||
|  | exports.PunycodeDecoder = PunycodeDecoder; | ||||||
							
								
								
									
										17
									
								
								src/app/converter/punycodeencoder.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								src/app/converter/punycodeencoder.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,17 @@ | ||||||
|  | "use strict"; | ||||||
|  | var PunycodeEncoder = (function () { | ||||||
|  |     function PunycodeEncoder(nativeLibraryWrapperService) { | ||||||
|  |         this.nativeLibraryWrapperService = nativeLibraryWrapperService; | ||||||
|  |     } | ||||||
|  |     PunycodeEncoder.prototype.getDisplayname = function () { | ||||||
|  |         return "Encode as punycode"; | ||||||
|  |     }; | ||||||
|  |     PunycodeEncoder.prototype.getId = function () { | ||||||
|  |         return "encodepunycode"; | ||||||
|  |     }; | ||||||
|  |     PunycodeEncoder.prototype.convert = function (input) { | ||||||
|  |         return this.nativeLibraryWrapperService.punycode.encode(input); | ||||||
|  |     }; | ||||||
|  |     return PunycodeEncoder; | ||||||
|  | }()); | ||||||
|  | exports.PunycodeEncoder = PunycodeEncoder; | ||||||
							
								
								
									
										22
									
								
								src/app/converter/quotedprintabledecoder.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								src/app/converter/quotedprintabledecoder.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,22 @@ | ||||||
|  | "use strict"; | ||||||
|  | var QuotedPrintableDecoder = (function () { | ||||||
|  |     function QuotedPrintableDecoder(nativeLibraryWrapperService) { | ||||||
|  |         this.nativeLibraryWrapperService = nativeLibraryWrapperService; | ||||||
|  |     } | ||||||
|  |     QuotedPrintableDecoder.prototype.getDisplayname = function () { | ||||||
|  |         return "Decode quoted printable"; | ||||||
|  |     }; | ||||||
|  |     QuotedPrintableDecoder.prototype.getId = function () { | ||||||
|  |         return "decodequotedprintable"; | ||||||
|  |     }; | ||||||
|  |     QuotedPrintableDecoder.prototype.convert = function (input) { | ||||||
|  |         try { | ||||||
|  |             return this.nativeLibraryWrapperService.quotedPrintable.decode(input); | ||||||
|  |         } | ||||||
|  |         catch (error) { | ||||||
|  |             throw new Error("The input can not be interpreted as quoted-printable. May be corrupt?"); | ||||||
|  |         } | ||||||
|  |     }; | ||||||
|  |     return QuotedPrintableDecoder; | ||||||
|  | }()); | ||||||
|  | exports.QuotedPrintableDecoder = QuotedPrintableDecoder; | ||||||
							
								
								
									
										17
									
								
								src/app/converter/quotedprintableencoder.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								src/app/converter/quotedprintableencoder.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,17 @@ | ||||||
|  | "use strict"; | ||||||
|  | var QuotedPrintableEncoder = (function () { | ||||||
|  |     function QuotedPrintableEncoder(nativeLibraryWrapperService) { | ||||||
|  |         this.nativeLibraryWrapperService = nativeLibraryWrapperService; | ||||||
|  |     } | ||||||
|  |     QuotedPrintableEncoder.prototype.getDisplayname = function () { | ||||||
|  |         return "Encode quoted printable"; | ||||||
|  |     }; | ||||||
|  |     QuotedPrintableEncoder.prototype.getId = function () { | ||||||
|  |         return "encodequotedprintable"; | ||||||
|  |     }; | ||||||
|  |     QuotedPrintableEncoder.prototype.convert = function (input) { | ||||||
|  |         return this.nativeLibraryWrapperService.quotedPrintable.encode(input); | ||||||
|  |     }; | ||||||
|  |     return QuotedPrintableEncoder; | ||||||
|  | }()); | ||||||
|  | exports.QuotedPrintableEncoder = QuotedPrintableEncoder; | ||||||
							
								
								
									
										16
									
								
								src/app/converter/uricomponentdecoder.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								src/app/converter/uricomponentdecoder.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,16 @@ | ||||||
|  | "use strict"; | ||||||
|  | var URIComponentDecoder = (function () { | ||||||
|  |     function URIComponentDecoder() { | ||||||
|  |     } | ||||||
|  |     URIComponentDecoder.prototype.getDisplayname = function () { | ||||||
|  |         return "Decode URI component"; | ||||||
|  |     }; | ||||||
|  |     URIComponentDecoder.prototype.getId = function () { | ||||||
|  |         return "uricomponentdecode"; | ||||||
|  |     }; | ||||||
|  |     URIComponentDecoder.prototype.convert = function (input) { | ||||||
|  |         return decodeURIComponent(input); | ||||||
|  |     }; | ||||||
|  |     return URIComponentDecoder; | ||||||
|  | }()); | ||||||
|  | exports.URIComponentDecoder = URIComponentDecoder; | ||||||
							
								
								
									
										18
									
								
								src/app/converter/uricomponentencoder.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								src/app/converter/uricomponentencoder.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,18 @@ | ||||||
|  | "use strict"; | ||||||
|  | var URIComponentEncoder = (function () { | ||||||
|  |     function URIComponentEncoder() { | ||||||
|  |     } | ||||||
|  |     URIComponentEncoder.prototype.getDisplayname = function () { | ||||||
|  |         return "Encode URI component"; | ||||||
|  |     }; | ||||||
|  |     URIComponentEncoder.prototype.getId = function () { | ||||||
|  |         return "uricomponentencode"; | ||||||
|  |     }; | ||||||
|  |     URIComponentEncoder.prototype.convert = function (input) { | ||||||
|  |         return encodeURIComponent(input).replace(/[!'()*]/g, function (c) { | ||||||
|  |             return '%' + c.charCodeAt(0).toString(16); | ||||||
|  |         }); | ||||||
|  |     }; | ||||||
|  |     return URIComponentEncoder; | ||||||
|  | }()); | ||||||
|  | exports.URIComponentEncoder = URIComponentEncoder; | ||||||
							
								
								
									
										16
									
								
								src/app/converter/uridecoder.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								src/app/converter/uridecoder.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,16 @@ | ||||||
|  | "use strict"; | ||||||
|  | var URIDecoder = (function () { | ||||||
|  |     function URIDecoder() { | ||||||
|  |     } | ||||||
|  |     URIDecoder.prototype.getDisplayname = function () { | ||||||
|  |         return "Decode URI"; | ||||||
|  |     }; | ||||||
|  |     URIDecoder.prototype.getId = function () { | ||||||
|  |         return "uridecode"; | ||||||
|  |     }; | ||||||
|  |     URIDecoder.prototype.convert = function (input) { | ||||||
|  |         return decodeURI(input); | ||||||
|  |     }; | ||||||
|  |     return URIDecoder; | ||||||
|  | }()); | ||||||
|  | exports.URIDecoder = URIDecoder; | ||||||
							
								
								
									
										16
									
								
								src/app/converter/uriencoder.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								src/app/converter/uriencoder.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,16 @@ | ||||||
|  | "use strict"; | ||||||
|  | var URIEncoder = (function () { | ||||||
|  |     function URIEncoder() { | ||||||
|  |     } | ||||||
|  |     URIEncoder.prototype.getDisplayname = function () { | ||||||
|  |         return "Encode URI"; | ||||||
|  |     }; | ||||||
|  |     URIEncoder.prototype.getId = function () { | ||||||
|  |         return "uriencode"; | ||||||
|  |     }; | ||||||
|  |     URIEncoder.prototype.convert = function (input) { | ||||||
|  |         return encodeURI(input).replace(/%5B/g, '[').replace(/%5D/g, ']'); | ||||||
|  |     }; | ||||||
|  |     return URIEncoder; | ||||||
|  | }()); | ||||||
|  | exports.URIEncoder = URIEncoder; | ||||||
							
								
								
									
										22
									
								
								src/app/converter/utf8decoder.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								src/app/converter/utf8decoder.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,22 @@ | ||||||
|  | "use strict"; | ||||||
|  | var UTF8Decoder = (function () { | ||||||
|  |     function UTF8Decoder(nativeLibraryWrapperService) { | ||||||
|  |         this.nativeLibraryWrapperService = nativeLibraryWrapperService; | ||||||
|  |     } | ||||||
|  |     UTF8Decoder.prototype.getDisplayname = function () { | ||||||
|  |         return "Decode UTF-8"; | ||||||
|  |     }; | ||||||
|  |     UTF8Decoder.prototype.getId = function () { | ||||||
|  |         return "decodeutf8"; | ||||||
|  |     }; | ||||||
|  |     UTF8Decoder.prototype.convert = function (input) { | ||||||
|  |         try { | ||||||
|  |             return this.nativeLibraryWrapperService.utf8.decode(input); | ||||||
|  |         } | ||||||
|  |         catch (error) { | ||||||
|  |             throw new Error("The input can not be interpreted a valid UTF-8 encoded string. May be corrupt?"); | ||||||
|  |         } | ||||||
|  |     }; | ||||||
|  |     return UTF8Decoder; | ||||||
|  | }()); | ||||||
|  | exports.UTF8Decoder = UTF8Decoder; | ||||||
							
								
								
									
										22
									
								
								src/app/converter/utf8encoder.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								src/app/converter/utf8encoder.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,22 @@ | ||||||
|  | "use strict"; | ||||||
|  | var UTF8Encoder = (function () { | ||||||
|  |     function UTF8Encoder(nativeLibraryWrapperService) { | ||||||
|  |         this.nativeLibraryWrapperService = nativeLibraryWrapperService; | ||||||
|  |     } | ||||||
|  |     UTF8Encoder.prototype.getDisplayname = function () { | ||||||
|  |         return "Encode UTF-8"; | ||||||
|  |     }; | ||||||
|  |     UTF8Encoder.prototype.getId = function () { | ||||||
|  |         return "encodeutf8"; | ||||||
|  |     }; | ||||||
|  |     UTF8Encoder.prototype.convert = function (input) { | ||||||
|  |         try { | ||||||
|  |             return this.nativeLibraryWrapperService.utf8.encode(input); | ||||||
|  |         } | ||||||
|  |         catch (error) { | ||||||
|  |             throw new Error("The input can not be encoded as UTF-8. May be corrupt?"); | ||||||
|  |         } | ||||||
|  |     }; | ||||||
|  |     return UTF8Encoder; | ||||||
|  | }()); | ||||||
|  | exports.UTF8Encoder = UTF8Encoder; | ||||||
							
								
								
									
										77
									
								
								src/app/converterregistry.service.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								src/app/converterregistry.service.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,77 @@ | ||||||
|  | "use strict"; | ||||||
|  | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { | ||||||
|  |     var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; | ||||||
|  |     if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); | ||||||
|  |     else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; | ||||||
|  |     return c > 3 && r && Object.defineProperty(target, key, r), r; | ||||||
|  | }; | ||||||
|  | var core_1 = require("@angular/core"); | ||||||
|  | var base64encoder_1 = require("./converter/base64encoder"); | ||||||
|  | var base64decoder_1 = require("./converter/base64decoder"); | ||||||
|  | var uriencoder_1 = require("./converter/uriencoder"); | ||||||
|  | var uridecoder_1 = require("./converter/uridecoder"); | ||||||
|  | var uricomponentencoder_1 = require("./converter/uricomponentencoder"); | ||||||
|  | var uricomponentdecoder_1 = require("./converter/uricomponentdecoder"); | ||||||
|  | var htmlentitiesencoder_1 = require("./converter/htmlentitiesencoder"); | ||||||
|  | var htmlentitiesdecoder_1 = require("./converter/htmlentitiesdecoder"); | ||||||
|  | var dectohexconverter_1 = require("./converter/dectohexconverter"); | ||||||
|  | var hextodecconverter_1 = require("./converter/hextodecconverter"); | ||||||
|  | var dectobinconverter_1 = require("./converter/dectobinconverter"); | ||||||
|  | var bintodecconverter_1 = require("./converter/bintodecconverter"); | ||||||
|  | var quotedprintabledecoder_1 = require("./converter/quotedprintabledecoder"); | ||||||
|  | var quotedprintableencoder_1 = require("./converter/quotedprintableencoder"); | ||||||
|  | var punycodeencoder_1 = require("./converter/punycodeencoder"); | ||||||
|  | var punycodedecoder_1 = require("./converter/punycodedecoder"); | ||||||
|  | var utf8encoder_1 = require("./converter/utf8encoder"); | ||||||
|  | var utf8decoder_1 = require("./converter/utf8decoder"); | ||||||
|  | var ConverterRegistryService = (function () { | ||||||
|  |     function ConverterRegistryService(wrapper) { | ||||||
|  |         this.wrapper = wrapper; | ||||||
|  |         this.converters = []; | ||||||
|  |         this.init(); | ||||||
|  |     } | ||||||
|  |     ConverterRegistryService.prototype.getAllConverters = function () { | ||||||
|  |         return this.converters; | ||||||
|  |     }; | ||||||
|  |     ConverterRegistryService.prototype.getConverter = function (id) { | ||||||
|  |         for (var i = 0; i < this.converters.length; i++) { | ||||||
|  |             if (this.converters[i].getId() == id) { | ||||||
|  |                 return this.converters[i]; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return undefined; | ||||||
|  |     }; | ||||||
|  |     ConverterRegistryService.prototype.init = function () { | ||||||
|  |         this.registerConverter(new base64encoder_1.Base64Encoder()); | ||||||
|  |         this.registerConverter(new base64decoder_1.Base64Decoder()); | ||||||
|  |         this.registerConverter(new uriencoder_1.URIEncoder()); | ||||||
|  |         this.registerConverter(new uridecoder_1.URIDecoder()); | ||||||
|  |         this.registerConverter(new uricomponentencoder_1.URIComponentEncoder()); | ||||||
|  |         this.registerConverter(new uricomponentdecoder_1.URIComponentDecoder()); | ||||||
|  |         this.registerConverter(new htmlentitiesencoder_1.HTMLEntitiesEncoder()); | ||||||
|  |         this.registerConverter(new htmlentitiesdecoder_1.HTMLEntitiesDecoder()); | ||||||
|  |         this.registerConverter(new quotedprintableencoder_1.QuotedPrintableEncoder(this.wrapper)); | ||||||
|  |         this.registerConverter(new quotedprintabledecoder_1.QuotedPrintableDecoder(this.wrapper)); | ||||||
|  |         this.registerConverter(new dectohexconverter_1.DecToHexConverter()); | ||||||
|  |         this.registerConverter(new hextodecconverter_1.HexToDecConverter()); | ||||||
|  |         this.registerConverter(new dectobinconverter_1.DecToBinConverter()); | ||||||
|  |         this.registerConverter(new bintodecconverter_1.BinToDecConverter()); | ||||||
|  |         this.registerConverter(new punycodeencoder_1.PunycodeEncoder(this.wrapper)); | ||||||
|  |         this.registerConverter(new punycodedecoder_1.PunycodeDecoder(this.wrapper)); | ||||||
|  |         this.registerConverter(new utf8encoder_1.UTF8Encoder(this.wrapper)); | ||||||
|  |         this.registerConverter(new utf8decoder_1.UTF8Decoder(this.wrapper)); | ||||||
|  |     }; | ||||||
|  |     ConverterRegistryService.prototype.registerConverter = function (converter) { | ||||||
|  |         this.converters.forEach(function (c) { | ||||||
|  |             if (c.getId() == converter.getId()) { | ||||||
|  |                 throw new Error("Converter-ID " + converter.getId() + " is already registered!"); | ||||||
|  |             } | ||||||
|  |         }); | ||||||
|  |         this.converters.push(converter); | ||||||
|  |     }; | ||||||
|  |     ConverterRegistryService = __decorate([ | ||||||
|  |         core_1.Injectable() | ||||||
|  |     ], ConverterRegistryService); | ||||||
|  |     return ConverterRegistryService; | ||||||
|  | }()); | ||||||
|  | exports.ConverterRegistryService = ConverterRegistryService; | ||||||
							
								
								
									
										41
									
								
								src/app/inputcomponentmanager.service.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								src/app/inputcomponentmanager.service.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,41 @@ | ||||||
|  | "use strict"; | ||||||
|  | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { | ||||||
|  |     var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; | ||||||
|  |     if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); | ||||||
|  |     else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; | ||||||
|  |     return c > 3 && r && Object.defineProperty(target, key, r), r; | ||||||
|  | }; | ||||||
|  | var core_1 = require("@angular/core"); | ||||||
|  | var step_1 = require("./step"); | ||||||
|  | var InputComponentManagerService = (function () { | ||||||
|  |     function InputComponentManagerService() { | ||||||
|  |         this.components = []; | ||||||
|  |     } | ||||||
|  |     InputComponentManagerService.prototype.register = function (component) { | ||||||
|  |         this.components.push(component); | ||||||
|  |     }; | ||||||
|  |     InputComponentManagerService.prototype.getAllComponents = function () { | ||||||
|  |         return this.components; | ||||||
|  |     }; | ||||||
|  |     InputComponentManagerService.prototype.getNext = function (component) { | ||||||
|  |         var index = component.index; | ||||||
|  |         if (index == this.components.length - 1) { | ||||||
|  |             this.addComponent(); | ||||||
|  |         } | ||||||
|  |         return this.components[index + 1]; | ||||||
|  |     }; | ||||||
|  |     InputComponentManagerService.prototype.getFirst = function () { | ||||||
|  |         if (this.components.length == 0) { | ||||||
|  |             this.addComponent(); | ||||||
|  |         } | ||||||
|  |         return this.components[0]; | ||||||
|  |     }; | ||||||
|  |     InputComponentManagerService.prototype.addComponent = function () { | ||||||
|  |         this.register(new step_1.Step(this.components.length)); | ||||||
|  |     }; | ||||||
|  |     InputComponentManagerService = __decorate([ | ||||||
|  |         core_1.Injectable() | ||||||
|  |     ], InputComponentManagerService); | ||||||
|  |     return InputComponentManagerService; | ||||||
|  | }()); | ||||||
|  | exports.InputComponentManagerService = InputComponentManagerService; | ||||||
							
								
								
									
										23
									
								
								src/app/nativelibrarywrapper.service.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								src/app/nativelibrarywrapper.service.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,23 @@ | ||||||
|  | "use strict"; | ||||||
|  | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { | ||||||
|  |     var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; | ||||||
|  |     if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); | ||||||
|  |     else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; | ||||||
|  |     return c > 3 && r && Object.defineProperty(target, key, r), r; | ||||||
|  | }; | ||||||
|  | var core_1 = require("@angular/core"); | ||||||
|  | var NativeUtf8 = require("utf8"); | ||||||
|  | var NativeQuotedPrintable = require("quoted-printable"); | ||||||
|  | var NativePunycode = require("punycode"); | ||||||
|  | var NativeLibraryWrapperService = (function () { | ||||||
|  |     function NativeLibraryWrapperService() { | ||||||
|  |         this.utf8 = NativeUtf8; | ||||||
|  |         this.quotedPrintable = NativeQuotedPrintable; | ||||||
|  |         this.punycode = NativePunycode; | ||||||
|  |     } | ||||||
|  |     NativeLibraryWrapperService = __decorate([ | ||||||
|  |         core_1.Injectable() | ||||||
|  |     ], NativeLibraryWrapperService); | ||||||
|  |     return NativeLibraryWrapperService; | ||||||
|  | }()); | ||||||
|  | exports.NativeLibraryWrapperService = NativeLibraryWrapperService; | ||||||
|  | @ -2,16 +2,19 @@ import {Injectable} from "@angular/core"; | ||||||
| import {Punycode} from "./punycode"; | import {Punycode} from "./punycode"; | ||||||
| import {Utf8} from "./utf8"; | import {Utf8} from "./utf8"; | ||||||
| import {QuotedPrintable} from "./quotedprintable"; | import {QuotedPrintable} from "./quotedprintable"; | ||||||
|  | import * as NativeUtf8 from "utf8"; | ||||||
|  | import * as NativeQuotedPrintable from "quoted-printable"; | ||||||
|  | import * as NativePunycode from "punycode"; | ||||||
| 
 | 
 | ||||||
| @Injectable() | @Injectable() | ||||||
| export class NativeLibraryWrapperService { | export class NativeLibraryWrapperService { | ||||||
|     public utf8:Utf8; |   public utf8: Utf8; | ||||||
|     public quotedPrintable:QuotedPrintable; |   public quotedPrintable: QuotedPrintable; | ||||||
|     public punycode:Punycode; |   public punycode: Punycode; | ||||||
| 
 | 
 | ||||||
|   constructor() { |   constructor() { | ||||||
|         this.utf8 = require("utf8"); |     this.utf8 = NativeUtf8; | ||||||
|         this.quotedPrintable = require("quoted-printable"); |     this.quotedPrintable = NativeQuotedPrintable; | ||||||
|         this.punycode = require("punycode"); |     this.punycode = NativePunycode; | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
							
								
								
									
										1
									
								
								src/app/punycode.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								src/app/punycode.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | ||||||
|  | "use strict"; | ||||||
							
								
								
									
										1
									
								
								src/app/quotedprintable.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								src/app/quotedprintable.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | ||||||
|  | "use strict"; | ||||||
							
								
								
									
										12
									
								
								src/app/step.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								src/app/step.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,12 @@ | ||||||
|  | "use strict"; | ||||||
|  | var Step = (function () { | ||||||
|  |     function Step(index) { | ||||||
|  |         this.content = ""; | ||||||
|  |         this.selectedConverter = undefined; | ||||||
|  |         this.error = false; | ||||||
|  |         this.message = ""; | ||||||
|  |         this.index = index; | ||||||
|  |     } | ||||||
|  |     return Step; | ||||||
|  | }()); | ||||||
|  | exports.Step = Step; | ||||||
							
								
								
									
										1
									
								
								src/app/utf8.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								src/app/utf8.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | ||||||
|  | "use strict"; | ||||||
							
								
								
									
										0
									
								
								src/assets/.gitkeep
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								src/assets/.gitkeep
									
										
									
									
									
										Normal file
									
								
							|  | @ -1,37 +0,0 @@ | ||||||
| @font-face { |  | ||||||
|     font-family: "ABeeZee"; |  | ||||||
|     font-stretch: normal; |  | ||||||
|     font-style: normal; |  | ||||||
|     font-variant: normal; |  | ||||||
|     font-weight: normal; |  | ||||||
|     src: local("ABeeZee Regular"), |  | ||||||
|     local("ABeeZee-Regular"), |  | ||||||
|     local("ABeeZee"), |  | ||||||
|     url("../fonts/abeezee-regular.woff") format("woff"); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| @font-face { |  | ||||||
|     font-family: "Free Monospaced"; |  | ||||||
|     src: url("../fonts/freemono.eot?") format("eot"), |  | ||||||
|     url("../fonts/freemono.woff") format("woff"), |  | ||||||
|     url("../fonts/freemono.ttf") format("truetype"), |  | ||||||
|     url("../fonts/freemono.svg#FreeMono") format("svg"); |  | ||||||
|     font-weight: normal; |  | ||||||
|     font-style: normal; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| body { |  | ||||||
|     background-color: white; |  | ||||||
|     color: black; |  | ||||||
|     font-family: "ABeeZee", sans-serif; |  | ||||||
|     margin: 0; |  | ||||||
|     padding: 1em 0 0 0; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| h1 { |  | ||||||
|     text-align: center; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .apploader { |  | ||||||
|     text-align: center; |  | ||||||
| } |  | ||||||
							
								
								
									
										8
									
								
								src/environments/environment.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								src/environments/environment.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,8 @@ | ||||||
|  | // The file contents for the current environment will overwrite these during build.
 | ||||||
|  | // The build system defaults to the dev environment which uses `environment.ts`, but if you do
 | ||||||
|  | // `ng build --env=prod` then `environment.prod.ts` will be used instead.
 | ||||||
|  | // The list of which env maps to which file can be found in `.angular-cli.json`.
 | ||||||
|  | "use strict"; | ||||||
|  | exports.environment = { | ||||||
|  |     production: false | ||||||
|  | }; | ||||||
							
								
								
									
										4
									
								
								src/environments/environment.prod.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								src/environments/environment.prod.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,4 @@ | ||||||
|  | "use strict"; | ||||||
|  | exports.environment = { | ||||||
|  |     production: true | ||||||
|  | }; | ||||||
							
								
								
									
										3
									
								
								src/environments/environment.prod.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/environments/environment.prod.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,3 @@ | ||||||
|  | export const environment = { | ||||||
|  |   production: true | ||||||
|  | }; | ||||||
							
								
								
									
										8
									
								
								src/environments/environment.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								src/environments/environment.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,8 @@ | ||||||
|  | // The file contents for the current environment will overwrite these during build.
 | ||||||
|  | // The build system defaults to the dev environment which uses `environment.ts`, but if you do
 | ||||||
|  | // `ng build --env=prod` then `environment.prod.ts` will be used instead.
 | ||||||
|  | // The list of which env maps to which file can be found in `.angular-cli.json`.
 | ||||||
|  | 
 | ||||||
|  | export const environment = { | ||||||
|  |   production: false | ||||||
|  | }; | ||||||
							
								
								
									
										
											BIN
										
									
								
								src/favicon.ico
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/favicon.ico
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 5.3 KiB | 
|  | @ -1,9 +1,12 @@ | ||||||
| <!DOCTYPE html> | <!doctype html> | ||||||
| <html> | <html> | ||||||
| <head> | <head> | ||||||
|     <meta charset="UTF-8"/> |   <meta charset="utf-8"> | ||||||
|     <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"/> |  | ||||||
|   <title>conv.friedli.info - Convert whatever you want!</title> |   <title>conv.friedli.info - Convert whatever you want!</title> | ||||||
|  |   <base href="/"> | ||||||
|  | 
 | ||||||
|  |   <meta name="viewport" content="width=device-width, initial-scale=1"> | ||||||
|  |   <link rel="icon" type="image/x-icon" href="favicon.ico"> | ||||||
| </head> | </head> | ||||||
| <body> | <body> | ||||||
| <h1>Convert it all</h1> | <h1>Convert it all</h1> | ||||||
|  | @ -11,8 +14,8 @@ | ||||||
|   it requires you to <strong>enable Javascript</strong> to do so. So please turn it on in your |   it requires you to <strong>enable Javascript</strong> to do so. So please turn it on in your | ||||||
|   Browser. You won't regret it! |   Browser. You won't regret it! | ||||||
| </noscript> | </noscript> | ||||||
| <den-app> | <app-root> | ||||||
|   <div class="apploader">Please hold on, we're starting the turbines ...</div> |   <div class="apploader">Please hold on, we're starting the turbines ...</div> | ||||||
| </den-app> | </app-root> | ||||||
| </body> | </body> | ||||||
| </html> | </html> | ||||||
|  |  | ||||||
							
								
								
									
										9
									
								
								src/main.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								src/main.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,9 @@ | ||||||
|  | "use strict"; | ||||||
|  | var core_1 = require('@angular/core'); | ||||||
|  | var platform_browser_dynamic_1 = require('@angular/platform-browser-dynamic'); | ||||||
|  | var app_module_1 = require('./app/app.module'); | ||||||
|  | var environment_1 = require('./environments/environment'); | ||||||
|  | if (environment_1.environment.production) { | ||||||
|  |     core_1.enableProdMode(); | ||||||
|  | } | ||||||
|  | platform_browser_dynamic_1.platformBrowserDynamic().bootstrapModule(app_module_1.AppModule); | ||||||
							
								
								
									
										10
									
								
								src/main.ts
									
										
									
									
									
								
							
							
						
						
									
										10
									
								
								src/main.ts
									
										
									
									
									
								
							|  | @ -1,8 +1,10 @@ | ||||||
| import {platformBrowserDynamic} from "@angular/platform-browser-dynamic"; | import { enableProdMode } from '@angular/core'; | ||||||
| import {AppModule} from "./app/app.module"; | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; | ||||||
| import {enableProdMode} from "@angular/core"; |  | ||||||
| 
 | 
 | ||||||
| if (process.env.NODE_ENV === "production") { | import { AppModule } from './app/app.module'; | ||||||
|  | import { environment } from './environments/environment'; | ||||||
|  | 
 | ||||||
|  | if (environment.production) { | ||||||
|   enableProdMode(); |   enableProdMode(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										54
									
								
								src/polyfills.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								src/polyfills.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,54 @@ | ||||||
|  | /** | ||||||
|  |  * This file includes polyfills needed by Angular and is loaded before the app. | ||||||
|  |  * You can add your own extra polyfills to this file. | ||||||
|  |  * | ||||||
|  |  * This file is divided into 2 sections: | ||||||
|  |  *   1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. | ||||||
|  |  *   2. Application imports. Files imported after ZoneJS that should be loaded before your main | ||||||
|  |  *      file. | ||||||
|  |  * | ||||||
|  |  * The current setup is for so-called "evergreen" browsers; the last versions of browsers that | ||||||
|  |  * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), | ||||||
|  |  * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. | ||||||
|  |  * | ||||||
|  |  * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html
 | ||||||
|  |  */ | ||||||
|  | "use strict"; | ||||||
|  | /*************************************************************************************************** | ||||||
|  |  * BROWSER POLYFILLS | ||||||
|  |  */ | ||||||
|  | /** IE9, IE10 and IE11 requires all of the following polyfills. **/ | ||||||
|  | // import 'core-js/es6/symbol';
 | ||||||
|  | // import 'core-js/es6/object';
 | ||||||
|  | // import 'core-js/es6/function';
 | ||||||
|  | // import 'core-js/es6/parse-int';
 | ||||||
|  | // import 'core-js/es6/parse-float';
 | ||||||
|  | // import 'core-js/es6/number';
 | ||||||
|  | // import 'core-js/es6/math';
 | ||||||
|  | // import 'core-js/es6/string';
 | ||||||
|  | // import 'core-js/es6/date';
 | ||||||
|  | // import 'core-js/es6/array';
 | ||||||
|  | // import 'core-js/es6/regexp';
 | ||||||
|  | // import 'core-js/es6/map';
 | ||||||
|  | // import 'core-js/es6/set';
 | ||||||
|  | /** IE10 and IE11 requires the following for NgClass support on SVG elements */ | ||||||
|  | // import 'classlist.js';  // Run `npm install --save classlist.js`.
 | ||||||
|  | /** IE10 and IE11 requires the following to support `@angular/animation`. */ | ||||||
|  | // import 'web-animations-js';  // Run `npm install --save web-animations-js`.
 | ||||||
|  | /** Evergreen browsers require these. **/ | ||||||
|  | require('core-js/es6/reflect'); | ||||||
|  | require('core-js/es7/reflect'); | ||||||
|  | /** ALL Firefox browsers require the following to support `@angular/animation`. **/ | ||||||
|  | // import 'web-animations-js';  // Run `npm install --save web-animations-js`.
 | ||||||
|  | /*************************************************************************************************** | ||||||
|  |  * Zone JS is required by Angular itself. | ||||||
|  |  */ | ||||||
|  | require('zone.js/dist/zone'); // Included with Angular CLI.
 | ||||||
|  | /*************************************************************************************************** | ||||||
|  |  * APPLICATION IMPORTS | ||||||
|  |  */ | ||||||
|  | /** | ||||||
|  |  * Date, currency, decimal and percent pipes. | ||||||
|  |  * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10 | ||||||
|  |  */ | ||||||
|  | // import 'intl';  // Run `npm install --save intl`.
 | ||||||
|  | @ -1,11 +1,68 @@ | ||||||
| import "core-js/es6"; | /** | ||||||
| import "core-js/es7/reflect"; |  * This file includes polyfills needed by Angular and is loaded before the app. | ||||||
| require("zone.js/dist/zone"); |  * You can add your own extra polyfills to this file. | ||||||
|  |  * | ||||||
|  |  * This file is divided into 2 sections: | ||||||
|  |  *   1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. | ||||||
|  |  *   2. Application imports. Files imported after ZoneJS that should be loaded before your main | ||||||
|  |  *      file. | ||||||
|  |  * | ||||||
|  |  * The current setup is for so-called "evergreen" browsers; the last versions of browsers that | ||||||
|  |  * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), | ||||||
|  |  * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. | ||||||
|  |  * | ||||||
|  |  * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html
 | ||||||
|  |  */ | ||||||
| 
 | 
 | ||||||
| if (process.env.ENV === 'production') { | /*************************************************************************************************** | ||||||
|     // Production
 |  * BROWSER POLYFILLS | ||||||
| } else { |  */ | ||||||
|     // Development and test
 | 
 | ||||||
|     Error['stackTraceLimit'] = Infinity; | /** IE9, IE10 and IE11 requires all of the following polyfills. **/ | ||||||
|     require('zone.js/dist/long-stack-trace-zone'); | // import 'core-js/es6/symbol';
 | ||||||
| } | // import 'core-js/es6/object';
 | ||||||
|  | // import 'core-js/es6/function';
 | ||||||
|  | // import 'core-js/es6/parse-int';
 | ||||||
|  | // import 'core-js/es6/parse-float';
 | ||||||
|  | // import 'core-js/es6/number';
 | ||||||
|  | // import 'core-js/es6/math';
 | ||||||
|  | // import 'core-js/es6/string';
 | ||||||
|  | // import 'core-js/es6/date';
 | ||||||
|  | // import 'core-js/es6/array';
 | ||||||
|  | // import 'core-js/es6/regexp';
 | ||||||
|  | // import 'core-js/es6/map';
 | ||||||
|  | // import 'core-js/es6/set';
 | ||||||
|  | 
 | ||||||
|  | /** IE10 and IE11 requires the following for NgClass support on SVG elements */ | ||||||
|  | // import 'classlist.js';  // Run `npm install --save classlist.js`.
 | ||||||
|  | 
 | ||||||
|  | /** IE10 and IE11 requires the following to support `@angular/animation`. */ | ||||||
|  | // import 'web-animations-js';  // Run `npm install --save web-animations-js`.
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /** Evergreen browsers require these. **/ | ||||||
|  | import 'core-js/es6/reflect'; | ||||||
|  | import 'core-js/es7/reflect'; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /** ALL Firefox browsers require the following to support `@angular/animation`. **/ | ||||||
|  | // import 'web-animations-js';  // Run `npm install --save web-animations-js`.
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*************************************************************************************************** | ||||||
|  |  * Zone JS is required by Angular itself. | ||||||
|  |  */ | ||||||
|  | import 'zone.js/dist/zone';  // Included with Angular CLI.
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*************************************************************************************************** | ||||||
|  |  * APPLICATION IMPORTS | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Date, currency, decimal and percent pipes. | ||||||
|  |  * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10 | ||||||
|  |  */ | ||||||
|  | // import 'intl';  // Run `npm install --save intl`.
 | ||||||
|  |  | ||||||
							
								
								
									
										38
									
								
								src/styles.scss
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								src/styles.scss
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,38 @@ | ||||||
|  | /* You can add global styles to this file, and also import other style files */ | ||||||
|  | @font-face { | ||||||
|  |   font-family: "ABeeZee"; | ||||||
|  |   font-stretch: normal; | ||||||
|  |   font-style: normal; | ||||||
|  |   font-variant: normal; | ||||||
|  |   font-weight: normal; | ||||||
|  |   src: local("ABeeZee Regular"), | ||||||
|  |   local("ABeeZee-Regular"), | ||||||
|  |   local("ABeeZee"), | ||||||
|  |   url("assets/fonts/abeezee-regular.woff") format("woff"); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | @font-face { | ||||||
|  |   font-family: "Free Monospaced"; | ||||||
|  |   src: url("assets/fonts/freemono.eot?") format("eot"), | ||||||
|  |   url("assets/fonts/freemono.woff") format("woff"), | ||||||
|  |   url("assets/fonts/freemono.ttf") format("truetype"), | ||||||
|  |   url("assets/fonts/freemono.svg#FreeMono") format("svg"); | ||||||
|  |   font-weight: normal; | ||||||
|  |   font-style: normal; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | body { | ||||||
|  |   background-color: white; | ||||||
|  |   color: black; | ||||||
|  |   font-family: "ABeeZee", sans-serif; | ||||||
|  |   margin: 0; | ||||||
|  |   padding: 1em 0 0 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | h1 { | ||||||
|  |   text-align: center; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .apploader { | ||||||
|  |   text-align: center; | ||||||
|  | } | ||||||
							
								
								
									
										20
									
								
								src/test.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								src/test.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,20 @@ | ||||||
|  | // This file is required by karma.conf.js and loads recursively all the .spec and framework files
 | ||||||
|  | "use strict"; | ||||||
|  | require('zone.js/dist/long-stack-trace-zone'); | ||||||
|  | require('zone.js/dist/proxy.js'); | ||||||
|  | require('zone.js/dist/sync-test'); | ||||||
|  | require('zone.js/dist/jasmine-patch'); | ||||||
|  | require('zone.js/dist/async-test'); | ||||||
|  | require('zone.js/dist/fake-async-test'); | ||||||
|  | var testing_1 = require('@angular/core/testing'); | ||||||
|  | var testing_2 = require('@angular/platform-browser-dynamic/testing'); | ||||||
|  | // Prevent Karma from running prematurely.
 | ||||||
|  | __karma__.loaded = function () { }; | ||||||
|  | // First, initialize the Angular testing environment.
 | ||||||
|  | testing_1.getTestBed().initTestEnvironment(testing_2.BrowserDynamicTestingModule, testing_2.platformBrowserDynamicTesting()); | ||||||
|  | // Then we find all the tests.
 | ||||||
|  | var context = require.context('./', true, /\.spec\.ts$/); | ||||||
|  | // And load the modules.
 | ||||||
|  | context.keys().map(context); | ||||||
|  | // Finally, start Karma to run the tests.
 | ||||||
|  | __karma__.start(); | ||||||
							
								
								
									
										32
									
								
								src/test.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/test.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,32 @@ | ||||||
|  | // This file is required by karma.conf.js and loads recursively all the .spec and framework files
 | ||||||
|  | 
 | ||||||
|  | import 'zone.js/dist/long-stack-trace-zone'; | ||||||
|  | import 'zone.js/dist/proxy.js'; | ||||||
|  | import 'zone.js/dist/sync-test'; | ||||||
|  | import 'zone.js/dist/jasmine-patch'; | ||||||
|  | import 'zone.js/dist/async-test'; | ||||||
|  | import 'zone.js/dist/fake-async-test'; | ||||||
|  | import { getTestBed } from '@angular/core/testing'; | ||||||
|  | import { | ||||||
|  |   BrowserDynamicTestingModule, | ||||||
|  |   platformBrowserDynamicTesting | ||||||
|  | } from '@angular/platform-browser-dynamic/testing'; | ||||||
|  | 
 | ||||||
|  | // Unfortunately there's no typing for the `__karma__` variable. Just declare it as any.
 | ||||||
|  | declare var __karma__: any; | ||||||
|  | declare var require: any; | ||||||
|  | 
 | ||||||
|  | // Prevent Karma from running prematurely.
 | ||||||
|  | __karma__.loaded = function () {}; | ||||||
|  | 
 | ||||||
|  | // First, initialize the Angular testing environment.
 | ||||||
|  | getTestBed().initTestEnvironment( | ||||||
|  |   BrowserDynamicTestingModule, | ||||||
|  |   platformBrowserDynamicTesting() | ||||||
|  | ); | ||||||
|  | // Then we find all the tests.
 | ||||||
|  | const context = require.context('./', true, /\.spec\.ts$/); | ||||||
|  | // And load the modules.
 | ||||||
|  | context.keys().map(context); | ||||||
|  | // Finally, start Karma to run the tests.
 | ||||||
|  | __karma__.start(); | ||||||
							
								
								
									
										13
									
								
								src/tsconfig.app.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								src/tsconfig.app.json
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,13 @@ | ||||||
|  | { | ||||||
|  |   "extends": "../tsconfig.json", | ||||||
|  |   "compilerOptions": { | ||||||
|  |     "outDir": "../out-tsc/app", | ||||||
|  |     "module": "es2015", | ||||||
|  |     "baseUrl": "", | ||||||
|  |     "types": [] | ||||||
|  |   }, | ||||||
|  |   "exclude": [ | ||||||
|  |     "test.ts", | ||||||
|  |     "**/*.spec.ts" | ||||||
|  |   ] | ||||||
|  | } | ||||||
							
								
								
									
										20
									
								
								src/tsconfig.spec.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								src/tsconfig.spec.json
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,20 @@ | ||||||
|  | { | ||||||
|  |   "extends": "../tsconfig.json", | ||||||
|  |   "compilerOptions": { | ||||||
|  |     "outDir": "../out-tsc/spec", | ||||||
|  |     "module": "commonjs", | ||||||
|  |     "target": "es5", | ||||||
|  |     "baseUrl": "", | ||||||
|  |     "types": [ | ||||||
|  |       "jasmine", | ||||||
|  |       "node" | ||||||
|  |     ] | ||||||
|  |   }, | ||||||
|  |   "files": [ | ||||||
|  |     "test.ts" | ||||||
|  |   ], | ||||||
|  |   "include": [ | ||||||
|  |     "**/*.spec.ts", | ||||||
|  |     "**/*.d.ts" | ||||||
|  |   ] | ||||||
|  | } | ||||||
							
								
								
									
										5
									
								
								src/typings.d.ts
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								src/typings.d.ts
									
										
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,5 @@ | ||||||
|  | /* SystemJS module definition */ | ||||||
|  | declare var module: NodeModule; | ||||||
|  | interface NodeModule { | ||||||
|  |   id: string; | ||||||
|  | } | ||||||
|  | @ -1,5 +0,0 @@ | ||||||
| import "@angular/core"; |  | ||||||
| import "@angular/platform-browser"; |  | ||||||
| import "@angular/platform-browser-dynamic"; |  | ||||||
| import "@angular/forms"; |  | ||||||
| import "rxjs"; |  | ||||||
|  | @ -1,20 +1,20 @@ | ||||||
| { | { | ||||||
|  |   "compileOnSave": false, | ||||||
|   "compilerOptions": { |   "compilerOptions": { | ||||||
|     "alwaysStrict": true, |     "outDir": "./dist/out-tsc", | ||||||
|     "target": "es5", |     "baseUrl": "src", | ||||||
|     "module": "commonjs", |  | ||||||
|     "moduleResolution": "node", |  | ||||||
|     "sourceMap": true, |     "sourceMap": true, | ||||||
|  |     "declaration": false, | ||||||
|  |     "moduleResolution": "node", | ||||||
|     "emitDecoratorMetadata": true, |     "emitDecoratorMetadata": true, | ||||||
|     "experimentalDecorators": true, |     "experimentalDecorators": true, | ||||||
|     "lib": [ |     "target": "es5", | ||||||
|       "es2015", |  | ||||||
|       "dom" |  | ||||||
|     ], |  | ||||||
|     "noImplicitAny": true, |  | ||||||
|     "suppressImplicitAnyIndexErrors": true, |  | ||||||
|     "typeRoots": [ |     "typeRoots": [ | ||||||
|       "../node_modules/@types/" |       "node_modules/@types" | ||||||
|  |     ], | ||||||
|  |     "lib": [ | ||||||
|  |       "es2016", | ||||||
|  |       "dom" | ||||||
|     ] |     ] | ||||||
|   } |   } | ||||||
| } | } | ||||||
							
								
								
									
										116
									
								
								tslint.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										116
									
								
								tslint.json
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,116 @@ | ||||||
|  | { | ||||||
|  |   "rulesDirectory": [ | ||||||
|  |     "node_modules/codelyzer" | ||||||
|  |   ], | ||||||
|  |   "rules": { | ||||||
|  |     "callable-types": true, | ||||||
|  |     "class-name": true, | ||||||
|  |     "comment-format": [ | ||||||
|  |       true, | ||||||
|  |       "check-space" | ||||||
|  |     ], | ||||||
|  |     "curly": true, | ||||||
|  |     "eofline": true, | ||||||
|  |     "forin": true, | ||||||
|  |     "import-blacklist": [true, "rxjs"], | ||||||
|  |     "import-spacing": true, | ||||||
|  |     "indent": [ | ||||||
|  |       true, | ||||||
|  |       "spaces" | ||||||
|  |     ], | ||||||
|  |     "interface-over-type-literal": true, | ||||||
|  |     "label-position": true, | ||||||
|  |     "max-line-length": [ | ||||||
|  |       true, | ||||||
|  |       140 | ||||||
|  |     ], | ||||||
|  |     "member-access": false, | ||||||
|  |     "member-ordering": [ | ||||||
|  |       true, | ||||||
|  |       "static-before-instance", | ||||||
|  |       "variables-before-functions" | ||||||
|  |     ], | ||||||
|  |     "no-arg": true, | ||||||
|  |     "no-bitwise": true, | ||||||
|  |     "no-console": [ | ||||||
|  |       true, | ||||||
|  |       "debug", | ||||||
|  |       "info", | ||||||
|  |       "time", | ||||||
|  |       "timeEnd", | ||||||
|  |       "trace" | ||||||
|  |     ], | ||||||
|  |     "no-construct": true, | ||||||
|  |     "no-debugger": true, | ||||||
|  |     "no-duplicate-variable": true, | ||||||
|  |     "no-empty": false, | ||||||
|  |     "no-empty-interface": true, | ||||||
|  |     "no-eval": true, | ||||||
|  |     "no-inferrable-types": [true, "ignore-params"], | ||||||
|  |     "no-shadowed-variable": true, | ||||||
|  |     "no-string-literal": false, | ||||||
|  |     "no-string-throw": true, | ||||||
|  |     "no-switch-case-fall-through": true, | ||||||
|  |     "no-trailing-whitespace": true, | ||||||
|  |     "no-unused-expression": true, | ||||||
|  |     "no-use-before-declare": true, | ||||||
|  |     "no-var-keyword": true, | ||||||
|  |     "object-literal-sort-keys": false, | ||||||
|  |     "one-line": [ | ||||||
|  |       true, | ||||||
|  |       "check-open-brace", | ||||||
|  |       "check-catch", | ||||||
|  |       "check-else", | ||||||
|  |       "check-whitespace" | ||||||
|  |     ], | ||||||
|  |     "prefer-const": true, | ||||||
|  |     "quotemark": [ | ||||||
|  |       true, | ||||||
|  |       "single" | ||||||
|  |     ], | ||||||
|  |     "radix": true, | ||||||
|  |     "semicolon": [ | ||||||
|  |       "always" | ||||||
|  |     ], | ||||||
|  |     "triple-equals": [ | ||||||
|  |       true, | ||||||
|  |       "allow-null-check" | ||||||
|  |     ], | ||||||
|  |     "typedef-whitespace": [ | ||||||
|  |       true, | ||||||
|  |       { | ||||||
|  |         "call-signature": "nospace", | ||||||
|  |         "index-signature": "nospace", | ||||||
|  |         "parameter": "nospace", | ||||||
|  |         "property-declaration": "nospace", | ||||||
|  |         "variable-declaration": "nospace" | ||||||
|  |       } | ||||||
|  |     ], | ||||||
|  |     "typeof-compare": true, | ||||||
|  |     "unified-signatures": true, | ||||||
|  |     "variable-name": false, | ||||||
|  |     "whitespace": [ | ||||||
|  |       true, | ||||||
|  |       "check-branch", | ||||||
|  |       "check-decl", | ||||||
|  |       "check-operator", | ||||||
|  |       "check-separator", | ||||||
|  |       "check-type" | ||||||
|  |     ], | ||||||
|  | 
 | ||||||
|  |     "directive-selector": [true, "attribute", "app", "camelCase"], | ||||||
|  |     "component-selector": [true, "element", "app", "kebab-case"], | ||||||
|  |     "use-input-property-decorator": true, | ||||||
|  |     "use-output-property-decorator": true, | ||||||
|  |     "use-host-property-decorator": true, | ||||||
|  |     "no-input-rename": true, | ||||||
|  |     "no-output-rename": true, | ||||||
|  |     "use-life-cycle-interface": true, | ||||||
|  |     "use-pipe-transform-interface": true, | ||||||
|  |     "component-class-suffix": true, | ||||||
|  |     "directive-class-suffix": true, | ||||||
|  |     "no-access-missing-member": true, | ||||||
|  |     "templates-use-public": true, | ||||||
|  |     "invoke-injectable": true | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | @ -1 +0,0 @@ | ||||||
| module.exports = require('./config/webpack.dev.js'); |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue