Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Filter",
"program": "${workspaceFolder}/bin/swagger-json-filter-vsCode-Test",
"args": [
"filter",
"--include-paths",
"\"^(\/api\/members\/{memberGuid}\/cmrs\/.*|\/api\/members\/{memberGuid}\/careplans\/({carePlanId}\/problems|{goalID}\/intervention|{problemID}\/goalscareplans).*|\/api\/members\/{memberGuid}\/(medications|allergies|profile\/address|profile\/phone|profile\/email)|\/api\/members\/{memberGuid}\/careproviders.*)$\""
]
},
{
"type": "node",
"request": "launch",
"name": "Launch Remove Definition",
"program": "${workspaceFolder}/bin/swagger-json-filter-vsCode-Test",
"args": [
"remove-definition",
"--definition-name",
"System.ValueTuple`2[[System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]"
]
},
{
"type": "node",
"request": "launch",
"name": "Launch Remove Model Property",
"program": "${workspaceFolder}/bin/swagger-json-filter-vsCode-Test",
"args": [
"remove-definition-property",
"--definition-name",
"AssureCare.MedCompass.Web.Models.Members.Cmr.CmrCommunicationsModel",
"--property-name",
"RenderedMemberDocuments"
]
},
{
"type": "node",
"request": "launch",
"name": "Launch Help",
"program": "${workspaceFolder}/bin/swagger-json-filter-vsCode-Test",
"args": [
"--help"
]
}
]
}
4 changes: 2 additions & 2 deletions bin/swagger-json-filter
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/usr/bin/env node
const swaggerJsonFilter = require('../src/index');
const swaggerUtil = require('../src/index');

const stdin = process.openStdin();
let inputJson = '';
Expand All @@ -8,7 +8,7 @@ stdin.on('data', function (chunk) {
});

stdin.on('end', function () {
const output = swaggerJsonFilter(inputJson, getProgram());
const output = swaggerUtil.filterSwagger(inputJson, getProgram());
console.log(output);
});

Expand Down
20 changes: 20 additions & 0 deletions bin/swagger-json-remove-definition
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#!/usr/bin/env node
const swaggerUtil = require('../src/index');

const stdin = process.openStdin();
let inputJson = '';
stdin.on('data', function (chunk) {
inputJson += chunk;
});

stdin.on('end', function () {
const output = swaggerUtil.removeDefinition(inputJson, getProgram());
console.log(output);
});

function getProgram() {
let program = require('commander');
program.option('-d, --definition-name <definition-name>', 'Name of definition to remove.')
.parse(process.argv);
return program;
}
20 changes: 20 additions & 0 deletions bin/swagger-json-remove-path
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#!/usr/bin/env node
const swaggerUtil = require('../src/index');

const stdin = process.openStdin();
let inputJson = '';
stdin.on('data', function (chunk) {
inputJson += chunk;
});

stdin.on('end', function () {
const output = swaggerUtil.removePath(inputJson, getProgram());
console.log(output);
});

function getProgram() {
let program = require('commander');
program.option('-p, --path-name <path-name>', 'Name of path to remove.')
.parse(process.argv);
return program;
}
22 changes: 22 additions & 0 deletions bin/swagger-json-remove-property
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#!/usr/bin/env node
const swaggerUtil = require('../src/index');

const stdin = process.openStdin();
let inputJson = '';
stdin.on('data', function (chunk) {
inputJson += chunk;
});

stdin.on('end', function () {
const output = swaggerUtil.removeDefinitionProperty(inputJson, getProgram());
console.log(output);
});

function getProgram() {
let program = require('commander');
program
.option('-d, --definition-name <definition-name>', 'Name of definition to remove.')
.option('-p, --property-name <property-name>', 'Name of property to remove.')
.parse(process.argv);
return program;
}
82 changes: 82 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 6 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,12 @@
"version": "0.0.1",
"description": "Node.js command-line tool for filtering swagger documentation (swagger.json)",
"main": "src/index.js",
"bin": "bin/swagger-json-filter",
"bin": {
"swagger-json-filter": "bin/swagger-json-filter",
"swagger-json-remove-definition": "bin/swagger-json-remove-definition",
"swagger-json-remove-path": "bin/swagger-json-remove-path",
"swagger-json-remove-property": "bin/swagger-json-remove-property"
},
"directories": {
"test": "test"
},
Expand Down
63 changes: 61 additions & 2 deletions src/index.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
const flatten = require('flat');

module.exports = function (inputJson, options) {
var filterSwagger = function (inputJsonStr, options) {
const pathRegex = new RegExp(options.includePaths);
const definitionRegex = new RegExp(options.includeDefinitions);
inputJson = JSON.parse(inputJson);
inputJson = JSON.parse(inputJsonStr);

let definitionsMap = {};
for (const defLocalizationName in inputJson) {
Expand All @@ -25,6 +25,59 @@ module.exports = function (inputJson, options) {
return filterJson(inputJson, whiteList);
};

var removePath = function(inputJsonStr, options)
{
var inputJson = JSON.parse(inputJsonStr);
const pathRegex = new RegExp(options.pathName);

var pathNames = Object.keys(inputJson.paths);

for (var i = 0; i < pathNames.length; i++)
{
var pathName= pathNames[i];
if(pathRegex.test(pathName))
{
delete inputJson.paths[pathName];
}
}

return JSON.stringify(inputJson);
}

var removeDefinition = function(inputJsonStr, options)
{
var inputJson = JSON.parse(inputJsonStr);
var definitionRegex = new RegExp(options.definitionName);
var definitionNames = Object.keys(inputJson.definitions);

for (var i = 0; i < definitionNames.length; i++)
{
var definitionName = definitionNames[i];
if(definitionRegex.test(definitionName))
{
delete inputJson.definitions[definitionName];
}
}

return JSON.stringify(inputJson);
}

var removeDefinitionProperty = function(inputJsonStr, options)
{
var inputJson = JSON.parse(inputJsonStr);
var definitionName = options.definitionName;
var propertyName = options.propertyName;

if(definitionName in inputJson.definitions)
{
if(propertyName in inputJson.definitions[definitionName].properties)
{
delete inputJson.definitions[definitionName].properties[propertyName];
}
}
return JSON.stringify(inputJson);
}

function removeUnwantedKeys(objectToFilter, keyRegex) {
for (const key in objectToFilter) {
if (!keyRegex.test(key)) {
Expand Down Expand Up @@ -97,3 +150,9 @@ function filterJson(inputJson, definitionsMap) {
return JSON.stringify(inputJson);
}

module.exports = {
filterSwagger,
removeDefinition,
removeDefinitionProperty,
removePath
}