mirror of
				https://github.com/Redocly/redoc.git
				synced 2025-10-31 07:47:29 +03:00 
			
		
		
		
	Merge commit '8d2f72a55b3bcee6ebcd9cade7e567cdce6338cf' into releases
This commit is contained in:
		
						commit
						868f8ec042
					
				
							
								
								
									
										10
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							|  | @ -20,11 +20,17 @@ npm-debug.log* | ||||||
| # https://docs.npmjs.com/misc/faq#should-i-check-my-node-modules-folder-into-git | # https://docs.npmjs.com/misc/faq#should-i-check-my-node-modules-folder-into-git | ||||||
| node_modules | node_modules | ||||||
| 
 | 
 | ||||||
| #jspm | # compiled css | ||||||
| jspm_packages | lib/**/*.css | ||||||
| 
 | 
 | ||||||
|  | # files produced by ngc | ||||||
|  | lib/**/*.ngfactory.ts | ||||||
|  | lib/**/*.css.shim.ts | ||||||
|  | 
 | ||||||
|  | # other | ||||||
| /dist | /dist | ||||||
| /demo/build | /demo/build | ||||||
| .tmp | .tmp | ||||||
| /coverage | /coverage | ||||||
| .ghpages-tmp | .ghpages-tmp | ||||||
|  | stats.json | ||||||
|  |  | ||||||
							
								
								
									
										10
									
								
								.travis.yml
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								.travis.yml
									
									
									
									
									
								
							|  | @ -25,12 +25,12 @@ addons: | ||||||
| cache: | cache: | ||||||
|   directories: |   directories: | ||||||
|   - node_modules |   - node_modules | ||||||
|   - jspm_packages | before_install: if [[ `npm -v` != 3* ]]; then npm i -g npm@3; fi | ||||||
| before_install: |  | ||||||
| - travis_retry npm install jspm |  | ||||||
| - jspm config registries.github.auth $JSPM_GITHUB_AUTH_TOKEN |  | ||||||
| before_script: | before_script: | ||||||
| - npm run jspm-install |   - npm run e2e-server > /dev/null & # kill e2e server | ||||||
|  |   - sleep 3 # give server time to start | ||||||
|  | after_script: | ||||||
|  |   - kill %1 # kill e2e server | ||||||
| before_deploy: | before_deploy: | ||||||
| - npm run build-dist | - npm run build-dist | ||||||
| deploy: | deploy: | ||||||
|  |  | ||||||
							
								
								
									
										10
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								CHANGELOG.md
									
									
									
									
									
								
							|  | @ -1,3 +1,13 @@ | ||||||
|  | # 1.1.2 (2016-08-21) | ||||||
|  | ### Bug fixes | ||||||
|  | * Revert "Fix markdown newlines to be GFM" (#82) | ||||||
|  | * Move license and contact info above description | ||||||
|  | 
 | ||||||
|  | # 1.1.1 (2016-08-21) | ||||||
|  | ### Bug fixes | ||||||
|  | * Fix markdown newlines to be GFM (#82) | ||||||
|  | * Fix markdown code blocks in api description | ||||||
|  | 
 | ||||||
| # 1.1.0 (2016-08-12) | # 1.1.0 (2016-08-12) | ||||||
| ### Bug fixes | ### Bug fixes | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -122,14 +122,17 @@ Redoc.init('http://petstore.swagger.io/v2/swagger.json', { | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ----------- | ----------- | ||||||
| ## Running locally | ## Development | ||||||
|  | #### Running local dev-server | ||||||
| 1. Clone repository | 1. Clone repository | ||||||
| `git clone https://github.com/Rebilly/ReDoc.git` | `git clone https://github.com/Rebilly/ReDoc.git` | ||||||
| 2. Go to the project folder | 2. Go to the project folder | ||||||
| `cd ReDoc` | `cd ReDoc` | ||||||
| 3. Install node modules and front-end dependencies | 3. Install node modules and front-end dependencies | ||||||
| `npm install` | ``` | ||||||
| `npm run jspm-install` | npm install | ||||||
|  | npm run jspm-install | ||||||
|  | ``` | ||||||
| 4. _(optional)_ Replace `demo/swagger.json` with your own schema | 4. _(optional)_ Replace `demo/swagger.json` with your own schema | ||||||
| 5. Start the server | 5. Start the server | ||||||
| `npm start` | `npm start` | ||||||
|  |  | ||||||
							
								
								
									
										9
									
								
								build/helpers.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								build/helpers.js
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,9 @@ | ||||||
|  | const path = require('path'); | ||||||
|  | function root(args) { | ||||||
|  |   args = Array.prototype.slice.call(arguments, 0); | ||||||
|  |   return path.join.apply(path, [__dirname, '..'].concat(args)); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | module.exports = { | ||||||
|  |   root: root | ||||||
|  | } | ||||||
|  | @ -1,15 +1,9 @@ | ||||||
| var path = require('path'); | var path = require('path'); | ||||||
| 
 | 
 | ||||||
| var paths = { | var paths = { | ||||||
|   source: 'lib/**/*.ts', |   outputName: 'redoc.min.js', | ||||||
|   html: 'lib/**/*.html', |  | ||||||
|   scss: 'lib/**/*.scss', |  | ||||||
|   sourceEntryPoint: 'lib/index.js', |  | ||||||
|   outputName: 'redoc', |  | ||||||
|   output: 'dist/', |   output: 'dist/', | ||||||
|   tmp: '.tmp/', |  | ||||||
|   demo: 'demo/**/*', |   demo: 'demo/**/*', | ||||||
|   tests: '{lib,tests}/**/*.spec.ts', |  | ||||||
|   releases: 'demo/releases/' |   releases: 'demo/releases/' | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -11,6 +11,7 @@ set('-v'); | ||||||
| // build
 | // build
 | ||||||
| exec('npm run build-dist'); | exec('npm run build-dist'); | ||||||
| cd('demo'); | cd('demo'); | ||||||
|  | mv('index-gh.html', 'index.html'); | ||||||
| mkdir('-p', 'dist'); | mkdir('-p', 'dist'); | ||||||
| cp('-R', '../dist/*', './dist/'); | cp('-R', '../dist/*', './dist/'); | ||||||
| cd('..'); | cd('..'); | ||||||
|  | @ -18,7 +19,10 @@ cd('..'); | ||||||
| var version = 'v' + require(path.join(__dirname, '../package.json')).version + '/'; | var version = 'v' + require(path.join(__dirname, '../package.json')).version + '/'; | ||||||
| var versionDir = path.join(paths.releases, version); | var versionDir = path.join(paths.releases, version); | ||||||
| var latestDir = path.join(paths.releases, 'latest/'); | var latestDir = path.join(paths.releases, 'latest/'); | ||||||
|  | var v1Dir = path.join(paths.releases, '1.x.x/'); | ||||||
| mkdir('-p', versionDir) | mkdir('-p', versionDir) | ||||||
| mkdir('-p', latestDir); | mkdir('-p', latestDir); | ||||||
| cp(paths.redocBuilt + '.min.js', versionDir); | mkdir('-p', v1Dir); | ||||||
| cp(paths.redocBuilt + '.min.js', latestDir); | cp(paths.redocBuilt, versionDir); | ||||||
|  | cp(paths.redocBuilt, latestDir); | ||||||
|  | cp(paths.redocBuilt, v1Dir); | ||||||
|  |  | ||||||
|  | @ -1,164 +0,0 @@ | ||||||
| var gulp = require('gulp'); |  | ||||||
| var runSequence = require('run-sequence'); |  | ||||||
| var Builder = require('systemjs-builder'); |  | ||||||
| var inlineNg2Template = require('gulp-inline-ng2-template'); |  | ||||||
| var path = require('path'); |  | ||||||
| var sourcemaps = require('gulp-sourcemaps'); |  | ||||||
| var paths = require('../paths'); |  | ||||||
| var fs= require('fs'); |  | ||||||
| var concat = require('gulp-concat'); |  | ||||||
| var gulp = require('gulp'); |  | ||||||
| var sass = require('gulp-sass'); |  | ||||||
| var replace = require('gulp-replace'); |  | ||||||
| var rename = require('gulp-rename'); |  | ||||||
| var argv = require('yargs').argv; |  | ||||||
| var gulpIf = require('gulp-if'); |  | ||||||
| var sassCopm = require('node-sass'); |  | ||||||
| var ts = require('typescript'); |  | ||||||
| 
 |  | ||||||
| gulp.task('build', function (callback) { |  | ||||||
|   if (argv.skipRebuild) { |  | ||||||
|     console.log('>>> Rebuild skipped') |  | ||||||
|     return callback(); |  | ||||||
|   } |  | ||||||
|   return runSequence( |  | ||||||
|     'clean', |  | ||||||
|     'transpile', |  | ||||||
|     'bundle', |  | ||||||
|     'concatDeps', |  | ||||||
|     'copyDebug', |  | ||||||
|     callback |  | ||||||
|   ); |  | ||||||
| }); |  | ||||||
| 
 |  | ||||||
| gulp.task('transpile', function(cb) { |  | ||||||
|   return runSequence( |  | ||||||
|     'tsc', |  | ||||||
|     'inlineTemplates', |  | ||||||
|     cb |  | ||||||
|   ); |  | ||||||
| }); |  | ||||||
| 
 |  | ||||||
| gulp.task('copyDebug', () => { |  | ||||||
|   if (!argv.prod) { |  | ||||||
|     // copy for be accessible from demo for debug
 |  | ||||||
|     cp(paths.redocBuilt + '.js', paths.redocBuilt + '.min.js'); |  | ||||||
|   } |  | ||||||
| }); |  | ||||||
| 
 |  | ||||||
| gulp.task('tsc', function() { |  | ||||||
|   exec('tsc -p ./tsconfig.json'); |  | ||||||
| }); |  | ||||||
| 
 |  | ||||||
| gulp.task('inlineTemplates', ['sass'], function() { |  | ||||||
|   return gulp.src('.tmp/**/*.js', { base: './tmp' }) |  | ||||||
|     .pipe(replace(/'(.*?)\.css'/g, '\'$1.scss\'')) |  | ||||||
|     .pipe(inlineNg2Template({ |  | ||||||
|       base: './', |  | ||||||
|       useRelativePaths: true, |  | ||||||
|       styleProcessor: compileSass, |  | ||||||
|       customFilePath: function(ext, file) { |  | ||||||
|         var cwd = process.cwd(); |  | ||||||
|         var relative = path.relative(cwd, file); |  | ||||||
|         relative = relative.substring('5'); |  | ||||||
|         return path.join(cwd, relative); |  | ||||||
|       } |  | ||||||
|     })) |  | ||||||
|     .pipe(gulp.dest(paths.tmp)); |  | ||||||
| }); |  | ||||||
| 
 |  | ||||||
| function compileSass(ext, file, cb) { |  | ||||||
|   file = file.replace('../../shared/styles/variables', 'lib/shared/styles/variables'); |  | ||||||
|   file = file.replace('json-schema-common', 'lib/components/JsonSchema/json-schema-common'); |  | ||||||
|   file = file.replace('../../shared/styles/share-link', 'lib/shared/styles/share-link'); |  | ||||||
|   file = file.replace('../JsonSchema/lib/components/JsonSchema/json-schema-common', 'lib/components/JsonSchema/json-schema-common'); |  | ||||||
|   file = file.replace('../../styles/variables', 'lib/shared/styles/variables'); |  | ||||||
| 
 |  | ||||||
|   cb(null, sassCopm.renderSync({data: file}).css); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| var JS_DEPS = argv.prod ? [ |  | ||||||
|   'lib/utils/browser-update.js', |  | ||||||
|   'node_modules/zone.js/dist/zone.min.js', |  | ||||||
|   'node_modules/reflect-metadata/Reflect.js', |  | ||||||
|   'node_modules/babel-polyfill/dist/polyfill.min.js' |  | ||||||
| ]: [ |  | ||||||
|   'lib/utils/browser-update.js', |  | ||||||
|   'node_modules/zone.js/dist/zone.js', |  | ||||||
|   'node_modules/zone.js/dist/long-stack-trace-zone.js', |  | ||||||
|   'node_modules/reflect-metadata/Reflect.js', |  | ||||||
|   'node_modules/babel-polyfill/dist/polyfill.js' |  | ||||||
| ]; |  | ||||||
| 
 |  | ||||||
| var outputFileName = paths.redocBuilt + (argv.prod ? '.min.js' : '.js'); |  | ||||||
| 
 |  | ||||||
| gulp.task('sass', function () { |  | ||||||
|   return gulp.src(paths.scss, { base: './' }) |  | ||||||
|     .pipe(sass.sync({outputStyle: 'compressed'}).on('error', sass.logError)) |  | ||||||
|     .pipe(gulp.dest(paths.tmp)); |  | ||||||
| }); |  | ||||||
| 
 |  | ||||||
| // concatenate angular2 deps
 |  | ||||||
| gulp.task('concatDeps', ['concatPrism'], function() { |  | ||||||
|   return gulp.src(JS_DEPS.concat([path.join(paths.tmp, 'prismjs-bundle.js'), outputFileName])) |  | ||||||
|     .pipe(gulpIf(!argv.prod, sourcemaps.init({loadMaps: true}))) |  | ||||||
|     .pipe(concat(outputFileName)) |  | ||||||
|     .pipe(gulpIf(!argv.prod, sourcemaps.write('.'))) |  | ||||||
|     .pipe(gulp.dest('.')) |  | ||||||
| }); |  | ||||||
| 
 |  | ||||||
| gulp.task('bundle', ['injectVersionFile'], function bundle(done) { |  | ||||||
|   mkdir('-p', 'dist'); |  | ||||||
|   cp('lib/index.js', path.join(paths.tmp, paths.sourceEntryPoint)); |  | ||||||
|   var builder = new Builder('./', 'system.config.js'); |  | ||||||
| 
 |  | ||||||
|   builder |  | ||||||
|     .buildStatic(path.join(paths.tmp, paths.sourceEntryPoint), |  | ||||||
|       outputFileName, |  | ||||||
|       { format:'umd', sourceMaps: !argv.prod, lowResSourceMaps: true, minify: argv.prod } |  | ||||||
|     ) |  | ||||||
|     .then(() => { |  | ||||||
|       // wait some time to allow flush
 |  | ||||||
|       setTimeout(() => done(), 500); |  | ||||||
|     }) |  | ||||||
|     .catch(err => done(err)); |  | ||||||
| }); |  | ||||||
| 
 |  | ||||||
| gulp.task('concatPrism', function() { |  | ||||||
|   require('../../system.config.js'); |  | ||||||
|   var prismFolder = System.normalizeSync('prismjs').substring(8); |  | ||||||
|   prismFolder = prismFolder.substring(0, prismFolder.length -3); |  | ||||||
|   var prismFiles = [ |  | ||||||
|     'prism.js', |  | ||||||
|     'components/prism-actionscript.js', |  | ||||||
|     'components/prism-c.js', |  | ||||||
|     'components/prism-cpp.js', |  | ||||||
|     'components/prism-csharp.js', |  | ||||||
|     'components/prism-php.js', |  | ||||||
|     'components/prism-coffeescript.js', |  | ||||||
|     'components/prism-go.js', |  | ||||||
|     'components/prism-haskell.js', |  | ||||||
|     'components/prism-java.js', |  | ||||||
|     'components/prism-lua.js', |  | ||||||
|     'components/prism-matlab.js', |  | ||||||
|     'components/prism-perl.js', |  | ||||||
|     'components/prism-python.js', |  | ||||||
|     'components/prism-r.js', |  | ||||||
|     'components/prism-ruby.js', |  | ||||||
|     'components/prism-bash.js', |  | ||||||
|     'components/prism-swift.js', |  | ||||||
|     'components/prism-objectivec.js', |  | ||||||
|     'components/prism-scala.js' |  | ||||||
|   ].map(file => path.join(prismFolder, file)); |  | ||||||
| 
 |  | ||||||
|   return gulp.src(prismFiles) |  | ||||||
|     .pipe(concat(path.join(paths.tmp, 'prismjs-bundle.js'))) |  | ||||||
|     .pipe(gulp.dest('.')); |  | ||||||
| }); |  | ||||||
| 
 |  | ||||||
| // needs inlineTemplates run before to create .tmp/lib folder
 |  | ||||||
| gulp.task('injectVersionFile', function() { |  | ||||||
|   var version = require('../../package.json').version; |  | ||||||
|   var exportStatement = `export var redocVersion = "${version}"`; |  | ||||||
|   fs.writeFileSync(path.join(paths.tmp, 'lib/version.js'), exportStatement); |  | ||||||
| }) |  | ||||||
|  | @ -1,9 +0,0 @@ | ||||||
| var gulp = require('gulp'); |  | ||||||
| var paths = require('../paths'); |  | ||||||
| var del = require('del'); |  | ||||||
| var vinylPaths = require('vinyl-paths'); |  | ||||||
| 
 |  | ||||||
| gulp.task('clean', function () { |  | ||||||
|   return gulp.src([paths.output, paths.tmp]) |  | ||||||
|     .pipe(vinylPaths(del)); |  | ||||||
| }); |  | ||||||
|  | @ -1,34 +0,0 @@ | ||||||
| var gulp = require('gulp'); |  | ||||||
| var gp = require('gulp-protractor'); |  | ||||||
| var browserSync = require('browser-sync').create('bs-e2e'); |  | ||||||
| 
 |  | ||||||
| gulp.task('test-server', function (done) { |  | ||||||
|   browserSync.init({ |  | ||||||
|     open: false, |  | ||||||
|     notify: false, |  | ||||||
|     port: 3000, |  | ||||||
|     ghostMode: false, |  | ||||||
|     server: { |  | ||||||
|       baseDir: './tests/e2e', |  | ||||||
|       routes: { |  | ||||||
|         '/dist': './dist', |  | ||||||
|         '/swagger.yml': './demo/swagger.yml' |  | ||||||
|       }, |  | ||||||
|     } |  | ||||||
|   }, done); |  | ||||||
| }); |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| gulp.task('e2e', ['build', 'test-server'], function(done) { |  | ||||||
|   gulp.src(['tests/e2e/**/*.js'], { read:false }) |  | ||||||
|   		.pipe(gp.protractor({ |  | ||||||
|   			configFile: './protractor.conf.js' |  | ||||||
|   		})).on('error', function(e) { |  | ||||||
|   			browserSync.exit(); |  | ||||||
|   			throw e; |  | ||||||
|   			done(); |  | ||||||
|   		}).on('end', function() { |  | ||||||
|   			browserSync.exit(); |  | ||||||
|   			done(); |  | ||||||
|   		}); |  | ||||||
| }); |  | ||||||
|  | @ -1,15 +0,0 @@ | ||||||
| var gulp = require('gulp'); |  | ||||||
| var tslint = require('gulp-tslint'); |  | ||||||
| var paths = require('../paths'); |  | ||||||
| 
 |  | ||||||
| gulp.task('lint', function () { |  | ||||||
|   return gulp.src([paths.source, paths.tests]) |  | ||||||
|     .pipe(tslint({ |  | ||||||
|       rulesDirectory: 'node_modules/codelyzer' |  | ||||||
|     })) |  | ||||||
|     .pipe(tslint.report(require('tslint-stylish'), { |  | ||||||
|       emitError: true, |  | ||||||
|       sort: true, |  | ||||||
|       bell: true |  | ||||||
|     })); |  | ||||||
| }); |  | ||||||
|  | @ -1,17 +0,0 @@ | ||||||
| var gulp = require('gulp'); |  | ||||||
| var browserSync = require('browser-sync').create('bs'); |  | ||||||
| 
 |  | ||||||
| gulp.task('serve', ['watch'], function (done) { |  | ||||||
|   browserSync.init({ |  | ||||||
|     open: false, |  | ||||||
|     notify: false, |  | ||||||
|     port: 9000, |  | ||||||
|     server: { |  | ||||||
|       baseDir: './demo', |  | ||||||
|       routes: { |  | ||||||
|         '/dist': './dist' |  | ||||||
|       }, |  | ||||||
|     }, |  | ||||||
|     reloadDelay: 500 |  | ||||||
|   }, done); |  | ||||||
| }); |  | ||||||
|  | @ -1,52 +0,0 @@ | ||||||
| var gulp = require('gulp'); |  | ||||||
| var runSequence = require('run-sequence'); |  | ||||||
| var Server = require('karma').Server; |  | ||||||
| var remapIstanbul = require('remap-istanbul/lib/gulpRemapIstanbul'); |  | ||||||
| 
 |  | ||||||
| gulp.task('prepare-test', function(cb) { |  | ||||||
|   return runSequence( |  | ||||||
|     'clean', |  | ||||||
|     'transpile', |  | ||||||
|     'concatPrism', |  | ||||||
|     'injectVersionFile', |  | ||||||
|     cb |  | ||||||
|   ); |  | ||||||
| }) |  | ||||||
| /** |  | ||||||
|  * Run test once and exit |  | ||||||
|  */ |  | ||||||
| gulp.task('test', ['prepare-test'], function (done) { |  | ||||||
|   new Server({ |  | ||||||
|     configFile: __dirname + '/../../karma.conf.js', |  | ||||||
|     singleRun: true |  | ||||||
|   }, karmaDone).start(); |  | ||||||
| 
 |  | ||||||
|   function karmaDone (exitCode) { |  | ||||||
|   	remapCoverage(done, exitCode); |  | ||||||
|   } |  | ||||||
| }); |  | ||||||
| 
 |  | ||||||
| function remapCoverage(done, statusCode) { |  | ||||||
|   console.log('Remapping coverage to TypeScript format...'); |  | ||||||
|   gulp.src('coverage/**/coverage-final.json') |  | ||||||
|     .pipe(remapIstanbul({ |  | ||||||
|       reports: { |  | ||||||
|         'lcovonly': 'coverage/lcov.info', |  | ||||||
|         'text-summary': 'coverage/text-summary.txt', |  | ||||||
|         'html': 'coverage' |  | ||||||
|       } |  | ||||||
|     })) |  | ||||||
|     .on('finish', function () { |  | ||||||
|       console.log('Remapping done!'); |  | ||||||
|       console.log(cat('coverage/text-summary.txt').stdout); |  | ||||||
|       console.log('Test Done with exit code: ' + statusCode); |  | ||||||
|       if (process.env.TRAVIS) { |  | ||||||
|         console.log('uploading to coveralls') |  | ||||||
|         var out = cat('coverage/lcov.info').exec('coveralls'); |  | ||||||
|         if (out.code !== 0) { |  | ||||||
|           console.warn('Failed upload to coveralls'); |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|       done(statusCode); |  | ||||||
|     }); |  | ||||||
| }; |  | ||||||
|  | @ -1,14 +0,0 @@ | ||||||
| var gulp = require('gulp'); |  | ||||||
| var paths = require('../paths'); |  | ||||||
| var browserSync = require('browser-sync').get('bs'); |  | ||||||
| 
 |  | ||||||
| function changed(event) { |  | ||||||
|   console.log('File ' + event.path + ' was ' + event.type + ', running tasks...'); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| gulp.task('watch', ['build'], function () { |  | ||||||
|   gulp.watch([ paths.source ], [ 'build', browserSync.reload ]).on('change', changed); |  | ||||||
|   gulp.watch([ paths.html ], [ 'build', browserSync.reload]).on('change', changed); |  | ||||||
|   gulp.watch([ paths.scss ], [ 'build', browserSync.reload]).on('change', changed); |  | ||||||
|   gulp.watch([ paths.demo ], [ '', browserSync.reload ]).on('change', changed); |  | ||||||
| }); |  | ||||||
							
								
								
									
										98
									
								
								build/webpack.dev.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										98
									
								
								build/webpack.dev.js
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,98 @@ | ||||||
|  | const webpack = require('webpack'); | ||||||
|  | const ForkCheckerPlugin = require('awesome-typescript-loader').ForkCheckerPlugin; | ||||||
|  | 
 | ||||||
|  | const root = require('./helpers').root; | ||||||
|  | const VERSION = JSON.stringify(require('../package.json').version); | ||||||
|  | const IS_PRODUCTION = process.env.NODE_ENV === "production"; | ||||||
|  | // TODO Refactor common parts of config
 | ||||||
|  | 
 | ||||||
|  | module.exports = { | ||||||
|  |   context: root(), | ||||||
|  |   devtool: 'source-map', | ||||||
|  |   debug: false, | ||||||
|  | 
 | ||||||
|  |   resolve: { | ||||||
|  |     extensions: ['', '.ts', '.js', '.json', '.css', '.scss', '.html'], | ||||||
|  |     root: root('lib'), | ||||||
|  |     descriptionFiles: ['package.json'], | ||||||
|  |     modules: [ | ||||||
|  |       'node_modules', | ||||||
|  |       root('lib') | ||||||
|  |     ], | ||||||
|  |     alias: { | ||||||
|  |       './lib/bootstrap': root('lib/bootstrap.dev'), | ||||||
|  |       http: 'stream-http', | ||||||
|  |       https: 'stream-http' | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   externals: { | ||||||
|  |     "jquery": "jQuery" | ||||||
|  |   }, | ||||||
|  |   node: { | ||||||
|  |     fs: "empty" | ||||||
|  |   }, | ||||||
|  |   entry: { | ||||||
|  |     'redoc': './lib/index.ts', | ||||||
|  |     'vendor': './lib/vendor.ts', | ||||||
|  |     'polyfills': './lib/polyfills.ts' | ||||||
|  |   }, | ||||||
|  | 
 | ||||||
|  |   devServer: { | ||||||
|  |     outputPath: root('dist'), | ||||||
|  |     watchOptions: { | ||||||
|  |       poll: true | ||||||
|  |     }, | ||||||
|  |     port: 9000, | ||||||
|  |     hot: false, | ||||||
|  |     stats: 'errors-only' | ||||||
|  |   }, | ||||||
|  | 
 | ||||||
|  |   output: { | ||||||
|  |     path: root('dist'), | ||||||
|  |     filename: '[name].js', | ||||||
|  |     sourceMapFilename: '[name].[id].map', | ||||||
|  |     chunkFilename: '[id].chunk.js' | ||||||
|  |   }, | ||||||
|  | 
 | ||||||
|  |   module: { | ||||||
|  |     preLoaders: [{ | ||||||
|  |       test: /\.js$/, | ||||||
|  |       loader: 'source-map' | ||||||
|  |     }], | ||||||
|  |     loaders: [{ | ||||||
|  |       test: /\.ts$/, | ||||||
|  |       loaders: [ | ||||||
|  |         'awesome-typescript-loader', | ||||||
|  |         'angular2-template-loader' | ||||||
|  |       ], | ||||||
|  |       exclude: [/\.(spec|e2e)\.ts$/] | ||||||
|  |     },{ | ||||||
|  |       test: /lib\/.*\.css$/, | ||||||
|  |       loaders: ['raw-loader'], | ||||||
|  |       exclude: [/redoc-initial-styles\.css$/] | ||||||
|  |     },{ | ||||||
|  |       test: /\.css$/, | ||||||
|  |       loaders: ['style', 'css?-import'], | ||||||
|  |       exclude: [/lib\/(?!.*redoc-initial-styles).*\.css$/] | ||||||
|  |     },{ | ||||||
|  |       test: /\.html$/, | ||||||
|  |       loader: 'raw-loader' | ||||||
|  |     }] | ||||||
|  |   }, | ||||||
|  | 
 | ||||||
|  |   plugins: [ | ||||||
|  |     new webpack.HotModuleReplacementPlugin(), | ||||||
|  | 
 | ||||||
|  |     new webpack.optimize.CommonsChunkPlugin({ | ||||||
|  |       name: ['vendor', 'polyfills'], | ||||||
|  |       minChunks: Infinity | ||||||
|  |     }), | ||||||
|  | 
 | ||||||
|  |     new webpack.DefinePlugin({ | ||||||
|  |       'IS_PRODUCTION': IS_PRODUCTION, | ||||||
|  |       'LIB_VERSION': VERSION | ||||||
|  |     }), | ||||||
|  | 
 | ||||||
|  |     new ForkCheckerPlugin() | ||||||
|  |   ], | ||||||
|  | } | ||||||
							
								
								
									
										86
									
								
								build/webpack.prod.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								build/webpack.prod.js
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,86 @@ | ||||||
|  | const webpack = require('webpack'); | ||||||
|  | 
 | ||||||
|  | const VERSION = JSON.stringify(require('../package.json').version); | ||||||
|  | 
 | ||||||
|  | const root = require('./helpers').root; | ||||||
|  | const CopyWebpackPlugin = require('copy-webpack-plugin'); | ||||||
|  | const BANNER = | ||||||
|  | `ReDoc - OpenAPI/Swagger-generated API Reference Documentation
 | ||||||
|  | ------------------------------------------------------------- | ||||||
|  |   Version: ${VERSION} | ||||||
|  |   Repo: https://github.com/Rebilly/ReDoc`;
 | ||||||
|  | 
 | ||||||
|  | module.exports = { | ||||||
|  |   context: root(), | ||||||
|  |   devtool: 'cheap-module-source-map', | ||||||
|  | 
 | ||||||
|  |   resolve: { | ||||||
|  |     extensions: ['', '.ts', '.js', '.json', '.css', '.scss', '.html'], | ||||||
|  |     root: root('lib'), | ||||||
|  |     descriptionFiles: ['package.json'], | ||||||
|  |     modules: [ | ||||||
|  |       'node_modules', | ||||||
|  |       root('lib') | ||||||
|  |     ], | ||||||
|  |     alias: { | ||||||
|  |       http: 'stream-http', | ||||||
|  |       https: 'stream-http' | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   externals: { | ||||||
|  |     "jquery": "jQuery" | ||||||
|  |   }, | ||||||
|  |   node: { | ||||||
|  |     fs: "empty" | ||||||
|  |   }, | ||||||
|  |   entry: { | ||||||
|  |     'redoc': ['./lib/polyfills.ts', './lib/vendor.ts', './lib/index.ts'] | ||||||
|  |   }, | ||||||
|  | 
 | ||||||
|  |   output: { | ||||||
|  |     path: root('dist'), | ||||||
|  |     filename: '[name].min.js', | ||||||
|  |     sourceMapFilename: '[name].min.map', | ||||||
|  |     library: 'Redoc', | ||||||
|  |     libraryTarget: 'umd', | ||||||
|  |     umdNamedDefine: true | ||||||
|  |   }, | ||||||
|  | 
 | ||||||
|  |   module: { | ||||||
|  |     preLoaders: [{ | ||||||
|  |       test: /\.js$/, | ||||||
|  |       loader: 'source-map' | ||||||
|  |     }], | ||||||
|  |     loaders: [{ | ||||||
|  |       test: /\.ts$/, | ||||||
|  |       loader: 'awesome-typescript-loader', | ||||||
|  |       exclude: /(node_modules)/ | ||||||
|  |     }, { | ||||||
|  |       test: /\.css$/, | ||||||
|  |       loaders: ['style', 'css?-import'] | ||||||
|  |     }] | ||||||
|  |   }, | ||||||
|  | 
 | ||||||
|  |   plugins: [ | ||||||
|  |     new webpack.LoaderOptionsPlugin({ | ||||||
|  |       minimize: true, | ||||||
|  |       debug: false | ||||||
|  |     }), | ||||||
|  |     new webpack.optimize.UglifyJsPlugin({ | ||||||
|  |       compress: { | ||||||
|  |         warnings: false, | ||||||
|  |         screw_ie8: true | ||||||
|  |       }, | ||||||
|  |       mangle: { screw_ie8 : true }, | ||||||
|  |       output: { | ||||||
|  |         comments: false | ||||||
|  |       }, | ||||||
|  |       sourceMap: true | ||||||
|  |     }), | ||||||
|  |     new webpack.BannerPlugin(BANNER), | ||||||
|  |     new webpack.DefinePlugin({ | ||||||
|  |       'IS_PRODUCTION': true, | ||||||
|  |       'LIB_VERSION': VERSION | ||||||
|  |     }) | ||||||
|  |   ], | ||||||
|  | } | ||||||
							
								
								
									
										106
									
								
								build/webpack.test.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								build/webpack.test.js
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,106 @@ | ||||||
|  | const webpack = require('webpack'); | ||||||
|  | 
 | ||||||
|  | const root = require('./helpers').root; | ||||||
|  | const VERSION = JSON.stringify(require('../package.json').version); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | module.exports = { | ||||||
|  | 
 | ||||||
|  |   devtool: 'inline-source-map', | ||||||
|  |   resolve: { | ||||||
|  |     extensions: ['', '.ts', '.js', '.json', '.css', '.scss', '.html'], | ||||||
|  |     root: root('lib'), | ||||||
|  |     descriptionFiles: ['package.json'], | ||||||
|  |     modules: [ | ||||||
|  |       'node_modules', | ||||||
|  |       root('lib'), | ||||||
|  |     ], | ||||||
|  |     alias: { | ||||||
|  |       './lib/bootstrap': root('lib/bootstrap.dev'), | ||||||
|  |       http: 'stream-http', | ||||||
|  |       https: 'stream-http' | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   externals: { | ||||||
|  |     "jquery": "jQuery" | ||||||
|  |   }, | ||||||
|  |   node: { | ||||||
|  |     fs: "empty" | ||||||
|  |   }, | ||||||
|  | 
 | ||||||
|  |   output: { | ||||||
|  |     path: root('dist'), | ||||||
|  |     filename: '[name].js', | ||||||
|  |     sourceMapFilename: '[name].map', | ||||||
|  |     chunkFilename: '[id].chunk.js' | ||||||
|  |   }, | ||||||
|  | 
 | ||||||
|  |   module: { | ||||||
|  |     preLoaders: [{ | ||||||
|  |       test: /\.js$/, | ||||||
|  |       loader: 'source-map' | ||||||
|  |     }], | ||||||
|  |     loaders: [ { | ||||||
|  |       test: /\.ts$/, | ||||||
|  |       loaders: [ | ||||||
|  |         'awesome-typescript-loader' | ||||||
|  |       ], | ||||||
|  |       query: { | ||||||
|  |         "sourceMap": false, | ||||||
|  |         "inlineSourceMap": true, | ||||||
|  |         "removeComments": true, | ||||||
|  |         "module": "commonjs" | ||||||
|  |       } | ||||||
|  |     }, { | ||||||
|  |       test: /\.ts$/, | ||||||
|  |       loaders: [ | ||||||
|  |         'angular2-template-loader' | ||||||
|  |       ], | ||||||
|  |       exclude: [/\.(spec|e2e)\.ts$/] | ||||||
|  |     },{ | ||||||
|  |       test: /lib\/.*\.css$/, | ||||||
|  |       loaders: ['raw-loader'], | ||||||
|  |       exclude: [/redoc-initial-styles\.css$/] | ||||||
|  |     },{ | ||||||
|  |       test: /\.css$/, | ||||||
|  |       loaders: ['style', 'css?-import'], | ||||||
|  |       exclude: [/lib\/(?!.*redoc-initial-styles).*\.css$/] | ||||||
|  |     },{ | ||||||
|  |       test: /\.html$/, | ||||||
|  |       loader: 'raw-loader' | ||||||
|  |     }], | ||||||
|  |     postLoaders: [ | ||||||
|  | 
 | ||||||
|  |       /** | ||||||
|  |        * Instruments JS files with Istanbul for subsequent code coverage reporting. | ||||||
|  |        * Instrument only testing sources. | ||||||
|  |        * | ||||||
|  |        * See: https://github.com/deepsweet/istanbul-instrumenter-loader
 | ||||||
|  |        */ | ||||||
|  |       { | ||||||
|  |         test: /\.(js|ts)$/, loader: 'istanbul-instrumenter-loader', | ||||||
|  |         include: root('lib'), | ||||||
|  |         exclude: [ | ||||||
|  |           /\.(e2e|spec)\.ts$/, | ||||||
|  |           /node_modules/ | ||||||
|  |         ] | ||||||
|  |       } | ||||||
|  | 
 | ||||||
|  |     ] | ||||||
|  |   }, | ||||||
|  | 
 | ||||||
|  |   plugins: [ | ||||||
|  |     new webpack.DefinePlugin({ | ||||||
|  |       'IS_PRODUCTION': false, | ||||||
|  |       'LIB_VERSION': VERSION | ||||||
|  |     }), | ||||||
|  |     // ignore changes during tests
 | ||||||
|  |     new webpack.WatchIgnorePlugin([ | ||||||
|  |       /\/ReDoc$/i, // ignore change of ReDoc folder itself
 | ||||||
|  |       /node_modules\/(?:[^\/]*(?:\/|$))*[^\/]*$/, | ||||||
|  |       /\.tmp\/(?:[^\/]*(?:\/|$))*[^\/]*$/, | ||||||
|  |       /dist\/(?:[^\/]*(?:\/|$))*[^\/]*$/, | ||||||
|  |       /(?:[^\/]*(?:\/|$))*[^\/]*\.css$/ // ignore css files
 | ||||||
|  |     ]) | ||||||
|  |   ], | ||||||
|  | } | ||||||
							
								
								
									
										39
									
								
								demo/index-gh.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								demo/index-gh.html
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,39 @@ | ||||||
|  | <!DOCTYPE html> | ||||||
|  | <html> | ||||||
|  |   <head> | ||||||
|  |     <title>ReDoc</title> | ||||||
|  |     <link rel="stylesheet" href="main.css"> | ||||||
|  |     <meta name="viewport" content="width=device-width, initial-scale=1"> | ||||||
|  |     <script src="https://cdn.vaadin.com/vaadin-core-elements/latest/webcomponentsjs/webcomponents-lite.min.js"></script> | ||||||
|  |     <link rel="import" href="https://cdn.vaadin.com/vaadin-core-elements/master/vaadin-combo-box/vaadin-combo-box-light.html"> | ||||||
|  |   </head> | ||||||
|  |   <body> | ||||||
|  |     <nav> | ||||||
|  |       <header> <a href="/ReDoc"> ReDoc </a> </header> | ||||||
|  |       <template is="dom-bind" id="specs"> | ||||||
|  |         <form id="schema-url-form" is="iron-form"> | ||||||
|  |           <vaadin-combo-box-light id="spec-input" items="[[specs]]" allow-custom-value> | ||||||
|  |             <input placeholder="URL to a spec to try" id="schema-url-input" type="text" is="iron-input" value="https://rebilly.github.io/RebillyAPI/swagger.json"> | ||||||
|  |           </vaadin-combo-box-light> | ||||||
|  |           <button type="submit"> Explore </button> | ||||||
|  |         </form> | ||||||
|  |       </template> | ||||||
|  |       <iframe src="https://ghbtns.com/github-btn.html?user=Rebilly&repo=ReDoc&type=star&count=true&size=large" | ||||||
|  |       frameborder="0" scrolling="0" width="130px" height="30px"></iframe> | ||||||
|  |     </nav> | ||||||
|  | 
 | ||||||
|  |     <redoc scroll-y-offset="body > nav" spec-url='swagger.yaml'></redoc> | ||||||
|  | 
 | ||||||
|  |     <script src="main.js"> </script> | ||||||
|  |     <script src="./dist/redoc.min.js"> </script> | ||||||
|  |     <script> | ||||||
|  |       (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ | ||||||
|  |       (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), | ||||||
|  |       m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) | ||||||
|  |       })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); | ||||||
|  | 
 | ||||||
|  |       ga('create', 'UA-81703547-1', 'auto'); | ||||||
|  |       ga('send', 'pageview'); | ||||||
|  |     </script> | ||||||
|  |   </body> | ||||||
|  | </html> | ||||||
|  | @ -25,7 +25,10 @@ | ||||||
|     <redoc scroll-y-offset="body > nav" spec-url='swagger.yaml'></redoc> |     <redoc scroll-y-offset="body > nav" spec-url='swagger.yaml'></redoc> | ||||||
| 
 | 
 | ||||||
|     <script src="main.js"> </script> |     <script src="main.js"> </script> | ||||||
|     <script src="./dist/redoc.min.js"> </script> |     <script src="/webpack-dev-server.js"></script> | ||||||
|  |     <script src="/polyfills.js"></script> | ||||||
|  |     <script src="/vendor.js"></script> | ||||||
|  |     <script src="/redoc.js"></script> | ||||||
|     <script> |     <script> | ||||||
|       (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |       (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ | ||||||
|       (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |       (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), | ||||||
|  |  | ||||||
|  | @ -31,7 +31,6 @@ | ||||||
|     schemaUrlInput = document.getElementById('schema-url-input'); |     schemaUrlInput = document.getElementById('schema-url-input'); | ||||||
| 
 | 
 | ||||||
|     schemaUrlForm.addEventListener('submit', function(event) { |     schemaUrlForm.addEventListener('submit', function(event) { | ||||||
|       console.log('test') |  | ||||||
|       event.preventDefault(); |       event.preventDefault(); | ||||||
|       event.stopPropagation(); |       event.stopPropagation(); | ||||||
|       location.search = updateQueryStringParameter(location.search, 'url', schemaUrlInput.value) |       location.search = updateQueryStringParameter(location.search, 'url', schemaUrlInput.value) | ||||||
|  | @ -71,5 +70,4 @@ | ||||||
|       }); |       }); | ||||||
|     }); |     }); | ||||||
|   }); |   }); | ||||||
|   //window.redocDebugMode = true;
 |  | ||||||
| })(); | })(); | ||||||
|  |  | ||||||
|  | @ -1,2 +0,0 @@ | ||||||
| require('shelljs/global'); |  | ||||||
| require('require-dir')('build/tasks'); |  | ||||||
							
								
								
									
										110
									
								
								karma.conf.js
									
									
									
									
									
								
							
							
						
						
									
										110
									
								
								karma.conf.js
									
									
									
									
									
								
							|  | @ -1,73 +1,51 @@ | ||||||
| module.exports = function (config) { | module.exports = function (config) { | ||||||
|     config.set({ |   const testWebpackConfig = require('./build/webpack.test.js'); | ||||||
|         frameworks: ['phantomjs-shim', 'jspm', 'jasmine', 'sinon', 'should'], |   const travis = process.env.TRAVIS; | ||||||
|         preprocessors: { |  | ||||||
|           '.tmp/lib/**/!(*spec).js': ['babel', 'coverage'] |  | ||||||
|         }, |  | ||||||
|         babelPreprocessor: { |  | ||||||
|             options: { |  | ||||||
|                 sourceMap: 'inline', |  | ||||||
|                 "optional": [ |  | ||||||
|                   "runtime", |  | ||||||
|                   "optimisation.modules.system", |  | ||||||
|                   "es7.decorators", |  | ||||||
|                   "es7.classProperties" |  | ||||||
|                 ] |  | ||||||
|             }, |  | ||||||
|             sourceFileName: function(file) { |  | ||||||
|               return file.originalPath; |  | ||||||
|             } |  | ||||||
|         }, |  | ||||||
| 
 | 
 | ||||||
|         coverageReporter: { |   config.set({ | ||||||
|             instrumenters: { isparta : require('isparta') }, |     frameworks: ['phantomjs-shim', 'jasmine', 'sinon', 'should'], | ||||||
|             instrumenter: { |     preprocessors: { | ||||||
|                 '.tmp/lib/**/!(*spec).js': 'isparta' |       './tests/spec-bundle.js': ['coverage', 'webpack', 'sourcemap'] | ||||||
|             }, |     }, | ||||||
|             dir: 'coverage/', |  | ||||||
|             reporters: [ |  | ||||||
|                 {type: 'html'}, |  | ||||||
|                 {type: 'lcov'}, |  | ||||||
|                 {type: 'json'} |  | ||||||
|             ] |  | ||||||
|         }, |  | ||||||
|         client: { |  | ||||||
|           chai: { |  | ||||||
|             truncateThreshold: 0 |  | ||||||
|           } |  | ||||||
|         }, |  | ||||||
|         //load angular dependencies and browser polyfills
 |  | ||||||
|         files: [ |  | ||||||
|           'node_modules/zone.js/dist/zone.js', |  | ||||||
|           'node_modules/zone.js/dist/async-test.js', |  | ||||||
|           'node_modules/zone.js/dist/jasmine-patch.js', |  | ||||||
|           'node_modules/zone.js/dist/long-stack-trace-zone.js', |  | ||||||
|           'node_modules/babel-polyfill/dist/polyfill.js', |  | ||||||
|           './node_modules/reflect-metadata/Reflect.js', |  | ||||||
|           '.tmp/prismjs-bundle.js' |  | ||||||
|         ], |  | ||||||
| 
 | 
 | ||||||
|         jspm: { |     coverageReporter: { | ||||||
|             config: 'system.config.js', |       dir: 'coverage/', | ||||||
|             loadFiles: ['.tmp/tests/setup.js', '.tmp/tests/helpers.js', '.tmp/lib/**/*.js', |       reporters: [ | ||||||
|             '.tmp/tests/unit/*.js'], |         {type: 'html'}, | ||||||
|             serveFiles: ['tests/schemas/**/*.json','tests/schemas/**/*.yml', 'lib/**/*.html', |         {type: 'lcov'}, | ||||||
|             '.tmp/*js', '.tmp/lib/**/*.css'] |         {type: 'json'}, | ||||||
|         }, |         {type: 'text-summary'} | ||||||
|  |       ] | ||||||
|  |     }, | ||||||
|  |     webpack: testWebpackConfig, | ||||||
|  |     webpackMiddleware: { | ||||||
|  |       stats: 'errors-only', | ||||||
|  |       state: true | ||||||
|  |     }, | ||||||
|  |     client: { | ||||||
|  |       chai: { | ||||||
|  |         truncateThreshold: 0 | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     files: [ | ||||||
|  |       { pattern: './tests/spec-bundle.js', watched: false }, | ||||||
|  |       { pattern: 'tests/schemas/**/*.json', included: false }, | ||||||
|  |       { pattern: 'tests/schemas/**/*.yml', included: false }, | ||||||
|  |       { pattern: 'lib/**/*.html', included: false }, | ||||||
|  |       { pattern: 'lib/**/*.css', included: false } | ||||||
|  |     ], | ||||||
| 
 | 
 | ||||||
|         proxies: { |     proxies: { | ||||||
|             '/.tmp/': '/base/.tmp/', |       '/tests/schemas': '/base/tests/schemas', | ||||||
|             '/tests/schemas': '/base/tests/schemas', |       '/lib/': '/base/lib/', | ||||||
|             '/lib/components/redoc/redoc-initial-styles.scss': '/base/.tmp/lib/components/Redoc/redoc-initial-styles.scss', |       '/node_modules/': '/base/node_modules/' | ||||||
|             '/lib/version.json': '/base/.tmp/lib/version.json', |     }, | ||||||
|             '/lib/': '/base/lib/', |     colors: true, | ||||||
|             '/jspm_packages/': '/base/jspm_packages/', |     singleRun: true, | ||||||
|             '/node_modules/': '/base/node_modules/' |     reporters: travis ? ['mocha', 'coverage', 'coveralls'] : ['mocha', 'coverage'], | ||||||
|         }, |  | ||||||
|         reporters: ['mocha', 'coverage'], |  | ||||||
| 
 | 
 | ||||||
|         browsers: ['PhantomJS'], |     browsers: ['PhantomJS'], | ||||||
| 
 | 
 | ||||||
|         browserNoActivityTimeout: 60000 |     browserNoActivityTimeout: 60000 | ||||||
|     }); |   }); | ||||||
| } | } | ||||||
|  |  | ||||||
							
								
								
									
										6
									
								
								lib/bootstrap.dev.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								lib/bootstrap.dev.ts
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,6 @@ | ||||||
|  | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; | ||||||
|  | import { RedocModule } from './redoc.module'; | ||||||
|  | 
 | ||||||
|  | export function bootstrapRedoc() { | ||||||
|  |   return platformBrowserDynamic().bootstrapModule(RedocModule); | ||||||
|  | } | ||||||
							
								
								
									
										6
									
								
								lib/bootstrap.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								lib/bootstrap.ts
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,6 @@ | ||||||
|  | import { platformBrowser } from '@angular/platform-browser'; | ||||||
|  | import { RedocModuleNgFactory } from './redoc.module.ngfactory'; | ||||||
|  | 
 | ||||||
|  | export function bootstrapRedoc() { | ||||||
|  |   return platformBrowser().bootstrapModuleFactory(RedocModuleNgFactory); | ||||||
|  | } | ||||||
|  | @ -6,7 +6,7 @@ | ||||||
|   </p> |   </p> | ||||||
|   <p> |   <p> | ||||||
|     <!-- TODO: create separate components for contact and license ? --> |     <!-- TODO: create separate components for contact and license ? --> | ||||||
|     <span *ngIf="info.contact"> Contact: |     <span *ngIf="info?.contact"> Contact: | ||||||
|       <a *ngIf="info.contact.url" href="{{info.contact.url}}"> |       <a *ngIf="info.contact.url" href="{{info.contact.url}}"> | ||||||
|         {{info.contact.name || info.contact.url}}</a> |         {{info.contact.name || info.contact.url}}</a> | ||||||
|       <a *ngIf="info.contact.email" href="mailto:{{info.contact.email}}"> |       <a *ngIf="info.contact.email" href="mailto:{{info.contact.email}}"> | ||||||
|  |  | ||||||
|  | @ -1,15 +1,16 @@ | ||||||
| 'use strict'; | 'use strict'; | ||||||
| 
 | import { Component, ChangeDetectionStrategy, OnInit } from '@angular/core'; | ||||||
| import { SpecManager, RedocComponent, BaseComponent } from '../base'; | import { SpecManager, BaseComponent } from '../base'; | ||||||
| import { OptionsService, MenuService } from '../../services/index'; | import { OptionsService, MenuService } from '../../services/index'; | ||||||
| 
 | 
 | ||||||
| @RedocComponent({ | @Component({ | ||||||
|   selector: 'api-info', |   selector: 'api-info', | ||||||
|   styleUrls: ['./api-info.css'], |   styleUrls: ['./api-info.css'], | ||||||
|   templateUrl: './api-info.html' |   templateUrl: './api-info.html', | ||||||
|  |   changeDetection: ChangeDetectionStrategy.OnPush | ||||||
| }) | }) | ||||||
| export class ApiInfo extends BaseComponent { | export class ApiInfo extends BaseComponent implements OnInit { | ||||||
|   info: any; |   info: any = {}; | ||||||
|   specUrl: String; |   specUrl: String; | ||||||
|   constructor(specMgr:SpecManager, private optionsService:OptionsService, private menuServ: MenuService) { |   constructor(specMgr:SpecManager, private optionsService:OptionsService, private menuServ: MenuService) { | ||||||
|     super(specMgr); |     super(specMgr); | ||||||
|  | @ -18,8 +19,12 @@ export class ApiInfo extends BaseComponent { | ||||||
|   init() { |   init() { | ||||||
|     this.info = this.componentSchema.info; |     this.info = this.componentSchema.info; | ||||||
|     this.specUrl = this.optionsService.options.specUrl; |     this.specUrl = this.optionsService.options.specUrl; | ||||||
|     if (parseInt(this.info.version.substring(0, 1)) !== NaN) { |     if (!isNaN(parseInt(this.info.version.substring(0, 1)))) { | ||||||
|       this.info.version = 'v' + this.info.version; |       this.info.version = 'v' + this.info.version; | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
|  |   ngOnInit() { | ||||||
|  |     this.preinit(); | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,13 +1,14 @@ | ||||||
| 'use strict'; | 'use strict'; | ||||||
|  | import { Component, ChangeDetectionStrategy, OnInit } from '@angular/core'; | ||||||
|  | import { BaseComponent, SpecManager } from '../base'; | ||||||
| 
 | 
 | ||||||
| import {RedocComponent, BaseComponent, SpecManager} from '../base'; | @Component({ | ||||||
| 
 |  | ||||||
| @RedocComponent({ |  | ||||||
|   selector: 'api-logo', |   selector: 'api-logo', | ||||||
|   styleUrls: ['./api-logo.css'], |   styleUrls: ['./api-logo.css'], | ||||||
|   templateUrl: './api-logo.html' |   templateUrl: './api-logo.html', | ||||||
|  |   changeDetection: ChangeDetectionStrategy.OnPush | ||||||
| }) | }) | ||||||
| export class ApiLogo extends BaseComponent { | export class ApiLogo extends BaseComponent implements OnInit { | ||||||
|   logo:any = {}; |   logo:any = {}; | ||||||
| 
 | 
 | ||||||
|   constructor(specMgr:SpecManager) { |   constructor(specMgr:SpecManager) { | ||||||
|  | @ -20,4 +21,8 @@ export class ApiLogo extends BaseComponent { | ||||||
|     this.logo.imgUrl = logoInfo.url; |     this.logo.imgUrl = logoInfo.url; | ||||||
|     this.logo.bgColor = logoInfo.backgroundColor || 'transparent'; |     this.logo.bgColor = logoInfo.backgroundColor || 'transparent'; | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
|  |   ngOnInit() { | ||||||
|  |     this.preinit(); | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -23,15 +23,11 @@ describe('Redoc components', () => { | ||||||
|       fixture = builder.createSync(TestAppComponent); |       fixture = builder.createSync(TestAppComponent); | ||||||
|       let debugEl = getChildDebugElement(fixture.debugElement, 'json-schema-lazy'); |       let debugEl = getChildDebugElement(fixture.debugElement, 'json-schema-lazy'); | ||||||
|       component = <JsonSchemaLazy>debugEl.componentInstance; |       component = <JsonSchemaLazy>debugEl.componentInstance; | ||||||
|       spyOn(component, '_loadAfterSelf').and.callThrough(); |       spyOn(component, '_loadAfterSelf').and.stub(); | ||||||
|       spyOn(component.resolver, 'resolveComponent').and.returnValue({ then: () => { |  | ||||||
|         return { catch: () => {/**/} }; |  | ||||||
|       }}); |  | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     afterEach(() => { |     afterEach(() => { | ||||||
|       component._loadAfterSelf.and.callThrough(); |       component._loadAfterSelf.and.callThrough(); | ||||||
|       component.resolver.resolveComponent.and.callThrough(); |  | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     it('should init component', () => { |     it('should init component', () => { | ||||||
|  | @ -44,14 +40,6 @@ describe('Redoc components', () => { | ||||||
|       component.load(); |       component.load(); | ||||||
|       expect(component._loadAfterSelf).toHaveBeenCalled(); |       expect(component._loadAfterSelf).toHaveBeenCalled(); | ||||||
|     }); |     }); | ||||||
| 
 |  | ||||||
|     it('should not run loadNextToLocation if already loaded', () => { |  | ||||||
|       component.pointer = '#/def'; |  | ||||||
|       fixture.detectChanges(); |  | ||||||
|       component.load(); |  | ||||||
|       component.load(); |  | ||||||
|       expect(component._loadAfterSelf.calls.count()).toEqual(1); |  | ||||||
|     }); |  | ||||||
|   }); |   }); | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,8 +1,7 @@ | ||||||
| 'use strict'; | 'use strict'; | ||||||
| 
 | 
 | ||||||
| import { Component, ElementRef, ViewContainerRef, OnDestroy, Input, | import { Component, ElementRef, ViewContainerRef, OnDestroy, Input, | ||||||
|   AfterViewInit, ComponentResolver, Renderer } from '@angular/core'; |   AfterViewInit, ComponentFactoryResolver, Renderer } from '@angular/core'; | ||||||
| import { CORE_DIRECTIVES } from '@angular/common'; |  | ||||||
| 
 | 
 | ||||||
| import { JsonSchema } from './json-schema'; | import { JsonSchema } from './json-schema'; | ||||||
| import { OptionsService } from '../../services/options.service'; | import { OptionsService } from '../../services/options.service'; | ||||||
|  | @ -12,8 +11,8 @@ var cache = {}; | ||||||
| 
 | 
 | ||||||
| @Component({ | @Component({ | ||||||
|   selector: 'json-schema-lazy', |   selector: 'json-schema-lazy', | ||||||
|   template: '', |   entryComponents: [ JsonSchema ], | ||||||
|   directives: [CORE_DIRECTIVES] |   template: '' | ||||||
| }) | }) | ||||||
| export class JsonSchemaLazy implements OnDestroy, AfterViewInit { | export class JsonSchemaLazy implements OnDestroy, AfterViewInit { | ||||||
|   @Input() pointer: string; |   @Input() pointer: string; | ||||||
|  | @ -26,7 +25,7 @@ export class JsonSchemaLazy implements OnDestroy, AfterViewInit { | ||||||
|   disableLazy: boolean = false; |   disableLazy: boolean = false; | ||||||
|   loaded: boolean = false; |   loaded: boolean = false; | ||||||
|   constructor(private specMgr:SpecManager, private location:ViewContainerRef, private elementRef:ElementRef, |   constructor(private specMgr:SpecManager, private location:ViewContainerRef, private elementRef:ElementRef, | ||||||
|     private resolver:ComponentResolver, private optionsService:OptionsService, private _renderer: Renderer) { |     private resolver:ComponentFactoryResolver, private optionsService:OptionsService, private _renderer: Renderer) { | ||||||
|       this.disableLazy = this.optionsService.options.disableLazySchemas; |       this.disableLazy = this.optionsService.options.disableLazySchemas; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  | @ -36,19 +35,14 @@ export class JsonSchemaLazy implements OnDestroy, AfterViewInit { | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   _loadAfterSelf() { |   _loadAfterSelf() { | ||||||
|  |     var componentFactory = this.resolver.resolveComponentFactory(JsonSchema); | ||||||
|  |     let contextInjector = this.location.parentInjector; | ||||||
|  |     let compRef = this.location.createComponent(componentFactory, null, contextInjector, null); | ||||||
|  |     this.initComponent(compRef.instance); | ||||||
|  |     this._renderer.setElementAttribute(compRef.location.nativeElement, 'class', this.location.element.nativeElement.className); | ||||||
|  |     compRef.changeDetectorRef.detectChanges(); | ||||||
|     this.loaded = true; |     this.loaded = true; | ||||||
|     return this.resolver.resolveComponent(JsonSchema).then(componentFactory => { |     return compRef; | ||||||
|       let contextInjector = this.location.parentInjector; |  | ||||||
|       let compRef = this.location.createComponent( |  | ||||||
|           componentFactory, null, contextInjector, null); |  | ||||||
|       this.initComponent(compRef.instance); |  | ||||||
|       this._renderer.setElementAttribute(compRef.location.nativeElement, 'class', this.location.element.nativeElement.className); |  | ||||||
|       compRef.changeDetectorRef.detectChanges(); |  | ||||||
|       return compRef; |  | ||||||
|     }).catch(err => { |  | ||||||
|       console.log(err); |  | ||||||
|       throw err; |  | ||||||
|     }); |  | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   load() { |   load() { | ||||||
|  | @ -63,19 +57,18 @@ export class JsonSchemaLazy implements OnDestroy, AfterViewInit { | ||||||
|   loadCached() { |   loadCached() { | ||||||
|     this.pointer = this.normalizePointer(); |     this.pointer = this.normalizePointer(); | ||||||
|     if (cache[this.pointer]) { |     if (cache[this.pointer]) { | ||||||
|       cache[this.pointer].then((compRef) => { |       let compRef = cache[this.pointer]; | ||||||
|         setTimeout( ()=> { |       setTimeout( ()=> { | ||||||
|           let $element = compRef.location.nativeElement; |         let $element = compRef.location.nativeElement; | ||||||
| 
 | 
 | ||||||
|           // skip caching view with tabs inside (discriminator)
 |         // skip caching view with descendant schemas
 | ||||||
|           // as it needs attached controller
 |         // as it needs attached controller
 | ||||||
|           if (!this.disableLazy && (compRef.instance.hasDescendants || compRef.instance._hasSubSchemas)) { |         if (!this.disableLazy && (compRef.instance.hasDescendants || compRef.instance._hasSubSchemas)) { | ||||||
|             this._loadAfterSelf(); |           this._loadAfterSelf(); | ||||||
|             return; |           return; | ||||||
|           } |         } | ||||||
|           insertAfter($element.cloneNode(true), this.elementRef.nativeElement); |         insertAfter($element.cloneNode(true), this.elementRef.nativeElement); | ||||||
|           this.loaded = true; |         this.loaded = true; | ||||||
|         }); |  | ||||||
|       }); |       }); | ||||||
|     } else { |     } else { | ||||||
|       cache[this.pointer] = this._loadAfterSelf(); |       cache[this.pointer] = this._loadAfterSelf(); | ||||||
|  |  | ||||||
|  | @ -39,15 +39,15 @@ | ||||||
|     </div> |     </div> | ||||||
|   </template> |   </template> | ||||||
|   <template ngSwitchCase="array"> |   <template ngSwitchCase="array"> | ||||||
|     <json-schema class="nested-schema" [pointer]="schema._pointer" [isArray]='true' |     <json-schema class="nested-schema" [pointer]="schema._pointer" | ||||||
|     [nestOdd]="!nestOdd" [isRequestSchema]="isRequestSchema"> </json-schema> |     [nestOdd]="!nestOdd" [isRequestSchema]="isRequestSchema"> </json-schema> | ||||||
|   </template> |   </template> | ||||||
|   <template ngSwitchCase="object"> |   <template ngSwitchCase="object"> | ||||||
|     <table class="params-wrap" [ngClass]="{'params-array': schema._isArray}"> |     <table class="params-wrap" [ngClass]="{'params-array': schema._isArray}"> | ||||||
|       <!-- <caption> {{_displayType}} </caption> --> |       <!-- <caption> {{_displayType}} </caption> --> | ||||||
|       <template ngFor [ngForOf]="properties" let-prop="$implicit" let-last="last" [ngForTrackBy]="trackByIdx"> |       <template ngFor [ngForOf]="properties" let-prop="$implicit" let-last="last" [ngForTrackBy]="trackByName"> | ||||||
|         <tr class="param" [ngClass]="{'last': last, |         <tr class="param" [ngClass]="{'last': last, | ||||||
|             'discriminator': prop.isDiscriminator && !activeDescendant.empty, |             'discriminator': prop.isDiscriminator, | ||||||
|             'complex': prop._pointer, |             'complex': prop._pointer, | ||||||
|             'additional': prop._additional, |             'additional': prop._additional, | ||||||
|             'expanded': subSchema.visible |             'expanded': subSchema.visible | ||||||
|  | @ -79,8 +79,8 @@ | ||||||
|             <div class="discriminator-info" *ngIf="prop.isDiscriminator"> |             <div class="discriminator-info" *ngIf="prop.isDiscriminator"> | ||||||
|               <span>This field value determines the exact schema:</span> |               <span>This field value determines the exact schema:</span> | ||||||
|               <drop-down (change)="selectDescendant($event)"> |               <drop-down (change)="selectDescendant($event)"> | ||||||
|                 <option *ngFor="let descendant of schema._descendants; let i=index" |                 <option *ngFor="let descendant of descendants; let i=index" | ||||||
|                 [value]="i">{{descendant.name}}</option> |                 [value]="i" [attr.selected]="descendant.active ? '' : null" >{{descendant.name}}</option> | ||||||
|               </drop-down> |               </drop-down> | ||||||
|             </div> |             </div> | ||||||
|           </td> |           </td> | ||||||
|  | @ -95,15 +95,6 @@ | ||||||
|           </td> |           </td> | ||||||
|         </tr> |         </tr> | ||||||
|       </template> |       </template> | ||||||
|       <tr *ngIf="hasDescendants" class="param-wrap discriminator-wrap" [ngClass]="{empty:activeDescendant.empty}"> |  | ||||||
|         <td colspan="2"> |  | ||||||
|           <div class="derived-schema" *ngFor="let descendant of schema._descendants" [ngClass]="{active: descendant.active, empty: descendant.empty}"> |  | ||||||
|             <json-schema class="discriminator-part" *ngIf="!descendant.empty" [childFor]="pointer" [nestOdd]="nestOdd" |  | ||||||
|             pointer="{{descendant.$ref}}" [final]="descendant.final" [isRequestSchema]="isRequestSchema"> |  | ||||||
|             </json-schema> |  | ||||||
|           </div> |  | ||||||
|         </td> |  | ||||||
|       </tr> |  | ||||||
|     </table> |     </table> | ||||||
|   </template> |   </template> | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -155,16 +155,6 @@ table { | ||||||
|   border-left-color: transparent; |   border-left-color: transparent; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .param.discriminator { |  | ||||||
|   > .param-info { |  | ||||||
|     padding-bottom: 0; |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   > .param-name:after { |  | ||||||
|     display: none; |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .discriminator-info { | .discriminator-info { | ||||||
|   font-weight: $regular; |   font-weight: $regular; | ||||||
|   margin-bottom: 10px; |   margin-bottom: 10px; | ||||||
|  |  | ||||||
|  | @ -32,7 +32,7 @@ describe('Redoc components', () => { | ||||||
| 
 | 
 | ||||||
|     it('should init component', () => { |     it('should init component', () => { | ||||||
|       component.pointer = ''; |       component.pointer = ''; | ||||||
|       (<any>specMgr)._schema = {type: 'object'}; |       (<SpecManager>specMgr)._schema = {type: 'object'}; | ||||||
|       fixture.detectChanges(); |       fixture.detectChanges(); | ||||||
|       expect(component).not.toBeNull(); |       expect(component).not.toBeNull(); | ||||||
|     }); |     }); | ||||||
|  |  | ||||||
|  | @ -1,33 +1,32 @@ | ||||||
| 'use strict'; | 'use strict'; | ||||||
| 
 | 
 | ||||||
| import { Input, Renderer, ElementRef, forwardRef } from '@angular/core'; | import { Component, Input, Renderer, ElementRef, OnInit, ChangeDetectionStrategy } from '@angular/core'; | ||||||
| 
 | 
 | ||||||
| import { RedocComponent, BaseComponent, SpecManager } from '../base'; | import { BaseComponent, SpecManager } from '../base'; | ||||||
| import { DropDown } from '../../shared/components/index'; |  | ||||||
| import { SchemaNormalizer, SchemaHelper } from '../../services/index'; | import { SchemaNormalizer, SchemaHelper } from '../../services/index'; | ||||||
| import { JsonSchemaLazy } from './json-schema-lazy'; |  | ||||||
| import { Zippy } from '../../shared/components/Zippy/zippy'; |  | ||||||
| 
 | 
 | ||||||
| @RedocComponent({ | @Component({ | ||||||
|   selector: 'json-schema', |   selector: 'json-schema', | ||||||
|   templateUrl: './json-schema.html', |   templateUrl: './json-schema.html', | ||||||
|   styleUrls: ['./json-schema.css'], |   styleUrls: ['./json-schema.css'], | ||||||
|   directives: [JsonSchema, DropDown, forwardRef(() => JsonSchemaLazy), Zippy], |   changeDetection: ChangeDetectionStrategy.OnPush | ||||||
|   detect: true |  | ||||||
| }) | }) | ||||||
| export class JsonSchema extends BaseComponent { | export class JsonSchema extends BaseComponent implements OnInit { | ||||||
|  |   @Input() pointer: string; | ||||||
|  |   @Input() final: boolean = false; | ||||||
|  |   @Input() nestOdd: boolean; | ||||||
|  |   @Input() childFor: string; | ||||||
|  |   @Input() isRequestSchema: boolean; | ||||||
|  | 
 | ||||||
|   schema: any = {}; |   schema: any = {}; | ||||||
|   activeDescendant:any = {}; |   activeDescendant:any = {}; | ||||||
|   hasDescendants: boolean = false; |   hasDescendants: boolean = false; | ||||||
|   _hasSubSchemas: boolean = false; |   _hasSubSchemas: boolean = false; | ||||||
|   properties: any; |   properties: any; | ||||||
|   _isArray: boolean; |   _isArray: boolean; | ||||||
|   @Input() final: boolean = false; |  | ||||||
|   @Input() nestOdd: boolean; |  | ||||||
|   @Input() childFor: string; |  | ||||||
|   @Input() isRequestSchema: boolean; |  | ||||||
|   normalizer: SchemaNormalizer; |   normalizer: SchemaNormalizer; | ||||||
|   autoExpand = false; |   autoExpand = false; | ||||||
|  |   descendants: any; | ||||||
| 
 | 
 | ||||||
|   constructor(specMgr:SpecManager, private _renderer: Renderer, private _elementRef: ElementRef) { |   constructor(specMgr:SpecManager, private _renderer: Renderer, private _elementRef: ElementRef) { | ||||||
|     super(specMgr); |     super(specMgr); | ||||||
|  | @ -39,46 +38,40 @@ export class JsonSchema extends BaseComponent { | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   selectDescendant(idx) { |   selectDescendant(idx) { | ||||||
|     let activeDescendant = this.schema._descendants[idx]; |     let activeDescendant = this.descendants[idx]; | ||||||
|     if (!activeDescendant || activeDescendant.active) return; |     if (!activeDescendant || activeDescendant.active) return; | ||||||
|     this.schema._descendants.forEach(subSchema => { |     this.descendants.forEach(d => { | ||||||
|       subSchema.active = false; |       d.active = false; | ||||||
|     }); |     }); | ||||||
|     activeDescendant.active = true; |     activeDescendant.active = true; | ||||||
|     this.activeDescendant = activeDescendant; | 
 | ||||||
|  |     this.pointer = activeDescendant.$ref; | ||||||
|  |     this.schema = this.specMgr.byPointer(this.pointer); | ||||||
|  |     this.schema = this.normalizer.normalize(this.schema, this.normPointer, {omitParent: false}); | ||||||
|  |     this.preprocessSchema(); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   initDescendants() { |   initDescendants() { | ||||||
|     if (!this.schema._descendants || !this.schema._descendants.length) { |     this.descendants = this.specMgr.findDerivedDefinitions(this.normPointer); | ||||||
|       return; |  | ||||||
|     } |  | ||||||
|     this.hasDescendants = true; |  | ||||||
|     let enumArr = this.schema._properties[this.schema._properties.length - 1].enum; |  | ||||||
|     if (enumArr) { |  | ||||||
|       let enumOrder = {}; |  | ||||||
|       enumArr.forEach((enumItem, idx) => { |  | ||||||
|         enumOrder[enumItem.val] = idx; |  | ||||||
|       }); |  | ||||||
| 
 |  | ||||||
|       this.schema._descendants.sort((a, b) => { |  | ||||||
|         return enumOrder[a.name] > enumOrder[b.name] ? 1 : -1; |  | ||||||
|       }); |  | ||||||
|     } |  | ||||||
|     this.selectDescendant(0); |     this.selectDescendant(0); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   init() { |   init() { | ||||||
|     if (!this.pointer) return; |     if (!this.pointer) return; | ||||||
|     if (this.nestOdd) { |  | ||||||
|       this._renderer.setElementAttribute(this._elementRef.nativeElement, 'nestodd', 'true'); |  | ||||||
|     } |  | ||||||
|     this.schema = this.componentSchema; |     this.schema = this.componentSchema; | ||||||
|     if (!this.schema) { |     if (!this.schema) { | ||||||
|       throw new Error(`Can't load component schema at ${this.pointer}`); |       throw new Error(`Can't load component schema at ${this.pointer}`); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     this.applyStyling(); | ||||||
|  | 
 | ||||||
|     this.schema = this.normalizer.normalize(this.schema, this.normPointer); |     this.schema = this.normalizer.normalize(this.schema, this.normPointer); | ||||||
|     this.schema = SchemaHelper.unwrapArray(this.schema, this.normPointer); |     this.schema = SchemaHelper.unwrapArray(this.schema, this.normPointer); | ||||||
|  |     this.initDescendants(); | ||||||
|  |     this.preprocessSchema(); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   preprocessSchema() { | ||||||
|     SchemaHelper.preprocess(this.schema, this.normPointer, this.pointer); |     SchemaHelper.preprocess(this.schema, this.normPointer, this.pointer); | ||||||
| 
 | 
 | ||||||
|     if (!this.schema.isTrivial) { |     if (!this.schema.isTrivial) { | ||||||
|  | @ -92,7 +85,6 @@ export class JsonSchema extends BaseComponent { | ||||||
|       this.properties = this.properties && this.properties.filter(prop => !prop.readOnly); |       this.properties = this.properties && this.properties.filter(prop => !prop.readOnly); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     this.initDescendants(); |  | ||||||
|     this._hasSubSchemas = this.properties && this.properties.some( |     this._hasSubSchemas = this.properties && this.properties.some( | ||||||
|       propSchema => { |       propSchema => { | ||||||
|         if (propSchema.type === 'array') { |         if (propSchema.type === 'array') { | ||||||
|  | @ -104,7 +96,17 @@ export class JsonSchema extends BaseComponent { | ||||||
|     this.autoExpand = this.properties && this.properties.length === 1; |     this.autoExpand = this.properties && this.properties.length === 1; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   trackByIdx(index: number, item: any): number { |   applyStyling() { | ||||||
|     return index; |     if (this.nestOdd) { | ||||||
|  |       this._renderer.setElementAttribute(this._elementRef.nativeElement, 'nestodd', 'true'); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   trackByName(index: number, item: any): number { | ||||||
|  |     return item.name; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   ngOnInit() { | ||||||
|  |     this.preinit(); | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,27 +1,21 @@ | ||||||
| 'use strict'; | 'use strict'; | ||||||
| import { Input } from '@angular/core'; | import { Input, Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; | ||||||
| import JsonPointer from '../../utils/JsonPointer'; | import JsonPointer from '../../utils/JsonPointer'; | ||||||
| import { RedocComponent, BaseComponent, SpecManager} from '../base'; | import { BaseComponent, SpecManager } from '../base'; | ||||||
| 
 |  | ||||||
| import { SelectOnClick } from '../../shared/components/SelectOnClick/select-on-click.directive'; |  | ||||||
| 
 |  | ||||||
| import { ParamsList } from '../ParamsList/params-list'; |  | ||||||
| import { ResponsesList } from '../ResponsesList/responses-list'; |  | ||||||
| import { ResponsesSamples } from '../ResponsesSamples/responses-samples'; |  | ||||||
| import { SchemaSample } from '../SchemaSample/schema-sample'; |  | ||||||
| import { RequestSamples } from '../RequestSamples/request-samples'; |  | ||||||
| import { SchemaHelper } from '../../services/schema-helper.service'; | import { SchemaHelper } from '../../services/schema-helper.service'; | ||||||
| 
 | 
 | ||||||
| @RedocComponent({ | @Component({ | ||||||
|   selector: 'method', |   selector: 'method', | ||||||
|   templateUrl: './method.html', |   templateUrl: './method.html', | ||||||
|   styleUrls: ['./method.css'], |   styleUrls: ['./method.css'], | ||||||
|   directives: [ ParamsList, ResponsesList, ResponsesSamples, SchemaSample, RequestSamples, SelectOnClick ], |   changeDetection: ChangeDetectionStrategy.OnPush | ||||||
|   detect: true |  | ||||||
| }) | }) | ||||||
| export class Method extends BaseComponent { | export class Method extends BaseComponent implements OnInit { | ||||||
|   method:any; |   @Input() pointer:string; | ||||||
|   @Input() tag:string; |   @Input() tag:string; | ||||||
|  | 
 | ||||||
|  |   method:any; | ||||||
|  | 
 | ||||||
|   constructor(specMgr:SpecManager) { |   constructor(specMgr:SpecManager) { | ||||||
|     super(specMgr); |     super(specMgr); | ||||||
|   } |   } | ||||||
|  | @ -53,4 +47,8 @@ export class Method extends BaseComponent { | ||||||
|     let bodyParam = pathParams.find(param => param.in === 'body'); |     let bodyParam = pathParams.find(param => param.in === 'body'); | ||||||
|     return bodyParam; |     return bodyParam; | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
|  |   ngOnInit() { | ||||||
|  |     this.preinit(); | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| <div class="methods"> | <div class="methods"> | ||||||
|   <div class="tag" *ngFor="let tag of tags;trackBy:trackByTagName"> |   <div class="tag" *ngFor="let tag of tags;trackBy:trackByTagName"> | ||||||
|     <div class="tag-info" [attr.section]="tag.id" *ngIf="!tag.virtual"> |     <div class="tag-info" [attr.section]="tag.id" *ngIf="!tag.headless"> | ||||||
|       <h1 class="sharable-header"> <a class="share-link" href="#tag/{{tag.name | encodeURIComponent}}"></a>{{tag.name}} </h1> |       <h1 class="sharable-header"> <a class="share-link" href="#tag/{{tag.name | encodeURIComponent}}"></a>{{tag.name}} </h1> | ||||||
|       <p *ngIf="tag.description" [innerHtml]="tag.description | marked"> </p> |       <p *ngIf="tag.description" [innerHtml]="tag.description | marked"> </p> | ||||||
|     </div> |     </div> | ||||||
|  |  | ||||||
|  | @ -1,21 +1,19 @@ | ||||||
| 'use strict'; | 'use strict'; | ||||||
| 
 | import { Component, Input, OnInit, ChangeDetectionStrategy } from '@angular/core'; | ||||||
| import { forwardRef } from '@angular/core'; | import { BaseComponent, SpecManager } from '../base'; | ||||||
| import { RedocComponent, BaseComponent, SpecManager } from '../base'; |  | ||||||
| import { Method } from '../Method/method'; |  | ||||||
| import { EncodeURIComponentPipe } from '../../utils/pipes'; |  | ||||||
| import { SchemaHelper } from '../../services/index'; | import { SchemaHelper } from '../../services/index'; | ||||||
| 
 | 
 | ||||||
| @RedocComponent({ | @Component({ | ||||||
|   selector: 'methods-list', |   selector: 'methods-list', | ||||||
|   templateUrl: './methods-list.html', |   templateUrl: './methods-list.html', | ||||||
|   styleUrls: ['./methods-list.css'], |   styleUrls: ['./methods-list.css'], | ||||||
|   directives: [ forwardRef(() => Method) ], |   changeDetection: ChangeDetectionStrategy.OnPush | ||||||
|   pipes: [ EncodeURIComponentPipe ], |  | ||||||
|   detect: true |  | ||||||
| }) | }) | ||||||
| export class MethodsList extends BaseComponent { | export class MethodsList extends BaseComponent implements OnInit { | ||||||
|  |   @Input() pointer:string; | ||||||
|  | 
 | ||||||
|   tags:Array<any> = []; |   tags:Array<any> = []; | ||||||
|  | 
 | ||||||
|   constructor(specMgr:SpecManager) { |   constructor(specMgr:SpecManager) { | ||||||
|     super(specMgr); |     super(specMgr); | ||||||
|   } |   } | ||||||
|  | @ -39,4 +37,8 @@ export class MethodsList extends BaseComponent { | ||||||
|   trackByTagName(idx, el) { |   trackByTagName(idx, el) { | ||||||
|     return el.name; |     return el.name; | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
|  |   ngOnInit() { | ||||||
|  |     this.preinit(); | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,8 +1,6 @@ | ||||||
| 'use strict'; | 'use strict'; | ||||||
| 
 | import { Component, Input, ChangeDetectionStrategy, OnInit } from '@angular/core'; | ||||||
| import { RedocComponent, BaseComponent, SpecManager } from '../base'; | import { BaseComponent, SpecManager } from '../base'; | ||||||
| import { JsonSchema } from '../JsonSchema/json-schema'; |  | ||||||
| import { JsonSchemaLazy } from '../JsonSchema/json-schema-lazy'; |  | ||||||
| import { SchemaHelper } from '../../services/schema-helper.service'; | import { SchemaHelper } from '../../services/schema-helper.service'; | ||||||
| 
 | 
 | ||||||
| function safePush(obj, prop, item) { | function safePush(obj, prop, item) { | ||||||
|  | @ -10,13 +8,14 @@ function safePush(obj, prop, item) { | ||||||
|   obj[prop].push(item); |   obj[prop].push(item); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @RedocComponent({ | @Component({ | ||||||
|   selector: 'params-list', |   selector: 'params-list', | ||||||
|   templateUrl: './params-list.html', |   templateUrl: './params-list.html', | ||||||
|   styleUrls: ['./params-list.css'], |   styleUrls: ['./params-list.css'], | ||||||
|   directives: [JsonSchema, JsonSchemaLazy] |   changeDetection: ChangeDetectionStrategy.OnPush | ||||||
| }) | }) | ||||||
| export class ParamsList extends BaseComponent { | export class ParamsList extends BaseComponent implements OnInit { | ||||||
|  |   @Input() pointer:string; | ||||||
| 
 | 
 | ||||||
|   params: Array<any>; |   params: Array<any>; | ||||||
|   empty: boolean; |   empty: boolean; | ||||||
|  | @ -74,4 +73,8 @@ export class ParamsList extends BaseComponent { | ||||||
|     params.forEach((param) => safePush(res, param.in, param)); |     params.forEach((param) => safePush(res, param.in, param)); | ||||||
|     return res; |     return res; | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
|  |   ngOnInit() { | ||||||
|  |     this.preinit(); | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -198,7 +198,7 @@ footer { | ||||||
| 
 | 
 | ||||||
|         &:before, &:after { |         &:before, &:after { | ||||||
|             letter-spacing: -0.2em; |             letter-spacing: -0.2em; | ||||||
|             content: "\\00a0"; |             content: "\00a0"; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,15 +1,14 @@ | ||||||
| 'use strict'; | 'use strict'; | ||||||
| 
 | 
 | ||||||
| import { getChildDebugElement } from '../../../tests/helpers'; | import { getChildDebugElement } from '../../../tests/helpers'; | ||||||
| import { Component, ComponentRef } from '@angular/core'; | import { Component } from '@angular/core'; | ||||||
| import { BrowserDomAdapter } from '@angular/platform-browser/src/browser/browser_adapter'; |  | ||||||
| 
 | 
 | ||||||
| import { | import { | ||||||
|   inject, |   inject, | ||||||
|   async |   async | ||||||
| } from '@angular/core/testing'; | } from '@angular/core/testing'; | ||||||
| 
 | 
 | ||||||
| import { TestComponentBuilder } from '@angular/compiler/testing'; | import { TestComponentBuilder } from '@angular/core/testing'; | ||||||
| 
 | 
 | ||||||
| import { Redoc } from './redoc'; | import { Redoc } from './redoc'; | ||||||
| import { SpecManager } from '../../utils/SpecManager'; | import { SpecManager } from '../../utils/SpecManager'; | ||||||
|  | @ -45,122 +44,122 @@ describe('Redoc components', () => { | ||||||
|     }); |     }); | ||||||
|   }); |   }); | ||||||
| 
 | 
 | ||||||
|   describe('Redoc init', () => { |   // describe('Redoc init', () => {
 | ||||||
|     let dom = new BrowserDomAdapter(); |   //   let dom = new BrowserDomAdapter();
 | ||||||
|     let elem; |   //   let elem;
 | ||||||
|     beforeEach(() => { |   //   beforeEach(() => {
 | ||||||
|       elem = dom.createElement('redoc'); |   //     elem = dom.createElement('redoc');
 | ||||||
|       dom.defaultDoc().body.appendChild(elem); |   //     dom.defaultDoc().body.appendChild(elem);
 | ||||||
|     }); |   //   });
 | ||||||
| 
 |   //
 | ||||||
|     afterEach(() => { |   //   afterEach(() => {
 | ||||||
|       dom.defaultDoc().body.removeChild(elem); |   //     dom.defaultDoc().body.removeChild(elem);
 | ||||||
|     }); |   //   });
 | ||||||
| 
 |   //
 | ||||||
|     it('should return promise', () => { |   //   it('should return promise', () => {
 | ||||||
|       let res = Redoc.init().catch(() => {/**/}); |   //     let res = Redoc.init().catch(() => {/**/});
 | ||||||
|       res.should.be.instanceof(Promise); |   //     res.should.be.instanceof(Promise);
 | ||||||
|     }); |   //   });
 | ||||||
| 
 |   //
 | ||||||
|     it('should hide loading animation and display message in case of error', async(() => { |   //   it('should hide loading animation and display message in case of error', async(() => {
 | ||||||
|       spyOn(Redoc, 'hideLoadingAnimation').and.callThrough(); |   //     spyOn(Redoc, 'hideLoadingAnimation').and.callThrough();
 | ||||||
|       spyOn(Redoc, 'displayError').and.callThrough(); |   //     spyOn(Redoc, 'displayError').and.callThrough();
 | ||||||
|       let res = Redoc.init(); |   //     let res = Redoc.init();
 | ||||||
|       return res.catch(() => { |   //     return res.catch(() => {
 | ||||||
|         expect(Redoc.hideLoadingAnimation).toHaveBeenCalled(); |   //       expect(Redoc.hideLoadingAnimation).toHaveBeenCalled();
 | ||||||
|         expect(Redoc.displayError).toHaveBeenCalled(); |   //       expect(Redoc.displayError).toHaveBeenCalled();
 | ||||||
|       }); |   //     });
 | ||||||
|     })); |   //   }));
 | ||||||
| 
 |   //
 | ||||||
|     //skip because of PhantomJS crashes on this testcase
 |   //   //skip because of PhantomJS crashes on this testcase
 | ||||||
|     xit('should init redoc', (done) => { |   //   xit('should init redoc', (done) => {
 | ||||||
|       var node = document.createElement('redoc'); |   //     var node = document.createElement('redoc');
 | ||||||
|       document.body.appendChild(node); |   //     document.body.appendChild(node);
 | ||||||
|       let res = Redoc.init('/tests/schemas/extended-petstore.yml'); |   //     let res = Redoc.init('/tests/schemas/extended-petstore.yml');
 | ||||||
|       res.then(() => { done(); }, () => { |   //     res.then(() => { done(); }, () => {
 | ||||||
|         done.fail('Error handler should not been called'); |   //       done.fail('Error handler should not been called');
 | ||||||
|       }); |   //     });
 | ||||||
|     }); |   //   });
 | ||||||
|   }); |   // });
 | ||||||
| 
 |   //
 | ||||||
|   describe('Redoc destroy', () => { |   // describe('Redoc destroy', () => {
 | ||||||
|     let builder; |   //   let builder;
 | ||||||
|     let fixture; |   //   let fixture;
 | ||||||
|     let element; |   //   let element;
 | ||||||
|     let dom; |   //   let dom;
 | ||||||
|     let destroySpy; |   //   let destroySpy;
 | ||||||
| 
 |   //
 | ||||||
|     beforeEach(async(inject([TestComponentBuilder, SpecManager, OptionsService, BrowserDomAdapter], |   //   beforeEach(async(inject([TestComponentBuilder, SpecManager, OptionsService, BrowserDomAdapter],
 | ||||||
|       (tcb, specMgr, opts, _dom) => { |   //     (tcb, specMgr, opts, _dom) => {
 | ||||||
|       builder = tcb; |   //     builder = tcb;
 | ||||||
|       optsMgr = opts; |   //     optsMgr = opts;
 | ||||||
|       dom = _dom; |   //     dom = _dom;
 | ||||||
|       return specMgr.load('/tests/schemas/extended-petstore.yml'); |   //     return specMgr.load('/tests/schemas/extended-petstore.yml');
 | ||||||
|     }))); |   //   })));
 | ||||||
| 
 |   //
 | ||||||
|     beforeEach(() => { |   //   beforeEach(() => {
 | ||||||
|       fixture = builder.createSync(TestAppComponent); |   //     fixture = builder.createSync(TestAppComponent);
 | ||||||
|       element = getChildDebugElement(fixture.debugElement, 'methods-list').nativeElement; |   //     element = getChildDebugElement(fixture.debugElement, 'methods-list').nativeElement;
 | ||||||
|       destroySpy = jasmine.createSpy('spy'); |   //     destroySpy = jasmine.createSpy('spy');
 | ||||||
|       Redoc.appRef = <ComponentRef<any>>{ |   //     Redoc.appRef = <ComponentRef<any>>{
 | ||||||
|         destroy: destroySpy |   //       destroy: destroySpy
 | ||||||
|       }; |   //     };
 | ||||||
|       fixture.detectChanges(); |   //     fixture.detectChanges();
 | ||||||
|     }); |   //   });
 | ||||||
| 
 |   //
 | ||||||
|     afterEach(()=> { |   //   afterEach(()=> {
 | ||||||
|       fixture.destroy(); |   //     fixture.destroy();
 | ||||||
|       Redoc.appRef = null; |   //     Redoc.appRef = null;
 | ||||||
|     }); |   //   });
 | ||||||
| 
 |   //
 | ||||||
|     it('should call componentRef.destroy', () => { |   //   it('should call componentRef.destroy', () => {
 | ||||||
|       Redoc.destroy(); |   //     Redoc.destroy();
 | ||||||
|       expect(destroySpy).toHaveBeenCalled(); |   //     expect(destroySpy).toHaveBeenCalled();
 | ||||||
|     }); |   //   });
 | ||||||
| 
 |   //
 | ||||||
|     it('should create new host element', () => { |   //   it('should create new host element', () => {
 | ||||||
|       element.parentElement.removeChild(element); |   //     element.parentElement.removeChild(element);
 | ||||||
|       Redoc.destroy(); |   //     Redoc.destroy();
 | ||||||
|       expect(dom.query('redoc')).not.toBeNull(); |   //     expect(dom.query('redoc')).not.toBeNull();
 | ||||||
|       dom.query('redoc').should.not.be.equal(element); |   //     dom.query('redoc').should.not.be.equal(element);
 | ||||||
|     }); |   //   });
 | ||||||
| 
 |   //
 | ||||||
|     it('should set to null appRef', () => { |   //   it('should set to null appRef', () => {
 | ||||||
|       Redoc.destroy(); |   //     Redoc.destroy();
 | ||||||
|       expect(Redoc.appRef).toBeNull(); |   //     expect(Redoc.appRef).toBeNull();
 | ||||||
|     }); |   //   });
 | ||||||
|   }); |   // });
 | ||||||
| 
 |   //
 | ||||||
|   describe('Redoc autoInit', () => { |   // describe('Redoc autoInit', () => {
 | ||||||
|     const testURL = 'testurl'; |   //   const testURL = 'testurl';
 | ||||||
|     let dom = new BrowserDomAdapter(); |   //   let dom = new BrowserDomAdapter();
 | ||||||
|     //let redocInitSpy;
 |   //   //let redocInitSpy;
 | ||||||
|     let elem: HTMLElement; |   //   let elem: HTMLElement;
 | ||||||
| 
 |   //
 | ||||||
|     beforeEach(() => { |   //   beforeEach(() => {
 | ||||||
|       spyOn(Redoc, 'init').and.stub(); |   //     spyOn(Redoc, 'init').and.stub();
 | ||||||
|       elem = dom.createElement('redoc'); |   //     elem = dom.createElement('redoc');
 | ||||||
|       dom.defaultDoc().body.appendChild(elem); |   //     dom.defaultDoc().body.appendChild(elem);
 | ||||||
|       dom.setAttribute(elem, 'spec-url', testURL); |   //     dom.setAttribute(elem, 'spec-url', testURL);
 | ||||||
|     }); |   //   });
 | ||||||
| 
 |   //
 | ||||||
|     it('should call Redoc.init with url from param spec-url', () => { |   //   it('should call Redoc.init with url from param spec-url', () => {
 | ||||||
|       Redoc.autoInit(); |   //     Redoc.autoInit();
 | ||||||
|       expect(Redoc.init).toHaveBeenCalled(); |   //     expect(Redoc.init).toHaveBeenCalled();
 | ||||||
|       expect((<jasmine.Spy>Redoc.init).calls.argsFor(0)).toEqual([testURL]); |   //     expect((<jasmine.Spy>Redoc.init).calls.argsFor(0)).toEqual([testURL]);
 | ||||||
|     }); |   //   });
 | ||||||
| 
 |   //
 | ||||||
|     it('should not call Redoc.init when spec-url param is not provided', () => { |   //   it('should not call Redoc.init when spec-url param is not provided', () => {
 | ||||||
|       dom.removeAttribute(elem, 'spec-url'); |   //     dom.removeAttribute(elem, 'spec-url');
 | ||||||
|       Redoc.autoInit(); |   //     Redoc.autoInit();
 | ||||||
|       expect(Redoc.init).not.toHaveBeenCalled(); |   //     expect(Redoc.init).not.toHaveBeenCalled();
 | ||||||
|     }); |   //   });
 | ||||||
| 
 |   //
 | ||||||
|     afterEach(() => { |   //   afterEach(() => {
 | ||||||
|       (<jasmine.Spy>Redoc.init).and.callThrough(); |   //     (<jasmine.Spy>Redoc.init).and.callThrough();
 | ||||||
|       dom.defaultDoc().body.removeChild(elem); |   //     dom.defaultDoc().body.removeChild(elem);
 | ||||||
|     }); |   //   });
 | ||||||
|   }); |   // });
 | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| /** Test component that contains a Redoc. */ | /** Test component that contains a Redoc. */ | ||||||
|  |  | ||||||
|  | @ -1,109 +1,46 @@ | ||||||
| 'use strict'; | 'use strict'; | ||||||
| 
 | 
 | ||||||
| import { provide, enableProdMode, ElementRef, | import { ElementRef, ComponentRef, AfterViewInit, Component, ChangeDetectionStrategy} from '@angular/core'; | ||||||
|   ComponentRef, AfterViewInit } from '@angular/core'; |  | ||||||
| import { bootstrap } from '@angular/platform-browser-dynamic'; |  | ||||||
| import { BrowserDomAdapter } from '@angular/platform-browser/src/browser/browser_adapter'; |  | ||||||
| import { RedocComponent, BaseComponent } from '../base'; |  | ||||||
| 
 | 
 | ||||||
| import detectScollParent from 'scrollparent'; | import { BrowserDomAdapter as DOM } from '../../utils/browser-adapter'; | ||||||
|  | import { BaseComponent } from '../base'; | ||||||
| 
 | 
 | ||||||
| import { ApiInfo } from '../ApiInfo/api-info'; | import * as detectScollParent from 'scrollparent'; | ||||||
| import { ApiLogo } from '../ApiLogo/api-logo'; |  | ||||||
| import { MethodsList } from '../MethodsList/methods-list'; |  | ||||||
| import { SideMenu } from '../SideMenu/side-menu'; |  | ||||||
| import { Warnings } from '../Warnings/warnings'; |  | ||||||
| 
 | 
 | ||||||
| import { StickySidebar } from '../../shared/components/index'; | import { SpecManager } from '../../utils/SpecManager'; | ||||||
| import {SpecManager} from '../../utils/SpecManager'; | import { OptionsService, RedocEventsService } from '../../services/index'; | ||||||
| import { OptionsService, RedocEventsService, MenuService, |  | ||||||
|   ScrollService, Hash, WarningsService } from '../../services/index'; |  | ||||||
| 
 | 
 | ||||||
| var dom = new BrowserDomAdapter(); | @Component({ | ||||||
| var _modeLocked = false; |  | ||||||
| 
 |  | ||||||
| @RedocComponent({ |  | ||||||
|   selector: 'redoc', |   selector: 'redoc', | ||||||
|   providers: [ |  | ||||||
|     SpecManager, |  | ||||||
|     BrowserDomAdapter, |  | ||||||
|     RedocEventsService, |  | ||||||
|     ScrollService, |  | ||||||
|     Hash, |  | ||||||
|     MenuService, |  | ||||||
|     WarningsService |  | ||||||
|   ], |  | ||||||
|   templateUrl: './redoc.html', |   templateUrl: './redoc.html', | ||||||
|   styleUrls: ['./redoc.css'], |   styleUrls: ['./redoc.css'], | ||||||
|   directives: [ ApiInfo, ApiLogo, MethodsList, SideMenu, StickySidebar, Warnings ], |   changeDetection: ChangeDetectionStrategy.OnPush | ||||||
|   detect: true, |  | ||||||
|   onPushOnly: false |  | ||||||
| }) | }) | ||||||
| export class Redoc extends BaseComponent implements AfterViewInit { | export class Redoc extends BaseComponent implements AfterViewInit { | ||||||
|   static appRef: ComponentRef<any>; |   static appRef: ComponentRef<any>; | ||||||
|  |   static _preOptions: any; | ||||||
| 
 | 
 | ||||||
|   options: any; |   public options: any; | ||||||
| 
 | 
 | ||||||
|   private element: any; |   private element: any; | ||||||
| 
 | 
 | ||||||
|   static showLoadingAnimation() { |   static showLoadingAnimation() { | ||||||
|     let elem = dom.query('redoc'); |     let elem = DOM.query('redoc'); | ||||||
|     dom.addClass(elem, 'loading'); |     DOM.addClass(elem, 'loading'); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   static hideLoadingAnimation() { |   static hideLoadingAnimation() { | ||||||
|     let redocEl = dom.query('redoc'); |     let redocEl = DOM.query('redoc'); | ||||||
|     if (!redocEl) return; |     if (!redocEl) return; | ||||||
|     dom.addClass(redocEl, 'loading-remove'); |     DOM.addClass(redocEl, 'loading-remove'); | ||||||
|     setTimeout(() => { |     setTimeout(() => { | ||||||
|       dom.removeClass(redocEl, 'loading-remove'); |       DOM.removeClass(redocEl, 'loading-remove'); | ||||||
|       dom.removeClass(redocEl, 'loading'); |       DOM.removeClass(redocEl, 'loading'); | ||||||
|     }, 400); |     }, 400); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   static init(specUrl?, options?) { |  | ||||||
|     var optionsService = new OptionsService(dom); |  | ||||||
|     optionsService.options = options; |  | ||||||
|     optionsService.options.specUrl = optionsService.options.specUrl || specUrl; |  | ||||||
|     var providers = [ |  | ||||||
|       provide(OptionsService, {useValue: optionsService}) |  | ||||||
|     ]; |  | ||||||
| 
 |  | ||||||
|     if (Redoc.appRef) { |  | ||||||
|       Redoc.destroy(); |  | ||||||
|     } |  | ||||||
|     Redoc.showLoadingAnimation(); |  | ||||||
|     return SpecManager.instance().load(specUrl) |  | ||||||
|     .then(() => { |  | ||||||
|       if (!_modeLocked && !optionsService.options.debugMode) { |  | ||||||
|         enableProdMode(); |  | ||||||
|         _modeLocked = true; |  | ||||||
|       } |  | ||||||
|       return bootstrap(Redoc, providers); |  | ||||||
|     }) |  | ||||||
|     .then(appRef => { |  | ||||||
|       Redoc.hideLoadingAnimation(); |  | ||||||
|       Redoc.appRef = appRef; |  | ||||||
|       console.log('ReDoc bootstrapped!'); |  | ||||||
|     }).catch(err => { |  | ||||||
|       Redoc.hideLoadingAnimation(); |  | ||||||
|       Redoc.displayError(err); |  | ||||||
|       throw err; |  | ||||||
|     }); |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   static autoInit() { |  | ||||||
|     const specUrlAttributeName = 'spec-url'; |  | ||||||
|     let redocEl = dom.query('redoc'); |  | ||||||
|     if (!redocEl) return; |  | ||||||
|     if (dom.hasAttribute(redocEl, specUrlAttributeName)) { |  | ||||||
|       let url = dom.getAttribute(redocEl, specUrlAttributeName); |  | ||||||
|       Redoc.init(url); |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   static displayError(err) { |   static displayError(err) { | ||||||
|     let redocEl = dom.query('redoc'); |     let redocEl = DOM.query('redoc'); | ||||||
|     if (!redocEl) return; |     if (!redocEl) return; | ||||||
|     let heading = 'Oops... ReDoc failed to render this spec'; |     let heading = 'Oops... ReDoc failed to render this spec'; | ||||||
|     let details = err.message; |     let details = err.message; | ||||||
|  | @ -113,35 +50,17 @@ export class Redoc extends BaseComponent implements AfterViewInit { | ||||||
|     redocEl.innerHTML = erroHtml; |     redocEl.innerHTML = erroHtml; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   static destroy() { |  | ||||||
|     let el = dom.query('redoc'); |  | ||||||
|     let elClone; |  | ||||||
|     let parent; |  | ||||||
|     let nextSibling; |  | ||||||
|     if (el) { |  | ||||||
|       parent = el.parentElement; |  | ||||||
|       nextSibling = el.nextElementSibling; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     elClone = el.cloneNode(false); |  | ||||||
| 
 |  | ||||||
|     if (Redoc.appRef) { |  | ||||||
|       Redoc.appRef.destroy(); |  | ||||||
|       Redoc.appRef = null; |  | ||||||
| 
 |  | ||||||
|       // Redoc destroy removes host element, so need to restore it
 |  | ||||||
|       elClone.innerHTML = 'Loading...'; |  | ||||||
|       if (parent) parent.insertBefore(elClone, nextSibling); |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   constructor(specMgr: SpecManager, optionsMgr:OptionsService, elementRef:ElementRef, |   constructor(specMgr: SpecManager, optionsMgr:OptionsService, elementRef:ElementRef, | ||||||
|     public events:RedocEventsService) { |     public events:RedocEventsService) { | ||||||
|     super(specMgr); |     super(specMgr); | ||||||
|  |     // merge options passed before init
 | ||||||
|  |     optionsMgr.options = Redoc._preOptions; | ||||||
|     this.element = elementRef.nativeElement; |     this.element = elementRef.nativeElement; | ||||||
|     //parse options (top level component doesn't support inputs)
 |     //parse options (top level component doesn't support inputs)
 | ||||||
|     optionsMgr.parseOptions( this.element ); |     optionsMgr.parseOptions( this.element ); | ||||||
|     optionsMgr.options.$scrollParent = detectScollParent( this.element ); |     let scrollParent = detectScollParent( this.element ); | ||||||
|  |     if (scrollParent === DOM.defaultDoc().body) scrollParent = window; | ||||||
|  |     optionsMgr.options.$scrollParent = scrollParent; | ||||||
|     this.options = optionsMgr.options; |     this.options = optionsMgr.options; | ||||||
|     this.events = events; |     this.events = events; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  | @ -1,34 +1,28 @@ | ||||||
| 'use strict'; | 'use strict'; | ||||||
| 
 | 
 | ||||||
| import { ViewChildren, QueryList, EventEmitter, Input} from '@angular/core'; | import { Component, ViewChildren, QueryList, EventEmitter, Input, | ||||||
|  |  ChangeDetectionStrategy, OnInit } from '@angular/core'; | ||||||
| 
 | 
 | ||||||
| import { RedocComponent, BaseComponent, SpecManager } from '../base'; | import { BaseComponent, SpecManager } from '../base'; | ||||||
| import JsonPointer from '../../utils/JsonPointer'; | import JsonPointer from '../../utils/JsonPointer'; | ||||||
| import { Tabs, Tab } from '../../shared/components/index'; | import { Tabs } from '../../shared/components/index'; | ||||||
| import { SchemaSample } from '../SchemaSample/schema-sample'; |  | ||||||
| import { PrismPipe } from '../../utils/pipes'; |  | ||||||
| import { RedocEventsService } from '../../services/index'; | import { RedocEventsService } from '../../services/index'; | ||||||
| 
 | 
 | ||||||
| import { CopyButton } from '../../shared/components/CopyButton/copy-button.directive'; | @Component({ | ||||||
| 
 |  | ||||||
| @RedocComponent({ |  | ||||||
|   selector: 'request-samples', |   selector: 'request-samples', | ||||||
|   templateUrl: './request-samples.html', |   templateUrl: './request-samples.html', | ||||||
|   styleUrls: ['./request-samples.css'], |   styleUrls: ['./request-samples.css'], | ||||||
|   directives: [SchemaSample, Tabs, Tab, CopyButton], |   changeDetection: ChangeDetectionStrategy.OnPush | ||||||
|   inputs: ['schemaPointer'], |  | ||||||
|   pipes: [PrismPipe], |  | ||||||
|   detect: true, |  | ||||||
|   onPushOnly: false |  | ||||||
| }) | }) | ||||||
| export class RequestSamples extends BaseComponent { | export class RequestSamples extends BaseComponent implements OnInit { | ||||||
|   childTabs: Tabs; |   @Input() pointer:string; | ||||||
|   selectedLang: EventEmitter<any>; |  | ||||||
| 
 |  | ||||||
|   samples: Array<any>; |  | ||||||
| 
 |  | ||||||
|   @Input() schemaPointer:string; |   @Input() schemaPointer:string; | ||||||
|   @ViewChildren(Tabs) childQuery:QueryList<Tabs>; |   @ViewChildren(Tabs) childQuery:QueryList<Tabs>; | ||||||
|  | 
 | ||||||
|  |   childTabs: Tabs; | ||||||
|  |   selectedLang: EventEmitter<any>; | ||||||
|  |   samples: Array<any>; | ||||||
|  | 
 | ||||||
|   constructor(specMgr:SpecManager, public events:RedocEventsService) { |   constructor(specMgr:SpecManager, public events:RedocEventsService) { | ||||||
|     super(specMgr); |     super(specMgr); | ||||||
| 
 | 
 | ||||||
|  | @ -44,4 +38,8 @@ export class RequestSamples extends BaseComponent { | ||||||
|     this.schemaPointer = JsonPointer.join(this.schemaPointer, 'schema');; |     this.schemaPointer = JsonPointer.join(this.schemaPointer, 'schema');; | ||||||
|     this.samples = this.componentSchema['x-code-samples'] || []; |     this.samples = this.componentSchema['x-code-samples'] || []; | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
|  |   ngOnInit() { | ||||||
|  |     this.preinit(); | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,10 +1,8 @@ | ||||||
| 'use strict'; | 'use strict'; | ||||||
| 
 | 
 | ||||||
| import {RedocComponent, BaseComponent, SpecManager} from '../base'; | import { Component, Input, OnInit, ChangeDetectionStrategy } from '@angular/core'; | ||||||
|  | import { BaseComponent, SpecManager } from '../base'; | ||||||
| import JsonPointer from '../../utils/JsonPointer'; | import JsonPointer from '../../utils/JsonPointer'; | ||||||
| import { JsonSchema } from '../JsonSchema/json-schema'; |  | ||||||
| import { JsonSchemaLazy } from '../JsonSchema/json-schema-lazy'; |  | ||||||
| import { Zippy } from '../../shared/components/index'; |  | ||||||
| import { statusCodeType } from '../../utils/helpers'; | import { statusCodeType } from '../../utils/helpers'; | ||||||
| import { OptionsService } from '../../services/index'; | import { OptionsService } from '../../services/index'; | ||||||
| import { SchemaHelper } from '../../services/schema-helper.service'; | import { SchemaHelper } from '../../services/schema-helper.service'; | ||||||
|  | @ -13,16 +11,18 @@ function isNumeric(n) { | ||||||
|   return (!isNaN(parseFloat(n)) && isFinite(n)); |   return (!isNaN(parseFloat(n)) && isFinite(n)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @RedocComponent({ | @Component({ | ||||||
|   selector: 'responses-list', |   selector: 'responses-list', | ||||||
|   templateUrl: './responses-list.html', |   templateUrl: './responses-list.html', | ||||||
|   styleUrls: ['./responses-list.css'], |   styleUrls: ['./responses-list.css'], | ||||||
|   directives: [JsonSchema, Zippy, JsonSchemaLazy], |   changeDetection: ChangeDetectionStrategy.OnPush | ||||||
|   detect: true |  | ||||||
| }) | }) | ||||||
| export class ResponsesList extends BaseComponent { | export class ResponsesList extends BaseComponent implements OnInit { | ||||||
|  |   @Input() pointer:string; | ||||||
|  | 
 | ||||||
|   responses: Array<any>; |   responses: Array<any>; | ||||||
|   options: any; |   options: any; | ||||||
|  | 
 | ||||||
|   constructor(specMgr:SpecManager, optionsMgr:OptionsService) { |   constructor(specMgr:SpecManager, optionsMgr:OptionsService) { | ||||||
|     super(specMgr); |     super(specMgr); | ||||||
|     this.options = optionsMgr.options; |     this.options = optionsMgr.options; | ||||||
|  | @ -66,4 +66,8 @@ export class ResponsesList extends BaseComponent { | ||||||
|   trackByCode(idx, el) { |   trackByCode(idx, el) { | ||||||
|     return el.code; |     return el.code; | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
|  |   ngOnInit() { | ||||||
|  |     this.preinit(); | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,10 +1,8 @@ | ||||||
| 'use strict'; | 'use strict'; | ||||||
| 
 | 
 | ||||||
| import { forwardRef } from '@angular/core'; | import { Component, Input, OnInit, ChangeDetectionStrategy } from '@angular/core'; | ||||||
| import { RedocComponent, BaseComponent, SpecManager } from '../base'; | import { BaseComponent, SpecManager } from '../base'; | ||||||
| import JsonPointer from '../../utils/JsonPointer'; | import JsonPointer from '../../utils/JsonPointer'; | ||||||
| import { Tabs, Tab } from '../../shared/components/index'; |  | ||||||
| import { SchemaSample } from '../index'; |  | ||||||
| import { statusCodeType } from '../../utils/helpers'; | import { statusCodeType } from '../../utils/helpers'; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @ -17,14 +15,17 @@ function hasExample(response) { | ||||||
|     response.schema); |     response.schema); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @RedocComponent({ | @Component({ | ||||||
|   selector: 'responses-samples', |   selector: 'responses-samples', | ||||||
|   templateUrl: './responses-samples.html', |   templateUrl: './responses-samples.html', | ||||||
|   styleUrls: ['./responses-samples.css'], |   styleUrls: ['./responses-samples.css'], | ||||||
|   directives: [forwardRef( ()=> SchemaSample), Tabs, Tab] |   changeDetection: ChangeDetectionStrategy.OnPush | ||||||
| }) | }) | ||||||
| export class ResponsesSamples extends BaseComponent { | export class ResponsesSamples extends BaseComponent implements OnInit { | ||||||
|  |   @Input() pointer:string; | ||||||
|  | 
 | ||||||
|   data: any; |   data: any; | ||||||
|  | 
 | ||||||
|   constructor(specMgr:SpecManager) { |   constructor(specMgr:SpecManager) { | ||||||
|     super(specMgr); |     super(specMgr); | ||||||
|   } |   } | ||||||
|  | @ -55,4 +56,8 @@ export class ResponsesSamples extends BaseComponent { | ||||||
|     .filter(response => hasExample(response)); |     .filter(response => hasExample(response)); | ||||||
|     this.data.responses = responses; |     this.data.responses = responses; | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
|  |   ngOnInit() { | ||||||
|  |     this.preinit(); | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -8,11 +8,6 @@ pre { | ||||||
|   position: relative; |   position: relative; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // hide top-level collapser |  | ||||||
| .redoc-json > .collapser { |  | ||||||
|   display: none; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .action-buttons { | .action-buttons { | ||||||
|   display: block; |   display: block; | ||||||
|   opacity: 0; |   opacity: 0; | ||||||
|  | @ -175,4 +170,9 @@ pre { | ||||||
|   	user-select: none; |   	user-select: none; | ||||||
|   	-webkit-user-select: none; |   	-webkit-user-select: none; | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
|  |   // hide top-level collapser | ||||||
|  |   .redoc-json > .collapser { | ||||||
|  |     display: none; | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,27 +1,27 @@ | ||||||
| 'use strict'; | 'use strict'; | ||||||
| 
 | 
 | ||||||
| import { ElementRef, Input } from '@angular/core'; | import { Component, ElementRef, Input, ChangeDetectionStrategy, OnInit } from '@angular/core'; | ||||||
| 
 | 
 | ||||||
| import * as OpenAPISampler from 'openapi-sampler'; | import * as OpenAPISampler from 'openapi-sampler'; | ||||||
| 
 | 
 | ||||||
| import { RedocComponent, BaseComponent, SpecManager } from '../base'; | import { BaseComponent, SpecManager } from '../base'; | ||||||
| import { JsonFormatter } from '../../utils/JsonFormatterPipe'; | import { JsonFormatter } from '../../utils/JsonFormatterPipe'; | ||||||
| import { SchemaNormalizer } from '../../services/schema-normalizer.service'; | import { SchemaNormalizer } from '../../services/schema-normalizer.service'; | ||||||
| 
 | 
 | ||||||
| import { CopyButton } from '../../shared/components/CopyButton/copy-button.directive'; | @Component({ | ||||||
| 
 |  | ||||||
| @RedocComponent({ |  | ||||||
|   selector: 'schema-sample', |   selector: 'schema-sample', | ||||||
|   templateUrl: './schema-sample.html', |   templateUrl: './schema-sample.html', | ||||||
|   pipes: [JsonFormatter], |   pipes: [JsonFormatter], | ||||||
|   directives: [CopyButton], |   styleUrls: ['./schema-sample.css'], | ||||||
|   styleUrls: ['./schema-sample.css'] |   changeDetection: ChangeDetectionStrategy.OnPush | ||||||
| }) | }) | ||||||
| export class SchemaSample extends BaseComponent { | export class SchemaSample extends BaseComponent implements OnInit { | ||||||
|  |   @Input() pointer:string; | ||||||
|  |   @Input() skipReadOnly:boolean; | ||||||
|  | 
 | ||||||
|   element: any; |   element: any; | ||||||
|   sample: any; |   sample: any; | ||||||
|   enableButtons: boolean = false; |   enableButtons: boolean = false; | ||||||
|   @Input() skipReadOnly:boolean; |  | ||||||
| 
 | 
 | ||||||
|   private _normalizer:SchemaNormalizer; |   private _normalizer:SchemaNormalizer; | ||||||
| 
 | 
 | ||||||
|  | @ -136,4 +136,8 @@ export class SchemaSample extends BaseComponent { | ||||||
|       expanded.parentNode.classList.add('collapsed'); |       expanded.parentNode.classList.add('collapsed'); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
|  |   ngOnInit() { | ||||||
|  |     this.preinit(); | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -11,7 +11,7 @@ | ||||||
| 
 | 
 | ||||||
|     <label class="menu-cat-header" (click)="activateAndScroll(idx, -1)" [hidden]="cat.headless" |     <label class="menu-cat-header" (click)="activateAndScroll(idx, -1)" [hidden]="cat.headless" | ||||||
|     [ngClass]="{active: cat.active}"> {{cat.name}}</label> |     [ngClass]="{active: cat.active}"> {{cat.name}}</label> | ||||||
|     <ul class="menu-subitems" @itemAnimation="cat.active ? 'expanded' : 'collapsed'"> |     <ul class="menu-subitems" [@itemAnimation]="cat.active ? 'expanded' : 'collapsed'"> | ||||||
|       <li *ngFor="let method of cat.methods; trackBy:summary; let methIdx = index" |       <li *ngFor="let method of cat.methods; trackBy:summary; let methIdx = index" | ||||||
|         [ngClass]="{active: method.active}" |         [ngClass]="{active: method.active}" | ||||||
|         (click)="activateAndScroll(idx, methIdx)"> |         (click)="activateAndScroll(idx, methIdx)"> | ||||||
|  |  | ||||||
|  | @ -9,11 +9,11 @@ import { | ||||||
|   async |   async | ||||||
| } from '@angular/core/testing'; | } from '@angular/core/testing'; | ||||||
| 
 | 
 | ||||||
| import { TestComponentBuilder } from '@angular/compiler/testing'; | import { TestComponentBuilder } from '@angular/core/testing'; | ||||||
| 
 | 
 | ||||||
| import { MethodsList, SideMenu } from '../index'; | import { MethodsList, SideMenu } from '../index'; | ||||||
| 
 | 
 | ||||||
| import { SpecManager } from '../../utils/SpecManager';; | import { SpecManager } from '../../utils/SpecManager'; | ||||||
| 
 | 
 | ||||||
| let testOptions; | let testOptions; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,21 +1,18 @@ | ||||||
| 'use strict'; | 'use strict'; | ||||||
| 
 | 
 | ||||||
| import { ElementRef, ChangeDetectorRef } from '@angular/core'; | import { Component, ElementRef, ChangeDetectorRef, OnInit } from '@angular/core'; | ||||||
| 
 | 
 | ||||||
| import { BrowserDomAdapter } from '@angular/platform-browser/src/browser/browser_adapter'; |  | ||||||
| import { global } from '@angular/core/src/facade/lang'; | import { global } from '@angular/core/src/facade/lang'; | ||||||
| import { trigger, state, animate, transition, style } from '@angular/core'; | import { trigger, state, animate, transition, style } from '@angular/core'; | ||||||
| import { RedocComponent, BaseComponent, SpecManager } from '../base'; | import { BaseComponent, SpecManager } from '../base'; | ||||||
| import { ScrollService, Hash, MenuService, OptionsService } from '../../services/index'; | import { ScrollService, Hash, MenuService, OptionsService } from '../../services/index'; | ||||||
| 
 | import { BrowserDomAdapter as DOM } from '../../utils/browser-adapter'; | ||||||
| import { MenuCategory } from '../../services/schema-helper.service'; | import { MenuCategory } from '../../services/schema-helper.service'; | ||||||
| 
 | 
 | ||||||
| @RedocComponent({ | @Component({ | ||||||
|   selector: 'side-menu', |   selector: 'side-menu', | ||||||
|   templateUrl: './side-menu.html', |   templateUrl: './side-menu.html', | ||||||
|   styleUrls: ['./side-menu.css'], |   styleUrls: ['./side-menu.css'], | ||||||
|   detect: true, |  | ||||||
|   onPushOnly: false, |  | ||||||
|   animations: [ |   animations: [ | ||||||
|     trigger('itemAnimation', [ |     trigger('itemAnimation', [ | ||||||
|       state('collapsed, void', |       state('collapsed, void', | ||||||
|  | @ -28,7 +25,7 @@ import { MenuCategory } from '../../services/schema-helper.service'; | ||||||
|     ]) |     ]) | ||||||
|   ], |   ], | ||||||
| }) | }) | ||||||
| export class SideMenu extends BaseComponent { | export class SideMenu extends BaseComponent implements OnInit { | ||||||
|   activeCatCaption: string; |   activeCatCaption: string; | ||||||
|   activeItemCaption: string; |   activeItemCaption: string; | ||||||
|   categories: Array<MenuCategory>; |   categories: Array<MenuCategory>; | ||||||
|  | @ -39,7 +36,7 @@ export class SideMenu extends BaseComponent { | ||||||
|   private $resourcesNav: any; |   private $resourcesNav: any; | ||||||
|   private $scrollParent: any; |   private $scrollParent: any; | ||||||
| 
 | 
 | ||||||
|   constructor(specMgr:SpecManager, elementRef:ElementRef, private dom:BrowserDomAdapter, |   constructor(specMgr:SpecManager, elementRef:ElementRef, | ||||||
|   private scrollService:ScrollService, private menuService:MenuService, private hash:Hash, |   private scrollService:ScrollService, private menuService:MenuService, private hash:Hash, | ||||||
|   optionsService:OptionsService, private detectorRef:ChangeDetectorRef) { |   optionsService:OptionsService, private detectorRef:ChangeDetectorRef) { | ||||||
|     super(specMgr); |     super(specMgr); | ||||||
|  | @ -58,6 +55,7 @@ export class SideMenu extends BaseComponent { | ||||||
|     this.activeItemCaption = item && item.summary || ''; |     this.activeItemCaption = item && item.summary || ''; | ||||||
| 
 | 
 | ||||||
|     //safari doesn't update bindings if not run changeDetector manually :(
 |     //safari doesn't update bindings if not run changeDetector manually :(
 | ||||||
|  | 
 | ||||||
|     this.detectorRef.detectChanges(); |     this.detectorRef.detectChanges(); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  | @ -72,8 +70,8 @@ export class SideMenu extends BaseComponent { | ||||||
|   init() { |   init() { | ||||||
|     this.categories = this.menuService.categories; |     this.categories = this.menuService.categories; | ||||||
| 
 | 
 | ||||||
|     this.$mobileNav = this.dom.querySelector(this.$element, '.mobile-nav'); |     this.$mobileNav = DOM.querySelector(this.$element, '.mobile-nav'); | ||||||
|     this.$resourcesNav = this.dom.querySelector(this.$element, '#resources-nav'); |     this.$resourcesNav = DOM.querySelector(this.$element, '#resources-nav'); | ||||||
| 
 | 
 | ||||||
|     //decorate scrollYOffset to account mobile nav
 |     //decorate scrollYOffset to account mobile nav
 | ||||||
|     this.scrollService.scrollYOffset = () => { |     this.scrollService.scrollYOffset = () => { | ||||||
|  | @ -87,18 +85,17 @@ export class SideMenu extends BaseComponent { | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   toggleMobileNav() { |   toggleMobileNav() { | ||||||
|     let dom = this.dom; |     let $overflowParent = (this.options.$scrollParent === global) ? DOM.defaultDoc().body | ||||||
|     let $overflowParent = (this.options.$scrollParent === global) ? dom.defaultDoc().body |  | ||||||
|       : this.$scrollParent; |       : this.$scrollParent; | ||||||
|     if (dom.hasStyle(this.$resourcesNav, 'height')) { |     if (DOM.hasStyle(this.$resourcesNav, 'height')) { | ||||||
|       dom.removeStyle(this.$resourcesNav, 'height'); |       DOM.removeStyle(this.$resourcesNav, 'height'); | ||||||
|       dom.removeStyle($overflowParent, 'overflow-y'); |       DOM.removeStyle($overflowParent, 'overflow-y'); | ||||||
|     } else { |     } else { | ||||||
|       let viewportHeight = this.options.$scrollParent.innerHeight |       let viewportHeight = this.options.$scrollParent.innerHeight | ||||||
|        || this.options.$scrollParent.clientHeight; |        || this.options.$scrollParent.clientHeight; | ||||||
|       let height = viewportHeight - this.$mobileNav.getBoundingClientRect().bottom; |       let height = viewportHeight - this.$mobileNav.getBoundingClientRect().bottom; | ||||||
|       dom.setStyle($overflowParent, 'overflow-y', 'hidden'); |       DOM.setStyle($overflowParent, 'overflow-y', 'hidden'); | ||||||
|       dom.setStyle(this.$resourcesNav, 'height', height + 'px'); |       DOM.setStyle(this.$resourcesNav, 'height', height + 'px'); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  | @ -106,4 +103,8 @@ export class SideMenu extends BaseComponent { | ||||||
|     this.scrollService.unbind(); |     this.scrollService.unbind(); | ||||||
|     this.hash.unbind(); |     this.hash.unbind(); | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
|  |   ngOnInit() { | ||||||
|  |     this.preinit(); | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,16 +1,15 @@ | ||||||
| 'use strict'; | 'use strict'; | ||||||
| 
 | 
 | ||||||
| import { SpecManager, RedocComponent, BaseComponent } from '../base'; | import { Component, OnInit } from '@angular/core'; | ||||||
|  | import { SpecManager, BaseComponent } from '../base'; | ||||||
| import { WarningsService, OptionsService } from '../../services/index'; | import { WarningsService, OptionsService } from '../../services/index'; | ||||||
| 
 | 
 | ||||||
| @RedocComponent({ | @Component({ | ||||||
|   selector: 'warnings', |   selector: 'warnings', | ||||||
|   styleUrls: ['./warnings.css'], |   styleUrls: ['./warnings.css'], | ||||||
|   templateUrl: './warnings.html', |   templateUrl: './warnings.html' | ||||||
|   detect: true, |  | ||||||
|   onPushOnly: false |  | ||||||
| }) | }) | ||||||
| export class Warnings extends BaseComponent { | export class Warnings extends BaseComponent implements OnInit { | ||||||
|   warnings: Array<string> = []; |   warnings: Array<string> = []; | ||||||
|   shown: boolean = false; |   shown: boolean = false; | ||||||
|   suppressWarnings: boolean; |   suppressWarnings: boolean; | ||||||
|  | @ -30,4 +29,8 @@ export class Warnings extends BaseComponent { | ||||||
|   close() { |   close() { | ||||||
|     this.shown = false; |     this.shown = false; | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
|  |   ngOnInit() { | ||||||
|  |     this.preinit(); | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,21 +1,10 @@ | ||||||
| 'use strict'; | 'use strict'; | ||||||
| import { Component, ChangeDetectionStrategy, OnInit, OnDestroy } from '@angular/core'; | import { OnInit, OnDestroy } from '@angular/core'; | ||||||
| import { CORE_DIRECTIVES, JsonPipe, AsyncPipe } from '@angular/common'; |  | ||||||
| import { SpecManager } from '../utils/SpecManager'; | import { SpecManager } from '../utils/SpecManager'; | ||||||
| import { MarkedPipe, JsonPointerEscapePipe, SafePipe } from '../utils/pipes'; | 
 | ||||||
| 
 | 
 | ||||||
| export { SpecManager }; | export { SpecManager }; | ||||||
| 
 | 
 | ||||||
| // common inputs for all components
 |  | ||||||
| let commonInputs = ['pointer']; // json pointer to the schema chunk
 |  | ||||||
| 
 |  | ||||||
| // internal helper function
 |  | ||||||
| function safeConcat(a, b) { |  | ||||||
|   let res = a && a.slice() || []; |  | ||||||
|   b = (b == undefined) ? [] : b; |  | ||||||
|   return res.concat(b); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| function snapshot(obj) { | function snapshot(obj) { | ||||||
|   if(obj == undefined || typeof(obj) !== 'object') { |   if(obj == undefined || typeof(obj) !== 'object') { | ||||||
|     return obj; |     return obj; | ||||||
|  | @ -32,54 +21,13 @@ function snapshot(obj) { | ||||||
|   return temp; |   return temp; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /** |  | ||||||
|  * Class decorator |  | ||||||
|  * Simplifies setup of component metainfo |  | ||||||
|  * All options are options from either Component or View angular2 decorator |  | ||||||
|  * For detailed info look angular2 doc |  | ||||||
|  * @param {Object} options - component options |  | ||||||
|  * @param {string[]} options.inputs - component inputs |  | ||||||
|  * @param {*[]} options.directives - directives used by component |  | ||||||
|  *   (except CORE_DIRECTIVES) |  | ||||||
|  * @param {*[]} options.pipes - pipes used by component |  | ||||||
|  * @param {*[]} options.providers - component providers |  | ||||||
|  * @param {string} options.templateUrl - path to component template |  | ||||||
|  * @param {string} options.template - component template html |  | ||||||
|  * @param {string} options.styles - component css styles |  | ||||||
|  */ |  | ||||||
| export function RedocComponent(options) { |  | ||||||
|   let inputs = safeConcat(options.inputs, commonInputs); |  | ||||||
|   let directives = safeConcat(options.directives, CORE_DIRECTIVES); |  | ||||||
|   let pipes = safeConcat(options.pipes, [JsonPointerEscapePipe, MarkedPipe, JsonPipe, AsyncPipe, SafePipe]); |  | ||||||
|   if (options.onPushOnly === undefined) options.onPushOnly = true; |  | ||||||
| 
 |  | ||||||
|   return function decorator(target) { |  | ||||||
| 
 |  | ||||||
|     let componentDecorator = Component({ |  | ||||||
|       selector: options.selector, |  | ||||||
|       inputs: inputs, |  | ||||||
|       outputs: options.outputs, |  | ||||||
|       providers: options.providers, |  | ||||||
|       changeDetection: options.onPushOnly ? ChangeDetectionStrategy.OnPush : ChangeDetectionStrategy.Default, |  | ||||||
|       animations: options.animations, |  | ||||||
|       templateUrl: options.templateUrl, |  | ||||||
|       template: options.template, |  | ||||||
|       styles: options.styles, |  | ||||||
|       directives: directives, |  | ||||||
|       pipes: pipes |  | ||||||
|     }); |  | ||||||
| 
 |  | ||||||
|     return componentDecorator(target) || target; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /** | /** | ||||||
|  * Generic Component |  * Generic Component | ||||||
|  * @class |  * @class | ||||||
|  */ |  */ | ||||||
| export class BaseComponent implements OnInit, OnDestroy { | export class BaseComponent implements OnInit, OnDestroy { | ||||||
|   componentSchema: any = null; |  | ||||||
|   pointer: string; |   pointer: string; | ||||||
|  |   componentSchema: any = null; | ||||||
|   dereferencedCache = {}; |   dereferencedCache = {}; | ||||||
| 
 | 
 | ||||||
|   constructor(public specMgr: SpecManager) { |   constructor(public specMgr: SpecManager) { | ||||||
|  | @ -89,6 +37,10 @@ export class BaseComponent implements OnInit, OnDestroy { | ||||||
|    * onInit method is run by angular2 after all component inputs are resolved |    * onInit method is run by angular2 after all component inputs are resolved | ||||||
|    */ |    */ | ||||||
|   ngOnInit() { |   ngOnInit() { | ||||||
|  |     this.preinit(); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   preinit() { | ||||||
|     this.componentSchema = this.specMgr.byPointer(this.pointer || ''); |     this.componentSchema = this.specMgr.byPointer(this.pointer || ''); | ||||||
|     this.init(); |     this.init(); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  | @ -1,16 +1,25 @@ | ||||||
| 'use strict'; | 'use strict'; | ||||||
| 
 | 
 | ||||||
| export * from './ApiInfo/api-info'; | import { ApiInfo } from './ApiInfo/api-info'; | ||||||
| export * from './ApiLogo/api-logo'; | import { ApiLogo } from './ApiLogo/api-logo'; | ||||||
| export * from './JsonSchema/json-schema'; | import { JsonSchema } from './JsonSchema/json-schema'; | ||||||
| export * from './JsonSchema/json-schema-lazy'; | import { JsonSchemaLazy } from './JsonSchema/json-schema-lazy'; | ||||||
| export * from './ParamsList/params-list'; | import { ParamsList } from './ParamsList/params-list'; | ||||||
| export * from './RequestSamples/request-samples'; | import { RequestSamples } from './RequestSamples/request-samples'; | ||||||
| export * from './ResponsesList/responses-list'; | import { ResponsesList } from './ResponsesList/responses-list'; | ||||||
| export * from './ResponsesSamples/responses-samples'; | import { ResponsesSamples } from './ResponsesSamples/responses-samples'; | ||||||
| export * from './SchemaSample/schema-sample'; | import { SchemaSample } from './SchemaSample/schema-sample'; | ||||||
| export * from './SideMenu/side-menu'; | import { SideMenu } from './SideMenu/side-menu'; | ||||||
| export * from './MethodsList/methods-list'; | import { MethodsList } from './MethodsList/methods-list'; | ||||||
| export * from './Method/method'; | import { Method } from './Method/method'; | ||||||
|  | import { Warnings } from './Warnings/warnings'; | ||||||
| 
 | 
 | ||||||
| export * from './Redoc/redoc'; | import { Redoc } from './Redoc/redoc'; | ||||||
|  | 
 | ||||||
|  | export const REDOC_DIRECTIVES = [ | ||||||
|  |   ApiInfo, ApiLogo, JsonSchema, JsonSchemaLazy, ParamsList, RequestSamples, ResponsesList, | ||||||
|  |   ResponsesSamples, SchemaSample, SideMenu, MethodsList, Method, Warnings, Redoc | ||||||
|  | ]; | ||||||
|  | 
 | ||||||
|  | export { ApiInfo, ApiLogo, JsonSchema, JsonSchemaLazy, ParamsList, RequestSamples, ResponsesList, | ||||||
|  | ResponsesSamples, SchemaSample, SideMenu, MethodsList, Method, Warnings, Redoc } | ||||||
|  |  | ||||||
							
								
								
									
										15
									
								
								lib/index.js
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								lib/index.js
									
									
									
									
									
								
							|  | @ -1,15 +0,0 @@ | ||||||
| 'use strict'; |  | ||||||
| import './components/Redoc/redoc-initial-styles.css!css'; |  | ||||||
| import 'dropkickjs/build/css/dropkick.css!css'; |  | ||||||
| import 'prismjs/themes/prism-dark.css!css'; |  | ||||||
| import 'hint.css/hint.base.css!css'; |  | ||||||
| import { redocVersion } from './version.js'; |  | ||||||
| 
 |  | ||||||
| import { Redoc } from './components/index'; |  | ||||||
| 
 |  | ||||||
| Redoc.version = redocVersion; |  | ||||||
| 
 |  | ||||||
| export var init = Redoc.init; |  | ||||||
| 
 |  | ||||||
| window['Redoc'] = Redoc; |  | ||||||
| Redoc.autoInit(); |  | ||||||
							
								
								
									
										58
									
								
								lib/index.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								lib/index.ts
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,58 @@ | ||||||
|  | 'use strict'; | ||||||
|  | import './components/Redoc/redoc-initial-styles.css'; | ||||||
|  | 
 | ||||||
|  | import { enableProdMode } from '@angular/core'; | ||||||
|  | import { Redoc } from './components/index'; | ||||||
|  | import { SpecManager } from './utils/SpecManager'; | ||||||
|  | import { BrowserDomAdapter as DOM } from './utils/browser-adapter'; | ||||||
|  | import { disableDebugTools } from '@angular/platform-browser'; | ||||||
|  | import { bootstrapRedoc } from './bootstrap'; | ||||||
|  | 
 | ||||||
|  | if (IS_PRODUCTION) { | ||||||
|  |   disableDebugTools(); | ||||||
|  |   enableProdMode(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | export const version = LIB_VERSION; | ||||||
|  | 
 | ||||||
|  | var moduleRef; | ||||||
|  | export function init(specUrl:string, options:any = {}) { | ||||||
|  |   if (moduleRef) { | ||||||
|  |     destroy(); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Redoc._preOptions = options; | ||||||
|  |   options.specUrl = options.specUrl || specUrl; | ||||||
|  | 
 | ||||||
|  |   Redoc.showLoadingAnimation(); | ||||||
|  |   return SpecManager.instance().load(specUrl) | ||||||
|  |   .then(() => { | ||||||
|  |     return bootstrapRedoc(); | ||||||
|  |   }) | ||||||
|  |   .then(appRef => { | ||||||
|  |     Redoc.hideLoadingAnimation(); | ||||||
|  |     moduleRef = appRef; | ||||||
|  |     console.log('ReDoc initialized!'); | ||||||
|  |   }).catch(err => { | ||||||
|  |     Redoc.hideLoadingAnimation(); | ||||||
|  |     Redoc.displayError(err); | ||||||
|  |     throw err; | ||||||
|  |   }); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | export function destroy() { | ||||||
|  |   moduleRef.destroy(); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | function autoInit() { | ||||||
|  |   const specUrlAttributeName = 'spec-url'; | ||||||
|  |   let redocEl = DOM.query('redoc'); | ||||||
|  |   if (!redocEl) return; | ||||||
|  |   if (DOM.hasAttribute(redocEl, specUrlAttributeName)) { | ||||||
|  |     let url = DOM.getAttribute(redocEl, specUrlAttributeName); | ||||||
|  |     init(url); | ||||||
|  |   } | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | autoInit(); | ||||||
							
								
								
									
										4
									
								
								lib/polyfills.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								lib/polyfills.ts
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,4 @@ | ||||||
|  | import 'core-js/es6'; | ||||||
|  | import 'core-js/es7/reflect'; | ||||||
|  | import 'ts-helpers'; | ||||||
|  | import 'zone.js/dist/zone'; | ||||||
							
								
								
									
										27
									
								
								lib/redoc.module.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								lib/redoc.module.ts
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,27 @@ | ||||||
|  | import { NgModule } from '@angular/core'; | ||||||
|  | import { BrowserModule } from '@angular/platform-browser'; | ||||||
|  | 
 | ||||||
|  | import { Redoc, REDOC_DIRECTIVES } from './components/index'; | ||||||
|  | import { REDOC_COMMON_DIRECTIVES } from './shared/components/index'; | ||||||
|  | import { REDOC_PIPES } from './utils/pipes'; | ||||||
|  | 
 | ||||||
|  | import { OptionsService, RedocEventsService, MenuService, | ||||||
|  |   ScrollService, Hash, WarningsService } from './services/index'; | ||||||
|  | import { SpecManager } from './utils/SpecManager'; | ||||||
|  | 
 | ||||||
|  | @NgModule({ | ||||||
|  |   imports: [ BrowserModule ], | ||||||
|  |   declarations: [ REDOC_DIRECTIVES, REDOC_COMMON_DIRECTIVES, REDOC_PIPES], | ||||||
|  |   bootstrap: [ Redoc ], | ||||||
|  |   providers: [ | ||||||
|  |     SpecManager, | ||||||
|  |     RedocEventsService, | ||||||
|  |     ScrollService, | ||||||
|  |     Hash, | ||||||
|  |     MenuService, | ||||||
|  |     WarningsService, | ||||||
|  |     OptionsService | ||||||
|  |   ] | ||||||
|  | }) | ||||||
|  | export class RedocModule { | ||||||
|  | } | ||||||
|  | @ -1,7 +1,5 @@ | ||||||
| 'use strict'; | 'use strict'; | ||||||
| 
 | 
 | ||||||
| import { BrowserDomAdapter } from '@angular/platform-browser/src/browser/browser_adapter'; |  | ||||||
| 
 |  | ||||||
| import { RedocEventsService } from './events.service'; | import { RedocEventsService } from './events.service'; | ||||||
| import { Hash } from './hash.service'; | import { Hash } from './hash.service'; | ||||||
| 
 | 
 | ||||||
|  | @ -10,7 +8,7 @@ describe('Hash Service', () => { | ||||||
|   let hashService; |   let hashService; | ||||||
| 
 | 
 | ||||||
|   beforeEach(() => { |   beforeEach(() => { | ||||||
|     hashService = new Hash(new BrowserDomAdapter(), events); |     hashService = new Hash(events); | ||||||
|   }); |   }); | ||||||
| 
 | 
 | ||||||
|   afterEach(() => { |   afterEach(() => { | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| 'use strict'; | 'use strict'; | ||||||
| import { Injectable, EventEmitter, Output } from '@angular/core'; | import { Injectable, EventEmitter, Output } from '@angular/core'; | ||||||
| import { BrowserDomAdapter } from '@angular/platform-browser/src/browser/browser_adapter'; | import { BrowserDomAdapter as DOM } from '../utils/browser-adapter'; | ||||||
| import { global } from '@angular/core/src/facade/lang'; | import { global } from '@angular/core/src/facade/lang'; | ||||||
| 
 | 
 | ||||||
| import { RedocEventsService } from './events.service'; | import { RedocEventsService } from './events.service'; | ||||||
|  | @ -9,18 +9,18 @@ import { RedocEventsService } from './events.service'; | ||||||
| export class Hash { | export class Hash { | ||||||
|   @Output() changed = new EventEmitter(); |   @Output() changed = new EventEmitter(); | ||||||
|   private _cancel: any; |   private _cancel: any; | ||||||
|   constructor(private dom:BrowserDomAdapter, private events:RedocEventsService) { |   constructor(private events:RedocEventsService) { | ||||||
|     this.bind(); |     this.bind(); | ||||||
| 
 | 
 | ||||||
|     events.bootstrapped.subscribe(() => this.changed.next(this.hash)); |     events.bootstrapped.subscribe(() => this.changed.next(this.hash)); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   get hash() { |   get hash() { | ||||||
|     return this.dom.getLocation().hash; |     return DOM.getLocation().hash; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   bind() { |   bind() { | ||||||
|     this._cancel = this.dom.onAndCancel(global, 'hashchange', (evt) => { |     this._cancel = DOM.onAndCancel(global, 'hashchange', (evt) => { | ||||||
|       this.changed.next(this.hash); |       this.changed.next(this.hash); | ||||||
|       evt.preventDefault(); |       evt.preventDefault(); | ||||||
|     }); |     }); | ||||||
|  |  | ||||||
|  | @ -1,6 +1,5 @@ | ||||||
| 'use strict'; | 'use strict'; | ||||||
| 
 | 
 | ||||||
| import { BrowserDomAdapter } from '@angular/platform-browser/src/browser/browser_adapter'; |  | ||||||
| import { OptionsService } from './options.service'; | import { OptionsService } from './options.service'; | ||||||
| 
 | 
 | ||||||
| describe('Options Service', () => { | describe('Options Service', () => { | ||||||
|  | @ -19,7 +18,7 @@ describe('Options Service', () => { | ||||||
|   }); |   }); | ||||||
| 
 | 
 | ||||||
|   beforeEach(() => { |   beforeEach(() => { | ||||||
|     optionsService = new OptionsService(new BrowserDomAdapter()); |     optionsService = new OptionsService(); | ||||||
|   }); |   }); | ||||||
| 
 | 
 | ||||||
|   it('should parse numeric scrollYOffset', () => { |   it('should parse numeric scrollYOffset', () => { | ||||||
|  |  | ||||||
|  | @ -1,12 +1,11 @@ | ||||||
| 'use strict'; | 'use strict'; | ||||||
| import { Injectable } from '@angular/core'; | import { Injectable } from '@angular/core'; | ||||||
| import { isFunction, isString } from '@angular/core/src/facade/lang'; | import { isFunction, isString } from '@angular/core/src/facade/lang'; | ||||||
| import { BrowserDomAdapter } from '@angular/platform-browser/src/browser/browser_adapter'; | import { BrowserDomAdapter as DOM } from '../utils/browser-adapter'; | ||||||
| 
 | 
 | ||||||
| const defaults = { | const defaults = { | ||||||
|   scrollYOffset: 0, |   scrollYOffset: 0, | ||||||
|   disableLazySchemas: false, |   disableLazySchemas: false | ||||||
|   debugMode: false//global && global.redocDebugMode
 |  | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| const OPTION_NAMES = new Set(['scrollYOffset', 'disableLazySchemas', 'specUrl', 'suppressWarnings']); | const OPTION_NAMES = new Set(['scrollYOffset', 'disableLazySchemas', 'specUrl', 'suppressWarnings']); | ||||||
|  | @ -15,9 +14,8 @@ const OPTION_NAMES = new Set(['scrollYOffset', 'disableLazySchemas', 'specUrl', | ||||||
| export class OptionsService { | export class OptionsService { | ||||||
|   private _options: any; |   private _options: any; | ||||||
| 
 | 
 | ||||||
|   constructor(private dom:BrowserDomAdapter) { |   constructor() { | ||||||
|     this._options = defaults; |     this._options = defaults; | ||||||
|     this.dom = dom; |  | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   get options() { |   get options() { | ||||||
|  | @ -30,7 +28,7 @@ export class OptionsService { | ||||||
| 
 | 
 | ||||||
|   parseOptions(el) { |   parseOptions(el) { | ||||||
|     let parsedOpts; |     let parsedOpts; | ||||||
|     let attributesMap = this.dom.attributeMap(el); |     let attributesMap = DOM.attributeMap(el); | ||||||
|     parsedOpts = {}; |     parsedOpts = {}; | ||||||
|     Array.from(attributesMap.keys()) |     Array.from(attributesMap.keys()) | ||||||
|       //camelCasify
 |       //camelCasify
 | ||||||
|  | @ -59,7 +57,7 @@ export class OptionsService { | ||||||
|         // if selector or node function that returns bottom offset of this node
 |         // if selector or node function that returns bottom offset of this node
 | ||||||
|         let el = this._options.scrollYOffset; |         let el = this._options.scrollYOffset; | ||||||
|         if (!(el instanceof Node)) { |         if (!(el instanceof Node)) { | ||||||
|           el = this.dom.query(el); |           el = DOM.query(el); | ||||||
|         } |         } | ||||||
|         if (!el) { |         if (!el) { | ||||||
|           this._options.scrollYOffset = () => 0; |           this._options.scrollYOffset = () => 0; | ||||||
|  |  | ||||||
|  | @ -3,7 +3,7 @@ import { JsonPointer } from '../utils/JsonPointer'; | ||||||
| import { SpecManager } from '../utils/SpecManager'; | import { SpecManager } from '../utils/SpecManager'; | ||||||
| import {methods as swaggerMethods, keywordTypes} from  '../utils/swagger-defs'; | import {methods as swaggerMethods, keywordTypes} from  '../utils/swagger-defs'; | ||||||
| import { WarningsService } from './warnings.service'; | import { WarningsService } from './warnings.service'; | ||||||
| import slugify from 'slugify'; | import * as slugify from 'slugify'; | ||||||
| 
 | 
 | ||||||
| interface PropertyPreprocessOptions { | interface PropertyPreprocessOptions { | ||||||
|   childFor: string; |   childFor: string; | ||||||
|  | @ -59,7 +59,6 @@ const injectors = { | ||||||
|   discriminator: { |   discriminator: { | ||||||
|     check: (propertySchema) => propertySchema.discriminator, |     check: (propertySchema) => propertySchema.discriminator, | ||||||
|     inject: (injectTo, propertySchema = injectTo, pointer) => { |     inject: (injectTo, propertySchema = injectTo, pointer) => { | ||||||
|       injectTo._descendants = SpecManager.instance().findDerivedDefinitions(pointer); |  | ||||||
|       injectTo.discriminator = propertySchema.discriminator; |       injectTo.discriminator = propertySchema.discriminator; | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|  | @ -68,11 +67,15 @@ const injectors = { | ||||||
|       return propertySchema.type === 'array' && !Array.isArray(propertySchema.items); |       return propertySchema.type === 'array' && !Array.isArray(propertySchema.items); | ||||||
|     }, |     }, | ||||||
|     inject: (injectTo, propertySchema = injectTo, propPointer) => { |     inject: (injectTo, propertySchema = injectTo, propPointer) => { | ||||||
|       injectTo._isArray = true; |       if (!(SchemaHelper.detectType(propertySchema.items) === 'object')) { | ||||||
|       injectTo._pointer = propertySchema.items._pointer |         injectTo._isArray = true; | ||||||
|         || JsonPointer.join(propertySchema._pointer || propPointer, ['items']); |         injectTo._pointer = propertySchema.items._pointer | ||||||
|  |           || JsonPointer.join(propertySchema._pointer || propPointer, ['items']); | ||||||
| 
 | 
 | ||||||
|       SchemaHelper.runInjectors(injectTo, propertySchema.items, propPointer); |         SchemaHelper.runInjectors(injectTo, propertySchema.items, propPointer); | ||||||
|  |       } else { | ||||||
|  |         injectors.object.inject(injectTo, propertySchema.items); | ||||||
|  |       } | ||||||
|       injectTo._widgetType = 'array'; |       injectTo._widgetType = 'array'; | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|  | @ -89,12 +92,12 @@ const injectors = { | ||||||
|         itemSchema._pointer = itemSchema._pointer || JsonPointer.join(itemsPtr, [i.toString()]); |         itemSchema._pointer = itemSchema._pointer || JsonPointer.join(itemsPtr, [i.toString()]); | ||||||
|       } |       } | ||||||
|       injectTo._widgetType = 'tuple'; |       injectTo._widgetType = 'tuple'; | ||||||
|       // SchemaHelper.runInjectors(injectTo, propertySchema.items, propPointer);
 |  | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   object: { |   object: { | ||||||
|     check: (propertySchema) => { |     check: (propertySchema) => { | ||||||
|       return propertySchema.type === 'object' && propertySchema.properties; |       return propertySchema.type === 'object' && (propertySchema.properties || | ||||||
|  |         typeof propertySchema.additionalProperties === 'object'); | ||||||
|     }, |     }, | ||||||
|     inject: (injectTo, propertySchema = injectTo) => { |     inject: (injectTo, propertySchema = injectTo) => { | ||||||
|       let baseName = propertySchema._pointer && JsonPointer.baseName(propertySchema._pointer); |       let baseName = propertySchema._pointer && JsonPointer.baseName(propertySchema._pointer); | ||||||
|  | @ -215,7 +218,6 @@ export class SchemaHelper { | ||||||
|       schema.required.forEach(prop => requiredMap[prop] = true); |       schema.required.forEach(prop => requiredMap[prop] = true); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     let discriminatorFieldIdx = -1; |  | ||||||
|     let props = schema.properties && Object.keys(schema.properties).map((propName, idx) => { |     let props = schema.properties && Object.keys(schema.properties).map((propName, idx) => { | ||||||
|       let propertySchema = Object.assign({}, schema.properties[propName]); |       let propertySchema = Object.assign({}, schema.properties[propName]); | ||||||
|       let propPointer = propertySchema._pointer || |       let propPointer = propertySchema._pointer || | ||||||
|  | @ -228,9 +230,6 @@ export class SchemaHelper { | ||||||
|       } |       } | ||||||
|       propertySchema._required = !!requiredMap[propName]; |       propertySchema._required = !!requiredMap[propName]; | ||||||
|       propertySchema.isDiscriminator = (schema.discriminator === propName); |       propertySchema.isDiscriminator = (schema.discriminator === propName); | ||||||
|       if (propertySchema.isDiscriminator) { |  | ||||||
|         discriminatorFieldIdx = idx; |  | ||||||
|       } |  | ||||||
|       return propertySchema; |       return propertySchema; | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  | @ -242,11 +241,6 @@ export class SchemaHelper { | ||||||
|       props.push(propsSchema); |       props.push(propsSchema); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // Move discriminator field to the end of properties list
 |  | ||||||
|     if (discriminatorFieldIdx > -1) { |  | ||||||
|       let discrProp = props.splice(discriminatorFieldIdx, 1); |  | ||||||
|       props.push(discrProp[0]); |  | ||||||
|     } |  | ||||||
|     // filter readOnly props for request schemas
 |     // filter readOnly props for request schemas
 | ||||||
|     if (opts.skipReadOnly) { |     if (opts.skipReadOnly) { | ||||||
|       props = props.filter(prop => !prop.readOnly); |       props = props.filter(prop => !prop.readOnly); | ||||||
|  | @ -280,6 +274,7 @@ export class SchemaHelper { | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   static detectType(schema) { |   static detectType(schema) { | ||||||
|  |     if (schema.type) return schema.type; | ||||||
|     let keywords = Object.keys(keywordTypes); |     let keywords = Object.keys(keywordTypes); | ||||||
|     for (var i=0; i < keywords.length; i++) { |     for (var i=0; i < keywords.length; i++) { | ||||||
|       let keyword = keywords[i]; |       let keyword = keywords[i]; | ||||||
|  |  | ||||||
|  | @ -102,8 +102,10 @@ class AllOfMerger { | ||||||
|         AllOfMerger.mergeObject(into, subSchema, i); |         AllOfMerger.mergeObject(into, subSchema, i); | ||||||
|       } |       } | ||||||
|       // don't merge _pointer
 |       // don't merge _pointer
 | ||||||
|  |       let tmpPtr = subSchema._pointer; | ||||||
|       subSchema._pointer = null; |       subSchema._pointer = null; | ||||||
|       defaults(into, subSchema); |       defaults(into, subSchema); | ||||||
|  |       subSchema._pointer = tmpPtr; | ||||||
|     } |     } | ||||||
|     into.allOf = null; |     into.allOf = null; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  | @ -1,7 +1,8 @@ | ||||||
| 'use strict'; | 'use strict'; | ||||||
| import { Injectable, EventEmitter, Output } from '@angular/core'; | import { Injectable, EventEmitter, Output } from '@angular/core'; | ||||||
| import { BrowserDomAdapter } from '@angular/platform-browser/src/browser/browser_adapter'; | import { BrowserDomAdapter as DOM } from '../utils/browser-adapter'; | ||||||
| import { OptionsService } from './options.service'; | import { OptionsService } from './options.service'; | ||||||
|  | import { throttle } from '../utils/helpers'; | ||||||
| 
 | 
 | ||||||
| export const INVIEW_POSITION = { | export const INVIEW_POSITION = { | ||||||
|   ABOVE : 1, |   ABOVE : 1, | ||||||
|  | @ -16,12 +17,11 @@ export class ScrollService { | ||||||
|   @Output() scroll = new EventEmitter(); |   @Output() scroll = new EventEmitter(); | ||||||
|   private prevOffsetY: number; |   private prevOffsetY: number; | ||||||
|   private _cancel:any; |   private _cancel:any; | ||||||
|   constructor(private dom:BrowserDomAdapter, optionsService:OptionsService) { |   constructor(optionsService:OptionsService) { | ||||||
|     //events.bootstrapped.subscribe(() => this.hashScroll());
 |     //events.bootstrapped.subscribe(() => this.hashScroll());
 | ||||||
|     this.scrollYOffset = () => optionsService.options.scrollYOffset(); |     this.scrollYOffset = () => optionsService.options.scrollYOffset(); | ||||||
|     this.$scrollParent = optionsService.options.$scrollParent; |     this.$scrollParent = optionsService.options.$scrollParent; | ||||||
|     this.scroll = new EventEmitter(); |     this.scroll = new EventEmitter(); | ||||||
|     this.dom = dom; |  | ||||||
|     this.bind(); |     this.bind(); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  | @ -60,7 +60,8 @@ export class ScrollService { | ||||||
| 
 | 
 | ||||||
|   bind() { |   bind() { | ||||||
|     this.prevOffsetY = this.scrollY(); |     this.prevOffsetY = this.scrollY(); | ||||||
|     this._cancel = this.dom.onAndCancel(this.$scrollParent, 'scroll', (evt) => { this.scrollHandler(evt); }); |     this._cancel = DOM.onAndCancel(this.$scrollParent, 'scroll', | ||||||
|  |       throttle((evt) => { this.scrollHandler(evt); }, 100, this)); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   unbind() { |   unbind() { | ||||||
|  |  | ||||||
|  | @ -1,8 +1,7 @@ | ||||||
| 'use strict'; | 'use strict'; | ||||||
| 
 | 
 | ||||||
| import { Component, EventEmitter, ElementRef, Output, AfterContentInit } from '@angular/core'; | import { Component, EventEmitter, ElementRef, Output, AfterContentInit } from '@angular/core'; | ||||||
| import { CORE_DIRECTIVES } from '@angular/common'; | import * as DropKick from 'dropkickjs'; | ||||||
| import DropKick from 'dropkickjs'; |  | ||||||
| 
 | 
 | ||||||
| @Component({ | @Component({ | ||||||
|   selector: 'drop-down', |   selector: 'drop-down', | ||||||
|  | @ -11,7 +10,6 @@ import DropKick from 'dropkickjs'; | ||||||
|       <ng-content></ng-content> |       <ng-content></ng-content> | ||||||
|     </select> |     </select> | ||||||
|   `,
 |   `,
 | ||||||
|   directives: [CORE_DIRECTIVES], |  | ||||||
|   styleUrls: ['./drop-down.css'] |   styleUrls: ['./drop-down.css'] | ||||||
| }) | }) | ||||||
| export class DropDown implements AfterContentInit { | export class DropDown implements AfterContentInit { | ||||||
|  |  | ||||||
|  | @ -27,10 +27,10 @@ describe('Common components', () => { | ||||||
|       expect(component).not.toBeNull(); |       expect(component).not.toBeNull(); | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     it('should start unsticked', () => { |     it('should start sticked', () => { | ||||||
|       spyOn(component, 'stick').and.callThrough(); |       spyOn(component, 'stick').and.callThrough(); | ||||||
|       fixture.detectChanges(); |       fixture.detectChanges(); | ||||||
|       expect(component.stick).not.toHaveBeenCalled(); |       expect(component.stick).toHaveBeenCalled(); | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     it('should stick if scrolled more than scrollYOffset', () => { |     it('should stick if scrolled more than scrollYOffset', () => { | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| 'use strict'; | 'use strict'; | ||||||
| 
 | 
 | ||||||
| import { Directive, ElementRef, Input, OnInit, OnDestroy } from '@angular/core'; | import { Directive, ElementRef, Input, OnInit, OnDestroy } from '@angular/core'; | ||||||
| import { BrowserDomAdapter } from '@angular/platform-browser/src/browser/browser_adapter'; | import { BrowserDomAdapter as DOM } from '../../../utils/browser-adapter'; | ||||||
| 
 | 
 | ||||||
| @Directive({ | @Directive({ | ||||||
|   selector: '[sticky-sidebar]' |   selector: '[sticky-sidebar]' | ||||||
|  | @ -13,19 +13,18 @@ export class StickySidebar implements OnInit, OnDestroy { | ||||||
|   @Input() scrollParent:any; |   @Input() scrollParent:any; | ||||||
|   @Input() scrollYOffset:any; |   @Input() scrollYOffset:any; | ||||||
| 
 | 
 | ||||||
|   constructor(elementRef:ElementRef, private dom:BrowserDomAdapter) { |   constructor(elementRef:ElementRef) { | ||||||
|     this.$element = elementRef.nativeElement; |     this.$element = elementRef.nativeElement; | ||||||
| 
 | 
 | ||||||
|     // initial styling
 |     // initial styling
 | ||||||
|     this.dom.setStyle(this.$element, 'position', 'absolute'); |     DOM.setStyle(this.$element, 'position', 'absolute'); | ||||||
|     this.dom.setStyle(this.$element, 'top', '0'); |     DOM.setStyle(this.$element, 'top', '0'); | ||||||
|     this.dom.setStyle(this.$element, 'bottom', '0'); |     DOM.setStyle(this.$element, 'bottom', '0'); | ||||||
|     this.dom.setStyle(this.$element, 'max-height', '100%'); |     DOM.setStyle(this.$element, 'max-height', '100%'); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   bind() { |   bind() { | ||||||
|     this.cancelScrollBinding = this.dom.onAndCancel(this.scrollParent, 'scroll', () => { this.updatePosition(); }); |     this.cancelScrollBinding = DOM.onAndCancel(this.scrollParent, 'scroll', () => { this.updatePosition(); }); | ||||||
|     this.updatePosition(); |  | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   unbind() { |   unbind() { | ||||||
|  | @ -41,13 +40,13 @@ export class StickySidebar implements OnInit, OnDestroy { | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   stick() { |   stick() { | ||||||
|     this.dom.setStyle(this.$element, 'position', 'fixed'); |     DOM.setStyle(this.$element, 'position', 'fixed'); | ||||||
|     this.dom.setStyle(this.$element, 'top', this.scrollYOffset() + 'px'); |     DOM.setStyle(this.$element, 'top', this.scrollYOffset() + 'px'); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   unstick() { |   unstick() { | ||||||
|     this.dom.setStyle(this.$element, 'position', 'absolute'); |     DOM.setStyle(this.$element, 'position', 'absolute'); | ||||||
|     this.dom.setStyle(this.$element, 'top', '0'); |     DOM.setStyle(this.$element, 'top', '0'); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   get scrollY() { |   get scrollY() { | ||||||
|  | @ -56,8 +55,9 @@ export class StickySidebar implements OnInit, OnDestroy { | ||||||
| 
 | 
 | ||||||
|   ngOnInit() { |   ngOnInit() { | ||||||
|     // FIXME use more reliable code
 |     // FIXME use more reliable code
 | ||||||
|     this.$redocEl = this.$element.offsetParent || this.dom.defaultDoc().body; |     this.$redocEl = this.$element.offsetParent.parentNode || DOM.defaultDoc().body; | ||||||
|     this.bind(); |     this.bind(); | ||||||
|  |     this.updatePosition(); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   ngOnDestroy() { |   ngOnDestroy() { | ||||||
|  |  | ||||||
|  | @ -1,7 +1,6 @@ | ||||||
| 'use strict'; | 'use strict'; | ||||||
| 
 | 
 | ||||||
| import { Component, EventEmitter, Input, Output, OnInit } from '@angular/core'; | import { Component, EventEmitter, Input, Output, OnInit } from '@angular/core'; | ||||||
| import { CORE_DIRECTIVES } from '@angular/common'; |  | ||||||
| import { ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core'; | import { ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core'; | ||||||
| 
 | 
 | ||||||
| @Component({ | @Component({ | ||||||
|  | @ -13,7 +12,6 @@ import { ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core'; | ||||||
|     </ul> |     </ul> | ||||||
|     <ng-content></ng-content> |     <ng-content></ng-content> | ||||||
|   `,
 |   `,
 | ||||||
|   directives: [CORE_DIRECTIVES], |  | ||||||
|   styleUrls: ['tabs.css'], |   styleUrls: ['tabs.css'], | ||||||
|   changeDetection: ChangeDetectionStrategy.OnPush |   changeDetection: ChangeDetectionStrategy.OnPush | ||||||
| }) | }) | ||||||
|  | @ -70,7 +68,6 @@ export class Tabs implements OnInit { | ||||||
|       <ng-content></ng-content> |       <ng-content></ng-content> | ||||||
|     </div> |     </div> | ||||||
|   `,
 |   `,
 | ||||||
|   directives: [CORE_DIRECTIVES], |  | ||||||
|   styles: [` |   styles: [` | ||||||
|     .tab-wrap { |     .tab-wrap { | ||||||
|       display: none; |       display: none; | ||||||
|  |  | ||||||
|  | @ -5,7 +5,6 @@ import { getChildDebugElement, mouseclick } from '../../../../tests/helpers'; | ||||||
| import { Component } from '@angular/core'; | import { Component } from '@angular/core'; | ||||||
| import { | import { | ||||||
|   inject, |   inject, | ||||||
|   expect, |  | ||||||
|   TestComponentBuilder |   TestComponentBuilder | ||||||
| } from '@angular/core/testing'; | } from '@angular/core/testing'; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,13 +1,10 @@ | ||||||
| 'use strict'; | 'use strict'; | ||||||
| 
 | 
 | ||||||
| import { Component, EventEmitter, Output, Input } from '@angular/core'; | import { Component, EventEmitter, Output, Input } from '@angular/core'; | ||||||
| import { CORE_DIRECTIVES } from '@angular/common'; |  | ||||||
| 
 |  | ||||||
| @Component({ | @Component({ | ||||||
|   selector: 'zippy', |   selector: 'zippy', | ||||||
|   templateUrl: './zippy.html', |   templateUrl: './zippy.html', | ||||||
|   styleUrls: ['./zippy.css'], |   styleUrls: ['./zippy.css'] | ||||||
|   directives: [CORE_DIRECTIVES] |  | ||||||
| }) | }) | ||||||
| export class Zippy { | export class Zippy { | ||||||
|   @Input() type = 'general'; |   @Input() type = 'general'; | ||||||
|  |  | ||||||
|  | @ -1,5 +1,13 @@ | ||||||
| 'use strict'; | 'use strict'; | ||||||
| export * from './DropDown/drop-down'; | import { DropDown } from './DropDown/drop-down'; | ||||||
| export * from './StickySidebar/sticky-sidebar'; | import { StickySidebar } from './StickySidebar/sticky-sidebar'; | ||||||
| export * from './Tabs/tabs'; | import { Tabs, Tab } from './Tabs/tabs'; | ||||||
| export * from './Zippy/zippy'; | import { Zippy } from './Zippy/zippy'; | ||||||
|  | import { CopyButton } from './CopyButton/copy-button.directive'; | ||||||
|  | import { SelectOnClick } from './SelectOnClick/select-on-click.directive'; | ||||||
|  | 
 | ||||||
|  | export const REDOC_COMMON_DIRECTIVES = [ | ||||||
|  |   DropDown, StickySidebar, Tabs, Tab, Zippy, CopyButton, SelectOnClick | ||||||
|  | ]; | ||||||
|  | 
 | ||||||
|  | export { DropDown, StickySidebar, Tabs, Tab, Zippy, CopyButton, SelectOnClick } | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| 'use strict'; | 'use strict'; | ||||||
| import JsonPointerLib from 'json-pointer'; | import * as JsonPointerLib from 'json-pointer'; | ||||||
| 
 | 
 | ||||||
| const origParse = JsonPointerLib.parse; | const origParse = JsonPointerLib.parse; | ||||||
| /** | /** | ||||||
|  |  | ||||||
|  | @ -1,9 +1,9 @@ | ||||||
| 'use strict'; | 'use strict'; | ||||||
| 
 | 
 | ||||||
| import JsonSchemaRefParser from 'json-schema-ref-parser'; | import * as JsonSchemaRefParser from 'json-schema-ref-parser'; | ||||||
| import JsonPointer from './JsonPointer'; | import { JsonPointer } from './JsonPointer'; | ||||||
| import { renderMd, safePush } from './helpers'; | import { renderMd, safePush } from './helpers'; | ||||||
| import slugify from 'slugify'; | import * as slugify from 'slugify'; | ||||||
| import { parse as urlParse } from 'url'; | import { parse as urlParse } from 'url'; | ||||||
| 
 | 
 | ||||||
| export class SpecManager { | export class SpecManager { | ||||||
|  | @ -32,8 +32,8 @@ export class SpecManager { | ||||||
|       .then(schema => { |       .then(schema => { | ||||||
|           this._url = url; |           this._url = url; | ||||||
|           this._schema = schema; |           this._schema = schema; | ||||||
|           resolve(this._schema); |  | ||||||
|           this.init(); |           this.init(); | ||||||
|  |           return resolve(this._schema); | ||||||
|       }, err => reject(err)); |       }, err => reject(err)); | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  | @ -163,11 +163,7 @@ export class SpecManager { | ||||||
|       let idx = subTypes.findIndex(ref => ref === defPointer); |       let idx = subTypes.findIndex(ref => ref === defPointer); | ||||||
|       if (idx < 0) continue; |       if (idx < 0) continue; | ||||||
| 
 | 
 | ||||||
|       let empty = false; |       res.push({name: defName, $ref: `#/definitions/${defName}`}); | ||||||
|       if (subTypes.length === 1) { |  | ||||||
|         empty = true; |  | ||||||
|       } |  | ||||||
|       res.push({name: defName, $ref: `#/definitions/${defName}`, empty}); |  | ||||||
|     } |     } | ||||||
|     return res; |     return res; | ||||||
|   } |   } | ||||||
|  |  | ||||||
							
								
								
									
										73
									
								
								lib/utils/browser-adapter.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								lib/utils/browser-adapter.ts
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,73 @@ | ||||||
|  | export class BrowserDomAdapter { | ||||||
|  |   static query(selector: string): any { return document.querySelector(selector); } | ||||||
|  | 
 | ||||||
|  |   static querySelector(el: any /** TODO #9100 */, selector: string): HTMLElement { | ||||||
|  |     return el.querySelector(selector); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   static onAndCancel( | ||||||
|  |       el: any /** TODO #9100 */, evt: any /** TODO #9100 */, | ||||||
|  |       listener: any /** TODO #9100 */): Function { | ||||||
|  |     el.addEventListener(evt, listener, false); | ||||||
|  |     // Needed to follow Dart's subscription semantic, until fix of
 | ||||||
|  |     // https://code.google.com/p/dart/issues/detail?id=17406
 | ||||||
|  |     return () => { el.removeEventListener(evt, listener, false); }; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   static addClass(element: any /** TODO #9100 */, className: string) { element.classList.add(className); } | ||||||
|  | 
 | ||||||
|  |   static removeClass(element: any /** TODO #9100 */, className: string) { | ||||||
|  |     element.classList.remove(className); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   static hasClass(element: any /** TODO #9100 */, className: string): boolean { | ||||||
|  |     return element.classList.contains(className); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   static attributeMap(element: any /** TODO #9100 */): Map<string, string> { | ||||||
|  |     var res = new Map<string, string>(); | ||||||
|  |     var elAttrs = element.attributes; | ||||||
|  |     for (var i = 0; i < elAttrs.length; i++) { | ||||||
|  |       var attrib = elAttrs[i]; | ||||||
|  |       res.set(attrib.name, attrib.value); | ||||||
|  |     } | ||||||
|  |     return res; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   static setStyle(element: any /** TODO #9100 */, styleName: string, styleValue: string) { | ||||||
|  |     element.style[styleName] = styleValue; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   static removeStyle(element: any /** TODO #9100 */, stylename: string) { | ||||||
|  |     element.style[stylename] = null; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   static getStyle(element: any /** TODO #9100 */, stylename: string): string { | ||||||
|  |     return element.style[stylename]; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   static hasStyle(element: any /** TODO #9100 */, styleName: string, styleValue: string = null): boolean { | ||||||
|  |     var value = this.getStyle(element, styleName) || ''; | ||||||
|  |     return styleValue ? value === styleValue : value.length > 0; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   static hasAttribute(element: any /** TODO #9100 */, attribute: string): boolean { | ||||||
|  |     return element.hasAttribute(attribute); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   static getAttribute(element: any /** TODO #9100 */, attribute: string): string { | ||||||
|  |     return element.getAttribute(attribute); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   static setAttribute(element: any /** TODO #9100 */, name: string, value: string) { | ||||||
|  |     element.setAttribute(name, value); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   static removeAttribute(element: any /** TODO #9100 */, attribute: string) { | ||||||
|  |     element.removeAttribute(attribute); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   static getLocation(): Location { return window.location; } | ||||||
|  | 
 | ||||||
|  |   static defaultDoc(): HTMLDocument { return document; } | ||||||
|  | } | ||||||
							
								
								
									
										103
									
								
								lib/utils/helpers.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										103
									
								
								lib/utils/helpers.js
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,103 @@ | ||||||
|  | 'use strict'; | ||||||
|  | var Remarkable = require('remarkable'); | ||||||
|  | var md = new Remarkable({ | ||||||
|  |     html: true, | ||||||
|  |     linkify: true, | ||||||
|  |     breaks: false, | ||||||
|  |     typographer: false, | ||||||
|  |     highlight: function (str, lang) { | ||||||
|  |         if (lang === 'json') | ||||||
|  |             lang = 'js'; | ||||||
|  |         var grammar = Prism.languages[lang]; | ||||||
|  |         if (!grammar) | ||||||
|  |             return str; | ||||||
|  |         return Prism.highlight(str, grammar); | ||||||
|  |     } | ||||||
|  | }); | ||||||
|  | function renderMd(rawText, headersHandler) { | ||||||
|  |     var _origRule; | ||||||
|  |     if (headersHandler) { | ||||||
|  |         _origRule = { | ||||||
|  |             open: md.renderer.rules.heading_open, | ||||||
|  |             close: md.renderer.rules.heading_close | ||||||
|  |         }; | ||||||
|  |         md.renderer.rules.heading_open = function (tokens, idx) { | ||||||
|  |             if (tokens[idx].hLevel !== 1) { | ||||||
|  |                 return _origRule.open(tokens, idx); | ||||||
|  |             } | ||||||
|  |             else { | ||||||
|  |                 return headersHandler.open(tokens, idx); | ||||||
|  |             } | ||||||
|  |         }; | ||||||
|  |         md.renderer.rules.heading_close = function (tokens, idx) { | ||||||
|  |             if (tokens[idx].hLevel !== 1) { | ||||||
|  |                 return _origRule.close(tokens, idx); | ||||||
|  |             } | ||||||
|  |             else { | ||||||
|  |                 return headersHandler.close(tokens, idx); | ||||||
|  |             } | ||||||
|  |         }; | ||||||
|  |     } | ||||||
|  |     var res = md.render(rawText); | ||||||
|  |     if (headersHandler) { | ||||||
|  |         md.renderer.rules.heading_open = _origRule.open; | ||||||
|  |         md.renderer.rules.heading_close = _origRule.close; | ||||||
|  |     } | ||||||
|  |     return res; | ||||||
|  | } | ||||||
|  | exports.renderMd = renderMd; | ||||||
|  | function statusCodeType(statusCode) { | ||||||
|  |     if (statusCode < 100 || statusCode > 599) { | ||||||
|  |         throw new Error('invalid HTTP code'); | ||||||
|  |     } | ||||||
|  |     var res = 'success'; | ||||||
|  |     if (statusCode >= 300 && statusCode < 400) { | ||||||
|  |         res = 'redirect'; | ||||||
|  |     } | ||||||
|  |     else if (statusCode >= 400) { | ||||||
|  |         res = 'error'; | ||||||
|  |     } | ||||||
|  |     else if (statusCode < 200) { | ||||||
|  |         res = 'info'; | ||||||
|  |     } | ||||||
|  |     return res; | ||||||
|  | } | ||||||
|  | exports.statusCodeType = statusCodeType; | ||||||
|  | function defaults(target, src) { | ||||||
|  |     var props = Object.keys(src); | ||||||
|  |     var index = -1, length = props.length; | ||||||
|  |     while (++index < length) { | ||||||
|  |         var key = props[index]; | ||||||
|  |         if (target[key] === undefined) { | ||||||
|  |             target[key] = src[key]; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     return target; | ||||||
|  | } | ||||||
|  | exports.defaults = defaults; | ||||||
|  | function safePush(obj, prop, val) { | ||||||
|  |     if (!obj[prop]) | ||||||
|  |         obj[prop] = []; | ||||||
|  |     obj[prop].push(val); | ||||||
|  | } | ||||||
|  | exports.safePush = safePush; | ||||||
|  | function throttle(fn, threshhold, scope) { | ||||||
|  |     threshhold = threshhold || 250; | ||||||
|  |     var last, deferTimer; | ||||||
|  |     return function () { | ||||||
|  |         var context = scope || this; | ||||||
|  |         var now = +new Date, args = arguments; | ||||||
|  |         if (last && now < last + threshhold) { | ||||||
|  |             clearTimeout(deferTimer); | ||||||
|  |             deferTimer = setTimeout(function () { | ||||||
|  |                 last = now; | ||||||
|  |                 fn.apply(context, args); | ||||||
|  |             }, threshhold); | ||||||
|  |         } | ||||||
|  |         else { | ||||||
|  |             last = now; | ||||||
|  |             fn.apply(context, args); | ||||||
|  |         } | ||||||
|  |     }; | ||||||
|  | } | ||||||
|  | exports.throttle = throttle; | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| 'use strict'; | 'use strict'; | ||||||
| import Remarkable from 'remarkable'; | import * as Remarkable from 'remarkable'; | ||||||
| declare var Prism: any; | declare var Prism: any; | ||||||
| 
 | 
 | ||||||
| const md = new Remarkable({ | const md = new Remarkable({ | ||||||
|  | @ -89,3 +89,27 @@ export function safePush(obj, prop, val) { | ||||||
|   if (!obj[prop]) obj[prop] = []; |   if (!obj[prop]) obj[prop] = []; | ||||||
|   obj[prop].push(val); |   obj[prop].push(val); | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | // credits https://remysharp.com/2010/07/21/throttling-function-calls
 | ||||||
|  | export function throttle(fn, threshhold, scope) { | ||||||
|  |   threshhold = threshhold || 250; | ||||||
|  |   var last, | ||||||
|  |       deferTimer; | ||||||
|  |   return function () { | ||||||
|  |     var context = scope || this; | ||||||
|  | 
 | ||||||
|  |     var now = +new Date, | ||||||
|  |         args = arguments; | ||||||
|  |     if (last && now < last + threshhold) { | ||||||
|  |       // hold on to it
 | ||||||
|  |       clearTimeout(deferTimer); | ||||||
|  |       deferTimer = setTimeout(function () { | ||||||
|  |         last = now; | ||||||
|  |         fn.apply(context, args); | ||||||
|  |       }, threshhold); | ||||||
|  |     } else { | ||||||
|  |       last = now; | ||||||
|  |       fn.apply(context, args); | ||||||
|  |     } | ||||||
|  |   }; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -117,3 +117,7 @@ export class EncodeURIComponentPipe implements PipeTransform { | ||||||
|     return encodeURIComponent(value); |     return encodeURIComponent(value); | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | export const REDOC_PIPES = [ | ||||||
|  |   JsonPointerEscapePipe, MarkedPipe, SafePipe, PrismPipe, EncodeURIComponentPipe | ||||||
|  | ]; | ||||||
|  |  | ||||||
							
								
								
									
										31
									
								
								lib/vendor.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								lib/vendor.ts
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,31 @@ | ||||||
|  | import 'prismjs'; | ||||||
|  | import 'prismjs/components/prism-actionscript.js'; | ||||||
|  | import 'prismjs/components/prism-c.js'; | ||||||
|  | import 'prismjs/components/prism-cpp.js'; | ||||||
|  | import 'prismjs/components/prism-csharp.js'; | ||||||
|  | import 'prismjs/components/prism-php.js'; | ||||||
|  | import 'prismjs/components/prism-coffeescript.js'; | ||||||
|  | import 'prismjs/components/prism-go.js'; | ||||||
|  | import 'prismjs/components/prism-haskell.js'; | ||||||
|  | import 'prismjs/components/prism-java.js'; | ||||||
|  | import 'prismjs/components/prism-lua.js'; | ||||||
|  | import 'prismjs/components/prism-matlab.js'; | ||||||
|  | import 'prismjs/components/prism-perl.js'; | ||||||
|  | import 'prismjs/components/prism-python.js'; | ||||||
|  | import 'prismjs/components/prism-r.js'; | ||||||
|  | import 'prismjs/components/prism-ruby.js'; | ||||||
|  | import 'prismjs/components/prism-bash.js'; | ||||||
|  | import 'prismjs/components/prism-swift.js'; | ||||||
|  | import 'prismjs/components/prism-objectivec.js'; | ||||||
|  | import 'prismjs/components/prism-scala.js'; | ||||||
|  | 
 | ||||||
|  | import 'dropkickjs/build/css/dropkick.css'; | ||||||
|  | import 'prismjs/themes/prism-dark.css'; | ||||||
|  | import 'hint.css/hint.base.css'; | ||||||
|  | 
 | ||||||
|  | import '@angular/common'; | ||||||
|  | import '@angular/core'; | ||||||
|  | import '@angular/platform-browser'; | ||||||
|  | 
 | ||||||
|  | // RxJS
 | ||||||
|  | import 'rxjs/Rx'; | ||||||
							
								
								
									
										16
									
								
								manual-types/index.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								manual-types/index.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,16 @@ | ||||||
|  | declare module "dropkickjs" | ||||||
|  | declare module "json-schema-ref-parser" | ||||||
|  | declare module "openapi-sampler" | ||||||
|  | declare module "remarkable" | ||||||
|  | declare module "scrollparent" | ||||||
|  | declare module "slugify" | ||||||
|  | declare module "url" | ||||||
|  | declare module "json-pointer"; | ||||||
|  | 
 | ||||||
|  | declare module "*.css" { | ||||||
|  |   const content: string; | ||||||
|  |   export default content; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | declare var LIB_VERSION: any; | ||||||
|  | declare var IS_PRODUCTION: any; | ||||||
							
								
								
									
										166
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										166
									
								
								package.json
									
									
									
									
									
								
							|  | @ -1,21 +1,30 @@ | ||||||
| { | { | ||||||
|   "name": "redoc", |   "name": "redoc", | ||||||
|   "description": "Swagger-generated API Reference Documentation", |   "description": "Swagger-generated API Reference Documentation", | ||||||
|   "version": "1.1.2", |   "version": "1.2.0", | ||||||
|   "repository": { |   "repository": { | ||||||
|     "type": "git", |     "type": "git", | ||||||
|     "url": "git://github.com/Rebilly/ReDoc" |     "url": "git://github.com/Rebilly/ReDoc" | ||||||
|   }, |   }, | ||||||
|   "main": "dist/redoc.min.js", |   "main": "dist/redoc.min.js", | ||||||
|   "scripts": { |   "scripts": { | ||||||
|     "test": "gulp lint && node ./build/run_tests.js", |     "test": "npm run lint && node ./build/run_tests.js", | ||||||
|     "jspm-install": "jspm install", |  | ||||||
|     "start": "gulp serve", |  | ||||||
|     "build-dist": "gulp build --prod", |  | ||||||
|     "branch-release": "git reset --hard && branch-release", |     "branch-release": "git reset --hard && branch-release", | ||||||
|     "unit": "gulp test", |     "lint": "tslint -e \"lib/**/*{ngfactory|css.shim}.ts\" lib/**/*.ts", | ||||||
|     "e2e": "gulp e2e --prod", |     "unit": "npm run build:sass && karma start", | ||||||
|     "deploy": "node ./build/prepare_deploy.js && deploy-to-gh-pages --update demo" |     "e2e": "npm run build:prod && npm run e2e-copy && npm run webdriver && protractor", | ||||||
|  |     "deploy": "node ./build/prepare_deploy.js && deploy-to-gh-pages --update demo", | ||||||
|  |     "ngc": "ngc -p .", | ||||||
|  |     "webpack:prod": "webpack --config build/webpack.prod.js --profile --bail", | ||||||
|  |     "build:sass": "node-sass -q -o lib lib", | ||||||
|  |     "build:prod": "npm run build:sass && npm run ngc && npm run webpack:prod", | ||||||
|  |     "build-dist": "npm run build:prod", | ||||||
|  |     "stats": "webpack --config build/webpack.prod.js --json > stats.json", | ||||||
|  |     "start": "webpack-dev-server --config build/webpack.dev.js --content-base demo", | ||||||
|  |     "e2e-server": "http-server -p 3000 tests/e2e", | ||||||
|  |     "e2e-copy": "cp dist/redoc.min.js tests/e2e/", | ||||||
|  |     "webdriver": "webdriver-manager update", | ||||||
|  |     "serve:prod": "NODE_ENV=production npm start" | ||||||
|   }, |   }, | ||||||
|   "keywords": [ |   "keywords": [ | ||||||
|     "OpenAPI", |     "OpenAPI", | ||||||
|  | @ -29,118 +38,73 @@ | ||||||
|   ], |   ], | ||||||
|   "author": "Roman Hotsiy", |   "author": "Roman Hotsiy", | ||||||
|   "license": "MIT", |   "license": "MIT", | ||||||
|   "jspm": { |  | ||||||
|     "configFile": "system.config.js", |  | ||||||
|     "dependencies": { |  | ||||||
|       "@angular/common@2.0.0-rc.4": "npm:@angular/common@2.0.0-rc.4", |  | ||||||
|       "@angular/compiler@2.0.0-rc.4": "npm:@angular/compiler@2.0.0-rc.4", |  | ||||||
|       "@angular/core@2.0.0-rc.4": "npm:@angular/core@2.0.0-rc.4", |  | ||||||
|       "@angular/platform-browser-dynamic@2.0.0-rc.4": "npm:@angular/platform-browser-dynamic@2.0.0-rc.4", |  | ||||||
|       "@angular/platform-browser@2.0.0-rc.4": "npm:@angular/platform-browser@2.0.0-rc.4", |  | ||||||
|       "dropkickjs": "npm:dropkickjs@^2.1.8", |  | ||||||
|       "es6-shim": "github:es-shims/es6-shim@^0.33.6", |  | ||||||
|       "hint.css": "npm:hint.css@^2.2.1", |  | ||||||
|       "json": "github:systemjs/plugin-json@^0.1.0", |  | ||||||
|       "json-pointer": "npm:json-pointer@^0.3.0", |  | ||||||
|       "json-schema-ref-parser": "npm:json-schema-ref-parser@^3.1.2", |  | ||||||
|       "openapi-sampler": "npm:openapi-sampler@^0.3.0", |  | ||||||
|       "prismjs": "npm:prismjs@^1.3.0", |  | ||||||
|       "remarkable": "npm:remarkable@^1.6.2", |  | ||||||
|       "rxjs": "npm:rxjs@5.0.0-beta.6", |  | ||||||
|       "scrollparent": "npm:scrollparent@^0.1.0", |  | ||||||
|       "slugify": "npm:slugify@^0.1.1", |  | ||||||
|       "stream-http": "npm:stream-http@^2.3.0", |  | ||||||
|       "url": "github:jspm/nodelibs-url@^0.1.0", |  | ||||||
|       "zone.js": "npm:zone.js@0.6.12" |  | ||||||
|     }, |  | ||||||
|     "devDependencies": { |  | ||||||
|       "babel": "npm:babel-core@^5.8.34", |  | ||||||
|       "babel-runtime": "npm:babel-runtime@^5.8.24", |  | ||||||
|       "clean-css": "npm:clean-css@^3.4.17", |  | ||||||
|       "core-js": "npm:core-js@^1.2.6", |  | ||||||
|       "css": "github:systemjs/plugin-css@^0.1.18", |  | ||||||
|       "systemjs/plugin-json": "github:systemjs/plugin-json@^0.1.0" |  | ||||||
|     }, |  | ||||||
|     "overrides": { |  | ||||||
|       "npm:dropkickjs@2.1.8": { |  | ||||||
|         "format": "global" |  | ||||||
|       }, |  | ||||||
|       "npm:json-schema-ref-parser@3.1.2": { |  | ||||||
|         "map": { |  | ||||||
|           "http": "stream-http", |  | ||||||
|           "https": "stream-http" |  | ||||||
|         } |  | ||||||
|       }, |  | ||||||
|       "npm:openapi-sampler@0.3.0": { |  | ||||||
|         "main": "src/openapi-sampler", |  | ||||||
|         "format": "esm" |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|     "@angular/common": "^2.0.0-rc.4", |     "@types/core-js": "^0.9.31", | ||||||
|     "@angular/compiler": "^2.0.0-rc.4", |     "@types/jasmine": "^2.2.32", | ||||||
|     "@angular/core": "^2.0.0-rc.4", |     "@types/requirejs": "^2.1.26", | ||||||
|     "@angular/platform-browser": "^2.0.0-rc.4", |     "@types/should": "^8.1.28", | ||||||
|     "@angular/platform-browser-dynamic": "^2.0.0-rc.4", |     "angular2-template-loader": "^0.5.0", | ||||||
|     "@angular/platform-server": "^2.0.0-rc.4", |     "awesome-typescript-loader": "^2.2.1", | ||||||
|     "babel-polyfill": "^6.3.14", |  | ||||||
|     "branch-release": "^1.0.3", |     "branch-release": "^1.0.3", | ||||||
|     "browser-sync": "^2.10.1", |     "chalk": "^1.1.3", | ||||||
|     "codelyzer": "0.0.23", |     "codelyzer": "0.0.28", | ||||||
|  |     "copy-webpack-plugin": "^3.0.1", | ||||||
|     "coveralls": "^2.11.9", |     "coveralls": "^2.11.9", | ||||||
|     "del": "^2.2.0", |     "css-loader": "^0.24.0", | ||||||
|     "deploy-to-gh-pages": "^1.1.2", |     "deploy-to-gh-pages": "^1.1.2", | ||||||
|     "gulp": "^3.9.1", |     "http-server": "^0.9.0", | ||||||
|     "gulp-concat": "^2.6.0", |     "istanbul-instrumenter-loader": "^0.2.0", | ||||||
|     "gulp-if": "^2.0.1", |  | ||||||
|     "gulp-inline-ng2-template": "^2.0.4", |  | ||||||
|     "gulp-protractor": "^2.1.0", |  | ||||||
|     "gulp-rename": "^1.2.2", |  | ||||||
|     "gulp-replace": "^0.5.4", |  | ||||||
|     "gulp-sass": "^2.1.1", |  | ||||||
|     "gulp-sourcemaps": "^1.6.0", |  | ||||||
|     "gulp-tslint": "^5.0.0", |  | ||||||
|     "isparta": "^4.0.0", |  | ||||||
|     "istanbul": "github:gotwarlost/istanbul#source-map", |  | ||||||
|     "jasmine-core": "^2.4.1", |     "jasmine-core": "^2.4.1", | ||||||
|     "jasmine-spec-reporter": "^2.4.0", |     "jasmine-spec-reporter": "^2.4.0", | ||||||
|     "json-pointer": "^0.5.0", |  | ||||||
|     "json-schema-ref-parser": "^3.1.2", |  | ||||||
|     "jspm": "^0.16.36", |  | ||||||
|     "karma": "^0.13.15", |     "karma": "^0.13.15", | ||||||
|     "karma-babel-preprocessor": "^5.2.2", |  | ||||||
|     "karma-chrome-launcher": "^1.0.1", |     "karma-chrome-launcher": "^1.0.1", | ||||||
|     "karma-coverage": "github:douglasduteil/karma-coverage#next", |     "karma-coverage": "github:douglasduteil/karma-coverage#next", | ||||||
|  |     "karma-coveralls": "^1.1.2", | ||||||
|     "karma-jasmine": "^1.0.2", |     "karma-jasmine": "^1.0.2", | ||||||
|     "karma-jspm": "^2.1.1", |  | ||||||
|     "karma-mocha-reporter": "^2.0.0", |     "karma-mocha-reporter": "^2.0.0", | ||||||
|     "karma-phantomjs-launcher": "^1.0.0", |     "karma-phantomjs-launcher": "^1.0.0", | ||||||
|     "karma-phantomjs-shim": "^1.1.2", |     "karma-phantomjs-shim": "^1.1.2", | ||||||
|     "karma-regex-preprocessor": "github:makern/karma-regex-preprocessor", |  | ||||||
|     "karma-should": "^1.0.0", |     "karma-should": "^1.0.0", | ||||||
|     "karma-sinon": "^1.0.4", |     "karma-sinon": "^1.0.4", | ||||||
|     "node-sass": "^3.7.0", |     "karma-sourcemap-loader": "^0.3.7", | ||||||
|     "openapi-sampler": "^0.2.0", |     "karma-webpack": "^1.8.0", | ||||||
|  |     "node-sass": "^3.8.0", | ||||||
|     "phantomjs-prebuilt": "^2.1.7", |     "phantomjs-prebuilt": "^2.1.7", | ||||||
|     "protractor": "^3.0.0", |     "protractor": "^3.3.0", | ||||||
|     "reflect-metadata": "^0.1.2", |     "raw-loader": "^0.5.1", | ||||||
|     "remap-istanbul": "^0.6.4", |  | ||||||
|     "remarkable": "^1.6.2", |  | ||||||
|     "require-dir": "^0.3.0", |  | ||||||
|     "run-sequence": "^1.1.5", |  | ||||||
|     "rxjs": "5.0.0-beta.6", |  | ||||||
|     "scrollparent": "^1.0.0", |  | ||||||
|     "shelljs": "^0.7.0", |     "shelljs": "^0.7.0", | ||||||
|     "should": "^9.0.2", |     "should": "^9.0.2", | ||||||
|     "sinon": "^1.17.2", |     "sinon": "^1.17.2", | ||||||
|     "slugify": "^0.1.1", |     "source-map-loader": "^0.1.5", | ||||||
|     "systemjs-builder": "^0.15.16", |     "style-loader": "^0.13.1", | ||||||
|     "tslint": "^3.13.0", |     "ts-helpers": "^1.1.1", | ||||||
|  |     "tslint": "^3.15.0-dev.0", | ||||||
|     "tslint-stylish": "^2.1.0-beta", |     "tslint-stylish": "^2.1.0-beta", | ||||||
|     "typescript": "^1.8.10", |     "typescript": "^2.0.0", | ||||||
|     "vinyl-paths": "^2.0.0", |     "webpack": "^2.1.0-beta.21", | ||||||
|     "yargs": "^4.7.1", |     "webpack-dev-server": "^1.15.0", | ||||||
|     "zone.js": "^0.6.12" |     "yargs": "^4.7.1" | ||||||
|  |   }, | ||||||
|  |   "dependencies": { | ||||||
|  |     "@angular/common": "^2.0.0-rc.5", | ||||||
|  |     "@angular/compiler": "^2.0.0-rc.5", | ||||||
|  |     "@angular/compiler-cli": "^0.5.0", | ||||||
|  |     "@angular/core": "^2.0.0-rc.5", | ||||||
|  |     "@angular/platform-browser": "^2.0.0-rc.5", | ||||||
|  |     "@angular/platform-browser-dynamic": "^2.0.0-rc.5", | ||||||
|  |     "@angular/platform-server": "^2.0.0-rc.5", | ||||||
|  |     "core-js": "^2.4.1", | ||||||
|  |     "dropkickjs": "^2.1.10", | ||||||
|  |     "hint.css": "^2.3.2", | ||||||
|  |     "json-pointer": "^0.5.0", | ||||||
|  |     "json-schema-ref-parser": "^3.1.2", | ||||||
|  |     "openapi-sampler": "^0.3.0", | ||||||
|  |     "prismjs": "^1.5.1", | ||||||
|  |     "remarkable": "^1.6.2", | ||||||
|  |     "rxjs": "5.0.0-beta.6", | ||||||
|  |     "scrollparent": "^1.0.0", | ||||||
|  |     "slugify": "^0.1.1", | ||||||
|  |     "stream-http": "^2.3.1", | ||||||
|  |     "zone.js": "^0.6.15" | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -3,7 +3,7 @@ const loadJson = require('./tests/e2e/helpers').loadJson; | ||||||
| const travis = process.env.TRAVIS; | const travis = process.env.TRAVIS; | ||||||
| 
 | 
 | ||||||
| let config = { | let config = { | ||||||
|   specs: ['./tests/e2e/**/*.js'], |   specs: ['./tests/e2e/**/*.e2e.js'], | ||||||
|   baseUrl: 'http://localhost:3000', |   baseUrl: 'http://localhost:3000', | ||||||
|   framework: 'jasmine2', |   framework: 'jasmine2', | ||||||
|   onPrepare: function() { |   onPrepare: function() { | ||||||
|  | @ -13,9 +13,8 @@ let config = { | ||||||
|     // load APIs.guru list
 |     // load APIs.guru list
 | ||||||
|     return loadJson('https://api.apis.guru/v2/list.json').then((list) => { |     return loadJson('https://api.apis.guru/v2/list.json').then((list) => { | ||||||
|       global.apisGuruList = list; |       global.apisGuruList = list; | ||||||
|       return browser.getCapabilities().then(function (cap) { |       return browser.getCapabilities().then(function (caps) { | ||||||
|         browser.isIE = cap.browserName === 'internet explorer' |         browser.isIE = caps.get('browserName') === 'internet explorer'; | ||||||
|           || (cap.caps_ && cap.caps_.browserName === 'internet explorer') |  | ||||||
|       }); |       }); | ||||||
|     }); |     }); | ||||||
|   }, |   }, | ||||||
|  | @ -29,8 +28,8 @@ let config = { | ||||||
|     print: function() {} |     print: function() {} | ||||||
|   }, |   }, | ||||||
|   multiCapabilities: [ |   multiCapabilities: [ | ||||||
|     { browserName: 'chrome' }, |     { browserName: 'chrome' } | ||||||
|     { browserName: 'firefox' } |     // { browserName: 'firefox' }
 | ||||||
|   ] |   ] | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										939
									
								
								system.config.js
									
									
									
									
									
								
							
							
						
						
									
										939
									
								
								system.config.js
									
									
									
									
									
								
							|  | @ -1,939 +0,0 @@ | ||||||
| System.config({ |  | ||||||
|   baseURL: "/", |  | ||||||
|   defaultJSExtensions: true, |  | ||||||
|   transpiler: "babel", |  | ||||||
|   babelOptions: { |  | ||||||
|     "optional": [ |  | ||||||
|       "runtime", |  | ||||||
|       "optimisation.modules.system", |  | ||||||
|       "es7.decorators", |  | ||||||
|       "es7.classProperties" |  | ||||||
|     ] |  | ||||||
|   }, |  | ||||||
|   paths: { |  | ||||||
|     "github:*": "jspm_packages/github/*", |  | ||||||
|     "npm:*": "jspm_packages/npm/*" |  | ||||||
|   }, |  | ||||||
| 
 |  | ||||||
|   map: { |  | ||||||
|     "@angular/common": "npm:@angular/common@2.0.0-rc.4", |  | ||||||
|     "@angular/compiler": "npm:@angular/compiler@2.0.0-rc.4", |  | ||||||
|     "@angular/core": "npm:@angular/core@2.0.0-rc.4", |  | ||||||
|     "@angular/platform-browser": "npm:@angular/platform-browser@2.0.0-rc.4", |  | ||||||
|     "@angular/platform-browser-dynamic": "npm:@angular/platform-browser-dynamic@2.0.0-rc.4", |  | ||||||
|     "babel": "npm:babel-core@5.8.34", |  | ||||||
|     "babel-runtime": "npm:babel-runtime@5.8.34", |  | ||||||
|     "clean-css": "npm:clean-css@3.4.17", |  | ||||||
|     "core-js": "npm:core-js@1.2.6", |  | ||||||
|     "css": "github:systemjs/plugin-css@0.1.18", |  | ||||||
|     "dropkickjs": "npm:dropkickjs@2.1.8", |  | ||||||
|     "es6-shim": "github:es-shims/es6-shim@0.33.6", |  | ||||||
|     "hint.css": "npm:hint.css@2.2.1", |  | ||||||
|     "json": "github:systemjs/plugin-json@0.1.2", |  | ||||||
|     "json-formatter-js": "npm:json-formatter-js@0.2.0", |  | ||||||
|     "json-pointer": "npm:json-pointer@0.3.0", |  | ||||||
|     "json-schema-ref-parser": "npm:json-schema-ref-parser@3.1.2", |  | ||||||
|     "openapi-sampler": "npm:openapi-sampler@0.3.0", |  | ||||||
|     "prismjs": "npm:prismjs@1.3.0", |  | ||||||
|     "remarkable": "npm:remarkable@1.6.2", |  | ||||||
|     "rxjs": "npm:rxjs@5.0.0-beta.6", |  | ||||||
|     "scrollparent": "npm:scrollparent@0.1.0", |  | ||||||
|     "slugify": "npm:slugify@0.1.1", |  | ||||||
|     "stream-http": "npm:stream-http@2.3.0", |  | ||||||
|     "systemjs/plugin-json": "github:systemjs/plugin-json@0.1.2", |  | ||||||
|     "url": "github:jspm/nodelibs-url@0.1.0", |  | ||||||
|     "zone.js": "npm:zone.js@0.6.12", |  | ||||||
|     "github:jspm/nodelibs-assert@0.1.0": { |  | ||||||
|       "assert": "npm:assert@1.4.1" |  | ||||||
|     }, |  | ||||||
|     "github:jspm/nodelibs-buffer@0.1.0": { |  | ||||||
|       "buffer": "npm:buffer@3.6.0" |  | ||||||
|     }, |  | ||||||
|     "github:jspm/nodelibs-constants@0.1.0": { |  | ||||||
|       "constants-browserify": "npm:constants-browserify@0.0.1" |  | ||||||
|     }, |  | ||||||
|     "github:jspm/nodelibs-crypto@0.1.0": { |  | ||||||
|       "crypto-browserify": "npm:crypto-browserify@3.11.0" |  | ||||||
|     }, |  | ||||||
|     "github:jspm/nodelibs-events@0.1.1": { |  | ||||||
|       "events": "npm:events@1.0.2" |  | ||||||
|     }, |  | ||||||
|     "github:jspm/nodelibs-http@1.7.1": { |  | ||||||
|       "Base64": "npm:Base64@0.2.1", |  | ||||||
|       "events": "github:jspm/nodelibs-events@0.1.1", |  | ||||||
|       "inherits": "npm:inherits@2.0.1", |  | ||||||
|       "stream": "github:jspm/nodelibs-stream@0.1.0", |  | ||||||
|       "url": "github:jspm/nodelibs-url@0.1.0", |  | ||||||
|       "util": "github:jspm/nodelibs-util@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "github:jspm/nodelibs-https@0.1.0": { |  | ||||||
|       "https-browserify": "npm:https-browserify@0.0.0" |  | ||||||
|     }, |  | ||||||
|     "github:jspm/nodelibs-net@0.1.2": { |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "crypto": "github:jspm/nodelibs-crypto@0.1.0", |  | ||||||
|       "http": "github:jspm/nodelibs-http@1.7.1", |  | ||||||
|       "net": "github:jspm/nodelibs-net@0.1.2", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2", |  | ||||||
|       "stream": "github:jspm/nodelibs-stream@0.1.0", |  | ||||||
|       "timers": "github:jspm/nodelibs-timers@0.1.0", |  | ||||||
|       "util": "github:jspm/nodelibs-util@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "github:jspm/nodelibs-os@0.1.0": { |  | ||||||
|       "os-browserify": "npm:os-browserify@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "github:jspm/nodelibs-path@0.1.0": { |  | ||||||
|       "path-browserify": "npm:path-browserify@0.0.0" |  | ||||||
|     }, |  | ||||||
|     "github:jspm/nodelibs-process@0.1.2": { |  | ||||||
|       "process": "npm:process@0.11.5" |  | ||||||
|     }, |  | ||||||
|     "github:jspm/nodelibs-punycode@0.1.0": { |  | ||||||
|       "punycode": "npm:punycode@1.3.2" |  | ||||||
|     }, |  | ||||||
|     "github:jspm/nodelibs-querystring@0.1.0": { |  | ||||||
|       "querystring": "npm:querystring@0.2.0" |  | ||||||
|     }, |  | ||||||
|     "github:jspm/nodelibs-stream@0.1.0": { |  | ||||||
|       "stream-browserify": "npm:stream-browserify@1.0.0" |  | ||||||
|     }, |  | ||||||
|     "github:jspm/nodelibs-string_decoder@0.1.0": { |  | ||||||
|       "string_decoder": "npm:string_decoder@0.10.31" |  | ||||||
|     }, |  | ||||||
|     "github:jspm/nodelibs-timers@0.1.0": { |  | ||||||
|       "timers-browserify": "npm:timers-browserify@1.4.2" |  | ||||||
|     }, |  | ||||||
|     "github:jspm/nodelibs-tty@0.1.0": { |  | ||||||
|       "tty-browserify": "npm:tty-browserify@0.0.0" |  | ||||||
|     }, |  | ||||||
|     "github:jspm/nodelibs-url@0.1.0": { |  | ||||||
|       "url": "npm:url@0.10.3" |  | ||||||
|     }, |  | ||||||
|     "github:jspm/nodelibs-util@0.1.0": { |  | ||||||
|       "util": "npm:util@0.10.3" |  | ||||||
|     }, |  | ||||||
|     "github:jspm/nodelibs-vm@0.1.0": { |  | ||||||
|       "vm-browserify": "npm:vm-browserify@0.0.4" |  | ||||||
|     }, |  | ||||||
|     "github:jspm/nodelibs-zlib@0.1.0": { |  | ||||||
|       "browserify-zlib": "npm:browserify-zlib@0.1.4" |  | ||||||
|     }, |  | ||||||
|     "npm:@angular/common@2.0.0-rc.4": { |  | ||||||
|       "@angular/core": "npm:@angular/core@2.0.0-rc.4", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:@angular/compiler@2.0.0-rc.4": { |  | ||||||
|       "@angular/core": "npm:@angular/core@2.0.0-rc.4", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:@angular/core@2.0.0-rc.4": { |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2", |  | ||||||
|       "rxjs": "npm:rxjs@5.0.0-beta.6", |  | ||||||
|       "zone.js": "npm:zone.js@0.6.12" |  | ||||||
|     }, |  | ||||||
|     "npm:@angular/platform-browser-dynamic@2.0.0-rc.4": { |  | ||||||
|       "@angular/common": "npm:@angular/common@2.0.0-rc.4", |  | ||||||
|       "@angular/compiler": "npm:@angular/compiler@2.0.0-rc.4", |  | ||||||
|       "@angular/core": "npm:@angular/core@2.0.0-rc.4", |  | ||||||
|       "@angular/platform-browser": "npm:@angular/platform-browser@2.0.0-rc.4", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:@angular/platform-browser@2.0.0-rc.4": { |  | ||||||
|       "@angular/common": "npm:@angular/common@2.0.0-rc.4", |  | ||||||
|       "@angular/compiler": "npm:@angular/compiler@2.0.0-rc.4", |  | ||||||
|       "@angular/core": "npm:@angular/core@2.0.0-rc.4", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:amdefine@1.0.0": { |  | ||||||
|       "fs": "github:jspm/nodelibs-fs@0.1.2", |  | ||||||
|       "module": "github:jspm/nodelibs-module@0.1.0", |  | ||||||
|       "path": "github:jspm/nodelibs-path@0.1.0", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:argparse@0.1.16": { |  | ||||||
|       "assert": "github:jspm/nodelibs-assert@0.1.0", |  | ||||||
|       "fs": "github:jspm/nodelibs-fs@0.1.2", |  | ||||||
|       "path": "github:jspm/nodelibs-path@0.1.0", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2", |  | ||||||
|       "underscore": "npm:underscore@1.7.0", |  | ||||||
|       "underscore.string": "npm:underscore.string@2.4.0", |  | ||||||
|       "util": "github:jspm/nodelibs-util@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:argparse@1.0.7": { |  | ||||||
|       "fs": "github:jspm/nodelibs-fs@0.1.2", |  | ||||||
|       "path": "github:jspm/nodelibs-path@0.1.0", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2", |  | ||||||
|       "sprintf-js": "npm:sprintf-js@1.0.3", |  | ||||||
|       "util": "github:jspm/nodelibs-util@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:asn1.js@4.6.2": { |  | ||||||
|       "assert": "github:jspm/nodelibs-assert@0.1.0", |  | ||||||
|       "bn.js": "npm:bn.js@4.11.4", |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "fs": "github:jspm/nodelibs-fs@0.1.2", |  | ||||||
|       "inherits": "npm:inherits@2.0.1", |  | ||||||
|       "minimalistic-assert": "npm:minimalistic-assert@1.0.0", |  | ||||||
|       "vm": "github:jspm/nodelibs-vm@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:asn1@0.2.3": { |  | ||||||
|       "assert": "github:jspm/nodelibs-assert@0.1.0", |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "sys": "github:jspm/nodelibs-util@0.1.0", |  | ||||||
|       "util": "github:jspm/nodelibs-util@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:assert-plus@0.2.0": { |  | ||||||
|       "assert": "github:jspm/nodelibs-assert@0.1.0", |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2", |  | ||||||
|       "stream": "github:jspm/nodelibs-stream@0.1.0", |  | ||||||
|       "util": "github:jspm/nodelibs-util@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:assert-plus@1.0.0": { |  | ||||||
|       "assert": "github:jspm/nodelibs-assert@0.1.0", |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2", |  | ||||||
|       "stream": "github:jspm/nodelibs-stream@0.1.0", |  | ||||||
|       "util": "github:jspm/nodelibs-util@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:assert@1.4.1": { |  | ||||||
|       "assert": "github:jspm/nodelibs-assert@0.1.0", |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2", |  | ||||||
|       "util": "npm:util@0.10.3" |  | ||||||
|     }, |  | ||||||
|     "npm:async@1.5.2": { |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:autolinker@0.15.3": { |  | ||||||
|       "child_process": "github:jspm/nodelibs-child_process@0.1.0", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:aws-sign2@0.6.0": { |  | ||||||
|       "crypto": "github:jspm/nodelibs-crypto@0.1.0", |  | ||||||
|       "url": "github:jspm/nodelibs-url@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:aws4@1.4.1": { |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "crypto": "github:jspm/nodelibs-crypto@0.1.0", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2", |  | ||||||
|       "querystring": "github:jspm/nodelibs-querystring@0.1.0", |  | ||||||
|       "url": "github:jspm/nodelibs-url@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:babel-runtime@5.8.34": { |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:bl@1.1.2": { |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "readable-stream": "npm:readable-stream@2.0.6", |  | ||||||
|       "util": "github:jspm/nodelibs-util@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:bn.js@4.11.4": { |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:boom@2.10.1": { |  | ||||||
|       "hoek": "npm:hoek@2.16.3", |  | ||||||
|       "http": "github:jspm/nodelibs-http@1.7.1" |  | ||||||
|     }, |  | ||||||
|     "npm:browserify-aes@1.0.6": { |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "buffer-xor": "npm:buffer-xor@1.0.3", |  | ||||||
|       "cipher-base": "npm:cipher-base@1.0.2", |  | ||||||
|       "create-hash": "npm:create-hash@1.1.2", |  | ||||||
|       "crypto": "github:jspm/nodelibs-crypto@0.1.0", |  | ||||||
|       "evp_bytestokey": "npm:evp_bytestokey@1.0.0", |  | ||||||
|       "fs": "github:jspm/nodelibs-fs@0.1.2", |  | ||||||
|       "inherits": "npm:inherits@2.0.1", |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:browserify-cipher@1.0.0": { |  | ||||||
|       "browserify-aes": "npm:browserify-aes@1.0.6", |  | ||||||
|       "browserify-des": "npm:browserify-des@1.0.0", |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "crypto": "github:jspm/nodelibs-crypto@0.1.0", |  | ||||||
|       "evp_bytestokey": "npm:evp_bytestokey@1.0.0" |  | ||||||
|     }, |  | ||||||
|     "npm:browserify-des@1.0.0": { |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "cipher-base": "npm:cipher-base@1.0.2", |  | ||||||
|       "crypto": "github:jspm/nodelibs-crypto@0.1.0", |  | ||||||
|       "des.js": "npm:des.js@1.0.0", |  | ||||||
|       "inherits": "npm:inherits@2.0.1", |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:browserify-rsa@4.0.1": { |  | ||||||
|       "bn.js": "npm:bn.js@4.11.4", |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "constants": "github:jspm/nodelibs-constants@0.1.0", |  | ||||||
|       "crypto": "github:jspm/nodelibs-crypto@0.1.0", |  | ||||||
|       "randombytes": "npm:randombytes@2.0.3", |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:browserify-sign@4.0.0": { |  | ||||||
|       "bn.js": "npm:bn.js@4.11.4", |  | ||||||
|       "browserify-rsa": "npm:browserify-rsa@4.0.1", |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "create-hash": "npm:create-hash@1.1.2", |  | ||||||
|       "create-hmac": "npm:create-hmac@1.1.4", |  | ||||||
|       "crypto": "github:jspm/nodelibs-crypto@0.1.0", |  | ||||||
|       "elliptic": "npm:elliptic@6.3.1", |  | ||||||
|       "inherits": "npm:inherits@2.0.1", |  | ||||||
|       "parse-asn1": "npm:parse-asn1@5.0.0", |  | ||||||
|       "stream": "github:jspm/nodelibs-stream@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:browserify-zlib@0.1.4": { |  | ||||||
|       "assert": "github:jspm/nodelibs-assert@0.1.0", |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "pako": "npm:pako@0.2.8", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2", |  | ||||||
|       "readable-stream": "npm:readable-stream@2.0.6", |  | ||||||
|       "util": "github:jspm/nodelibs-util@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:buffer-xor@1.0.3": { |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:buffer@3.6.0": { |  | ||||||
|       "base64-js": "npm:base64-js@0.0.8", |  | ||||||
|       "child_process": "github:jspm/nodelibs-child_process@0.1.0", |  | ||||||
|       "fs": "github:jspm/nodelibs-fs@0.1.2", |  | ||||||
|       "ieee754": "npm:ieee754@1.1.6", |  | ||||||
|       "isarray": "npm:isarray@1.0.0", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:builtin-status-codes@2.0.0": { |  | ||||||
|       "fs": "github:jspm/nodelibs-fs@0.1.2", |  | ||||||
|       "http": "github:jspm/nodelibs-http@1.7.1", |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:call-me-maybe@1.0.1": { |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:caseless@0.11.0": { |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:chalk@1.1.3": { |  | ||||||
|       "ansi-styles": "npm:ansi-styles@2.2.1", |  | ||||||
|       "escape-string-regexp": "npm:escape-string-regexp@1.0.5", |  | ||||||
|       "has-ansi": "npm:has-ansi@2.0.0", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2", |  | ||||||
|       "strip-ansi": "npm:strip-ansi@3.0.1", |  | ||||||
|       "supports-color": "npm:supports-color@2.0.0" |  | ||||||
|     }, |  | ||||||
|     "npm:cipher-base@1.0.2": { |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "inherits": "npm:inherits@2.0.1", |  | ||||||
|       "stream": "github:jspm/nodelibs-stream@0.1.0", |  | ||||||
|       "string_decoder": "github:jspm/nodelibs-string_decoder@0.1.0", |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:clean-css@3.4.17": { |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "commander": "npm:commander@2.8.1", |  | ||||||
|       "fs": "github:jspm/nodelibs-fs@0.1.2", |  | ||||||
|       "http": "github:jspm/nodelibs-http@1.7.1", |  | ||||||
|       "https": "github:jspm/nodelibs-https@0.1.0", |  | ||||||
|       "os": "github:jspm/nodelibs-os@0.1.0", |  | ||||||
|       "path": "github:jspm/nodelibs-path@0.1.0", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2", |  | ||||||
|       "source-map": "npm:source-map@0.4.4", |  | ||||||
|       "url": "github:jspm/nodelibs-url@0.1.0", |  | ||||||
|       "util": "github:jspm/nodelibs-util@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:combined-stream@1.0.5": { |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "delayed-stream": "npm:delayed-stream@1.0.0", |  | ||||||
|       "stream": "github:jspm/nodelibs-stream@0.1.0", |  | ||||||
|       "util": "github:jspm/nodelibs-util@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:commander@2.8.1": { |  | ||||||
|       "child_process": "github:jspm/nodelibs-child_process@0.1.0", |  | ||||||
|       "events": "github:jspm/nodelibs-events@0.1.1", |  | ||||||
|       "fs": "github:jspm/nodelibs-fs@0.1.2", |  | ||||||
|       "graceful-readlink": "npm:graceful-readlink@1.0.1", |  | ||||||
|       "path": "github:jspm/nodelibs-path@0.1.0", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:commander@2.9.0": { |  | ||||||
|       "child_process": "github:jspm/nodelibs-child_process@0.1.0", |  | ||||||
|       "events": "github:jspm/nodelibs-events@0.1.1", |  | ||||||
|       "fs": "github:jspm/nodelibs-fs@0.1.2", |  | ||||||
|       "graceful-readlink": "npm:graceful-readlink@1.0.1", |  | ||||||
|       "path": "github:jspm/nodelibs-path@0.1.0", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:constants-browserify@0.0.1": { |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:core-js@1.2.6": { |  | ||||||
|       "fs": "github:jspm/nodelibs-fs@0.1.2", |  | ||||||
|       "path": "github:jspm/nodelibs-path@0.1.0", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2", |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:core-util-is@1.0.2": { |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:create-ecdh@4.0.0": { |  | ||||||
|       "bn.js": "npm:bn.js@4.11.4", |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "crypto": "github:jspm/nodelibs-crypto@0.1.0", |  | ||||||
|       "elliptic": "npm:elliptic@6.3.1" |  | ||||||
|     }, |  | ||||||
|     "npm:create-hash@1.1.2": { |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "cipher-base": "npm:cipher-base@1.0.2", |  | ||||||
|       "crypto": "github:jspm/nodelibs-crypto@0.1.0", |  | ||||||
|       "fs": "github:jspm/nodelibs-fs@0.1.2", |  | ||||||
|       "inherits": "npm:inherits@2.0.1", |  | ||||||
|       "ripemd160": "npm:ripemd160@1.0.1", |  | ||||||
|       "sha.js": "npm:sha.js@2.4.5" |  | ||||||
|     }, |  | ||||||
|     "npm:create-hmac@1.1.4": { |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "create-hash": "npm:create-hash@1.1.2", |  | ||||||
|       "crypto": "github:jspm/nodelibs-crypto@0.1.0", |  | ||||||
|       "inherits": "npm:inherits@2.0.1", |  | ||||||
|       "stream": "github:jspm/nodelibs-stream@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:cryptiles@2.0.5": { |  | ||||||
|       "boom": "npm:boom@2.10.1", |  | ||||||
|       "crypto": "github:jspm/nodelibs-crypto@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:crypto-browserify@3.11.0": { |  | ||||||
|       "browserify-cipher": "npm:browserify-cipher@1.0.0", |  | ||||||
|       "browserify-sign": "npm:browserify-sign@4.0.0", |  | ||||||
|       "create-ecdh": "npm:create-ecdh@4.0.0", |  | ||||||
|       "create-hash": "npm:create-hash@1.1.2", |  | ||||||
|       "create-hmac": "npm:create-hmac@1.1.4", |  | ||||||
|       "diffie-hellman": "npm:diffie-hellman@5.0.2", |  | ||||||
|       "inherits": "npm:inherits@2.0.1", |  | ||||||
|       "pbkdf2": "npm:pbkdf2@3.0.4", |  | ||||||
|       "public-encrypt": "npm:public-encrypt@4.0.0", |  | ||||||
|       "randombytes": "npm:randombytes@2.0.3", |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:dashdash@1.14.0": { |  | ||||||
|       "assert-plus": "npm:assert-plus@1.0.0", |  | ||||||
|       "fs": "github:jspm/nodelibs-fs@0.1.2", |  | ||||||
|       "path": "github:jspm/nodelibs-path@0.1.0", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2", |  | ||||||
|       "util": "github:jspm/nodelibs-util@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:debug@2.2.0": { |  | ||||||
|       "ms": "npm:ms@0.7.1" |  | ||||||
|     }, |  | ||||||
|     "npm:delayed-stream@1.0.0": { |  | ||||||
|       "stream": "github:jspm/nodelibs-stream@0.1.0", |  | ||||||
|       "util": "github:jspm/nodelibs-util@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:des.js@1.0.0": { |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "inherits": "npm:inherits@2.0.1", |  | ||||||
|       "minimalistic-assert": "npm:minimalistic-assert@1.0.0" |  | ||||||
|     }, |  | ||||||
|     "npm:diffie-hellman@5.0.2": { |  | ||||||
|       "bn.js": "npm:bn.js@4.11.4", |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "crypto": "github:jspm/nodelibs-crypto@0.1.0", |  | ||||||
|       "miller-rabin": "npm:miller-rabin@4.0.0", |  | ||||||
|       "randombytes": "npm:randombytes@2.0.3", |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:dropkickjs@2.1.8": { |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:ecc-jsbn@0.1.1": { |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "crypto": "github:jspm/nodelibs-crypto@0.1.0", |  | ||||||
|       "jsbn": "npm:jsbn@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:elliptic@6.3.1": { |  | ||||||
|       "bn.js": "npm:bn.js@4.11.4", |  | ||||||
|       "brorand": "npm:brorand@1.0.5", |  | ||||||
|       "hash.js": "npm:hash.js@1.0.3", |  | ||||||
|       "inherits": "npm:inherits@2.0.1", |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:es6-promise@3.2.1": { |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:evp_bytestokey@1.0.0": { |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "create-hash": "npm:create-hash@1.1.2", |  | ||||||
|       "crypto": "github:jspm/nodelibs-crypto@0.1.0", |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:extsprintf@1.0.2": { |  | ||||||
|       "assert": "github:jspm/nodelibs-assert@0.1.0", |  | ||||||
|       "util": "github:jspm/nodelibs-util@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:forever-agent@0.6.1": { |  | ||||||
|       "http": "github:jspm/nodelibs-http@1.7.1", |  | ||||||
|       "https": "github:jspm/nodelibs-https@0.1.0", |  | ||||||
|       "net": "github:jspm/nodelibs-net@0.1.2", |  | ||||||
|       "tls": "github:jspm/nodelibs-tls@0.1.0", |  | ||||||
|       "util": "github:jspm/nodelibs-util@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:form-data@1.0.0-rc4": { |  | ||||||
|       "async": "npm:async@1.5.2", |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "combined-stream": "npm:combined-stream@1.0.5", |  | ||||||
|       "fs": "github:jspm/nodelibs-fs@0.1.2", |  | ||||||
|       "http": "github:jspm/nodelibs-http@1.7.1", |  | ||||||
|       "https": "github:jspm/nodelibs-https@0.1.0", |  | ||||||
|       "mime-types": "npm:mime-types@2.1.11", |  | ||||||
|       "path": "github:jspm/nodelibs-path@0.1.0", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2", |  | ||||||
|       "url": "github:jspm/nodelibs-url@0.1.0", |  | ||||||
|       "util": "github:jspm/nodelibs-util@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:generate-function@2.0.0": { |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2", |  | ||||||
|       "util": "github:jspm/nodelibs-util@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:generate-object-property@1.2.0": { |  | ||||||
|       "is-property": "npm:is-property@1.0.2", |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:getpass@0.1.6": { |  | ||||||
|       "assert-plus": "npm:assert-plus@1.0.0", |  | ||||||
|       "fs": "github:jspm/nodelibs-fs@0.1.2", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2", |  | ||||||
|       "tty": "github:jspm/nodelibs-tty@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:graceful-readlink@1.0.1": { |  | ||||||
|       "fs": "github:jspm/nodelibs-fs@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:har-validator@2.0.6": { |  | ||||||
|       "chalk": "npm:chalk@1.1.3", |  | ||||||
|       "commander": "npm:commander@2.9.0", |  | ||||||
|       "is-my-json-valid": "npm:is-my-json-valid@2.13.1", |  | ||||||
|       "pinkie-promise": "npm:pinkie-promise@2.0.1", |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:has-ansi@2.0.0": { |  | ||||||
|       "ansi-regex": "npm:ansi-regex@2.0.0" |  | ||||||
|     }, |  | ||||||
|     "npm:hash.js@1.0.3": { |  | ||||||
|       "inherits": "npm:inherits@2.0.1" |  | ||||||
|     }, |  | ||||||
|     "npm:hawk@3.1.3": { |  | ||||||
|       "boom": "npm:boom@2.10.1", |  | ||||||
|       "cryptiles": "npm:cryptiles@2.0.5", |  | ||||||
|       "crypto": "github:jspm/nodelibs-crypto@0.1.0", |  | ||||||
|       "hoek": "npm:hoek@2.16.3", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2", |  | ||||||
|       "sntp": "npm:sntp@1.0.9", |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2", |  | ||||||
|       "url": "github:jspm/nodelibs-url@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:hoek@2.16.3": { |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "crypto": "github:jspm/nodelibs-crypto@0.1.0", |  | ||||||
|       "path": "github:jspm/nodelibs-path@0.1.0", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2", |  | ||||||
|       "util": "github:jspm/nodelibs-util@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:http-signature@1.1.1": { |  | ||||||
|       "assert-plus": "npm:assert-plus@0.2.0", |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "crypto": "github:jspm/nodelibs-crypto@0.1.0", |  | ||||||
|       "http": "github:jspm/nodelibs-http@1.7.1", |  | ||||||
|       "jsprim": "npm:jsprim@1.2.2", |  | ||||||
|       "sshpk": "npm:sshpk@1.8.3", |  | ||||||
|       "util": "github:jspm/nodelibs-util@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:https-browserify@0.0.0": { |  | ||||||
|       "http": "github:jspm/nodelibs-http@1.7.1" |  | ||||||
|     }, |  | ||||||
|     "npm:inherits@2.0.1": { |  | ||||||
|       "util": "github:jspm/nodelibs-util@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:is-my-json-valid@2.13.1": { |  | ||||||
|       "fs": "github:jspm/nodelibs-fs@0.1.2", |  | ||||||
|       "generate-function": "npm:generate-function@2.0.0", |  | ||||||
|       "generate-object-property": "npm:generate-object-property@1.2.0", |  | ||||||
|       "jsonpointer": "npm:jsonpointer@2.0.0", |  | ||||||
|       "path": "github:jspm/nodelibs-path@0.1.0", |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2", |  | ||||||
|       "xtend": "npm:xtend@4.0.1" |  | ||||||
|     }, |  | ||||||
|     "npm:is-typedarray@1.0.0": { |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:isarray@1.0.0": { |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:isstream@0.1.2": { |  | ||||||
|       "events": "github:jspm/nodelibs-events@0.1.1", |  | ||||||
|       "stream": "github:jspm/nodelibs-stream@0.1.0", |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2", |  | ||||||
|       "util": "github:jspm/nodelibs-util@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:jodid25519@1.0.2": { |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "crypto": "github:jspm/nodelibs-crypto@0.1.0", |  | ||||||
|       "jsbn": "npm:jsbn@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:js-yaml@3.6.1": { |  | ||||||
|       "argparse": "npm:argparse@1.0.7", |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "esprima": "npm:esprima@2.7.2", |  | ||||||
|       "fs": "github:jspm/nodelibs-fs@0.1.2", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2", |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:jsbn@0.1.0": { |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:json-formatter-js@0.2.0": { |  | ||||||
|       "fs": "github:jspm/nodelibs-fs@0.1.2", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2", |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:json-pointer@0.3.0": { |  | ||||||
|       "foreach": "npm:foreach@2.0.5" |  | ||||||
|     }, |  | ||||||
|     "npm:json-schema-ref-parser@3.1.2": { |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "call-me-maybe": "npm:call-me-maybe@1.0.1", |  | ||||||
|       "debug": "npm:debug@2.2.0", |  | ||||||
|       "es6-promise": "npm:es6-promise@3.2.1", |  | ||||||
|       "events": "github:jspm/nodelibs-events@0.1.1", |  | ||||||
|       "fs": "github:jspm/nodelibs-fs@0.1.2", |  | ||||||
|       "js-yaml": "npm:js-yaml@3.6.1", |  | ||||||
|       "ono": "npm:ono@2.2.1", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2", |  | ||||||
|       "punycode": "github:jspm/nodelibs-punycode@0.1.0", |  | ||||||
|       "querystring": "github:jspm/nodelibs-querystring@0.1.0", |  | ||||||
|       "stream": "github:jspm/nodelibs-stream@0.1.0", |  | ||||||
|       "string_decoder": "github:jspm/nodelibs-string_decoder@0.1.0", |  | ||||||
|       "url": "github:jspm/nodelibs-url@0.1.0", |  | ||||||
|       "util": "github:jspm/nodelibs-util@0.1.0", |  | ||||||
|       "z-schema": "npm:z-schema@3.17.0" |  | ||||||
|     }, |  | ||||||
|     "npm:jsonpointer@2.0.0": { |  | ||||||
|       "assert": "github:jspm/nodelibs-assert@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:jsprim@1.2.2": { |  | ||||||
|       "assert": "github:jspm/nodelibs-assert@0.1.0", |  | ||||||
|       "extsprintf": "npm:extsprintf@1.0.2", |  | ||||||
|       "json-schema": "npm:json-schema@0.2.2", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2", |  | ||||||
|       "util": "github:jspm/nodelibs-util@0.1.0", |  | ||||||
|       "verror": "npm:verror@1.3.6" |  | ||||||
|     }, |  | ||||||
|     "npm:lodash._basetostring@4.12.0": { |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:lodash._stringtopath@4.8.0": { |  | ||||||
|       "lodash._basetostring": "npm:lodash._basetostring@4.12.0", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:lodash.get@4.3.0": { |  | ||||||
|       "lodash._stringtopath": "npm:lodash._stringtopath@4.8.0" |  | ||||||
|     }, |  | ||||||
|     "npm:miller-rabin@4.0.0": { |  | ||||||
|       "bn.js": "npm:bn.js@4.11.4", |  | ||||||
|       "brorand": "npm:brorand@1.0.5" |  | ||||||
|     }, |  | ||||||
|     "npm:mime-db@1.23.0": { |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:mime-types@2.1.11": { |  | ||||||
|       "mime-db": "npm:mime-db@1.23.0", |  | ||||||
|       "path": "github:jspm/nodelibs-path@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:node-uuid@1.4.7": { |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "crypto": "github:jspm/nodelibs-crypto@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:oauth-sign@0.8.2": { |  | ||||||
|       "crypto": "github:jspm/nodelibs-crypto@0.1.0", |  | ||||||
|       "querystring": "github:jspm/nodelibs-querystring@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:ono@2.2.1": { |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2", |  | ||||||
|       "util": "github:jspm/nodelibs-util@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:os-browserify@0.1.2": { |  | ||||||
|       "os": "github:jspm/nodelibs-os@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:pako@0.2.8": { |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:parse-asn1@5.0.0": { |  | ||||||
|       "asn1.js": "npm:asn1.js@4.6.2", |  | ||||||
|       "browserify-aes": "npm:browserify-aes@1.0.6", |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "create-hash": "npm:create-hash@1.1.2", |  | ||||||
|       "evp_bytestokey": "npm:evp_bytestokey@1.0.0", |  | ||||||
|       "pbkdf2": "npm:pbkdf2@3.0.4", |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:path-browserify@0.0.0": { |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:pbkdf2@3.0.4": { |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "child_process": "github:jspm/nodelibs-child_process@0.1.0", |  | ||||||
|       "create-hmac": "npm:create-hmac@1.1.4", |  | ||||||
|       "crypto": "github:jspm/nodelibs-crypto@0.1.0", |  | ||||||
|       "path": "github:jspm/nodelibs-path@0.1.0", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2", |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:pinkie-promise@2.0.1": { |  | ||||||
|       "pinkie": "npm:pinkie@2.0.4" |  | ||||||
|     }, |  | ||||||
|     "npm:prismjs@1.3.0": { |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "fs": "github:jspm/nodelibs-fs@0.1.2", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:process-nextick-args@1.0.6": { |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2", |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:process-nextick-args@1.0.7": { |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2", |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:process@0.11.5": { |  | ||||||
|       "assert": "github:jspm/nodelibs-assert@0.1.0", |  | ||||||
|       "fs": "github:jspm/nodelibs-fs@0.1.2", |  | ||||||
|       "vm": "github:jspm/nodelibs-vm@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:public-encrypt@4.0.0": { |  | ||||||
|       "bn.js": "npm:bn.js@4.11.4", |  | ||||||
|       "browserify-rsa": "npm:browserify-rsa@4.0.1", |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "create-hash": "npm:create-hash@1.1.2", |  | ||||||
|       "crypto": "github:jspm/nodelibs-crypto@0.1.0", |  | ||||||
|       "parse-asn1": "npm:parse-asn1@5.0.0", |  | ||||||
|       "randombytes": "npm:randombytes@2.0.3" |  | ||||||
|     }, |  | ||||||
|     "npm:punycode@1.3.2": { |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:randombytes@2.0.3": { |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "crypto": "github:jspm/nodelibs-crypto@0.1.0", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2", |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:readable-stream@1.1.14": { |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "core-util-is": "npm:core-util-is@1.0.2", |  | ||||||
|       "events": "github:jspm/nodelibs-events@0.1.1", |  | ||||||
|       "inherits": "npm:inherits@2.0.1", |  | ||||||
|       "isarray": "npm:isarray@0.0.1", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2", |  | ||||||
|       "stream-browserify": "npm:stream-browserify@1.0.0", |  | ||||||
|       "string_decoder": "npm:string_decoder@0.10.31" |  | ||||||
|     }, |  | ||||||
|     "npm:readable-stream@2.0.6": { |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "core-util-is": "npm:core-util-is@1.0.2", |  | ||||||
|       "events": "github:jspm/nodelibs-events@0.1.1", |  | ||||||
|       "inherits": "npm:inherits@2.0.1", |  | ||||||
|       "isarray": "npm:isarray@1.0.0", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2", |  | ||||||
|       "process-nextick-args": "npm:process-nextick-args@1.0.7", |  | ||||||
|       "string_decoder": "npm:string_decoder@0.10.31", |  | ||||||
|       "util-deprecate": "npm:util-deprecate@1.0.2" |  | ||||||
|     }, |  | ||||||
|     "npm:readable-stream@2.1.2": { |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "core-util-is": "npm:core-util-is@1.0.2", |  | ||||||
|       "events": "github:jspm/nodelibs-events@0.1.1", |  | ||||||
|       "inherits": "npm:inherits@2.0.1", |  | ||||||
|       "isarray": "npm:isarray@1.0.0", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2", |  | ||||||
|       "process-nextick-args": "npm:process-nextick-args@1.0.6", |  | ||||||
|       "string_decoder": "npm:string_decoder@0.10.31", |  | ||||||
|       "util-deprecate": "npm:util-deprecate@1.0.2" |  | ||||||
|     }, |  | ||||||
|     "npm:remarkable@1.6.2": { |  | ||||||
|       "argparse": "npm:argparse@0.1.16", |  | ||||||
|       "autolinker": "npm:autolinker@0.15.3", |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "fs": "github:jspm/nodelibs-fs@0.1.2", |  | ||||||
|       "path": "github:jspm/nodelibs-path@0.1.0", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2", |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2", |  | ||||||
|       "util": "github:jspm/nodelibs-util@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:request@2.72.0": { |  | ||||||
|       "aws-sign2": "npm:aws-sign2@0.6.0", |  | ||||||
|       "aws4": "npm:aws4@1.4.1", |  | ||||||
|       "bl": "npm:bl@1.1.2", |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "caseless": "npm:caseless@0.11.0", |  | ||||||
|       "combined-stream": "npm:combined-stream@1.0.5", |  | ||||||
|       "crypto": "github:jspm/nodelibs-crypto@0.1.0", |  | ||||||
|       "extend": "npm:extend@3.0.0", |  | ||||||
|       "forever-agent": "npm:forever-agent@0.6.1", |  | ||||||
|       "form-data": "npm:form-data@1.0.0-rc4", |  | ||||||
|       "fs": "github:jspm/nodelibs-fs@0.1.2", |  | ||||||
|       "har-validator": "npm:har-validator@2.0.6", |  | ||||||
|       "hawk": "npm:hawk@3.1.3", |  | ||||||
|       "http": "github:jspm/nodelibs-http@1.7.1", |  | ||||||
|       "http-signature": "npm:http-signature@1.1.1", |  | ||||||
|       "https": "github:jspm/nodelibs-https@0.1.0", |  | ||||||
|       "is-typedarray": "npm:is-typedarray@1.0.0", |  | ||||||
|       "isstream": "npm:isstream@0.1.2", |  | ||||||
|       "json-stringify-safe": "npm:json-stringify-safe@5.0.1", |  | ||||||
|       "mime-types": "npm:mime-types@2.1.11", |  | ||||||
|       "node-uuid": "npm:node-uuid@1.4.7", |  | ||||||
|       "oauth-sign": "npm:oauth-sign@0.8.2", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2", |  | ||||||
|       "qs": "npm:qs@6.1.0", |  | ||||||
|       "querystring": "github:jspm/nodelibs-querystring@0.1.0", |  | ||||||
|       "stream": "github:jspm/nodelibs-stream@0.1.0", |  | ||||||
|       "stringstream": "npm:stringstream@0.0.5", |  | ||||||
|       "tough-cookie": "npm:tough-cookie@2.2.2", |  | ||||||
|       "tunnel-agent": "npm:tunnel-agent@0.4.3", |  | ||||||
|       "url": "github:jspm/nodelibs-url@0.1.0", |  | ||||||
|       "util": "github:jspm/nodelibs-util@0.1.0", |  | ||||||
|       "zlib": "github:jspm/nodelibs-zlib@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:ripemd160@1.0.1": { |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:rxjs@5.0.0-beta.6": { |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:sha.js@2.4.5": { |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "fs": "github:jspm/nodelibs-fs@0.1.2", |  | ||||||
|       "inherits": "npm:inherits@2.0.1", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:sntp@1.0.9": { |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "dgram": "github:jspm/nodelibs-dgram@0.1.0", |  | ||||||
|       "dns": "github:jspm/nodelibs-dns@0.1.0", |  | ||||||
|       "hoek": "npm:hoek@2.16.3", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:source-map@0.4.4": { |  | ||||||
|       "amdefine": "npm:amdefine@1.0.0", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:sshpk@1.8.3": { |  | ||||||
|       "asn1": "npm:asn1@0.2.3", |  | ||||||
|       "assert-plus": "npm:assert-plus@1.0.0", |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "crypto": "github:jspm/nodelibs-crypto@0.1.0", |  | ||||||
|       "dashdash": "npm:dashdash@1.14.0", |  | ||||||
|       "ecc-jsbn": "npm:ecc-jsbn@0.1.1", |  | ||||||
|       "getpass": "npm:getpass@0.1.6", |  | ||||||
|       "jodid25519": "npm:jodid25519@1.0.2", |  | ||||||
|       "jsbn": "npm:jsbn@0.1.0", |  | ||||||
|       "stream": "github:jspm/nodelibs-stream@0.1.0", |  | ||||||
|       "tweetnacl": "npm:tweetnacl@0.13.3", |  | ||||||
|       "util": "github:jspm/nodelibs-util@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:stream-browserify@1.0.0": { |  | ||||||
|       "events": "github:jspm/nodelibs-events@0.1.1", |  | ||||||
|       "inherits": "npm:inherits@2.0.1", |  | ||||||
|       "readable-stream": "npm:readable-stream@1.1.14" |  | ||||||
|     }, |  | ||||||
|     "npm:stream-http@2.3.0": { |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "builtin-status-codes": "npm:builtin-status-codes@2.0.0", |  | ||||||
|       "inherits": "npm:inherits@2.0.1", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2", |  | ||||||
|       "readable-stream": "npm:readable-stream@2.1.2", |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2", |  | ||||||
|       "to-arraybuffer": "npm:to-arraybuffer@1.0.1", |  | ||||||
|       "url": "github:jspm/nodelibs-url@0.1.0", |  | ||||||
|       "xtend": "npm:xtend@4.0.1" |  | ||||||
|     }, |  | ||||||
|     "npm:string_decoder@0.10.31": { |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:stringstream@0.0.5": { |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "fs": "github:jspm/nodelibs-fs@0.1.2", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2", |  | ||||||
|       "stream": "github:jspm/nodelibs-stream@0.1.0", |  | ||||||
|       "string_decoder": "github:jspm/nodelibs-string_decoder@0.1.0", |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2", |  | ||||||
|       "util": "github:jspm/nodelibs-util@0.1.0", |  | ||||||
|       "zlib": "github:jspm/nodelibs-zlib@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:strip-ansi@3.0.1": { |  | ||||||
|       "ansi-regex": "npm:ansi-regex@2.0.0" |  | ||||||
|     }, |  | ||||||
|     "npm:supports-color@2.0.0": { |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:timers-browserify@1.4.2": { |  | ||||||
|       "process": "npm:process@0.11.5" |  | ||||||
|     }, |  | ||||||
|     "npm:to-arraybuffer@1.0.1": { |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:tough-cookie@2.2.2": { |  | ||||||
|       "net": "github:jspm/nodelibs-net@0.1.2", |  | ||||||
|       "punycode": "github:jspm/nodelibs-punycode@0.1.0", |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2", |  | ||||||
|       "url": "github:jspm/nodelibs-url@0.1.0", |  | ||||||
|       "util": "github:jspm/nodelibs-util@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:tunnel-agent@0.4.3": { |  | ||||||
|       "assert": "github:jspm/nodelibs-assert@0.1.0", |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "events": "github:jspm/nodelibs-events@0.1.1", |  | ||||||
|       "http": "github:jspm/nodelibs-http@1.7.1", |  | ||||||
|       "https": "github:jspm/nodelibs-https@0.1.0", |  | ||||||
|       "net": "github:jspm/nodelibs-net@0.1.2", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2", |  | ||||||
|       "tls": "github:jspm/nodelibs-tls@0.1.0", |  | ||||||
|       "util": "github:jspm/nodelibs-util@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:url@0.10.3": { |  | ||||||
|       "assert": "github:jspm/nodelibs-assert@0.1.0", |  | ||||||
|       "punycode": "npm:punycode@1.3.2", |  | ||||||
|       "querystring": "npm:querystring@0.2.0", |  | ||||||
|       "util": "github:jspm/nodelibs-util@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:util-deprecate@1.0.2": { |  | ||||||
|       "util": "github:jspm/nodelibs-util@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:util@0.10.3": { |  | ||||||
|       "inherits": "npm:inherits@2.0.1", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:verror@1.3.6": { |  | ||||||
|       "assert": "github:jspm/nodelibs-assert@0.1.0", |  | ||||||
|       "extsprintf": "npm:extsprintf@1.0.2", |  | ||||||
|       "fs": "github:jspm/nodelibs-fs@0.1.2", |  | ||||||
|       "util": "github:jspm/nodelibs-util@0.1.0" |  | ||||||
|     }, |  | ||||||
|     "npm:vm-browserify@0.0.4": { |  | ||||||
|       "indexof": "npm:indexof@0.0.1" |  | ||||||
|     }, |  | ||||||
|     "npm:xtend@4.0.1": { |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2" |  | ||||||
|     }, |  | ||||||
|     "npm:z-schema@3.17.0": { |  | ||||||
|       "commander": "npm:commander@2.9.0", |  | ||||||
|       "lodash.get": "npm:lodash.get@4.3.0", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2", |  | ||||||
|       "request": "npm:request@2.72.0", |  | ||||||
|       "systemjs-json": "github:systemjs/plugin-json@0.1.2", |  | ||||||
|       "validator": "npm:validator@5.4.0" |  | ||||||
|     }, |  | ||||||
|     "npm:zone.js@0.6.12": { |  | ||||||
|       "buffer": "github:jspm/nodelibs-buffer@0.1.0", |  | ||||||
|       "process": "github:jspm/nodelibs-process@0.1.2" |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| }); |  | ||||||
|  | @ -1,12 +0,0 @@ | ||||||
| { |  | ||||||
|   "parser": "babel-eslint", |  | ||||||
|   "extends": "eslint:recommended", |  | ||||||
|   "env": { |  | ||||||
|     "node": true, |  | ||||||
|     "jasmine": true, |  | ||||||
|     "protractor": true |  | ||||||
|   }, |  | ||||||
|   "rules": { |  | ||||||
|     "no-console": 0, |  | ||||||
|   } |  | ||||||
| } |  | ||||||
							
								
								
									
										1
									
								
								tests/e2e/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								tests/e2e/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | ||||||
|  | redoc.min.js | ||||||
|  | @ -48,6 +48,11 @@ function verifyNoBrowserErrors() { | ||||||
|       if (message.indexOf('browser-sync') > -1) return false; |       if (message.indexOf('browser-sync') > -1) return false; | ||||||
|       // skip firefox-specific warning
 |       // skip firefox-specific warning
 | ||||||
|       if (message.indexOf('mutating the [[Prototype]]') > -1) return false; |       if (message.indexOf('mutating the [[Prototype]]') > -1) return false; | ||||||
|  |       if (message.match(/^Unknown property.*Declaration dropped/)) return false; | ||||||
|  |       if (message.match(/^Error in parsing value for.*Declaration dropped/)) return false; | ||||||
|  |       if (message.indexOf('The character encoding of the HTML document was not declared') > -1) return false; | ||||||
|  |       if (message.match(/addons.manager\s+DEBUG/)) return false; | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|       if (logEntry.level.value >= LogLevel.INFO) { |       if (logEntry.level.value >= LogLevel.INFO) { | ||||||
|         if (message.length > MAX_ERROR_MESSAGE_SYMBOLS) { |         if (message.length > MAX_ERROR_MESSAGE_SYMBOLS) { | ||||||
|  |  | ||||||
|  | @ -10,7 +10,7 @@ | ||||||
|     </redoc> |     </redoc> | ||||||
| 
 | 
 | ||||||
|     <!-- ReDoc built file with all dependencies included --> |     <!-- ReDoc built file with all dependencies included --> | ||||||
|     <script src="dist/redoc.min.js"> </script> |     <script src="redoc.min.js"> </script> | ||||||
|     <script> |     <script> | ||||||
|       window.redocError = null; |       window.redocError = null; | ||||||
|       /* init redoc */ |       /* init redoc */ | ||||||
|  |  | ||||||
|  | @ -1,25 +0,0 @@ | ||||||
| 'use strict'; |  | ||||||
| 
 |  | ||||||
| import {setBaseTestProviders} from '@angular/core/testing'; |  | ||||||
| import { BrowserDomAdapter } from '@angular/platform-browser/src/browser/browser_adapter'; |  | ||||||
| import { OptionsService, RedocEventsService, Hash, ScrollService, MenuService } from '../lib/services/index'; |  | ||||||
| import { SpecManager } from '../lib/utils/SpecManager'; |  | ||||||
| import { provide } from '@angular/core'; |  | ||||||
| 
 |  | ||||||
| import { |  | ||||||
|   TEST_BROWSER_DYNAMIC_PLATFORM_PROVIDERS, |  | ||||||
|   TEST_BROWSER_DYNAMIC_APPLICATION_PROVIDERS |  | ||||||
| } from '@angular/platform-browser-dynamic/testing'; |  | ||||||
| 
 |  | ||||||
| setBaseTestProviders( |  | ||||||
|   [ |  | ||||||
|     TEST_BROWSER_DYNAMIC_PLATFORM_PROVIDERS, |  | ||||||
|     provide(BrowserDomAdapter, {useClass: BrowserDomAdapter}), |  | ||||||
|     provide(OptionsService, {useClass: OptionsService}), |  | ||||||
|     provide(RedocEventsService, {useClass: RedocEventsService}), |  | ||||||
|     provide(SpecManager, {useClass: SpecManager}), |  | ||||||
|     provide(Hash, {useClass: Hash}), |  | ||||||
|     provide(ScrollService, {useClass: ScrollService}), |  | ||||||
|     provide(MenuService, {useClass: MenuService}) |  | ||||||
|   ], |  | ||||||
|   [TEST_BROWSER_DYNAMIC_APPLICATION_PROVIDERS]); |  | ||||||
							
								
								
									
										66
									
								
								tests/spec-bundle.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								tests/spec-bundle.js
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,66 @@ | ||||||
|  | 'use strict'; | ||||||
|  | 
 | ||||||
|  | Error.stackTraceLimit = Infinity; | ||||||
|  | 
 | ||||||
|  | require('core-js/es6'); | ||||||
|  | require('core-js/es7/reflect'); | ||||||
|  | 
 | ||||||
|  | // Typescript emit helpers polyfill
 | ||||||
|  | require('ts-helpers'); | ||||||
|  | 
 | ||||||
|  | require('zone.js/dist/zone'); | ||||||
|  | require('zone.js/dist/long-stack-trace-zone'); | ||||||
|  | require('zone.js/dist/async-test'); | ||||||
|  | require('zone.js/dist/fake-async-test'); | ||||||
|  | require('zone.js/dist/sync-test'); | ||||||
|  | require('zone.js/dist/proxy'); | ||||||
|  | require('zone.js/dist/jasmine-patch'); | ||||||
|  | 
 | ||||||
|  | require('../lib/vendor'); | ||||||
|  | 
 | ||||||
|  | var TestBed = require('@angular/core/testing').TestBed; | ||||||
|  | var BrowserDynamicTestingModule = require('@angular/platform-browser-dynamic/testing').BrowserDynamicTestingModule; | ||||||
|  | var platformBrowserDynamicTesting = require('@angular/platform-browser-dynamic/testing').platformBrowserDynamicTesting; | ||||||
|  | var services = require('../lib/services/index'); | ||||||
|  | var SpecManager = require('../lib/utils/SpecManager').SpecManager; | ||||||
|  | var BrowserDomAdapter = require('@angular/platform-browser/src/browser/browser_adapter').BrowserDomAdapter; | ||||||
|  | var REDOC_PIPES = require('../lib/utils/pipes').REDOC_PIPES; | ||||||
|  | var REDOC_COMMON_DIRECTIVES = require('../lib/shared/components/index').REDOC_COMMON_DIRECTIVES; | ||||||
|  | var REDOC_DIRECTIVES = require('../lib/components/index').REDOC_DIRECTIVES; | ||||||
|  | 
 | ||||||
|  | TestBed.initTestEnvironment( | ||||||
|  |   BrowserDynamicTestingModule, | ||||||
|  |   platformBrowserDynamicTesting() | ||||||
|  | ); | ||||||
|  | 
 | ||||||
|  | beforeEach(function() { | ||||||
|  |   TestBed.configureTestingModule({ | ||||||
|  |     providers: [ | ||||||
|  |       BrowserDomAdapter, | ||||||
|  |       SpecManager, | ||||||
|  |       BrowserDomAdapter, | ||||||
|  |       services.RedocEventsService, | ||||||
|  |       services.ScrollService, | ||||||
|  |       services.Hash, | ||||||
|  |       services.MenuService, | ||||||
|  |       services.WarningsService, | ||||||
|  |       services.OptionsService | ||||||
|  |     ], | ||||||
|  |     declarations: [REDOC_PIPES, REDOC_DIRECTIVES, REDOC_COMMON_DIRECTIVES] | ||||||
|  |   }); | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | var testContext = require.context('..', true, /\.spec\.ts/); | ||||||
|  | 
 | ||||||
|  | /* | ||||||
|  |  * get all the files, for each file, call the context function | ||||||
|  |  * that will require( the file and load it up here. Context wil); | ||||||
|  |  * loop and require those spec files here | ||||||
|  |  */ | ||||||
|  | function requireAll(requireContext) { | ||||||
|  |   return requireContext.keys().map(requireContext); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // requires and returns all modules that match
 | ||||||
|  | var modules = requireAll(testContext); | ||||||
|  | @ -114,7 +114,7 @@ describe('Utils', () => { | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     describe('getMethodParams method', () => { |     describe('getMethodParams method', () => { | ||||||
|       beforeAll((done) => { |       beforeAll((done:any) => { | ||||||
|         specMgr.load('/tests/schemas/schema-mgr-methodparams.json').then(() => { |         specMgr.load('/tests/schemas/schema-mgr-methodparams.json').then(() => { | ||||||
|           done(); |           done(); | ||||||
|         }, () => { |         }, () => { | ||||||
|  | @ -163,7 +163,7 @@ describe('Utils', () => { | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     describe('findDerivedDefinitions method', () => { |     describe('findDerivedDefinitions method', () => { | ||||||
|       beforeAll((done) => { |       beforeAll((done:any) => { | ||||||
|         specMgr.load('/tests/schemas/extended-petstore.yml').then(() => { |         specMgr.load('/tests/schemas/extended-petstore.yml').then(() => { | ||||||
|           done(); |           done(); | ||||||
|         }, () => { |         }, () => { | ||||||
|  | @ -176,8 +176,8 @@ describe('Utils', () => { | ||||||
|         deriveDefs.should.be.instanceof(Array); |         deriveDefs.should.be.instanceof(Array); | ||||||
|         deriveDefs.should.not.be.empty(); |         deriveDefs.should.not.be.empty(); | ||||||
|         deriveDefs.should.be.deepEqual([ |         deriveDefs.should.be.deepEqual([ | ||||||
|           {name: 'Cat', empty: false, $ref: '#/definitions/Cat'}, |           {name: 'Cat', $ref: '#/definitions/Cat'}, | ||||||
|           {name: 'Dog', empty: false, $ref: '#/definitions/Dog'} |           {name: 'Dog', $ref: '#/definitions/Dog'} | ||||||
|         ]); |         ]); | ||||||
|       }); |       }); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -3,19 +3,28 @@ | ||||||
| 		"experimentalDecorators": true, | 		"experimentalDecorators": true, | ||||||
| 		"emitDecoratorMetadata": true, | 		"emitDecoratorMetadata": true, | ||||||
| 		"module": "es6", | 		"module": "es6", | ||||||
| 		"target": "es6", | 		"target": "es5", | ||||||
| 		"noImplicitAny": false, | 		"noImplicitAny": false, | ||||||
| 		"sourceMap": true, | 		"sourceMap": true, | ||||||
| 		"outDir": ".tmp/", | 		"outDir": ".tmp/lib", | ||||||
| 		"moduleResolution": "node" | 		"pretty": true, | ||||||
|  | 		"moduleResolution": "node", | ||||||
|  | 		"types": [ | ||||||
|  | 			"core-js", | ||||||
|  | 			"jasmine", | ||||||
|  | 			"should", | ||||||
|  | 			"requirejs" | ||||||
|  | 		], | ||||||
|  | 		"noEmitHelpers": true | ||||||
| 	}, | 	}, | ||||||
|  | 	"compileOnSave": false, | ||||||
|  | 
 | ||||||
| 	"exclude": [ | 	"exclude": [ | ||||||
| 		"node_modules", |     "node_modules", | ||||||
| 		"jspm_packages", |     ".tmp" | ||||||
| 		".tmp", |   ], | ||||||
| 		"build", | 	"awesomeTypescriptLoaderOptions": { | ||||||
| 		"docs", |     "resolveGlobs": true, | ||||||
| 		"*.spec.js", |     "forkChecker": true | ||||||
| 		"lib/index.js" |   } | ||||||
| 	] |  | ||||||
| } | } | ||||||
|  |  | ||||||
							
								
								
									
										12
									
								
								typings.json
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								typings.json
									
									
									
									
									
								
							|  | @ -1,12 +0,0 @@ | ||||||
| { |  | ||||||
|   "globalDevDependencies": { |  | ||||||
|     "jasmine": "registry:dt/jasmine#2.2.0+20160505161446" |  | ||||||
|   }, |  | ||||||
|   "globalDependencies": { |  | ||||||
|     "marked": "registry:dt/marked#0.0.0+20160325085301", |  | ||||||
|     "should": "registry:dt/should#8.1.1+20160521152556" |  | ||||||
|   }, |  | ||||||
|   "ambientDevDependencies": { |  | ||||||
|     "es6-shim": "github:DefinitelyTyped/DefinitelyTyped/es6-shim/es6-shim.d.ts#6697d6f7dadbf5773cb40ecda35a76027e0783b2" |  | ||||||
|   } |  | ||||||
| } |  | ||||||
							
								
								
									
										4
									
								
								typings/dropkickjs.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								typings/dropkickjs.d.ts
									
									
									
									
										vendored
									
									
								
							|  | @ -1,4 +0,0 @@ | ||||||
| declare module "dropkickjs" { |  | ||||||
|   var x: any; |  | ||||||
|   export default x; |  | ||||||
| } |  | ||||||
							
								
								
									
										501
									
								
								typings/globals/jasmine/index.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										501
									
								
								typings/globals/jasmine/index.d.ts
									
									
									
									
										vendored
									
									
								
							|  | @ -1,501 +0,0 @@ | ||||||
| // Generated by typings
 |  | ||||||
| // Source: https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/36a1be34dbe202c665b3ddafd50824f78c09eea3/jasmine/jasmine.d.ts
 |  | ||||||
| declare function describe(description: string, specDefinitions: () => void): void; |  | ||||||
| declare function fdescribe(description: string, specDefinitions: () => void): void; |  | ||||||
| declare function xdescribe(description: string, specDefinitions: () => void): void; |  | ||||||
| 
 |  | ||||||
| declare function it(expectation: string, assertion?: () => void, timeout?: number): void; |  | ||||||
| declare function it(expectation: string, assertion?: (done: DoneFn) => void, timeout?: number): void; |  | ||||||
| declare function fit(expectation: string, assertion?: () => void, timeout?: number): void; |  | ||||||
| declare function fit(expectation: string, assertion?: (done: DoneFn) => void, timeout?: number): void; |  | ||||||
| declare function xit(expectation: string, assertion?: () => void, timeout?: number): void; |  | ||||||
| declare function xit(expectation: string, assertion?: (done: DoneFn) => void, timeout?: number): void; |  | ||||||
| 
 |  | ||||||
| /** If you call the function pending anywhere in the spec body, no matter the expectations, the spec will be marked pending. */ |  | ||||||
| declare function pending(reason?: string): void; |  | ||||||
| 
 |  | ||||||
| declare function beforeEach(action: () => void, timeout?: number): void; |  | ||||||
| declare function beforeEach(action: (done: DoneFn) => void, timeout?: number): void; |  | ||||||
| declare function afterEach(action: () => void, timeout?: number): void; |  | ||||||
| declare function afterEach(action: (done: DoneFn) => void, timeout?: number): void; |  | ||||||
| 
 |  | ||||||
| declare function beforeAll(action: () => void, timeout?: number): void; |  | ||||||
| declare function beforeAll(action: (done: DoneFn) => void, timeout?: number): void; |  | ||||||
| declare function afterAll(action: () => void, timeout?: number): void; |  | ||||||
| declare function afterAll(action: (done: DoneFn) => void, timeout?: number): void; |  | ||||||
| 
 |  | ||||||
| declare function expect(spy: Function): jasmine.Matchers; |  | ||||||
| declare function expect(actual: any): jasmine.Matchers; |  | ||||||
| 
 |  | ||||||
| declare function fail(e?: any): void; |  | ||||||
| /** Action method that should be called when the async work is complete */ |  | ||||||
| interface DoneFn extends Function { |  | ||||||
|     (): void; |  | ||||||
| 
 |  | ||||||
|     /** fails the spec and indicates that it has completed. If the message is an Error, Error.message is used */ |  | ||||||
|     fail: (message?: Error|string) => void; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| declare function spyOn(object: any, method: string): jasmine.Spy; |  | ||||||
| 
 |  | ||||||
| declare function runs(asyncMethod: Function): void; |  | ||||||
| declare function waitsFor(latchMethod: () => boolean, failureMessage?: string, timeout?: number): void; |  | ||||||
| declare function waits(timeout?: number): void; |  | ||||||
| 
 |  | ||||||
| declare namespace jasmine { |  | ||||||
| 
 |  | ||||||
|     var clock: () => Clock; |  | ||||||
| 
 |  | ||||||
|     function any(aclass: any): Any; |  | ||||||
|     function anything(): Any; |  | ||||||
|     function arrayContaining(sample: any[]): ArrayContaining; |  | ||||||
|     function objectContaining(sample: any): ObjectContaining; |  | ||||||
|     function createSpy(name: string, originalFn?: Function): Spy; |  | ||||||
|     function createSpyObj(baseName: string, methodNames: any[]): any; |  | ||||||
|     function createSpyObj<T>(baseName: string, methodNames: any[]): T; |  | ||||||
|     function pp(value: any): string; |  | ||||||
|     function getEnv(): Env; |  | ||||||
|     function addCustomEqualityTester(equalityTester: CustomEqualityTester): void; |  | ||||||
|     function addMatchers(matchers: CustomMatcherFactories): void; |  | ||||||
|     function stringMatching(str: string): Any; |  | ||||||
|     function stringMatching(str: RegExp): Any; |  | ||||||
| 
 |  | ||||||
|     interface Any { |  | ||||||
| 
 |  | ||||||
|         new (expectedClass: any): any; |  | ||||||
| 
 |  | ||||||
|         jasmineMatches(other: any): boolean; |  | ||||||
|         jasmineToString(): string; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     // taken from TypeScript lib.core.es6.d.ts, applicable to CustomMatchers.contains()
 |  | ||||||
|     interface ArrayLike<T> { |  | ||||||
|         length: number; |  | ||||||
|         [n: number]: T; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface ArrayContaining { |  | ||||||
|         new (sample: any[]): any; |  | ||||||
| 
 |  | ||||||
|         asymmetricMatch(other: any): boolean; |  | ||||||
|         jasmineToString(): string; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface ObjectContaining { |  | ||||||
|         new (sample: any): any; |  | ||||||
| 
 |  | ||||||
|         jasmineMatches(other: any, mismatchKeys: any[], mismatchValues: any[]): boolean; |  | ||||||
|         jasmineToString(): string; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface Block { |  | ||||||
| 
 |  | ||||||
|         new (env: Env, func: SpecFunction, spec: Spec): any; |  | ||||||
| 
 |  | ||||||
|         execute(onComplete: () => void): void; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface WaitsBlock extends Block { |  | ||||||
|         new (env: Env, timeout: number, spec: Spec): any; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface WaitsForBlock extends Block { |  | ||||||
|         new (env: Env, timeout: number, latchFunction: SpecFunction, message: string, spec: Spec): any; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface Clock { |  | ||||||
|         install(): void; |  | ||||||
|         uninstall(): void; |  | ||||||
|         /** Calls to any registered callback are triggered when the clock is ticked forward via the jasmine.clock().tick function, which takes a number of milliseconds. */ |  | ||||||
|         tick(ms: number): void; |  | ||||||
|         mockDate(date?: Date): void; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface CustomEqualityTester { |  | ||||||
|         (first: any, second: any): boolean; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface CustomMatcher { |  | ||||||
|         compare<T>(actual: T, expected: T): CustomMatcherResult; |  | ||||||
|         compare(actual: any, expected: any): CustomMatcherResult; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface CustomMatcherFactory { |  | ||||||
|         (util: MatchersUtil, customEqualityTesters: Array<CustomEqualityTester>): CustomMatcher; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface CustomMatcherFactories { |  | ||||||
|         [index: string]: CustomMatcherFactory; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface CustomMatcherResult { |  | ||||||
|         pass: boolean; |  | ||||||
|         message?: string; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface MatchersUtil { |  | ||||||
|         equals(a: any, b: any, customTesters?: Array<CustomEqualityTester>): boolean; |  | ||||||
|         contains<T>(haystack: ArrayLike<T> | string, needle: any, customTesters?: Array<CustomEqualityTester>): boolean; |  | ||||||
|         buildFailureMessage(matcherName: string, isNot: boolean, actual: any, ...expected: Array<any>): string; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface Env { |  | ||||||
|         setTimeout: any; |  | ||||||
|         clearTimeout: void; |  | ||||||
|         setInterval: any; |  | ||||||
|         clearInterval: void; |  | ||||||
|         updateInterval: number; |  | ||||||
| 
 |  | ||||||
|         currentSpec: Spec; |  | ||||||
| 
 |  | ||||||
|         matchersClass: Matchers; |  | ||||||
| 
 |  | ||||||
|         version(): any; |  | ||||||
|         versionString(): string; |  | ||||||
|         nextSpecId(): number; |  | ||||||
|         addReporter(reporter: Reporter): void; |  | ||||||
|         execute(): void; |  | ||||||
|         describe(description: string, specDefinitions: () => void): Suite; |  | ||||||
|         // ddescribe(description: string, specDefinitions: () => void): Suite; Not a part of jasmine. Angular team adds these
 |  | ||||||
|         beforeEach(beforeEachFunction: () => void): void; |  | ||||||
|         beforeAll(beforeAllFunction: () => void): void; |  | ||||||
|         currentRunner(): Runner; |  | ||||||
|         afterEach(afterEachFunction: () => void): void; |  | ||||||
|         afterAll(afterAllFunction: () => void): void; |  | ||||||
|         xdescribe(desc: string, specDefinitions: () => void): XSuite; |  | ||||||
|         it(description: string, func: () => void): Spec; |  | ||||||
|         // iit(description: string, func: () => void): Spec; Not a part of jasmine. Angular team adds these
 |  | ||||||
|         xit(desc: string, func: () => void): XSpec; |  | ||||||
|         compareRegExps_(a: RegExp, b: RegExp, mismatchKeys: string[], mismatchValues: string[]): boolean; |  | ||||||
|         compareObjects_(a: any, b: any, mismatchKeys: string[], mismatchValues: string[]): boolean; |  | ||||||
|         equals_(a: any, b: any, mismatchKeys: string[], mismatchValues: string[]): boolean; |  | ||||||
|         contains_(haystack: any, needle: any): boolean; |  | ||||||
|         addCustomEqualityTester(equalityTester: CustomEqualityTester): void; |  | ||||||
|         addMatchers(matchers: CustomMatcherFactories): void; |  | ||||||
|         specFilter(spec: Spec): boolean; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface FakeTimer { |  | ||||||
| 
 |  | ||||||
|         new (): any; |  | ||||||
| 
 |  | ||||||
|         reset(): void; |  | ||||||
|         tick(millis: number): void; |  | ||||||
|         runFunctionsWithinRange(oldMillis: number, nowMillis: number): void; |  | ||||||
|         scheduleFunction(timeoutKey: any, funcToCall: () => void, millis: number, recurring: boolean): void; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface HtmlReporter { |  | ||||||
|         new (): any; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface HtmlSpecFilter { |  | ||||||
|         new (): any; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface Result { |  | ||||||
|         type: string; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface NestedResults extends Result { |  | ||||||
|         description: string; |  | ||||||
| 
 |  | ||||||
|         totalCount: number; |  | ||||||
|         passedCount: number; |  | ||||||
|         failedCount: number; |  | ||||||
| 
 |  | ||||||
|         skipped: boolean; |  | ||||||
| 
 |  | ||||||
|         rollupCounts(result: NestedResults): void; |  | ||||||
|         log(values: any): void; |  | ||||||
|         getItems(): Result[]; |  | ||||||
|         addResult(result: Result): void; |  | ||||||
|         passed(): boolean; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface MessageResult extends Result  { |  | ||||||
|         values: any; |  | ||||||
|         trace: Trace; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface ExpectationResult extends Result  { |  | ||||||
|         matcherName: string; |  | ||||||
|         passed(): boolean; |  | ||||||
|         expected: any; |  | ||||||
|         actual: any; |  | ||||||
|         message: string; |  | ||||||
|         trace: Trace; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface Trace { |  | ||||||
|         name: string; |  | ||||||
|         message: string; |  | ||||||
|         stack: any; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface PrettyPrinter { |  | ||||||
| 
 |  | ||||||
|         new (): any; |  | ||||||
| 
 |  | ||||||
|         format(value: any): void; |  | ||||||
|         iterateObject(obj: any, fn: (property: string, isGetter: boolean) => void): void; |  | ||||||
|         emitScalar(value: any): void; |  | ||||||
|         emitString(value: string): void; |  | ||||||
|         emitArray(array: any[]): void; |  | ||||||
|         emitObject(obj: any): void; |  | ||||||
|         append(value: any): void; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface StringPrettyPrinter extends PrettyPrinter { |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface Queue { |  | ||||||
| 
 |  | ||||||
|         new (env: any): any; |  | ||||||
| 
 |  | ||||||
|         env: Env; |  | ||||||
|         ensured: boolean[]; |  | ||||||
|         blocks: Block[]; |  | ||||||
|         running: boolean; |  | ||||||
|         index: number; |  | ||||||
|         offset: number; |  | ||||||
|         abort: boolean; |  | ||||||
| 
 |  | ||||||
|         addBefore(block: Block, ensure?: boolean): void; |  | ||||||
|         add(block: any, ensure?: boolean): void; |  | ||||||
|         insertNext(block: any, ensure?: boolean): void; |  | ||||||
|         start(onComplete?: () => void): void; |  | ||||||
|         isRunning(): boolean; |  | ||||||
|         next_(): void; |  | ||||||
|         results(): NestedResults; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface Matchers { |  | ||||||
| 
 |  | ||||||
|         new (env: Env, actual: any, spec: Env, isNot?: boolean): any; |  | ||||||
| 
 |  | ||||||
|         env: Env; |  | ||||||
|         actual: any; |  | ||||||
|         spec: Env; |  | ||||||
|         isNot?: boolean; |  | ||||||
|         message(): any; |  | ||||||
| 
 |  | ||||||
|         toBe(expected: any, expectationFailOutput?: any): boolean; |  | ||||||
|         toEqual(expected: any, expectationFailOutput?: any): boolean; |  | ||||||
|         toMatch(expected: string | RegExp, expectationFailOutput?: any): boolean; |  | ||||||
|         toBeDefined(expectationFailOutput?: any): boolean; |  | ||||||
|         toBeUndefined(expectationFailOutput?: any): boolean; |  | ||||||
|         toBeNull(expectationFailOutput?: any): boolean; |  | ||||||
|         toBeNaN(): boolean; |  | ||||||
|         toBeTruthy(expectationFailOutput?: any): boolean; |  | ||||||
|         toBeFalsy(expectationFailOutput?: any): boolean; |  | ||||||
|         toHaveBeenCalled(): boolean; |  | ||||||
|         toHaveBeenCalledWith(...params: any[]): boolean; |  | ||||||
|         toHaveBeenCalledTimes(expected: number): boolean; |  | ||||||
|         toContain(expected: any, expectationFailOutput?: any): boolean; |  | ||||||
|         toBeLessThan(expected: number, expectationFailOutput?: any): boolean; |  | ||||||
|         toBeGreaterThan(expected: number, expectationFailOutput?: any): boolean; |  | ||||||
|         toBeCloseTo(expected: number, precision: any, expectationFailOutput?: any): boolean; |  | ||||||
|         toThrow(expected?: any): boolean; |  | ||||||
|         toThrowError(message?: string | RegExp): boolean; |  | ||||||
|         toThrowError(expected?: new (...args: any[]) => Error, message?: string | RegExp): boolean; |  | ||||||
|         not: Matchers; |  | ||||||
| 
 |  | ||||||
|         Any: Any; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface Reporter { |  | ||||||
|         reportRunnerStarting(runner: Runner): void; |  | ||||||
|         reportRunnerResults(runner: Runner): void; |  | ||||||
|         reportSuiteResults(suite: Suite): void; |  | ||||||
|         reportSpecStarting(spec: Spec): void; |  | ||||||
|         reportSpecResults(spec: Spec): void; |  | ||||||
|         log(str: string): void; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface MultiReporter extends Reporter { |  | ||||||
|         addReporter(reporter: Reporter): void; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface Runner { |  | ||||||
| 
 |  | ||||||
|         new (env: Env): any; |  | ||||||
| 
 |  | ||||||
|         execute(): void; |  | ||||||
|         beforeEach(beforeEachFunction: SpecFunction): void; |  | ||||||
|         afterEach(afterEachFunction: SpecFunction): void; |  | ||||||
|         beforeAll(beforeAllFunction: SpecFunction): void; |  | ||||||
|         afterAll(afterAllFunction: SpecFunction): void; |  | ||||||
|         finishCallback(): void; |  | ||||||
|         addSuite(suite: Suite): void; |  | ||||||
|         add(block: Block): void; |  | ||||||
|         specs(): Spec[]; |  | ||||||
|         suites(): Suite[]; |  | ||||||
|         topLevelSuites(): Suite[]; |  | ||||||
|         results(): NestedResults; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface SpecFunction { |  | ||||||
|         (spec?: Spec): void; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface SuiteOrSpec { |  | ||||||
|         id: number; |  | ||||||
|         env: Env; |  | ||||||
|         description: string; |  | ||||||
|         queue: Queue; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface Spec extends SuiteOrSpec { |  | ||||||
| 
 |  | ||||||
|         new (env: Env, suite: Suite, description: string): any; |  | ||||||
| 
 |  | ||||||
|         suite: Suite; |  | ||||||
| 
 |  | ||||||
|         afterCallbacks: SpecFunction[]; |  | ||||||
|         spies_: Spy[]; |  | ||||||
| 
 |  | ||||||
|         results_: NestedResults; |  | ||||||
|         matchersClass: Matchers; |  | ||||||
| 
 |  | ||||||
|         getFullName(): string; |  | ||||||
|         results(): NestedResults; |  | ||||||
|         log(arguments: any): any; |  | ||||||
|         runs(func: SpecFunction): Spec; |  | ||||||
|         addToQueue(block: Block): void; |  | ||||||
|         addMatcherResult(result: Result): void; |  | ||||||
|         expect(actual: any): any; |  | ||||||
|         waits(timeout: number): Spec; |  | ||||||
|         waitsFor(latchFunction: SpecFunction, timeoutMessage?: string, timeout?: number): Spec; |  | ||||||
|         fail(e?: any): void; |  | ||||||
|         getMatchersClass_(): Matchers; |  | ||||||
|         addMatchers(matchersPrototype: CustomMatcherFactories): void; |  | ||||||
|         finishCallback(): void; |  | ||||||
|         finish(onComplete?: () => void): void; |  | ||||||
|         after(doAfter: SpecFunction): void; |  | ||||||
|         execute(onComplete?: () => void): any; |  | ||||||
|         addBeforesAndAftersToQueue(): void; |  | ||||||
|         explodes(): void; |  | ||||||
|         spyOn(obj: any, methodName: string, ignoreMethodDoesntExist: boolean): Spy; |  | ||||||
|         removeAllSpies(): void; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface XSpec { |  | ||||||
|         id: number; |  | ||||||
|         runs(): void; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface Suite extends SuiteOrSpec { |  | ||||||
| 
 |  | ||||||
|         new (env: Env, description: string, specDefinitions: () => void, parentSuite: Suite): any; |  | ||||||
| 
 |  | ||||||
|         parentSuite: Suite; |  | ||||||
| 
 |  | ||||||
|         getFullName(): string; |  | ||||||
|         finish(onComplete?: () => void): void; |  | ||||||
|         beforeEach(beforeEachFunction: SpecFunction): void; |  | ||||||
|         afterEach(afterEachFunction: SpecFunction): void; |  | ||||||
|         beforeAll(beforeAllFunction: SpecFunction): void; |  | ||||||
|         afterAll(afterAllFunction: SpecFunction): void; |  | ||||||
|         results(): NestedResults; |  | ||||||
|         add(suiteOrSpec: SuiteOrSpec): void; |  | ||||||
|         specs(): Spec[]; |  | ||||||
|         suites(): Suite[]; |  | ||||||
|         children(): any[]; |  | ||||||
|         execute(onComplete?: () => void): void; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface XSuite { |  | ||||||
|         execute(): void; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface Spy { |  | ||||||
|         (...params: any[]): any; |  | ||||||
| 
 |  | ||||||
|         identity: string; |  | ||||||
|         and: SpyAnd; |  | ||||||
|         calls: Calls; |  | ||||||
|         mostRecentCall: { args: any[]; }; |  | ||||||
|         argsForCall: any[]; |  | ||||||
|         wasCalled: boolean; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface SpyAnd { |  | ||||||
|         /** By chaining the spy with and.callThrough, the spy will still track all calls to it but in addition it will delegate to the actual implementation. */ |  | ||||||
|         callThrough(): Spy; |  | ||||||
|         /** By chaining the spy with and.returnValue, all calls to the function will return a specific value. */ |  | ||||||
|         returnValue(val: any): Spy; |  | ||||||
|         /** By chaining the spy with and.returnValues, all calls to the function will return specific values in order until it reaches the end of the return values list. */ |  | ||||||
|         returnValues(...values: any[]): Spy; |  | ||||||
|         /** By chaining the spy with and.callFake, all calls to the spy will delegate to the supplied function. */ |  | ||||||
|         callFake(fn: Function): Spy; |  | ||||||
|         /** By chaining the spy with and.throwError, all calls to the spy will throw the specified value. */ |  | ||||||
|         throwError(msg: string): Spy; |  | ||||||
|         /** When a calling strategy is used for a spy, the original stubbing behavior can be returned at any time with and.stub. */ |  | ||||||
|         stub(): Spy; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface Calls { |  | ||||||
|         /** By chaining the spy with calls.any(), will return false if the spy has not been called at all, and then true once at least one call happens. **/ |  | ||||||
|         any(): boolean; |  | ||||||
|         /** By chaining the spy with calls.count(), will return the number of times the spy was called **/ |  | ||||||
|         count(): number; |  | ||||||
|         /** By chaining the spy with calls.argsFor(), will return the arguments passed to call number index **/ |  | ||||||
|         argsFor(index: number): any[]; |  | ||||||
|         /** By chaining the spy with calls.allArgs(), will return the arguments to all calls **/ |  | ||||||
|         allArgs(): any[]; |  | ||||||
|         /** By chaining the spy with calls.all(), will return the context (the this) and arguments passed all calls **/ |  | ||||||
|         all(): CallInfo[]; |  | ||||||
|         /** By chaining the spy with calls.mostRecent(), will return the context (the this) and arguments for the most recent call **/ |  | ||||||
|         mostRecent(): CallInfo; |  | ||||||
|         /** By chaining the spy with calls.first(), will return the context (the this) and arguments for the first call **/ |  | ||||||
|         first(): CallInfo; |  | ||||||
|         /** By chaining the spy with calls.reset(), will clears all tracking for a spy **/ |  | ||||||
|         reset(): void; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface CallInfo { |  | ||||||
|         /** The context (the this) for the call */ |  | ||||||
|         object: any; |  | ||||||
|         /** All arguments passed to the call */ |  | ||||||
|         args: any[]; |  | ||||||
|         /** The return value of the call */ |  | ||||||
|         returnValue: any; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface Util { |  | ||||||
|         inherit(childClass: Function, parentClass: Function): any; |  | ||||||
|         formatException(e: any): any; |  | ||||||
|         htmlEscape(str: string): string; |  | ||||||
|         argsToArray(args: any): any; |  | ||||||
|         extend(destination: any, source: any): any; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface JsApiReporter extends Reporter { |  | ||||||
| 
 |  | ||||||
|         started: boolean; |  | ||||||
|         finished: boolean; |  | ||||||
|         result: any; |  | ||||||
|         messages: any; |  | ||||||
| 
 |  | ||||||
|         new (): any; |  | ||||||
| 
 |  | ||||||
|         suites(): Suite[]; |  | ||||||
|         summarize_(suiteOrSpec: SuiteOrSpec): any; |  | ||||||
|         results(): any; |  | ||||||
|         resultsForSpec(specId: any): any; |  | ||||||
|         log(str: any): any; |  | ||||||
|         resultsForSpecs(specIds: any): any; |  | ||||||
|         summarizeResult_(result: any): any; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     interface Jasmine { |  | ||||||
|         Spec: Spec; |  | ||||||
|         clock: Clock; |  | ||||||
|         util: Util; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     export var HtmlReporter: HtmlReporter; |  | ||||||
|     export var HtmlSpecFilter: HtmlSpecFilter; |  | ||||||
|     export var DEFAULT_TIMEOUT_INTERVAL: number; |  | ||||||
| } |  | ||||||
|  | @ -1,8 +0,0 @@ | ||||||
| { |  | ||||||
|   "resolution": "main", |  | ||||||
|   "tree": { |  | ||||||
|     "src": "https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/36a1be34dbe202c665b3ddafd50824f78c09eea3/jasmine/jasmine.d.ts", |  | ||||||
|     "raw": "registry:dt/jasmine#2.2.0+20160505161446", |  | ||||||
|     "typings": "https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/36a1be34dbe202c665b3ddafd50824f78c09eea3/jasmine/jasmine.d.ts" |  | ||||||
|   } |  | ||||||
| } |  | ||||||
							
								
								
									
										80
									
								
								typings/globals/json-pointer/index.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										80
									
								
								typings/globals/json-pointer/index.d.ts
									
									
									
									
										vendored
									
									
								
							|  | @ -1,80 +0,0 @@ | ||||||
| // Generated by typings
 |  | ||||||
| // Source: https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/7de6c3dd94feaeb21f20054b9f30d5dabc5efabd/json-pointer/json-pointer.d.ts
 |  | ||||||
| declare module "json-pointer" { |  | ||||||
| 	function JSON_Pointer(object: Object): JSON_Pointer.JSON_PointerWrap; |  | ||||||
| 
 |  | ||||||
| 	namespace JSON_Pointer { |  | ||||||
| 		/** |  | ||||||
| 		 *  Wrap an object with accessors |  | ||||||
| 		 */ |  | ||||||
| 		/** |  | ||||||
| 		 *  Looks up a JSON pointer in an object. |  | ||||||
| 		 */ |  | ||||||
| 		function get(object: Object, pointer: string): any; |  | ||||||
| 		/** |  | ||||||
| 		 *  Set a value for a JSON pointer on object. |  | ||||||
| 		 */ |  | ||||||
| 		function set(object: Object, pointer: string, value: any): void; |  | ||||||
| 		/** |  | ||||||
| 		 *  Removes an attribute of object referenced by pointer |  | ||||||
| 		 */ |  | ||||||
| 		function remove(object: Object, pointer: string): void; |  | ||||||
| 		/** |  | ||||||
| 		 *  Creates a dictionary object (pointer -> value). |  | ||||||
| 		 */ |  | ||||||
| 		function dict(object: Object): Object; |  | ||||||
| 		/** |  | ||||||
| 		 *  Just like: each(pointer.dict(obj), iterator); |  | ||||||
| 		 */ |  | ||||||
| 		function walk(object: Object, iterator: (value: any, key: string) =>  void): void; |  | ||||||
| 		/** |  | ||||||
| 		 *  Tests if an object has a value for a JSON pointer. |  | ||||||
| 		 */ |  | ||||||
| 		function has(object: Object, pointer: string): boolean; |  | ||||||
| 		/** |  | ||||||
| 		 *  Escapes a reference token. |  | ||||||
| 		 */ |  | ||||||
| 		function escape(str: string): string; |  | ||||||
| 		/** |  | ||||||
| 		 *  Unescape a reference token. |  | ||||||
| 		 */ |  | ||||||
| 		function unescape(str: string): string; |  | ||||||
| 		/** |  | ||||||
| 		 *  Converts a JSON pointer into an array of reference tokens. |  | ||||||
| 		 */ |  | ||||||
| 		function parse(str: string): string[]; |  | ||||||
| 		/** |  | ||||||
| 		 *  Builds a json pointer from an array of reference tokens. |  | ||||||
| 		 */ |  | ||||||
| 		function compile(str: string[]): string; |  | ||||||
| 
 |  | ||||||
| 		interface JSON_PointerWrap { |  | ||||||
| 			/** |  | ||||||
| 			 *  Looks up a JSON pointer in an object. |  | ||||||
| 			 */ |  | ||||||
| 			get(pointer: string): any; |  | ||||||
| 			/** |  | ||||||
| 			 *  Set a value for a JSON pointer on object. |  | ||||||
| 			 */ |  | ||||||
| 			set(pointer: string, value: any): void; |  | ||||||
| 			/** |  | ||||||
| 			 *  Removes an attribute of object referenced by pointer |  | ||||||
| 			 */ |  | ||||||
| 			remove(pointer: string): void; |  | ||||||
| 			/** |  | ||||||
| 			 *  Creates a dictionary object (pointer -> value). |  | ||||||
| 			 */ |  | ||||||
| 			dict(): Object; |  | ||||||
| 			/** |  | ||||||
| 			 *  Just like: each(pointer.dict(obj), iterator); |  | ||||||
| 			 */ |  | ||||||
| 			walk(iterator: (value: any, key: string) =>  void): void; |  | ||||||
| 			/** |  | ||||||
| 			 *  Tests if an object has a value for a JSON pointer. |  | ||||||
| 			 */ |  | ||||||
| 			has(pointer: string): boolean; |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	export default JSON_Pointer; |  | ||||||
| } |  | ||||||
|  | @ -1,8 +0,0 @@ | ||||||
| { |  | ||||||
|   "resolution": "main", |  | ||||||
|   "tree": { |  | ||||||
|     "src": "https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/7de6c3dd94feaeb21f20054b9f30d5dabc5efabd/json-pointer/json-pointer.d.ts", |  | ||||||
|     "raw": "registry:dt/json-pointer#1.0.0+20160317120654", |  | ||||||
|     "typings": "https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/7de6c3dd94feaeb21f20054b9f30d5dabc5efabd/json-pointer/json-pointer.d.ts" |  | ||||||
|   } |  | ||||||
| } |  | ||||||
							
								
								
									
										2590
									
								
								typings/globals/node/index.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2590
									
								
								typings/globals/node/index.d.ts
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							|  | @ -1,8 +0,0 @@ | ||||||
| { |  | ||||||
|   "resolution": "main", |  | ||||||
|   "tree": { |  | ||||||
|     "src": "https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/91d45c49a3b5cd6a0abbf5f319c1406fd4f2b1e7/node/node.d.ts", |  | ||||||
|     "raw": "registry:dt/node#6.0.0+20160720070758", |  | ||||||
|     "typings": "https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/91d45c49a3b5cd6a0abbf5f319c1406fd4f2b1e7/node/node.d.ts" |  | ||||||
|   } |  | ||||||
| } |  | ||||||
							
								
								
									
										168
									
								
								typings/globals/should/index.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										168
									
								
								typings/globals/should/index.d.ts
									
									
									
									
										vendored
									
									
								
							|  | @ -1,168 +0,0 @@ | ||||||
| // Generated by typings
 |  | ||||||
| // Source: https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/445ed7e54c1b2a8e84610afab0aab2b2ee2ffb4e/should/should.d.ts
 |  | ||||||
| interface Object { |  | ||||||
|   should: ShouldAssertion; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| interface ShouldAssertion { |  | ||||||
|   // basic grammar
 |  | ||||||
|   a: ShouldAssertion; |  | ||||||
|   an: ShouldAssertion; |  | ||||||
|   and: ShouldAssertion; |  | ||||||
|   be: ShouldAssertion; |  | ||||||
|   has: ShouldAssertion; |  | ||||||
|   have: ShouldAssertion; |  | ||||||
|   is: ShouldAssertion; |  | ||||||
|   it: ShouldAssertion; |  | ||||||
|   with: ShouldAssertion; |  | ||||||
|   which: ShouldAssertion; |  | ||||||
|   the: ShouldAssertion; |  | ||||||
|   of: ShouldAssertion; |  | ||||||
|   not: ShouldAssertion; |  | ||||||
| 
 |  | ||||||
|   // validators
 |  | ||||||
|   arguments(): ShouldAssertion; |  | ||||||
|   empty(): ShouldAssertion; |  | ||||||
|   ok(): ShouldAssertion; |  | ||||||
|   true(): ShouldAssertion; |  | ||||||
|   false(): ShouldAssertion; |  | ||||||
|   NaN(): ShouldAssertion; |  | ||||||
|   Infinity(): ShouldAssertion; |  | ||||||
|   Array(): ShouldAssertion; |  | ||||||
|   Object(): ShouldAssertion; |  | ||||||
|   String(): ShouldAssertion; |  | ||||||
|   Boolean(): ShouldAssertion; |  | ||||||
|   Number(): ShouldAssertion; |  | ||||||
|   Error(): ShouldAssertion; |  | ||||||
|   Function(): ShouldAssertion; |  | ||||||
|   Date(): ShouldAssertion; |  | ||||||
|   Class(): ShouldAssertion; |  | ||||||
|   Undefined(): ShouldAssertion; |  | ||||||
|   generator(): ShouldAssertion; |  | ||||||
|   iterable(): ShouldAssertion; |  | ||||||
|   iterator(): ShouldAssertion; |  | ||||||
|   eql(expected: any, description?: string): ShouldAssertion; |  | ||||||
|   equal(expected: any, description?: string): ShouldAssertion; |  | ||||||
|   equalOneOf(...values: any[]): ShouldAssertion; |  | ||||||
|   within(start: number, finish: number, description?: string): ShouldAssertion; |  | ||||||
|   approximately(value: number, delta: number, description?: string): ShouldAssertion; |  | ||||||
|   type(expected: any, description?: string): ShouldAssertion; |  | ||||||
|   instanceof(constructor: Function, description?: string): ShouldAssertion; |  | ||||||
|   above(n: number, description?: string): ShouldAssertion; |  | ||||||
|   below(n: number, description?: string): ShouldAssertion; |  | ||||||
|   aboveOrEqual(n: number, description?: string): ShouldAssertion; |  | ||||||
|   greaterThanOrEqual(n: number, description?: string): ShouldAssertion; |  | ||||||
|   belowOrEqual(n: number, description?: string): ShouldAssertion; |  | ||||||
|   lessThanOrEqual(n: number, description?: string): ShouldAssertion; |  | ||||||
|   match(other: {}, description?: string): ShouldAssertion; |  | ||||||
|   match(other: (val: any) => any, description?: string): ShouldAssertion; |  | ||||||
|   match(regexp: RegExp, description?: string): ShouldAssertion; |  | ||||||
|   match(other: any, description?: string): ShouldAssertion; |  | ||||||
|   matchEach(other: {}, description?: string): ShouldAssertion; |  | ||||||
|   matchEach(other: (val: any) => any, description?: string): ShouldAssertion; |  | ||||||
|   matchEach(regexp: RegExp, description?: string): ShouldAssertion; |  | ||||||
|   matchEach(other: any, description?: string): ShouldAssertion; |  | ||||||
|   matchAny(other: {}, description?: string): ShouldAssertion; |  | ||||||
|   matchAny(other: (val: any) => any, description?: string): ShouldAssertion; |  | ||||||
|   matchAny(regexp: RegExp, description?: string): ShouldAssertion; |  | ||||||
|   matchAny(other: any, description?: string): ShouldAssertion; |  | ||||||
|   length(n: number, description?: string): ShouldAssertion; |  | ||||||
|   property(name: string, description?: string): ShouldAssertion; |  | ||||||
|   property(name: string, val: any, description?: string): ShouldAssertion; |  | ||||||
|   properties(names: string[]): ShouldAssertion; |  | ||||||
|   properties(name: string): ShouldAssertion; |  | ||||||
|   properties(descriptor: any): ShouldAssertion; |  | ||||||
|   properties(...properties: string[]): ShouldAssertion; |  | ||||||
|   propertyByPath(...properties: string[]): ShouldAssertion; |  | ||||||
|   propertyWithDescriptor(name: string, descriptor: PropertyDescriptor): ShouldAssertion; |  | ||||||
|   oneOf(...values: any[]): ShouldAssertion; |  | ||||||
|   ownProperty(name: string, description?: string): ShouldAssertion; |  | ||||||
|   containEql(obj: any): ShouldAssertion; |  | ||||||
|   containDeep(obj: any): ShouldAssertion; |  | ||||||
|   containDeepOrdered(obj: any): ShouldAssertion; |  | ||||||
|   keys(...allKeys: string[]): ShouldAssertion; |  | ||||||
|   keys(allKeys: string[]): ShouldAssertion; |  | ||||||
|   enumerable(property: string, value?: any): ShouldAssertion; |  | ||||||
|   enumerables(...properties: string[]): ShouldAssertion; |  | ||||||
|   startWith(expected: string, message?: any): ShouldAssertion; |  | ||||||
|   endWith(expected: string, message?: any): ShouldAssertion; |  | ||||||
|   throw(message?: any): ShouldAssertion; |  | ||||||
| 
 |  | ||||||
|   //http
 |  | ||||||
|   header(field: string, val?: string): ShouldAssertion; |  | ||||||
|   status(code: number): ShouldAssertion; |  | ||||||
|   json(): ShouldAssertion; |  | ||||||
|   html(): ShouldAssertion; |  | ||||||
| 
 |  | ||||||
|   //stubs
 |  | ||||||
|   alwaysCalledOn(thisTarget: any): ShouldAssertion; |  | ||||||
|   alwaysCalledWith(...arguments: any[]): ShouldAssertion; |  | ||||||
|   alwaysCalledWithExactly(...arguments: any[]): ShouldAssertion; |  | ||||||
|   alwaysCalledWithMatch(...arguments: any[]): ShouldAssertion; |  | ||||||
|   alwaysCalledWithNew(): ShouldAssertion; |  | ||||||
|   alwaysThrew(exception?: any): ShouldAssertion; |  | ||||||
|   callCount(count: number): ShouldAssertion; |  | ||||||
|   called(): ShouldAssertion; |  | ||||||
|   calledOn(thisTarget: any): ShouldAssertion; |  | ||||||
|   calledOnce(): ShouldAssertion; |  | ||||||
|   calledTwice(): ShouldAssertion; |  | ||||||
|   calledThrice(): ShouldAssertion; |  | ||||||
|   calledWith(...arguments: any[]): ShouldAssertion; |  | ||||||
|   calledWithExactly(...arguments: any[]): ShouldAssertion; |  | ||||||
|   calledWithMatch(...arguments: any[]): ShouldAssertion; |  | ||||||
|   calledWithNew(): ShouldAssertion; |  | ||||||
|   neverCalledWith(...arguments: any[]): ShouldAssertion; |  | ||||||
|   neverCalledWithMatch(...arguments: any[]): ShouldAssertion; |  | ||||||
|   threw(exception?: any): ShouldAssertion; |  | ||||||
| 
 |  | ||||||
|   // aliases
 |  | ||||||
|   True(): ShouldAssertion; |  | ||||||
|   False(): ShouldAssertion; |  | ||||||
|   Arguments(): ShouldAssertion; |  | ||||||
|   class(): ShouldAssertion; |  | ||||||
|   deepEqual(expected: any, description?: string): ShouldAssertion; |  | ||||||
|   exactly(expected: any, description?: string): ShouldAssertion; |  | ||||||
|   instanceOf(constructor: Function, description?: string): ShouldAssertion; |  | ||||||
|   throwError(message?: any): ShouldAssertion; |  | ||||||
|   lengthOf(n: number, description?: string): ShouldAssertion; |  | ||||||
|   key(key: string): ShouldAssertion; |  | ||||||
|   hasOwnProperty(name: string, description?: string): ShouldAssertion; |  | ||||||
|   greaterThan(n: number, description?: string): ShouldAssertion; |  | ||||||
|   lessThan(n: number, description?: string): ShouldAssertion; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| interface ShouldInternal { |  | ||||||
|   // should.js's extras
 |  | ||||||
|   exist(actual: any, msg?: string): void; |  | ||||||
|   exists(actual: any, msg?: string): void; |  | ||||||
|   not: ShouldInternal; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| interface Internal extends ShouldInternal { |  | ||||||
|   (obj: any): ShouldAssertion; |  | ||||||
| 
 |  | ||||||
|   // node.js's assert functions
 |  | ||||||
|   fail(actual: any, expected: any, message: string, operator: string): void; |  | ||||||
|   assert(value: any, message: string): void; |  | ||||||
|   ok(value: any, message?: string): void; |  | ||||||
|   equal(actual: any, expected: any, message?: string): void; |  | ||||||
|   notEqual(actual: any, expected: any, message?: string): void; |  | ||||||
|   deepEqual(actual: any, expected: any, message?: string): void; |  | ||||||
|   notDeepEqual(actual: any, expected: any, message?: string): void; |  | ||||||
|   strictEqual(actual: any, expected: any, message?: string): void; |  | ||||||
|   notStrictEqual(actual: any, expected: any, message?: string): void; |  | ||||||
|   throws(block: any, error?: any, message?: string): void; |  | ||||||
|   doesNotThrow(block: any, message?: string): void; |  | ||||||
|   ifError(value: any): void; |  | ||||||
|   inspect(value: any, obj: any): any; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| declare var should: Internal; |  | ||||||
| declare var Should: Internal; |  | ||||||
| interface Window { |  | ||||||
|   Should: Internal; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| declare module "should" { |  | ||||||
|   export = should; |  | ||||||
| } |  | ||||||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
		Reference in New Issue
	
	Block a user