Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2a3b629a9c |
@@ -1,6 +1,7 @@
|
||||
sudo: false
|
||||
language: node_js
|
||||
node_js:
|
||||
- '1'
|
||||
- '2'
|
||||
- '4'
|
||||
addons:
|
||||
|
||||
25
History.md
25
History.md
@@ -1,29 +1,4 @@
|
||||
|
||||
2.4.1 / 2015-10-27
|
||||
==================
|
||||
|
||||
* fix: improve registry index page performance with cache
|
||||
* Configable badge URL prefix.
|
||||
* chore(package): update koa-mock to version 1.5.0
|
||||
* chore(package): update urllib to version 2.5.0
|
||||
* chore(package): update co to version 4.6.0
|
||||
* chore(package): update semver to version 5.0.3
|
||||
|
||||
2.4.0 / 2015-10-21
|
||||
==================
|
||||
|
||||
* feat(registry): add package's dependents api
|
||||
* fix: show package's dependents
|
||||
* chore(package): update utility to version 1.5.0
|
||||
* chore(package): update bluebird to version 2.10.2
|
||||
|
||||
2.3.1 / 2015-10-15
|
||||
==================
|
||||
|
||||
* refactor: remove gnode
|
||||
* deps: upgrade giturl
|
||||
* Some fixes
|
||||
|
||||
2.3.0 / 2015-10-15
|
||||
==================
|
||||
|
||||
|
||||
3
Makefile
3
Makefile
@@ -22,7 +22,7 @@ jshint: install
|
||||
@-node_modules/.bin/jshint ./
|
||||
|
||||
init-database:
|
||||
@$(BIN) test/init_db.js
|
||||
@$(BIN) --harmony test/init_db.js
|
||||
|
||||
init-mysql:
|
||||
@mysql -uroot -e 'DROP DATABASE IF EXISTS cnpmjs_test;'
|
||||
@@ -34,6 +34,7 @@ init-pg:
|
||||
|
||||
test: install init-database
|
||||
@NODE_ENV=test DB=${DB} node_modules/.bin/mocha \
|
||||
--harmony \
|
||||
--reporter $(REPORTER) \
|
||||
--timeout $(TIMEOUT) \
|
||||
--require should \
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
/**!
|
||||
* Copyright(c) cnpm and other contributors.
|
||||
* cnpmjs.org - bin/cli.js
|
||||
*
|
||||
* Copyright(c) fengmk2 and other contributors.
|
||||
* MIT Licensed
|
||||
*
|
||||
* Authors:
|
||||
@@ -14,6 +16,7 @@
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
require('gnode');
|
||||
var debug = require('debug')('cnpmjs.org:cli');
|
||||
var program = require('commander');
|
||||
var path = require('path');
|
||||
|
||||
@@ -7,7 +7,7 @@ export NODE_ENV='production'
|
||||
ulimit -c unlimited
|
||||
|
||||
cd `dirname $0`/..
|
||||
NODEJS='node'
|
||||
NODEJS='node --harmony'
|
||||
BASE_HOME=`pwd`
|
||||
PROJECT_NAME=`basename ${BASE_HOME}`
|
||||
STDOUT_LOG=`$NODEJS -e "console.log(require('path').join(require('$BASE_HOME/config').logdir, 'nodejs_stdout.log'));\
|
||||
|
||||
@@ -174,12 +174,12 @@ var config = {
|
||||
// cnpm wont directly sync from this one
|
||||
// but sometimes will request it for some package infomations
|
||||
// please don't change it if not necessary
|
||||
officialNpmRegistry: 'https://registry.npmjs.com',
|
||||
officialNpmRegistry: 'https://registry.npmjs.org',
|
||||
|
||||
// sync source, upstream registry
|
||||
// If you want to directly sync from official npm's registry
|
||||
// please drop them an email first
|
||||
sourceNpmRegistry: 'https://registry.npm.taobao.org',
|
||||
sourceNpmRegistry: 'http://registry.npm.taobao.org',
|
||||
|
||||
// upstream registry is base on cnpm/cnpmjs.org or not
|
||||
// if your upstream is official npm registry, please turn it off
|
||||
@@ -210,7 +210,6 @@ var config = {
|
||||
syncDevDependencies: false,
|
||||
|
||||
// badge subject on http://shields.io/
|
||||
badgePrefixURL: 'https://img.shields.io/badge',
|
||||
badgeSubject: 'cnpm',
|
||||
|
||||
// custom user service, @see https://github.com/cnpm/cnpmjs.org/wiki/Use-Your-Own-User-Authorization
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
/**!
|
||||
* list package's dependents
|
||||
*
|
||||
* Copyright(c) cnpmjs.org and other contributors.
|
||||
* MIT Licensed
|
||||
*
|
||||
* Authors:
|
||||
* fengmk2 <m@fengmk2.com> (http://fengmk2.com)
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
const packageService = require('../../../services/package');
|
||||
|
||||
module.exports = function*() {
|
||||
const name = this.params.name || this.params[0];
|
||||
const dependents = yield packageService.listDependents(name);
|
||||
|
||||
this.body = {
|
||||
dependents: dependents,
|
||||
};
|
||||
};
|
||||
@@ -1,9 +1,11 @@
|
||||
/**!
|
||||
* Copyright(c) cnpm and other contributors.
|
||||
* cnpmjs.org - controllers/registry/package/list_shorts.js
|
||||
*
|
||||
* Copyright(c) fengmk2 and other contributors.
|
||||
* MIT Licensed
|
||||
*
|
||||
* Authors:
|
||||
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.com)
|
||||
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.github.com)
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
@@ -17,5 +19,5 @@ var packageService = require('../../../services/package');
|
||||
// GET /-/short
|
||||
// List all packages names only
|
||||
module.exports = function* () {
|
||||
this.body = yield packageService.listAllPublicModuleNames();
|
||||
this.body = yield* packageService.listAllPublicModuleNames();
|
||||
};
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
/**!
|
||||
* Copyright(c) cnpm and other contributors.
|
||||
* cnpmjs.js - controllers/registry/package/show.js
|
||||
*
|
||||
* Copyright(c) fengmk2 and other contributors.
|
||||
* MIT Licensed
|
||||
*
|
||||
* Authors:
|
||||
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.com)
|
||||
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.github.com)
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
/**!
|
||||
* Copyright(c) cnpm and other contributors.
|
||||
* cnpmjs.org - controllers/total.js
|
||||
*
|
||||
* Copyright(c) cnpmjs.org and other contributors.
|
||||
* MIT Licensed
|
||||
*
|
||||
* Authors:
|
||||
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.com)
|
||||
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.github.com)
|
||||
* dead_horse <dead_horse@qq.com> (http://deadhorse.me)
|
||||
*/
|
||||
|
||||
@@ -13,24 +15,17 @@
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
const Total = require('../services/total');
|
||||
const version = require('../package.json').version;
|
||||
const config = require('../config');
|
||||
const getDownloadTotal = require('./utils').getDownloadTotal;
|
||||
var Total = require('../services/total');
|
||||
var version = require('../package.json').version;
|
||||
var config = require('../config');
|
||||
var getDownloadTotal = require('./utils').getDownloadTotal;
|
||||
|
||||
const startTime = '' + Date.now();
|
||||
let cache = null;
|
||||
var startTime = '' + Date.now();
|
||||
|
||||
module.exports = function* showTotal() {
|
||||
if (cache && Date.now() - cache.cache_time < 10000) {
|
||||
// cache 10 seconds
|
||||
this.body = cache;
|
||||
return;
|
||||
}
|
||||
|
||||
const r = yield [Total.get(), getDownloadTotal()];
|
||||
const total = r[0];
|
||||
const download = r[1];
|
||||
var r = yield [Total.get(), getDownloadTotal()];
|
||||
var total = r[0];
|
||||
var download = r[1];
|
||||
|
||||
total.download = download;
|
||||
total.db_name = 'registry';
|
||||
@@ -40,8 +35,5 @@ module.exports = function* showTotal() {
|
||||
total.donate = 'https://www.gittip.com/fengmk2';
|
||||
total.sync_model = config.syncModel;
|
||||
|
||||
cache = total;
|
||||
total.cache_time = Date.now();
|
||||
|
||||
this.body = total;
|
||||
};
|
||||
|
||||
@@ -46,7 +46,7 @@ exports.version = function* () {
|
||||
}
|
||||
version = version.replace(/\-/g, '--');
|
||||
var style = this.query.style || 'flat-square';
|
||||
var url = util.format(config.badgePrefixURL + '/%s-%s-%s.svg?style=%s',
|
||||
var url = util.format('https://dn-img-shields-io.qbox.me/badge/%s-%s-%s.svg?style=%s',
|
||||
utility.encodeURIComponent(subject), version, color, utility.encodeURIComponent(style));
|
||||
this.redirect(url);
|
||||
};
|
||||
@@ -56,7 +56,7 @@ exports.downloads = function* () {
|
||||
var name = this.params[0];
|
||||
var count = yield DownloadTotal.getTotalByName(name);
|
||||
var style = this.query.style || 'flat-square';
|
||||
var url = util.format(config.badgePrefixURL + '/downloads-%s-brightgreen.svg?style=%s',
|
||||
var url = util.format('https://dn-img-shields-io.qbox.me/badge/downloads-%s-brightgreen.svg?style=%s',
|
||||
count, utility.encodeURIComponent(style));
|
||||
this.redirect(url);
|
||||
};
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
/**!
|
||||
* Copyright(c) cnpm and other contributors.
|
||||
* cnpmjs.org - controllers/web/package/show.js
|
||||
*
|
||||
* Copyright(c) cnpmjs.org and other contributors.
|
||||
* MIT Licensed
|
||||
*
|
||||
* Authors:
|
||||
* dead_horse <dead_horse@qq.com> (http://deadhorse.me)
|
||||
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.com)
|
||||
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.github.com)
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
@@ -177,7 +179,7 @@ module.exports = function* show(next) {
|
||||
pkg.engines[k] = {
|
||||
version: engine,
|
||||
title: k + ': ' + engine,
|
||||
badgeURL: config.badgePrefixURL + '/' + encodeURIComponent(k) +
|
||||
badgeURL: 'https://dn-img-shields-io.qbox.me/badge/' + encodeURIComponent(k) +
|
||||
'-' + encodeURIComponent(engine) + '-' + color + '.svg?style=flat-square',
|
||||
};
|
||||
}
|
||||
|
||||
@@ -35,9 +35,9 @@ So `cnpm` is meaning: **Company npm**.
|
||||
<h3>Sync Status</h3>
|
||||
<p id="sync-model"></p>
|
||||
<p>Last sync time is <span id="last-sync-time"></span>. </p>
|
||||
<div class="ant-alert ant-alert-info syncing">
|
||||
<div class="ant-alert ant-alert-info">
|
||||
<span class="anticon ant-alert-icon anticon-info-circle"></span>
|
||||
<span class="ant-alert-description">The sync worker is working in the backend now. </span>
|
||||
<span class="syncing ant-alert-description">The sync worker is working in the backend now. </span>
|
||||
</div>
|
||||
<div class="ant-table">
|
||||
<table class="sync-status">
|
||||
|
||||
21
package.json
21
package.json
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "cnpmjs.org",
|
||||
"version": "2.4.1",
|
||||
"version": "2.3.0",
|
||||
"description": "Private npm registry and web for Enterprise, base on MySQL and Simple Store Service",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
@@ -14,10 +14,10 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"agentkeepalive": "~1.2.0",
|
||||
"bluebird": "~2.10.2",
|
||||
"bluebird": "~2.9.7",
|
||||
"bytes": "~1.0.0",
|
||||
"cfork": "~1.3.1",
|
||||
"co": "~4.6.0",
|
||||
"co": "~4.3.1",
|
||||
"co-defer": "~1.0.0",
|
||||
"co-gather": "~0.0.1",
|
||||
"co-sleep": "~0.0.1",
|
||||
@@ -26,7 +26,8 @@
|
||||
"debug": "~2.2.0",
|
||||
"error-formater": "~1.0.3",
|
||||
"fs-cnpm": "~1.2.0",
|
||||
"giturl": "^1.0.0",
|
||||
"giturl": "~0.0.3",
|
||||
"gnode": "~0.1.1",
|
||||
"graceful": "~1.0.0",
|
||||
"gravatar": "~1.1.0",
|
||||
"humanize-ms": "~1.0.1",
|
||||
@@ -37,7 +38,7 @@
|
||||
"koa-limit": "~1.0.2",
|
||||
"koa-markdown": "~2.0.1",
|
||||
"koa-middlewares": "~2.1.0",
|
||||
"koa-mock": "~1.5.0",
|
||||
"koa-mock": "~1.1.4",
|
||||
"koa-safe-jsonp": "~0.3.0",
|
||||
"markdown-it": "~3.0.6",
|
||||
"mime": "~1.3.4",
|
||||
@@ -46,13 +47,13 @@
|
||||
"moment": "~2.10.6",
|
||||
"mysql": "~2.5.4",
|
||||
"nodemailer": "~1.3.0",
|
||||
"semver": "~5.0.3",
|
||||
"semver": "~4.2.0",
|
||||
"sequelize": "~2.0.1",
|
||||
"thunkify-wrap": "~1.0.4",
|
||||
"treekill": "~1.0.0",
|
||||
"tunnel-agent": "^0.4.0",
|
||||
"urllib": "~2.5.0",
|
||||
"utility": "~1.5.0",
|
||||
"urllib": "~2.2.2",
|
||||
"utility": "~1.3.0",
|
||||
"xss": "~0.1.20"
|
||||
},
|
||||
"devDependencies": {
|
||||
@@ -91,10 +92,10 @@
|
||||
"registry"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">= 2.0.0"
|
||||
"node": ">= 1.0.0"
|
||||
},
|
||||
"author": [
|
||||
"fengmk2 <fengmk2@gmail.com> (http://fengmk2.com)",
|
||||
"fengmk2 <fengmk2@gmail.com> (http://fengmk2.github.com)",
|
||||
"dead_horse <dead_horse@qq.com> (http://deadhorse.me)"
|
||||
],
|
||||
"license": "MIT"
|
||||
|
||||
@@ -63,21 +63,8 @@ hr {
|
||||
margin-top: 22px;
|
||||
border-radius: 8px;
|
||||
padding: 10px 20px;
|
||||
transition: width .3s ease-in-out;
|
||||
}
|
||||
|
||||
@media (max-width: 1024px) {
|
||||
#search-input {
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
.pack-overview-background {
|
||||
min-width: 960px;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
#search .package.match {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
.yue h4,
|
||||
.yue h5,
|
||||
.yue h6 {
|
||||
font-family: "-apple-system-headline", "Georgia", "Xin Gothic", "Hiragino Sans GB", "Droid Sans Fallback", "Microsoft YaHei", "SimSun", sans-serif;
|
||||
font-family: "-apple-system", "Georgia", "Xin Gothic", "Hiragino Sans GB", "Droid Sans Fallback", "Microsoft YaHei", "SimSun", sans-serif;
|
||||
color: #222223;
|
||||
}
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ $(function () {
|
||||
data.last_sync_module + '</a>');
|
||||
|
||||
if (!data.sync_status) {
|
||||
$('.syncing').remove();
|
||||
$('.syncing').html('');
|
||||
}
|
||||
|
||||
$('.sync').show();
|
||||
|
||||
@@ -26,7 +26,6 @@ var listAll = require('../controllers/registry/package/list_all');
|
||||
var listShorts = require('../controllers/registry/package/list_shorts');
|
||||
var listSince = require('../controllers/registry/package/list_since');
|
||||
var listAllVersions = require('../controllers/registry/package/list');
|
||||
var listDependents = require('../controllers/registry/package/list_dependents');
|
||||
var getOneVersion = require('../controllers/registry/package/show');
|
||||
var savePackage = require('../controllers/registry/package/save');
|
||||
var tag = require('../controllers/registry/package/tag');
|
||||
@@ -119,10 +118,6 @@ function routes(app) {
|
||||
app.get('/downloads/range/:range/:name', downloadTotal);
|
||||
app.get('/downloads/range/:range', downloadTotal);
|
||||
|
||||
// GET /-/package/:pkg/dependents
|
||||
app.get('/-/package/:name/dependents', existsPackage, listDependents);
|
||||
app.get(/^\/\-\/package\/(@[\w\-\.]+\/[\w\-\.]+)\/dependents$/, existsPackage, listDependents);
|
||||
|
||||
// GET /-/package/:pkg/dist-tags -- returns the package's dist-tags
|
||||
app.get('/-/package/:name/dist-tags', existsPackage, tags.index);
|
||||
app.get(/^\/\-\/package\/(@[\w\-\.]+\/[\w\-\.]+)\/dist\-tags$/, existsPackage, tags.index);
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
/**!
|
||||
* Copyright(c) cnpm and other contributors.
|
||||
* cnpmjs.org - services/download_total.js
|
||||
*
|
||||
* Copyright(c) fengmk2 and other contributors.
|
||||
* MIT Licensed
|
||||
*
|
||||
* Authors:
|
||||
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.com)
|
||||
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.github.com)
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
@@ -101,7 +103,7 @@ exports.plusModuleTotal = function* (data) {
|
||||
};
|
||||
|
||||
exports.getTotal = function* (start, end) {
|
||||
return yield exports.getModuleTotal('__all__', start, end);
|
||||
return yield* exports.getModuleTotal('__all__', start, end);
|
||||
};
|
||||
|
||||
function parseYearMonth(date) {
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
/**!
|
||||
* Copyright(c) cnpm and other contributors.
|
||||
* cnpmjs.org - services/package.js
|
||||
*
|
||||
* Copyright(c) fengmk2 and other contributors.
|
||||
* MIT Licensed
|
||||
*
|
||||
* Authors:
|
||||
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.com)
|
||||
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.github.com)
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
/**!
|
||||
* Copyright(c) cnpm and other contributors.
|
||||
* MIT Licensed
|
||||
*
|
||||
* Authors:
|
||||
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.com)
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
const pedding = require('pedding');
|
||||
const request = require('supertest');
|
||||
const mm = require('mm');
|
||||
const app = require('../../../../servers/registry');
|
||||
const utils = require('../../../utils');
|
||||
|
||||
describe('test/controllers/registry/package/list_dependents.test.js', function () {
|
||||
afterEach(mm.restore);
|
||||
|
||||
before(function (done) {
|
||||
done = pedding(2, done);
|
||||
const pkg = utils.getPackage('@cnpmtest/testmodule-list-dependents1', '1.0.0', utils.admin);
|
||||
pkg.versions['1.0.0'].dependencies = {
|
||||
'@cnpmtest/testmodule-list-dependents2': '~1.0.0',
|
||||
};
|
||||
request(app.listen())
|
||||
.put('/' + pkg.name)
|
||||
.set('authorization', utils.adminAuth)
|
||||
.send(pkg)
|
||||
.expect(201, done);
|
||||
|
||||
const pkg2 = utils.getPackage('@cnpmtest/testmodule-list-dependents2', '1.0.0', utils.admin);
|
||||
request(app.listen())
|
||||
.put('/' + pkg2.name)
|
||||
.set('authorization', utils.adminAuth)
|
||||
.send(pkg2)
|
||||
.expect(201, done);
|
||||
});
|
||||
|
||||
it('should list package dependents', function (done) {
|
||||
request(app)
|
||||
.get('/-/package/@cnpmtest/testmodule-list-dependents2/dependents')
|
||||
.expect({
|
||||
dependents: [
|
||||
'@cnpmtest/testmodule-list-dependents1',
|
||||
],
|
||||
})
|
||||
.expect(200, done);
|
||||
});
|
||||
});
|
||||
@@ -1,9 +1,11 @@
|
||||
/**!
|
||||
* cnpmjs.org - test/controllers/registry/package/save.test.js
|
||||
*
|
||||
* Copyright(c) cnpmjs.org and other contributors.
|
||||
* MIT Licensed
|
||||
*
|
||||
* Authors:
|
||||
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.com)
|
||||
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.github.com)
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
@@ -20,7 +22,7 @@ var app = require('../../../../servers/registry');
|
||||
var config = require('../../../../config');
|
||||
var utils = require('../../../utils');
|
||||
|
||||
describe('test/controllers/registry/package/save.test.js', function () {
|
||||
describe('controllers/registry/package/save.test.js', function () {
|
||||
afterEach(mm.restore);
|
||||
|
||||
describe('no @scoped package', function () {
|
||||
@@ -286,11 +288,11 @@ describe('test/controllers/registry/package/save.test.js', function () {
|
||||
});
|
||||
|
||||
it('should save dependents', function* () {
|
||||
var names = yield packageService.listDependents('bytetest2');
|
||||
var names = yield* packageService.listDependents('bytetest2');
|
||||
names.should.length(2);
|
||||
names.should.eql(['@cnpmtest/testmodule-new-1', '@cnpmtest/testmodule-new-2']);
|
||||
|
||||
names = yield packageService.listDependents('@cnpmtest/testmodule-new-1');
|
||||
names = yield* packageService.listDependents('@cnpmtest/testmodule-new-1');
|
||||
names.should.length(0);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -19,7 +19,7 @@ var should = require('should');
|
||||
var request = require('supertest');
|
||||
var app = require('../../servers/registry');
|
||||
|
||||
describe('test/controllers/total.test.js', function () {
|
||||
describe('controllers/total.test.js', function () {
|
||||
describe('GET / in registry', function () {
|
||||
it('should return total info', function (done) {
|
||||
request(app.listen())
|
||||
@@ -29,14 +29,7 @@ describe('test/controllers/total.test.js', function () {
|
||||
res.body.db_name.should.equal('registry');
|
||||
res.body.store_engine.should.be.a.String;
|
||||
res.body.node_version.should.equal(process.version);
|
||||
res.body.cache_time.should.be.a.Number;
|
||||
// request again should get cache total info
|
||||
request(app.listen())
|
||||
.get('/')
|
||||
.expect(function(res2) {
|
||||
res2.body.cache_time.should.equal(res.body.cache_time);
|
||||
})
|
||||
.expect(200, done);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -20,7 +20,6 @@ var mm = require('mm');
|
||||
var app = require('../../../servers/web');
|
||||
var registry = require('../../../servers/registry');
|
||||
var utils = require('../../utils');
|
||||
var config = require('../../../config')
|
||||
|
||||
describe('controllers/web/badge.test.js', function () {
|
||||
afterEach(mm.restore);
|
||||
@@ -36,7 +35,7 @@ describe('controllers/web/badge.test.js', function () {
|
||||
should.not.exists(err);
|
||||
request(app)
|
||||
.get('/badge/v/@cnpmtest/badge-test-module.svg?style=flat-square')
|
||||
.expect('Location', config.badgePrefixURL + '/cnpm-1.0.1-blue.svg?style=flat-square')
|
||||
.expect('Location', 'https://dn-img-shields-io.qbox.me/badge/cnpm-1.0.1-blue.svg?style=flat-square')
|
||||
.expect(302, done);
|
||||
});
|
||||
});
|
||||
@@ -51,7 +50,7 @@ describe('controllers/web/badge.test.js', function () {
|
||||
should.not.exists(err);
|
||||
request(app)
|
||||
.get('/badge/v/@cnpmtest/badge-test-module.svg?style=flat-square&tag=v2')
|
||||
.expect('Location', config.badgePrefixURL + '/cnpm-2.0.1-blue.svg?style=flat-square')
|
||||
.expect('Location', 'https://dn-img-shields-io.qbox.me/badge/cnpm-2.0.1-blue.svg?style=flat-square')
|
||||
.expect(302, done);
|
||||
});
|
||||
});
|
||||
@@ -66,7 +65,7 @@ describe('controllers/web/badge.test.js', function () {
|
||||
should.not.exists(err);
|
||||
request(app)
|
||||
.get('/badge/v/@cnpmtest/badge-test-module.svg?style=flat-square&tag=v3&subject=ant-design')
|
||||
.expect('Location', config.badgePrefixURL + '/ant--design-3.0.1-blue.svg?style=flat-square')
|
||||
.expect('Location', 'https://dn-img-shields-io.qbox.me/badge/ant--design-3.0.1-blue.svg?style=flat-square')
|
||||
.expect(302, done);
|
||||
});
|
||||
});
|
||||
@@ -81,7 +80,7 @@ describe('controllers/web/badge.test.js', function () {
|
||||
should.not.exists(err);
|
||||
request(app)
|
||||
.get('/badge/v/@cnpmtest/badge-test-module.svg?style=flat-square')
|
||||
.expect('Location', config.badgePrefixURL + '/cnpm-1.0.0--beta1-blue.svg?style=flat-square')
|
||||
.expect('Location', 'https://dn-img-shields-io.qbox.me/badge/cnpm-1.0.0--beta1-blue.svg?style=flat-square')
|
||||
.expect(302, done);
|
||||
});
|
||||
});
|
||||
@@ -96,7 +95,7 @@ describe('controllers/web/badge.test.js', function () {
|
||||
should.not.exists(err);
|
||||
request(app)
|
||||
.get('/badge/v/@cnpmtest/badge-test-module.svg?style=flat-square')
|
||||
.expect('Location', config.badgePrefixURL + '/cnpm-0.1.0-green.svg?style=flat-square')
|
||||
.expect('Location', 'https://dn-img-shields-io.qbox.me/badge/cnpm-0.1.0-green.svg?style=flat-square')
|
||||
.expect(302, done);
|
||||
});
|
||||
});
|
||||
@@ -111,7 +110,7 @@ describe('controllers/web/badge.test.js', function () {
|
||||
should.not.exists(err);
|
||||
request(app)
|
||||
.get('/badge/v/@cnpmtest/badge-test-module.svg?style=flat-square')
|
||||
.expect('Location', config.badgePrefixURL + '/cnpm-0.0.0-red.svg?style=flat-square')
|
||||
.expect('Location', 'https://dn-img-shields-io.qbox.me/badge/cnpm-0.0.0-red.svg?style=flat-square')
|
||||
.expect(302, done);
|
||||
});
|
||||
});
|
||||
@@ -119,7 +118,7 @@ describe('controllers/web/badge.test.js', function () {
|
||||
it('should show invalid when package not exists', function (done) {
|
||||
request(app)
|
||||
.get('/badge/v/@cnpmtest/badge-test-module-not-exists.svg?style=flat')
|
||||
.expect('Location', config.badgePrefixURL + '/cnpm-invalid-lightgrey.svg?style=flat')
|
||||
.expect('Location', 'https://dn-img-shields-io.qbox.me/badge/cnpm-invalid-lightgrey.svg?style=flat')
|
||||
.expect(302, done);
|
||||
});
|
||||
});
|
||||
@@ -135,7 +134,7 @@ describe('controllers/web/badge.test.js', function () {
|
||||
should.not.exists(err);
|
||||
request(app)
|
||||
.get('/badge/d/@cnpmtest/badge-download-module.svg?style=flat-square')
|
||||
.expect('Location', config.badgePrefixURL + '/downloads-0-brightgreen.svg?style=flat-square')
|
||||
.expect('Location', 'https://dn-img-shields-io.qbox.me/badge/downloads-0-brightgreen.svg?style=flat-square')
|
||||
.expect(302, done);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
var config = require('../../../../config')
|
||||
module.exports = {
|
||||
title: 'Package - koa',
|
||||
package: {
|
||||
@@ -10,7 +9,7 @@ module.exports = {
|
||||
node: {
|
||||
version: '>= 0.11.13',
|
||||
title: 'node: >=0.11.13',
|
||||
badgeURL: config.badgePrefixURL + '/badge/node-%3E%3D%200.11.13-red.svg?style=flat-square',
|
||||
badgeURL: 'https://dn-img-shields-io.qbox.me/badge/node-%3E%3D%200.11.13-red.svg?style=flat-square',
|
||||
}
|
||||
},
|
||||
_publish_on_cnpm: false,
|
||||
@@ -61,10 +60,6 @@ module.exports = {
|
||||
supertest: '~0.13.0',
|
||||
'test-console': '^0.7.1'
|
||||
},
|
||||
dependents: [
|
||||
'cnpmjs.org',
|
||||
'koa-project',
|
||||
],
|
||||
maintainers: [
|
||||
{
|
||||
name: 'fengmk2',
|
||||
|
||||
@@ -136,8 +136,8 @@
|
||||
<div class="pack-dep cols-box-item">
|
||||
<div class="cols-box-title">
|
||||
<%
|
||||
var deps = Object.keys(package.dependencies || {});
|
||||
var l = deps.length;
|
||||
var deps = Object.keys(package.dependencies || {})
|
||||
var l = deps.length
|
||||
%>
|
||||
Dependencies<%= ' (' + l + ')' %>
|
||||
|
||||
@@ -151,7 +151,7 @@
|
||||
<a class="pack-dep-name" target="_blank" href="/package/<%= pkg %>"><%= pkg %></a>
|
||||
<span class="pack-dep-ver"><%= package.dependencies[pkg]%></span>
|
||||
</li>
|
||||
<% }); %>
|
||||
<% }) %>
|
||||
</ul>
|
||||
<% } else { %>
|
||||
None
|
||||
@@ -160,8 +160,8 @@
|
||||
<div class="pack-dep cols-box-item">
|
||||
<div class="cols-box-title">
|
||||
<%
|
||||
var deps = Object.keys(package.devDependencies || {});
|
||||
var l = deps.length;
|
||||
var deps = Object.keys(package.devDependencies || {})
|
||||
var l = deps.length
|
||||
%>
|
||||
Dev Dependencies<%= ' (' + l + ')' %>
|
||||
|
||||
@@ -175,36 +175,13 @@
|
||||
<a class="pack-dep-name" target="_blank" href="/package/<%= pkg %>"><%= pkg %></a>
|
||||
<span class="pack-dep-ver"><%= package.devDependencies[pkg]%></span>
|
||||
</li>
|
||||
<% }); %>
|
||||
<% }) %>
|
||||
</ul>
|
||||
<% } else { %>
|
||||
None
|
||||
<% } %>
|
||||
</div>
|
||||
|
||||
<div class="pack-dep cols-box-item">
|
||||
<div class="cols-box-title">
|
||||
<%
|
||||
var deps = package.dependents;
|
||||
var l = deps.length;
|
||||
%>
|
||||
Dependents<%= ' (' + l + ')' %>
|
||||
|
||||
</div>
|
||||
<% if (l) { %>
|
||||
<ul>
|
||||
<%
|
||||
deps.forEach(function(pkg) {
|
||||
%>
|
||||
<li>
|
||||
<a class="pack-dep-name" target="_blank" href="/package/<%= pkg %>"><%= pkg %></a>
|
||||
</li>
|
||||
<% }); %>
|
||||
</ul>
|
||||
<% } else { %>
|
||||
None
|
||||
<% } %>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user