Socket
Socket
Sign inDemoInstall

@mocks-server/core

Package Overview
Dependencies
Maintainers
1
Versions
52
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@mocks-server/core - npm Package Compare versions

Comparing version 2.1.0 to 2.2.0

10

CHANGELOG.md

@@ -17,2 +17,12 @@ # Change Log

## [2.2.0] - 2021-04-14
### Added
- feat: Add `babelRegister` and `babelRegisterOptions` low level configuration options, allowing to enable Babel when loading mocks and routes (#151);
- feat: Add `lowLevelConfig` getter to core, returning low level configuration properties.
### Changed
- chore: update node versions in pipeline
- chore(deps): update dependencies
## [2.1.0] - 2021-03-23

@@ -19,0 +29,0 @@

19

package.json
{
"name": "@mocks-server/core",
"version": "2.1.0",
"version": "2.2.0",
"description": "Pluggable mock server supporting multiple route variants and mocks",

@@ -42,4 +42,5 @@ "keywords": [

"dependencies": {
"@babel/register": "7.13.14",
"@hapi/boom": "9.1.2",
"body-parser": "1.19.0",
"@hapi/boom": "9.1.2",
"commander": "6.2.1",

@@ -58,10 +59,12 @@ "cors": "2.8.5",

"winston": "3.3.3",
"winston-array-transport": "1.0.1"
"winston-array-transport": "1.0.2"
},
"devDependencies": {
"cross-fetch": "3.1.2",
"@babel/preset-env": "7.13.15",
"@babel/preset-typescript": "7.13.0",
"cross-fetch": "3.1.4",
"cross-spawn": "7.0.3",
"eslint": "7.22.0",
"eslint-plugin-no-only-tests": "2.4.0",
"eslint-config-prettier": "7.2.0",
"eslint": "7.24.0",
"eslint-plugin-no-only-tests": "2.5.0",
"eslint-config-prettier": "8.1.0",
"eslint-plugin-prettier": "3.3.1",

@@ -74,3 +77,3 @@ "husky": "4.3.8",

"request-promise": "4.2.6",
"sinon": "9.2.4",
"sinon": "10.0.0",
"strip-ansi": "6.0.0",

@@ -77,0 +80,0 @@ "tree-kill": "1.2.2",

@@ -52,4 +52,7 @@ // For a detailed explanation regarding each configuration property, visit:

// low level config
// babelRegister: false,
// babelRegisterOptions: {} // For a detailed explanation regarding each Babel register option, visit: https://babeljs.io/docs/en/babel-register
// addPlugins: [],
// addRoutesHandlers: [],
};

@@ -156,2 +156,6 @@ /*

}
if (config.hasOwnProperty("babelRegister")) {
this._coreOptions.babelRegister = config.babelRegister;
}
this._coreOptions.babelRegisterOptions = config.babelRegisterOptions || {};
}

@@ -158,0 +162,0 @@

@@ -248,2 +248,6 @@ /*

get lowLevelConfig() {
return { ...this._config.coreOptions };
}
get mocks() {

@@ -250,0 +254,0 @@ return this._mocks;

@@ -16,9 +16,10 @@ /*

const fsExtra = require("fs-extra");
const { map, debounce, flatten } = require("lodash");
const { mocksFileToUse } = require("./helpers");
const { mocksFileToUse, babelRegisterDefaultOptions, getFilesGlobule } = require("./helpers");
const { createMocksFolder } = require("../../support/scaffold");
const PLUGIN_NAME = "@mocks-server/core/plugin-files-loader";
const BABEL_REGISTER_OPTION = "babelRegister";
const BABEL_REGISTER_OPTIONS_OPTION = "babelRegisterOptions";
const PATH_OPTION = "path";

@@ -28,3 +29,2 @@ const WATCH_OPTION = "watch";

const ROUTES_FOLDER = "routes";
const MOCKS_FILE = "mocks";

@@ -81,2 +81,7 @@ class FilesLoaderBase {

_readFile(filePath) {
const content = this._require(filePath);
return content.default || content;
}
_cleanRequireCacheFolder() {

@@ -131,2 +136,10 @@ map(this._cache(), (cacheData, filePath) => {

this._tracer.info(`Loading files from folder ${this._path}`);
if (!!this._core.lowLevelConfig[BABEL_REGISTER_OPTION]) {
this._require("@babel/register")(
babelRegisterDefaultOptions(
resolvedFolder,
this._core.lowLevelConfig[BABEL_REGISTER_OPTIONS_OPTION]
)
);
}
this._cleanRequireCacheFolder();

@@ -141,3 +154,6 @@ this._loadRoutesFiles();

const routeFiles = globule.find({
src: ["**/*.js", "**/*.json"],
src: getFilesGlobule(
this._core.lowLevelConfig[BABEL_REGISTER_OPTION],
this._core.lowLevelConfig[BABEL_REGISTER_OPTIONS_OPTION]
),
srcBase: routesPath,

@@ -150,3 +166,3 @@ prefixBase: true,

// TODO, validate basic routes structure, add warning for not valid routes
return this._require(filePath);
return this._readFile(filePath);
})

@@ -164,8 +180,10 @@ );

_loadMocksFile() {
const mocksFileJs = path.resolve(this._path, `${MOCKS_FILE}.js`);
const mocksFileJson = path.resolve(this._path, `${MOCKS_FILE}.json`);
let mocksFile = mocksFileToUse(mocksFileJs, mocksFileJson);
let mocksFile = mocksFileToUse(
this._path,
this._core.lowLevelConfig[BABEL_REGISTER_OPTION],
this._core.lowLevelConfig[BABEL_REGISTER_OPTIONS_OPTION]
);
if (mocksFile) {
try {
const mocks = this._require(mocksFile);
const mocks = this._readFile(mocksFile);
// TODO, validate mocks, add warning for not valid mocks

@@ -172,0 +190,0 @@ this._loadMocks(mocks);

@@ -12,9 +12,63 @@ /*

const fsExtra = require("fs-extra");
const path = require("path");
function mocksFileToUse(mocksFileJs, mocksFileJson) {
if (fsExtra.existsSync(mocksFileJs)) {
return mocksFileJs;
// **/*
const MOCKS_FILE_NAME = "mocks";
const DEFAULT_EXTENSIONS = [".json", ".js"];
const BABEL_DEFAULT_EXTENSIONS = [".es6", ".es", ".jsx", ".js", ".mjs", ".ts"];
function globuleExtensionPattern(extension) {
return `**/*${extension}`;
}
function extensionsGlobulePatterns(extensions) {
return extensions.map(globuleExtensionPattern);
}
function getGlobulePatterns(extensions) {
return extensionsGlobulePatterns(extensions);
}
function getFilesExtensions(babelRegister, babelRegisterOptions) {
if (!!babelRegister) {
if (babelRegisterOptions.extensions) {
return DEFAULT_EXTENSIONS.concat(babelRegisterOptions.extensions);
}
return DEFAULT_EXTENSIONS.concat(BABEL_DEFAULT_EXTENSIONS);
}
if (fsExtra.existsSync(mocksFileJson)) {
return mocksFileJson;
return DEFAULT_EXTENSIONS;
}
function getFilesGlobule(babelRegister, babelRegisterOptions) {
return getGlobulePatterns(getFilesExtensions(babelRegister, babelRegisterOptions));
}
function babelRegisterOnlyFilter(mocksFolder) {
return (filePath) => {
return filePath.indexOf(mocksFolder) === 0;
};
}
function babelRegisterDefaultOptions(mocksFolder, babelRegisterOptions) {
return {
only: [babelRegisterOnlyFilter(mocksFolder)],
cache: false,
extensions: BABEL_DEFAULT_EXTENSIONS,
...babelRegisterOptions,
};
}
function mocksFilePath(mocksFolder, extension) {
return path.resolve(mocksFolder, `${MOCKS_FILE_NAME}${extension}`);
}
function mocksFileToUse(mocksFolder, babelRegister, babelRegisterOptions) {
const extensions = getFilesExtensions(babelRegister, babelRegisterOptions);
const existentExtension = extensions.find((extension) => {
return fsExtra.existsSync(mocksFilePath(mocksFolder, extension));
});
if (existentExtension) {
return mocksFilePath(mocksFolder, existentExtension);
}

@@ -26,2 +80,4 @@ return null;

mocksFileToUse,
babelRegisterDefaultOptions,
getFilesGlobule,
};
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc