├── .gitignore ├── .travis.yml ├── lib ├── util.js ├── package.js └── require.js ├── .jshintrc ├── .editorconfig ├── test ├── fixtures │ ├── require.js │ ├── package.json │ ├── require.html │ └── package.html ├── test_package_remote.js ├── test_package_local.js ├── test_require_remote.js └── test_require_local.js ├── .jscs.json ├── README.md ├── index.js ├── package.json └── gulpfile.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | temp/ 3 | coverage/ 4 | npm-debug.log 5 | .DS_Store 6 | .idea 7 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - '0.10' 4 | after_script: 5 | - npm run coveralls 6 | -------------------------------------------------------------------------------- /lib/util.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var stripQuotes = function(jqElement) { 4 | return jqElement.html().replace(/"|'/g, ''); 5 | }; 6 | 7 | module.exports = { 8 | stripQuotes: stripQuotes 9 | }; 10 | -------------------------------------------------------------------------------- /.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "curly": true, 3 | "eqeqeq": true, 4 | "immed": true, 5 | "latedef": true, 6 | "newcap": true, 7 | "noarg": true, 8 | "sub": true, 9 | "undef": true, 10 | "unused": true, 11 | "boss": true, 12 | "eqnull": true, 13 | "node": true, 14 | "globals": { 15 | "describe" : false, 16 | "it" : false, 17 | "before" : false, 18 | "beforeEach" : false, 19 | "after" : false, 20 | "afterEach" : false 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig helps developers define and maintain consistent 2 | # coding styles between different editors and IDEs 3 | # editorconfig.org 4 | 5 | root = true 6 | 7 | 8 | [*] 9 | 10 | # Change these settings to your own preference 11 | indent_style = space 12 | indent_size = 2 13 | 14 | # We recommend you to keep these unchanged 15 | end_of_line = lf 16 | charset = utf-8 17 | trim_trailing_whitespace = true 18 | insert_final_newline = true 19 | 20 | [*.md] 21 | trim_trailing_whitespace = false 22 | -------------------------------------------------------------------------------- /test/fixtures/require.js: -------------------------------------------------------------------------------- 1 | 2 | require('path'); 3 | require('lodash'); 4 | require('unknown-package-name'); 5 | require('./file.js'); 6 | require('./folder/file.js'); 7 | require('./file-or-folder'); 8 | require('../file.js'); 9 | require('../folder/file.js'); 10 | require('../file-or-folder'); 11 | require('../../file.js'); 12 | require('../../folder/file.js'); 13 | require('../../file-or-folder'); 14 | require('./'); 15 | require('..'); 16 | require('../'); 17 | require('../..'); 18 | require('../../'); 19 | require('.'); 20 | require('...'); 21 | require('/'); 22 | -------------------------------------------------------------------------------- /.jscs.json: -------------------------------------------------------------------------------- 1 | { 2 | "requireCurlyBraces": ["if", "else", "for", "while", "do", "try", "catch"], 3 | "requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch"], 4 | "disallowSpaceBeforeBinaryOperators": [",", ":"], 5 | "disallowSpaceAfterBinaryOperators": ["!"], 6 | "requireSpaceBeforeBinaryOperators": ["?", "+", "-", "/", "*", "=", "==", "===", "!=", "!==", ">", ">=", "<", "<="], 7 | "requireSpaceAfterBinaryOperators": ["?", "+", "/", "*", ":", "=", "==", "===", "!=", "!==", ">", ">=", "<", "<="], 8 | "disallowImplicitTypeConversion": ["string"], 9 | "disallowKeywords": ["with"], 10 | "disallowMultipleLineBreaks": true, 11 | "disallowKeywordsOnNewLine": ["else"], 12 | "disallowTrailingWhitespace": true, 13 | "requireLineFeedAtFileEnd": true, 14 | "validateJSDoc": { 15 | "checkParamNames": true, 16 | "requireParamTypes": true 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # github-linker-core 2 | [![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Dependency Status][daviddm-url]][daviddm-image] [![Coverage Status][coveralls-image]][coveralls-url] 3 | 4 | > The [GitHub-Linker](https://github.com/stefanbuck/github-linker) core 5 | 6 | 7 | ## License 8 | 9 | Copyright (c) 2014 Stefan Buck. Licensed under the MIT license. 10 | 11 | 12 | 13 | [npm-url]: https://npmjs.org/package/github-linker-core 14 | [npm-image]: https://badge.fury.io/js/github-linker-core.svg 15 | [travis-url]: https://travis-ci.org/stefanbuck/github-linker-core 16 | [travis-image]: https://travis-ci.org/stefanbuck/github-linker-core.svg?branch=master 17 | [daviddm-url]: https://david-dm.org/stefanbuck/github-linker-core.svg?theme=shields.io 18 | [daviddm-image]: https://david-dm.org/stefanbuck/github-linker-core 19 | [coveralls-url]: https://coveralls.io/r/stefanbuck/github-linker-core 20 | [coveralls-image]: https://coveralls.io/repos/stefanbuck/github-linker-core/badge.png 21 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | /* 2 | * github-linker-core 3 | * https://github.com/stefanbuck/github-linker 4 | * 5 | * Copyright (c) 2014 Stefan Buck 6 | * Licensed under the MIT license. 7 | */ 8 | 9 | 'use strict'; 10 | 11 | var _ = require('lodash'); 12 | var pkg = require('./lib/package'); 13 | var reqr = require('./lib/require'); 14 | 15 | var getType = function(url) { 16 | 17 | var urlContains = function(indicator) { 18 | return url.indexOf(indicator) === url.length - indicator.length; 19 | }; 20 | var lookup = { 21 | '/package.json': 'npm', 22 | '/bower.json': 'bower', 23 | '.js': 'js', 24 | '.coffee': 'coffee' 25 | }; 26 | 27 | return _.find(lookup, function(type, urlFragment) { 28 | return urlContains(urlFragment); 29 | }); 30 | }; 31 | 32 | module.exports = function($, url, options, cb) { 33 | 34 | var type = getType(url); 35 | var dictionary = options.dictionary || { 36 | npm: require('./lib/dictionary/npm.js'), 37 | bower: require('./lib/dictionary/bower.js') 38 | }; 39 | 40 | if (type === 'npm' || type === 'bower') { 41 | pkg($, type, dictionary, cb); 42 | } else if (type === 'js' || type === 'coffee') { 43 | reqr($, type, url, dictionary.npm, cb); 44 | } 45 | }; 46 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "github-linker-core", 3 | "description": "The GitHub Linker core", 4 | "version": "0.0.1", 5 | "homepage": "https://github.com/stefanbuck/github-linker", 6 | "bugs": "https://github.com/stefanbuck/github-linker-core/issues", 7 | "license": "MIT", 8 | "main": "index.js", 9 | "author": { 10 | "name": "Stefan Buck", 11 | "email": "dev@stefanbuck.com", 12 | "url": "http://stefanbuck.com" 13 | }, 14 | "repository": { 15 | "type": "git", 16 | "url": "https://github.com/stefanbuck/github-linker-core" 17 | }, 18 | "keywords": [], 19 | "dependencies": { 20 | "debug": "1.0.4", 21 | "jquery": "^2.1.1", 22 | "lodash": "2.4.1" 23 | }, 24 | "devDependencies": { 25 | "coveralls": "^2.10.0", 26 | "gulp": "^3.6.2", 27 | "gulp-bump": "^0.1.8", 28 | "gulp-istanbul": "^0.2.0", 29 | "gulp-jscs": "^0.4.2", 30 | "gulp-jshint": "^1.5.5", 31 | "gulp-load-plugins": "^0.5.1", 32 | "gulp-mocha": "^0.4.1", 33 | "gulp-plumber": "^0.6.2", 34 | "gulp-util": "2.2.16", 35 | "jshint-stylish": "^0.2.0", 36 | "should": "^3.3.1", 37 | "jsdom": "^1.0.0-pre.3" 38 | }, 39 | "scripts": { 40 | "coveralls": "gulp test && cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js", 41 | "test": "gulp test" 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /test/fixtures/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "playground-repo", 3 | "description": "My personal playground", 4 | "version": "0.0.1", 5 | "homepage": "https://github.com/stefanbuck/playground-repo", 6 | "bugs": "https://github.com/stefanbuck/playground-repo/issues", 7 | "license": "MIT", 8 | "main": "index.js", 9 | "author": { 10 | "name": "Stefan Buck", 11 | "email": "dev@stefanbuck.com", 12 | "url": "http://stefanbuck.com" 13 | }, 14 | "repository": { 15 | "type": "git", 16 | "url": "https://github.com/stefanbuck/playground-repo" 17 | }, 18 | "keywords": [], 19 | "dependencies": { 20 | "lodash": "2.4.1", 21 | "request": "^2.40.0", 22 | "modernizr": "Modernizr/Modernizr", 23 | "backbone": "jashkenas/backbone#master", 24 | "jquery": "jquery/jquery#1.x-master", 25 | "unknown-package-name": "latest" 26 | }, 27 | "devDependencies": { 28 | "chai": "^1.9.1", 29 | "gulp": "^3.6.2" 30 | }, 31 | "optionalDependencies": { 32 | "should": "^3.3.1" 33 | }, 34 | "peerDependencies": { 35 | "yo": ">=1.0.0" 36 | }, 37 | "scripts": { 38 | "coveralls": "gulp test && cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js", 39 | "test": "gulp test" 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /gulpfile.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var gulp = require('gulp'); 4 | var plugins = require('gulp-load-plugins')(); 5 | 6 | var paths = { 7 | lint: ['./gulpfile.js', './lib/**/*.js', './index.js', '!./lib/dictionary/*.js'], 8 | watch: ['./gulpfile.js', './lib/**/*.js', './index.js', './test/**/*.js', '!test/{temp,temp/**}', '!./lib/dictionary/*.js'], 9 | tests: ['./test/**/*.js', '!test/{temp,temp/**}', '!test/fixtures/**'], 10 | source: ['./lib/**/*.js', './index.js'] 11 | }; 12 | 13 | gulp.task('lint', function () { 14 | return gulp.src(paths.lint) 15 | .pipe(plugins.jshint('.jshintrc')) 16 | .pipe(plugins.jscs()) 17 | .pipe(plugins.jshint.reporter('jshint-stylish')); 18 | }); 19 | 20 | gulp.task('istanbul', function (cb) { 21 | gulp.src(paths.source) 22 | .pipe(plugins.istanbul()) // Covering files 23 | .on('finish', function () { 24 | gulp.src(paths.tests) 25 | .pipe(plugins.plumber()) 26 | .pipe(plugins.mocha()) 27 | .pipe(plugins.istanbul.writeReports()) // Creating the reports after tests runned 28 | .on('finish', function() { 29 | process.chdir(__dirname); 30 | cb(); 31 | }); 32 | }); 33 | }); 34 | 35 | gulp.task('bump', ['test'], function () { 36 | var bumpType = plugins.util.env.type || 'patch'; // major.minor.patch 37 | 38 | return gulp.src(['./package.json']) 39 | .pipe(plugins.bump({ type: bumpType })) 40 | .pipe(gulp.dest('./')); 41 | }); 42 | 43 | gulp.task('watch', ['test'], function () { 44 | gulp.watch(paths.watch, ['test']); 45 | }); 46 | 47 | gulp.task('test', ['lint', 'istanbul']); 48 | 49 | gulp.task('release', ['bump']); 50 | 51 | gulp.task('default', ['test']); 52 | -------------------------------------------------------------------------------- /lib/package.js: -------------------------------------------------------------------------------- 1 | /* 2 | * github-linker-core 3 | * https://github.com/stefanbuck/github-linker 4 | * 5 | * Copyright (c) 2014 Stefan Buck 6 | * Licensed under the MIT license. 7 | */ 8 | 9 | 'use strict'; 10 | 11 | var stripQuotes = require('./util.js').stripQuotes; 12 | var SORRY = 'Sorry, there is no link for this package available'; 13 | 14 | module.exports = function($, type, dictionary, cb) { 15 | 16 | var $root, $row, $name, $version, name, version, link; 17 | var types = ['dependencies', 'devDependencies', 'peerDependencies', 'optionalDependencies']; 18 | var result = []; 19 | var registryList = dictionary[type]; 20 | 21 | types.forEach(function(selector) { 22 | $root = $('.nt:contains(\'' + selector + '\')'); 23 | 24 | if (!$root || $root.length === 0) { 25 | return; 26 | } 27 | 28 | $row = $root.closest('tr').next(); 29 | 30 | while ($row) { 31 | $name = $row.find('.nt'); 32 | $version = $row.find('.s2'); 33 | 34 | if (!$name.length || !$version.length) { 35 | return; 36 | } 37 | 38 | name = stripQuotes($name); 39 | version = stripQuotes($version); 40 | 41 | link = registryList[name]; 42 | 43 | if (version.split('/').length === 2) { 44 | link = 'https://github.com/' + version.replace('#', '/tree/'); 45 | 46 | } else if (!link && type === 'npm' ) { 47 | link = 'https://www.npmjs.org/package/' + name; 48 | } 49 | 50 | if (link) { 51 | var $link = $(''); 52 | $link.attr('href', link); 53 | $name.wrap($link); 54 | 55 | } else { 56 | $name.addClass('tooltipped tooltipped-e').attr('aria-label', SORRY); 57 | } 58 | 59 | result.push({ 60 | el: $name, 61 | version: version, 62 | name: name, 63 | link: link 64 | }); 65 | 66 | $row = $row.next(); 67 | } 68 | }); 69 | 70 | cb(null, result); 71 | }; 72 | -------------------------------------------------------------------------------- /lib/require.js: -------------------------------------------------------------------------------- 1 | /* 2 | * github-linker-core 3 | * https://github.com/stefanbuck/github-linker 4 | * 5 | * Copyright (c) 2014 Stefan Buck 6 | * Licensed under the MIT license. 7 | */ 8 | 9 | 'use strict'; 10 | 11 | var util = require('util'); 12 | var path = require('path'); 13 | var stripQuotes = require('./util.js').stripQuotes; 14 | 15 | // List of nodejs core modules (v0.11.13) 16 | // see: https://github.com/joyent/node/blob/master/lib/repl.js#L72 17 | var coreModules = ['assert', 'buffer', 'child_process', 'cluster', 18 | 'crypto', 'dgram', 'dns', 'domain', 'events', 'fs', 'http', 'https', 'net', 19 | 'os', 'path', 'punycode', 'querystring', 'readline', 'stream', 20 | 'string_decoder', 'tls', 'tty', 'url', 'util', 'vm', 'zlib', 'smalloc', 21 | 'tracing']; 22 | var GITHUBCOM = 'https://github.com'; 23 | var NODEAPICOM = 'http://nodejs.org/api/%s.html'; 24 | 25 | var getRequireLink = function(npmRegistry, url, requireValue) { 26 | 27 | var link = ''; 28 | 29 | if (coreModules.indexOf(requireValue) !== -1 ) { 30 | 31 | link = util.format(NODEAPICOM, requireValue); 32 | 33 | } else if (npmRegistry[requireValue]) { 34 | 35 | link = npmRegistry[requireValue]; 36 | 37 | } else { 38 | var basePath = url.replace(GITHUBCOM, ''); 39 | var requirePath = path.resolve(path.dirname(basePath), requireValue); 40 | if (path.extname(requirePath)) { 41 | link = requirePath; 42 | } else { 43 | link = 'resolve:' + requirePath; 44 | } 45 | } 46 | 47 | return link; 48 | }; 49 | 50 | module.exports = function($, type, url, dictionary, cb) { 51 | 52 | var $requires, $coffeeRequires, $item, name, link; 53 | var result = []; 54 | 55 | // Search for require dom elements 56 | $requires = $('span.nx').filter(function() { 57 | return $(this).text() === 'require'; 58 | }).next().next(); 59 | 60 | if (type === 'coffee') { 61 | $coffeeRequires = $('span.nx').filter(function() { 62 | return $(this).text() === 'require'; 63 | }).next(); 64 | $requires = $.merge($coffeeRequires, $requires); 65 | } 66 | 67 | $requires.each(function(index, item) { 68 | $item = $(item); 69 | 70 | name = stripQuotes($item); 71 | link = getRequireLink(dictionary, url, name); 72 | 73 | result.push({ 74 | el: $item, 75 | name: name, 76 | link: link 77 | }); 78 | }); 79 | cb(null, result); 80 | }; 81 | -------------------------------------------------------------------------------- /test/test_package_remote.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var githubLinkerCore = require('../'); 4 | var assert = require('should'); 5 | var _ = require('lodash'); 6 | var env = require('jsdom').env; 7 | 8 | describe('package.json', function() { 9 | 10 | describe('remote', function() { 11 | 12 | this.timeout(4000); 13 | 14 | var $, result; 15 | var url = 'https://github.com/stefanbuck/github-linker-core/blob/master/test/fixtures/package.json'; 16 | 17 | before(function(done) { 18 | $ = result = null; 19 | var options = { 20 | dictionary: { 21 | npm: { 22 | 'lodash': 'https://github.com/lodash/lodash' 23 | } 24 | } 25 | }; 26 | 27 | env(url, function(err, window) { 28 | if (err) { 29 | return done(err); 30 | } 31 | $ = require('jquery')(window); 32 | githubLinkerCore($, url, options, function(err, _result) { 33 | if (err) { 34 | throw err; 35 | } 36 | result = _result; 37 | done(); 38 | }); 39 | }); 40 | }); 41 | 42 | it('found dependencies', function() { 43 | 44 | // TODO Evaluate why this doesn't work 45 | // result.should.have.length(10); 46 | 47 | result.length.should.equal(10); 48 | }); 49 | 50 | it('check order', function() { 51 | result.length.should.equal(10); 52 | var pkgNames = ['lodash', 'request', 'modernizr', 'backbone', 'jquery', 'unknown-package-name', 'chai', 'gulp', 'yo', 'should']; 53 | _.each(result, function(item, index) { 54 | item.name.should.equal( pkgNames[index] ); 55 | }); 56 | }); 57 | 58 | it('check link replacement', function() { 59 | $('a.github-linker').length.should.equal(10); 60 | }); 61 | 62 | it('link https://github.com/lodash/lodash', function() { 63 | var item = _.findWhere(result, { 64 | name: 'lodash' 65 | }); 66 | 67 | (item.link === null).should.equal(false); 68 | item.link.should.equal('https://github.com/lodash/lodash'); 69 | }); 70 | 71 | it('link https://www.npmjs.org/package/request', function() { 72 | var item = _.findWhere(result, { 73 | name: 'request' 74 | }); 75 | 76 | (item.link === null).should.equal(false); 77 | item.link.should.equal('https://www.npmjs.org/package/request'); 78 | }); 79 | 80 | it('link https://github.com/Modernizr/Modernizr', function() { 81 | var item = _.findWhere(result, { 82 | name: 'modernizr' 83 | }); 84 | 85 | (item.link === null).should.equal(false); 86 | item.link.should.equal('https://github.com/Modernizr/Modernizr'); 87 | }); 88 | 89 | it('link https://github.com/jashkenas/backbone/tree/master', function() { 90 | var item = _.findWhere(result, { 91 | name: 'backbone' 92 | }); 93 | 94 | (item.link === null).should.equal(false); 95 | item.link.should.equal('https://github.com/jashkenas/backbone/tree/master'); 96 | }); 97 | 98 | it('link https://github.com/jquery/jquery/tree/1.x-master', function() { 99 | var item = _.findWhere(result, { 100 | name: 'jquery' 101 | }); 102 | 103 | (item.link === null).should.equal(false); 104 | item.link.should.equal('https://github.com/jquery/jquery/tree/1.x-master'); 105 | }); 106 | 107 | it('link https://www.npmjs.org/package/unknown-package-name', function() { 108 | var item = _.findWhere(result, { 109 | name: 'unknown-package-name' 110 | }); 111 | 112 | (item.link === null).should.equal(false); 113 | item.link.should.equal('https://www.npmjs.org/package/unknown-package-name'); 114 | }); 115 | }); 116 | }); 117 | -------------------------------------------------------------------------------- /test/test_package_local.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var githubLinkerCore = require('../'); 4 | var fs = require('fs'); 5 | var path = require('path'); 6 | var assert = require('should'); 7 | var _ = require('lodash'); 8 | var env = require('jsdom').env; 9 | 10 | describe('package.json', function() { 11 | 12 | describe('local', function() { 13 | var $, result; 14 | var url = 'https://github.com/stefanbuck/github-linker-core/blob/master/test/fixtures/package.json'; 15 | var file = path.resolve(__dirname, 'fixtures/package.html'); 16 | 17 | before(function(done) { 18 | $ = result = null; 19 | var html = fs.readFileSync(file, 'utf-8'); 20 | var options = { 21 | dictionary: { 22 | npm: { 23 | 'lodash': 'https://github.com/lodash/lodash' 24 | } 25 | } 26 | }; 27 | 28 | env(html, function(err, window) { 29 | if (err) { 30 | return done(err); 31 | } 32 | $ = require('jquery')(window); 33 | 34 | githubLinkerCore($, url, options, function(err, _result) { 35 | if (err) { 36 | throw err; 37 | } 38 | result = _result; 39 | done(); 40 | }); 41 | }); 42 | }); 43 | 44 | it('found dependencies', function() { 45 | 46 | // TODO Evaluate why this doesn't work 47 | // result.should.have.length(10); 48 | 49 | result.length.should.equal(10); 50 | }); 51 | 52 | it('check order', function() { 53 | result.length.should.equal(10); 54 | var pkgNames = ['lodash', 'request', 'modernizr', 'backbone', 'jquery', 'unknown-package-name', 'chai', 'gulp', 'yo', 'should']; 55 | _.each(result, function(item, index) { 56 | item.name.should.equal( pkgNames[index] ); 57 | }); 58 | }); 59 | 60 | it('check link replacement', function() { 61 | $('a.github-linker').length.should.equal(10); 62 | }); 63 | 64 | it('link https://github.com/lodash/lodash', function() { 65 | var item = _.findWhere(result, { 66 | name: 'lodash' 67 | }); 68 | 69 | (item.link === null).should.equal(false); 70 | item.link.should.equal('https://github.com/lodash/lodash'); 71 | }); 72 | 73 | it('link https://www.npmjs.org/package/request', function() { 74 | var item = _.findWhere(result, { 75 | name: 'request' 76 | }); 77 | 78 | (item.link === null).should.equal(false); 79 | item.link.should.equal('https://www.npmjs.org/package/request'); 80 | }); 81 | 82 | it('link https://github.com/Modernizr/Modernizr', function() { 83 | var item = _.findWhere(result, { 84 | name: 'modernizr' 85 | }); 86 | 87 | (item.link === null).should.equal(false); 88 | item.link.should.equal('https://github.com/Modernizr/Modernizr'); 89 | }); 90 | 91 | it('link https://github.com/jashkenas/backbone/tree/master', function() { 92 | var item = _.findWhere(result, { 93 | name: 'backbone' 94 | }); 95 | 96 | (item.link === null).should.equal(false); 97 | item.link.should.equal('https://github.com/jashkenas/backbone/tree/master'); 98 | }); 99 | 100 | it('link https://github.com/jquery/jquery/tree/1.x-master', function() { 101 | var item = _.findWhere(result, { 102 | name: 'jquery' 103 | }); 104 | 105 | (item.link === null).should.equal(false); 106 | item.link.should.equal('https://github.com/jquery/jquery/tree/1.x-master'); 107 | }); 108 | 109 | it('link https://www.npmjs.org/package/unknown-package-name', function() { 110 | var item = _.findWhere(result, { 111 | name: 'unknown-package-name' 112 | }); 113 | 114 | (item.link === null).should.equal(false); 115 | item.link.should.equal('https://www.npmjs.org/package/unknown-package-name'); 116 | }); 117 | }); 118 | }); 119 | -------------------------------------------------------------------------------- /test/test_require_remote.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var githubLinkerCore = require('../'); 4 | var fs = require('fs'); 5 | var path = require('path'); 6 | var assert = require('should'); 7 | var _ = require('lodash'); 8 | var env = require('jsdom').env; 9 | 10 | describe('require.js', function() { 11 | 12 | describe('local', function() { 13 | var $, result; 14 | var url = 'https://github.com/stefanbuck/github-linker-core/blob/master/test/fixtures/require.js'; 15 | var file = path.resolve(__dirname, 'fixtures/require.html'); 16 | 17 | before(function(done) { 18 | $ = result = null; 19 | var options = { 20 | dictionary: { 21 | npm: { 22 | 'lodash': 'https://github.com/lodash/lodash' 23 | } 24 | } 25 | }; 26 | 27 | env(url, function(err, window) { 28 | if (err) { 29 | return done(err); 30 | } 31 | $ = require('jquery')(window); 32 | 33 | githubLinkerCore($, url, options, function(err, _result) { 34 | if (err) { 35 | throw err; 36 | } 37 | result = _result; 38 | done(); 39 | }); 40 | }); 41 | }); 42 | 43 | it('found dependencies', function() { 44 | 45 | // TODO Evaluate why this doesn't work 46 | // result.should.have.length(20); 47 | 48 | result.length.should.equal(20); 49 | }); 50 | 51 | it('http://nodejs.org/api/path.html', function() { 52 | var item = _.findWhere(result, { 53 | name: 'path' 54 | }); 55 | 56 | (item.link === null).should.equal(false); 57 | item.link.should.equal('http://nodejs.org/api/path.html'); 58 | }); 59 | 60 | it('https://github.com/lodash/lodash', function() { 61 | var item = _.findWhere(result, { 62 | name: 'lodash' 63 | }); 64 | 65 | (item.link === null).should.equal(false); 66 | item.link.should.equal('https://github.com/lodash/lodash'); 67 | }); 68 | 69 | it.skip('unknown-package-name', function() { 70 | var item = _.findWhere(result, { 71 | name: 'unknown-package-name' 72 | }); 73 | 74 | (item.link === null).should.equal(false); 75 | item.link.should.equal('tbd'); 76 | }); 77 | 78 | it('./file.js', function() { 79 | var item = _.findWhere(result, { 80 | name: './file.js' 81 | }); 82 | 83 | (item.link === null).should.equal(false); 84 | item.link.should.equal('/stefanbuck/github-linker-core/blob/master/test/fixtures/file.js'); 85 | }); 86 | 87 | it('./folder/file.js', function() { 88 | var item = _.findWhere(result, { 89 | name: './folder/file.js' 90 | }); 91 | 92 | (item.link === null).should.equal(false); 93 | item.link.should.equal('/stefanbuck/github-linker-core/blob/master/test/fixtures/folder/file.js'); 94 | }); 95 | 96 | it('./file-or-folder', function() { 97 | var item = _.findWhere(result, { 98 | name: './file-or-folder' 99 | }); 100 | 101 | (item.link === null).should.equal(false); 102 | item.link.should.equal('resolve:/stefanbuck/github-linker-core/blob/master/test/fixtures/file-or-folder'); 103 | }); 104 | 105 | it('../file.js', function() { 106 | var item = _.findWhere(result, { 107 | name: '../file.js' 108 | }); 109 | 110 | (item.link === null).should.equal(false); 111 | item.link.should.equal('/stefanbuck/github-linker-core/blob/master/test/file.js'); 112 | }); 113 | 114 | it('../folder/file.js', function() { 115 | var item = _.findWhere(result, { 116 | name: '../folder/file.js' 117 | }); 118 | 119 | (item.link === null).should.equal(false); 120 | item.link.should.equal('/stefanbuck/github-linker-core/blob/master/test/folder/file.js'); 121 | }); 122 | 123 | it('../file-or-folder', function() { 124 | var item = _.findWhere(result, { 125 | name: '../file-or-folder' 126 | }); 127 | 128 | (item.link === null).should.equal(false); 129 | item.link.should.equal('resolve:/stefanbuck/github-linker-core/blob/master/test/file-or-folder'); 130 | }); 131 | 132 | it('../../file.js', function() { 133 | var item = _.findWhere(result, { 134 | name: '../../file.js' 135 | }); 136 | 137 | (item.link === null).should.equal(false); 138 | item.link.should.equal('/stefanbuck/github-linker-core/blob/master/file.js'); 139 | }); 140 | 141 | it('../../folder/file.js', function() { 142 | var item = _.findWhere(result, { 143 | name: '../../folder/file.js' 144 | }); 145 | 146 | (item.link === null).should.equal(false); 147 | item.link.should.equal('/stefanbuck/github-linker-core/blob/master/folder/file.js'); 148 | }); 149 | 150 | it('../../file-or-folder', function() { 151 | var item = _.findWhere(result, { 152 | name: '../../file-or-folder' 153 | }); 154 | 155 | (item.link === null).should.equal(false); 156 | item.link.should.equal('resolve:/stefanbuck/github-linker-core/blob/master/file-or-folder'); 157 | }); 158 | 159 | it('./', function() { 160 | var item = _.findWhere(result, { 161 | name: './' 162 | }); 163 | 164 | (item.link === null).should.equal(false); 165 | item.link.should.equal('resolve:/stefanbuck/github-linker-core/blob/master/test/fixtures'); 166 | }); 167 | 168 | it('..', function() { 169 | var item = _.findWhere(result, { 170 | name: '..' 171 | }); 172 | 173 | (item.link === null).should.equal(false); 174 | item.link.should.equal('resolve:/stefanbuck/github-linker-core/blob/master/test'); 175 | }); 176 | 177 | it('../', function() { 178 | var item = _.findWhere(result, { 179 | name: '../' 180 | }); 181 | 182 | (item.link === null).should.equal(false); 183 | item.link.should.equal('resolve:/stefanbuck/github-linker-core/blob/master/test'); 184 | }); 185 | 186 | it('../..', function() { 187 | var item = _.findWhere(result, { 188 | name: '../..' 189 | }); 190 | 191 | (item.link === null).should.equal(false); 192 | item.link.should.equal('resolve:/stefanbuck/github-linker-core/blob/master'); 193 | }); 194 | 195 | it('../../', function() { 196 | var item = _.findWhere(result, { 197 | name: '../../' 198 | }); 199 | 200 | (item.link === null).should.equal(false); 201 | item.link.should.equal('resolve:/stefanbuck/github-linker-core/blob/master'); 202 | }); 203 | 204 | it.skip('.', function() { 205 | var item = _.findWhere(result, { 206 | name: '.' 207 | }); 208 | 209 | (item.link === null).should.equal(false); 210 | item.link.should.equal('tbd'); 211 | }); 212 | 213 | it.skip('...', function() { 214 | var item = _.findWhere(result, { 215 | name: '...' 216 | }); 217 | 218 | (item.link === null).should.equal(false); 219 | item.link.should.equal('tbd'); 220 | }); 221 | 222 | it.skip('/', function() { 223 | var item = _.findWhere(result, { 224 | name: '/' 225 | }); 226 | 227 | (item.link === null).should.equal(false); 228 | item.link.should.equal('tbd'); 229 | }); 230 | 231 | }); 232 | }); 233 | -------------------------------------------------------------------------------- /test/test_require_local.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var githubLinkerCore = require('../'); 4 | var fs = require('fs'); 5 | var path = require('path'); 6 | var assert = require('should'); 7 | var _ = require('lodash'); 8 | var env = require('jsdom').env; 9 | 10 | describe('require.js', function() { 11 | 12 | describe('local', function() { 13 | var $, result; 14 | var url = 'https://github.com/stefanbuck/github-linker-core/blob/master/test/fixtures/require.js'; 15 | var file = path.resolve(__dirname, 'fixtures/require.html'); 16 | 17 | before(function(done) { 18 | $ = result = null; 19 | var html = fs.readFileSync(file, 'utf-8'); 20 | var options = { 21 | dictionary: { 22 | npm: { 23 | 'lodash': 'https://github.com/lodash/lodash' 24 | } 25 | } 26 | }; 27 | 28 | env(html, function(err, window) { 29 | if (err) { 30 | return done(err); 31 | } 32 | $ = require('jquery')(window); 33 | 34 | githubLinkerCore($, url, options, function(err, _result) { 35 | if (err) { 36 | throw err; 37 | } 38 | result = _result; 39 | done(); 40 | }); 41 | }); 42 | }); 43 | 44 | it('found dependencies', function() { 45 | 46 | // TODO Evaluate why this doesn't work 47 | // result.should.have.length(20); 48 | 49 | result.length.should.equal(20); 50 | }); 51 | 52 | it('http://nodejs.org/api/path.html', function() { 53 | var item = _.findWhere(result, { 54 | name: 'path' 55 | }); 56 | 57 | (item.link === null).should.equal(false); 58 | item.link.should.equal('http://nodejs.org/api/path.html'); 59 | }); 60 | 61 | it('https://github.com/lodash/lodash', function() { 62 | var item = _.findWhere(result, { 63 | name: 'lodash' 64 | }); 65 | 66 | (item.link === null).should.equal(false); 67 | item.link.should.equal('https://github.com/lodash/lodash'); 68 | }); 69 | 70 | it.skip('unknown-package-name', function() { 71 | var item = _.findWhere(result, { 72 | name: 'unknown-package-name' 73 | }); 74 | 75 | (item.link === null).should.equal(false); 76 | item.link.should.equal('tbd'); 77 | }); 78 | 79 | it('./file.js', function() { 80 | var item = _.findWhere(result, { 81 | name: './file.js' 82 | }); 83 | 84 | (item.link === null).should.equal(false); 85 | item.link.should.equal('/stefanbuck/github-linker-core/blob/master/test/fixtures/file.js'); 86 | }); 87 | 88 | it('./folder/file.js', function() { 89 | var item = _.findWhere(result, { 90 | name: './folder/file.js' 91 | }); 92 | 93 | (item.link === null).should.equal(false); 94 | item.link.should.equal('/stefanbuck/github-linker-core/blob/master/test/fixtures/folder/file.js'); 95 | }); 96 | 97 | it('./file-or-folder', function() { 98 | var item = _.findWhere(result, { 99 | name: './file-or-folder' 100 | }); 101 | 102 | (item.link === null).should.equal(false); 103 | item.link.should.equal('resolve:/stefanbuck/github-linker-core/blob/master/test/fixtures/file-or-folder'); 104 | }); 105 | 106 | it('../file.js', function() { 107 | var item = _.findWhere(result, { 108 | name: '../file.js' 109 | }); 110 | 111 | (item.link === null).should.equal(false); 112 | item.link.should.equal('/stefanbuck/github-linker-core/blob/master/test/file.js'); 113 | }); 114 | 115 | it('../folder/file.js', function() { 116 | var item = _.findWhere(result, { 117 | name: '../folder/file.js' 118 | }); 119 | 120 | (item.link === null).should.equal(false); 121 | item.link.should.equal('/stefanbuck/github-linker-core/blob/master/test/folder/file.js'); 122 | }); 123 | 124 | it('../file-or-folder', function() { 125 | var item = _.findWhere(result, { 126 | name: '../file-or-folder' 127 | }); 128 | 129 | (item.link === null).should.equal(false); 130 | item.link.should.equal('resolve:/stefanbuck/github-linker-core/blob/master/test/file-or-folder'); 131 | }); 132 | 133 | it('../../file.js', function() { 134 | var item = _.findWhere(result, { 135 | name: '../../file.js' 136 | }); 137 | 138 | (item.link === null).should.equal(false); 139 | item.link.should.equal('/stefanbuck/github-linker-core/blob/master/file.js'); 140 | }); 141 | 142 | it('../../folder/file.js', function() { 143 | var item = _.findWhere(result, { 144 | name: '../../folder/file.js' 145 | }); 146 | 147 | (item.link === null).should.equal(false); 148 | item.link.should.equal('/stefanbuck/github-linker-core/blob/master/folder/file.js'); 149 | }); 150 | 151 | it('../../file-or-folder', function() { 152 | var item = _.findWhere(result, { 153 | name: '../../file-or-folder' 154 | }); 155 | 156 | (item.link === null).should.equal(false); 157 | item.link.should.equal('resolve:/stefanbuck/github-linker-core/blob/master/file-or-folder'); 158 | }); 159 | 160 | it('./', function() { 161 | var item = _.findWhere(result, { 162 | name: './' 163 | }); 164 | 165 | (item.link === null).should.equal(false); 166 | item.link.should.equal('resolve:/stefanbuck/github-linker-core/blob/master/test/fixtures'); 167 | }); 168 | 169 | it('..', function() { 170 | var item = _.findWhere(result, { 171 | name: '..' 172 | }); 173 | 174 | (item.link === null).should.equal(false); 175 | item.link.should.equal('resolve:/stefanbuck/github-linker-core/blob/master/test'); 176 | }); 177 | 178 | it('../', function() { 179 | var item = _.findWhere(result, { 180 | name: '../' 181 | }); 182 | 183 | (item.link === null).should.equal(false); 184 | item.link.should.equal('resolve:/stefanbuck/github-linker-core/blob/master/test'); 185 | }); 186 | 187 | it('../..', function() { 188 | var item = _.findWhere(result, { 189 | name: '../..' 190 | }); 191 | 192 | (item.link === null).should.equal(false); 193 | item.link.should.equal('resolve:/stefanbuck/github-linker-core/blob/master'); 194 | }); 195 | 196 | it('../../', function() { 197 | var item = _.findWhere(result, { 198 | name: '../../' 199 | }); 200 | 201 | (item.link === null).should.equal(false); 202 | item.link.should.equal('resolve:/stefanbuck/github-linker-core/blob/master'); 203 | }); 204 | 205 | it.skip('.', function() { 206 | var item = _.findWhere(result, { 207 | name: '.' 208 | }); 209 | 210 | (item.link === null).should.equal(false); 211 | item.link.should.equal('tbd'); 212 | }); 213 | 214 | it.skip('...', function() { 215 | var item = _.findWhere(result, { 216 | name: '...' 217 | }); 218 | 219 | (item.link === null).should.equal(false); 220 | item.link.should.equal('tbd'); 221 | }); 222 | 223 | it.skip('/', function() { 224 | var item = _.findWhere(result, { 225 | name: '/' 226 | }); 227 | 228 | (item.link === null).should.equal(false); 229 | item.link.should.equal('tbd'); 230 | }); 231 | 232 | }); 233 | }); 234 | -------------------------------------------------------------------------------- /test/fixtures/require.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | github-linker-core/require.js at master · stefanbuck/github-linker-core · GitHub 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | Skip to content 61 |
62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 |
70 |
71 | 72 | 73 | 74 | 75 | 76 |
77 | Sign up 78 | 79 |
80 | 81 | 95 | 96 | 110 | 111 |
112 |
113 | 114 | 115 | 116 |
117 |
118 |
119 | 120 |
121 |
122 |
123 | 124 | 153 | 154 |

155 | 156 | /github-linker-core 159 | 160 | 161 | 162 | 163 | 164 |

165 |
166 |
167 | 168 |
169 |
170 |
171 | 172 |
173 |
174 | 197 |
198 | 212 | 213 | 214 |
215 |
216 | 217 |
218 | 219 | 220 |
223 |

HTTPS clone URL

224 |
225 | 227 | 228 | 229 | 230 |
231 |
232 | 233 | 234 |
237 |

Subversion checkout URL

238 |
239 | 241 | 242 | 243 | 244 |
245 |
246 | 247 | 248 |

You can clone with 249 | HTTPS 250 | or Subversion. 251 | 252 | 253 | 254 |

255 | 256 | 257 | 258 | Clone in Desktop 259 | 260 | 261 | 262 | 267 | 268 | Download ZIP 269 | 270 |
271 |
272 | 273 |
274 | 275 | 276 | 277 | 278 | 279 | 280 |
281 | 282 |
283 | 288 | 289 | branch: 290 | master 291 | 292 | 293 | 347 |
348 | 349 |
350 | 355 | 356 | 357 | 363 |
364 | 365 | 368 |
369 | 370 | 371 |
372 |
373 | Stefan Buck 374 | 375 | 376 | 379 |
380 | 381 |
382 |

383 | 384 | 1 385 | contributor 386 | 387 |

388 | 389 |
390 | 399 |
400 | 401 |
402 |
403 |
404 |
405 | 27 lines (20 sloc) 406 | 407 | 1.445 kb 408 |
409 |
410 |
411 | Raw 412 | Blame 413 | History 414 |
415 | 416 | 421 | 422 | 423 | 424 | 426 | 427 | 429 | 430 | 431 |
432 |
433 | 434 |
435 | 436 | 437 | 438 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 457 | 458 | 459 | 460 | 461 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 491 | 492 | 493 | 494 | 495 | 496 | 497 | 498 | 499 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 508 | 509 | 510 | 511 | 512 | 513 | 514 | 515 | 516 | 517 | 518 | 519 | 520 | 521 | 522 | 523 | 524 | 525 | 526 | 527 | 528 | 529 | 530 | 531 | 533 | 534 | 535 | 536 | 537 | 538 | 539 | 540 | 541 | 542 | 543 | 544 | 545 | 546 |
439 |
require('path'); // => http://nodejs.org/api/path.html
require('lodash'); // => https://github.com/lodash/lodash
require('unknown-package-name'); // => tbd
456 |
require('./file.js'); //=> /stefanbuck/github-linker-core/blob/master/test/fixtures/file.js
require('./folder/file.js'); //=> /stefanbuck/github-linker-core/blob/master/test/fixtures/folder/file.js
require('./file-or-folder'); // => /stefanbuck/github-linker-core/blob/master/test/fixtures/file-or-folder
473 |
require('../file.js'); //=> /stefanbuck/github-linker-core/blob/master/test/file.js
require('../folder/file.js'); //=> /stefanbuck/github-linker-core/blob/master/test/folder/file.js
require('../file-or-folder'); // => /stefanbuck/github-linker-core/blob/master/test/file-or-folder
490 |
require('../../file.js'); //=> /stefanbuck/github-linker-core/blob/master/file.js
require('../../folder/file.js'); //=> /stefanbuck/github-linker-core/blob/master/folder/file.js
require('../../file-or-folder'); // => /stefanbuck/github-linker-core/blob/master/file-or-folder
507 |
require('./'); //=> /stefanbuck/github-linker-core/blob/master/test/fixtures
require('..'); //=> /stefanbuck/github-linker-core/blob/master/test
require('../'); //=> /stefanbuck/github-linker-core/blob/master/test
require('../..'); //=> /stefanbuck/github-linker-core/blob/master
require('../../'); //=> /stefanbuck/github-linker-core/blob/master
532 |
require('.'); // => tbd
require('...'); // => tbd
require('/'); // => tbd
547 | 548 |
549 | 550 |
551 |
552 | 553 | Jump to Line 554 | 560 | 561 |
562 | 563 |
564 | 565 |
566 |
567 | 568 | 569 |
570 | 571 |
572 | 595 |
596 | 597 | 598 |
599 |
600 |
601 | 602 |
603 |
604 |
605 | 606 | 607 | 608 | 610 | 611 | 612 |
613 |
614 | 615 | 616 | 617 |
618 | 619 | 620 | Something went wrong with that request. Please try again. 621 |
622 | 623 | 624 | 625 | 626 | 627 | 628 | 629 | 630 | 631 | -------------------------------------------------------------------------------- /test/fixtures/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | playground-repo/package.json at master · stefanbuck/playground-repo · GitHub 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | Skip to content 60 |
61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 |
69 |
70 | 71 | 72 | 73 | 74 | 75 |
76 | Sign up 77 | 78 |
79 | 80 | 86 | 87 | 101 | 102 |
103 |
104 | 105 | 106 | 107 |
108 |
109 |
110 | 111 |
112 |
113 |
114 | 115 | 140 | 141 |

142 | 143 | /playground-repo 146 | 147 | 148 | 149 | 150 | 151 |

152 |
153 |
154 | 155 |
156 |
157 |
158 | 159 |
160 |
161 | 184 |
185 | 199 | 200 | 201 |
202 |
203 | 204 |
205 | 206 | 207 |
208 |

HTTPS clone URL

209 |
210 | 211 | 212 | 213 | 214 |
215 |
216 | 217 | 218 |
219 |

Subversion checkout URL

220 |
221 | 222 | 223 | 224 | 225 |
226 |
227 | 228 | 229 |

You can clone with 230 | HTTPS 231 | or Subversion. 232 | 233 | 234 | 235 |

236 | 237 | 238 | 239 | Clone in Desktop 240 | 241 | 242 | 243 | 244 | 245 | Download ZIP 246 | 247 |
248 |
249 | 250 |
251 | 252 | 253 | 254 | 255 | 256 | 257 |
258 | 259 |
260 | 261 | 262 | branch: 263 | master 264 | 265 | 266 | 319 |
320 | 321 |
322 | 323 | 324 | 325 | 328 |
329 | 330 | 333 |
334 | 335 | 336 |
337 |
338 | Stefan Buck 339 | 340 | 341 |
342 | Update package.json 343 |
344 |
345 | 346 |
347 |

348 | 349 | 1 350 | contributor 351 | 352 |

353 | 354 |
355 | 364 |
365 | 366 |
367 |
368 |
369 |
370 | 42 lines (41 sloc) 371 | 372 | 1.173 kb 373 |
374 |
375 |
376 | Raw 377 | Blame 378 | History 379 |
380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 |
391 |
392 | 393 |
394 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | 461 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 496 | 497 | 498 | 499 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 509 | 510 | 511 | 512 | 513 | 514 | 515 | 516 | 517 | 518 | 519 | 520 | 521 | 522 | 523 | 524 | 525 | 526 | 527 | 528 | 529 | 530 | 531 | 532 | 533 | 534 | 535 | 536 | 537 | 538 | 539 | 540 | 541 | 542 | 543 | 544 | 545 | 546 | 547 | 548 | 549 | 550 | 551 | 552 | 553 | 554 | 555 | 556 | 557 | 558 | 559 |
{
"name": "playground-repo",
"description": "My personal playground",
"version": "0.0.1",
"homepage": "https://github.com/stefanbuck/playground-repo",
"bugs": "https://github.com/stefanbuck/playground-repo/issues",
"license": "MIT",
"main": "index.js",
"author": {
"name": "Stefan Buck",
"email": "dev@stefanbuck.com",
"url": "http://stefanbuck.com"
},
"repository": {
"type": "git",
"url": "https://github.com/stefanbuck/playground-repo"
},
"keywords": [],
"dependencies": {
"lodash": "2.4.1",
"request": "^2.40.0",
"modernizr": "Modernizr/Modernizr",
"backbone": "jashkenas/backbone#master",
"jquery": "jquery/jquery#1.x-master",
"unknown-package-name": "latest"
},
"devDependencies": {
"chai": "^1.9.1",
"gulp": "^3.6.2"
},
"optionalDependencies": {
"should": "^3.3.1"
},
"peerDependencies": {
"yo": ">=1.0.0"
},
"scripts": {
"coveralls": "gulp test && cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js",
"test": "gulp test"
}
}
560 | 561 |
562 | 563 |
564 |
565 | 566 | Jump to Line 567 | 573 | 574 |
575 | 576 |
577 | 578 |
579 |
580 | 581 | 582 |
583 | 584 |
585 | 608 |
609 | 610 | 611 |
612 |
613 |
614 | 615 |
616 |
617 |
618 | 619 | 620 | 621 | 622 | 623 | 624 |
625 |
626 | 627 | 628 | 629 |
630 | 631 | 632 | Something went wrong with that request. Please try again. 633 |
634 | 635 | 636 | 637 | 638 | 639 | 640 | 641 | 642 | 643 | 644 |
--------------------------------------------------------------------------------