UNPKG

openapi-ts-mock-generator

Version:
1 lines 5.12 kB
{"version":3,"sources":["../../src/core/config.ts","../../src/core/options.ts"],"sourcesContent":["import { Faker, ko } from \"@faker-js/faker\"\nimport { Options } from \"./types\"\n\n/**\n * 기본 옵션 설정\n */\nexport const defaultOptions: Options = {\n path: \"\",\n arrayMinLength: 1,\n arrayMaxLength: 3,\n includeCodes: undefined,\n baseDir: \"./\",\n specialPath: undefined,\n handlerUrl: \"*\",\n fakerLocale: \"ko\",\n generateTarget: \"api,schema\",\n clear: false,\n // TypeScriptCodeOptions\n isStatic: false,\n isOptional: false,\n}\n\n/**\n * 배열 길이 관련 상수\n */\nexport const ARRAY_MIN_LENGTH = 1\nexport const ARRAY_MAX_LENGTH = 3\n\n/**\n * 문자열 길이 관련 상수\n */\nexport const MIN_STRING_LENGTH = 3\nexport const MAX_STRING_LENGTH = 20\n\n/**\n * 정수 범위 관련 상수\n */\nexport const MIN_INTEGER = 1\nexport const MAX_INTEGER = 100000\n\n/**\n * 소수 범위 관련 상수\n */\nexport const MIN_NUMBER = 0\nexport const MAX_NUMBER = 100\n\n/**\n * 단어 길이 관련 상수\n */\nexport const MIN_WORD_LENGTH = 0\nexport const MAX_WORD_LENGTH = 3\n\n/**\n * Faker 시드값 (일관된 결과를 위함)\n */\nconst FAKER_SEED = 1\n\n/**\n * 전역 Faker 인스턴스\n * 한국어 로케일을 기본으로 설정하고 시드를 고정하여 일관된 결과 제공\n */\nexport const faker = new Faker({\n locale: [ko],\n})\nfaker.seed(FAKER_SEED)\n\n/**\n * 생성된 파일의 상단에 추가되는 주석\n */\nexport const GEN_COMMENT =\n \"/* Do not edit this file. */\\n/* This file generated by openapi-ts-mock-generator. */\\n\\n\"\n","import { Options } from \"./types\"\nimport { defaultOptions } from \"./config\"\n\n/**\n * 사용자 옵션을 기본 옵션과 병합하여 완전한 옵션 객체를 생성\n */\nexport const mergeOptions = (userOptions: Partial<Options>): Options => {\n return {\n ...defaultOptions,\n ...userOptions,\n }\n}\n\n/**\n * CLI에서 받은 원시 옵션을 내부 옵션 형태로 변환\n */\nexport const transformCliOptions = (rawOptions: any): Options => {\n return {\n path: rawOptions.path || defaultOptions.path,\n baseDir: rawOptions.baseDir || defaultOptions.baseDir,\n arrayMinLength: parseInt(rawOptions.arrayMinLength) || defaultOptions.arrayMinLength,\n arrayMaxLength: parseInt(rawOptions.arrayMaxLength) || defaultOptions.arrayMaxLength,\n handlerUrl: rawOptions.handlerUrl || defaultOptions.handlerUrl,\n fakerLocale: rawOptions.locales || defaultOptions.fakerLocale,\n generateTarget: rawOptions.generateTarget || defaultOptions.generateTarget,\n specialPath: rawOptions.specialPath || defaultOptions.specialPath,\n clear: rawOptions.clear || defaultOptions.clear,\n includeCodes: rawOptions.includeCodes\n ? rawOptions.includeCodes\n .toString()\n .split(\",\")\n .map((code: string) => parseInt(code))\n : undefined,\n // TypeScriptCodeOptions\n isStatic: rawOptions.static || defaultOptions.isStatic,\n isOptional: rawOptions.optional || defaultOptions.isOptional,\n }\n}\n\n/**\n * 옵션 유효성 검증\n */\nexport const validateOptions = (options: Options): string[] => {\n const errors: string[] = []\n\n if (!options.path) {\n errors.push(\"path is required\")\n }\n\n if (\n options.arrayMinLength &&\n options.arrayMaxLength &&\n options.arrayMinLength > options.arrayMaxLength\n ) {\n errors.push(\"arrayMinLength should not be greater than arrayMaxLength\")\n }\n\n if (\n options.generateTarget &&\n !options.generateTarget.split(\",\").every((target) => [\"api\", \"schema\"].includes(target.trim()))\n ) {\n errors.push(\"generateTarget should contain only 'api' and/or 'schema'\")\n }\n\n return errors\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA,SAAS,OAAO,UAAU;AAMnB,IAAM,iBAA0B;AAAA,EACrC,MAAM;AAAA,EACN,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,cAAc;AAAA,EACd,SAAS;AAAA,EACT,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,OAAO;AAAA;AAAA,EAEP,UAAU;AAAA,EACV,YAAY;AACd;AAmCA,IAAM,aAAa;AAMZ,IAAM,QAAQ,IAAI,MAAM;AAAA,EAC7B,QAAQ,CAAC,EAAE;AACb,CAAC;AACD,MAAM,KAAK,UAAU;;;AC1Dd,IAAM,eAAe,CAAC,gBAA2C;AACtE,SAAO,kCACF,iBACA;AAEP;AAKO,IAAM,sBAAsB,CAAC,eAA6B;AAC/D,SAAO;AAAA,IACL,MAAM,WAAW,QAAQ,eAAe;AAAA,IACxC,SAAS,WAAW,WAAW,eAAe;AAAA,IAC9C,gBAAgB,SAAS,WAAW,cAAc,KAAK,eAAe;AAAA,IACtE,gBAAgB,SAAS,WAAW,cAAc,KAAK,eAAe;AAAA,IACtE,YAAY,WAAW,cAAc,eAAe;AAAA,IACpD,aAAa,WAAW,WAAW,eAAe;AAAA,IAClD,gBAAgB,WAAW,kBAAkB,eAAe;AAAA,IAC5D,aAAa,WAAW,eAAe,eAAe;AAAA,IACtD,OAAO,WAAW,SAAS,eAAe;AAAA,IAC1C,cAAc,WAAW,eACrB,WAAW,aACR,SAAS,EACT,MAAM,GAAG,EACT,IAAI,CAAC,SAAiB,SAAS,IAAI,CAAC,IACvC;AAAA;AAAA,IAEJ,UAAU,WAAW,UAAU,eAAe;AAAA,IAC9C,YAAY,WAAW,YAAY,eAAe;AAAA,EACpD;AACF;AAKO,IAAM,kBAAkB,CAAC,YAA+B;AAC7D,QAAM,SAAmB,CAAC;AAE1B,MAAI,CAAC,QAAQ,MAAM;AACjB,WAAO,KAAK,kBAAkB;AAAA,EAChC;AAEA,MACE,QAAQ,kBACR,QAAQ,kBACR,QAAQ,iBAAiB,QAAQ,gBACjC;AACA,WAAO,KAAK,0DAA0D;AAAA,EACxE;AAEA,MACE,QAAQ,kBACR,CAAC,QAAQ,eAAe,MAAM,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,QAAQ,EAAE,SAAS,OAAO,KAAK,CAAC,CAAC,GAC9F;AACA,WAAO,KAAK,0DAA0D;AAAA,EACxE;AAEA,SAAO;AACT;","names":[]}