From a7883fe6a7603810f6e5539aec54f72792954a3c Mon Sep 17 00:00:00 2001 From: yevhenii-moroziuk Date: Mon, 27 Jan 2025 18:23:46 +0200 Subject: [PATCH 1/5] HCK-9667: fix application crash & small refactoring --- forward_engineering/helpers/commonHelper.js | 4 +- .../componentsHelpers/examplesHelper.js | 2 +- .../helpers/componentsHelpers/index.js | 14 +- .../helpers/componentsHelpers/linksHelper.js | 2 +- .../componentsHelpers/parametersHelper.js | 6 +- .../componentsHelpers/requestBodiesHelper.js | 2 +- .../componentsHelpers/responsesHelper.js | 14 +- .../securitySchemesHelper.js | 8 +- forward_engineering/helpers/infoHelper.js | 6 +- forward_engineering/helpers/pathHelper.js | 10 +- forward_engineering/helpers/serversHelper.js | 6 +- forward_engineering/helpers/typeHelper.js | 24 +- forward_engineering/utils/utils.js | 6 +- .../adaptJsonSchema/adaptJsonSchema.js | 5 +- .../helpers/adaptJsonSchema/mapJsonSchema.js | 13 +- reverse_engineering/helpers/commonHelper.js | 16 +- reverse_engineering/helpers/dataHelper.js | 210 +++++++++--------- 17 files changed, 178 insertions(+), 170 deletions(-) diff --git a/forward_engineering/helpers/commonHelper.js b/forward_engineering/helpers/commonHelper.js index 2238667..dbabea1 100644 --- a/forward_engineering/helpers/commonHelper.js +++ b/forward_engineering/helpers/commonHelper.js @@ -19,7 +19,7 @@ function mapExternalDocs({ externalDocsUrl, externalDocsDescription, scopesExten }; const externalDocsExtensions = getExtensions(scopesExtensions); - return Object.assign({}, externalDocs, externalDocsExtensions); + return { ...externalDocs, ...externalDocsExtensions }; } function mapExternalTagDocs({ tagExternalDocsUrl, tagExternalDocsDescription } = {}) { @@ -44,7 +44,7 @@ function mapTags(tags = []) { }; const tagExtensions = getExtensions(tag.scopesExtensions); - return Object.assign({}, tagObj, tagExtensions); + return { ...tagObj, ...tagExtensions }; }); } diff --git a/forward_engineering/helpers/componentsHelpers/examplesHelper.js b/forward_engineering/helpers/componentsHelpers/examplesHelper.js index 3842fa4..503a6e3 100644 --- a/forward_engineering/helpers/componentsHelpers/examplesHelper.js +++ b/forward_engineering/helpers/componentsHelpers/examplesHelper.js @@ -42,7 +42,7 @@ function mapExample(data) { }; const extensions = getExtensions(scopesExtensions); - return Object.assign({}, example, extensions); + return { ...example, ...extensions }; } module.exports = { diff --git a/forward_engineering/helpers/componentsHelpers/index.js b/forward_engineering/helpers/componentsHelpers/index.js index b4b1846..2807257 100644 --- a/forward_engineering/helpers/componentsHelpers/index.js +++ b/forward_engineering/helpers/componentsHelpers/index.js @@ -16,9 +16,10 @@ const renameComponents = components => { } return Object.keys(components).reduce((result, componentName) => { - return Object.assign({}, result, { + return { + ...result, [prepareName(componentName)]: components[componentName], - }); + }; }, {}); }; @@ -37,9 +38,8 @@ function getComponents(definitions, containers) { const extensions = getExtensions(get(componentsData, `['Specification Extensions'].scopesExtensions`)); - return Object.assign( - {}, - { + return { + ...{ schemas, responses, parameters, @@ -50,8 +50,8 @@ function getComponents(definitions, containers) { links, callbacks, }, - extensions, - ); + ...extensions, + }; } module.exports = getComponents; diff --git a/forward_engineering/helpers/componentsHelpers/linksHelper.js b/forward_engineering/helpers/componentsHelpers/linksHelper.js index b573637..2848991 100644 --- a/forward_engineering/helpers/componentsHelpers/linksHelper.js +++ b/forward_engineering/helpers/componentsHelpers/linksHelper.js @@ -48,7 +48,7 @@ function mapLink(data) { }; const extensions = getExtensions(scopesExtensions); - return Object.assign({}, linkData, extensions); + return { ...linkData, ...extensions }; } function mapParameters(data) { diff --git a/forward_engineering/helpers/componentsHelpers/parametersHelper.js b/forward_engineering/helpers/componentsHelpers/parametersHelper.js index cde40ab..03d1552 100644 --- a/forward_engineering/helpers/componentsHelpers/parametersHelper.js +++ b/forward_engineering/helpers/componentsHelpers/parametersHelper.js @@ -48,7 +48,7 @@ function mapParameter(data, required, isParentActivated = false) { }; const extensions = getExtensions(data.scopesExtensions); - return commentDeactivatedItemInner(Object.assign({}, parameter, extensions), data.isActivated, isParentActivated); + return commentDeactivatedItemInner({ ...parameter, ...extensions }, data.isActivated, isParentActivated); } function getIn(parameterType) { @@ -164,7 +164,7 @@ function mapMediaTypeObject(data, isParentActivated = false) { const mediaTypeObj = { schema, examples, encoding, example }; const extensions = getExtensions(data.scopesExtensions); - return Object.assign({}, mediaTypeObj, extensions); + return { ...mediaTypeObj, ...extensions }; } function mapEncoding(data) { @@ -183,7 +183,7 @@ function mapEncoding(data) { }; const extensions = getExtensions(value.scopesExtensions); - return { key, value: Object.assign({}, encodingObj, extensions) }; + return { key, value: { ...encodingObj, ...extensions } }; }) .reduce((acc, { key, value }) => { acc[key] = value; diff --git a/forward_engineering/helpers/componentsHelpers/requestBodiesHelper.js b/forward_engineering/helpers/componentsHelpers/requestBodiesHelper.js index 89a474f..d464dbb 100644 --- a/forward_engineering/helpers/componentsHelpers/requestBodiesHelper.js +++ b/forward_engineering/helpers/componentsHelpers/requestBodiesHelper.js @@ -43,7 +43,7 @@ function mapRequestBody(data, required, isParentActivated = false) { }; const extensions = getExtensions(data.scopesExtensions); - return commentDeactivatedItemInner(Object.assign({}, requestBody, extensions), data.isActivated, isParentActivated); + return commentDeactivatedItemInner({ ...requestBody, ...extensions }, data.isActivated, isParentActivated); } module.exports = { diff --git a/forward_engineering/helpers/componentsHelpers/responsesHelper.js b/forward_engineering/helpers/componentsHelpers/responsesHelper.js index c12b167..38bfc1f 100644 --- a/forward_engineering/helpers/componentsHelpers/responsesHelper.js +++ b/forward_engineering/helpers/componentsHelpers/responsesHelper.js @@ -34,12 +34,14 @@ function mapResponse(data, responseCollectionDescription, shouldResponseBeCommen const content = getContent(get(data, `properties.content`), !shouldResponseBeCommented); const links = getLinks(get(data, `properties.links`)); const extensions = getExtensions(data.scopesExtensions); - const response = {}; - if (shouldResponseBeCommented) { - response[`hackoladeInnerCommentStart`] = true; - } - - Object.assign(response, { description, headers, content, links }, extensions); + const response = { + ...(shouldResponseBeCommented && { hackoladeInnerCommentStart: true }), + description, + headers, + content, + links, + ...extensions, + }; if (shouldResponseBeCommented) { response[`hackoladeInnerCommentEnd`] = true; diff --git a/forward_engineering/helpers/componentsHelpers/securitySchemesHelper.js b/forward_engineering/helpers/componentsHelpers/securitySchemesHelper.js index 05b2e56..3e84a30 100644 --- a/forward_engineering/helpers/componentsHelpers/securitySchemesHelper.js +++ b/forward_engineering/helpers/componentsHelpers/securitySchemesHelper.js @@ -25,7 +25,7 @@ const cleanUp = obj => { return acc; } - return Object.assign({}, acc, { [key]: value }); + return { ...acc, [key]: value }; }, {}); } @@ -87,7 +87,7 @@ function mapSecurityScheme(data) { }; const extensions = getExtensions(data.scopesExtensions); - return Object.assign({}, securitySchemeProps, commonFields, extensions); + return { ...securitySchemeProps, ...commonFields, ...extensions }; } function mapOAuthFlows(data) { @@ -110,7 +110,7 @@ function mapOAuthFlows(data) { const extensions = getExtensions(data.scopesExtensions); - return cleanUp(Object.assign({}, flows, extensions)); + return cleanUp({ ...flows, ...extensions }); } function mapOAuthFlowObject({ authorizationUrl, tokenUrl, refreshUrl, scopes, scopesExtensions }) { @@ -122,7 +122,7 @@ function mapOAuthFlowObject({ authorizationUrl, tokenUrl, refreshUrl, scopes, sc }; const extensions = getExtensions(scopesExtensions); - return Object.assign({}, flow, extensions); + return { ...flow, ...extensions }; } function mapScopes(data) { diff --git a/forward_engineering/helpers/infoHelper.js b/forward_engineering/helpers/infoHelper.js index 392cddb..19b5ae4 100644 --- a/forward_engineering/helpers/infoHelper.js +++ b/forward_engineering/helpers/infoHelper.js @@ -11,7 +11,7 @@ function getInfo({ description, version, modelVersion, title = '', termsOfServic }; const extensions = getExtensions(infoExtensions); - return Object.assign({}, info, extensions); + return { ...info, ...extensions }; } function getContact(contact) { @@ -26,7 +26,7 @@ function getContact(contact) { }; const extensions = getExtensions(contact.contactExtensions); - return Object.assign({}, contactObj, extensions); + return { ...contactObj, ...extensions }; } function getLicense(license) { @@ -40,7 +40,7 @@ function getLicense(license) { }; const extensions = getExtensions(license.contactExtensions); - return Object.assign({}, licenseObject, extensions); + return { ...licenseObject, ...extensions }; } module.exports = getInfo; diff --git a/forward_engineering/helpers/pathHelper.js b/forward_engineering/helpers/pathHelper.js index b3b707b..f2e7c7e 100644 --- a/forward_engineering/helpers/pathHelper.js +++ b/forward_engineering/helpers/pathHelper.js @@ -6,11 +6,10 @@ const { mapParameter } = require('./componentsHelpers/parametersHelper'); const { mapRequestBody } = require('./componentsHelpers/requestBodiesHelper'); const { mapResponse } = require('./componentsHelpers/responsesHelper'); const { hasRef, getRef } = require('./typeHelper'); -const { commentDeactivatedItemInner } = require('./commentsHelper'); function getPaths(containers, containersIdsForCallbacks = []) { return containers - .filter(({ id }) => !containersIdsForCallbacks.includes(id)) + .filter(({ id, containerData }) => !containersIdsForCallbacks.includes(id) && containerData[0]) .reduce((acc, container, index) => { const { name, isActivated } = container.containerData[0]; const containerData = getRequestsForContainer(container, containers, [], isActivated); @@ -40,7 +39,7 @@ function getRequestsForContainer(container, containers, containersPath = [], isP const containerExtensions = getExtensions(contactExtensions); - return Object.assign({}, containerData, additionalContainerData, containerExtensions); + return { ...containerData, ...additionalContainerData, ...containerExtensions }; } function getRequestData(collections, containers, containerId, containersPath = [], isPathActivated = true) { @@ -78,7 +77,7 @@ function getRequestData(collections, containers, containerId, containersPath = [ isActivated: data.isActivated, }; - return Object.assign({}, request, extensions); + return { ...request, ...extensions }; }) .reduce((acc, collection, index) => { const { methodName, isActivated } = collection; @@ -159,8 +158,7 @@ function getCallbacks(data, containers, containerId, containersPath = []) { return { [key]: { [value.callbackExpression]: callbackData, ...extensions } }; }) .reduce((acc, item) => { - acc = Object.assign({}, acc, item); - return acc; + return { ...acc, ...item }; }, {}); } diff --git a/forward_engineering/helpers/serversHelper.js b/forward_engineering/helpers/serversHelper.js index bf71300..72236d9 100644 --- a/forward_engineering/helpers/serversHelper.js +++ b/forward_engineering/helpers/serversHelper.js @@ -19,7 +19,7 @@ function mapServer(data) { }; const extensions = getExtensions(data.scopesExtensions); - return Object.assign({}, serverData, extensions); + return { ...serverData, ...extensions }; } function mapVariables(variables = []) { @@ -37,13 +37,13 @@ function mapVariables(variables = []) { }; const variableExtensions = getExtensions(item.scopesExtensions); - return Object.assign({}, variable, variableExtensions); + return { ...variable, ...variableExtensions }; }) .reduce((acc, item) => { const { name } = item; delete item.name; - return Object.assign({}, acc, { [name]: item }); + return { ...acc, [name]: item }; }, {}); } diff --git a/forward_engineering/helpers/typeHelper.js b/forward_engineering/helpers/typeHelper.js index b51ef34..478b39f 100644 --- a/forward_engineering/helpers/typeHelper.js +++ b/forward_engineering/helpers/typeHelper.js @@ -1,6 +1,5 @@ const get = require('lodash.get'); const getExtensions = require('./extensionsHelper'); -const { prepareReferenceName } = require('../utils/utils'); const { commentDeactivatedItemInner } = require('./commentsHelper'); function getType(data, key, isParentActivated = false) { @@ -9,7 +8,7 @@ function getType(data, key, isParentActivated = false) { } if (Array.isArray(data.type)) { - return getType(Object.assign({}, data, { type: data.type[0] }), '', isParentActivated); + return getType({ ...data, type: data.type[0] }, '', isParentActivated); } if (hasRef(data)) { @@ -43,7 +42,7 @@ function getTypeProps(data, key, isParentActivated) { }; const arrayChoices = getChoices(data, key); - return Object.assign({}, arrayProps, arrayChoices, extensions); + return { ...arrayProps, ...arrayChoices, ...extensions }; } case 'object': { const objectProps = { @@ -63,7 +62,7 @@ function getTypeProps(data, key, isParentActivated) { }; const objectChoices = getChoices(data, key); - return Object.assign({}, objectProps, objectChoices, extensions); + return { ...objectProps, ...objectChoices, ...extensions }; } case 'parameter': if (!properties || properties.length === 0) { @@ -85,9 +84,9 @@ function hasRef(data = {}) { function getArrayItemsType(items, isParentActivated) { if (Array.isArray(items)) { - return Object.assign({}, items.length > 0 ? getType(items[0], '', isParentActivated) : {}); + return { ...(items.length > 0 ? getType(items[0], '', isParentActivated) : {}) }; } - return Object.assign({}, items ? getType(items, '', isParentActivated) : {}); + return { ...(items ? getType(items, '', isParentActivated) : {}) }; } function getObjectProperties(properties, isParentActivated) { @@ -110,17 +109,16 @@ function getXml(data) { return undefined; } - return Object.assign( - {}, - { + return { + ...{ name: data.xmlName, namespace: data.xmlNamespace, prefix: data.xmlPrefix, attribute: data.xmlAttribute, wrapped: data.xmlWrapped, }, - getExtensions(data.scopesExtensions), - ); + ...getExtensions(data.scopesExtensions), + }; } function getPrimitiveTypeProps(data) { @@ -225,9 +223,7 @@ function addIfTrue(data, propertyName, value) { return data; } - return Object.assign({}, data, { - [propertyName]: value, - }); + return { ...data, [propertyName]: value }; } function getArrayItemsExample(items) { diff --git a/forward_engineering/utils/utils.js b/forward_engineering/utils/utils.js index 8a93ab9..beba894 100644 --- a/forward_engineering/utils/utils.js +++ b/forward_engineering/utils/utils.js @@ -12,11 +12,9 @@ function removeEmptyObjectFields(inputObj) { .reduce((newObj, key) => { const isObjectAndNotArray = typeof obj[key] === 'object' && !Array.isArray(obj[key]); if (isObjectAndNotArray) { - return Object.assign(newObj, { - [key]: removeEmptyObjectFields(obj[key]), - }); + return { ...newObj, [key]: removeEmptyObjectFields(obj[key]) }; } - return Object.assign(newObj, { [key]: obj[key] }); + return { ...newObj, [key]: obj[key] }; }, {}); } diff --git a/reverse_engineering/helpers/adaptJsonSchema/adaptJsonSchema.js b/reverse_engineering/helpers/adaptJsonSchema/adaptJsonSchema.js index 0f6b859..10fdb34 100644 --- a/reverse_engineering/helpers/adaptJsonSchema/adaptJsonSchema.js +++ b/reverse_engineering/helpers/adaptJsonSchema/adaptJsonSchema.js @@ -2,10 +2,11 @@ const mapJsonSchema = require('./mapJsonSchema'); const commonHelper = require('../commonHelper'); const convertToString = jsonSchema => { - return Object.assign({}, jsonSchema, { + return { + ...jsonSchema, type: 'string', nullable: true, - }); + }; }; const convertMultipleTypeToType = jsonSchema => { diff --git a/reverse_engineering/helpers/adaptJsonSchema/mapJsonSchema.js b/reverse_engineering/helpers/adaptJsonSchema/mapJsonSchema.js index 8e14d35..fe77fc3 100644 --- a/reverse_engineering/helpers/adaptJsonSchema/mapJsonSchema.js +++ b/reverse_engineering/helpers/adaptJsonSchema/mapJsonSchema.js @@ -1,7 +1,7 @@ const isPlainObject = require('lodash.isplainobject'); const partial = require('lodash.partial'); -const add = (obj, properties) => Object.assign({}, obj, properties); +const add = (obj, properties) => ({ ...obj, ...properties }); const mapJsonSchema = (jsonSchema, callback) => { const mapProperties = (properties, mapper) => @@ -15,9 +15,9 @@ const mapJsonSchema = (jsonSchema, callback) => { return items.map(jsonSchema => mapper(jsonSchema)); } else if (isPlainObject(items)) { return mapper(items); - } else { - return items; } + + return items; }; const applyTo = (properties, jsonSchema, mapper) => { return properties.reduce((jsonSchema, propertyName) => { @@ -25,9 +25,10 @@ const mapJsonSchema = (jsonSchema, callback) => { return jsonSchema; } - return Object.assign({}, jsonSchema, { + return { + ...jsonSchema, [propertyName]: mapper(jsonSchema[propertyName]), - }); + }; }, jsonSchema); }; if (!isPlainObject(jsonSchema)) { @@ -37,7 +38,7 @@ const mapJsonSchema = (jsonSchema, callback) => { const propertiesLike = ['properties', 'definitions', 'patternProperties']; const itemsLike = ['items', 'oneOf', 'allOf', 'anyOf', 'not']; - const copyJsonSchema = Object.assign({}, jsonSchema); + const copyJsonSchema = { ...jsonSchema }; const jsonSchemaWithNewProperties = applyTo( propertiesLike, copyJsonSchema, diff --git a/reverse_engineering/helpers/commonHelper.js b/reverse_engineering/helpers/commonHelper.js index 8ad7219..d8e3b96 100644 --- a/reverse_engineering/helpers/commonHelper.js +++ b/reverse_engineering/helpers/commonHelper.js @@ -59,14 +59,16 @@ const getPathData = (data, filePath) => { }; const handleErrorObject = (error, title) => { - return Object.assign( - { title }, - Object.getOwnPropertyNames(error).reduce((accumulator, key) => { - return Object.assign(accumulator, { + return { + title, + ...Object.getOwnPropertyNames(error).reduce( + (accumulator, key) => ({ + ...accumulator, [key]: error[key], - }); - }, {}), - ); + }), + {}, + ), + }; }; const convertYamlToJson = fileData => { diff --git a/reverse_engineering/helpers/dataHelper.js b/reverse_engineering/helpers/dataHelper.js index a7c1c20..cdad14c 100644 --- a/reverse_engineering/helpers/dataHelper.js +++ b/reverse_engineering/helpers/dataHelper.js @@ -33,9 +33,10 @@ const handleObject = (func, object, includeKey) => { return {}; } return Object.keys(object).reduce((accum, key) => { - return Object.assign({}, accum, { + return { + ...accum, [key]: func(object[key], includeKey ? key : undefined), - }); + }; }, {}); }; @@ -50,11 +51,11 @@ const getObjectProperties = (propsToClean, object) => { return obj; } if (key === '$ref') { - return Object.assign({}, obj, { [key]: resolveReference(object[key]) }); + return { ...obj, [key]: resolveReference(object[key]) }; } - return Object.assign({}, obj, { [key]: object[key] }); + return { ...obj, [key]: object[key] }; }, {}); - return Object.assign({}, getExtensionsObject(object), filteredObject); + return { ...getExtensionsObject(object), ...filteredObject }; }; const getServersData = servers => { @@ -161,9 +162,9 @@ const handleDataByConfig = (data, config) => { return { [property]: data.map(item => handleDataByConfig(item, config[0])) }; } else if (configType === 'object') { return { [property]: handleDataByConfig(data, config) }; - } else { - return { [config]: data }; } + + return { [config]: data }; }; if (typeof data === 'string') { @@ -174,15 +175,15 @@ const handleDataByConfig = (data, config) => { const extensionsObject = getExtensionsObject(data); - return Object.assign( - extensionsObject, - Object.keys(config).reduce((accumulator, key) => { + return { + ...extensionsObject, + ...Object.keys(config).reduce((accumulator, key) => { if (!data[key]) { return accumulator; } - return Object.assign({}, accumulator, handleProperty(data[key], config, key)); + return { ...accumulator, ...handleProperty(data[key], config, key) }; }, {}), - ); + }; }; const getEntityData = (schema, type = REQUEST) => { @@ -214,7 +215,7 @@ const getContainersFromCallbacks = callbacks => { return [ { - data: Object.assign({}, { name: pathName }, extensionsObject), + data: { name: pathName, ...extensionsObject }, callbackPath, }, ...requestCallbacksPathsData, @@ -226,7 +227,7 @@ const getContainersFromCallbacks = callbacks => { }; const getContainers = (pathData, callbacks) => { - let updatedPathData = Object.assign({}, pathData); + let updatedPathData = { ...pathData }; const containers = Object.keys(pathData).reduce((accum, key) => { const path = pathData[key]; const extensionsObject = getExtensionsObject(path, 'extensions'); @@ -235,10 +236,10 @@ const getContainers = (pathData, callbacks) => { return accum.concat(getContainersFromRequestCallbacks(path[requestName])); }, []); const containersData = requestCallbacksPathsData.map(pathData => { - updatedPathData = Object.assign({}, updatedPathData, { [pathData.data.name]: pathData.callbackPath }); + updatedPathData = { ...updatedPathData, [pathData.data.name]: pathData.callbackPath }; return pathData.data; }); - return accum.concat(Object.assign({}, { name: key, summary: path.summary }, extensionsObject), containersData); + return [...accum, { name: key, summary: path.summary, ...extensionsObject }, ...containersData]; }, []); if (callbacks) { @@ -247,7 +248,7 @@ const getContainers = (pathData, callbacks) => { return accum.concat(callbacksData); }, []); const componentCallbacksContainers = componentCallbacksPathData.map(pathData => { - updatedPathData = Object.assign({}, updatedPathData, { [pathData.data.name]: pathData.callbackPath }); + updatedPathData = { ...updatedPathData, [pathData.data.name]: pathData.callbackPath }; return pathData.data; }); return { containers: containers.concat(componentCallbacksContainers), updatedPathData }; @@ -257,8 +258,7 @@ const getContainers = (pathData, callbacks) => { }; const handleExample = data => { - const value = getExampleStringValue(data.value); - return Object.assign({}, data, { type: 'example', value }); + return { ...data, type: 'example', value: getExampleStringValue(data.value) }; }; const getSchemaObject = (data, fieldOrder) => { @@ -269,7 +269,7 @@ const getSchemaObject = (data, fieldOrder) => { if (schemaChoice) { return { [schemaChoice]: schemaWithChoices[schemaChoice] }; } - return { properties: { schema: Object.assign({}, schema, { subtype: 'schema' }) } }; + return { properties: { schema: { ...schema, subtype: 'schema' } } }; }; const getExamplesObject = data => { @@ -319,24 +319,21 @@ const handleLink = data => { const parameters = handleObject(handleExpression, data.parameters); const server = data.server && getServersData([data.server]); - return Object.assign( - {}, - data, - { - type: 'link', - subtype: 'expression', - properties: { - parameters: { - type: 'operationObject', - subtype: 'expression', - properties: parameters, - }, - requestBody, + return { + ...data, + type: 'link', + subtype: 'expression', + properties: { + parameters: { + type: 'operationObject', + subtype: 'expression', + properties: parameters, }, + requestBody, }, - server, - getExtensionsObject(data), - ); + ...server, + ...getExtensionsObject(data), + }; }; const getLinksObject = data => { @@ -354,22 +351,22 @@ const handleHeader = (data, fieldOrder) => { const schemaObject = getSchemaObject(data, fieldOrder); const content = getContentObject(data); const examples = getExamplesObject(data); - const headerProperties = Object.assign({}, schemaObject.properties || {}, { - content, - examples, - }); - const header = Object.assign({}, schemaObject, data, { + const headerProperties = { ...(schemaObject.properties || {}), content, examples }; + const header = { + ...schemaObject, + ...data, sample: getExampleStringValue(data.example), type: 'header', properties: headerProperties, - }); + }; const propsToClean = ['schema', 'examples', 'example', 'content']; return getObjectProperties(propsToClean, header); }; const handleEncoding = data => { const propsToClean = ['headers']; - return Object.assign({}, getObjectProperties(propsToClean, data), { + return { + ...getObjectProperties(propsToClean, data), type: 'encoding', properties: { headers: { @@ -379,7 +376,7 @@ const handleEncoding = data => { properties: handleObject(handleHeader, data.headers), }, }, - }); + }; }; const handleMedia = (data, fieldOrder) => { @@ -396,34 +393,39 @@ const handleMedia = (data, fieldOrder) => { properties: handleObject(handleEncoding, data.encoding), structureType: true, }; - const mediaProperties = Object.assign({}, schemaObject.properties || {}, { + const mediaProperties = { + ...(schemaObject.properties || {}), examples, encoding, - }); + }; const propsToClean = ['schema', 'examples', 'encoding', 'example']; - return Object.assign({}, schemaObject, getObjectProperties(propsToClean, data), { + return { + ...schemaObject, + ...getObjectProperties(propsToClean, data), sample: getExampleStringValue(data.example), type: 'media', properties: mediaProperties, - }); + }; }; -const handleRequestBody = (data, fieldOrder) => { +const handleRequestBody = data => { const media = handleObject(handleMedia, data.content); const propsToClean = ['content']; - return Object.assign({}, getObjectProperties(propsToClean, data), { + return { + ...getObjectProperties(propsToClean, data), type: 'requestBody', properties: media, - }); + }; }; -const handleCallback = (data, fieldOrder) => { +const handleCallback = data => { const callbackExpression = (Object.keys(data) || [])[0]; - return Object.assign( - {}, - { type: 'callback', bucketId: callbackExpression, callbackExpression }, - getExtensionsObject(data), - ); + return { + type: 'callback', + bucketId: callbackExpression, + callbackExpression, + ...getExtensionsObject(data), + }; }; const handleChoiceProperty = (fieldOrder, rawChoice, name) => { @@ -450,10 +452,10 @@ const handleSchemaChoices = (schema, fieldOrder) => { }; if (!currentChoicesWithSameType) { - return Object.assign({}, accum, { [choiceType]: [choiceData] }); + return { ...accum, [choiceType]: [choiceData] }; } - return Object.assign({}, accum, { [choiceType]: accum[choiceType].concat(choiceData) }); + return { ...accum, [choiceType]: [...accum[choiceType], choiceData] }; }, {}); const choiceTypes = Object.keys(schemaChoices); @@ -493,22 +495,24 @@ const handleSchemaChoices = (schema, fieldOrder) => { })); if (choiceType === 'allOf' && hasMultipleOneOf) { - return Object.assign({}, accum, { - [choiceType]: subschemas.concat(multipleOneOf), - }); + return { + ...accum, + [choiceType]: [...subschemas, ...multipleOneOf], + }; } - return Object.assign({}, accum, { + return { + ...accum, [choiceType]: subschemas, - }); + }; }, {}); if (!hasAllOf && hasMultipleOneOf) { - const choicesWithAllOf = Object.assign({}, resolvedChoices, { allOf: multipleOneOf }); - return Object.assign({}, schema, choicesWithAllOf, { properties: schemaProps }); + const choicesWithAllOf = { ...resolvedChoices, allOf: multipleOneOf }; + return { ...schema, ...choicesWithAllOf, properties: schemaProps }; } - return Object.assign({}, schema, resolvedChoices, { properties: schemaProps }); + return { ...schema, ...resolvedChoices, properties: schemaProps }; }; const handleSchemaExample = (schemaType, example) => { @@ -533,22 +537,25 @@ const handleAdditionalProperties = schema => { } if (typeof data === 'object') { if (data.format) { - return Object.assign({}, schema, { + return { + ...schema, additionalPropControl: 'Object', additionalPropertiesObjectType: data.type, additionalPropertiesIntegerFormat: data.format, - }); + }; } - return Object.assign({}, schema, { + return { + ...schema, additionalPropControl: 'Object', additionalPropertiesObjectType: data.type, - }); - } else { - return Object.assign({}, schema, { - additionalPropControl: 'Boolean', - additionalProperties: !!data, - }); + }; } + + return { + ...schema, + additionalPropControl: 'Boolean', + additionalProperties: !!data, + }; }; const handleSchemaProperty = (property, data) => { @@ -605,10 +612,10 @@ const handleSchemaExtensions = schema => { if (property.startsWith(EXTENSION_SYMBOL)) { return accumulator; } - return Object.assign({}, accumulator, { [property]: schema[property] }); + return { ...accumulator, [property]: schema[property] }; }, {}); - return Object.assign({}, schemaWithoutExtensions, mappedExtensionsObject); + return { ...schemaWithoutExtensions, ...mappedExtensionsObject }; }; const handleSchemaProps = (schema, fieldOrder) => { @@ -701,13 +708,15 @@ const handleParameter = (parameter, parameterName, fieldOrder) => { content: parameterContent, examples: parameterExamples, }; - const newParameter = Object.assign({}, parameterSchemaObject, parameter, { + const newParameter = { + ...parameterSchemaObject, + ...parameter, name: parameterName || parameter.name, parameterName: parameter.name, sample: getExampleStringValue(parameter.example), type: parameterType, properties: parameterProperties, - }); + }; const propsToClean = ['schema', 'examples', 'example', 'in', 'content']; return getObjectProperties(propsToClean, newParameter); }; @@ -730,14 +739,15 @@ const handleSecuritySchemes = data => { return scopeAccum.concat({ scopeName: scopeKey, scopeDescription: flowObject.scopes[scopeKey] }); }, []); } - return Object.assign({}, accum, { [flow]: flowObject }); + return { ...accum, [flow]: flowObject }; }, {}); } - return Object.assign({}, getObjectProperties(propsToClean, data), { + return { + ...getObjectProperties(propsToClean, data), type: 'securityScheme', apiKeyName: data.name, schemeType: data.type, - }); + }; }; const handleRequestData = (requestData, request, fieldOrder) => { @@ -760,18 +770,19 @@ const handleRequestData = (requestData, request, fieldOrder) => { properties: callbacksData, }, }; - const jsonSchema = Object.assign({}, entityData, { + const jsonSchema = { + ...entityData, type: 'object', entityType: REQUEST, subtype: 'requestBody', collectionName: request, properties: requestSchema, isActivated: true, - }); + }; return { jsonSchema, responses }; }; -const handleResponse = (responseObj, fieldOrder) => { +const handleResponse = responseObj => { const headers = getHeadersObject(responseObj); const content = getContentObject(responseObj); const links = getLinksObject(responseObj); @@ -781,10 +792,11 @@ const handleResponse = (responseObj, fieldOrder) => { content, links, }; - return Object.assign({}, getObjectProperties(propsToClean, responseObj), { + return { + ...getObjectProperties(propsToClean, responseObj), type: 'response', properties: propertiesSchema, - }); + }; }; const handleResponseData = (responseObj, response, request, fieldOrder) => { @@ -816,7 +828,7 @@ const getEntities = (pathData, containers, fieldOrder) => { }); return [...accumulator, jsonSchema, ...responseSchemas]; }, []); - return Object.assign(accumulator, { [container.name]: entities }); + return { ...accumulator, [container.name]: entities }; }, {}); }; @@ -894,14 +906,11 @@ const getComponents = (schemaComponents = {}, fieldOrder) => { structureType: true, properties: callbacksData, }; - const extensions = Object.assign( - {}, - { - type: 'extensions', - structureType: true, - }, - extensionsData, - ); + const extensions = { + type: 'extensions', + structureType: true, + ...extensionsData, + }; const definitionsSchema = { definitions: { @@ -930,10 +939,11 @@ const getOpenAPIJsonSchema = (data, fileName, extension) => { const schema = extension !== '.json' ? commonHelper.convertYamlToJson(data) : data; const openAPISchema = typeof schema === 'string' ? jsonComment.parse(schema.replace(/^\s*#.+$/gm, '')) : schema; const updatedOpenApiSchema = copyPathItemLevelParametersToOperationObject(openAPISchema); - const openAPISchemaWithModelName = Object.assign({}, updatedOpenApiSchema, { + + return { + ...updatedOpenApiSchema, modelName: fileName, - }); - return openAPISchemaWithModelName; + }; }; const copyPathItemLevelParametersToOperationObject = schema => { From c90bd4a22a49010b8517084bcaf0ba2530ce0e6a Mon Sep 17 00:00:00 2001 From: yevhenii-moroziuk Date: Mon, 27 Jan 2025 19:52:21 +0200 Subject: [PATCH 2/5] HCK-9667: Remove redundant param --- reverse_engineering/helpers/dataHelper.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reverse_engineering/helpers/dataHelper.js b/reverse_engineering/helpers/dataHelper.js index cdad14c..f1aa96a 100644 --- a/reverse_engineering/helpers/dataHelper.js +++ b/reverse_engineering/helpers/dataHelper.js @@ -754,7 +754,7 @@ const handleRequestData = (requestData, request, fieldOrder) => { const responses = requestData.responses; const entityData = getEntityData(requestData, REQUEST); const parametersData = getParametersData(requestData.parameters, fieldOrder); - const requestBody = handleRequestBody(requestData.requestBody || {}, fieldOrder); + const requestBody = handleRequestBody(requestData.requestBody || {}); const callbacksData = handleObject(handleCallback, requestData.callbacks); const requestSchema = { parameters: { From 1d6c27a3497fa85f25ea7793e6a34c68636e1ca4 Mon Sep 17 00:00:00 2001 From: yevhenii-moroziuk Date: Mon, 27 Jan 2025 19:54:51 +0200 Subject: [PATCH 3/5] HCK-9667: Remove redundant param --- reverse_engineering/helpers/dataHelper.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reverse_engineering/helpers/dataHelper.js b/reverse_engineering/helpers/dataHelper.js index f1aa96a..9c8539a 100644 --- a/reverse_engineering/helpers/dataHelper.js +++ b/reverse_engineering/helpers/dataHelper.js @@ -800,7 +800,7 @@ const handleResponse = responseObj => { }; const handleResponseData = (responseObj, response, request, fieldOrder) => { - const responseData = handleResponse(responseObj, fieldOrder); + const responseData = handleResponse(responseObj); const jsonSchema = { type: 'object', subtype: 'response', From 85e4f7e2035b6100d50d619d40bdfe0d9cba2d50 Mon Sep 17 00:00:00 2001 From: yevhenii-moroziuk Date: Mon, 3 Feb 2025 17:11:46 +0200 Subject: [PATCH 4/5] HCK-9667: Remove fix --- forward_engineering/helpers/pathHelper.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forward_engineering/helpers/pathHelper.js b/forward_engineering/helpers/pathHelper.js index f2e7c7e..5cdd0d0 100644 --- a/forward_engineering/helpers/pathHelper.js +++ b/forward_engineering/helpers/pathHelper.js @@ -9,7 +9,7 @@ const { hasRef, getRef } = require('./typeHelper'); function getPaths(containers, containersIdsForCallbacks = []) { return containers - .filter(({ id, containerData }) => !containersIdsForCallbacks.includes(id) && containerData[0]) + .filter(({ id }) => !containersIdsForCallbacks.includes(id)) .reduce((acc, container, index) => { const { name, isActivated } = container.containerData[0]; const containerData = getRequestsForContainer(container, containers, [], isActivated); From 5442e203fbaeba4b7068b0f64c81b6c1f27afb1d Mon Sep 17 00:00:00 2001 From: yevhenii-moroziuk Date: Tue, 4 Feb 2025 08:53:27 +0200 Subject: [PATCH 5/5] Update package-lock.json --- package-lock.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 26da53a..cad03c6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "EventBridge", - "version": "0.2.4", + "version": "0.2.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "EventBridge", - "version": "0.2.4", + "version": "0.2.5", "hasInstallScript": true, "dependencies": { "@apidevtools/swagger-parser": "10.0.3",