Skip to content

Commit

Permalink
Merge pull request DefinitelyTyped#7474 from tkrotoff/serve-index
Browse files Browse the repository at this point in the history
Definitions for serve-index (https://github.com/expressjs/serve-index)
  • Loading branch information
horiuchi committed Jan 5, 2016
2 parents 1153089 + a6cd92e commit 419793f
Show file tree
Hide file tree
Showing 3 changed files with 127 additions and 11 deletions.
72 changes: 72 additions & 0 deletions serve-index/serve-index-tests.ts
Original file line number Diff line number Diff line change
@@ -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 changes: 44 additions & 0 deletions serve-index/serve-index.d.ts
Original file line number Diff line number Diff line change
@@ -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;
}
22 changes: 11 additions & 11 deletions serve-static/serve-static.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;

/**
Expand Down

0 comments on commit 419793f

Please sign in to comment.