@mocks-server/core
Advanced tools
Comparing version 2.1.0 to 2.2.0
@@ -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 @@ |
{ | ||
"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, | ||
}; |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
140518
3233
17
18
+ Added@babel/register@7.13.14
+ Added@ampproject/remapping@2.3.0(transitive)
+ Added@babel/code-frame@7.24.7(transitive)
+ Added@babel/compat-data@7.25.4(transitive)
+ Added@babel/core@7.25.2(transitive)
+ Added@babel/generator@7.25.6(transitive)
+ Added@babel/helper-compilation-targets@7.25.2(transitive)
+ Added@babel/helper-module-imports@7.24.7(transitive)
+ Added@babel/helper-module-transforms@7.25.2(transitive)
+ Added@babel/helper-simple-access@7.24.7(transitive)
+ Added@babel/helper-string-parser@7.24.8(transitive)
+ Added@babel/helper-validator-identifier@7.24.7(transitive)
+ Added@babel/helper-validator-option@7.24.8(transitive)
+ Added@babel/helpers@7.25.6(transitive)
+ Added@babel/highlight@7.24.7(transitive)
+ Added@babel/parser@7.25.6(transitive)
+ Added@babel/register@7.13.14(transitive)
+ Added@babel/template@7.25.0(transitive)
+ Added@babel/traverse@7.25.6(transitive)
+ Added@babel/types@7.25.6(transitive)
+ Added@jridgewell/gen-mapping@0.3.5(transitive)
+ Added@jridgewell/resolve-uri@3.1.2(transitive)
+ Added@jridgewell/set-array@1.2.1(transitive)
+ Added@jridgewell/sourcemap-codec@1.5.0(transitive)
+ Added@jridgewell/trace-mapping@0.3.25(transitive)
+ Addedansi-styles@3.2.1(transitive)
+ Addedbrowserslist@4.23.3(transitive)
+ Addedbuffer-from@1.1.2(transitive)
+ Addedcaniuse-lite@1.0.30001663(transitive)
+ Addedchalk@2.4.2(transitive)
+ Addedcommondir@1.0.1(transitive)
+ Addedconvert-source-map@2.0.0(transitive)
+ Addeddebug@4.3.7(transitive)
+ Addedelectron-to-chromium@1.5.28(transitive)
+ Addedescalade@3.2.0(transitive)
+ Addedescape-string-regexp@1.0.5(transitive)
+ Addedfind-cache-dir@2.1.0(transitive)
+ Addedfind-up@3.0.0(transitive)
+ Addedgensync@1.0.0-beta.2(transitive)
+ Addedglobals@11.12.0(transitive)
+ Addedhas-flag@3.0.0(transitive)
+ Addedjs-tokens@4.0.0(transitive)
+ Addedjsesc@2.5.2(transitive)
+ Addedjson5@2.2.3(transitive)
+ Addedlocate-path@3.0.0(transitive)
+ Addedlru-cache@5.1.1(transitive)
+ Addedmake-dir@2.1.0(transitive)
+ Addednode-releases@2.0.18(transitive)
+ Addedp-limit@2.3.0(transitive)
+ Addedp-locate@3.0.0(transitive)
+ Addedp-try@2.2.0(transitive)
+ Addedpath-exists@3.0.0(transitive)
+ Addedpicocolors@1.1.0(transitive)
+ Addedpify@4.0.1(transitive)
+ Addedpirates@4.0.6(transitive)
+ Addedpkg-dir@3.0.0(transitive)
+ Addedsemver@5.7.26.3.1(transitive)
+ Addedsource-map@0.6.1(transitive)
+ Addedsource-map-support@0.5.21(transitive)
+ Addedsupports-color@5.5.0(transitive)
+ Addedto-fast-properties@2.0.0(transitive)
+ Addedupdate-browserslist-db@1.1.0(transitive)
+ Addedwinston-array-transport@1.0.2(transitive)
+ Addedyallist@3.1.1(transitive)
- Removedwinston-array-transport@1.0.1(transitive)