Skip to content
This repository was archived by the owner on Nov 22, 2024. It is now read-only.

Commit

Permalink
fix(hapi-engine): update schematic for server.ts
Browse files Browse the repository at this point in the history
  • Loading branch information
alan-agius4 authored and vikerman committed Sep 16, 2019
1 parent bdd91dd commit abe57e0
Show file tree
Hide file tree
Showing 8 changed files with 178 additions and 66 deletions.
7 changes: 5 additions & 2 deletions integration/hapi-engine-ivy/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,18 +28,21 @@
"@angular/platform-browser-dynamic": "9.0.0-next.5",
"@angular/platform-server": "9.0.0-next.5",
"@angular/router": "9.0.0-next.5",
"@nguniversal/hapi-engine": "file:../../dist/mdules-dist/hapi-engine",
"@nguniversal/hapi-engine": "file:../../dist/modules-dist/hapi-engine",
"hapi": "file:../../node_modules/hapi",
"inert": "5.1.0",
"rxjs": "file:../../node_modules/rxjs",
"zone.js": "file:../../node_modules/zone.js"
"zone.js": "file:../../node_modules/zone.js",
"vision": "5.4.4"
},
"devDependencies": {
"@angular-devkit/build-angular": "0.900.0-next.4",
"@angular/cli": "9.0.0-next.4",
"@angular/compiler-cli": "file:../../node_modules/@angular/compiler-cli",
"@types/inert": "file:../../node_modules/@types/inert",
"@types/node": "file:../../node_modules/@types/node",
"@types/jasmine": "file:../../node_modules/@types/jasmine",
"@types/vision": "file:../../node_modules/@types/vision",
"codelyzer": "5.1.0",
"concurrently": "3.1.0",
"jasmine-core": "3.4.0",
Expand Down
58 changes: 36 additions & 22 deletions integration/hapi-engine-ivy/server.ts
Original file line number Diff line number Diff line change
@@ -1,39 +1,56 @@
import 'zone.js/dist/zone-node';

import { ngHapiEngine } from '@nguniversal/hapi-engine';
import { Request, Server } from 'hapi';
import * as Inert from 'inert';
import * as inert from 'inert';
import * as vision from 'vision';
import { Request, Server, ResponseToolkit } from 'hapi';
import { join } from 'path';

import { AppServerModule } from './src/main.server';

// Hapi server
async function run(): Promise<void> {
const port: string | number = process.env.PORT || 4000;
const server = new Server({ port, host: 'localhost' });
const distFolder = join(process.cwd(), 'dist/hapi-ve/browser');
const distFolder = join(process.cwd(), 'dist/hapi-engine-ivy/browser');
const server = new Server({
port,
host: 'localhost',
routes: {
files: {
relativeTo: distFolder
}
},
});

await server.register(vision);
server.views({
engines: {
html : {
compile: (document: string) => (req: Request) => ngHapiEngine({
bootstrap: AppServerModule,
document,
req,
})
}
},
path: distFolder,
});

server.route({
method: 'GET',
path: '/*',
handler: (req: Request) =>
ngHapiEngine({
bootstrap: AppServerModule,
req,
})
path: '/{path*}',
handler: (req: Request, res: ResponseToolkit) =>
res.view('index', req)
});

await server.register(Inert);
await server.register(inert);

// Client bundles will be statically served from the built/ directory.
// Client bundles will be statically served from the dist directory.
server.route({
method: 'GET',
path: '/{file*}',
handler: {
directory: {
path: distFolder
}
}
path: '/{filename}.{ext}',
handler: (req: Request, res: ResponseToolkit) =>
res.file(`${req.params.filename}.${req.params.ext}`)
});

await server.start();
Expand All @@ -46,10 +63,7 @@ async function run(): Promise<void> {
declare const __non_webpack_require__: NodeRequire;
const mainModule = __non_webpack_require__.main;
if (mainModule && mainModule.filename === __filename) {
run().catch(error => {
console.error(`Error: ${error.toString()}`);
process.exit(1);
});
run();
}

export * from './src/main.server';
8 changes: 5 additions & 3 deletions integration/hapi-engine-ve/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,19 +28,21 @@
"@angular/platform-browser-dynamic": "9.0.0-next.5",
"@angular/platform-server": "9.0.0-next.5",
"@angular/router": "9.0.0-next.5",
"@nguniversal/hapi-engine": "file:../../dist/mdules-dist/hapi-engine",
"@nguniversal/hapi-engine": "file:../../dist/modules-dist/hapi-engine",
"hapi": "file:../../node_modules/hapi",
"inert": "5.1.0",
"rxjs": "file:../../node_modules/rxjs",
"zone.js": "file:../../node_modules/zone.js"
"zone.js": "file:../../node_modules/zone.js",
"vision": "5.4.4"
},
"devDependencies": {
"@angular-devkit/build-angular": "0.900.0-next.4",
"@angular/cli": "9.0.0-next.4",
"@angular/compiler-cli": "file:../../node_modules/@angular/compiler-cli",
"@types/express": "file:../../node_modules/@types/express",
"@types/inert": "file:../../node_modules/@types/inert",
"@types/node": "file:../../node_modules/@types/node",
"@types/jasmine": "file:../../node_modules/@types/jasmine",
"@types/vision": "file:../../node_modules/@types/vision",
"codelyzer": "5.1.0",
"concurrently": "3.1.0",
"jasmine-core": "3.4.0",
Expand Down
65 changes: 42 additions & 23 deletions integration/hapi-engine-ve/server.ts
Original file line number Diff line number Diff line change
@@ -1,41 +1,60 @@
import 'zone.js/dist/zone-node';

import { ngExpressEngine } from '@nguniversal/express-engine';
import * as express from 'express';
import { ngHapiEngine } from '@nguniversal/hapi-engine';
import * as inert from 'inert';
import * as vision from 'vision';
import { Request, Server, ResponseToolkit } from 'hapi';
import { join } from 'path';

import { AppServerModuleNgFactory } from './src/main.server';

// Hapi server
function run() {
const app = express();
async function run(): Promise<void> {
const port: string | number = process.env.PORT || 4000;
const distFolder = join(process.cwd(), 'dist/hapi-engine-ve/browser');
const server = new Server({
port,
host: 'localhost',
routes: {
files: {
relativeTo: distFolder
}
},
});

// Our Universal express-engine (found @ https://github.com/angular/universal/tree/master/modules/express-engine)
app.engine('html', ngExpressEngine({
bootstrap: AppServerModuleNgFactory,
}));
await server.register(vision);
server.views({
engines: {
html : {
compile: (document: string) => (req: Request) => ngHapiEngine({
bootstrap: AppServerModuleNgFactory,
document,
req,
})
}
},
path: distFolder,
});

app.set('view engine', 'html');
app.set('views', distFolder);
server.route({
method: 'GET',
path: '/{path*}',
handler: (req: Request, res: ResponseToolkit) =>
res.view('index', req)
});

// Example Express Rest API endpoints
// app.get('/api/**', (req, res) => { });
// Serve static files from /browser
app.get('*.*', express.static(distFolder, {
maxAge: '1y'
}));
await server.register(inert);

// All regular routes use the Universal engine
app.get('*', (req, res) => {
res.render('index', { req });
// Client bundles will be statically served from the dist directory.
server.route({
method: 'GET',
path: '/{filename}.{ext}',
handler: (req: Request, res: ResponseToolkit) =>
res.file(`${req.params.filename}.${req.params.ext}`)
});

// Start up the Node server
app.listen(port, () => {
console.log(`Node Express server listening on http://localhost:${port}`);
});
await server.start();
console.log(`Node Hapi server listening on http://localhost:${port}`);
}

// Webpack will replace 'require' with '__webpack_require__'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,39 +1,56 @@
import 'zone.js/dist/zone-node';

import { ngHapiEngine } from '@nguniversal/hapi-engine';
import { Request, Server } from 'hapi';
import * as Inert from 'inert';
import * as inert from 'inert';
import * as vision from 'vision';
import { Request, Server, ResponseToolkit } from 'hapi';
import { join } from 'path';

import { AppServerModule } from './src/<%= stripTsExtension(main) %>';

// Hapi server
async function run(): Promise<void> {
const port: string | number = process.env.PORT || <%= serverPort %>;
const server = new Server({ port, host: 'localhost' });
const distFolder = join(process.cwd(), '<%= browserDistDirectory %>');
const server = new Server({
port,
host: 'localhost',
routes: {
files: {
relativeTo: distFolder
}
},
});

await server.register(vision);
server.views({
engines: {
html : {
compile: (document: string) => (req: Request) => ngHapiEngine({
bootstrap: AppServerModule,
document,
req,
})
}
},
path: distFolder,
});

server.route({
method: 'GET',
path: '/*',
handler: (req: Request) =>
ngHapiEngine({
bootstrap: AppServerModule,
req,
})
path: '/{path*}',
handler: (req: Request, res: ResponseToolkit) =>
res.view('index', req)
});

await server.register(Inert);
await server.register(inert);

// Client bundles will be statically served from the dist directory.
server.route({
method: 'GET',
path: '/{file*}',
handler: {
directory: {
path: distFolder
}
}
path: '/{filename}.{ext}',
handler: (req: Request, res: ResponseToolkit) =>
res.file(`${req.params.filename}.${req.params.ext}`)
});

await server.start();
Expand Down
15 changes: 15 additions & 0 deletions modules/hapi-engine/schematics/install/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,21 @@ function addDependencies(options: UniversalOptions): Rule {
name: 'inert',
version: '^5.1.0',
});
addPackageJsonDependency(host, {
type: NodeDependencyType.Default,
name: 'vision',
version: '^5.4.4',
});
addPackageJsonDependency(host, {
type: NodeDependencyType.Dev,
name: '@types/vision',
version: '^5.4.4',
});
addPackageJsonDependency(host, {
type: NodeDependencyType.Dev,
name: '@types/inert',
version: '^5.1.0',
});
return host;
};
}
Expand Down
2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -100,8 +100,10 @@
"@types/express": "^4.0.39",
"@types/fs-extra": "^4.0.5",
"@types/hapi": "^17.0.12",
"@types/inert": "^5.1.2",
"@types/jasmine": "^2.8.6",
"@types/node": "^9.4.6",
"@types/vision": "^5.3.6",
"camelcase": "^4.1.0",
"domino": "^2.1.2",
"express": "^4.15.2",
Expand Down
40 changes: 40 additions & 0 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -436,6 +436,20 @@
dependencies:
"@types/node" "*"

"@types/hapi@*":
version "18.0.2"
resolved "https://registry.yarnpkg.com/@types/hapi/-/hapi-18.0.2.tgz#2c3ed843e1e7358486eccf64256e91f7918948b2"
integrity sha512-I3THPpOY0G0bXNLzyaqUzMIbqPrci21C1Vqlnek348SJq2Gp7TLSnQbwOb+v/xunxCTzY3o2fV3h7uffL3Ln0w==
dependencies:
"@types/boom" "*"
"@types/catbox" "*"
"@types/iron" "*"
"@types/joi" "*"
"@types/mimos" "*"
"@types/node" "*"
"@types/podium" "*"
"@types/shot" "*"

"@types/hapi@^17.0.12":
version "17.8.2"
resolved "https://registry.yarnpkg.com/@types/hapi/-/hapi-17.8.2.tgz#667fbeff250c338dca9e6cc1779f5696c7c148ed"
Expand All @@ -449,6 +463,13 @@
"@types/podium" "*"
"@types/shot" "*"

"@types/inert@^5.1.2":
version "5.1.2"
resolved "https://registry.yarnpkg.com/@types/inert/-/inert-5.1.2.tgz#2bb8bef3b2462f904c960654c9edfa39285a85c6"
integrity sha512-3IoSFLQWvhLfZ85kHas/F3iD/TyZPfeJbTsDjrwYljK1MgBGCB2OywAsyeA/YiJ62VbNXfXBwpD1/VbJPIZSGA==
dependencies:
"@types/hapi" "*"

"@types/iron@*":
version "5.0.1"
resolved "https://registry.yarnpkg.com/@types/iron/-/iron-5.0.1.tgz#5420bbda8623c48ee51b9a78ebad05d7305b4b24"
Expand Down Expand Up @@ -540,6 +561,14 @@
dependencies:
"@types/node" "*"

"@types/vision@^5.3.6":
version "5.3.6"
resolved "https://registry.yarnpkg.com/@types/vision/-/vision-5.3.6.tgz#d696d007ca82254b955fd485bfae0f738d8ae617"
integrity sha512-Wo+9LNI9wGcHRShuZW+lbwwj+g6+dyTxtHtNpzfYl4iehYzvFVzGyNo1MgW4qTHQCFEYOirLHBlrutkIRE2TMw==
dependencies:
"@types/hapi" "*"
handlebars "^4.1.0"

"@types/[email protected]":
version "3.16.31"
resolved "https://registry.yarnpkg.com/@types/z-schema/-/z-schema-3.16.31.tgz#2eb1d00a5e4ec3fa58c76afde12e182b66dc5c1c"
Expand Down Expand Up @@ -2601,6 +2630,17 @@ handlebars@^4.0.3:
optionalDependencies:
uglify-js "^3.1.4"

handlebars@^4.1.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.2.0.tgz#57ce8d2175b9bbb3d8b3cf3e4217b1aec8ddcb2e"
integrity sha512-Kb4xn5Qh1cxAKvQnzNWZ512DhABzyFNmsaJf3OAkWNa4NkaqWcNI8Tao8Tasi0/F4JD9oyG0YxuFyvyR57d+Gw==
dependencies:
neo-async "^2.6.0"
optimist "^0.6.1"
source-map "^0.6.1"
optionalDependencies:
uglify-js "^3.1.4"

hapi@^17.5.1:
version "17.8.1"
resolved "https://registry.yarnpkg.com/hapi/-/hapi-17.8.1.tgz#63cc5bbc138b6ae0919e977764647a17556e4c87"
Expand Down

0 comments on commit abe57e0

Please sign in to comment.