File: //opt/code/node_modules/connect-history-api-fallback/package.json
{
"name": "connect-history-api-fallback",
"version": "1.5.0",
"description": "Provides a fallback for non-existing directories so that the HTML 5 history API can be used.",
"keyswords": [
"connect",
"html5",
"history api",
"fallback",
"spa"
],
"engines": {
"node": ">=0.8"
},
"main": "lib/index.js",
"files": [
"lib"
],
"scripts": {
"test": "eslint lib/index.js test/index_test.js && nodeunit test/index_test.js"
},
"repository": {
"type": "git",
"url": "http://github.com/bripkens/connect-history-api-fallback.git"
},
"author": {
"name": "Ben Ripkens",
"email": "bripkens.dev@gmail.com",
"url": "http://bripkens.de"
},
"contributors": [
{
"name": "Craig Myles",
"email": "cr@igmyles.com",
"url": "http://www.craigmyles.com"
}
],
"license": "MIT",
"devDependencies": {
"eslint": "^0.18.0",
"nodeunit": "^0.9.1",
"sinon": "^1.14.1"
},
"readme": "<h1 align=\"center\">connect-history-api-fallback</h1>\n<p align=\"center\">Middleware to proxy requests through a specified index page, useful for Single Page Applications that utilise the HTML5 History API.</p>\n\n[](https://travis-ci.org/bripkens/connect-history-api-fallback)\n[](https://david-dm.org/bripkens/connect-history-api-fallback/master)\n\n[](https://nodei.co/npm/connect-history-api-fallback/)\n\n\n<h2>Table of Contents</h2>\n\n<!-- TOC depthFrom:2 depthTo:6 withLinks:1 updateOnSave:1 orderedList:0 -->\n\n- [Introduction](#introduction)\n- [Usage](#usage)\n- [Options](#options)\n\t- [index](#index)\n\t- [rewrites](#rewrites)\n\t- [verbose](#verbose)\n\t- [htmlAcceptHeaders](#htmlacceptheaders)\n\t- [disableDotRule](#disabledotrule)\n\n<!-- /TOC -->\n\n## Introduction\n\nSingle Page Applications (SPA) typically only utilise one index file that is\naccessible by web browsers: usually `index.html`. Navigation in the application\nis then commonly handled using JavaScript with the help of the\n[HTML5 History API](http://www.w3.org/html/wg/drafts/html/master/single-page.html#the-history-interface).\nThis results in issues when the user hits the refresh button or is directly\naccessing a page other than the landing page, e.g. `/help` or `/help/online`\nas the web server bypasses the index file to locate the file at this location.\nAs your application is a SPA, the web server will fail trying to retrieve the file and return a *404 - Not Found*\nmessage to the user.\n\nThis tiny middleware addresses some of the issues. Specifically, it will change\nthe requested location to the index you specify (default being `/index.html`)\nwhenever there is a request which fulfills the following criteria:\n\n 1. The request is a GET request\n 2. which accepts `text/html`,\n 3. is not a direct file request, i.e. the requested path does not contain a\n `.` (DOT) character and\n 4. does not match a pattern provided in options.rewrites (see options below)\n\n## Usage\n\nThe middleware is available through NPM and can easily be added.\n\n```\nnpm install --save connect-history-api-fallback\n```\n\nImport the library\n\n```javascript\nvar history = require('connect-history-api-fallback');\n```\n\nNow you only need to add the middleware to your application like so\n\n```javascript\nvar connect = require('connect');\n\nvar app = connect()\n .use(history())\n .listen(3000);\n```\n\nOf course you can also use this piece of middleware with express:\n\n```javascript\nvar express = require('express');\n\nvar app = express();\napp.use(history());\n```\n\n## Options\nYou can optionally pass options to the library when obtaining the middleware\n\n```javascript\nvar middleware = history({});\n```\n\n### index\nOverride the index (default `/index.html`)\n\n```javascript\nhistory({\n index: '/default.html'\n});\n```\n\n### rewrites\nOverride the index when the request url matches a regex pattern. You can either rewrite to a static string or use a function to transform the incoming request.\n\nThe following will rewrite a request that matches the `/\\/soccer/` pattern to `/soccer.html`.\n```javascript\nhistory({\n rewrites: [\n { from: /\\/soccer/, to: '/soccer.html'}\n ]\n});\n```\n\nAlternatively functions can be used to have more control over the rewrite process. For instance, the following listing shows how requests to `/libs/jquery/jquery.1.12.0.min.js` and the like can be routed to `./bower_components/libs/jquery/jquery.1.12.0.min.js`. You can also make use of this if you have an API version in the URL path.\n```javascript\nhistory({\n rewrites: [\n {\n from: /^\\/libs\\/.*$/,\n to: function(context) {\n return '/bower_components' + context.parsedUrl.pathname;\n }\n }\n ]\n});\n```\n\nThe function will always be called with a context object that has the following properties:\n\n - **parsedUrl**: Information about the URL as provided by the [URL module's](https://nodejs.org/api/url.html#url_url_parse_urlstr_parsequerystring_slashesdenotehost) `url.parse`.\n - **match**: An Array of matched results as provided by `String.match(...)`.\n - **request**: The HTTP request object.\n\n\n### verbose\nThis middleware does not log any information by default. If you wish to activate logging, then you can do so via the `verbose` option or by specifying a logger function.\n\n```javascript\nhistory({\n verbose: true\n});\n```\n\nAlternatively use your own logger\n\n```javascript\nhistory({\n logger: console.log.bind(console)\n});\n```\n\n### htmlAcceptHeaders\nOverride the default `Accepts:` headers that are queried when matching HTML content requests (Default: `['text/html', '*/*']`).\n\n```javascript\nhistory({\n htmlAcceptHeaders: ['text/html', 'application/xhtml+xml']\n})\n```\n\n### disableDotRule\nDisables the dot rule mentioned above:\n\n> […] is not a direct file request, i.e. the requested path does not contain a `.` (DOT) character […]\n\n```javascript\nhistory({\n disableDotRule: true\n})\n```\n",
"readmeFilename": "README.md",
"bugs": {
"url": "https://github.com/bripkens/connect-history-api-fallback/issues"
},
"_id": "connect-history-api-fallback@1.5.0",
"dist": {
"shasum": "7dd42bdb0c253aec5e4c9eb61d1599d0da31b6b7"
},
"_from": "connect-history-api-fallback@^1.3.0",
"_resolved": "http://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz"
}