UNPKG

@samchon/openapi

Version:

OpenAPI definitions and converters for 'typia' and 'nestia'.

1 lines 7.17 kB
{"version":3,"file":"HttpMigrateRouteAccessor.mjs","sources":["../../../src/composers/migrate/HttpMigrateRouteAccessor.ts"],"sourcesContent":["import { IHttpMigrateRoute } from \"../../structures/IHttpMigrateRoute\";\nimport { EndpointUtil } from \"../../utils/EndpointUtil\";\nimport { Escaper } from \"../../utils/Escaper\";\nimport { MapUtil } from \"../../utils/MapUtil\";\n\nexport namespace HttpMigrateRouteAccessor {\n export const overwrite = (routes: IHttpMigrateRoute[]): void => {\n const predefined: Map<string, number> = getPredefinedAccessors(routes);\n const dict: Map<string, IElement> = collect((op) =>\n op.emendedPath\n .split(\"/\")\n .filter((str) => !!str.length && str[0] !== \":\")\n .map(EndpointUtil.normalize)\n .map((str) => (Escaper.variable(str) ? str : `_${str}`)),\n )(routes) as Map<string, IElement>;\n\n for (const props of dict.values())\n props.entries.forEach((entry, i) => {\n entry.alias = EndpointUtil.escapeDuplicate(\n [\n ...props.children,\n ...props.entries.filter((_, j) => i !== j).map((e) => e.alias),\n ].map(EndpointUtil.normalize),\n )(EndpointUtil.normalize(entry.alias));\n\n const parameters: { name: string; key: string }[] = [\n ...entry.route.parameters,\n ...(entry.route.body ? [entry.route.body] : []),\n ...(entry.route.headers ? [entry.route.headers] : []),\n ...(entry.route.query ? [entry.route.query] : []),\n ];\n parameters.forEach(\n (p, i) =>\n (p.key = EndpointUtil.escapeDuplicate([\n \"connection\",\n entry.alias,\n ...parameters.filter((_, j) => i !== j).map((y) => y.key),\n ])(p.key)),\n );\n\n const accessor: string[] | undefined =\n entry.route.operation()[\"x-samchon-accessor\"];\n if (accessor !== undefined && predefined.get(accessor.join(\".\")) === 1)\n entry.route.accessor = accessor;\n else entry.route.accessor = [...props.namespace, entry.alias];\n });\n };\n\n const collect =\n (getter: (r: IHttpMigrateRoute) => string[]) =>\n (routes: IHttpMigrateRoute[]): Map<string, IElement> => {\n const dict: Map<string, IElement> = new Map();\n for (const r of routes) {\n const namespace: string[] = getter(r);\n let last: IElement = MapUtil.take(dict)(namespace.join(\".\"))(() => ({\n namespace,\n children: new Set(),\n entries: [],\n }));\n last.entries.push({\n route: r,\n alias: getName(r),\n });\n namespace.slice(0, -1).forEach((_i, i, array) => {\n const partial: string[] = namespace.slice(0, array.length - i);\n const element: IElement = MapUtil.take(dict)(partial.join(\".\"))(\n () => ({\n namespace: partial,\n children: new Set(),\n entries: [],\n }),\n );\n element.children.add(last.namespace.at(-1)!);\n });\n const top = MapUtil.take(dict)(\"\")(() => ({\n namespace: [],\n children: new Set(),\n entries: [],\n }));\n if (namespace.length) top.children.add(namespace[0]);\n }\n return dict;\n };\n\n const getName = (op: IHttpMigrateRoute): string => {\n const method = op.method === \"delete\" ? \"erase\" : op.method;\n if (op.parameters.length === 0) return method;\n return (\n method +\n \"By\" +\n op.parameters.map((p) => EndpointUtil.capitalize(p.key)).join(\"And\")\n );\n };\n\n const getPredefinedAccessors = (\n routes: IHttpMigrateRoute[],\n ): Map<string, number> => {\n const dict: Map<string, number> = new Map();\n for (const r of routes) {\n const accessor = r.operation()[\"x-samchon-accessor\"]?.join(\".\");\n if (accessor === undefined) continue;\n else if (dict.has(accessor)) dict.set(accessor, dict.get(accessor)! + 1);\n else dict.set(accessor, 1);\n }\n return dict;\n };\n\n interface IElement {\n namespace: string[];\n entries: IEntry[];\n children: Set<string>;\n }\n interface IEntry {\n route: IHttpMigrateRoute;\n alias: string;\n }\n}\n"],"names":["HttpMigrateRouteAccessor","overwrite","routes","predefined","getPredefinedAccessors","dict","collect","op","emendedPath","split","filter","str","length","map","EndpointUtil","normalize","Escaper","variable","props","values","entries","forEach","entry","i","alias","escapeDuplicate","children","_","j","e","parameters","route","body","headers","query","p","key","y","accessor","operation","undefined","get","join","namespace","getter","Map","r","last","MapUtil","take","Set","push","getName","slice","_i","array","partial","element","add","at","top","method","capitalize","has","set"],"mappings":"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"}