Merge pull request #7474 from tkrotoff/serve-index

Definitions for serve-index (https://github.com/expressjs/serve-index)
This commit is contained in:
Horiuchi_H
2016-01-05 11:45:49 +09:00
3 changed files with 127 additions and 11 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'});
+44
View File
@@ -0,0 +1,44 @@
// 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
/// <reference path="../express/express.d.ts" />
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;
}
+11 -11
View File
@@ -15,22 +15,22 @@
declare module "serve-static" {
import * as express from "express";
/**
* Create a new middleware function to serve files from within a given root directory.
* The file to serve will be determined by combining req.url with the provided root directory.
* Create a new middleware function to serve files from within a given root directory.
* The file to serve will be determined by combining req.url with the provided root directory.
* When a file is not found, instead of sending a 404 response, this module will instead call next() to move on to the next middleware, allowing for stacking and fall-backs.
*/
function serveStatic(root: string, options?: {
/**
* Set how "dotfiles" are treated when encountered. A dotfile is a file or directory that begins with a dot (".").
* Note this check is done on the path itself without checking if the path actually exists on the disk.
* If root is specified, only the dotfiles above the root are checked (i.e. the root itself can be within a dotfile when when set to "deny").
* The default value is 'ignore'.
* 'allow' No special treatment for dotfiles
* 'deny' Send a 403 for any request for a dotfile
* 'ignore' Pretend like the dotfile does not exist and call next()
*/
* Set how "dotfiles" are treated when encountered. A dotfile is a file or directory that begins with a dot (".").
* Note this check is done on the path itself without checking if the path actually exists on the disk.
* If root is specified, only the dotfiles above the root are checked (i.e. the root itself can be within a dotfile when when set to "deny").
* The default value is 'ignore'.
* 'allow' No special treatment for dotfiles
* 'deny' Send a 403 for any request for a dotfile
* 'ignore' Pretend like the dotfile does not exist and call next()
*/
dotfiles?: string;
/**