sonamu 0.5.5 → 0.5.7

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.
Files changed (52) hide show
  1. package/dist/api/decorators.d.ts +1 -0
  2. package/dist/api/decorators.d.ts.map +1 -1
  3. package/dist/api/decorators.js +1 -1
  4. package/dist/api/decorators.js.map +1 -1
  5. package/dist/api/sonamu.d.ts.map +1 -1
  6. package/dist/api/sonamu.js +1 -1
  7. package/dist/api/sonamu.js.map +1 -1
  8. package/dist/bin/build-config.d.ts +4 -0
  9. package/dist/bin/build-config.d.ts.map +1 -1
  10. package/dist/bin/build-config.js +1 -1
  11. package/dist/bin/build-config.js.map +1 -1
  12. package/dist/bin/cli-wrapper.js +1 -1
  13. package/dist/bin/cli-wrapper.js.map +1 -1
  14. package/dist/database/db.d.ts +3 -0
  15. package/dist/database/db.d.ts.map +1 -1
  16. package/dist/database/db.js +1 -1
  17. package/dist/database/db.js.map +1 -1
  18. package/dist/database/puri-wrapper.d.ts +22 -10
  19. package/dist/database/puri-wrapper.d.ts.map +1 -1
  20. package/dist/database/puri-wrapper.js +1 -1
  21. package/dist/database/puri-wrapper.js.map +1 -1
  22. package/dist/database/puri.d.ts +91 -65
  23. package/dist/database/puri.d.ts.map +1 -1
  24. package/dist/database/puri.js +1 -1
  25. package/dist/database/puri.js.map +1 -1
  26. package/dist/database/puri.types.d.ts +28 -42
  27. package/dist/database/puri.types.d.ts.map +1 -1
  28. package/dist/database/transaction-context.d.ts +3 -3
  29. package/dist/database/transaction-context.d.ts.map +1 -1
  30. package/dist/database/transaction-context.js.map +1 -1
  31. package/dist/templates/service.template.d.ts.map +1 -1
  32. package/dist/templates/service.template.js +1 -1
  33. package/dist/templates/service.template.js.map +1 -1
  34. package/dist/types/types.d.ts +1 -1
  35. package/dist/types/types.d.ts.map +1 -1
  36. package/dist/types/types.js.map +1 -1
  37. package/package.json +1 -2
  38. package/src/api/decorators.ts +14 -5
  39. package/src/api/sonamu.ts +21 -20
  40. package/src/bin/build-config.ts +7 -3
  41. package/src/bin/cli-wrapper.ts +31 -12
  42. package/src/database/db.ts +44 -9
  43. package/src/database/puri-wrapper.ts +104 -26
  44. package/src/database/puri.ts +434 -543
  45. package/src/database/puri.types.ts +99 -200
  46. package/src/database/transaction-context.ts +4 -4
  47. package/src/templates/service.template.ts +10 -1
  48. package/src/types/types.ts +1 -1
  49. package/dist/entity/migrator.d.ts +0 -135
  50. package/dist/entity/migrator.d.ts.map +0 -1
  51. package/dist/entity/migrator.js +0 -2
  52. package/dist/entity/migrator.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/templates/service.template.ts"],"sourcesContent":["import inflection from \"inflection\";\nimport _ from \"lodash\";\nimport { TemplateOptions } from \"../types/types\";\nimport { EntityNamesRecord } from \"../entity/entity-manager\";\nimport { ApiParamType, ApiParam } from \"../types/types\";\nimport {\n apiParamTypeToTsType,\n apiParamToTsCode,\n unwrapPromiseOnce,\n zodTypeToTsTypeDef,\n apiParamToTsCodeAsObject,\n} from \"../api/code-converters\";\nimport { ExtendedApi } from \"../api/decorators\";\nimport { Template } from \"./base-template\";\nimport { Sonamu } from \"../api/sonamu\";\n\nexport class Template__service extends Template {\n constructor() {\n super(\"service\");\n }\n\n getTargetAndPath(names: EntityNamesRecord) {\n return {\n target: \":target/src/services\",\n path: `${names.fs}/${names.fs}.service.ts`,\n };\n }\n\n render({ namesRecord }: TemplateOptions[\"service\"], apis: ExtendedApi[]) {\n // 서비스 TypeSource\n const { lines, importKeys } = this.getTypeSource(apis);\n\n // AxiosProgressEvent 있는지 확인\n const hasAxiosProgressEvent = apis.find((api) =>\n (api.options.clients ?? []).includes(\"axios-multipart\")\n );\n\n return {\n ...this.getTargetAndPath(namesRecord),\n body: lines.join(\"\\n\"),\n importKeys: importKeys.filter(\n (key) => [\"ListResult\"].includes(key) === false\n ),\n customHeaders: [\n `import { z } from 'zod';`,\n `import qs from \"qs\";`,\n `import useSWR, { SWRResponse } from \"swr\";`,\n `import { fetch, ListResult, SWRError, SwrOptions, handleConditional, swrPostFetcher, EventHandlers, SSEStreamOptions, useSSEStream } from '../sonamu.shared';`,\n ...(hasAxiosProgressEvent\n ? [`import { AxiosProgressEvent } from 'axios';`]\n : []),\n ],\n };\n }\n\n getTypeSource(apis: ExtendedApi[]): {\n lines: string[];\n importKeys: string[];\n } {\n const importKeys: string[] = [];\n\n // 제네릭에서 선언한 타입, importKeys에서 제외 필요\n let typeParamNames: string[] = [];\n\n const groups = _.groupBy(apis, (api) => api.modelName);\n const body = Object.keys(groups)\n .map((modelName) => {\n const methods = groups[modelName];\n const methodCodes = methods\n .map((api) => {\n // 컨텍스트 제외된 파라미터 리스트\n const paramsWithoutContext = api.parameters.filter(\n (param) =>\n !ApiParamType.isContext(param.type) &&\n !ApiParamType.isRefKnex(param.type) &&\n !(param.optional === true && param.name.startsWith(\"_\")) // _로 시작하는 파라미터는 제외\n );\n\n // 파라미터 타입 정의\n const typeParamsDef = api.typeParameters\n .map((typeParam) => {\n return apiParamTypeToTsType(typeParam, importKeys);\n })\n .join(\", \");\n typeParamNames = typeParamNames.concat(\n api.typeParameters.map((typeParam) => typeParam.id)\n );\n\n // 파라미터 정의\n const paramsDef = apiParamToTsCode(\n paramsWithoutContext,\n importKeys\n );\n\n // 파라미터 정의 (객체 형태)\n const paramsDefAsObject = apiParamToTsCodeAsObject(\n paramsWithoutContext,\n importKeys\n );\n\n // 리턴 타입 정의\n const returnTypeDef = apiParamTypeToTsType(\n unwrapPromiseOnce(api.returnType),\n importKeys\n );\n\n // 페이로드 데이터 정의\n const payloadDef = `{ ${paramsWithoutContext\n .map((param) => param.name)\n .join(\", \")} }`;\n\n // 기본 URL\n const apiBaseUrl = `${Sonamu.config.route.prefix}${api.path}`;\n\n return [\n // 클라이언트별로 생성\n ..._.sortBy(api.options.clients, (client) =>\n client === \"swr\" ? 0 : 1\n ).map((client) => {\n switch (client) {\n case \"axios\":\n return this.renderAxios(\n api,\n apiBaseUrl,\n typeParamsDef,\n paramsDef,\n returnTypeDef,\n payloadDef\n );\n case \"axios-multipart\":\n return this.renderAxiosMultipart(\n api,\n apiBaseUrl,\n typeParamsDef,\n paramsDef,\n returnTypeDef,\n paramsWithoutContext\n );\n case \"swr\":\n return this.renderSwr(\n api,\n apiBaseUrl,\n typeParamsDef,\n paramsDef,\n returnTypeDef,\n payloadDef\n );\n case \"window-fetch\":\n return this.renderWindowFetch(\n api,\n apiBaseUrl,\n typeParamsDef,\n paramsDef,\n payloadDef\n );\n default:\n return `// Not supported ${inflection.camelize(client, true)} yet.`;\n }\n }),\n // 스트리밍인 경우\n ...(api.streamOptions\n ? [this.renderStream(api, apiBaseUrl, paramsDefAsObject)]\n : []),\n ].join(\"\\n\");\n })\n .join(\"\\n\\n\");\n\n return `export namespace ${modelName.replace(/Model$/, \"Service\").replace(/Frame$/, \"Service\")} {\n${methodCodes}\n}`;\n })\n .join(\"\\n\\n\");\n\n return {\n lines: [body],\n importKeys: _.difference(_.uniq(importKeys), typeParamNames),\n };\n }\n\n renderAxios(\n api: ExtendedApi,\n apiBaseUrl: string,\n typeParamsDef: string,\n paramsDef: string,\n returnTypeDef: string,\n payloadDef: string\n ) {\n const methodNameAxios = api.options.resourceName\n ? \"get\" + inflection.camelize(api.options.resourceName)\n : api.methodName;\n\n if (api.options.httpMethod === \"GET\") {\n return `\nexport async function ${methodNameAxios}${typeParamsDef}(${paramsDef}): Promise<${returnTypeDef}> {\n return fetch({\n method: \"GET\",\n url: \\`${apiBaseUrl}?\\${qs.stringify(${payloadDef})}\\`,\n });\n}\n `.trim();\n } else {\n return `\nexport async function ${methodNameAxios}${typeParamsDef}(${paramsDef}): Promise<${returnTypeDef}> {\n return fetch({\n method: '${api.options.httpMethod}',\n url: \\`${apiBaseUrl}\\`,\n data: ${payloadDef},\n });\n}\n `.trim();\n }\n }\n\n renderAxiosMultipart(\n api: ExtendedApi,\n apiBaseUrl: string,\n typeParamsDef: string,\n paramsDef: string,\n returnTypeDef: string,\n paramsWithoutContext: ApiParam[]\n ) {\n const isMultiple = api.uploadOptions?.mode === \"multiple\";\n const fileParamName = isMultiple ? \"files\" : \"file\";\n const fileParamType = isMultiple ? \"File[]\" : \"File\";\n\n const formDataDef = isMultiple\n ? [\n `${fileParamName}.forEach(f => formData.append(\"${fileParamName}\", f));`,\n ...paramsWithoutContext.map(\n (param) =>\n `formData.append('${param.name}', String(${param.name}));`\n ),\n ].join(\"\\n\")\n : [\n `formData.append(\"${fileParamName}\", ${fileParamName});`,\n ...paramsWithoutContext.map(\n (param) =>\n `formData.append('${param.name}', String(${param.name}));`\n ),\n ].join(\"\\n\");\n\n const paramsDefComma = paramsDef !== \"\" ? \", \" : \"\";\n return `\nexport async function ${api.methodName}${typeParamsDef}(\n ${paramsDef}${paramsDefComma}\n ${fileParamName}: ${fileParamType},\n onUploadProgress?: (pe:AxiosProgressEvent) => void\n ): Promise<${returnTypeDef}> {\n const formData = new FormData();\n ${formDataDef}\n return fetch({\n method: 'POST',\n url: \\`${apiBaseUrl}\\`,\n headers: {\n \"Content-Type\": \"multipart/form-data\",\n },\n onUploadProgress,\n data: formData,\n });\n }\n `.trim();\n }\n\n renderSwr(\n api: ExtendedApi,\n apiBaseUrl: string,\n typeParamsDef: string,\n paramsDef: string,\n returnTypeDef: string,\n payloadDef: string\n ) {\n const methodNameSwr = api.options.resourceName\n ? \"use\" + inflection.camelize(api.options.resourceName)\n : \"use\" + inflection.camelize(api.methodName);\n return ` export function ${inflection.camelize(\n methodNameSwr,\n true\n )}${typeParamsDef}(${[paramsDef, \"swrOptions?: SwrOptions\"]\n .filter((p) => p !== \"\")\n .join(\",\")}, ): SWRResponse<${returnTypeDef}, SWRError> {\n return useSWR(handleConditional([\n \\`${apiBaseUrl}\\`,\n ${payloadDef},\n ], swrOptions?.conditional)${\n api.options.httpMethod === \"POST\" ? \", swrPostFetcher\" : \"\"\n });\n }`;\n }\n\n renderWindowFetch(\n api: ExtendedApi,\n apiBaseUrl: string,\n typeParamsDef: string,\n paramsDef: string,\n payloadDef: string\n ) {\n return `\nexport async function ${api.methodName}${typeParamsDef}(${paramsDef}): Promise<Response> {\n return window.fetch(\\`${apiBaseUrl}?\\${qs.stringify(${payloadDef})}\\`);\n}\n `.trim();\n }\n\n renderStream(\n api: ExtendedApi,\n apiBaseUrl: string,\n paramsDefAsObject: string\n ) {\n if (!api.streamOptions) {\n return \"// streamOptions not found\";\n }\n\n const methodNameStream = api.options.resourceName\n ? \"use\" + inflection.camelize(api.options.resourceName)\n : \"use\" + inflection.camelize(api.methodName);\n const methodNameStreamCamelized = inflection.camelize(\n methodNameStream,\n true\n );\n\n const eventsTypeDef = zodTypeToTsTypeDef(api.streamOptions.events);\n\n return ` export function ${methodNameStreamCamelized}(\n params: ${paramsDefAsObject},\n handlers: EventHandlers<${eventsTypeDef} & { end?: () => void }>,\n options: SSEStreamOptions) {\n return useSSEStream<${eventsTypeDef}>(\\`${apiBaseUrl}\\`, params, handlers, options);\n }`;\n }\n}\n"],"names":["Template__service","getTargetAndPath","names","target","path","fs","render","apis","namesRecord","getTypeSource","lines","importKeys","hasAxiosProgressEvent","find","api","options","clients","includes","body","join","filter","key","customHeaders","typeParamNames","groups","_","groupBy","modelName","Object","keys","map","methods","methodCodes","paramsWithoutContext","parameters","param","ApiParamType","isContext","type","isRefKnex","optional","name","startsWith","typeParamsDef","typeParameters","typeParam","apiParamTypeToTsType","concat","id","paramsDef","apiParamToTsCode","paramsDefAsObject","apiParamToTsCodeAsObject","returnTypeDef","unwrapPromiseOnce","returnType","payloadDef","apiBaseUrl","Sonamu","config","route","prefix","sortBy","client","renderAxios","renderAxiosMultipart","renderSwr","renderWindowFetch","inflection","camelize","streamOptions","renderStream","replace","difference","uniq","methodNameAxios","resourceName","methodName","httpMethod","trim","isMultiple","uploadOptions","mode","fileParamName","fileParamType","formDataDef","paramsDefComma","methodNameSwr","p","methodNameStream","methodNameStreamCamelized","eventsTypeDef","zodTypeToTsTypeDef","events","Template"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/templates/service.template.ts"],"sourcesContent":["import inflection from \"inflection\";\nimport _ from \"lodash\";\nimport { TemplateOptions } from \"../types/types\";\nimport { EntityNamesRecord } from \"../entity/entity-manager\";\nimport { ApiParamType, ApiParam } from \"../types/types\";\nimport {\n apiParamTypeToTsType,\n apiParamToTsCode,\n unwrapPromiseOnce,\n zodTypeToTsTypeDef,\n apiParamToTsCodeAsObject,\n} from \"../api/code-converters\";\nimport { ExtendedApi } from \"../api/decorators\";\nimport { Template } from \"./base-template\";\nimport { Sonamu } from \"../api/sonamu\";\n\nexport class Template__service extends Template {\n constructor() {\n super(\"service\");\n }\n\n getTargetAndPath(names: EntityNamesRecord) {\n return {\n target: \":target/src/services\",\n path: `${names.fs}/${names.fs}.service.ts`,\n };\n }\n\n render({ namesRecord }: TemplateOptions[\"service\"], apis: ExtendedApi[]) {\n // 서비스 TypeSource\n const { lines, importKeys } = this.getTypeSource(apis);\n\n // AxiosProgressEvent 있는지 확인\n const hasAxiosProgressEvent = apis.find((api) =>\n (api.options.clients ?? []).includes(\"axios-multipart\")\n );\n\n return {\n ...this.getTargetAndPath(namesRecord),\n body: lines.join(\"\\n\"),\n importKeys: importKeys.filter(\n (key) => [\"ListResult\"].includes(key) === false\n ),\n customHeaders: [\n `import { z } from 'zod';`,\n `import qs from \"qs\";`,\n `import useSWR, { SWRResponse } from \"swr\";`,\n `import { fetch, ListResult, SWRError, SwrOptions, handleConditional, swrPostFetcher, EventHandlers, SSEStreamOptions, useSSEStream } from '../sonamu.shared';`,\n ...(hasAxiosProgressEvent\n ? [`import { AxiosProgressEvent } from 'axios';`]\n : []),\n ],\n };\n }\n\n getTypeSource(apis: ExtendedApi[]): {\n lines: string[];\n importKeys: string[];\n } {\n const importKeys: string[] = [];\n\n // 제네릭에서 선언한 타입, importKeys에서 제외 필요\n let typeParamNames: string[] = [];\n\n const groups = _.groupBy(apis, (api) => api.modelName);\n const body = Object.keys(groups)\n .map((modelName) => {\n const methods = groups[modelName];\n const methodCodes = methods\n .map((api) => {\n // 컨텍스트 제외된 파라미터 리스트\n const paramsWithoutContext = api.parameters.filter(\n (param) =>\n !ApiParamType.isContext(param.type) &&\n !ApiParamType.isRefKnex(param.type) &&\n !(param.optional === true && param.name.startsWith(\"_\")) // _로 시작하는 파라미터는 제외\n );\n\n // 파라미터 타입 정의\n const typeParamsDef = api.typeParameters\n .map((typeParam) => {\n return apiParamTypeToTsType(typeParam, importKeys);\n })\n .join(\", \");\n typeParamNames = typeParamNames.concat(\n api.typeParameters.map((typeParam) => typeParam.id)\n );\n\n // 파라미터 정의\n const paramsDef = apiParamToTsCode(\n paramsWithoutContext,\n importKeys\n );\n\n // 파라미터 정의 (객체 형태)\n const paramsDefAsObject = apiParamToTsCodeAsObject(\n paramsWithoutContext,\n importKeys\n );\n\n // 리턴 타입 정의\n const returnTypeDef = apiParamTypeToTsType(\n unwrapPromiseOnce(api.returnType),\n importKeys\n );\n\n // 페이로드 데이터 정의\n const payloadDef = `{ ${paramsWithoutContext\n .map((param) => param.name)\n .join(\", \")} }`;\n\n // 기본 URL\n const apiBaseUrl = `${Sonamu.config.route.prefix}${api.path}`;\n\n return [\n // 클라이언트별로 생성\n ..._.sortBy(api.options.clients, (client) =>\n client === \"swr\" ? 0 : 1\n ).map((client) => {\n switch (client) {\n case \"axios\":\n return this.renderAxios(\n api,\n apiBaseUrl,\n typeParamsDef,\n paramsDef,\n returnTypeDef,\n payloadDef\n );\n case \"axios-multipart\":\n return this.renderAxiosMultipart(\n api,\n apiBaseUrl,\n typeParamsDef,\n paramsDef,\n returnTypeDef,\n paramsWithoutContext\n );\n case \"swr\":\n return this.renderSwr(\n api,\n apiBaseUrl,\n typeParamsDef,\n paramsDef,\n returnTypeDef,\n payloadDef\n );\n case \"window-fetch\":\n return this.renderWindowFetch(\n api,\n apiBaseUrl,\n typeParamsDef,\n paramsDef,\n payloadDef\n );\n default:\n return `// Not supported ${inflection.camelize(client, true)} yet.`;\n }\n }),\n // 스트리밍인 경우\n ...(api.streamOptions\n ? [this.renderStream(api, apiBaseUrl, paramsDefAsObject)]\n : []),\n ].join(\"\\n\");\n })\n .join(\"\\n\\n\");\n\n return `export namespace ${modelName.replace(/Model$/, \"Service\").replace(/Frame$/, \"Service\")} {\n${methodCodes}\n}`;\n })\n .join(\"\\n\\n\");\n\n return {\n lines: [body],\n importKeys: _.difference(_.uniq(importKeys), typeParamNames),\n };\n }\n\n renderAxios(\n api: ExtendedApi,\n apiBaseUrl: string,\n typeParamsDef: string,\n paramsDef: string,\n returnTypeDef: string,\n payloadDef: string\n ) {\n const methodNameAxios = api.options.resourceName\n ? \"get\" + inflection.camelize(api.options.resourceName)\n : api.methodName;\n\n if (api.options.httpMethod === \"GET\") {\n return `\nexport async function ${methodNameAxios}${typeParamsDef}(${paramsDef}): Promise<${returnTypeDef}> {\n return fetch({\n method: \"GET\",\n url: \\`${apiBaseUrl}?\\${qs.stringify(${payloadDef})}\\`,\n ${api.options.timeout ? `signal: AbortSignal.timeout(${api.options.timeout}),` : \"\"}\n });\n}\n `.trim();\n } else {\n return `\nexport async function ${methodNameAxios}${typeParamsDef}(${paramsDef}): Promise<${returnTypeDef}> {\n return fetch({\n method: '${api.options.httpMethod}',\n url: \\`${apiBaseUrl}\\`,\n data: ${payloadDef},\n ${api.options.timeout ? `signal: AbortSignal.timeout(${api.options.timeout}),` : \"\"}\n });\n}\n `.trim();\n }\n }\n\n renderAxiosMultipart(\n api: ExtendedApi,\n apiBaseUrl: string,\n typeParamsDef: string,\n paramsDef: string,\n returnTypeDef: string,\n paramsWithoutContext: ApiParam[]\n ) {\n const isMultiple = api.uploadOptions?.mode === \"multiple\";\n const fileParamName = isMultiple ? \"files\" : \"file\";\n const fileParamType = isMultiple ? \"File[]\" : \"File\";\n\n const formDataDef = isMultiple\n ? [\n `${fileParamName}.forEach(f => formData.append(\"${fileParamName}\", f));`,\n ...paramsWithoutContext.map(\n (param) =>\n `formData.append('${param.name}', String(${param.name}));`\n ),\n ].join(\"\\n\")\n : [\n `formData.append(\"${fileParamName}\", ${fileParamName});`,\n ...paramsWithoutContext.map(\n (param) =>\n `formData.append('${param.name}', String(${param.name}));`\n ),\n ].join(\"\\n\");\n\n const paramsDefComma = paramsDef !== \"\" ? \", \" : \"\";\n return `\nexport async function ${api.methodName}${typeParamsDef}(\n ${paramsDef}${paramsDefComma}\n ${fileParamName}: ${fileParamType},\n onUploadProgress?: (pe:AxiosProgressEvent) => void\n ): Promise<${returnTypeDef}> {\n const formData = new FormData();\n ${formDataDef}\n return fetch({\n method: 'POST',\n url: \\`${apiBaseUrl}\\`,\n headers: {\n \"Content-Type\": \"multipart/form-data\",\n },\n onUploadProgress,\n data: formData,\n ${api.options.timeout ? `signal: AbortSignal.timeout(${api.options.timeout}),` : \"\"}\n });\n }\n `.trim();\n }\n\n renderSwr(\n api: ExtendedApi,\n apiBaseUrl: string,\n typeParamsDef: string,\n paramsDef: string,\n returnTypeDef: string,\n payloadDef: string\n ) {\n const methodNameSwr = api.options.resourceName\n ? \"use\" + inflection.camelize(api.options.resourceName)\n : \"use\" + inflection.camelize(api.methodName);\n return ` export function ${inflection.camelize(\n methodNameSwr,\n true\n )}${typeParamsDef}(${[paramsDef, \"swrOptions?: SwrOptions\"]\n .filter((p) => p !== \"\")\n .join(\",\")}, ): SWRResponse<${returnTypeDef}, SWRError> {\n return useSWR(handleConditional([\n \\`${apiBaseUrl}\\`,\n ${payloadDef},\n ], swrOptions?.conditional)${\n api.options.httpMethod === \"POST\" ? \", swrPostFetcher\" : \"\"\n }${\n api.options.timeout ? `, { loadingTimeout: ${api.options.timeout} }` : \"\"\n });\n }`;\n }\n\n renderWindowFetch(\n api: ExtendedApi,\n apiBaseUrl: string,\n typeParamsDef: string,\n paramsDef: string,\n payloadDef: string\n ) {\n return `\nexport async function ${api.methodName}${typeParamsDef}(${paramsDef}): Promise<Response> {\n return window.fetch(\\`${apiBaseUrl}?\\${qs.stringify(${payloadDef})}\\`${\n api.options.timeout\n ? `, { signal: AbortSignal.timeout(${api.options.timeout}) }`\n : \"\"\n });\n}\n `.trim();\n }\n\n renderStream(\n api: ExtendedApi,\n apiBaseUrl: string,\n paramsDefAsObject: string\n ) {\n if (!api.streamOptions) {\n return \"// streamOptions not found\";\n }\n\n const methodNameStream = api.options.resourceName\n ? \"use\" + inflection.camelize(api.options.resourceName)\n : \"use\" + inflection.camelize(api.methodName);\n const methodNameStreamCamelized = inflection.camelize(\n methodNameStream,\n true\n );\n\n const eventsTypeDef = zodTypeToTsTypeDef(api.streamOptions.events);\n\n return ` export function ${methodNameStreamCamelized}(\n params: ${paramsDefAsObject},\n handlers: EventHandlers<${eventsTypeDef} & { end?: () => void }>,\n options: SSEStreamOptions) {\n return useSSEStream<${eventsTypeDef}>(\\`${apiBaseUrl}\\`, params, handlers, options);\n }`;\n }\n}\n"],"names":["Template__service","getTargetAndPath","names","target","path","fs","render","apis","namesRecord","getTypeSource","lines","importKeys","hasAxiosProgressEvent","find","api","options","clients","includes","body","join","filter","key","customHeaders","typeParamNames","groups","_","groupBy","modelName","Object","keys","map","methods","methodCodes","paramsWithoutContext","parameters","param","ApiParamType","isContext","type","isRefKnex","optional","name","startsWith","typeParamsDef","typeParameters","typeParam","apiParamTypeToTsType","concat","id","paramsDef","apiParamToTsCode","paramsDefAsObject","apiParamToTsCodeAsObject","returnTypeDef","unwrapPromiseOnce","returnType","payloadDef","apiBaseUrl","Sonamu","config","route","prefix","sortBy","client","renderAxios","renderAxiosMultipart","renderSwr","renderWindowFetch","inflection","camelize","streamOptions","renderStream","replace","difference","uniq","methodNameAxios","resourceName","methodName","httpMethod","timeout","trim","isMultiple","uploadOptions","mode","fileParamName","fileParamType","formDataDef","paramsDefComma","methodNameSwr","p","methodNameStream","methodNameStreamCamelized","eventsTypeDef","zodTypeToTsTypeDef","events","Template"],"mappings":"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"}
@@ -564,7 +564,7 @@ export type ManyToManyBaseSchema<FromIdKey extends string, ToIdKey extends strin
564
564
  [K in `${ToIdKey}_id`]: number;
565
565
  };
566
566
  export type SonamuFastifyConfig = {
567
- contextProvider: (defaultContext: Pick<Context, "request" | "reply" | "headers" | "createSSE"> & AuthContext, request: FastifyRequest, reply: FastifyReply) => Context;
567
+ contextProvider: (defaultContext: Pick<Context, "request" | "reply" | "headers" | "createSSE"> & AuthContext, request: FastifyRequest, reply: FastifyReply) => Context | Promise<Context>;
568
568
  guardHandler: (guard: GuardKey, request: FastifyRequest, api: {
569
569
  typeParameters: ApiParamType.TypeParam[];
570
570
  parameters: ApiParam[];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/types/types.ts"],"sourcesContent":["import type { GuardKey } from \"./../api/decorators\";\nimport type { FastifyCorsOptions } from \"@fastify/cors\";\nimport type { FastifyFormbodyOptions } from \"@fastify/formbody\";\nimport type {\n FastifyInstance,\n FastifyReply,\n FastifyRequest,\n FastifyServerOptions,\n} from \"fastify\";\nimport type { QsPluginOptions } from \"fastify-qs\";\nimport { z } from \"zod\";\nimport type { ApiDecoratorOptions, AuthContext, Context } from \"../api\";\nimport type { FastifyMultipartOptions } from \"@fastify/multipart\";\nimport type { Driver } from \"../file-storage/driver\";\nimport type { SsePluginOptions } from \"fastify-sse-v2/lib/types\";\nimport type { FastifyStaticOptions } from \"@fastify/static\";\nimport { SecureSessionPluginOptions } from \"@fastify/secure-session\";\nimport {\n DeserializeFunction,\n SerializeFunction,\n} from \"@fastify/passport/dist/Authenticator\";\n\n/*\n Enums\n*/\nexport type EnumsLabel<T extends string, L extends \"ko\" | \"en\"> = {\n [key in T]: { [lang in L]: string };\n};\nexport type EnumsLabelKo<T extends string> = EnumsLabel<T, \"ko\">;\n\n/*\n Custom Scalars\n*/\nexport const SQLDateTimeString = z\n .string()\n .regex(/([0-9]{4}-[0-9]{2}-[0-9]{2}( [0-9]{2}:[0-9]{2}:[0-9]{2})*)$/, {\n message: \"잘못된 SQLDate 타입\",\n })\n .min(10)\n .max(19)\n .describe(\"SQLDateTimeString\");\nexport type SQLDateTimeString = z.infer<typeof SQLDateTimeString>;\n\n/*\n Utility Types\n*/\nexport function zArrayable<T extends z.ZodTypeAny>(\n shape: T\n): z.ZodUnion<[T, z.ZodArray<T>]> {\n return z.union([shape, shape.array()]);\n}\nexport type DistributiveOmit<T, K extends keyof any> = T extends any\n ? Omit<T, K>\n : never;\n\n/*\n Model-Defintion\n*/\nexport type CommonProp = {\n name: string;\n nullable?: boolean;\n toFilter?: true;\n desc?: string;\n dbDefault?: string;\n};\nexport type IntegerProp = CommonProp & {\n type: \"integer\";\n unsigned?: true;\n};\nexport type BigIntegerProp = CommonProp & {\n type: \"bigInteger\";\n unsigned?: true;\n};\nexport type TextProp = CommonProp & {\n type: \"text\";\n textType: \"text\" | \"mediumtext\" | \"longtext\";\n};\nexport type StringProp = CommonProp & {\n type: \"string\";\n length: number;\n};\nexport type EnumProp = CommonProp & {\n type: \"enum\";\n length: number;\n id: string;\n};\nexport type FloatProp = CommonProp & {\n type: \"float\";\n unsigned?: true;\n precision: number;\n scale: number;\n};\nexport type DoubleProp = CommonProp & {\n type: \"double\";\n unsigned?: true;\n precision: number;\n scale: number;\n};\nexport type DecimalProp = CommonProp & {\n type: \"decimal\";\n unsigned?: true;\n precision: number;\n scale: number;\n};\nexport type BooleanProp = CommonProp & {\n type: \"boolean\";\n};\nexport type DateProp = CommonProp & {\n type: \"date\";\n};\nexport type DateTimeProp = CommonProp & {\n type: \"datetime\";\n};\nexport type TimeProp = CommonProp & {\n type: \"time\";\n};\nexport type TimestampProp = CommonProp & {\n type: \"timestamp\";\n};\nexport type JsonProp = CommonProp & {\n type: \"json\";\n id: string;\n};\nexport type UuidProp = CommonProp & {\n type: \"uuid\";\n};\nexport type VirtualProp = CommonProp & {\n type: \"virtual\";\n id: string;\n};\n\nexport type RelationType =\n | \"HasMany\"\n | \"BelongsToOne\"\n | \"ManyToMany\"\n | \"OneToOne\";\nexport type RelationOn =\n | \"CASCADE\"\n | \"SET NULL\"\n | \"NO ACTION\"\n | \"SET DEFAULT\"\n | \"RESTRICT\";\ntype _RelationProp = {\n type: \"relation\";\n name: string;\n with: string;\n nullable?: boolean; // DEFAULT: false\n toFilter?: true; // DEFAULT: false\n desc?: string;\n};\nexport type OneToOneRelationProp = _RelationProp & {\n relationType: \"OneToOne\";\n customJoinClause?: string;\n} & (\n | {\n hasJoinColumn: true;\n useConstraint?: boolean; // DEFAULT: true\n onUpdate?: RelationOn; // DEFAULT: RESTRICT\n onDelete?: RelationOn; // DEFAULT: RESTRICT\n }\n | {\n hasJoinColumn: false;\n }\n );\nexport type BelongsToOneRelationProp = _RelationProp & {\n relationType: \"BelongsToOne\";\n customJoinClause?: string;\n useConstraint?: boolean; // DEFAULT: true\n onUpdate?: RelationOn; // DEFAULT: RESTRICT\n onDelete?: RelationOn; // DEFAULT: RESTRICT\n};\nexport type HasManyRelationProp = _RelationProp & {\n relationType: \"HasMany\";\n joinColumn: string;\n fromColumn?: string;\n};\nexport type ManyToManyRelationProp = _RelationProp & {\n relationType: \"ManyToMany\";\n joinTable: `${string}__${string}`;\n onUpdate: RelationOn;\n onDelete: RelationOn;\n};\nexport type RelationProp =\n | OneToOneRelationProp\n | BelongsToOneRelationProp\n | HasManyRelationProp\n | ManyToManyRelationProp;\n\nexport type EntityProp =\n | IntegerProp\n | BigIntegerProp\n | TextProp\n | StringProp\n | FloatProp\n | DoubleProp\n | DecimalProp\n | BooleanProp\n | DateProp\n | DateTimeProp\n | TimeProp\n | TimestampProp\n | JsonProp\n | UuidProp\n | EnumProp\n | VirtualProp\n | RelationProp;\n\nexport type EntityIndex = {\n type: \"index\" | \"unique\" | \"fulltext\";\n columns: string[];\n name?: string;\n parser?: \"built-in\" | \"ngram\";\n};\nexport type EntityJson = {\n id: string;\n parentId?: string;\n table: string;\n title?: string;\n props: EntityProp[];\n indexes: EntityIndex[];\n subsets: {\n [subset: string]: string[];\n };\n enums: {\n [enumId: string]: {\n [key: string]: string;\n };\n };\n};\nexport type EntitySubsetRow = {\n field: string;\n has: {\n [key: string]: boolean;\n };\n children: EntitySubsetRow[];\n prefixes: string[];\n relationEntity?: string;\n isOpen?: boolean;\n};\nexport type FlattenSubsetRow = Omit<EntitySubsetRow, \"children\">;\n\n// SMD Legacy\nexport type SMDInput<T extends string> = {\n id: string;\n parentId?: string;\n table?: string;\n title?: string;\n props?: EntityProp[];\n indexes?: EntityIndex[];\n subsets?: {\n [subset: string]: T[];\n };\n};\n\n/*\n PropNode\n*/\n\nexport type EntityPropNode =\n | {\n nodeType: \"plain\";\n prop: EntityProp;\n }\n | {\n nodeType: \"object\" | \"array\";\n prop?: EntityProp;\n children: EntityPropNode[];\n };\n\n/*\n Prop Type Guards\n*/\nexport function isIntegerProp(p: any): p is IntegerProp {\n return p?.type === \"integer\";\n}\nexport function isBigIntegerProp(p: any): p is BigIntegerProp {\n return p?.type === \"bigInteger\";\n}\nexport function isTextProp(p: any): p is TextProp {\n return p?.type === \"text\";\n}\nexport function isStringProp(p: any): p is StringProp {\n return p?.type === \"string\";\n}\nexport function isEnumProp(p: any): p is EnumProp {\n return p?.type === \"enum\";\n}\nexport function isFloatProp(p: any): p is FloatProp {\n return p?.type === \"float\";\n}\nexport function isDoubleProp(p: any): p is DoubleProp {\n return p?.type === \"double\";\n}\nexport function isDecimalProp(p: any): p is DecimalProp {\n return p?.type === \"decimal\";\n}\nexport function isBooleanProp(p: any): p is BooleanProp {\n return p?.type === \"boolean\";\n}\nexport function isDateProp(p: any): p is DateProp {\n return p?.type === \"date\";\n}\nexport function isDateTimeProp(p: any): p is DateTimeProp {\n return p?.type === \"datetime\";\n}\nexport function isTimeProp(p: any): p is TimeProp {\n return p?.type === \"time\";\n}\nexport function isTimestampProp(p: any): p is TimestampProp {\n return p?.type === \"timestamp\";\n}\nexport function isJsonProp(p: any): p is JsonProp {\n return p?.type === \"json\";\n}\nexport function isUuidProp(p: any): p is UuidProp {\n return p?.type === \"uuid\";\n}\nexport function isVirtualProp(p: any): p is VirtualProp {\n return p?.type === \"virtual\";\n}\nexport function isRelationProp(p: any): p is RelationProp {\n return p?.type === \"relation\";\n}\nexport function isOneToOneRelationProp(p: any): p is OneToOneRelationProp {\n return p?.relationType === \"OneToOne\";\n}\nexport function isBelongsToOneRelationProp(\n p: any\n): p is BelongsToOneRelationProp {\n return p?.relationType === \"BelongsToOne\";\n}\nexport function isHasManyRelationProp(p: any): p is HasManyRelationProp {\n return p?.relationType === \"HasMany\";\n}\nexport function isManyToManyRelationProp(p: any): p is ManyToManyRelationProp {\n return p?.relationType === \"ManyToMany\";\n}\n\ntype JoinClause =\n | {\n from: string;\n to: string;\n }\n | {\n custom: string;\n };\nexport function isCustomJoinClause(p: any): p is { custom: string } {\n return p?.custom;\n}\n\n/* 서브셋 */\n// type SubsetLoader = {\n// as: string;\n// table: string;\n// manyJoin: {\n// fromTable: string;\n// fromCol: string;\n// idField: string;\n// toTable: string;\n// toCol: string;\n// through?: {\n// table: string;\n// fromCol: string;\n// toCol: string;\n// };\n// };\n// oneJoins: ({\n// as: string;\n// join: \"inner\" | \"outer\";\n// table: string;\n// } & JoinClause)[];\n// select: (string | Knex.Raw)[];\n// loaders?: SubsetLoader[];\n// };\n// export type SubsetQuery = {\n// select: (string | Knex.Raw)[];\n// virtual: string[];\n// joins: ({\n// as: string;\n// join: \"inner\" | \"outer\";\n// table: string;\n// } & JoinClause)[];\n// loaders: SubsetLoader[];\n// };\n\ntype SubsetLoader = {\n as: string;\n table: string;\n manyJoin: {\n fromTable: string;\n fromCol: string;\n idField: string;\n toTable: string;\n toCol: string;\n through?: {\n table: string;\n fromCol: string;\n toCol: string;\n };\n };\n oneJoins: ({\n as: string;\n join: \"inner\" | \"outer\";\n table: string;\n } & JoinClause)[];\n select: string[];\n loaders?: SubsetLoader[];\n};\n\nexport type SubsetQuery = {\n select: string[];\n virtual: string[];\n joins: ({\n as: string;\n join: \"inner\" | \"outer\";\n table: string;\n } & JoinClause)[];\n loaders: SubsetLoader[];\n};\n\n/* BaseModel */\nexport const SonamuQueryMode = z.enum([\"both\", \"list\", \"count\"]);\nexport type SonamuQueryMode = z.infer<typeof SonamuQueryMode>;\n\n/* Knex Migration */\nexport type KnexError = {\n code: string;\n errno: number;\n sql: string;\n sqlMessage: string;\n sqlState: string;\n};\nexport function isKnexError(e: any): e is KnexError {\n return e.code && e.sqlMessage && e.sqlState;\n}\n\nexport type KnexColumnType =\n | \"string\"\n | \"text\"\n | \"smalltext\"\n | \"mediumtext\"\n | \"longtext\"\n | \"integer\"\n | \"bigInteger\"\n | \"decimal\"\n | \"timestamp\"\n | \"boolean\"\n | \"foreign\"\n | \"uuid\"\n | \"json\"\n | \"float\"\n | \"date\"\n | \"time\"\n | \"datetime\";\nexport type MigrationColumn = {\n name: string;\n type: KnexColumnType;\n nullable: boolean;\n unsigned?: boolean;\n length?: number;\n defaultTo?: string;\n precision?: number;\n scale?: number;\n};\nexport type MigrationIndex = {\n columns: string[];\n type: \"unique\" | \"index\" | \"fulltext\";\n parser?: \"built-in\" | \"ngram\";\n};\nexport type MigrationForeign = {\n columns: string[];\n to: string;\n onUpdate: RelationOn;\n onDelete: RelationOn;\n};\nexport type MigrationJoinTable = {\n table: string;\n indexes: MigrationIndex[];\n columns: MigrationColumn[];\n foreigns: MigrationForeign[];\n};\nexport type MigrationSet = {\n table: string;\n columns: MigrationColumn[];\n indexes: MigrationIndex[];\n foreigns: MigrationForeign[];\n};\nexport type MigrationSetAndJoinTable = MigrationSet & {\n joinTables: MigrationJoinTable[];\n};\nexport type GenMigrationCode = {\n title: string;\n table: string;\n type: \"normal\" | \"foreign\";\n formatted: string | null;\n};\n\n/* Api */\nexport type ApiParam = {\n name: string;\n type: ApiParamType;\n optional: boolean;\n defaultDef?: string;\n};\nexport namespace ApiParamType {\n export type Object = {\n t: \"object\";\n props: ApiParam[];\n };\n export type Union = {\n t: \"union\";\n types: ApiParamType[];\n };\n export type Intersection = {\n t: \"intersection\";\n types: ApiParamType[];\n };\n export type StringLiteral = {\n t: \"string-literal\";\n value: string;\n };\n export type NumericLiteral = {\n t: \"numeric-literal\";\n value: number;\n };\n export type Array = {\n t: \"array\";\n elementsType: ApiParamType;\n };\n export type Ref = {\n t: \"ref\";\n id: string;\n args?: ApiParamType[];\n };\n export type IndexedAccess = {\n t: \"indexed-access\";\n object: ApiParamType;\n index: ApiParamType;\n };\n export type TupleType = {\n t: \"tuple-type\";\n elements: ApiParamType[];\n };\n export type Pick = Ref & {\n t: \"ref\";\n id: \"Pick\";\n };\n export type Omit = Ref & {\n t: \"ref\";\n id: \"Omit\";\n };\n export type Partial = Ref & {\n t: \"ref\";\n id: \"Partial\";\n };\n export type Promise = Ref & {\n t: \"ref\";\n id: \"Promise\";\n };\n export type Context = Ref & {\n t: \"ref\";\n id: \"Context\";\n };\n export type TypeParam = {\n t: \"type-param\";\n id: string;\n constraint?: ApiParamType;\n };\n\n export function isObject(v: any): v is ApiParamType.Object {\n return v?.t === \"object\";\n }\n export function isUnion(v: any): v is ApiParamType.Union {\n return v?.t === \"union\";\n }\n export function isIntersection(v: any): v is ApiParamType.Intersection {\n return v?.t === \"intersection\";\n }\n export function isStringLiteral(v: any): v is ApiParamType.StringLiteral {\n return v?.t === \"string-literal\";\n }\n export function isNumericLiteral(v: any): v is ApiParamType.NumericLiteral {\n return v?.t === \"numeric-literal\";\n }\n export function isArray(v: any): v is ApiParamType.Array {\n return v?.t === \"array\";\n }\n export function isRef(v: any): v is ApiParamType.Ref {\n return v?.t === \"ref\";\n }\n export function isIndexedAccess(v: any): v is ApiParamType.IndexedAccess {\n return v?.t === \"indexed-access\";\n }\n export function isTupleType(v: any): v is ApiParamType.TupleType {\n return v?.t === \"tuple-type\";\n }\n export function isPick(v: any): v is ApiParamType.Pick {\n return v?.t === \"ref\" && v.id === \"Pick\";\n }\n export function isOmit(v: any): v is ApiParamType.Omit {\n return v?.t === \"ref\" && v.id === \"Omit\";\n }\n export function isPartial(v: any): v is ApiParamType.Partial {\n return v?.t === \"ref\" && v.id === \"Partial\";\n }\n export function isPromise(v: any): v is ApiParamType.Promise {\n return v?.t === \"ref\" && v.id === \"Promise\";\n }\n export function isContext(v: any): v is ApiParamType.Context {\n return v?.t === \"ref\" && v.id === \"Context\";\n }\n export function isRefKnex(v: any): v is ApiParamType.Ref {\n return v?.t === \"ref\" && v.id === \"Knex\";\n }\n export function isTypeParam(v: any): v is ApiParamType.TypeParam {\n return v?.t === \"type-param\";\n }\n}\nexport type ApiParamType =\n | \"string\"\n | \"number\"\n | \"boolean\"\n | \"null\"\n | \"undefined\"\n | \"void\"\n | \"any\"\n | \"unknown\"\n | \"true\"\n | \"false\"\n | ApiParamType.StringLiteral\n | ApiParamType.NumericLiteral\n | ApiParamType.Object\n | ApiParamType.Union\n | ApiParamType.Intersection\n | ApiParamType.Array\n | ApiParamType.Ref\n | ApiParamType.IndexedAccess\n | ApiParamType.TypeParam\n | ApiParamType.TupleType;\n\n/* Template */\n// 셀프 참조 타입이므로 Zod 생략하고 직접 정의\nexport const RenderingNode = z.any();\nexport type RenderingNode = {\n name: string;\n label: string;\n renderType:\n | \"string-plain\"\n | \"string-image\"\n | \"string-datetime\"\n | \"string-date\"\n | \"datetime\"\n | \"number-plain\"\n | \"number-id\"\n | \"number-fk_id\"\n | \"boolean\"\n | \"enums\"\n | \"array\"\n | \"array-images\"\n | \"object\"\n | \"object-pick\"\n | \"record\";\n zodType: z.ZodTypeAny;\n element?: RenderingNode;\n children?: RenderingNode[];\n config?: {\n picked: string;\n };\n optional?: boolean;\n nullable?: boolean;\n};\n\nexport const TemplateOptions = z.object({\n entity: z.object({\n entityId: z.string(),\n parentId: z.string().optional(),\n title: z.string(),\n table: z.string().optional(),\n props: z.array(z.object({})).optional(),\n indexes: z.array(z.object({})).optional(),\n subsets: z.object({}).optional(),\n enums: z.object({}).optional(),\n }),\n init_types: z.object({\n entityId: z.string(),\n }),\n generated: z.object({}),\n generated_sso: z.object({}),\n generated_http: z.object({\n entityId: z.string(),\n }),\n model: z.object({\n entityId: z.string(),\n defaultSearchField: z.string(),\n defaultOrderBy: z.string(),\n }),\n model_test: z.object({\n entityId: z.string(),\n }),\n bridge: z.object({\n entityId: z.string(),\n }),\n service: z.object({\n namesRecord: z.object({\n fs: z.string(),\n fsPlural: z.string(),\n camel: z.string(),\n camelPlural: z.string(),\n capital: z.string(),\n capitalPlural: z.string(),\n upper: z.string(),\n constant: z.string(),\n }),\n modelTsPath: z.string(),\n }),\n view_list: z.object({\n entityId: z.string(),\n extra: z.unknown(),\n }),\n view_list_columns: z.object({\n entityId: z.string(),\n columns: z\n .object({\n name: z.string(),\n label: z.string(),\n tc: z.string(),\n })\n .array(),\n columnImports: z.string(),\n }),\n view_search_input: z.object({\n entityId: z.string(),\n }),\n view_form: z.object({\n entityId: z.string(),\n }),\n view_id_all_select: z.object({\n entityId: z.string(),\n }),\n view_id_async_select: z.object({\n entityId: z.string(),\n textField: z.string(),\n }),\n view_enums_select: z.object({\n entityId: z.string(),\n enumId: z.string(),\n }),\n view_enums_dropdown: z.object({\n entityId: z.string(),\n enumId: z.string(),\n }),\n view_enums_buttonset: z.object({\n entityId: z.string(),\n enumId: z.string(),\n }),\n});\nexport type TemplateOptions = z.infer<typeof TemplateOptions>;\n\nexport const TemplateKey = z.enum([\n \"entity\",\n \"init_types\",\n \"generated\",\n \"generated_sso\",\n \"generated_http\",\n \"model\",\n \"model_test\",\n \"bridge\",\n \"service\",\n \"view_list\",\n \"view_list_columns\",\n \"view_search_input\",\n \"view_form\",\n \"view_id_all_select\",\n \"view_id_async_select\",\n \"view_enums_select\",\n \"view_enums_dropdown\",\n \"view_enums_buttonset\",\n]);\nexport type TemplateKey = z.infer<typeof TemplateKey>;\n\nexport const GenerateOptions = z.object({\n overwrite: z.boolean().optional(),\n});\nexport type GenerateOptions = z.infer<typeof GenerateOptions>;\n\nexport const PathAndCode = z.object({\n path: z.string(),\n code: z.string(),\n});\nexport type PathAndCode = z.infer<typeof PathAndCode>;\n\nexport type FixtureSearchOptions = {\n entityId: string;\n field: string;\n value: string;\n searchType: \"equals\" | \"like\";\n};\n\nexport type FixtureRecord = {\n fixtureId: string;\n entityId: string;\n id: number;\n columns: {\n [key: string]: {\n prop: EntityProp;\n value: any;\n };\n };\n fetchedRecords: string[];\n belongsRecords: string[];\n target?: FixtureRecord; // Import 대상 DB 레코드(id가 같은)\n unique?: FixtureRecord; // Import 대상 DB 레코드(unique key가 같은)\n override?: boolean;\n};\n\nexport type FixtureImportResult = {\n entityId: string;\n data: {\n [key: string]: any;\n };\n};\n\nexport type RelationNode = {\n fixtureId: string;\n entityId: string;\n related: Set<string>;\n};\n\nexport interface DatabaseSchemaExtend {}\nexport type ManyToManyBaseSchema<\n FromIdKey extends string,\n ToIdKey extends string,\n> = {\n id: number;\n} & {\n [K in `${FromIdKey}_id`]: number;\n} & {\n [K in `${ToIdKey}_id`]: number;\n};\n\nexport type SonamuFastifyConfig = {\n contextProvider: (\n defaultContext: Pick<\n Context,\n \"request\" | \"reply\" | \"headers\" | \"createSSE\"\n > &\n AuthContext,\n request: FastifyRequest,\n reply: FastifyReply\n ) => Context;\n guardHandler: (\n guard: GuardKey,\n request: FastifyRequest,\n api: {\n typeParameters: ApiParamType.TypeParam[];\n parameters: ApiParam[];\n returnType: ApiParamType;\n modelName: string;\n methodName: string;\n path: string;\n options: ApiDecoratorOptions;\n }\n ) => void;\n cache?: {\n get: (key: string) => Promise<unknown | null>;\n put: (key: string, value: unknown, ttl?: number) => Promise<void>;\n resolveKey: (\n path: string,\n reqBody: {\n [key: string]: unknown;\n }\n ) =>\n | {\n cache: false;\n }\n | {\n cache: true;\n key: string;\n ttl?: number;\n };\n };\n};\n\nexport type SonamuServerOptions = {\n fastify?: FastifyServerOptions;\n\n listen?: {\n port: number;\n host?: string;\n };\n\n plugins?: {\n cors?: boolean | FastifyCorsOptions;\n formbody?: boolean | FastifyFormbodyOptions;\n multipart?: boolean | FastifyMultipartOptions;\n qs?: boolean | QsPluginOptions;\n sse?: boolean | SsePluginOptions;\n static?: boolean | FastifyStaticOptions;\n session?: boolean | SecureSessionPluginOptions;\n\n custom?: (server: FastifyInstance) => void;\n };\n\n auth?:\n | boolean\n | {\n userSerializer: SerializeFunction<unknown, unknown>;\n userDeserializer: DeserializeFunction<unknown, unknown>;\n };\n\n apiConfig: SonamuFastifyConfig;\n\n storage?: Driver;\n\n lifecycle?: {\n onStart?: (server: FastifyInstance) => Promise<void> | void;\n onShutdown?: (server: FastifyInstance) => Promise<void> | void;\n onError?: (\n error: Error,\n request: FastifyRequest,\n reply: FastifyReply\n ) => Promise<void> | void;\n };\n};\n"],"names":["GenerateOptions","PathAndCode","RenderingNode","SQLDateTimeString","SonamuQueryMode","TemplateKey","TemplateOptions","isBelongsToOneRelationProp","isBigIntegerProp","isBooleanProp","isCustomJoinClause","isDateProp","isDateTimeProp","isDecimalProp","isDoubleProp","isEnumProp","isFloatProp","isHasManyRelationProp","isIntegerProp","isJsonProp","isKnexError","isManyToManyRelationProp","isOneToOneRelationProp","isRelationProp","isStringProp","isTextProp","isTimeProp","isTimestampProp","isUuidProp","isVirtualProp","zArrayable","z","string","regex","message","min","max","describe","shape","union","array","p","type","relationType","custom","enum","e","code","sqlMessage","sqlState","ApiParamType","isObject","v","t","isUnion","isIntersection","isStringLiteral","isNumericLiteral","isArray","isRef","isIndexedAccess","isTupleType","isPick","id","isOmit","isPartial","isPromise","isContext","isRefKnex","isTypeParam","any","object","entity","entityId","parentId","optional","title","table","props","indexes","subsets","enums","init_types","generated","generated_sso","generated_http","model","defaultSearchField","defaultOrderBy","model_test","bridge","service","namesRecord","fs","fsPlural","camel","camelPlural","capital","capitalPlural","upper","constant","modelTsPath","view_list","extra","unknown","view_list_columns","columns","name","label","tc","columnImports","view_search_input","view_form","view_id_all_select","view_id_async_select","textField","view_enums_select","enumId","view_enums_dropdown","view_enums_buttonset","overwrite","boolean","path"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/types/types.ts"],"sourcesContent":["import type { GuardKey } from \"./../api/decorators\";\nimport type { FastifyCorsOptions } from \"@fastify/cors\";\nimport type { FastifyFormbodyOptions } from \"@fastify/formbody\";\nimport type {\n FastifyInstance,\n FastifyReply,\n FastifyRequest,\n FastifyServerOptions,\n} from \"fastify\";\nimport type { QsPluginOptions } from \"fastify-qs\";\nimport { z } from \"zod\";\nimport type { ApiDecoratorOptions, AuthContext, Context } from \"../api\";\nimport type { FastifyMultipartOptions } from \"@fastify/multipart\";\nimport type { Driver } from \"../file-storage/driver\";\nimport type { SsePluginOptions } from \"fastify-sse-v2/lib/types\";\nimport type { FastifyStaticOptions } from \"@fastify/static\";\nimport { SecureSessionPluginOptions } from \"@fastify/secure-session\";\nimport {\n DeserializeFunction,\n SerializeFunction,\n} from \"@fastify/passport/dist/Authenticator\";\n\n/*\n Enums\n*/\nexport type EnumsLabel<T extends string, L extends \"ko\" | \"en\"> = {\n [key in T]: { [lang in L]: string };\n};\nexport type EnumsLabelKo<T extends string> = EnumsLabel<T, \"ko\">;\n\n/*\n Custom Scalars\n*/\nexport const SQLDateTimeString = z\n .string()\n .regex(/([0-9]{4}-[0-9]{2}-[0-9]{2}( [0-9]{2}:[0-9]{2}:[0-9]{2})*)$/, {\n message: \"잘못된 SQLDate 타입\",\n })\n .min(10)\n .max(19)\n .describe(\"SQLDateTimeString\");\nexport type SQLDateTimeString = z.infer<typeof SQLDateTimeString>;\n\n/*\n Utility Types\n*/\nexport function zArrayable<T extends z.ZodTypeAny>(\n shape: T\n): z.ZodUnion<[T, z.ZodArray<T>]> {\n return z.union([shape, shape.array()]);\n}\nexport type DistributiveOmit<T, K extends keyof any> = T extends any\n ? Omit<T, K>\n : never;\n\n/*\n Model-Defintion\n*/\nexport type CommonProp = {\n name: string;\n nullable?: boolean;\n toFilter?: true;\n desc?: string;\n dbDefault?: string;\n};\nexport type IntegerProp = CommonProp & {\n type: \"integer\";\n unsigned?: true;\n};\nexport type BigIntegerProp = CommonProp & {\n type: \"bigInteger\";\n unsigned?: true;\n};\nexport type TextProp = CommonProp & {\n type: \"text\";\n textType: \"text\" | \"mediumtext\" | \"longtext\";\n};\nexport type StringProp = CommonProp & {\n type: \"string\";\n length: number;\n};\nexport type EnumProp = CommonProp & {\n type: \"enum\";\n length: number;\n id: string;\n};\nexport type FloatProp = CommonProp & {\n type: \"float\";\n unsigned?: true;\n precision: number;\n scale: number;\n};\nexport type DoubleProp = CommonProp & {\n type: \"double\";\n unsigned?: true;\n precision: number;\n scale: number;\n};\nexport type DecimalProp = CommonProp & {\n type: \"decimal\";\n unsigned?: true;\n precision: number;\n scale: number;\n};\nexport type BooleanProp = CommonProp & {\n type: \"boolean\";\n};\nexport type DateProp = CommonProp & {\n type: \"date\";\n};\nexport type DateTimeProp = CommonProp & {\n type: \"datetime\";\n};\nexport type TimeProp = CommonProp & {\n type: \"time\";\n};\nexport type TimestampProp = CommonProp & {\n type: \"timestamp\";\n};\nexport type JsonProp = CommonProp & {\n type: \"json\";\n id: string;\n};\nexport type UuidProp = CommonProp & {\n type: \"uuid\";\n};\nexport type VirtualProp = CommonProp & {\n type: \"virtual\";\n id: string;\n};\n\nexport type RelationType =\n | \"HasMany\"\n | \"BelongsToOne\"\n | \"ManyToMany\"\n | \"OneToOne\";\nexport type RelationOn =\n | \"CASCADE\"\n | \"SET NULL\"\n | \"NO ACTION\"\n | \"SET DEFAULT\"\n | \"RESTRICT\";\ntype _RelationProp = {\n type: \"relation\";\n name: string;\n with: string;\n nullable?: boolean; // DEFAULT: false\n toFilter?: true; // DEFAULT: false\n desc?: string;\n};\nexport type OneToOneRelationProp = _RelationProp & {\n relationType: \"OneToOne\";\n customJoinClause?: string;\n} & (\n | {\n hasJoinColumn: true;\n useConstraint?: boolean; // DEFAULT: true\n onUpdate?: RelationOn; // DEFAULT: RESTRICT\n onDelete?: RelationOn; // DEFAULT: RESTRICT\n }\n | {\n hasJoinColumn: false;\n }\n );\nexport type BelongsToOneRelationProp = _RelationProp & {\n relationType: \"BelongsToOne\";\n customJoinClause?: string;\n useConstraint?: boolean; // DEFAULT: true\n onUpdate?: RelationOn; // DEFAULT: RESTRICT\n onDelete?: RelationOn; // DEFAULT: RESTRICT\n};\nexport type HasManyRelationProp = _RelationProp & {\n relationType: \"HasMany\";\n joinColumn: string;\n fromColumn?: string;\n};\nexport type ManyToManyRelationProp = _RelationProp & {\n relationType: \"ManyToMany\";\n joinTable: `${string}__${string}`;\n onUpdate: RelationOn;\n onDelete: RelationOn;\n};\nexport type RelationProp =\n | OneToOneRelationProp\n | BelongsToOneRelationProp\n | HasManyRelationProp\n | ManyToManyRelationProp;\n\nexport type EntityProp =\n | IntegerProp\n | BigIntegerProp\n | TextProp\n | StringProp\n | FloatProp\n | DoubleProp\n | DecimalProp\n | BooleanProp\n | DateProp\n | DateTimeProp\n | TimeProp\n | TimestampProp\n | JsonProp\n | UuidProp\n | EnumProp\n | VirtualProp\n | RelationProp;\n\nexport type EntityIndex = {\n type: \"index\" | \"unique\" | \"fulltext\";\n columns: string[];\n name?: string;\n parser?: \"built-in\" | \"ngram\";\n};\nexport type EntityJson = {\n id: string;\n parentId?: string;\n table: string;\n title?: string;\n props: EntityProp[];\n indexes: EntityIndex[];\n subsets: {\n [subset: string]: string[];\n };\n enums: {\n [enumId: string]: {\n [key: string]: string;\n };\n };\n};\nexport type EntitySubsetRow = {\n field: string;\n has: {\n [key: string]: boolean;\n };\n children: EntitySubsetRow[];\n prefixes: string[];\n relationEntity?: string;\n isOpen?: boolean;\n};\nexport type FlattenSubsetRow = Omit<EntitySubsetRow, \"children\">;\n\n// SMD Legacy\nexport type SMDInput<T extends string> = {\n id: string;\n parentId?: string;\n table?: string;\n title?: string;\n props?: EntityProp[];\n indexes?: EntityIndex[];\n subsets?: {\n [subset: string]: T[];\n };\n};\n\n/*\n PropNode\n*/\n\nexport type EntityPropNode =\n | {\n nodeType: \"plain\";\n prop: EntityProp;\n }\n | {\n nodeType: \"object\" | \"array\";\n prop?: EntityProp;\n children: EntityPropNode[];\n };\n\n/*\n Prop Type Guards\n*/\nexport function isIntegerProp(p: any): p is IntegerProp {\n return p?.type === \"integer\";\n}\nexport function isBigIntegerProp(p: any): p is BigIntegerProp {\n return p?.type === \"bigInteger\";\n}\nexport function isTextProp(p: any): p is TextProp {\n return p?.type === \"text\";\n}\nexport function isStringProp(p: any): p is StringProp {\n return p?.type === \"string\";\n}\nexport function isEnumProp(p: any): p is EnumProp {\n return p?.type === \"enum\";\n}\nexport function isFloatProp(p: any): p is FloatProp {\n return p?.type === \"float\";\n}\nexport function isDoubleProp(p: any): p is DoubleProp {\n return p?.type === \"double\";\n}\nexport function isDecimalProp(p: any): p is DecimalProp {\n return p?.type === \"decimal\";\n}\nexport function isBooleanProp(p: any): p is BooleanProp {\n return p?.type === \"boolean\";\n}\nexport function isDateProp(p: any): p is DateProp {\n return p?.type === \"date\";\n}\nexport function isDateTimeProp(p: any): p is DateTimeProp {\n return p?.type === \"datetime\";\n}\nexport function isTimeProp(p: any): p is TimeProp {\n return p?.type === \"time\";\n}\nexport function isTimestampProp(p: any): p is TimestampProp {\n return p?.type === \"timestamp\";\n}\nexport function isJsonProp(p: any): p is JsonProp {\n return p?.type === \"json\";\n}\nexport function isUuidProp(p: any): p is UuidProp {\n return p?.type === \"uuid\";\n}\nexport function isVirtualProp(p: any): p is VirtualProp {\n return p?.type === \"virtual\";\n}\nexport function isRelationProp(p: any): p is RelationProp {\n return p?.type === \"relation\";\n}\nexport function isOneToOneRelationProp(p: any): p is OneToOneRelationProp {\n return p?.relationType === \"OneToOne\";\n}\nexport function isBelongsToOneRelationProp(\n p: any\n): p is BelongsToOneRelationProp {\n return p?.relationType === \"BelongsToOne\";\n}\nexport function isHasManyRelationProp(p: any): p is HasManyRelationProp {\n return p?.relationType === \"HasMany\";\n}\nexport function isManyToManyRelationProp(p: any): p is ManyToManyRelationProp {\n return p?.relationType === \"ManyToMany\";\n}\n\ntype JoinClause =\n | {\n from: string;\n to: string;\n }\n | {\n custom: string;\n };\nexport function isCustomJoinClause(p: any): p is { custom: string } {\n return p?.custom;\n}\n\n/* 서브셋 */\n// type SubsetLoader = {\n// as: string;\n// table: string;\n// manyJoin: {\n// fromTable: string;\n// fromCol: string;\n// idField: string;\n// toTable: string;\n// toCol: string;\n// through?: {\n// table: string;\n// fromCol: string;\n// toCol: string;\n// };\n// };\n// oneJoins: ({\n// as: string;\n// join: \"inner\" | \"outer\";\n// table: string;\n// } & JoinClause)[];\n// select: (string | Knex.Raw)[];\n// loaders?: SubsetLoader[];\n// };\n// export type SubsetQuery = {\n// select: (string | Knex.Raw)[];\n// virtual: string[];\n// joins: ({\n// as: string;\n// join: \"inner\" | \"outer\";\n// table: string;\n// } & JoinClause)[];\n// loaders: SubsetLoader[];\n// };\n\ntype SubsetLoader = {\n as: string;\n table: string;\n manyJoin: {\n fromTable: string;\n fromCol: string;\n idField: string;\n toTable: string;\n toCol: string;\n through?: {\n table: string;\n fromCol: string;\n toCol: string;\n };\n };\n oneJoins: ({\n as: string;\n join: \"inner\" | \"outer\";\n table: string;\n } & JoinClause)[];\n select: string[];\n loaders?: SubsetLoader[];\n};\n\nexport type SubsetQuery = {\n select: string[];\n virtual: string[];\n joins: ({\n as: string;\n join: \"inner\" | \"outer\";\n table: string;\n } & JoinClause)[];\n loaders: SubsetLoader[];\n};\n\n/* BaseModel */\nexport const SonamuQueryMode = z.enum([\"both\", \"list\", \"count\"]);\nexport type SonamuQueryMode = z.infer<typeof SonamuQueryMode>;\n\n/* Knex Migration */\nexport type KnexError = {\n code: string;\n errno: number;\n sql: string;\n sqlMessage: string;\n sqlState: string;\n};\nexport function isKnexError(e: any): e is KnexError {\n return e.code && e.sqlMessage && e.sqlState;\n}\n\nexport type KnexColumnType =\n | \"string\"\n | \"text\"\n | \"smalltext\"\n | \"mediumtext\"\n | \"longtext\"\n | \"integer\"\n | \"bigInteger\"\n | \"decimal\"\n | \"timestamp\"\n | \"boolean\"\n | \"foreign\"\n | \"uuid\"\n | \"json\"\n | \"float\"\n | \"date\"\n | \"time\"\n | \"datetime\";\nexport type MigrationColumn = {\n name: string;\n type: KnexColumnType;\n nullable: boolean;\n unsigned?: boolean;\n length?: number;\n defaultTo?: string;\n precision?: number;\n scale?: number;\n};\nexport type MigrationIndex = {\n columns: string[];\n type: \"unique\" | \"index\" | \"fulltext\";\n parser?: \"built-in\" | \"ngram\";\n};\nexport type MigrationForeign = {\n columns: string[];\n to: string;\n onUpdate: RelationOn;\n onDelete: RelationOn;\n};\nexport type MigrationJoinTable = {\n table: string;\n indexes: MigrationIndex[];\n columns: MigrationColumn[];\n foreigns: MigrationForeign[];\n};\nexport type MigrationSet = {\n table: string;\n columns: MigrationColumn[];\n indexes: MigrationIndex[];\n foreigns: MigrationForeign[];\n};\nexport type MigrationSetAndJoinTable = MigrationSet & {\n joinTables: MigrationJoinTable[];\n};\nexport type GenMigrationCode = {\n title: string;\n table: string;\n type: \"normal\" | \"foreign\";\n formatted: string | null;\n};\n\n/* Api */\nexport type ApiParam = {\n name: string;\n type: ApiParamType;\n optional: boolean;\n defaultDef?: string;\n};\nexport namespace ApiParamType {\n export type Object = {\n t: \"object\";\n props: ApiParam[];\n };\n export type Union = {\n t: \"union\";\n types: ApiParamType[];\n };\n export type Intersection = {\n t: \"intersection\";\n types: ApiParamType[];\n };\n export type StringLiteral = {\n t: \"string-literal\";\n value: string;\n };\n export type NumericLiteral = {\n t: \"numeric-literal\";\n value: number;\n };\n export type Array = {\n t: \"array\";\n elementsType: ApiParamType;\n };\n export type Ref = {\n t: \"ref\";\n id: string;\n args?: ApiParamType[];\n };\n export type IndexedAccess = {\n t: \"indexed-access\";\n object: ApiParamType;\n index: ApiParamType;\n };\n export type TupleType = {\n t: \"tuple-type\";\n elements: ApiParamType[];\n };\n export type Pick = Ref & {\n t: \"ref\";\n id: \"Pick\";\n };\n export type Omit = Ref & {\n t: \"ref\";\n id: \"Omit\";\n };\n export type Partial = Ref & {\n t: \"ref\";\n id: \"Partial\";\n };\n export type Promise = Ref & {\n t: \"ref\";\n id: \"Promise\";\n };\n export type Context = Ref & {\n t: \"ref\";\n id: \"Context\";\n };\n export type TypeParam = {\n t: \"type-param\";\n id: string;\n constraint?: ApiParamType;\n };\n\n export function isObject(v: any): v is ApiParamType.Object {\n return v?.t === \"object\";\n }\n export function isUnion(v: any): v is ApiParamType.Union {\n return v?.t === \"union\";\n }\n export function isIntersection(v: any): v is ApiParamType.Intersection {\n return v?.t === \"intersection\";\n }\n export function isStringLiteral(v: any): v is ApiParamType.StringLiteral {\n return v?.t === \"string-literal\";\n }\n export function isNumericLiteral(v: any): v is ApiParamType.NumericLiteral {\n return v?.t === \"numeric-literal\";\n }\n export function isArray(v: any): v is ApiParamType.Array {\n return v?.t === \"array\";\n }\n export function isRef(v: any): v is ApiParamType.Ref {\n return v?.t === \"ref\";\n }\n export function isIndexedAccess(v: any): v is ApiParamType.IndexedAccess {\n return v?.t === \"indexed-access\";\n }\n export function isTupleType(v: any): v is ApiParamType.TupleType {\n return v?.t === \"tuple-type\";\n }\n export function isPick(v: any): v is ApiParamType.Pick {\n return v?.t === \"ref\" && v.id === \"Pick\";\n }\n export function isOmit(v: any): v is ApiParamType.Omit {\n return v?.t === \"ref\" && v.id === \"Omit\";\n }\n export function isPartial(v: any): v is ApiParamType.Partial {\n return v?.t === \"ref\" && v.id === \"Partial\";\n }\n export function isPromise(v: any): v is ApiParamType.Promise {\n return v?.t === \"ref\" && v.id === \"Promise\";\n }\n export function isContext(v: any): v is ApiParamType.Context {\n return v?.t === \"ref\" && v.id === \"Context\";\n }\n export function isRefKnex(v: any): v is ApiParamType.Ref {\n return v?.t === \"ref\" && v.id === \"Knex\";\n }\n export function isTypeParam(v: any): v is ApiParamType.TypeParam {\n return v?.t === \"type-param\";\n }\n}\nexport type ApiParamType =\n | \"string\"\n | \"number\"\n | \"boolean\"\n | \"null\"\n | \"undefined\"\n | \"void\"\n | \"any\"\n | \"unknown\"\n | \"true\"\n | \"false\"\n | ApiParamType.StringLiteral\n | ApiParamType.NumericLiteral\n | ApiParamType.Object\n | ApiParamType.Union\n | ApiParamType.Intersection\n | ApiParamType.Array\n | ApiParamType.Ref\n | ApiParamType.IndexedAccess\n | ApiParamType.TypeParam\n | ApiParamType.TupleType;\n\n/* Template */\n// 셀프 참조 타입이므로 Zod 생략하고 직접 정의\nexport const RenderingNode = z.any();\nexport type RenderingNode = {\n name: string;\n label: string;\n renderType:\n | \"string-plain\"\n | \"string-image\"\n | \"string-datetime\"\n | \"string-date\"\n | \"datetime\"\n | \"number-plain\"\n | \"number-id\"\n | \"number-fk_id\"\n | \"boolean\"\n | \"enums\"\n | \"array\"\n | \"array-images\"\n | \"object\"\n | \"object-pick\"\n | \"record\";\n zodType: z.ZodTypeAny;\n element?: RenderingNode;\n children?: RenderingNode[];\n config?: {\n picked: string;\n };\n optional?: boolean;\n nullable?: boolean;\n};\n\nexport const TemplateOptions = z.object({\n entity: z.object({\n entityId: z.string(),\n parentId: z.string().optional(),\n title: z.string(),\n table: z.string().optional(),\n props: z.array(z.object({})).optional(),\n indexes: z.array(z.object({})).optional(),\n subsets: z.object({}).optional(),\n enums: z.object({}).optional(),\n }),\n init_types: z.object({\n entityId: z.string(),\n }),\n generated: z.object({}),\n generated_sso: z.object({}),\n generated_http: z.object({\n entityId: z.string(),\n }),\n model: z.object({\n entityId: z.string(),\n defaultSearchField: z.string(),\n defaultOrderBy: z.string(),\n }),\n model_test: z.object({\n entityId: z.string(),\n }),\n bridge: z.object({\n entityId: z.string(),\n }),\n service: z.object({\n namesRecord: z.object({\n fs: z.string(),\n fsPlural: z.string(),\n camel: z.string(),\n camelPlural: z.string(),\n capital: z.string(),\n capitalPlural: z.string(),\n upper: z.string(),\n constant: z.string(),\n }),\n modelTsPath: z.string(),\n }),\n view_list: z.object({\n entityId: z.string(),\n extra: z.unknown(),\n }),\n view_list_columns: z.object({\n entityId: z.string(),\n columns: z\n .object({\n name: z.string(),\n label: z.string(),\n tc: z.string(),\n })\n .array(),\n columnImports: z.string(),\n }),\n view_search_input: z.object({\n entityId: z.string(),\n }),\n view_form: z.object({\n entityId: z.string(),\n }),\n view_id_all_select: z.object({\n entityId: z.string(),\n }),\n view_id_async_select: z.object({\n entityId: z.string(),\n textField: z.string(),\n }),\n view_enums_select: z.object({\n entityId: z.string(),\n enumId: z.string(),\n }),\n view_enums_dropdown: z.object({\n entityId: z.string(),\n enumId: z.string(),\n }),\n view_enums_buttonset: z.object({\n entityId: z.string(),\n enumId: z.string(),\n }),\n});\nexport type TemplateOptions = z.infer<typeof TemplateOptions>;\n\nexport const TemplateKey = z.enum([\n \"entity\",\n \"init_types\",\n \"generated\",\n \"generated_sso\",\n \"generated_http\",\n \"model\",\n \"model_test\",\n \"bridge\",\n \"service\",\n \"view_list\",\n \"view_list_columns\",\n \"view_search_input\",\n \"view_form\",\n \"view_id_all_select\",\n \"view_id_async_select\",\n \"view_enums_select\",\n \"view_enums_dropdown\",\n \"view_enums_buttonset\",\n]);\nexport type TemplateKey = z.infer<typeof TemplateKey>;\n\nexport const GenerateOptions = z.object({\n overwrite: z.boolean().optional(),\n});\nexport type GenerateOptions = z.infer<typeof GenerateOptions>;\n\nexport const PathAndCode = z.object({\n path: z.string(),\n code: z.string(),\n});\nexport type PathAndCode = z.infer<typeof PathAndCode>;\n\nexport type FixtureSearchOptions = {\n entityId: string;\n field: string;\n value: string;\n searchType: \"equals\" | \"like\";\n};\n\nexport type FixtureRecord = {\n fixtureId: string;\n entityId: string;\n id: number;\n columns: {\n [key: string]: {\n prop: EntityProp;\n value: any;\n };\n };\n fetchedRecords: string[];\n belongsRecords: string[];\n target?: FixtureRecord; // Import 대상 DB 레코드(id가 같은)\n unique?: FixtureRecord; // Import 대상 DB 레코드(unique key가 같은)\n override?: boolean;\n};\n\nexport type FixtureImportResult = {\n entityId: string;\n data: {\n [key: string]: any;\n };\n};\n\nexport type RelationNode = {\n fixtureId: string;\n entityId: string;\n related: Set<string>;\n};\n\nexport interface DatabaseSchemaExtend {}\nexport type ManyToManyBaseSchema<\n FromIdKey extends string,\n ToIdKey extends string,\n> = {\n id: number;\n} & {\n [K in `${FromIdKey}_id`]: number;\n} & {\n [K in `${ToIdKey}_id`]: number;\n};\n\nexport type SonamuFastifyConfig = {\n contextProvider: (\n defaultContext: Pick<\n Context,\n \"request\" | \"reply\" | \"headers\" | \"createSSE\"\n > &\n AuthContext,\n request: FastifyRequest,\n reply: FastifyReply\n ) => Context | Promise<Context>;\n guardHandler: (\n guard: GuardKey,\n request: FastifyRequest,\n api: {\n typeParameters: ApiParamType.TypeParam[];\n parameters: ApiParam[];\n returnType: ApiParamType;\n modelName: string;\n methodName: string;\n path: string;\n options: ApiDecoratorOptions;\n }\n ) => void;\n cache?: {\n get: (key: string) => Promise<unknown | null>;\n put: (key: string, value: unknown, ttl?: number) => Promise<void>;\n resolveKey: (\n path: string,\n reqBody: {\n [key: string]: unknown;\n }\n ) =>\n | {\n cache: false;\n }\n | {\n cache: true;\n key: string;\n ttl?: number;\n };\n };\n};\n\nexport type SonamuServerOptions = {\n fastify?: FastifyServerOptions;\n\n listen?: {\n port: number;\n host?: string;\n };\n\n plugins?: {\n cors?: boolean | FastifyCorsOptions;\n formbody?: boolean | FastifyFormbodyOptions;\n multipart?: boolean | FastifyMultipartOptions;\n qs?: boolean | QsPluginOptions;\n sse?: boolean | SsePluginOptions;\n static?: boolean | FastifyStaticOptions;\n session?: boolean | SecureSessionPluginOptions;\n\n custom?: (server: FastifyInstance) => void;\n };\n\n auth?:\n | boolean\n | {\n userSerializer: SerializeFunction<unknown, unknown>;\n userDeserializer: DeserializeFunction<unknown, unknown>;\n };\n\n apiConfig: SonamuFastifyConfig;\n\n storage?: Driver;\n\n lifecycle?: {\n onStart?: (server: FastifyInstance) => Promise<void> | void;\n onShutdown?: (server: FastifyInstance) => Promise<void> | void;\n onError?: (\n error: Error,\n request: FastifyRequest,\n reply: FastifyReply\n ) => Promise<void> | void;\n };\n};\n"],"names":["GenerateOptions","PathAndCode","RenderingNode","SQLDateTimeString","SonamuQueryMode","TemplateKey","TemplateOptions","isBelongsToOneRelationProp","isBigIntegerProp","isBooleanProp","isCustomJoinClause","isDateProp","isDateTimeProp","isDecimalProp","isDoubleProp","isEnumProp","isFloatProp","isHasManyRelationProp","isIntegerProp","isJsonProp","isKnexError","isManyToManyRelationProp","isOneToOneRelationProp","isRelationProp","isStringProp","isTextProp","isTimeProp","isTimestampProp","isUuidProp","isVirtualProp","zArrayable","z","string","regex","message","min","max","describe","shape","union","array","p","type","relationType","custom","enum","e","code","sqlMessage","sqlState","ApiParamType","isObject","v","t","isUnion","isIntersection","isStringLiteral","isNumericLiteral","isArray","isRef","isIndexedAccess","isTupleType","isPick","id","isOmit","isPartial","isPromise","isContext","isRefKnex","isTypeParam","any","object","entity","entityId","parentId","optional","title","table","props","indexes","subsets","enums","init_types","generated","generated_sso","generated_http","model","defaultSearchField","defaultOrderBy","model_test","bridge","service","namesRecord","fs","fsPlural","camel","camelPlural","capital","capitalPlural","upper","constant","modelTsPath","view_list","extra","unknown","view_list_columns","columns","name","label","tc","columnImports","view_search_input","view_form","view_id_all_select","view_id_async_select","textField","view_enums_select","enumId","view_enums_dropdown","view_enums_buttonset","overwrite","boolean","path"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sonamu",
3
- "version": "0.5.5",
3
+ "version": "0.5.7",
4
4
  "description": "Sonamu — TypeScript Fullstack API Framework",
5
5
  "keywords": [
6
6
  "typescript",
@@ -80,7 +80,6 @@
80
80
  "typescript": "^5.2.2"
81
81
  },
82
82
  "peerDependencies": {
83
- "@sonamu-kit/react-sui": "^0.1.14",
84
83
  "fastify": "^4.23.2",
85
84
  "knex": "^3.1.0",
86
85
  "mysql2": "^3.6.1",
@@ -2,7 +2,11 @@ import type { HTTPMethods } from "fastify";
2
2
  import inflection from "inflection";
3
3
  import type { ApiParam, ApiParamType } from "../types/types";
4
4
  import { z } from "zod";
5
- import { PuriWrapper, TransactionalOptions } from "../database/puri-wrapper";
5
+ import {
6
+ PuriTransactionWrapper,
7
+ PuriWrapper,
8
+ TransactionalOptions,
9
+ } from "../database/puri-wrapper";
6
10
  import { DB } from "../database/db";
7
11
  import { Sonamu } from "./sonamu";
8
12
  import type { UploadContext } from "./context";
@@ -31,6 +35,7 @@ export type ApiDecoratorOptions = {
31
35
  resourceName?: string;
32
36
  guards?: GuardKey[];
33
37
  description?: string;
38
+ timeout?: number;
34
39
  };
35
40
  export type StreamDecoratorOptions = {
36
41
  type: "sse"; // | 'ws
@@ -152,10 +157,14 @@ export function transactional(options: TransactionalOptions = {}) {
152
157
  const startTransaction = async () => {
153
158
  const puri = this.getPuri(dbPreset) as PuriWrapper;
154
159
 
155
- return puri.transaction(
156
- async (trx: PuriWrapper) => {
160
+ return puri.knex.transaction(
161
+ async (trx) => {
162
+ const trxWrapper = new PuriTransactionWrapper(
163
+ trx,
164
+ this.getUpsertBuilder()
165
+ );
157
166
  // TransactionContext에 트랜잭션 저장
158
- DB.getTransactionContext().setTransaction(dbPreset, trx);
167
+ DB.getTransactionContext().setTransaction(dbPreset, trxWrapper);
159
168
 
160
169
  try {
161
170
  return await originalMethod.apply(this, args);
@@ -164,7 +173,7 @@ export function transactional(options: TransactionalOptions = {}) {
164
173
  DB.getTransactionContext().deleteTransaction(dbPreset);
165
174
  }
166
175
  },
167
- { isolation, readOnly }
176
+ { isolationLevel: isolation, readOnly }
168
177
  );
169
178
  };
170
179
 
package/src/api/sonamu.ts CHANGED
@@ -413,27 +413,28 @@ class SonamuClass {
413
413
  );
414
414
 
415
415
  const context: Context = {
416
- ...config.contextProvider(
417
- {
418
- request,
419
- reply,
420
- headers: request.headers,
421
- createSSE,
422
-
423
- // auth
424
- user: request.user ?? null,
425
- passport: {
426
- login: request.login.bind(
427
- request
428
- ) as AuthContext["passport"]["login"],
429
- logout: request.logout.bind(
430
- request
431
- ) as AuthContext["passport"]["logout"],
416
+ ...(await Promise.resolve(
417
+ config.contextProvider(
418
+ {
419
+ request,
420
+ reply,
421
+ headers: request.headers,
422
+ createSSE,
423
+ // auth
424
+ user: request.user ?? null,
425
+ passport: {
426
+ login: request.login.bind(
427
+ request
428
+ ) as AuthContext["passport"]["login"],
429
+ logout: request.logout.bind(
430
+ request
431
+ ) as AuthContext["passport"]["logout"],
432
+ },
432
433
  },
433
- },
434
- request,
435
- reply
436
- ),
434
+ request,
435
+ reply
436
+ )
437
+ )),
437
438
  };
438
439
 
439
440
  const model = this.syncer.models[api.modelName];
@@ -1,10 +1,14 @@
1
+ /**
2
+ * 빌드 결과물이 담길 디렉토리 경로
3
+ */
4
+ export const BUILD_DIR = "dist";
5
+
1
6
  /**
2
7
  * SWC 빌드 명령어
3
8
  */
4
- export const SWC_BUILD_COMMAND =
5
- "swc src -d dist --strip-leading-paths --source-maps -C module.type=commonjs -C jsc.parser.syntax=typescript -C jsc.parser.decorators=true -C jsc.target=es5";
9
+ export const SWC_BUILD_COMMAND = `swc src -d ${BUILD_DIR} --strip-leading-paths --source-maps -C module.type=commonjs -C jsc.parser.syntax=typescript -C jsc.parser.decorators=true -C jsc.target=es5`;
6
10
 
7
11
  /**
8
12
  * TSC 타입 체크 명령어
9
13
  */
10
- export const TSC_TYPE_CHECK_COMMAND = "tsc --noEmit";
14
+ export const TSC_TYPE_CHECK_COMMAND = `tsc --noEmit`;
@@ -2,36 +2,55 @@
2
2
 
3
3
  import { spawnSync, execSync } from "child_process";
4
4
  import { resolve } from "path";
5
- import { existsSync } from "fs";
5
+ import { existsSync, rmSync } from "fs";
6
6
  import chalk from "chalk";
7
- import { SWC_BUILD_COMMAND, TSC_TYPE_CHECK_COMMAND } from "./build-config";
7
+ import {
8
+ BUILD_DIR,
9
+ SWC_BUILD_COMMAND,
10
+ TSC_TYPE_CHECK_COMMAND,
11
+ } from "./build-config";
8
12
 
9
13
  const scriptPath = resolve(__dirname, "cli.js");
10
14
  const args = process.argv.slice(2);
11
15
 
12
16
  // build 명령어는 dist 없이도 실행 가능하도록 cli.ts 외부에서 처리(Sonamu.init에서 dist 필요)
13
- function build(checkTypes: boolean = false) {
17
+ function build() {
14
18
  try {
19
+ console.log(chalk.blue("Removing build directory..."));
20
+ if (existsSync(BUILD_DIR)) {
21
+ rmSync(BUILD_DIR, { recursive: true, force: true });
22
+ }
23
+ } catch (error) {
24
+ console.error(chalk.red("Remove build directory failed."), error);
25
+ process.exit(1);
26
+ }
27
+
28
+ try {
29
+ console.log(chalk.blue("Building with swc..."));
15
30
  execSync(SWC_BUILD_COMMAND, { cwd: process.cwd(), stdio: "inherit" });
16
31
  } catch (error) {
17
32
  console.error(chalk.red("Build failed."), error);
18
33
  process.exit(1);
19
34
  }
35
+ }
20
36
 
21
- if (checkTypes) {
22
- try {
23
- console.log(chalk.blue("Checking types with tsc..."));
24
- execSync(TSC_TYPE_CHECK_COMMAND, { cwd: process.cwd(), stdio: "inherit" });
25
- } catch (error) {
26
- console.error(chalk.red("Type check failed."), error);
27
- process.exit(1);
28
- }
37
+ function checkTypes() {
38
+ try {
39
+ console.log(chalk.blue("Checking types with tsc..."));
40
+ execSync(TSC_TYPE_CHECK_COMMAND, {
41
+ cwd: process.cwd(),
42
+ stdio: "inherit",
43
+ });
44
+ } catch (error) {
45
+ console.error(chalk.red("Type check failed."), error);
46
+ process.exit(1);
29
47
  }
30
48
  }
31
49
 
32
50
  if (args[0] === "build") {
33
51
  console.log(chalk.blue("Building the project..."));
34
- build(true);
52
+ build();
53
+ checkTypes();
35
54
  console.log(chalk.green("Build completed successfully."));
36
55
  process.exit(0);
37
56
  }