@foal/core
Advanced tools
Comparing version 1.6.0 to 1.7.0
@@ -26,3 +26,4 @@ "use strict"; | ||
core_1.Hook(validate)(target, propertyKey); | ||
if (options.openapi === false || (options.openapi === undefined && !core_1.Config.get('settings.openapi.useHooks'))) { | ||
if (options.openapi === false || | ||
(options.openapi === undefined && !core_1.Config.get2('settings.openapi.useHooks', 'boolean'))) { | ||
return; | ||
@@ -29,0 +30,0 @@ } |
@@ -37,3 +37,4 @@ "use strict"; | ||
core_1.Hook(validate)(target, propertyKey); | ||
if (options.openapi === false || (options.openapi === undefined && !core_1.Config.get('settings.openapi.useHooks'))) { | ||
if (options.openapi === false || | ||
(options.openapi === undefined && !core_1.Config.get2('settings.openapi.useHooks', 'boolean'))) { | ||
return; | ||
@@ -40,0 +41,0 @@ } |
@@ -29,3 +29,4 @@ "use strict"; | ||
core_1.Hook(validate)(target, propertyKey); | ||
if (options.openapi === false || (options.openapi === undefined && !core_1.Config.get('settings.openapi.useHooks'))) { | ||
if (options.openapi === false || | ||
(options.openapi === undefined && !core_1.Config.get2('settings.openapi.useHooks', 'boolean'))) { | ||
return; | ||
@@ -32,0 +33,0 @@ } |
@@ -38,3 +38,4 @@ "use strict"; | ||
core_1.Hook(validate)(target, propertyKey); | ||
if (options.openapi === false || (options.openapi === undefined && !core_1.Config.get('settings.openapi.useHooks'))) { | ||
if (options.openapi === false || | ||
(options.openapi === undefined && !core_1.Config.get2('settings.openapi.useHooks', 'boolean'))) { | ||
return; | ||
@@ -41,0 +42,0 @@ } |
@@ -29,3 +29,4 @@ "use strict"; | ||
core_1.Hook(validate)(target, propertyKey); | ||
if (options.openapi === false || (options.openapi === undefined && !core_1.Config.get('settings.openapi.useHooks'))) { | ||
if (options.openapi === false || | ||
(options.openapi === undefined && !core_1.Config.get2('settings.openapi.useHooks', 'boolean'))) { | ||
return; | ||
@@ -32,0 +33,0 @@ } |
@@ -28,3 +28,4 @@ "use strict"; | ||
core_1.Hook(validate)(target, propertyKey); | ||
if (options.openapi === false || (options.openapi === undefined && !core_1.Config.get('settings.openapi.useHooks'))) { | ||
if (options.openapi === false || | ||
(options.openapi === undefined && !core_1.Config.get2('settings.openapi.useHooks', 'boolean'))) { | ||
return; | ||
@@ -31,0 +32,0 @@ } |
@@ -35,3 +35,4 @@ "use strict"; | ||
core_1.Hook(validate)(target, propertyKey); | ||
if (options.openapi === false || (options.openapi === undefined && !core_1.Config.get('settings.openapi.useHooks'))) { | ||
if (options.openapi === false || | ||
(options.openapi === undefined && !core_1.Config.get2('settings.openapi.useHooks', 'boolean'))) { | ||
return; | ||
@@ -38,0 +39,0 @@ } |
@@ -37,3 +37,4 @@ "use strict"; | ||
core_1.Hook(validate)(target, propertyKey); | ||
if (options.openapi === false || (options.openapi === undefined && !core_1.Config.get('settings.openapi.useHooks'))) { | ||
if (options.openapi === false || | ||
(options.openapi === undefined && !core_1.Config.get2('settings.openapi.useHooks', 'boolean'))) { | ||
return; | ||
@@ -40,0 +41,0 @@ } |
@@ -28,3 +28,4 @@ "use strict"; | ||
core_1.Hook(validate)(target, propertyKey); | ||
if (options.openapi === false || (options.openapi === undefined && !core_1.Config.get('settings.openapi.useHooks'))) { | ||
if (options.openapi === false || | ||
(options.openapi === undefined && !core_1.Config.get2('settings.openapi.useHooks', 'boolean'))) { | ||
return; | ||
@@ -31,0 +32,0 @@ } |
/** | ||
* Generate a 128-bit base64url-encoded token. | ||
* Generate a 256-bit base64url-encoded token. | ||
* | ||
@@ -4,0 +4,0 @@ * @export |
@@ -9,3 +9,3 @@ "use strict"; | ||
/** | ||
* Generate a 128-bit base64url-encoded token. | ||
* Generate a 256-bit base64url-encoded token. | ||
* | ||
@@ -12,0 +12,0 @@ * @export |
@@ -6,3 +6,3 @@ import * as Ajv from 'ajv'; | ||
/** | ||
* Return the Ajv instance used internally by FoalTS. | ||
* Return the Ajv instance used internally by FoalTS validation hooks. | ||
* | ||
@@ -14,5 +14,2 @@ * It has this default configuration: | ||
* | ||
* This configuration can be overrided using the file `config/default.json` or through environment | ||
* variables: SETTINGS_AJV_COERCE_TYPES, SETTINGS_AJV_REMOVE_ADDITIONAL, SETTINGS_AJV_USE_DEFAULTS, | ||
* SETTINGS_AJV_NULLABLE. | ||
* | ||
@@ -19,0 +16,0 @@ * @export |
@@ -12,3 +12,3 @@ "use strict"; | ||
/** | ||
* Return the Ajv instance used internally by FoalTS. | ||
* Return the Ajv instance used internally by FoalTS validation hooks. | ||
* | ||
@@ -20,5 +20,2 @@ * It has this default configuration: | ||
* | ||
* This configuration can be overrided using the file `config/default.json` or through environment | ||
* variables: SETTINGS_AJV_COERCE_TYPES, SETTINGS_AJV_REMOVE_ADDITIONAL, SETTINGS_AJV_USE_DEFAULTS, | ||
* SETTINGS_AJV_NULLABLE. | ||
* | ||
@@ -31,6 +28,7 @@ * @export | ||
exports._instanceWrapper.instance = new Ajv({ | ||
coerceTypes: core_1.Config.get('settings.ajv.coerceTypes', true), | ||
nullable: core_1.Config.get('settings.ajv.nullable'), | ||
removeAdditional: core_1.Config.get('settings.ajv.removeAdditional', true), | ||
useDefaults: core_1.Config.get('settings.ajv.useDefaults', true), | ||
allErrors: core_1.Config.get2('settings.ajv.allErrors', 'boolean'), | ||
coerceTypes: core_1.Config.get2('settings.ajv.coerceTypes', 'boolean', true), | ||
nullable: core_1.Config.get2('settings.ajv.nullable', 'boolean'), | ||
removeAdditional: core_1.Config.get2('settings.ajv.removeAdditional', 'boolean|string', true), | ||
useDefaults: core_1.Config.get2('settings.ajv.useDefaults', 'boolean|string', true), | ||
}); | ||
@@ -37,0 +35,0 @@ } |
@@ -25,3 +25,3 @@ "use strict"; | ||
const template = await util_1.promisify(fs_1.readFile)(path_1.join(__dirname, '500.debug.html'), 'utf8'); | ||
if (!core_1.Config.get('settings.debug')) { | ||
if (!core_1.Config.get2('settings.debug', 'boolean')) { | ||
return new core_1.HttpResponseInternalServerError(page500); | ||
@@ -28,0 +28,0 @@ } |
@@ -20,3 +20,2 @@ "use strict"; | ||
function renderToString(template, locals) { | ||
// tslint:disable-next-line:forin | ||
for (const key in locals) { | ||
@@ -44,3 +43,3 @@ template = template.replace(new RegExp(`{{ ${key} }}`, 'g'), locals[key]); | ||
const template = await util_1.promisify(fs_1.readFile)(path, 'utf8'); | ||
const templateEngine = core_1.Config.get('settings.templateEngine'); | ||
const templateEngine = core_1.Config.get2('settings.templateEngine', 'string'); | ||
if (templateEngine) { | ||
@@ -47,0 +46,0 @@ const { renderToString, __express } = require(templateEngine); |
@@ -112,3 +112,2 @@ "use strict"; | ||
const cookies = {}; | ||
// tslint:disable-next-line:forin | ||
for (const cookieName in this.cookies) { | ||
@@ -115,0 +114,0 @@ const { value, options } = this.cookies[cookieName]; |
@@ -6,4 +6,3 @@ export * from './class.interface'; | ||
export * from './routes'; | ||
export { ConfigMock } from './config-mock'; | ||
export { Config } from './config'; | ||
export * from './config'; | ||
export { createService, dependency, ServiceManager } from './service-manager'; |
@@ -11,6 +11,3 @@ "use strict"; | ||
__export(require("./routes")); | ||
var config_mock_1 = require("./config-mock"); | ||
exports.ConfigMock = config_mock_1.ConfigMock; | ||
var config_1 = require("./config"); | ||
exports.Config = config_1.Config; | ||
__export(require("./config")); | ||
var service_manager_1 = require("./service-manager"); | ||
@@ -17,0 +14,0 @@ exports.createService = service_manager_1.createService; |
@@ -68,3 +68,3 @@ "use strict"; | ||
// Log requests. | ||
const loggerFormat = core_1.Config.get('settings.loggerFormat', '[:date] ":method :url HTTP/:http-version" :status - :response-time ms'); | ||
const loggerFormat = core_1.Config.get2('settings.loggerFormat', 'string', '[:date] ":method :url HTTP/:http-version" :status - :response-time ms'); | ||
if (loggerFormat !== 'none') { | ||
@@ -75,5 +75,5 @@ app.use(logger(loggerFormat)); | ||
// Serve static files. | ||
app.use(core_1.Config.get('settings.staticPathPrefix', ''), express.static(core_1.Config.get('settings.staticPath', 'public'))); | ||
app.use(core_1.Config.get2('settings.staticPathPrefix', 'string', ''), express.static(core_1.Config.get2('settings.staticPath', 'string', 'public'))); | ||
// Parse request body. | ||
const limit = core_1.Config.get('settings.bodyParser.limit'); | ||
const limit = core_1.Config.get2('settings.bodyParser.limit', 'number|string'); | ||
app.use(express.json({ limit })); | ||
@@ -80,0 +80,0 @@ app.use(handleJsonErrors); |
@@ -22,3 +22,5 @@ "use strict"; | ||
} | ||
logFn(err.stack); | ||
if (core_1.Config.get2('settings.logErrors', 'boolean', true)) { | ||
logFn(err.stack); | ||
} | ||
const ctx = req.foal ? req.foal.ctx : new core_1.Context(req); | ||
@@ -25,0 +27,0 @@ let response; |
@@ -18,3 +18,2 @@ "use strict"; | ||
const cookies = response.getCookies(); | ||
// tslint:disable-next-line:forin | ||
for (const cookieName in cookies) { | ||
@@ -21,0 +20,0 @@ const options = cookies[cookieName].options; |
@@ -12,3 +12,2 @@ "use strict"; | ||
const convertedPaths = []; | ||
// tslint:disable-next-line:forin | ||
for (const path in paths) { | ||
@@ -42,3 +41,2 @@ const convertedPath = path.replace(/{.*}/g, () => '#'); | ||
const subControllerPath = utils_1.getPath(subControllerClass) || ''; | ||
// tslint:disable-next-line:forin | ||
for (const subPath in subPaths) { | ||
@@ -45,0 +43,0 @@ const subPathItem = subPaths[subPath]; |
@@ -52,3 +52,2 @@ "use strict"; | ||
completeOperation.responses = {}; | ||
// tslint:disable-next-line:forin | ||
for (const key in responses) { | ||
@@ -62,3 +61,2 @@ const response = responses[key]; | ||
completeOperation.callbacks = {}; | ||
// tslint:disable-next-line:forin | ||
for (const key in callbacks) { | ||
@@ -65,0 +63,0 @@ const callback = callbacks[key]; |
@@ -9,3 +9,2 @@ "use strict"; | ||
components.callbacks = {}; | ||
// tslint:disable-next-line:forin | ||
for (const key in callbacks) { | ||
@@ -19,3 +18,2 @@ const callback = callbacks[key]; | ||
components.examples = {}; | ||
// tslint:disable-next-line:forin | ||
for (const key in examples) { | ||
@@ -29,3 +27,2 @@ const example = examples[key]; | ||
components.headers = {}; | ||
// tslint:disable-next-line:forin | ||
for (const key in headers) { | ||
@@ -39,3 +36,2 @@ const header = headers[key]; | ||
components.links = {}; | ||
// tslint:disable-next-line:forin | ||
for (const key in links) { | ||
@@ -49,3 +45,2 @@ const link = links[key]; | ||
components.parameters = {}; | ||
// tslint:disable-next-line:forin | ||
for (const key in parameters) { | ||
@@ -59,3 +54,2 @@ const parameter = parameters[key]; | ||
components.requestBodies = {}; | ||
// tslint:disable-next-line:forin | ||
for (const key in requestBodies) { | ||
@@ -69,3 +63,2 @@ const requestBody = requestBodies[key]; | ||
components.responses = {}; | ||
// tslint:disable-next-line:forin | ||
for (const key in responses) { | ||
@@ -79,3 +72,2 @@ const response = responses[key]; | ||
components.schemas = {}; | ||
// tslint:disable-next-line:forin | ||
for (const key in schemas) { | ||
@@ -89,3 +81,2 @@ const schema = schemas[key]; | ||
components.securitySchemes = {}; | ||
// tslint:disable-next-line:forin | ||
for (const key in securitySchemes) { | ||
@@ -92,0 +83,0 @@ const scheme = securitySchemes[key]; |
@@ -13,10 +13,10 @@ "use strict"; | ||
function removeSessionCookie(response) { | ||
const cookieName = core_1.Config.get('settings.session.cookie.name', constants_1.SESSION_DEFAULT_COOKIE_NAME); | ||
const cookieName = core_1.Config.get2('settings.session.cookie.name', 'string', constants_1.SESSION_DEFAULT_COOKIE_NAME); | ||
const options = { | ||
domain: core_1.Config.get('settings.session.cookie.domain'), | ||
httpOnly: core_1.Config.get('settings.session.cookie.httpOnly', constants_1.SESSION_DEFAULT_COOKIE_HTTP_ONLY), | ||
domain: core_1.Config.get2('settings.session.cookie.domain', 'string'), | ||
httpOnly: core_1.Config.get2('settings.session.cookie.httpOnly', 'boolean', constants_1.SESSION_DEFAULT_COOKIE_HTTP_ONLY), | ||
maxAge: 0, | ||
path: core_1.Config.get('settings.session.cookie.path', constants_1.SESSION_DEFAULT_COOKIE_PATH), | ||
sameSite: core_1.Config.get('settings.session.cookie.sameSite'), | ||
secure: core_1.Config.get('settings.session.cookie.secure') | ||
path: core_1.Config.get2('settings.session.cookie.path', 'string', constants_1.SESSION_DEFAULT_COOKIE_PATH), | ||
sameSite: core_1.Config.get2('settings.session.cookie.sameSite', 'string'), | ||
secure: core_1.Config.get2('settings.session.cookie.secure', 'boolean') | ||
}; | ||
@@ -23,0 +23,0 @@ response.setCookie(cookieName, '', options); |
@@ -40,4 +40,4 @@ "use strict"; | ||
const result = { | ||
absolute: core_1.Config.get('settings.session.expirationTimeouts.absolute', constants_1.SESSION_DEFAULT_ABSOLUTE_TIMEOUT), | ||
inactivity: core_1.Config.get('settings.session.expirationTimeouts.inactivity', constants_1.SESSION_DEFAULT_INACTIVITY_TIMEOUT), | ||
absolute: core_1.Config.get2('settings.session.expirationTimeouts.absolute', 'number', constants_1.SESSION_DEFAULT_ABSOLUTE_TIMEOUT), | ||
inactivity: core_1.Config.get2('settings.session.expirationTimeouts.inactivity', 'number', constants_1.SESSION_DEFAULT_INACTIVITY_TIMEOUT), | ||
}; | ||
@@ -44,0 +44,0 @@ if (result.absolute < 0) { |
@@ -31,6 +31,3 @@ "use strict"; | ||
static verifyTokenAndGetId(token) { | ||
const secret = core_1.Config.get('settings.session.secret'); | ||
if (!secret) { | ||
throw new Error('[CONFIG] You must provide a secret with the configuration key settings.session.secret.'); | ||
} | ||
const secret = core_1.Config.getOrThrow('settings.session.secret', 'string', 'You must provide a secret when using sessions.'); | ||
return common_1.verifySignedToken(token, secret); | ||
@@ -74,6 +71,3 @@ } | ||
getToken() { | ||
const secret = core_1.Config.get('settings.session.secret'); | ||
if (!secret) { | ||
throw new Error('[CONFIG] You must provide a secret with the configuration key settings.session.secret.'); | ||
} | ||
const secret = core_1.Config.getOrThrow('settings.session.secret', 'string', 'You must provide a secret when using sessions.'); | ||
return common_1.signToken(this.sessionID, secret); | ||
@@ -80,0 +74,0 @@ } |
@@ -15,10 +15,10 @@ "use strict"; | ||
function setSessionCookie(response, token) { | ||
const cookieName = core_1.Config.get('settings.session.cookie.name', constants_1.SESSION_DEFAULT_COOKIE_NAME); | ||
const cookieName = core_1.Config.get2('settings.session.cookie.name', 'string', constants_1.SESSION_DEFAULT_COOKIE_NAME); | ||
const options = { | ||
domain: core_1.Config.get('settings.session.cookie.domain'), | ||
httpOnly: core_1.Config.get('settings.session.cookie.httpOnly', constants_1.SESSION_DEFAULT_COOKIE_HTTP_ONLY), | ||
domain: core_1.Config.get2('settings.session.cookie.domain', 'string'), | ||
httpOnly: core_1.Config.get2('settings.session.cookie.httpOnly', 'boolean', constants_1.SESSION_DEFAULT_COOKIE_HTTP_ONLY), | ||
maxAge: session_store_1.SessionStore.getExpirationTimeouts().inactivity, | ||
path: core_1.Config.get('settings.session.cookie.path', constants_1.SESSION_DEFAULT_COOKIE_PATH), | ||
sameSite: core_1.Config.get('settings.session.cookie.sameSite'), | ||
secure: core_1.Config.get('settings.session.cookie.secure') | ||
path: core_1.Config.get2('settings.session.cookie.path', 'string', constants_1.SESSION_DEFAULT_COOKIE_PATH), | ||
sameSite: core_1.Config.get2('settings.session.cookie.sameSite', 'string'), | ||
secure: core_1.Config.get2('settings.session.cookie.secure', 'boolean') | ||
}; | ||
@@ -25,0 +25,0 @@ response.setCookie(cookieName, token, options); |
@@ -12,3 +12,4 @@ "use strict"; | ||
token_hook_1.Token(false, options)(target, propertyKey); | ||
if (options.openapi === false || (options.openapi === undefined && !core_1.Config.get('settings.openapi.useHooks'))) { | ||
if (options.openapi === false || | ||
(options.openapi === undefined && !core_1.Config.get2('settings.openapi.useHooks', 'boolean'))) { | ||
return; | ||
@@ -19,3 +20,3 @@ } | ||
in: 'cookie', | ||
name: core_1.Config.get('settings.session.cookie.name', constants_1.SESSION_DEFAULT_COOKIE_NAME), | ||
name: core_1.Config.get2('settings.session.cookie.name', 'string', constants_1.SESSION_DEFAULT_COOKIE_NAME), | ||
type: 'apiKey', | ||
@@ -22,0 +23,0 @@ }; |
@@ -12,3 +12,4 @@ "use strict"; | ||
token_hook_1.Token(true, options)(target, propertyKey); | ||
if (options.openapi === false || (options.openapi === undefined && !core_1.Config.get('settings.openapi.useHooks'))) { | ||
if (options.openapi === false || | ||
(options.openapi === undefined && !core_1.Config.get2('settings.openapi.useHooks', 'boolean'))) { | ||
return; | ||
@@ -19,3 +20,3 @@ } | ||
in: 'cookie', | ||
name: core_1.Config.get('settings.session.cookie.name', constants_1.SESSION_DEFAULT_COOKIE_NAME), | ||
name: core_1.Config.get2('settings.session.cookie.name', 'string', constants_1.SESSION_DEFAULT_COOKIE_NAME), | ||
type: 'apiKey', | ||
@@ -22,0 +23,0 @@ }; |
@@ -22,3 +22,3 @@ "use strict"; | ||
return core_1.Hook(async (ctx, services) => { | ||
const cookieName = core_1.Config.get('settings.session.cookie.name', constants_1.SESSION_DEFAULT_COOKIE_NAME); | ||
const cookieName = core_1.Config.get2('settings.session.cookie.name', 'string', constants_1.SESSION_DEFAULT_COOKIE_NAME); | ||
/* Validate the request */ | ||
@@ -25,0 +25,0 @@ let token; |
{ | ||
"name": "@foal/core", | ||
"version": "1.6.0", | ||
"version": "1.7.0", | ||
"description": "A Node.js and TypeScript framework, all-inclusive.", | ||
@@ -80,7 +80,7 @@ "main": "./lib/index.js", | ||
"@types/express": "~4.17.2", | ||
"ajv": "~6.11.0", | ||
"ajv": "~6.12.0", | ||
"cookie-parser": "~1.4.4", | ||
"express": "~4.17.1", | ||
"mime": "~2.4.4", | ||
"morgan": "~1.9.1", | ||
"morgan": "~1.10.0", | ||
"pump": "~3.0.0", | ||
@@ -90,3 +90,3 @@ "reflect-metadata": "~0.1.13" | ||
"devDependencies": { | ||
"@foal/ejs": "^1.6.0", | ||
"@foal/ejs": "^1.7.0", | ||
"@types/mocha": "~2.2.43", | ||
@@ -112,3 +112,3 @@ "@types/node": "~10.1.2", | ||
}, | ||
"gitHead": "5691b5d649e6104b3f46da7394fee6aa850918f6" | ||
"gitHead": "e61e82add0919f07f0224509e1613eda9cd4b404" | ||
} |
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
342926
200
8653
11
+ Addedajv@6.12.6(transitive)
+ Addeddepd@2.0.0(transitive)
+ Addedmorgan@1.10.0(transitive)
- Removedajv@6.11.0(transitive)
- Removedmorgan@1.9.1(transitive)
Updatedajv@~6.12.0
Updatedmorgan@~1.10.0