mirror of
https://github.com/terribleplan/next.js.git
synced 2024-01-19 02:48:18 +00:00
d3b1ead149
* Add a plan for dynamic entry middleware. * Use dynamic pages middleware to load pages in dev. * Add the first version of middleware but not tested. * Integrated. * Disable prefetching in development. Otherwise it'll discard the use of dynamic-entries. * Build custom document and error always. * Refactor code base. * Change branding as on-demand entries. * Fix tests. * Add a client side pinger for on-demand-entries. * Dispose inactive entries. * Add proper logs. * Update grammer changes. * Add integration tests for ondemand entries. * Improve ondemand entry disposing logic. * Try to improve testing. * Make sure entries are not getting disposed in basic integration tests. * Resolve conflicts. * Fix tests. * Fix issue when running Router.onRouteChangeComplete * Simplify state management. * Make sure we don't dispose the last active page. * Reload invalid pages detected with the client side ping. * Improve the pinger code. * Touch the first page to speed up the future rebuild times. * Add Websockets based pinger. * Revert "Add Websockets based pinger." This reverts commit f706a49a3d886d0231259b7a1fded750ced2e48f. * Do not send requests per every route change. * Make sure we are completing the middleware request always. * Make sure test pages are prebuilt.
54 lines
1.3 KiB
JavaScript
54 lines
1.3 KiB
JavaScript
import fetch from 'node-fetch'
|
|
import qs from 'querystring'
|
|
import http from 'http'
|
|
|
|
import server from '../../dist/server/next'
|
|
import build from '../../dist/server/build'
|
|
import _pkg from '../../package.json'
|
|
|
|
export const nextServer = server
|
|
export const nextBuild = build
|
|
export const pkg = _pkg
|
|
|
|
export function renderViaAPI (app, pathname, query = {}) {
|
|
return app.renderToHTML({}, {}, pathname, query)
|
|
}
|
|
|
|
export function renderViaHTTP (appPort, pathname, query = {}) {
|
|
const url = `http://localhost:${appPort}${pathname}?${qs.stringify(query)}`
|
|
return fetch(url).then((res) => res.text())
|
|
}
|
|
|
|
export async function startApp (app) {
|
|
await app.prepare()
|
|
const handler = app.getRequestHandler()
|
|
const server = http.createServer(handler)
|
|
server.__app = app
|
|
|
|
await promiseCall(server, 'listen')
|
|
return server
|
|
}
|
|
|
|
export async function stopApp (app) {
|
|
await server.__app.close()
|
|
await promiseCall(server, 'close')
|
|
}
|
|
|
|
function promiseCall (obj, method, ...args) {
|
|
return new Promise((resolve, reject) => {
|
|
const newArgs = [
|
|
...args,
|
|
function (err, res) {
|
|
if (err) return reject(err)
|
|
resolve(res)
|
|
}
|
|
]
|
|
|
|
obj[method](...newArgs)
|
|
})
|
|
}
|
|
|
|
export function waitFor (millis) {
|
|
return new Promise((resolve) => setTimeout(resolve, millis))
|
|
}
|