Compare commits

...

15 Commits
2.3.0 ... 2.4.0

Author SHA1 Message Date
fengmk2
82395fdc33 Release 2.4.0 2015-10-21 22:36:45 +08:00
fengmk2
ced4887269 Merge pull request #696 from cnpm/dependents
feat(registry): add package's dependents api
2015-10-21 21:32:39 +08:00
fengmk2
8f96a5a57b feat(registry): add package's dependents api
```
GET /-/package/:name/dependents

{
  "dependents": [ "pkg1", "pkg2" ]
}
```

closes #694
2015-10-21 21:24:59 +08:00
fengmk2
f6e79ff5e7 fix: show package's dependents
closes #694
2015-10-21 21:06:27 +08:00
fengmk2
e932f16424 Merge pull request #690 from cnpm/greenkeeper-bluebird-2.10.2
Update bluebird to version 2.10.2 🚀
2015-10-21 18:44:55 +08:00
fengmk2
622c93c3fe Merge pull request #693 from cnpm/greenkeeper-utility-1.5.0
Update utility to version 1.5.0 🚀
2015-10-21 18:44:28 +08:00
greenkeeperio-bot
ccf3e8a83c chore(package): update utility to version 1.5.0
http://greenkeeper.io/
2015-10-20 21:45:36 +08:00
greenkeeperio-bot
2069b4334c chore(package): update bluebird to version 2.10.2
http://greenkeeper.io/
2015-10-16 21:40:55 +08:00
fengmk2
ef84cedd79 Release 2.3.1 2015-10-15 23:41:13 +08:00
fengmk2
ba07f87ee0 Merge pull request #687 from cnpm/upgrade-giturl
deps: upgrade giturl
2015-10-15 22:00:23 +08:00
fengmk2
10cbe70378 refactor: remove gnode 2015-10-15 21:26:06 +08:00
fengmk2
244ce60857 deps: upgrade giturl
closes #685
2015-10-15 21:22:39 +08:00
fengmk2
97a4f6cd92 Release 2.3.0 2015-10-15 21:22:08 +08:00
fengmk2
10197ef2aa Merge pull request #686 from ibigbug/ant-design-fix
Some fixes
2015-10-15 19:33:13 +08:00
Yuwei Ba
d2e7350b27 Some fixes
* Header overflow
* Empty alert
* Headline font-family
2015-10-15 18:59:50 +08:00
22 changed files with 206 additions and 53 deletions

View File

@@ -1,7 +1,6 @@
sudo: false
language: node_js
node_js:
- '1'
- '2'
- '4'
addons:

View File

@@ -5,3 +5,5 @@ dead-horse <dead_horse@qq.com> (https://github.com/dead-horse)
alsotang <alsotang@gmail.com> (https://github.com/alsotang)
4simple <wondger@qq.com> (https://github.com/4simple)
afc163 <afc163@gmail.com> (https://github.com/afc163)
Yuwei Ba <i@xiaoba.me> (https://github.com/ibigbug)

View File

@@ -1,4 +1,48 @@
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
==================
* Add dev dependencies.
* Package page fix.
* refactor: add more sync log
* Add mock data.
* refactor: add more sync log
* Fix sidebar overflow.
* Merge pull request #680 from ibigbug/ant-design
* Clean code.
* Indent.
* chore(package): update debug to version 2.2.0
* chore(package): update should to version 7.1.0
* chore(package): update koa to version 1.1.0
* Remove default adBanner.
* Package pages.
* Common styles.
* search page.
* Sync page.
* Profile page antd style.
* Unpublished pkg page style.
* Add page title for unpubed pkg.
* Index page style use antd.
* chore(package): update pg to version 4.4.2
* chore(package): update cfork to version 1.3.1
* chore(package): update moment to version 2.10.6
* feat(badge): Use qiniu cdn
2.2.1 / 2015-09-30
==================

View File

@@ -22,7 +22,7 @@ jshint: install
@-node_modules/.bin/jshint ./
init-database:
@$(BIN) --harmony test/init_db.js
@$(BIN) test/init_db.js
init-mysql:
@mysql -uroot -e 'DROP DATABASE IF EXISTS cnpmjs_test;'
@@ -34,7 +34,6 @@ init-pg:
test: install init-database
@NODE_ENV=test DB=${DB} node_modules/.bin/mocha \
--harmony \
--reporter $(REPORTER) \
--timeout $(TIMEOUT) \
--require should \

View File

@@ -1,9 +1,7 @@
#!/usr/bin/env node
/**!
* cnpmjs.org - bin/cli.js
*
* Copyright(c) fengmk2 and other contributors.
* Copyright(c) cnpm and other contributors.
* MIT Licensed
*
* Authors:
@@ -16,7 +14,6 @@
* Module dependencies.
*/
require('gnode');
var debug = require('debug')('cnpmjs.org:cli');
var program = require('commander');
var path = require('path');

View File

@@ -7,7 +7,7 @@ export NODE_ENV='production'
ulimit -c unlimited
cd `dirname $0`/..
NODEJS='node --harmony'
NODEJS='node'
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'));\

View File

@@ -0,0 +1,26 @@
/**!
* 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,
};
};

View File

@@ -1,11 +1,9 @@
/**!
* cnpmjs.org - controllers/registry/package/list_shorts.js
*
* Copyright(c) fengmk2 and other contributors.
* Copyright(c) cnpm and other contributors.
* MIT Licensed
*
* Authors:
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.github.com)
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.com)
*/
'use strict';
@@ -19,5 +17,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();
};

View File

@@ -1,11 +1,9 @@
/**!
* cnpmjs.js - controllers/registry/package/show.js
*
* Copyright(c) fengmk2 and other contributors.
* Copyright(c) cnpm and other contributors.
* MIT Licensed
*
* Authors:
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.github.com)
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.com)
*/
'use strict';

View File

@@ -1,12 +1,10 @@
/**!
* cnpmjs.org - controllers/web/package/show.js
*
* Copyright(c) cnpmjs.org and other contributors.
* Copyright(c) cnpm and other contributors.
* MIT Licensed
*
* Authors:
* dead_horse <dead_horse@qq.com> (http://deadhorse.me)
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.github.com)
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.com)
*/
'use strict';

View File

@@ -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">
<div class="ant-alert ant-alert-info syncing">
<span class="anticon ant-alert-icon anticon-info-circle"></span>
<span class="syncing ant-alert-description">The sync worker is working in the backend now. </span>
<span class="ant-alert-description">The sync worker is working in the backend now. </span>
</div>
<div class="ant-table">
<table class="sync-status">

View File

@@ -1,6 +1,6 @@
{
"name": "cnpmjs.org",
"version": "2.2.1",
"version": "2.4.0",
"description": "Private npm registry and web for Enterprise, base on MySQL and Simple Store Service",
"main": "index.js",
"scripts": {
@@ -14,7 +14,7 @@
},
"dependencies": {
"agentkeepalive": "~1.2.0",
"bluebird": "~2.9.7",
"bluebird": "~2.10.2",
"bytes": "~1.0.0",
"cfork": "~1.3.1",
"co": "~4.3.1",
@@ -26,8 +26,7 @@
"debug": "~2.2.0",
"error-formater": "~1.0.3",
"fs-cnpm": "~1.2.0",
"giturl": "~0.0.3",
"gnode": "~0.1.1",
"giturl": "^1.0.0",
"graceful": "~1.0.0",
"gravatar": "~1.1.0",
"humanize-ms": "~1.0.1",
@@ -53,7 +52,7 @@
"treekill": "~1.0.0",
"tunnel-agent": "^0.4.0",
"urllib": "~2.2.2",
"utility": "~1.3.0",
"utility": "~1.5.0",
"xss": "~0.1.20"
},
"devDependencies": {
@@ -92,10 +91,10 @@
"registry"
],
"engines": {
"node": ">= 1.0.0"
"node": ">= 2.0.0"
},
"author": [
"fengmk2 <fengmk2@gmail.com> (http://fengmk2.github.com)",
"fengmk2 <fengmk2@gmail.com> (http://fengmk2.com)",
"dead_horse <dead_horse@qq.com> (http://deadhorse.me)"
],
"license": "MIT"

View File

@@ -63,8 +63,21 @@ 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;
}

View File

@@ -13,7 +13,7 @@
.yue h4,
.yue h5,
.yue h6 {
font-family: "-apple-system", "Georgia", "Xin Gothic", "Hiragino Sans GB", "Droid Sans Fallback", "Microsoft YaHei", "SimSun", sans-serif;
font-family: "-apple-system-headline", "Georgia", "Xin Gothic", "Hiragino Sans GB", "Droid Sans Fallback", "Microsoft YaHei", "SimSun", sans-serif;
color: #222223;
}

View File

@@ -41,7 +41,7 @@ $(function () {
data.last_sync_module + '</a>');
if (!data.sync_status) {
$('.syncing').html('');
$('.syncing').remove();
}
$('.sync').show();

View File

@@ -26,6 +26,7 @@ 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');
@@ -118,6 +119,10 @@ 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);

View File

@@ -1,11 +1,9 @@
/**!
* cnpmjs.org - services/download_total.js
*
* Copyright(c) fengmk2 and other contributors.
* Copyright(c) cnpm and other contributors.
* MIT Licensed
*
* Authors:
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.github.com)
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.com)
*/
'use strict';
@@ -103,7 +101,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) {

View File

@@ -1,11 +1,9 @@
/**!
* cnpmjs.org - services/package.js
*
* Copyright(c) fengmk2 and other contributors.
* Copyright(c) cnpm and other contributors.
* MIT Licensed
*
* Authors:
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.github.com)
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.com)
*/
'use strict';

View File

@@ -0,0 +1,54 @@
/**!
* 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);
});
});

View File

@@ -1,11 +1,9 @@
/**!
* 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.github.com)
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.com)
*/
'use strict';
@@ -22,7 +20,7 @@ var app = require('../../../../servers/registry');
var config = require('../../../../config');
var utils = require('../../../utils');
describe('controllers/registry/package/save.test.js', function () {
describe('test/controllers/registry/package/save.test.js', function () {
afterEach(mm.restore);
describe('no @scoped package', function () {
@@ -288,11 +286,11 @@ describe('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);
});
});

View File

@@ -60,6 +60,10 @@ module.exports = {
supertest: '~0.13.0',
'test-console': '^0.7.1'
},
dependents: [
'cnpmjs.org',
'koa-project',
],
maintainers: [
{
name: 'fengmk2',

View File

@@ -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,13 +175,36 @@
<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>