Socket
Socket
Sign inDemoInstall

a127-magic

Package Overview
Dependencies
0
Maintainers
1
Versions
41
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.0.2 to 0.1.0

.idea/uiDesigner.xml

80

lib/config.js
'use strict';
// todo: potentially pull stuff from vault as well...
var path = require('path');
var swaggerFile = path.resolve(path.dirname(require.main.filename), 'api/swagger/swagger.yaml');
var fs = require('fs');
var yaml = require('yamljs');
var debug = require('debug')('a127');
var _ = require('underscore');
module.exports = {
swaggerFile: swaggerFile,
env: getEnvironment,
load: getConfig,
reload: useConfig
};
var ENV_FILENAME = '.a127_env';
var APP_ROOT = path.dirname(require.main.filename);
var CONFIG_DIR = path.resolve(APP_ROOT, 'config');
var BASE_DEFAULTS = {
swaggerFile: path.resolve(APP_ROOT, 'api/swagger/swagger.yaml'),
controllers: {
useStubs: true,
useStubs: false,
controllers: './api/controllers'

@@ -14,1 +29,60 @@ },

};
var configDir, config, env;
function useConfig(a127Env) {
env = config = undefined;
configDir = process.env.A127_CONFIG || CONFIG_DIR;
if (!fs.existsSync(configDir)) {
throw new Error('config directory doesn\'t exist: ' + configDir);
}
env = a127Env ? a127Env : getEnvironment();
var defaultConfig = readYamlFromConfigFile('default.yaml');
var currentConfig = env ? readYamlFromConfigFile(env + '.yaml') : {};
if (debug.enabled) { debug('No config for env: ' + env + '. Using default.'); }
config = _.extend(BASE_DEFAULTS, defaultConfig, currentConfig);
return config;
}
function getEnvironment() {
if (env) { return env; }
env = process.env.A127_ENV || process.env.NODE_ENV;
if (!env) { // load from file
var envFile = path.resolve(configDir, ENV_FILENAME);
env = readFileNoError(envFile);
}
if (debug.enabled) { debug('set environment: ' + env); }
return env;
}
function readYamlFromConfigFile(fileName) {
try {
var file = path.resolve(configDir, fileName);
var obj = yaml.load(file);
if (debug.enabled) { debug('read config file: ' + file); }
return obj;
}
catch(err) {
if (debug.enabled) { debug('failed attempt to read config: ' + file); }
return {};
}
}
function readFileNoError(file) {
try {
return fs.readFileSync(file, 'utf8');
} catch (ex) {
return null;
}
}
function getConfig(a127Env) {
if (!config || (a127Env && env !== a127Env)) { useConfig(a127Env); }
return config;
}
'use strict';
var fs = require('fs');
var yaml = require('js-yaml');
var yaml = require('yamljs');
var a127Config = require('./config');
var _ = require('underscore');
var stream = require('stream');

@@ -10,5 +13,81 @@ module.exports = {

function load(file) {
var swaggerObject = yaml.safeLoad(fs.readFileSync(file, 'utf8'));
return swaggerObject;
function load(file, config) {
if (!config) { config = a127Config.load();}
if (!file) { file = config.swaggerFile; }
var sourceString = fs.readFileSync(file, 'utf8');
var replacementString = doConfigReplacements(sourceString, config);
return yaml.parse(replacementString);
}
function doConfigReplacements(source, config) {
var sourceLines = source.split('\n');
var returnLines = [];
var inConfig, anchorIndent, finished;
sourceLines.forEach(function(line) {
if (finished) {
returnLines.push(line);
} else {
if (inConfig && line[0] !== ' ') { // back to 0 indent after x-a127-config == we're done
finished = true;
returnLines.push(line);
} else {
var tokens = line.trim().split(' ');
var firstToken = tokens[0];
if (inConfig) { // this is potential config stuff, let's do it
var indent = line.indexOf(tokens[0]);
if (anchorIndent) { // we're inside a tag
if (indent <= anchorIndent) { anchorIndent = null; }
}
if (!anchorIndent) { // start a tag?
var anchor = getAnchor(tokens);
if (anchor) {
var configKey = anchor.slice(1);
var configValue = config[configKey];
if (configValue) { // we need to do a replacement
anchorIndent = indent;
var upTo = line.lastIndexOf(anchor) + anchor.length;
var partialLine = line.slice(0, upTo); // cut off anything after the reference
var configYaml = yaml.stringify(configValue);
if (typeof(configValue) === 'string') { // string goes inline
partialLine += ' ' + configYaml;
returnLines.push(partialLine);
} else {
returnLines.push(partialLine); // anything else on following lines
var yamlLines = configYaml.split('\n');
var spaces = Array(indent + 3).join(' ');
for (var i = 0; i < yamlLines.length - 1; i++) { // length - 1 because last line is empty (was \n)
returnLines.push(spaces + yamlLines[i]);
}
}
} else {
returnLines.push(line);
}
} else {
returnLines.push(line);
}
}
} else if (firstToken.indexOf('x-a127-config') === 0) {
inConfig = true;
returnLines.push(line);
} else {
returnLines.push(line);
}
}
}
});
var replacementString = returnLines.join('\n');
return replacementString;
}
function getAnchor(tokens) {
for (var i = tokens.length - 1; i > 0; i--) {
if (tokens[i][0] === '&') { return tokens[i]; }
}
return undefined;
}
function isAnchor(token) {
return token[token.length - 1] === '&';
}

5

lib/middleware.js
'use strict';
var config = require('./config');
var a127Config = require('./config');
var swaggerTools = require('swagger-tools').middleware.v2_0;

@@ -11,3 +11,4 @@ var volosSwagger = require('volos-swagger');

var swaggerObject = config.loader.load(config.swaggerFile);
var config = a127Config.load();
var swaggerObject = config.loader.load();

@@ -14,0 +15,0 @@ return chain([

{
"name": "a127-magic",
"version": "0.0.2",
"version": "0.1.0",
"description": "Apigee 127 Swagger Loader and Middleware",

@@ -18,3 +18,4 @@ "keywords": [

"underscore": "",
"js-yaml": ""
"yamljs": "",
"debug": ""
},

@@ -21,0 +22,0 @@ "devDependencies": {

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

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

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc