/** * Copyright (c) HashiCorp, Inc. * SPDX-License-Identifier: BUSL-1.1 */ /* eslint-env node */ /*eslint node/no-extraneous-require: "off"*/ 'use strict'; // const $ = process.env; const fs = require('fs'); const path = require('path'); const promisify = require('util').promisify; const read = promisify(fs.readFile); const apiDouble = require('@hashicorp/api-double'); const mergeTrees = require('broccoli-merge-trees'); const writeFile = require('broccoli-file-creator'); const apiDoubleHeaders = require('@hashicorp/api-double/lib/headers'); const cookieParser = require('cookie-parser'); const bodyParser = require('body-parser'); // module.exports = { name: 'startup', serverMiddleware: function (server) { // TODO: see if we can move these into the project specific `/server` directory // instead of inside an addon // TODO: This should all be moved out into ember-cli-api-double // and we should figure out a way to get to the settings here for // so we can set this path name centrally in config // TODO: undefined here is a possible faker salt that we should be able // to pass in from ember serve/config somehow const dir = path.resolve('./mock-api'); const controller = apiDouble(undefined, dir, read, $, path.resolve); [ apiDoubleHeaders(), cookieParser(), bodyParser.text({ type: '*/*' }), controller().serve, ].reduce(function (app, item) { return app.use(item); }, server.app); }, treeFor: function (name) { const tree = this._super.treeFor.apply(this, arguments); if (name === 'app') { if (['production', 'test'].includes(process.env.EMBER_ENV)) { return mergeTrees([tree, writeFile('components/debug/navigation/index.hbs', '')]); } } return tree; }, contentFor: function (type, config) { const vars = { appName: config.modulePrefix, environment: config.environment, rootURL: config.environment === 'production' ? '{{.ContentPath}}' : config.rootURL, config: config, env: function (key) { if (process.env[key]) { return process.env[key]; } }, }; switch (type) { case 'head': return require('./templates/head.html.js')(vars); case 'body': return require('./templates/body.html.js')(vars); case 'root-class': return 'ember-loading'; } }, };