{"version":3,"file":"OpenApiSchemaNamingRule.mjs","sources":["../../../src/utils/internal/OpenApiSchemaNamingRule.ts"],"sourcesContent":["import { OpenApi } from \"../../OpenApi\";\nimport { OpenApiTypeChecker } from \"../OpenApiTypeChecker\";\n\nexport namespace OpenApiSchemaNamingRule {\n  export const getName = (\n    schema: OpenApi.IJsonSchema,\n    union: boolean = false,\n  ): string => {\n    // COALESCE\n    if (OpenApiTypeChecker.isUnknown(schema)) return \"unknown\";\n    else if (OpenApiTypeChecker.isNull(schema)) return \"null\";\n    else if (OpenApiTypeChecker.isOneOf(schema))\n      return schema.oneOf.map((child) => getName(child, true)).join(\" | \");\n    // ATOMICS\n    else if (OpenApiTypeChecker.isConstant(schema))\n      return JSON.stringify(schema.const);\n    else if (OpenApiTypeChecker.isBoolean(schema)) return \"boolean\";\n    else if (OpenApiTypeChecker.isInteger(schema))\n      return joinIntersection(getNameOfInteger(schema), union);\n    else if (OpenApiTypeChecker.isNumber(schema))\n      return joinIntersection(getNameOfNumber(schema), union);\n    else if (OpenApiTypeChecker.isString(schema))\n      return joinIntersection(getNameOfString(schema), union);\n    // INSTANCES\n    else if (OpenApiTypeChecker.isReference(schema))\n      return schema.$ref.split(\"/\").pop() ?? \"unknown\";\n    else if (OpenApiTypeChecker.isObject(schema)) return \"__object\";\n    else if (OpenApiTypeChecker.isArray(schema))\n      return joinIntersection(getNameOfArray(schema), union);\n    else if (OpenApiTypeChecker.isTuple(schema)) return getNameOfTuple(schema);\n    return \"unknown\";\n  };\n\n  const getNameOfInteger = (schema: OpenApi.IJsonSchema.IInteger): string[] => [\n    \"number\",\n    ...(schema.minimum !== undefined\n      ? [\n          schema.exclusiveMinimum\n            ? `tags.ExclusiveMinimum<${schema.minimum}>`\n            : `tags.Minimum<${schema.minimum}>`,\n        ]\n      : []),\n    ...(schema.maximum !== undefined\n      ? [\n          schema.exclusiveMaximum\n            ? `tags.ExclusiveMaximum<${schema.maximum}>`\n            : `tags.Maximum<${schema.maximum}>`,\n        ]\n      : []),\n    ...(schema.multipleOf !== undefined\n      ? [`tags.MultipleOf<${schema.multipleOf}>`]\n      : []),\n  ];\n\n  const getNameOfNumber = (schema: OpenApi.IJsonSchema.INumber): string[] => [\n    \"number\",\n    ...(schema.minimum !== undefined\n      ? [\n          schema.exclusiveMinimum\n            ? `tags.ExclusiveMinimum<${schema.minimum}>`\n            : `tags.Minimum<${schema.minimum}>`,\n        ]\n      : []),\n    ...(schema.maximum !== undefined\n      ? [\n          schema.exclusiveMaximum\n            ? `tags.ExclusiveMaximum<${schema.maximum}>`\n            : `tags.Maximum<${schema.maximum}>`,\n        ]\n      : []),\n    ...(schema.multipleOf !== undefined\n      ? [`tags.MultipleOf<${schema.multipleOf}>`]\n      : []),\n  ];\n\n  const getNameOfString = (schema: OpenApi.IJsonSchema.IString): string[] => [\n    \"string\",\n    ...(schema.format !== undefined\n      ? [`tags.Format<${JSON.stringify(schema.format)}>`]\n      : []),\n    ...(schema.pattern !== undefined && schema.format === undefined\n      ? [`tags.Pattern<${JSON.stringify(schema.pattern)}>`]\n      : []),\n    ...(schema.contentMediaType !== undefined\n      ? [`tags.ContentMediaType<${JSON.stringify(schema.contentMediaType)}>`]\n      : []),\n    ...(schema.minLength !== undefined\n      ? [`tags.MinLength<${schema.minLength}>`]\n      : []),\n    ...(schema.maxLength !== undefined\n      ? [`tags.MaxLength<${schema.maxLength}>`]\n      : []),\n  ];\n\n  const getNameOfArray = (schema: OpenApi.IJsonSchema.IArray): string[] => [\n    `Array<${getName(schema.items)}>`,\n    ...(schema.minItems !== undefined\n      ? [`tags.MinItems<${schema.minItems}>`]\n      : []),\n    ...(schema.maxItems !== undefined\n      ? [`tags.MaxItems<${schema.maxItems}>`]\n      : []),\n    ...(schema.uniqueItems !== undefined ? [`tags.UniqueItems`] : []),\n  ];\n\n  const getNameOfTuple = (schema: OpenApi.IJsonSchema.ITuple): string =>\n    \"[\" +\n    [\n      ...schema.prefixItems.map((child) => getName(child)),\n      ...(schema.additionalItems === true\n        ? [\"...Array<unknown>\"]\n        : typeof schema.additionalItems === \"object\" &&\n            schema.additionalItems !== null\n          ? [`...Array<${getName(schema.additionalItems)}>`]\n          : []),\n    ].join(\", \") +\n    \"]\";\n\n  const joinIntersection = (elements: string[], union: boolean): string => {\n    const str: string = elements.join(\" & \");\n    return union ? `(${str})` : str;\n  };\n}\n"],"names":["OpenApiSchemaNamingRule","getName","schema","union","OpenApiTypeChecker","isUnknown","isNull","isOneOf","oneOf","map","child","join","isConstant","JSON","stringify","const","isBoolean","isInteger","joinIntersection","getNameOfInteger","isNumber","getNameOfNumber","isString","getNameOfString","isReference","$ref","split","pop","isObject","isArray","getNameOfArray","isTuple","getNameOfTuple","minimum","undefined","exclusiveMinimum","maximum","exclusiveMaximum","multipleOf","format","pattern","contentMediaType","minLength","maxLength","items","minItems","maxItems","uniqueItems","prefixItems","additionalItems","elements","str"],"mappings":";;AAGM,IAAWA;;CAAjB,SAAiBA;IACFA,wBAAAC,UAAU,CACrBC,QACAC,QAAiB;QAGjB,IAAIC,mBAAmBC,UAAUH,SAAS,OAAO,gBAC5C,IAAIE,mBAAmBE,OAAOJ,SAAS,OAAO,aAC9C,IAAIE,mBAAmBG,QAAQL,SAClC,OAAOA,OAAOM,MAAMC,IAAKC,SAAUV,wBAAAC,QAAQS,OAAO,OAAOC,KAAK,aAE3D,IAAIP,mBAAmBQ,WAAWV,SACrC,OAAOW,KAAKC,UAAUZ,OAAOa,aAC1B,IAAIX,mBAAmBY,UAAUd,SAAS,OAAO,gBACjD,IAAIE,mBAAmBa,UAAUf,SACpC,OAAOgB,iBAAiBC,iBAAiBjB,SAASC,aAC/C,IAAIC,mBAAmBgB,SAASlB,SACnC,OAAOgB,iBAAiBG,gBAAgBnB,SAASC,aAC9C,IAAIC,mBAAmBkB,SAASpB,SACnC,OAAOgB,iBAAiBK,gBAAgBrB,SAASC,aAE9C,IAAIC,mBAAmBoB,YAAYtB,SACtC,OAAOA,OAAOuB,KAAKC,MAAM,KAAKC,SAAS,gBACpC,IAAIvB,mBAAmBwB,SAAS1B,SAAS,OAAO,iBAChD,IAAIE,mBAAmByB,QAAQ3B,SAClC,OAAOgB,iBAAiBY,eAAe5B,SAASC,aAC7C,IAAIC,mBAAmB2B,QAAQ7B,SAAS,OAAO8B,eAAe9B;QACnE,OAAO;;IAGT,MAAMiB,mBAAoBjB,UAAmD,EAC3E,aACIA,OAAO+B,YAAYC,YACnB,EACEhC,OAAOiC,mBACH,yBAAyBjC,OAAO+B,aAChC,gBAAgB/B,OAAO+B,eAE7B,OACA/B,OAAOkC,YAAYF,YACnB,EACEhC,OAAOmC,mBACH,yBAAyBnC,OAAOkC,aAChC,gBAAgBlC,OAAOkC,eAE7B,OACAlC,OAAOoC,eAAeJ,YACtB,EAAC,mBAAmBhC,OAAOoC,kBAC3B;IAGN,MAAMjB,kBAAmBnB,UAAkD,EACzE,aACIA,OAAO+B,YAAYC,YACnB,EACEhC,OAAOiC,mBACH,yBAAyBjC,OAAO+B,aAChC,gBAAgB/B,OAAO+B,eAE7B,OACA/B,OAAOkC,YAAYF,YACnB,EACEhC,OAAOmC,mBACH,yBAAyBnC,OAAOkC,aAChC,gBAAgBlC,OAAOkC,eAE7B,OACAlC,OAAOoC,eAAeJ,YACtB,EAAC,mBAAmBhC,OAAOoC,kBAC3B;IAGN,MAAMf,kBAAmBrB,UAAkD,EACzE,aACIA,OAAOqC,WAAWL,YAClB,EAAC,eAAerB,KAAKC,UAAUZ,OAAOqC,eACtC,OACArC,OAAOsC,YAAYN,aAAahC,OAAOqC,WAAWL,YAClD,EAAC,gBAAgBrB,KAAKC,UAAUZ,OAAOsC,gBACvC,OACAtC,OAAOuC,qBAAqBP,YAC5B,EAAC,yBAAyBrB,KAAKC,UAAUZ,OAAOuC,yBAChD,OACAvC,OAAOwC,cAAcR,YACrB,EAAC,kBAAkBhC,OAAOwC,iBAC1B,OACAxC,OAAOyC,cAAcT,YACrB,EAAC,kBAAkBhC,OAAOyC,iBAC1B;IAGN,MAAMb,iBAAkB5B,UAAiD,EACvE,SAASF,wBAAAC,QAAQC,OAAO0C,cACpB1C,OAAO2C,aAAaX,YACpB,EAAC,iBAAiBhC,OAAO2C,gBACzB,OACA3C,OAAO4C,aAAaZ,YACpB,EAAC,iBAAiBhC,OAAO4C,gBACzB,OACA5C,OAAO6C,gBAAgBb,YAAY,EAAC,uBAAsB;IAGhE,MAAMF,iBAAkB9B,UACtB,MACA,KACKA,OAAO8C,YAAYvC,IAAKC,SAAUV,wBAAAC,QAAQS,YACzCR,OAAO+C,oBAAoB,OAC3B,EAAC,+BACM/C,OAAO+C,oBAAoB,YAChC/C,OAAO+C,oBAAoB,OAC3B,EAAC,YAAYjD,wBAAAC,QAAQC,OAAO+C,wBAC5B,KACNtC,KAAK,QACP;IAEF,MAAMO,mBAAmB,CAACgC,UAAoB/C;QAC5C,MAAMgD,MAAcD,SAASvC,KAAK;QAClC,OAAOR,QAAQ,IAAIgD,SAASA;;AAE/B,EAvHD,CAAiBnD,4BAAAA,0BAAuB,CAAA;;"}