openapi-sync 2.1.14 → 2.1.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../Openapi-sync/state.ts","../Openapi-sync/index.ts","../index.ts"],"names":["dbPath","path","fs","db","__require","error","state","updateDB","data","setState","key","value","getState","resetState","rootUsingCwd","fetchTimeout","apiClient","axios","axiosRetry","retryCount","OpenapiSync","apiUrl","apiName","config","refetchInterval","__async","_a","_b","_c","_d","_e","_f","specResponse","source","isJson","yamlStringToJson","spec","SwaggerParser","parseError","parseErrorMessage","folderPath","folderGroups","getFolderName","endpointData","customFolder","serverUrl","typePrefix","endpointPrefix","getSharedComponentName","componentName","componentType","defaultName","capitalize","formattedName","parseSchemaToType","apiDoc","schema","name","isRequired","options","indentLevel","overrideName","type","pathToComponentParts","component","lodashget","part","i","v","objKeys","requiredKeys","typeCnt","doc","line","handleType","_type","arrType","_name","typeName","nullable","getSchemaExamples","prevSpec","isEqual","endpointsFileContent","typesFileContent","sharedTypesFileContent","components","componentInterfaces","componentSchema","contentKey","parts","currentLevel","currentSchemaLevel","cnt","JSONStringify","getBodySchemaType","requestBody","contentKeys","treatEndpointUrl","endpointUrl","newEndpointUrl","replaceWord","indx","regexp","shouldExcludeEndpoint","method","tags","excludeConfig","includeConfig","matchesIncludeTags","tag","matchesIncludeEndpoints","endpoint","methodMatches","endpointPath","endpointSpec","_method","_g","_h","_i","_j","_k","_l","_m","_n","_o","_p","_q","_r","_s","_t","_u","_v","_w","_x","getEndpointDetails","endpointTags","enSpec","folderName","endpointUrlTxt","eSpec","queryTypeCnt","param","typeContent","dtoTypeCnt","responseTypeObject","responseTypeCnt","responses","code","formatSecuritySpec","security","securityRequirement","scheme","scopes","sch","scopeText","securitySpec","curl","headers","body","extras","contentType","schemaType","securityItem","securitySchema","curlHeaders","header","CurlGenerator","renderTypeRefMD","content","endpointContent","group","folderPathForGroup","endpointsFilePath","typesFilePath","typesContent","sharedTypesFilePath","Openapi_sync_default","Init","configJS","X","registerError","jsConfigPath","tsConfigPath","jsonConfigPath","configPaths","configPath","e","apiNames"],"mappings":"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","file":"index.mjs","sourcesContent":["import path from \"path\";\nimport { IOpenApiSpec } from \"../types\";\nimport fs from \"fs\";\n\nconst dbPath = path.join(__dirname, \"../\", \"../db.json\");\nif (!fs.existsSync(dbPath)) {\n fs.writeFileSync(dbPath, \"{}\");\n}\nlet db: Record<string, IOpenApiSpec> = {};\ntry {\n db = require(dbPath);\n} catch (error) {\n db = {};\n}\nlet state: Record<string, IOpenApiSpec> = db || {};\n\nconst updateDB = (data: typeof state) => {\n fs.writeFileSync(dbPath, JSON.stringify(data));\n};\nexport const setState = (key: string, value: IOpenApiSpec) => {\n state[key] = value;\n updateDB(state);\n};\n\nexport const getState = (key: string): IOpenApiSpec | undefined => {\n return state[key];\n};\n\nexport const resetState = () => {\n state = {};\n updateDB(state);\n};\n","import fs from \"fs\";\nimport path from \"path\";\nimport {\n capitalize,\n getEndpointDetails,\n isJson,\n JSONStringify,\n renderTypeRefMD,\n yamlStringToJson,\n} from \"../helpers\";\nimport {\n IConfig,\n IConfigReplaceWord,\n IOpenApiMediaTypeSpec,\n IOpenApiParameterSpec,\n IOpenApiRequestBodySpec,\n IOpenApiResponseSpec,\n IOpenApiSecuritySchemes,\n IOpenApiSpec,\n IOpenApSchemaSpec,\n} from \"../types\";\nimport isEqual from \"lodash.isequal\";\nimport lodashget from \"lodash.get\";\nimport axios, { Method } from \"axios\";\nimport axiosRetry from \"axios-retry\";\nimport SwaggerParser from \"@apidevtools/swagger-parser\";\nimport { getState, setState } from \"./state\";\nimport { CurlGenerator } from \"curl-generator\";\n\nconst rootUsingCwd = process.cwd();\nlet fetchTimeout: Record<string, null | NodeJS.Timeout> = {};\n\n// Create an Axios instance\nconst apiClient = axios.create({\n timeout: 60000, // Timeout after 1min\n});\n\n// Configure axios-retry\naxiosRetry(apiClient, {\n retries: 20, // Number of retry attempts\n retryCondition: (error) => {\n // Retry on network error\n return (\n error.code === \"ECONNABORTED\" || error.message.includes(\"Network Error\")\n );\n },\n retryDelay: (retryCount) => {\n return retryCount * 1000; // Exponential back-off: 1s, 2s, 3s, etc.\n },\n});\n\nconst OpenapiSync = async (\n apiUrl: string,\n apiName: string,\n config: IConfig,\n refetchInterval?: number\n) => {\n const specResponse = await apiClient.get(apiUrl);\n\n const source = isJson(specResponse.data)\n ? specResponse.data\n : yamlStringToJson(specResponse.data);\n\n // Parse the OpenAPI spec using swagger-parser with lenient parsing\n let spec: IOpenApiSpec;\n try {\n // Use lenient parsing by default (similar to redocly behavior)\n spec = (await SwaggerParser.parse(source)) as IOpenApiSpec;\n } catch (parseError) {\n const parseErrorMessage =\n parseError instanceof Error ? parseError.message : String(parseError);\n throw new Error(\n `Failed to parse OpenAPI spec for ${apiName}: ${parseErrorMessage}`\n );\n }\n\n const folderPath = path.join(config?.folder || \"\", apiName);\n\n // Initialize folder splitting data structures\n const folderGroups: Record<\n string,\n {\n endpoints: string;\n types: string;\n }\n > = {};\n\n // Helper function to determine folder name for an endpoint\n const getFolderName = (endpointData: {\n method: Method;\n path: string;\n summary?: string;\n operationId?: string;\n tags?: string[];\n parameters?: IOpenApiParameterSpec[];\n requestBody?: IOpenApiRequestBodySpec;\n responses?: IOpenApiResponseSpec;\n }): string => {\n // Use custom folder function if provided\n if (config?.folderSplit?.customFolder) {\n const customFolder = config.folderSplit.customFolder(endpointData);\n console.log(\"customFolder\", customFolder);\n if (customFolder) return customFolder;\n }\n\n // Use tag-based splitting if enabled\n if (\n config?.folderSplit?.byTags &&\n endpointData.tags &&\n endpointData.tags.length > 0\n ) {\n return endpointData.tags[0].toLowerCase().replace(/\\s+/g, \"-\");\n }\n\n // Default folder\n return \"default\";\n };\n\n const serverUrl =\n typeof config?.server === \"string\"\n ? config?.server\n : spec?.servers?.[config?.server || 0]?.url || \"\";\n const typePrefix =\n typeof config?.types?.name?.prefix === \"string\"\n ? config?.types.name.prefix\n : \"I\";\n const endpointPrefix =\n typeof config?.endpoints?.name?.prefix === \"string\"\n ? config?.endpoints.name.prefix\n : \"\";\n\n const getSharedComponentName = (\n componentName: string,\n componentType?:\n | \"parameters\"\n | \"responses\"\n | \"schemas\"\n | \"requestBodies\"\n | \"headers\"\n | \"links\"\n | \"callbacks\"\n ) => {\n const defaultName = capitalize(componentName);\n if (config?.types?.name?.format) {\n const formattedName = config?.types.name.format(\n \"shared\",\n {\n name: componentName,\n },\n defaultName\n );\n if (formattedName) return `${typePrefix}${formattedName}`;\n }\n return `${typePrefix}${defaultName}`;\n };\n\n const parseSchemaToType = (\n apiDoc: IOpenApiSpec,\n schema: IOpenApSchemaSpec,\n name: string,\n isRequired?: boolean,\n options?: {\n noSharedImport?: boolean;\n useComponentName?: boolean;\n },\n indentLevel: number = 0\n ) => {\n let overrideName = \"\";\n let componentName = \"\";\n let type = \"\";\n if (schema) {\n if (schema.$ref) {\n if (schema.$ref[0] === \"#\") {\n let pathToComponentParts = (schema.$ref || \"\").split(\"/\");\n pathToComponentParts.shift();\n const partsClone = [...pathToComponentParts];\n partsClone.pop();\n\n const pathToComponent = pathToComponentParts;\n const component = lodashget(\n apiDoc,\n pathToComponent,\n null\n ) as IOpenApSchemaSpec;\n\n if (component) {\n if ((component as any)?.name) {\n overrideName = (component as any).name;\n }\n componentName =\n pathToComponentParts[pathToComponentParts.length - 1];\n\n let name = getSharedComponentName(componentName);\n if (name.includes(\".\")) {\n const nameParts = name.split(\".\");\n name = nameParts\n .map((part, i) => {\n if (i === 0) {\n return part;\n }\n return `[\"${part}\"]`;\n })\n .join(\"\");\n }\n\n // Reference component via import instead of parsing\n type += `${options?.noSharedImport ? \"\" : \"Shared.\"}${name}`;\n // type += `${parseSchemaToType(apiDoc, component, \"\", isRequired)}`;\n }\n } else {\n type += \"\";\n //TODO $ref is a uri - use axios to fetch doc\n }\n } else if (schema.anyOf) {\n type += `(${schema.anyOf\n .map((v) => parseSchemaToType(apiDoc, v, \"\", isRequired, options))\n .filter((v) => !!v)\n .join(\"|\")})`;\n } else if (schema.oneOf) {\n type += `(${schema.oneOf\n .map((v) => parseSchemaToType(apiDoc, v, \"\", isRequired, options))\n .filter((v) => !!v)\n .join(\"|\")})`;\n } else if (schema.allOf) {\n type += `(${schema.allOf\n .map((v) => parseSchemaToType(apiDoc, v, \"\", isRequired, options))\n .filter((v) => !!v)\n .join(\"&\")})`;\n } else if (schema.items) {\n type += `${parseSchemaToType(\n apiDoc,\n schema.items,\n \"\",\n false,\n options\n )}[]`;\n } else if (schema.properties) {\n //parse object key one at a time\n const objKeys = Object.keys(schema.properties);\n const requiredKeys = schema.required || [];\n let typeCnt = \"\";\n objKeys.forEach((key) => {\n let doc: string = \"\";\n\n if (\n !config?.types?.doc?.disable &&\n schema.properties?.[key]?.description\n ) {\n doc =\n \" * \" +\n schema.properties?.[key].description\n .split(\"\\n\")\n .filter((line: string) => line.trim() !== \"\")\n .join(` \\n *${\" \".repeat(1)}`);\n }\n\n typeCnt +=\n (doc ? `/**\\n${doc}\\n */\\n` : \"\") +\n `${parseSchemaToType(\n apiDoc,\n schema.properties?.[key] as IOpenApSchemaSpec,\n key,\n requiredKeys.includes(key),\n options,\n indentLevel + 1\n )}`;\n });\n if (typeCnt.length > 0) {\n type += `{\\n${\" \".repeat(indentLevel)}${typeCnt}${\" \".repeat(\n indentLevel\n )}}`;\n } else {\n type += \"{[k: string]: any}\";\n }\n } else if (schema.enum && schema.enum.length > 0) {\n if (schema.enum.length > 1) type += \"(\";\n schema.enum\n .map((v) => JSON.stringify(v))\n .filter((v) => !!v)\n .forEach((v, i) => {\n type += `${i === 0 ? \"\" : \"|\"}${v}`;\n });\n\n if (schema.enum.length > 1) type += \")\";\n } else if (schema.type) {\n const handleType = (_type: typeof schema.type) => {\n let typeCnt = \"\";\n if (typeof _type === \"string\") {\n if (\n [\n \"string\",\n \"integer\",\n \"number\",\n \"array\",\n \"boolean\",\n \"null\",\n ].includes(_type)\n ) {\n if ([\"integer\", \"number\"].includes(_type)) {\n typeCnt += `number`;\n } else if (_type === \"array\") {\n //Since we would have already parsed the arrays keys above \"schema.items\" if it exists\n typeCnt += \"any[]\";\n /* if (schema.items) {\n typeCnt += `${parseSchemaToType(\n apiDoc,\n schema.items,\n \"\",\n false,\n options\n )}[]`;\n } else {\n typeCnt += \"any[]\";\n } */\n } else {\n typeCnt += _type;\n }\n } else if (_type === \"object\") {\n //Since we would have already parsed the object keys above \"schema.properties\" if it exists\n if (schema.additionalProperties) {\n typeCnt += `{[k: string]: ${\n parseSchemaToType(\n apiDoc,\n schema.additionalProperties,\n \"\",\n true,\n options\n ) || \"any\"\n }}`;\n } else {\n typeCnt += \"{[k: string]: any}\";\n }\n }\n } else if (Array.isArray(_type)) {\n const arrType = _type.map((v) => handleType(v));\n arrType.filter((v) => v !== \"\");\n if (arrType.length > 1) typeCnt += \"(\" + arrType.join(\"|\") + \")\";\n } else {\n typeCnt += \"any\";\n }\n\n return typeCnt;\n };\n type = handleType(schema.type);\n }\n } else {\n //Default type to string if no schema provided\n type = \"string\";\n }\n\n let _name = overrideName || name;\n if (options?.useComponentName && !_name) {\n _name = componentName;\n }\n\n let typeName = _name ? `\\t\"${_name}\"${isRequired ? \"\" : \"?\"}: ` : \"\";\n\n const nullable = schema?.nullable ? \" | null\" : \"\";\n return type.length > 0\n ? `${typeName}${type}${nullable}${_name ? \";\\n\" : \"\"}`\n : \"\";\n };\n\n const getSchemaExamples = (\n apiDoc: IOpenApiSpec,\n schema: IOpenApSchemaSpec\n ) => {\n let overrideName = \"\";\n let componentName = \"\";\n let type = \"\";\n if (schema) {\n if (schema.$ref) {\n if (schema.$ref[0] === \"#\") {\n let pathToComponentParts = (schema.$ref || \"\").split(\"/\");\n pathToComponentParts.shift();\n\n const pathToComponent = pathToComponentParts;\n const component = lodashget(\n apiDoc,\n pathToComponent,\n null\n ) as IOpenApSchemaSpec;\n\n if (component) {\n if ((component as any)?.name) {\n overrideName = (component as any).name;\n }\n componentName =\n pathToComponentParts[pathToComponentParts.length - 1];\n\n type += getSchemaExamples(apiDoc, component);\n }\n } else {\n type += \"\";\n //TODO $ref is a uri - use axios to fetch doc\n }\n } else if (schema.anyOf) {\n type += getSchemaExamples(apiDoc, schema.anyOf[0]);\n } else if (schema.oneOf) {\n type += getSchemaExamples(apiDoc, schema.oneOf[0]);\n } else if (schema.allOf) {\n type += `{${schema.allOf\n .map((v) => `...(${getSchemaExamples(apiDoc, v)})`)\n .join(\",\")}}`;\n } else if (schema.items) {\n type += `[${getSchemaExamples(apiDoc, schema.items)}]`;\n } else if (schema.properties) {\n //parse object key one at a time\n const objKeys = Object.keys(schema.properties);\n const arr = objKeys.map((key) => {\n return ` \"${key}\": ${getSchemaExamples(\n apiDoc,\n schema.properties?.[key] as IOpenApSchemaSpec\n )}`;\n });\n let typeCnt = arr.join(\",\\n\");\n if (typeCnt.length > 0) {\n type += `{\\n${typeCnt}\\n }`;\n } else {\n type += \"{}\";\n }\n } else if (schema.enum && schema.enum.length > 0) {\n if (schema.enum.length > 1) type += schema.enum[0];\n } else if (schema.type) {\n if (schema.example) {\n type += JSON.stringify(schema.example);\n } else {\n const handleType = (_type: typeof schema.type) => {\n let typeCnt = \"\";\n if (typeof _type === \"string\") {\n if (\n [\n \"string\",\n \"integer\",\n \"number\",\n \"array\",\n \"boolean\",\n \"null\",\n ].includes(_type)\n ) {\n if ([\"integer\", \"number\"].includes(_type)) {\n typeCnt += `123`;\n } else if (_type === \"array\") {\n //Since we would have already parsed the arrays keys above \"schema.items\" if it exists\n typeCnt += \"[]\";\n } else if (_type === \"boolean\") {\n typeCnt += `true`;\n } else if (_type === \"null\") {\n typeCnt += `null`;\n } else {\n typeCnt += `\"${_type}\"`;\n }\n } else if (_type === \"object\") {\n //Since we would have already parsed the object keys above \"schema.properties\" if it exists\n typeCnt += \"{}\";\n }\n } else if (Array.isArray(_type)) {\n const arrType = _type.map((v) => handleType(v));\n arrType.filter((v) => v !== \"\");\n if (arrType.length > 1) typeCnt += arrType.join(\"|\");\n } else {\n typeCnt += \"any\";\n }\n\n return typeCnt;\n };\n type = handleType(schema.type);\n }\n }\n } else {\n //Default type to string if no schema provided\n type = \"string\";\n }\n\n return type;\n };\n\n // auto update only on dev\n if (refetchInterval && !isNaN(refetchInterval) && refetchInterval > 0) {\n if (\n !(\n process.env.NODE_ENV &&\n [\"production\", \"prod\", \"test\", \"staging\"].includes(process.env.NODE_ENV)\n )\n ) {\n // auto sync at interval\n if (fetchTimeout[apiName]) clearTimeout(fetchTimeout[apiName]);\n\n // set next request timeout\n fetchTimeout[apiName] = setTimeout(\n () => OpenapiSync(apiUrl, apiName, config, refetchInterval),\n refetchInterval\n );\n }\n }\n\n // compare new spec with old spec, continuing only if spec it different\n const prevSpec = getState(apiName);\n if (isEqual(prevSpec, spec)) return;\n\n setState(apiName, spec);\n\n let endpointsFileContent = \"\";\n let typesFileContent = \"\";\n let sharedTypesFileContent: Record<string, string> = {};\n\n if (spec.components) {\n Object.keys(spec.components).forEach((key) => {\n if (\n [\n \"schemas\",\n \"responses\",\n \"parameters\",\n \"examples\",\n \"requestBodies\",\n \"headers\",\n \"links\",\n \"callbacks\",\n ].includes(key)\n ) {\n // Create components (shared) types\n const components: Record<string, IOpenApiMediaTypeSpec> =\n spec.components[key];\n\n const componentInterfaces: Record<string, string> = {};\n const componentSchema: Record<string, string> = {};\n\n const contentKeys = Object.keys(components);\n\n // only need 1 schema so will us the first schema provided\n contentKeys.forEach((contentKey) => {\n /* const schema = (() => {\n switch (key) {\n case \"parameters\":\n return components[contentKey].schema;\n default:\n return components[contentKey];\n }\n })() as IOpenApSchemaSpec; */\n const schema = (\n components[contentKey]?.schema\n ? components[contentKey].schema\n : components[contentKey]\n ) as IOpenApSchemaSpec;\n\n const typeCnt = `${parseSchemaToType(spec, schema, \"\", true, {\n noSharedImport: true,\n useComponentName: [\"parameters\"].includes(key),\n })}`;\n\n if (typeCnt) {\n const parts = contentKey.split(\".\");\n let currentLevel: any = componentInterfaces;\n let currentSchemaLevel: any = componentSchema;\n\n // Navigate or create the nested structure\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n if (i < parts.length - 1) {\n // If it's not the last part, create a nested object if it doesn't exist\n if (!(part in currentLevel)) {\n currentLevel[part] = {}; //<== This rely on js ability to assign value to origianl object by reference, so this assignment will be reflected in componentInterfaces\n currentSchemaLevel[part] = {}; //<== This rely on js ability to assign value to origianl object by reference, so this assignment will be reflected in componentSchema\n }\n currentLevel = currentLevel[part]; //<== This rely on js ability to assign value to origianl object by reference, so this assignment will be reflected in componentInterfaces\n currentSchemaLevel = currentSchemaLevel[part]; //<== This rely on js ability to assign value to origianl object by reference, so this assignment will be reflected in componentSchema\n } else {\n // This is the last part, assign the original schema value\n currentLevel[part] = typeCnt; //<== This rely on js ability to assign value to origianl object by reference, so this assignment will be reflected in componentInterfaces\n currentSchemaLevel[part] = schema; //<== This rely on js ability to assign value to origianl object by reference, so this assignment will be reflected in componentSchema\n }\n }\n }\n });\n\n // Generate TypeScript interfaces for each component\n Object.keys(componentInterfaces).forEach((key) => {\n const name = getSharedComponentName(key);\n const cnt = componentInterfaces[key];\n let doc: string = \"\";\n if (\n !config?.types?.doc?.disable &&\n key in components &&\n //@ts-expect-error\n components[key]?.description\n ) {\n doc =\n \" * \" +\n //@ts-expect-error\n components[key].description\n .split(\"\\n\")\n .filter((line: string) => line.trim() !== \"\")\n .join(` \\n *${\" \".repeat(1)}`);\n }\n\n sharedTypesFileContent[key] =\n (sharedTypesFileContent[key] ?? \"\") +\n (doc ? `/**\\n${doc}\\n */\\n` : \"\") +\n \"export type \" +\n name +\n \" = \" +\n (typeof cnt === \"string\" ? cnt : JSONStringify(cnt)) +\n \";\\n\";\n });\n }\n });\n }\n\n const getBodySchemaType = (requestBody: IOpenApiRequestBodySpec) => {\n let typeCnt = \"\";\n if (requestBody.content) {\n const contentKeys = Object.keys(requestBody.content);\n // only need 1 schema so will us the first schema provided\n if (contentKeys[0] && requestBody.content[contentKeys[0]].schema) {\n typeCnt += `${parseSchemaToType(\n spec,\n requestBody.content[contentKeys[0]].schema as IOpenApSchemaSpec,\n \"\"\n )}`;\n }\n }\n return typeCnt;\n };\n\n const treatEndpointUrl = (endpointUrl: string) => {\n if (\n config?.endpoints?.value?.replaceWords &&\n Array.isArray(config?.endpoints.value.replaceWords)\n ) {\n let newEndpointUrl = endpointUrl;\n config?.endpoints?.value?.replaceWords?.forEach(\n (replaceWord: IConfigReplaceWord, indx) => {\n const regexp = new RegExp(replaceWord.replace, \"g\");\n newEndpointUrl = newEndpointUrl.replace(\n regexp,\n replaceWord.with || \"\"\n );\n }\n );\n return newEndpointUrl;\n } else {\n return endpointUrl;\n }\n };\n\n // Helper function to check if an endpoint should be excluded\n const shouldExcludeEndpoint = (\n path: string,\n method: Method,\n tags: string[] = []\n ) => {\n const excludeConfig = config?.endpoints?.exclude;\n const includeConfig = config?.endpoints?.include;\n\n // If include is specified\n if (includeConfig) {\n // Check if endpoint matches include criteria\n const matchesIncludeTags =\n includeConfig.tags && includeConfig.tags.length > 0\n ? tags.some((tag) => includeConfig.tags!.includes(tag))\n : true;\n\n const matchesIncludeEndpoints =\n includeConfig.endpoints && includeConfig.endpoints.length > 0\n ? includeConfig.endpoints.some((endpoint) => {\n const methodMatches =\n !endpoint.method ||\n endpoint.method.toLowerCase() === method.toLowerCase();\n\n // Use exact path match if path is provided\n if (endpoint.path) {\n return path === endpoint.path && methodMatches;\n }\n // Use regex match if regex is provided\n else if (endpoint.regex) {\n const pathRegex = new RegExp(endpoint.regex);\n return pathRegex.test(path) && methodMatches;\n }\n\n return false;\n })\n : true;\n\n // If include is specified but endpoint doesn't match, exclude it\n if (!matchesIncludeTags || !matchesIncludeEndpoints) {\n return true;\n }\n }\n\n // Check exclude criteria, it takes precedence over include\n if (excludeConfig) {\n // Check tags exclusion\n if (excludeConfig.tags && excludeConfig.tags.length > 0) {\n const hasExcludedTag = tags.some((tag) =>\n excludeConfig.tags!.includes(tag)\n );\n if (hasExcludedTag) return true;\n }\n\n // Check endpoint exclusion\n if (excludeConfig.endpoints && excludeConfig.endpoints.length > 0) {\n const matchesExcludedEndpoint = excludeConfig.endpoints.some(\n (endpoint) => {\n const methodMatches =\n !endpoint.method ||\n endpoint.method.toLowerCase() === method.toLowerCase();\n\n // Use exact path match if path is provided\n if (endpoint.path) {\n return path === endpoint.path && methodMatches;\n }\n\n // Use regex match if regex is provided\n else if (endpoint.regex) {\n const pathRegex = new RegExp(endpoint.regex);\n return pathRegex.test(path) && methodMatches;\n }\n\n return false;\n }\n );\n if (matchesExcludedEndpoint) return true;\n }\n }\n\n return false;\n };\n\n Object.keys(spec.paths || {}).forEach((endpointPath) => {\n const endpointSpec = spec.paths[endpointPath];\n\n const endpointMethods = Object.keys(endpointSpec);\n endpointMethods.forEach((_method) => {\n const method = _method as Method;\n const endpoint = getEndpointDetails(endpointPath, method);\n\n // Get endpoint tags for filtering\n const endpointTags = endpointSpec[method]?.tags || [];\n\n // Check if this endpoint should be excluded\n if (shouldExcludeEndpoint(endpointPath, method, endpointTags)) {\n return; // Skip this endpoint\n }\n\n // Determine folder name for this endpoint\n const enSpec = endpointSpec[method];\n const folderName = getFolderName({\n method,\n path: endpointPath,\n summary: enSpec?.summary,\n operationId: enSpec?.operationId,\n tags: endpointTags,\n parameters: enSpec?.parameters,\n requestBody: enSpec?.requestBody,\n responses: enSpec?.responses,\n });\n\n // Initialize folder group if it doesn't exist\n if (!folderGroups[folderName]) {\n folderGroups[folderName] = {\n endpoints: \"\",\n types: \"\",\n };\n }\n\n const endpointUrlTxt =\n (config?.endpoints?.value?.includeServer ? serverUrl : \"\") +\n endpoint.pathParts\n .map((part) => {\n // check if part is a variable\n if (part[0] === \"{\" && part[part.length - 1] === \"}\") {\n const s = part.replace(/{/, \"\").replace(/}/, \"\");\n part = `\\${${s}}`;\n }\n\n //api/<userId>\n else if (part[0] === \"<\" && part[part.length - 1] === \">\") {\n const s = part.replace(/</, \"\").replace(/>/, \"\");\n part = `\\${${s}}`;\n }\n\n //api/:userId\n else if (part[0] === \":\") {\n const s = part.replace(/:/, \"\");\n part = `\\${${s}}`;\n }\n return part;\n })\n .join(\"/\");\n\n let endpointUrl = `\"${endpointUrlTxt}\"`;\n if (endpoint.variables.length > 0) {\n const params = endpoint.variables.map((v) => `${v}:string`).join(\",\");\n endpointUrl = `(${params})=> \\`${endpointUrlTxt}\\``;\n }\n\n //treat endpoint url\n endpointUrl = treatEndpointUrl(endpointUrl);\n\n const eSpec = endpointSpec[method];\n\n let queryTypeCnt = \"\";\n\n if (eSpec?.parameters) {\n // create query parameters types\n const parameters: IOpenApiParameterSpec[] = eSpec?.parameters;\n parameters.forEach((param, i) => {\n if (param.$ref || (param.in === \"query\" && param.name)) {\n queryTypeCnt += `${parseSchemaToType(\n spec,\n param.$ref ? (param as any) : (param.schema as any),\n param.name || \"\",\n param.required\n )}`;\n }\n });\n\n if (queryTypeCnt) {\n queryTypeCnt = `{\\n${queryTypeCnt}}`;\n let name = `${endpoint.name}Query`;\n\n // Use operationId if configured and available\n if (config?.types?.name?.useOperationId && eSpec?.operationId) {\n name = `${eSpec.operationId}Query`;\n }\n name = capitalize(`${typePrefix}${name}`);\n\n if (config?.types?.name?.format) {\n const formattedName = config?.types.name.format(\n \"endpoint\",\n {\n code: \"\",\n type: \"query\",\n method,\n path: endpointPath,\n summary: eSpec?.summary,\n operationId: eSpec?.operationId,\n },\n name\n );\n if (formattedName) name = `${typePrefix}${formattedName}`;\n }\n const typeContent = `export type ${name} = ${queryTypeCnt};\\n`;\n if (config?.folderSplit) {\n folderGroups[folderName].types += typeContent;\n } else {\n typesFileContent += typeContent;\n }\n }\n }\n\n const requestBody: IOpenApiRequestBodySpec = eSpec?.requestBody;\n let dtoTypeCnt = \"\";\n if (requestBody) {\n //create requestBody types\n dtoTypeCnt = getBodySchemaType(requestBody);\n\n if (dtoTypeCnt) {\n let name = `${endpoint.name}DTO`;\n\n // Use operationId if configured and available\n if (config?.types?.name?.useOperationId && eSpec?.operationId) {\n name = `${eSpec.operationId}DTO`;\n }\n\n name = capitalize(`${typePrefix}${name}`);\n\n if (config?.types?.name?.format) {\n const formattedName = config?.types.name.format(\n \"endpoint\",\n {\n code: \"\",\n type: \"dto\",\n method,\n path: endpointPath,\n summary: eSpec?.summary,\n operationId: eSpec?.operationId,\n },\n name\n );\n if (formattedName) name = `${typePrefix}${formattedName}`;\n }\n const typeContent = `export type ${name} = ${dtoTypeCnt};\\n`;\n if (config?.folderSplit) {\n folderGroups[folderName].types += typeContent;\n } else {\n typesFileContent += typeContent;\n }\n }\n }\n\n const responseTypeObject: Record<string, string> = {};\n\n let responseTypeCnt = \"\";\n if (eSpec?.responses) {\n // create request response types\n const responses: IOpenApiResponseSpec = eSpec?.responses;\n const resCodes = Object.keys(responses);\n resCodes.forEach((code) => {\n responseTypeCnt = getBodySchemaType(responses[code]);\n responseTypeObject[code] = responseTypeCnt;\n if (responseTypeCnt) {\n let name = `${endpoint.name}${code}Response`;\n\n // Use operationId if configured and available\n if (config?.types?.name?.useOperationId && eSpec?.operationId) {\n name = `${eSpec.operationId}${code}Response`;\n }\n\n name = capitalize(`${typePrefix}${name}`);\n\n if (config?.types?.name?.format) {\n const formattedName = config?.types.name.format(\n \"endpoint\",\n {\n code,\n type: \"response\",\n method,\n path: endpointPath,\n summary: eSpec?.summary,\n operationId: eSpec?.operationId,\n },\n name\n );\n if (formattedName) name = `${typePrefix}${formattedName}`;\n }\n const typeContent = `export type ${name} = ${responseTypeCnt};\\n`;\n if (config?.folderSplit) {\n folderGroups[folderName].types += typeContent;\n } else {\n typesFileContent += typeContent;\n }\n }\n });\n }\n\n // Function to format security requirements\n const formatSecuritySpec = (\n security: Array<Record<string, string[]>>\n ) => {\n if (!security || !security.length) return \"\";\n\n return security\n .map((securityRequirement) => {\n const requirements = Object.entries(securityRequirement)\n .map(([scheme, scopes]) => {\n let sch = scheme;\n let scopeText = \"\";\n if (Array.isArray(scopes) && scopes.length) {\n scopeText = `\\n - Scopes: [\\`${scopes.join(\"`, `\")}\\`]`;\n sch = `**${sch}**`;\n }\n\n return `\\n - ${sch}${scopeText}`;\n })\n .join(\"\");\n return requirements;\n })\n .join(\"\\n\");\n };\n\n // Get formatted security specification\n const securitySpec = eSpec?.security\n ? formatSecuritySpec(eSpec.security)\n : \"\";\n\n let doc = \"\";\n if (!config?.endpoints?.doc?.disable) {\n let curl = \"\";\n if (config?.endpoints?.doc?.showCurl) {\n // console.log(\"cirl data\", {\n // body: eSpec?.requestBody,\n // bodyContent:\n // eSpec?.requestBody?.content[\"application/json\"]?.schema\n // ?.properties,\n // security: eSpec?.security,\n // });\n const headers: Record<string, string | string[]> = {};\n let body = \"\";\n let extras = \"\";\n\n if (eSpec.requestBody?.content) {\n const contentTypes = Object.keys(eSpec.requestBody.content);\n contentTypes.forEach((contentType) => {\n // console.log(\"requestBody content\", {\n // contentType,\n // schema: eSpec.requestBody.content[contentType].schema,\n // });\n const schema = eSpec.requestBody.content[contentType].schema;\n if (schema) {\n if (Array.isArray(headers[\"Content-type\"])) {\n headers[\"Content-type\"].push(contentType);\n } else {\n headers[\"Content-type\"] = [contentType];\n }\n const schemaType = getSchemaExamples(\n spec,\n schema as IOpenApSchemaSpec\n );\n if (schemaType) body = schemaType;\n }\n });\n }\n\n if (eSpec?.security) {\n eSpec.security.forEach((securityItem: Record<string, string[]>) => {\n Object.keys(securityItem).forEach((security) => {\n const securitySchema: IOpenApiSecuritySchemes[string] =\n spec.components?.securitySchemes?.[security];\n\n if (securitySchema) {\n // headers[\"Authorization\"] = securitySchema;\n if (securitySchema.type === \"mutualTLS\") {\n extras += `\\n--cert client-certificate.crt \\\n--key client-private-key.key \\\n--cacert ca-certificate.crt`;\n } else if (securitySchema.type === \"apiKey\") {\n headers[\n securitySchema?.name || \"X-API-KEY\"\n ] = `{API_KEY_VALUE}`;\n } else {\n headers[\"Authorization\"] = `${\n securitySchema?.scheme === \"basic\" ? \"Basic\" : \"Bearer\"\n } {${\n securitySchema?.scheme === \"basic\" ? \"VALUE\" : \"TOKEN\"\n }}`;\n }\n }\n });\n });\n }\n\n const curlHeaders: Record<string, string> = {};\n Object.keys(headers).forEach((header) => {\n if (Array.isArray(headers[header])) {\n curlHeaders[header] = headers[header].join(\"; \");\n } else {\n curlHeaders[header] = headers[header];\n }\n });\n\n // console.log(\"curlHeaders\", { headers, curlHeaders, body });\n\n curl = `\\n\\`\\`\\`bash \n${CurlGenerator({\n url: serverUrl + endpointPath,\n method: method.toUpperCase() as any,\n headers: curlHeaders,\n body,\n})}${extras}\n\\`\\`\\``;\n }\n\n doc = `/**${eSpec?.description ? `\\n* ${eSpec?.description} ` : \"\"}\n * **Method**: \\`${method.toUpperCase()}\\` \n * **Summary**: ${eSpec?.summary || \"\"} \n * **Tags**: [${eSpec?.tags?.join(\", \") || \"\"}] \n * **OperationId**: ${eSpec?.operationId || \"\"} ${\n queryTypeCnt\n ? `\\n * **Query**: ${renderTypeRefMD(queryTypeCnt)} `\n : \"\"\n }${dtoTypeCnt ? `\\n * **DTO**: ${renderTypeRefMD(dtoTypeCnt)} ` : \"\"}${\n responseTypeCnt\n ? `\\n * **Response**: ${Object.entries(responseTypeObject)\n .map(\n ([code, type]) =>\n `\\n - **${code}**: ${renderTypeRefMD(type, 2)} `\n )\n .join(\"\")}`\n : \"\"\n }${securitySpec ? `\\n * **Security**: ${securitySpec}\\n` : \"\"}${curl}\n */\\n`;\n }\n\n let name =\n config?.endpoints?.name?.useOperationId &&\n eSpec?.operationId?.length > 0\n ? eSpec.operationId\n : `${endpoint.name}`;\n\n if (config?.endpoints?.name?.format) {\n const formattedName = config?.endpoints.name.format(\n {\n method,\n path: endpointPath,\n summary: eSpec?.summary,\n operationId: eSpec?.operationId,\n },\n name\n );\n if (formattedName) name = formattedName;\n }\n\n const content = {\n method: `\"${method}\"`,\n operationId: `\"${eSpec?.operationId}\"`,\n url: endpointUrl,\n tags: eSpec?.tags || [],\n };\n // Add the endpoint url to the specific folder group\n const endpointContent = `${doc}export const ${endpointPrefix}${name} = ${\n config?.endpoints?.value?.type === \"object\"\n ? JSONStringify(content)\n : endpointUrl\n }; \n`;\n\n // Add to folder group if folder splitting is enabled, otherwise add to global content\n if (config?.folderSplit) {\n folderGroups[folderName].endpoints += endpointContent;\n } else {\n endpointsFileContent += endpointContent;\n }\n });\n });\n\n // Write files based on folder splitting configuration\n if (config?.folderSplit) {\n // Write files for each folder group\n for (const [folderName, group] of Object.entries(folderGroups)) {\n if (group.endpoints || group.types) {\n const folderPathForGroup = path.join(folderPath, folderName);\n\n // Write endpoints file\n if (group.endpoints) {\n const endpointsFilePath = path.join(\n rootUsingCwd,\n folderPathForGroup,\n \"endpoints.ts\"\n );\n await fs.promises.mkdir(path.dirname(endpointsFilePath), {\n recursive: true,\n });\n await fs.promises.writeFile(endpointsFilePath, group.endpoints);\n }\n\n // Write types file\n if (group.types) {\n const typesFilePath = path.join(\n rootUsingCwd,\n folderPathForGroup,\n \"types.ts\"\n );\n await fs.promises.mkdir(path.dirname(typesFilePath), {\n recursive: true,\n });\n\n const typesContent =\n Object.values(sharedTypesFileContent).length > 0\n ? `import * as Shared from \"../shared\";\\n\\n${group.types}`\n : group.types;\n\n await fs.promises.writeFile(typesFilePath, typesContent);\n }\n }\n }\n }\n\n if (endpointsFileContent.length > 0) {\n // Original behavior - write to single files\n const endpointsFilePath = path.join(\n rootUsingCwd,\n folderPath,\n \"endpoints.ts\"\n );\n await fs.promises.mkdir(path.dirname(endpointsFilePath), {\n recursive: true,\n });\n await fs.promises.writeFile(endpointsFilePath, endpointsFileContent);\n }\n if (Object.values(sharedTypesFileContent).length > 0) {\n const sharedTypesFilePath = path.join(\n rootUsingCwd,\n folderPath,\n !config?.folderSplit ? \"types\" : \"\",\n \"shared.ts\"\n );\n await fs.promises.mkdir(path.dirname(sharedTypesFilePath), {\n recursive: true,\n });\n await fs.promises.writeFile(\n sharedTypesFilePath,\n Object.values(sharedTypesFileContent).join(\"\\n\")\n );\n }\n\n if (typesFileContent.length > 0) {\n const typesFilePath = path.join(\n rootUsingCwd,\n folderPath,\n \"types\",\n \"index.ts\"\n );\n await fs.promises.mkdir(path.dirname(typesFilePath), { recursive: true });\n await fs.promises.writeFile(\n typesFilePath,\n `${\n Object.values(sharedTypesFileContent).length > 0\n ? `import * as Shared from \"./shared\";\\n\\n`\n : \"\"\n }${typesFileContent}`\n );\n }\n};\nexport default OpenapiSync;\n","import OpenapiSync from \"./Openapi-sync\";\nimport path from \"path\";\nimport fs from \"fs\";\nimport { resetState } from \"./Openapi-sync/state\";\nimport { IConfig } from \"./types\";\n\n// Re-export modules for user consumption\nexport * from \"./types\";\nexport * from \"./helpers\";\nexport * from \"./regex\";\n\nconst rootUsingCwd = process.cwd();\n\nexport const Init = async (options?: { refetchInterval?: number }) => {\n // Load config file\n let configJS;\n // Register TypeScript loader before requiring the file\n try {\n require(\"esbuild-register\");\n } catch (registerError) {\n throw registerError;\n }\n\n const jsConfigPath = path.join(rootUsingCwd, \"openapi.sync.js\");\n const tsConfigPath = path.join(rootUsingCwd, \"openapi.sync.ts\");\n const jsonConfigPath = path.join(rootUsingCwd, \"openapi.sync.json\");\n const configPaths = [jsConfigPath, tsConfigPath, jsonConfigPath];\n try {\n for (const configPath of configPaths) {\n if (fs.existsSync(configPath)) {\n configJS = require(configPath);\n\n if (Object.keys(configJS).length === 1 && configJS.default) {\n configJS = configJS.default;\n }\n }\n }\n } catch (e) {\n console.log(e);\n }\n\n if (typeof configJS === \"function\") {\n configJS = configJS();\n }\n const config: IConfig = configJS;\n\n if (!config) {\n throw new Error(\"No config found\");\n }\n const apiNames = Object.keys(config.api);\n const refetchInterval =\n options &&\n \"refetchInterval\" in options &&\n !isNaN(options?.refetchInterval as number)\n ? options.refetchInterval\n : config.refetchInterval;\n resetState();\n for (let i = 0; i < apiNames.length; i += 1) {\n const apiName = apiNames[i];\n const apiUrl = config.api[apiName];\n\n OpenapiSync(apiUrl, apiName, config, refetchInterval);\n }\n};\n"]}
package/dist/regex.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../regex.ts"],"names":["variableName","variableNameChar"],"mappings":"aAAO,IAAMA,CAAAA,CAAe,6BACfC,CAAAA,CAAmB","file":"regex.js","sourcesContent":["export const variableName = /^[A-Za-z_$][A-Za-z0-9_$]*$/;\nexport const variableNameChar = /[A-Za-z0-9_$]/;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"regex.mjs"}