@form8ion/hapi-scaffolder 4.0.7 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js CHANGED
@@ -20,7 +20,7 @@ async function scaffoldServer ({projectRoot, projectName}) {
20
20
  {projectName}
21
21
  )
22
22
  ),
23
- fs.promises.writeFile(`${serverDirectory}/index.js`, 'export {default} from \'./server\';\n'),
23
+ fs.promises.writeFile(`${serverDirectory}/index.js`, 'export {default} from \'./server.js\';\n'),
24
24
  fs.promises.copyFile(
25
25
  path.resolve(__dirname, '..', 'templates', 'webpack.config.server.mjs'),
26
26
  `${projectRoot}/webpack.config.server.babel.js`
@@ -81,11 +81,9 @@ async function scaffold({projectRoot, projectName, tests}) {
81
81
  {
82
82
  dependencies: [
83
83
  '@hapi/glue',
84
- '@hapi/good',
85
84
  'hapi-graceful-shutdown-plugin',
86
- 'dotenv-safe',
87
- 'good-bunyan',
88
- 'bunyan'
85
+ 'hapi-pino',
86
+ 'dotenv-safe'
89
87
  ],
90
88
  devDependencies: ['webpack', 'webpack-cli'],
91
89
  scripts: {
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/server.js","../src/documentation.js","../src/testing.js","../src/scaffolder.js"],"sourcesContent":["import {promises} from 'fs';\nimport {resolve} from 'path';\nimport mustache from 'mustache';\nimport mkdir from '../thirdparty-wrappers/make-dir';\n\nexport default async function ({projectRoot, projectName}) {\n const serverDirectory = await mkdir(`${projectRoot}/src/server`);\n\n await Promise.all([\n promises.copyFile(resolve(__dirname, '..', 'templates', 'server.mjs'), `${serverDirectory}/server.js`),\n promises.copyFile(resolve(__dirname, '..', 'templates', '.env.example'), `${projectRoot}/.env.example`),\n promises.writeFile(\n `${serverDirectory}/manifest.js`,\n mustache.render(\n await promises.readFile(resolve(__dirname, '..', 'templates', 'manifest.mustache'), 'utf8'),\n {projectName}\n )\n ),\n promises.writeFile(`${serverDirectory}/index.js`, 'export {default} from \\'./server\\';\\n'),\n promises.copyFile(\n resolve(__dirname, '..', 'templates', 'webpack.config.server.mjs'),\n `${projectRoot}/webpack.config.server.babel.js`\n )\n ]);\n}\n","export default function () {\n return {\n usage: `### Build the Bundle\n\n\\`\\`\\`sh\n$ npm run build\n\\`\\`\\`\n\n### Start the Server\n\n\\`\\`\\`sh\n$ npm start\n\\`\\`\\``\n };\n}\n","import {resolve} from 'path';\nimport {promises} from 'fs';\nimport deepmerge from 'deepmerge';\nimport {scaffold as scaffoldCucumber} from '@form8ion/cucumber-scaffolder';\n\nimport mkdir from '../thirdparty-wrappers/make-dir';\n\nexport default async function ({projectRoot, tests}) {\n if (tests.integration) {\n const [stepDefinitionsDirectory, cucumberResults] = await Promise.all([\n mkdir(`${projectRoot}/test/integration/features/step_definitions`),\n scaffoldCucumber({projectRoot})\n ]);\n\n await Promise.all([\n promises.copyFile(\n resolve(__dirname, '..', 'templates', 'canary.feature'),\n `${stepDefinitionsDirectory}/../canary.feature`\n ),\n promises.copyFile(\n resolve(__dirname, '..', 'templates', 'server-steps.js'),\n `${stepDefinitionsDirectory}/server-steps.js`\n )\n ]);\n\n return deepmerge.all([\n {devDependencies: ['@travi/any', 'http-status-codes']},\n cucumberResults\n ]);\n }\n\n return {};\n}\n","import deepmerge from 'deepmerge';\n\nimport scaffoldServer from './server';\nimport scaffoldDocumentation from './documentation';\nimport scaffoldTesting from './testing';\n\nexport async function scaffold({projectRoot, projectName, tests}) {\n const [testingResults] = await Promise.all([\n scaffoldTesting({projectRoot, tests}),\n scaffoldServer({projectRoot, projectName})\n ]);\n\n return deepmerge.all([\n {\n dependencies: [\n '@hapi/glue',\n '@hapi/good',\n 'hapi-graceful-shutdown-plugin',\n 'dotenv-safe',\n 'good-bunyan',\n 'bunyan'\n ],\n devDependencies: ['webpack', 'webpack-cli'],\n scripts: {\n build: 'npm-run-all --print-label --parallel build:*',\n 'build:server': 'webpack --env production --config webpack.config.server.babel.js',\n start: 'node ./lib/server',\n 'pretest:integration': 'run-s build'\n },\n documentation: scaffoldDocumentation()\n },\n testingResults\n ]);\n}\n"],"names":["mkdir","promises","resolve","scaffoldCucumber"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/server.js","../src/documentation.js","../src/testing.js","../src/scaffolder.js"],"sourcesContent":["import {promises} from 'fs';\nimport {resolve} from 'path';\nimport mustache from 'mustache';\n\nimport mkdir from '../thirdparty-wrappers/make-dir.js';\n\nexport default async function ({projectRoot, projectName}) {\n const serverDirectory = await mkdir(`${projectRoot}/src/server`);\n\n await Promise.all([\n promises.copyFile(resolve(__dirname, '..', 'templates', 'server.mjs'), `${serverDirectory}/server.js`),\n promises.copyFile(resolve(__dirname, '..', 'templates', '.env.example'), `${projectRoot}/.env.example`),\n promises.writeFile(\n `${serverDirectory}/manifest.js`,\n mustache.render(\n await promises.readFile(resolve(__dirname, '..', 'templates', 'manifest.mustache'), 'utf8'),\n {projectName}\n )\n ),\n promises.writeFile(`${serverDirectory}/index.js`, 'export {default} from \\'./server.js\\';\\n'),\n promises.copyFile(\n resolve(__dirname, '..', 'templates', 'webpack.config.server.mjs'),\n `${projectRoot}/webpack.config.server.babel.js`\n )\n ]);\n}\n","export default function () {\n return {\n usage: `### Build the Bundle\n\n\\`\\`\\`sh\n$ npm run build\n\\`\\`\\`\n\n### Start the Server\n\n\\`\\`\\`sh\n$ npm start\n\\`\\`\\``\n };\n}\n","import {resolve} from 'path';\nimport {promises} from 'fs';\nimport deepmerge from 'deepmerge';\n\nimport {scaffold as scaffoldCucumber} from '@form8ion/cucumber-scaffolder';\n\nimport mkdir from '../thirdparty-wrappers/make-dir.js';\n\nexport default async function ({projectRoot, tests}) {\n if (tests.integration) {\n const [stepDefinitionsDirectory, cucumberResults] = await Promise.all([\n mkdir(`${projectRoot}/test/integration/features/step_definitions`),\n scaffoldCucumber({projectRoot})\n ]);\n\n await Promise.all([\n promises.copyFile(\n resolve(__dirname, '..', 'templates', 'canary.feature'),\n `${stepDefinitionsDirectory}/../canary.feature`\n ),\n promises.copyFile(\n resolve(__dirname, '..', 'templates', 'server-steps.js'),\n `${stepDefinitionsDirectory}/server-steps.js`\n )\n ]);\n\n return deepmerge.all([\n {devDependencies: ['@travi/any', 'http-status-codes']},\n cucumberResults\n ]);\n }\n\n return {};\n}\n","import deepmerge from 'deepmerge';\n\nimport scaffoldServer from './server.js';\nimport scaffoldDocumentation from './documentation.js';\nimport scaffoldTesting from './testing.js';\n\nexport async function scaffold({projectRoot, projectName, tests}) {\n const [testingResults] = await Promise.all([\n scaffoldTesting({projectRoot, tests}),\n scaffoldServer({projectRoot, projectName})\n ]);\n\n return deepmerge.all([\n {\n dependencies: [\n '@hapi/glue',\n 'hapi-graceful-shutdown-plugin',\n 'hapi-pino',\n 'dotenv-safe'\n ],\n devDependencies: ['webpack', 'webpack-cli'],\n scripts: {\n build: 'npm-run-all --print-label --parallel build:*',\n 'build:server': 'webpack --env production --config webpack.config.server.babel.js',\n start: 'node ./lib/server',\n 'pretest:integration': 'run-s build'\n },\n documentation: scaffoldDocumentation()\n },\n testingResults\n ]);\n}\n"],"names":["mkdir","promises","resolve","scaffoldCucumber"],"mappings":"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"}
package/lib/index.mjs CHANGED
@@ -18,7 +18,7 @@ async function scaffoldServer ({projectRoot, projectName}) {
18
18
  {projectName}
19
19
  )
20
20
  ),
21
- promises.writeFile(`${serverDirectory}/index.js`, 'export {default} from \'./server\';\n'),
21
+ promises.writeFile(`${serverDirectory}/index.js`, 'export {default} from \'./server.js\';\n'),
22
22
  promises.copyFile(
23
23
  resolve(__dirname, '..', 'templates', 'webpack.config.server.mjs'),
24
24
  `${projectRoot}/webpack.config.server.babel.js`
@@ -79,11 +79,9 @@ async function scaffold({projectRoot, projectName, tests}) {
79
79
  {
80
80
  dependencies: [
81
81
  '@hapi/glue',
82
- '@hapi/good',
83
82
  'hapi-graceful-shutdown-plugin',
84
- 'dotenv-safe',
85
- 'good-bunyan',
86
- 'bunyan'
83
+ 'hapi-pino',
84
+ 'dotenv-safe'
87
85
  ],
88
86
  devDependencies: ['webpack', 'webpack-cli'],
89
87
  scripts: {
package/lib/index.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/server.js","../src/documentation.js","../src/testing.js","../src/scaffolder.js"],"sourcesContent":["import {promises} from 'fs';\nimport {resolve} from 'path';\nimport mustache from 'mustache';\nimport mkdir from '../thirdparty-wrappers/make-dir';\n\nexport default async function ({projectRoot, projectName}) {\n const serverDirectory = await mkdir(`${projectRoot}/src/server`);\n\n await Promise.all([\n promises.copyFile(resolve(__dirname, '..', 'templates', 'server.mjs'), `${serverDirectory}/server.js`),\n promises.copyFile(resolve(__dirname, '..', 'templates', '.env.example'), `${projectRoot}/.env.example`),\n promises.writeFile(\n `${serverDirectory}/manifest.js`,\n mustache.render(\n await promises.readFile(resolve(__dirname, '..', 'templates', 'manifest.mustache'), 'utf8'),\n {projectName}\n )\n ),\n promises.writeFile(`${serverDirectory}/index.js`, 'export {default} from \\'./server\\';\\n'),\n promises.copyFile(\n resolve(__dirname, '..', 'templates', 'webpack.config.server.mjs'),\n `${projectRoot}/webpack.config.server.babel.js`\n )\n ]);\n}\n","export default function () {\n return {\n usage: `### Build the Bundle\n\n\\`\\`\\`sh\n$ npm run build\n\\`\\`\\`\n\n### Start the Server\n\n\\`\\`\\`sh\n$ npm start\n\\`\\`\\``\n };\n}\n","import {resolve} from 'path';\nimport {promises} from 'fs';\nimport deepmerge from 'deepmerge';\nimport {scaffold as scaffoldCucumber} from '@form8ion/cucumber-scaffolder';\n\nimport mkdir from '../thirdparty-wrappers/make-dir';\n\nexport default async function ({projectRoot, tests}) {\n if (tests.integration) {\n const [stepDefinitionsDirectory, cucumberResults] = await Promise.all([\n mkdir(`${projectRoot}/test/integration/features/step_definitions`),\n scaffoldCucumber({projectRoot})\n ]);\n\n await Promise.all([\n promises.copyFile(\n resolve(__dirname, '..', 'templates', 'canary.feature'),\n `${stepDefinitionsDirectory}/../canary.feature`\n ),\n promises.copyFile(\n resolve(__dirname, '..', 'templates', 'server-steps.js'),\n `${stepDefinitionsDirectory}/server-steps.js`\n )\n ]);\n\n return deepmerge.all([\n {devDependencies: ['@travi/any', 'http-status-codes']},\n cucumberResults\n ]);\n }\n\n return {};\n}\n","import deepmerge from 'deepmerge';\n\nimport scaffoldServer from './server';\nimport scaffoldDocumentation from './documentation';\nimport scaffoldTesting from './testing';\n\nexport async function scaffold({projectRoot, projectName, tests}) {\n const [testingResults] = await Promise.all([\n scaffoldTesting({projectRoot, tests}),\n scaffoldServer({projectRoot, projectName})\n ]);\n\n return deepmerge.all([\n {\n dependencies: [\n '@hapi/glue',\n '@hapi/good',\n 'hapi-graceful-shutdown-plugin',\n 'dotenv-safe',\n 'good-bunyan',\n 'bunyan'\n ],\n devDependencies: ['webpack', 'webpack-cli'],\n scripts: {\n build: 'npm-run-all --print-label --parallel build:*',\n 'build:server': 'webpack --env production --config webpack.config.server.babel.js',\n start: 'node ./lib/server',\n 'pretest:integration': 'run-s build'\n },\n documentation: scaffoldDocumentation()\n },\n testingResults\n ]);\n}\n"],"names":["mkdir","scaffoldCucumber"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../src/server.js","../src/documentation.js","../src/testing.js","../src/scaffolder.js"],"sourcesContent":["import {promises} from 'fs';\nimport {resolve} from 'path';\nimport mustache from 'mustache';\n\nimport mkdir from '../thirdparty-wrappers/make-dir.js';\n\nexport default async function ({projectRoot, projectName}) {\n const serverDirectory = await mkdir(`${projectRoot}/src/server`);\n\n await Promise.all([\n promises.copyFile(resolve(__dirname, '..', 'templates', 'server.mjs'), `${serverDirectory}/server.js`),\n promises.copyFile(resolve(__dirname, '..', 'templates', '.env.example'), `${projectRoot}/.env.example`),\n promises.writeFile(\n `${serverDirectory}/manifest.js`,\n mustache.render(\n await promises.readFile(resolve(__dirname, '..', 'templates', 'manifest.mustache'), 'utf8'),\n {projectName}\n )\n ),\n promises.writeFile(`${serverDirectory}/index.js`, 'export {default} from \\'./server.js\\';\\n'),\n promises.copyFile(\n resolve(__dirname, '..', 'templates', 'webpack.config.server.mjs'),\n `${projectRoot}/webpack.config.server.babel.js`\n )\n ]);\n}\n","export default function () {\n return {\n usage: `### Build the Bundle\n\n\\`\\`\\`sh\n$ npm run build\n\\`\\`\\`\n\n### Start the Server\n\n\\`\\`\\`sh\n$ npm start\n\\`\\`\\``\n };\n}\n","import {resolve} from 'path';\nimport {promises} from 'fs';\nimport deepmerge from 'deepmerge';\n\nimport {scaffold as scaffoldCucumber} from '@form8ion/cucumber-scaffolder';\n\nimport mkdir from '../thirdparty-wrappers/make-dir.js';\n\nexport default async function ({projectRoot, tests}) {\n if (tests.integration) {\n const [stepDefinitionsDirectory, cucumberResults] = await Promise.all([\n mkdir(`${projectRoot}/test/integration/features/step_definitions`),\n scaffoldCucumber({projectRoot})\n ]);\n\n await Promise.all([\n promises.copyFile(\n resolve(__dirname, '..', 'templates', 'canary.feature'),\n `${stepDefinitionsDirectory}/../canary.feature`\n ),\n promises.copyFile(\n resolve(__dirname, '..', 'templates', 'server-steps.js'),\n `${stepDefinitionsDirectory}/server-steps.js`\n )\n ]);\n\n return deepmerge.all([\n {devDependencies: ['@travi/any', 'http-status-codes']},\n cucumberResults\n ]);\n }\n\n return {};\n}\n","import deepmerge from 'deepmerge';\n\nimport scaffoldServer from './server.js';\nimport scaffoldDocumentation from './documentation.js';\nimport scaffoldTesting from './testing.js';\n\nexport async function scaffold({projectRoot, projectName, tests}) {\n const [testingResults] = await Promise.all([\n scaffoldTesting({projectRoot, tests}),\n scaffoldServer({projectRoot, projectName})\n ]);\n\n return deepmerge.all([\n {\n dependencies: [\n '@hapi/glue',\n 'hapi-graceful-shutdown-plugin',\n 'hapi-pino',\n 'dotenv-safe'\n ],\n devDependencies: ['webpack', 'webpack-cli'],\n scripts: {\n build: 'npm-run-all --print-label --parallel build:*',\n 'build:server': 'webpack --env production --config webpack.config.server.babel.js',\n start: 'node ./lib/server',\n 'pretest:integration': 'run-s build'\n },\n documentation: scaffoldDocumentation()\n },\n testingResults\n ]);\n}\n"],"names":["mkdir","scaffoldCucumber"],"mappings":"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"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@form8ion/hapi-scaffolder",
3
3
  "description": "opinionated scaffolder for hapi.js projects",
4
4
  "license": "MIT",
5
- "version": "4.0.7",
5
+ "version": "4.1.0",
6
6
  "author": "Matt Travi <npm@travi.org> (https://matt.travi.org/)",
7
7
  "repository": "form8ion/hapi-scaffolder",
8
8
  "bugs": "https://github.com/form8ion/hapi-scaffolder/issues",
@@ -49,33 +49,34 @@
49
49
  "mustache": "^4.0.0"
50
50
  },
51
51
  "devDependencies": {
52
- "@babel/register": "7.22.5",
53
- "@cucumber/cucumber": "9.3.0",
54
- "@form8ion/babel-preset": "1.6.107",
55
- "@form8ion/commitlint-config": "1.0.53",
56
- "@form8ion/eslint-config": "5.0.38",
52
+ "@babel/register": "7.23.7",
53
+ "@cucumber/cucumber": "10.6.0",
54
+ "@form8ion/babel-preset": "1.6.127",
55
+ "@form8ion/commitlint-config": "1.0.76",
56
+ "@form8ion/core": "4.2.1",
57
+ "@form8ion/eslint-config": "7.0.9",
57
58
  "@form8ion/eslint-config-cucumber": "1.4.1",
58
- "@form8ion/eslint-config-mocha": "2.0.3",
59
- "@form8ion/javascript": "11.5.5",
60
- "@form8ion/remark-lint-preset": "5.0.9",
61
- "@travi/any": "2.1.8",
62
- "ban-sensitive-files": "1.9.19",
59
+ "@form8ion/eslint-config-mocha": "3.0.5",
60
+ "@form8ion/javascript": "12.6.0",
61
+ "@form8ion/remark-lint-preset": "6.0.3",
62
+ "@travi/any": "3.1.0",
63
+ "ban-sensitive-files": "1.10.2",
63
64
  "bdd-stdin": "0.2.0",
64
- "c8": "8.0.1",
65
- "chai": "4.3.7",
65
+ "c8": "9.1.0",
66
+ "chai": "4.4.1",
66
67
  "cross-env": "7.0.3",
67
68
  "cz-conventional-changelog": "3.3.0",
68
- "gherkin-lint": "4.2.2",
69
- "husky": "8.0.3",
70
- "mocha": "10.2.0",
69
+ "gherkin-lint": "4.2.4",
70
+ "husky": "9.0.11",
71
+ "mocha": "10.4.0",
71
72
  "mock-fs": "5.2.0",
72
- "npm-run-all": "4.1.5",
73
- "publint": "0.2.0",
74
- "remark-cli": "11.0.0",
75
- "rimraf": "5.0.1",
76
- "rollup": "3.27.0",
73
+ "npm-run-all2": "6.1.2",
74
+ "publint": "0.2.7",
75
+ "remark-cli": "12.0.1",
76
+ "rimraf": "5.0.5",
77
+ "rollup": "4.17.2",
77
78
  "rollup-plugin-auto-external": "2.0.0",
78
- "sinon": "15.2.0"
79
+ "sinon": "17.0.1"
79
80
  },
80
81
  "peerDependencies": {
81
82
  "@form8ion/javascript": ">=2.0.0"
@@ -1,11 +1,7 @@
1
- import bunyan from 'bunyan';
1
+ import HapiPino from 'hapi-pino';
2
2
 
3
3
  require('dotenv-safe').config();
4
4
 
5
- const logger = bunyan.createLogger({
6
- name: '{{ projectName }}'
7
- });
8
-
9
5
  export default {
10
6
  server: {port: process.env.PORT, routes: {security: true}},
11
7
  register: {
@@ -18,22 +14,14 @@ export default {
18
14
  }
19
15
  },
20
16
  {
21
- plugin: require('@hapi/good'),
17
+ plugin: HapiPino,
22
18
  options: {
23
- ops: {
24
- interval: 1000
25
- },
26
- reporters: {
27
- bunyan: [
28
- {
29
- module: require('good-bunyan'),
30
- args: [
31
- {log: '*', request: '*', response: '*', error: '*'},
32
- {logger, levels: {response: 'info', request: 'info'}}
33
- ]
34
- }
35
- ]
36
- }
19
+ ignorePaths: [
20
+ '/health'
21
+ ],
22
+ redact: [
23
+ 'req.headers.authorization'
24
+ ]
37
25
  }
38
26
  }
39
27
  ]
@@ -1,5 +1,6 @@
1
1
  import Glue from '@hapi/glue';
2
- import manifest from './manifest';
2
+
3
+ import manifest from './manifest.js';
3
4
 
4
5
  const startServer = async function () {
5
6
  try {