This commit is contained in:
Tanguy Krotoff
2016-01-04 10:58:14 +01:00
parent 0fa4e9e613
commit db0118ada5
2 changed files with 114 additions and 0 deletions
+72
View File
@@ -0,0 +1,72 @@
/// <reference path="serve-index.d.ts" />
/// <reference path="../express/express.d.ts" />
import * as express from 'express';
import * as serveIndex from 'serve-index';
import * as fs from 'fs';
const app = express();
// Serve URLs like /ftp/thing as public/ftp/thing
app.use('/ftp', serveIndex('public/ftp', {'icons': true}));
app.listen(8080);
// Taken from https://github.com/expressjs/serve-index/blob/v1.7.2/test/test.js
import * as path from 'path';
var fixtures = path.join(__dirname, '/fixtures');
const createServer = serveIndex;
var server = createServer('test/fixtures', {'hidden': false});
var server = createServer('test/fixtures', {'hidden': true});
var server = createServer(fixtures, {'filter': filter});
function filter(name: string): boolean {
if (name.indexOf('foo') === -1) return true
return false
}
var server = createServer(fixtures, {'filter': filter, 'hidden': false});
var server = createServer(fixtures, {'icons': true});
var server = createServer(fixtures, {'template': __dirname + '/shared/template.html'});
var server = createServer(fixtures, {'template': function (locals, callback) {
callback(null, 'This is a template.');
}});
var server = createServer(fixtures, {'template': function (locals, callback) {
callback(new Error('boom!'));
}});
var server = createServer(fixtures, {'template': function (locals, callback) {
callback(null, JSON.stringify(locals.directory));
}});
var server = createServer(fixtures, {'template': function (locals, callback) {
callback(null, JSON.stringify(locals.displayIcons));
}});
var server = createServer(fixtures, {'template': function (locals, callback) {
callback(null, JSON.stringify(locals.fileList.map(function (file) {
//file.stat = file.stat instanceof fs.Stats;
return file;
})));
}});
var server = createServer(fixtures, {'template': function (locals, callback) {
callback(null, JSON.stringify(locals.path));
}});
var server = createServer(fixtures, {'template': function (locals, callback) {
callback(null, JSON.stringify(locals.style));
}});
var server = createServer(fixtures, {'template': function (locals, callback) {
callback(null, JSON.stringify(locals.viewName));
}});
var server = createServer(fixtures, {'stylesheet': __dirname + '/shared/styles.css'});
+42
View File
@@ -0,0 +1,42 @@
// Type definitions for serve-index v1.7.2
// Project: https://github.com/expressjs/serve-index
// Definitions by: Tanguy Krotoff <https://github.com/tkrotoff>
// Definitions: https://github.com/borisyankov/DefinitelyTyped
declare module 'serve-index' {
import * as express from 'express';
import * as fs from 'fs';
namespace serveIndex {
interface File {
name: string;
stat: fs.Stats;
}
interface Locals {
directory: string;
displayIcons: boolean;
fileList: Array<File>;
name: string;
stat: fs.Stats;
path: string;
style: string;
viewName: string;
}
type templateCallback = (error: Error, htmlString?: string) => void;
interface Options {
filter?: (filename: string, index: number, files: Array<File>, dir: string) => boolean;
hidden?: boolean;
icons?: boolean;
stylesheet?: string;
template?: string | ((locals: Locals, callback: templateCallback) => void);
view?: string;
}
}
function serveIndex(path: string, options?: serveIndex.Options): express.Handler;
export = serveIndex;
}