@sdk-it/hono 0.44.0 → 0.46.0
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.
- package/dist/index.js.map +2 -2
- package/dist/lib/constant-value.d.ts.map +1 -1
- package/dist/lib/response-analyzer.d.ts.map +1 -1
- package/dist/lib/runtime/index.js.map +1 -1
- package/dist/lib/runtime/output.d.ts +26 -26
- package/dist/lib/runtime/validator.d.ts +1 -1
- package/dist/lib/runtime/validator.d.ts.map +1 -1
- package/package.json +3 -3
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/lib/response-analyzer.ts", "../src/lib/constant-value.ts"],
|
|
4
|
-
"sourcesContent": ["import ts from 'typescript';\n\nimport {\n $types,\n type NaunceResponseAnalyzerFn,\n type ResponseItem,\n type TypeDeriver,\n} from '@sdk-it/core';\nimport { getConstantValue } from './constant-value.js';\n\nconst handlerVisitor: (\n on: (\n node: ts.Node | undefined,\n statusCode: ts.Node | undefined,\n headers: ts.Node | undefined,\n contentType: string,\n ) => void,\n contextVarName: string,\n) => ts.Visitor = (callback, contextVarName) => {\n return (node: ts.Node) => {\n if (ts.isReturnStatement(node) && node.expression) {\n if (ts.isCallExpression(node.expression)) {\n if (ts.isPropertyAccessExpression(node.expression.expression)) {\n const propAccess = node.expression.expression;\n if (\n ts.isIdentifier(propAccess.expression) &&\n propAccess.expression.text === contextVarName\n ) {\n const [body, statusCode, headers] = node.expression.arguments;\n let contentType = 'application/json';\n const callerMethod = propAccess.name.text;\n if (callerMethod === 'body') {\n contentType = 'application/octet-stream';\n }\n if (!body) {\n contentType = 'empty';\n }\n callback(body, statusCode, headers, contentType);\n }\n }\n // if (ts.isIdentifier(node.expression.expression)) {\n // console.log('streamText');\n // if (node.expression.expression.text === 'streamText') {\n // callback(undefined, undefined, undefined, 'text/plain');\n // }\n // }\n }\n }\n return ts.forEachChild(node, handlerVisitor(callback, contextVarName));\n };\n};\n\nfunction resolveStatusCode(node: ts.Node) {\n if (ts.isNumericLiteral(node)) {\n return node.text;\n }\n throw new Error(`Could not resolve status code`);\n}\n\nfunction normalizeContentType(value: string | undefined) {\n if (!value) {\n return undefined;\n }\n return value.split(';')[0]?.trim();\n}\n\nfunction getPropertyNameText(\n name: ts.PropertyName,\n checker: ts.TypeChecker,\n): string | undefined {\n if (ts.isIdentifier(name)) {\n return name.text;\n }\n if (ts.isStringLiteral(name) || ts.isNumericLiteral(name)) {\n return name.text;\n }\n if (ts.isComputedPropertyName(name)) {\n const expression = name.expression;\n if (ts.isStringLiteral(expression) || ts.isNumericLiteral(expression)) {\n return expression.text;\n }\n const value = getConstantValue(checker, expression);\n if (typeof value === 'string' || typeof value === 'number') {\n return String(value);\n }\n }\n return undefined;\n}\n\nfunction resolveHeadersObject(\n headersNode: ts.Node | undefined,\n checker: ts.TypeChecker,\n): ts.ObjectLiteralExpression | undefined {\n if (!headersNode) {\n return undefined;\n }\n const unwrapObjectLiteral = (\n expression: ts.Expression,\n ): ts.ObjectLiteralExpression | undefined => {\n if (ts.isObjectLiteralExpression(expression)) {\n return expression;\n }\n if (\n ts.isParenthesizedExpression(expression) &&\n ts.isObjectLiteralExpression(expression.expression)\n ) {\n return expression.expression;\n }\n return undefined;\n };\n if (ts.isObjectLiteralExpression(headersNode)) {\n return headersNode;\n }\n if (ts.isAsExpression(headersNode)) {\n return resolveHeadersObject(headersNode.expression, checker);\n }\n if (ts.isTypeAssertionExpression(headersNode)) {\n return resolveHeadersObject(headersNode.expression, checker);\n }\n if (ts.isParenthesizedExpression(headersNode)) {\n return resolveHeadersObject(headersNode.expression, checker);\n }\n if (ts.isNewExpression(headersNode)) {\n const exprName = headersNode.expression.getText();\n if (exprName === 'Headers') {\n const [init] = headersNode.arguments ?? [];\n return init ? resolveHeadersObject(init, checker) : undefined;\n }\n }\n if (ts.isCallExpression(headersNode)) {\n let callee: ts.Expression = headersNode.expression;\n if (ts.isParenthesizedExpression(callee)) {\n callee = callee.expression;\n }\n if (ts.isArrowFunction(callee) || ts.isFunctionExpression(callee)) {\n if (ts.isExpression(callee.body)) {\n const bodyLiteral = unwrapObjectLiteral(callee.body);\n if (bodyLiteral) {\n return bodyLiteral;\n }\n }\n if (ts.isBlock(callee.body)) {\n for (const statement of callee.body.statements) {\n if (\n ts.isReturnStatement(statement) &&\n statement.expression &&\n unwrapObjectLiteral(statement.expression)\n ) {\n return unwrapObjectLiteral(statement.expression);\n }\n }\n }\n }\n }\n if (ts.isShorthandPropertyAssignment(headersNode)) {\n const symbol = checker.getShorthandAssignmentValueSymbol(headersNode);\n const decl = symbol?.valueDeclaration ?? symbol?.declarations?.[0];\n if (decl && ts.isVariableDeclaration(decl) && decl.initializer) {\n return resolveHeadersObject(decl.initializer, checker);\n }\n }\n if (ts.isIdentifier(headersNode)) {\n const symbol = checker.getSymbolAtLocation(headersNode);\n const decl = symbol?.valueDeclaration ?? symbol?.declarations?.[0];\n if (decl && ts.isVariableDeclaration(decl) && decl.initializer) {\n return resolveHeadersObject(decl.initializer, checker);\n }\n }\n return undefined;\n}\n\nfunction getHeaderValue(\n headersNode: ts.Node | undefined,\n headerName: string,\n checker: ts.TypeChecker,\n) {\n const headersObject = resolveHeadersObject(headersNode, checker);\n if (!headersObject) {\n return undefined;\n }\n for (const prop of headersObject.properties) {\n if (!ts.isPropertyAssignment(prop)) {\n continue;\n }\n const key = getPropertyNameText(prop.name, checker);\n if (!key || key.toLowerCase() !== headerName.toLowerCase()) {\n continue;\n }\n const value = getConstantValue(checker, prop.initializer);\n return typeof value === 'string' ? value : undefined;\n }\n return undefined;\n}\n\nfunction hasHeaderKey(\n headersNode: ts.Node | undefined,\n headerName: string,\n checker: ts.TypeChecker,\n) {\n const headersObject = resolveHeadersObject(headersNode, checker);\n if (!headersObject) {\n return false;\n }\n for (const prop of headersObject.properties) {\n if (!ts.isPropertyAssignment(prop)) {\n continue;\n }\n const key = getPropertyNameText(prop.name, checker);\n if (key && key.toLowerCase() === headerName.toLowerCase()) {\n return true;\n }\n }\n return false;\n}\n\nfunction isJsonContentType(contentType: string) {\n return contentType.endsWith('/json') || contentType.endsWith('+json');\n}\n\nfunction isTextContentTypeValue(contentType: string) {\n return contentType.startsWith('text/');\n}\n\nfunction inferContentType(\n body: ts.Node | undefined,\n headers: ts.Node | undefined,\n defaultContentType: string,\n checker: ts.TypeChecker,\n) {\n if (!body) {\n return 'empty';\n }\n const headerContentType = normalizeContentType(\n getHeaderValue(headers, 'Content-Type', checker),\n );\n if (headerContentType) {\n return headerContentType;\n }\n if (hasHeaderKey(headers, 'Content-Disposition', checker)) {\n return 'application/octet-stream';\n }\n return defaultContentType;\n}\n\nfunction getHeaderKeys(headersNode: ts.Node | undefined, deriver: TypeDeriver) {\n if (!headersNode) {\n return [];\n }\n const resolved = resolveHeadersObject(headersNode, deriver.checker);\n if (resolved) {\n return Object.keys(deriver.serializeNode(resolved));\n }\n const type = deriver.checker.getTypeAtLocation(headersNode);\n const names = deriver.checker\n .getPropertiesOfType(type)\n .map((prop) => prop.name);\n if (!names.length) {\n return [];\n }\n const sorted = [...names].sort((a, b) => a.localeCompare(b));\n return sorted.flatMap((name) =>\n name.includes('-') ? [`'${name}'`, name] : [name],\n );\n}\n\nexport const newResponse: NaunceResponseAnalyzerFn = (\n _handler,\n deriver,\n node,\n) => {\n if (!ts.isNewExpression(node)) {\n return [];\n }\n const exprName = node.expression.getText();\n if (exprName !== 'Response') {\n return [];\n }\n const [body, init] = node.arguments ?? [];\n let statusNode: ts.Node | undefined;\n let headersNode: ts.Node | undefined;\n if (init && ts.isObjectLiteralExpression(init)) {\n for (const prop of init.properties) {\n if (!ts.isPropertyAssignment(prop)) {\n if (ts.isShorthandPropertyAssignment(prop)) {\n const key = prop.name.text;\n if (key === 'headers') {\n headersNode = prop;\n }\n }\n continue;\n }\n const key = getPropertyNameText(prop.name, deriver.checker);\n if (!key) {\n continue;\n }\n if (key === 'status') {\n statusNode = prop.initializer;\n } else if (key === 'headers') {\n headersNode = prop.initializer;\n }\n }\n }\n\n const contentType = inferContentType(\n body,\n headersNode,\n 'application/octet-stream',\n deriver.checker,\n );\n\n const normalized = contentType.toLowerCase();\n const shouldSerialize =\n !!body &&\n (isJsonContentType(normalized) || isTextContentTypeValue(normalized));\n\n return [\n {\n headers: getHeaderKeys(headersNode, deriver),\n contentType,\n statusCode: statusNode ? resolveStatusCode(statusNode) : '200',\n response: shouldSerialize ? deriver.serializeNode(body) : undefined,\n },\n ];\n};\n\nexport function defaultResponseAnalyzer(\n handler: ts.ArrowFunction | ts.FunctionExpression,\n deriver: TypeDeriver,\n) {\n const responsesList: ResponseItem[] = [];\n if (!handler.parameters.length) {\n return responsesList;\n }\n const contextVarName = handler.parameters[0].name.getText();\n const visit = handlerVisitor((node, statusCode, headers, contentType) => {\n const resolvedContentType = inferContentType(\n node,\n headers,\n contentType,\n deriver.checker,\n );\n responsesList.push({\n headers: getHeaderKeys(headers, deriver),\n contentType: resolvedContentType,\n statusCode: statusCode ? resolveStatusCode(statusCode) : '200',\n response: node ? deriver.serializeNode(node) : undefined,\n });\n }, contextVarName);\n visit(handler.body);\n return responsesList;\n}\n\nexport function streamText(\n _handler: ts.ArrowFunction | ts.FunctionExpression,\n _deriver: TypeDeriver,\n): ResponseItem[] {\n return [\n {\n contentType: 'text/plain',\n headers: [{ 'Transfer-Encoding': ['chunked'] }],\n statusCode: '200',\n response: {\n optional: false,\n kind: 'primitive',\n [$types]: ['string'],\n },\n },\n ];\n}\n\nexport function stream(\n _handler: ts.ArrowFunction | ts.FunctionExpression,\n _deriver: TypeDeriver,\n): ResponseItem[] {\n return [\n {\n contentType: 'application/octet-stream',\n headers: [],\n statusCode: '200',\n response: {\n optional: false,\n kind: 'primitive',\n [$types]: ['string'],\n },\n },\n ];\n}\n\nexport function streamSSE(\n _handler: ts.ArrowFunction | ts.FunctionExpression,\n _deriver: TypeDeriver,\n): ResponseItem[] {\n return [\n {\n contentType: 'text/event-stream',\n headers: [],\n statusCode: '200',\n response: {\n optional: false,\n kind: 'primitive',\n [$types]: ['string'],\n },\n },\n ];\n}\n\nexport const httpException: NaunceResponseAnalyzerFn = (\n _handler,\n deriver,\n node,\n) => {\n if (ts.isNewExpression(node)) {\n const [status, options] = node.arguments ?? [];\n // if (!ts.isObjectLiteralExpression(options)) {\n // return [];\n // }\n // const properties = options.properties.reduce<Record<string, string>>(\n // (acc, prop) => {\n // if (ts.isPropertyAssignment(prop)) {\n // const key = prop.name.getText();\n // if (ts.isLiteralExpression(prop.initializer)) {\n // acc[key] = prop.initializer.text;\n // } else {\n // acc[key] = prop.initializer.getText();\n // }\n // }\n // return acc;\n // },\n // {},\n // );\n return [\n {\n contentType: 'application/json',\n headers: [],\n statusCode: resolveStatusCode(status),\n response: options ? deriver.serializeNode(options) : undefined,\n },\n ];\n }\n return [];\n};\n\nexport const responseAnalyzer = {\n default: defaultResponseAnalyzer,\n streamText,\n stream,\n streamSSE,\n 'new.Response': newResponse,\n 'throw.new.HTTPException': httpException,\n};\n\nexport default responseAnalyzer;\n", "import ts from 'typescript';\n\nfunction unwrapExpression(node: ts.Expression): ts.Expression {\n let current = node;\n while (true) {\n if (ts.isAsExpression(current)) {\n current = current.expression;\n continue;\n }\n if (ts.isTypeAssertionExpression(current)) {\n current = current.expression;\n continue;\n }\n if (ts.isParenthesizedExpression(current)) {\n current = current.expression;\n continue;\n }\n return current;\n }\n}\n\nfunction literalValueFromType(\n type: ts.Type,\n checker: ts.TypeChecker,\n): string | number | boolean | undefined {\n if (type.isStringLiteral()) {\n return type.value;\n }\n if (type.isNumberLiteral()) {\n return type.value;\n }\n if (type.flags & ts.TypeFlags.BooleanLiteral) {\n return checker.typeToString(type) === 'true';\n }\n return undefined;\n}\n\nexport function getConstantValue(\n checker: ts.TypeChecker,\n expression: ts.Expression,\n): string | number | boolean | undefined {\n const unwrapped = unwrapExpression(expression);\n\n const constant = checker.getConstantValue(\n unwrapped as\n | ts.EnumMember\n | ts.PropertyAccessExpression\n | ts.ElementAccessExpression,\n );\n if (constant !== undefined) {\n return constant;\n }\n\n if (\n ts.isStringLiteral(unwrapped) ||\n ts.isNoSubstitutionTemplateLiteral(unwrapped)\n ) {\n return unwrapped.text;\n }\n if (ts.isNumericLiteral(unwrapped)) {\n return Number(unwrapped.text);\n }\n if (unwrapped.kind === ts.SyntaxKind.TrueKeyword) {\n return true;\n }\n if (unwrapped.kind === ts.SyntaxKind.FalseKeyword) {\n return false;\n }\n\n const type = checker.getTypeAtLocation(unwrapped);\n const literal = literalValueFromType(type, checker);\n if (literal !== undefined) {\n return literal;\n }\n if (type.isUnion()) {\n let resolved: string | number | boolean | undefined = undefined;\n for (const entry of type.types) {\n const value = literalValueFromType(entry, checker);\n if (value === undefined) {\n return undefined;\n }\n if (resolved === undefined) {\n resolved = value;\n } else if (resolved !== value) {\n return undefined;\n }\n }\n return resolved;\n }\n return undefined;\n}\n"],
|
|
5
|
-
"mappings": ";AAAA,OAAOA,SAAQ;AAEf;AAAA,EACE;AAAA,OAIK;;;ACPP,OAAO,QAAQ;AAEf,SAAS,iBAAiB,MAAoC;AAC5D,MAAI,UAAU;AACd,SAAO,MAAM;AACX,QAAI,GAAG,eAAe,OAAO,GAAG;AAC9B,gBAAU,QAAQ;AAClB;AAAA,IACF;AACA,QAAI,GAAG,0BAA0B,OAAO,GAAG;AACzC,gBAAU,QAAQ;AAClB;AAAA,IACF;AACA,QAAI,GAAG,0BAA0B,OAAO,GAAG;AACzC,gBAAU,QAAQ;AAClB;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACF;AAEA,SAAS,qBACP,MACA,SACuC;AACvC,MAAI,KAAK,gBAAgB,GAAG;AAC1B,WAAO,KAAK;AAAA,EACd;AACA,MAAI,KAAK,gBAAgB,GAAG;AAC1B,WAAO,KAAK;AAAA,EACd;AACA,MAAI,KAAK,QAAQ,GAAG,UAAU,gBAAgB;AAC5C,WAAO,QAAQ,aAAa,IAAI,MAAM;AAAA,EACxC;AACA,SAAO;AACT;AAEO,SAAS,iBACd,SACA,YACuC;AACvC,QAAM,YAAY,iBAAiB,UAAU;AAE7C,QAAM,WAAW,QAAQ;AAAA,IACvB;AAAA,
|
|
4
|
+
"sourcesContent": ["import ts from 'typescript';\n\nimport {\n $types,\n type NaunceResponseAnalyzerFn,\n type ResponseItem,\n type TypeDeriver,\n} from '@sdk-it/core';\n\nimport { getConstantValue } from './constant-value.js';\n\nconst handlerVisitor: (\n on: (\n node: ts.Node | undefined,\n statusCode: ts.Node | undefined,\n headers: ts.Node | undefined,\n contentType: string,\n ) => void,\n contextVarName: string,\n) => ts.Visitor = (callback, contextVarName) => {\n return (node: ts.Node) => {\n if (ts.isReturnStatement(node) && node.expression) {\n if (ts.isCallExpression(node.expression)) {\n if (ts.isPropertyAccessExpression(node.expression.expression)) {\n const propAccess = node.expression.expression;\n if (\n ts.isIdentifier(propAccess.expression) &&\n propAccess.expression.text === contextVarName\n ) {\n const [body, statusCode, headers] = node.expression.arguments;\n let contentType = 'application/json';\n const callerMethod = propAccess.name.text;\n if (callerMethod === 'body') {\n contentType = 'application/octet-stream';\n }\n if (!body) {\n contentType = 'empty';\n }\n callback(body, statusCode, headers, contentType);\n }\n }\n // if (ts.isIdentifier(node.expression.expression)) {\n // console.log('streamText');\n // if (node.expression.expression.text === 'streamText') {\n // callback(undefined, undefined, undefined, 'text/plain');\n // }\n // }\n }\n }\n return ts.forEachChild(node, handlerVisitor(callback, contextVarName));\n };\n};\n\nfunction resolveStatusCode(node: ts.Node) {\n if (ts.isNumericLiteral(node)) {\n return node.text;\n }\n throw new Error(`Could not resolve status code`);\n}\n\nfunction normalizeContentType(value: string | undefined) {\n if (!value) {\n return undefined;\n }\n return value.split(';')[0]?.trim();\n}\n\nfunction getPropertyNameText(\n name: ts.PropertyName,\n checker: ts.TypeChecker,\n): string | undefined {\n if (ts.isIdentifier(name)) {\n return name.text;\n }\n if (ts.isStringLiteral(name) || ts.isNumericLiteral(name)) {\n return name.text;\n }\n if (ts.isComputedPropertyName(name)) {\n const expression = name.expression;\n if (ts.isStringLiteral(expression) || ts.isNumericLiteral(expression)) {\n return expression.text;\n }\n const value = getConstantValue(checker, expression);\n if (typeof value === 'string' || typeof value === 'number') {\n return String(value);\n }\n }\n return undefined;\n}\n\nfunction resolveHeadersObject(\n headersNode: ts.Node | undefined,\n checker: ts.TypeChecker,\n): ts.ObjectLiteralExpression | undefined {\n if (!headersNode) {\n return undefined;\n }\n const unwrapObjectLiteral = (\n expression: ts.Expression,\n ): ts.ObjectLiteralExpression | undefined => {\n if (ts.isObjectLiteralExpression(expression)) {\n return expression;\n }\n if (\n ts.isParenthesizedExpression(expression) &&\n ts.isObjectLiteralExpression(expression.expression)\n ) {\n return expression.expression;\n }\n return undefined;\n };\n if (ts.isObjectLiteralExpression(headersNode)) {\n return headersNode;\n }\n if (ts.isAsExpression(headersNode)) {\n return resolveHeadersObject(headersNode.expression, checker);\n }\n if (ts.isTypeAssertionExpression(headersNode)) {\n return resolveHeadersObject(headersNode.expression, checker);\n }\n if (ts.isParenthesizedExpression(headersNode)) {\n return resolveHeadersObject(headersNode.expression, checker);\n }\n if (ts.isNewExpression(headersNode)) {\n const exprName = headersNode.expression.getText();\n if (exprName === 'Headers') {\n const [init] = headersNode.arguments ?? [];\n return init ? resolveHeadersObject(init, checker) : undefined;\n }\n }\n if (ts.isCallExpression(headersNode)) {\n let callee: ts.Expression = headersNode.expression;\n if (ts.isParenthesizedExpression(callee)) {\n callee = callee.expression;\n }\n if (ts.isArrowFunction(callee) || ts.isFunctionExpression(callee)) {\n if (ts.isExpression(callee.body)) {\n const bodyLiteral = unwrapObjectLiteral(callee.body);\n if (bodyLiteral) {\n return bodyLiteral;\n }\n }\n if (ts.isBlock(callee.body)) {\n for (const statement of callee.body.statements) {\n if (\n ts.isReturnStatement(statement) &&\n statement.expression &&\n unwrapObjectLiteral(statement.expression)\n ) {\n return unwrapObjectLiteral(statement.expression);\n }\n }\n }\n }\n }\n if (ts.isShorthandPropertyAssignment(headersNode)) {\n const symbol = checker.getShorthandAssignmentValueSymbol(headersNode);\n const decl = symbol?.valueDeclaration ?? symbol?.declarations?.[0];\n if (decl && ts.isVariableDeclaration(decl) && decl.initializer) {\n return resolveHeadersObject(decl.initializer, checker);\n }\n }\n if (ts.isIdentifier(headersNode)) {\n const symbol = checker.getSymbolAtLocation(headersNode);\n const decl = symbol?.valueDeclaration ?? symbol?.declarations?.[0];\n if (decl && ts.isVariableDeclaration(decl) && decl.initializer) {\n return resolveHeadersObject(decl.initializer, checker);\n }\n }\n return undefined;\n}\n\nfunction getHeaderValue(\n headersNode: ts.Node | undefined,\n headerName: string,\n checker: ts.TypeChecker,\n) {\n const headersObject = resolveHeadersObject(headersNode, checker);\n if (!headersObject) {\n return undefined;\n }\n for (const prop of headersObject.properties) {\n if (!ts.isPropertyAssignment(prop)) {\n continue;\n }\n const key = getPropertyNameText(prop.name, checker);\n if (!key || key.toLowerCase() !== headerName.toLowerCase()) {\n continue;\n }\n const value = getConstantValue(checker, prop.initializer);\n return typeof value === 'string' ? value : undefined;\n }\n return undefined;\n}\n\nfunction hasHeaderKey(\n headersNode: ts.Node | undefined,\n headerName: string,\n checker: ts.TypeChecker,\n) {\n const headersObject = resolveHeadersObject(headersNode, checker);\n if (!headersObject) {\n return false;\n }\n for (const prop of headersObject.properties) {\n if (!ts.isPropertyAssignment(prop)) {\n continue;\n }\n const key = getPropertyNameText(prop.name, checker);\n if (key && key.toLowerCase() === headerName.toLowerCase()) {\n return true;\n }\n }\n return false;\n}\n\nfunction isJsonContentType(contentType: string) {\n return contentType.endsWith('/json') || contentType.endsWith('+json');\n}\n\nfunction isTextContentTypeValue(contentType: string) {\n return contentType.startsWith('text/');\n}\n\nfunction inferContentType(\n body: ts.Node | undefined,\n headers: ts.Node | undefined,\n defaultContentType: string,\n checker: ts.TypeChecker,\n) {\n if (!body) {\n return 'empty';\n }\n const headerContentType = normalizeContentType(\n getHeaderValue(headers, 'Content-Type', checker),\n );\n if (headerContentType) {\n return headerContentType;\n }\n if (hasHeaderKey(headers, 'Content-Disposition', checker)) {\n return 'application/octet-stream';\n }\n return defaultContentType;\n}\n\nfunction getHeaderKeys(headersNode: ts.Node | undefined, deriver: TypeDeriver) {\n if (!headersNode) {\n return [];\n }\n const resolved = resolveHeadersObject(headersNode, deriver.checker);\n if (resolved) {\n return Object.keys(deriver.serializeNode(resolved));\n }\n const type = deriver.checker.getTypeAtLocation(headersNode);\n const names = deriver.checker\n .getPropertiesOfType(type)\n .map((prop) => prop.name);\n if (!names.length) {\n return [];\n }\n const sorted = [...names].sort((a, b) => a.localeCompare(b));\n return sorted.flatMap((name) =>\n name.includes('-') ? [`'${name}'`, name] : [name],\n );\n}\n\nexport const newResponse: NaunceResponseAnalyzerFn = (\n _handler,\n deriver,\n node,\n) => {\n if (!ts.isNewExpression(node)) {\n return [];\n }\n const exprName = node.expression.getText();\n if (exprName !== 'Response') {\n return [];\n }\n const [body, init] = node.arguments ?? [];\n let statusNode: ts.Node | undefined;\n let headersNode: ts.Node | undefined;\n if (init && ts.isObjectLiteralExpression(init)) {\n for (const prop of init.properties) {\n if (!ts.isPropertyAssignment(prop)) {\n if (ts.isShorthandPropertyAssignment(prop)) {\n const key = prop.name.text;\n if (key === 'headers') {\n headersNode = prop;\n }\n }\n continue;\n }\n const key = getPropertyNameText(prop.name, deriver.checker);\n if (!key) {\n continue;\n }\n if (key === 'status') {\n statusNode = prop.initializer;\n } else if (key === 'headers') {\n headersNode = prop.initializer;\n }\n }\n }\n\n const contentType = inferContentType(\n body,\n headersNode,\n 'application/octet-stream',\n deriver.checker,\n );\n\n const normalized = contentType.toLowerCase();\n const shouldSerialize =\n !!body &&\n (isJsonContentType(normalized) || isTextContentTypeValue(normalized));\n\n return [\n {\n headers: getHeaderKeys(headersNode, deriver),\n contentType,\n statusCode: statusNode ? resolveStatusCode(statusNode) : '200',\n response: shouldSerialize ? deriver.serializeNode(body) : undefined,\n },\n ];\n};\n\nexport function defaultResponseAnalyzer(\n handler: ts.ArrowFunction | ts.FunctionExpression,\n deriver: TypeDeriver,\n) {\n const responsesList: ResponseItem[] = [];\n if (!handler.parameters.length) {\n return responsesList;\n }\n const contextVarName = handler.parameters[0].name.getText();\n const visit = handlerVisitor((node, statusCode, headers, contentType) => {\n const resolvedContentType = inferContentType(\n node,\n headers,\n contentType,\n deriver.checker,\n );\n responsesList.push({\n headers: getHeaderKeys(headers, deriver),\n contentType: resolvedContentType,\n statusCode: statusCode ? resolveStatusCode(statusCode) : '200',\n response: node ? deriver.serializeNode(node) : undefined,\n });\n }, contextVarName);\n visit(handler.body);\n return responsesList;\n}\n\nexport function streamText(\n _handler: ts.ArrowFunction | ts.FunctionExpression,\n _deriver: TypeDeriver,\n): ResponseItem[] {\n return [\n {\n contentType: 'text/plain',\n headers: [{ 'Transfer-Encoding': ['chunked'] }],\n statusCode: '200',\n response: {\n optional: false,\n kind: 'primitive',\n [$types]: ['string'],\n },\n },\n ];\n}\n\nexport function stream(\n _handler: ts.ArrowFunction | ts.FunctionExpression,\n _deriver: TypeDeriver,\n): ResponseItem[] {\n return [\n {\n contentType: 'application/octet-stream',\n headers: [],\n statusCode: '200',\n response: {\n optional: false,\n kind: 'primitive',\n [$types]: ['string'],\n },\n },\n ];\n}\n\nexport function streamSSE(\n _handler: ts.ArrowFunction | ts.FunctionExpression,\n _deriver: TypeDeriver,\n): ResponseItem[] {\n return [\n {\n contentType: 'text/event-stream',\n headers: [],\n statusCode: '200',\n response: {\n optional: false,\n kind: 'primitive',\n [$types]: ['string'],\n },\n },\n ];\n}\n\nexport const httpException: NaunceResponseAnalyzerFn = (\n _handler,\n deriver,\n node,\n) => {\n if (ts.isNewExpression(node)) {\n const [status, options] = node.arguments ?? [];\n // if (!ts.isObjectLiteralExpression(options)) {\n // return [];\n // }\n // const properties = options.properties.reduce<Record<string, string>>(\n // (acc, prop) => {\n // if (ts.isPropertyAssignment(prop)) {\n // const key = prop.name.getText();\n // if (ts.isLiteralExpression(prop.initializer)) {\n // acc[key] = prop.initializer.text;\n // } else {\n // acc[key] = prop.initializer.getText();\n // }\n // }\n // return acc;\n // },\n // {},\n // );\n return [\n {\n contentType: 'application/json',\n headers: [],\n statusCode: resolveStatusCode(status),\n response: options ? deriver.serializeNode(options) : undefined,\n },\n ];\n }\n return [];\n};\n\nexport const responseAnalyzer = {\n default: defaultResponseAnalyzer,\n streamText,\n stream,\n streamSSE,\n 'new.Response': newResponse,\n 'throw.new.HTTPException': httpException,\n};\n\nexport default responseAnalyzer;\n", "import ts from 'typescript';\n\nfunction unwrapExpression(node: ts.Expression): ts.Expression {\n let current = node;\n while (true) {\n if (ts.isAsExpression(current)) {\n current = current.expression;\n continue;\n }\n if (ts.isTypeAssertionExpression(current)) {\n current = current.expression;\n continue;\n }\n if (ts.isParenthesizedExpression(current)) {\n current = current.expression;\n continue;\n }\n return current;\n }\n}\n\nfunction literalValueFromType(\n type: ts.Type,\n checker: ts.TypeChecker,\n): string | number | boolean | undefined {\n if (type.isStringLiteral()) {\n return type.value;\n }\n if (type.isNumberLiteral()) {\n return type.value;\n }\n if (type.flags & ts.TypeFlags.BooleanLiteral) {\n return checker.typeToString(type) === 'true';\n }\n return undefined;\n}\n\nexport function getConstantValue(\n checker: ts.TypeChecker,\n expression: ts.Expression,\n): string | number | boolean | undefined {\n const unwrapped = unwrapExpression(expression);\n\n const constant = checker.getConstantValue(\n unwrapped as\n ts.EnumMember | ts.PropertyAccessExpression | ts.ElementAccessExpression,\n );\n if (constant !== undefined) {\n return constant;\n }\n\n if (\n ts.isStringLiteral(unwrapped) ||\n ts.isNoSubstitutionTemplateLiteral(unwrapped)\n ) {\n return unwrapped.text;\n }\n if (ts.isNumericLiteral(unwrapped)) {\n return Number(unwrapped.text);\n }\n if (unwrapped.kind === ts.SyntaxKind.TrueKeyword) {\n return true;\n }\n if (unwrapped.kind === ts.SyntaxKind.FalseKeyword) {\n return false;\n }\n\n const type = checker.getTypeAtLocation(unwrapped);\n const literal = literalValueFromType(type, checker);\n if (literal !== undefined) {\n return literal;\n }\n if (type.isUnion()) {\n let resolved: string | number | boolean | undefined = undefined;\n for (const entry of type.types) {\n const value = literalValueFromType(entry, checker);\n if (value === undefined) {\n return undefined;\n }\n if (resolved === undefined) {\n resolved = value;\n } else if (resolved !== value) {\n return undefined;\n }\n }\n return resolved;\n }\n return undefined;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["ts", "ts", "key"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constant-value.d.ts","sourceRoot":"","sources":["../../src/lib/constant-value.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAqC5B,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,EAAE,CAAC,WAAW,EACvB,UAAU,EAAE,EAAE,CAAC,UAAU,GACxB,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"constant-value.d.ts","sourceRoot":"","sources":["../../src/lib/constant-value.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAqC5B,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,EAAE,CAAC,WAAW,EACvB,UAAU,EAAE,EAAE,CAAC,UAAU,GACxB,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAgDvC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-analyzer.d.ts","sourceRoot":"","sources":["../../src/lib/response-analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAEL,KAAK,wBAAwB,EAC7B,KAAK,YAAY,EACjB,KAAK,WAAW,EACjB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"response-analyzer.d.ts","sourceRoot":"","sources":["../../src/lib/response-analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAEL,KAAK,wBAAwB,EAC7B,KAAK,YAAY,EACjB,KAAK,WAAW,EACjB,MAAM,cAAc,CAAC;AAmQtB,eAAO,MAAM,WAAW,EAAE,wBA0DzB,CAAC;AAEF,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,EAAE,CAAC,aAAa,GAAG,EAAE,CAAC,kBAAkB,EACjD,OAAO,EAAE,WAAW,kBAuBrB;AAED,wBAAgB,UAAU,CACxB,QAAQ,EAAE,EAAE,CAAC,aAAa,GAAG,EAAE,CAAC,kBAAkB,EAClD,QAAQ,EAAE,WAAW,GACpB,YAAY,EAAE,CAahB;AAED,wBAAgB,MAAM,CACpB,QAAQ,EAAE,EAAE,CAAC,aAAa,GAAG,EAAE,CAAC,kBAAkB,EAClD,QAAQ,EAAE,WAAW,GACpB,YAAY,EAAE,CAahB;AAED,wBAAgB,SAAS,CACvB,QAAQ,EAAE,EAAE,CAAC,aAAa,GAAG,EAAE,CAAC,kBAAkB,EAClD,QAAQ,EAAE,WAAW,GACpB,YAAY,EAAE,CAahB;AAED,eAAO,MAAM,aAAa,EAAE,wBAkC3B,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;;;;;CAO5B,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/lib/runtime/output.ts", "../../../src/lib/runtime/validator.ts"],
|
|
4
|
-
"sourcesContent": ["import type { Context } from 'hono';\nimport { getContext } from 'hono/context-storage';\nimport type {\n ContentfulStatusCode,\n RedirectStatusCode,\n} from 'hono/utils/http-status';\n\ntype Data = any;\nfunction send(\n context: Context,\n value: Data | undefined | null,\n status: ContentfulStatusCode,\n headers?: Readonly<Record<string, string>>,\n) {\n if (value === undefined || value === null) {\n return context.body(null, status, headers);\n }\n const responseHeaders = { ...headers };\n responseHeaders['Content-Type'] ??= 'application/json';\n if (responseHeaders['Content-Type'].includes('application/json')) {\n return context.body(JSON.stringify(value), status, responseHeaders);\n }\n return context.body(value, status, responseHeaders);\n}\n\nexport function createOutput(contextFn: () => Context) {\n return {\n nocontent() {\n const context = contextFn();\n return context.body(null, 204, {});\n },\n ok(value: Data | undefined | null, headers?: Record<string, string>) {\n return send(contextFn(), value, 200, headers);\n },\n created(\n valueOrUri: string | Data,\n value: Data | undefined | null,\n headers?: Record<string, string>,\n ) {\n if (typeof valueOrUri === 'string') {\n // If no content is provided, we send null\n return send(contextFn(), value, 201, {\n Location: valueOrUri,\n ...(headers || {}),\n });\n } else {\n // valueOrUri is the data\n return send(contextFn(), valueOrUri, 201, headers);\n }\n },\n redirect(uri: string | URL, statusCode?: unknown) {\n const context = contextFn();\n return context.redirect(\n uri.toString(),\n (statusCode as RedirectStatusCode) ?? undefined,\n );\n },\n attachment(buffer: Buffer, filename: string, mimeType: string) {\n const context = contextFn();\n // https://github.com/honojs/hono/issues/3720\n return context.body(buffer as never, 200, {\n 'Content-Type': mimeType,\n 'Content-Disposition': `attachment; filename=\"${filename}\"`,\n 'Content-Length': buffer.length.toString(),\n });\n },\n badRequest(\n value: Data | undefined | null,\n headers?: Record<string, string>,\n ) {\n return send(contextFn(), value, 400, headers);\n },\n unauthorized(\n value: Data | undefined | null,\n headers?: Record<string, string>,\n ) {\n return send(contextFn(), value, 401, headers);\n },\n forbidden(\n value: Data | undefined | null,\n headers?: Record<string, string>,\n ) {\n return send(contextFn(), value, 403, headers);\n },\n notFound(value: Data | undefined | null, headers?: Record<string, string>) {\n return send(contextFn(), value, 404, headers);\n },\n notImplemented(\n value: Data | undefined | null,\n headers?: Record<string, string>,\n ) {\n return send(contextFn(), value, 501, headers);\n },\n accepted(value: Data | undefined | null, headers?: Record<string, string>) {\n return send(contextFn(), value, 202, headers);\n },\n conflict(value: Data | undefined | null, headers?: Record<string, string>) {\n return send(contextFn(), value, 409, headers);\n },\n unprocessableEntity(\n value: Data | undefined | null,\n headers?: Record<string, string>,\n ) {\n return send(contextFn(), value, 422, headers);\n },\n internalServerError(\n value: Data | undefined | null,\n headers?: Record<string, string>,\n ) {\n return send(contextFn(), value, 500, headers);\n },\n serviceUnavailable(\n value: Data | undefined | null,\n headers?: Record<string, string>,\n ) {\n return send(contextFn(), value, 503, headers);\n },\n };\n}\n\nexport const output = createOutput(() => getContext());\n", "import { parse as parseContentType } from 'fast-content-type-parse';\nimport type { MiddlewareHandler, ValidationTargets } from 'hono';\nimport { createMiddleware } from 'hono/factory';\nimport { HTTPException } from 'hono/http-exception';\nimport z from 'zod';\n\ntype ContentType =\n | 'application/json'\n | 'application/x-www-form-urlencoded'\n | 'multipart/form-data'\n | 'text/plain';\n\n// z.ZodType<any> mirrors zod v3's ZodTypeAny: with the default `unknown`\n// output, concrete middlewares stop being assignable to\n// ValidateMiddleware<ValidatorConfig>.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype ValidatorConfig = Record<\n string,\n { select: unknown; against: z.ZodType<any> }\n>;\n\ntype ExtractInput<T extends ValidatorConfig> = {\n [K in keyof T]: z.infer<T[K]['against']>;\n};\n\ntype HasUndefined<T> = undefined extends T ? true : false;\n\ntype InferTarget<\n T extends ValidatorConfig,\n S,\n Target extends keyof ValidationTargets,\n> = {\n [K in keyof T as T[K]['select'] extends S ? K : never]: HasUndefined<\n z.infer<T[K]['against']>\n > extends true\n ? z.infer<T[K]['against']> | undefined\n : z.infer<T[K]['against']> extends ValidationTargets[Target]\n ? z.infer<T[K]['against']>\n : z.infer<T[K]['against']>;\n};\n\ntype InferIn<T extends ValidatorConfig> = (keyof InferTarget<\n T,\n QuerySelect | QueriesSelect,\n 'query'\n> extends never\n ? never\n : { query: InferTarget<T, QuerySelect | QueriesSelect, 'query'> }) &\n (keyof InferTarget<T, BodySelect, 'json'> extends never\n ? never\n : { json: InferTarget<T, BodySelect, 'json'> }) &\n (keyof InferTarget<T, ParamsSelect, 'param'> extends never\n ? never\n : { param: InferTarget<T, ParamsSelect, 'param'> }) &\n (keyof InferTarget<T, HeadersSelect, 'header'> extends never\n ? never\n : { header: InferTarget<T, HeadersSelect, 'header'> }) &\n (keyof InferTarget<T, CookieSelect, 'cookie'> extends never\n ? never\n : { cookie: InferTarget<T, CookieSelect, 'cookie'> });\n\n// Marker classes\nclass BodySelect {\n #private = 0;\n}\nclass QuerySelect {\n #private = 0;\n}\nclass QueriesSelect {\n #private = 0;\n}\nclass ParamsSelect {\n #private = 0;\n}\nclass HeadersSelect {\n #private = 0;\n}\nclass CookieSelect {\n #private = 0;\n}\n\ntype SelectorFn<T> = (payload: {\n body: Record<string, BodySelect>;\n query: Record<string, QuerySelect>;\n queries: Record<string, QueriesSelect>;\n params: Record<string, ParamsSelect>;\n headers: Record<string, HeadersSelect>;\n}) => T;\ntype ValidateMiddleware<T extends ValidatorConfig> = MiddlewareHandler<\n {\n Variables: {\n input: ExtractInput<T>;\n };\n },\n string,\n { in: InferIn<T> }\n>;\n\nexport function validate<T extends ValidatorConfig>(\n selector: SelectorFn<T>,\n): ValidateMiddleware<T>;\nexport function validate<T extends ValidatorConfig>(\n expectedContentTypeOrSelector: ContentType,\n selector: SelectorFn<T>,\n): ValidateMiddleware<T>;\nexport function validate<T extends ValidatorConfig>(\n expectedContentTypeOrSelector: ContentType | SelectorFn<T>,\n selector?: SelectorFn<T>,\n): ValidateMiddleware<T> {\n const expectedContentType =\n typeof expectedContentTypeOrSelector === 'string'\n ? expectedContentTypeOrSelector\n : undefined;\n const _selector =\n typeof expectedContentTypeOrSelector === 'function'\n ? expectedContentTypeOrSelector\n : selector;\n if (!_selector) {\n throw new Error('Selector function is required');\n }\n\n return createMiddleware(async (c, next) => {\n const ct = c.req.header('content-type');\n if (c.req.method === 'GET' && ct) {\n throw new HTTPException(415, {\n message: 'Unsupported Media Type',\n cause: {\n code: 'api/unsupported-media-type',\n details: `GET requests cannot have a content type header`,\n },\n });\n }\n if (expectedContentType) {\n verifyContentType(ct, expectedContentType);\n }\n\n const contentType = ct ? parseContentType(ct) : null;\n let body: unknown = null;\n\n switch (contentType?.type) {\n case 'application/json':\n body = await c.req.json();\n break;\n case 'application/x-www-form-urlencoded':\n case 'multipart/form-data':\n body = await c.req.parseBody();\n break;\n default:\n body = {};\n }\n\n const payload = {\n body,\n query: c.req.query(),\n queries: c.req.queries(),\n params: c.req.param(),\n headers: Object.fromEntries(\n Object.entries(c.req.header()).map(([k, v]) => [k, v ?? '']),\n ),\n };\n\n const config = _selector(payload as never);\n const schema = z.object(\n Object.entries(config).reduce(\n (acc, [key, value]) => {\n acc[key] = value.against;\n return acc;\n },\n {} as Record<string, z.ZodType>,\n ),\n );\n\n const input = Object.entries(config).reduce(\n (acc, [key, value]) => {\n acc[key] = value.select;\n return acc;\n },\n {} as Record<string, unknown>,\n );\n\n const parsed = await parse(schema, input);\n c.set('input', parsed as ExtractInput<T>);\n await next();\n });\n}\n\nexport async function parse<T extends z.ZodRawShape>(\n schema: z.ZodObject<T>,\n input: unknown,\n) {\n const result = await schema.safeParseAsync(input);\n if (!result.success) {\n const error = new HTTPException(400, {\n message: 'Validation failed',\n cause: {\n code: 'api/validation-failed',\n detail: 'The input data is invalid',\n errors: z.flattenError(result.error, (issue) => ({\n message: issue.message,\n code: issue.code,\n path: issue.path.join('.'),\n })).fieldErrors,\n },\n });\n throw error;\n }\n return result.data;\n}\n\nexport const openapi = validate;\n\nexport const consume = (contentType: ContentType) => {\n return createMiddleware(async (context, next) => {\n verifyContentType(context.req.header('content-type'), contentType);\n await next();\n });\n};\n\nexport function verifyContentType(\n actual: string | undefined,\n expected: ContentType,\n): asserts actual is ContentType {\n if (!actual) {\n throw new HTTPException(415, {\n message: 'Unsupported Media Type',\n cause: {\n code: 'api/unsupported-media-type',\n details: 'Missing content type header',\n },\n });\n }\n const { type: incomingContentType } = parseContentType(actual);\n if (incomingContentType !== expected) {\n throw new HTTPException(415, {\n message: 'Unsupported Media Type',\n cause: {\n code: 'api/unsupported-media-type',\n details: `Expected content type: ${expected}, but got: ${incomingContentType}`,\n },\n });\n }\n}\n"],
|
|
4
|
+
"sourcesContent": ["import type { Context } from 'hono';\nimport { getContext } from 'hono/context-storage';\nimport type {\n ContentfulStatusCode,\n RedirectStatusCode,\n} from 'hono/utils/http-status';\n\ntype Data = any;\nfunction send(\n context: Context,\n value: Data | undefined | null,\n status: ContentfulStatusCode,\n headers?: Readonly<Record<string, string>>,\n) {\n if (value === undefined || value === null) {\n return context.body(null, status, headers);\n }\n const responseHeaders = { ...headers };\n responseHeaders['Content-Type'] ??= 'application/json';\n if (responseHeaders['Content-Type'].includes('application/json')) {\n return context.body(JSON.stringify(value), status, responseHeaders);\n }\n return context.body(value, status, responseHeaders);\n}\n\nexport function createOutput(contextFn: () => Context) {\n return {\n nocontent() {\n const context = contextFn();\n return context.body(null, 204, {});\n },\n ok(value: Data | undefined | null, headers?: Record<string, string>) {\n return send(contextFn(), value, 200, headers);\n },\n created(\n valueOrUri: string | Data,\n value: Data | undefined | null,\n headers?: Record<string, string>,\n ) {\n if (typeof valueOrUri === 'string') {\n // If no content is provided, we send null\n return send(contextFn(), value, 201, {\n Location: valueOrUri,\n ...(headers || {}),\n });\n } else {\n // valueOrUri is the data\n return send(contextFn(), valueOrUri, 201, headers);\n }\n },\n redirect(uri: string | URL, statusCode?: unknown) {\n const context = contextFn();\n return context.redirect(\n uri.toString(),\n (statusCode as RedirectStatusCode) ?? undefined,\n );\n },\n attachment(buffer: Buffer, filename: string, mimeType: string) {\n const context = contextFn();\n // https://github.com/honojs/hono/issues/3720\n return context.body(buffer as never, 200, {\n 'Content-Type': mimeType,\n 'Content-Disposition': `attachment; filename=\"${filename}\"`,\n 'Content-Length': buffer.length.toString(),\n });\n },\n badRequest(\n value: Data | undefined | null,\n headers?: Record<string, string>,\n ) {\n return send(contextFn(), value, 400, headers);\n },\n unauthorized(\n value: Data | undefined | null,\n headers?: Record<string, string>,\n ) {\n return send(contextFn(), value, 401, headers);\n },\n forbidden(\n value: Data | undefined | null,\n headers?: Record<string, string>,\n ) {\n return send(contextFn(), value, 403, headers);\n },\n notFound(value: Data | undefined | null, headers?: Record<string, string>) {\n return send(contextFn(), value, 404, headers);\n },\n notImplemented(\n value: Data | undefined | null,\n headers?: Record<string, string>,\n ) {\n return send(contextFn(), value, 501, headers);\n },\n accepted(value: Data | undefined | null, headers?: Record<string, string>) {\n return send(contextFn(), value, 202, headers);\n },\n conflict(value: Data | undefined | null, headers?: Record<string, string>) {\n return send(contextFn(), value, 409, headers);\n },\n unprocessableEntity(\n value: Data | undefined | null,\n headers?: Record<string, string>,\n ) {\n return send(contextFn(), value, 422, headers);\n },\n internalServerError(\n value: Data | undefined | null,\n headers?: Record<string, string>,\n ) {\n return send(contextFn(), value, 500, headers);\n },\n serviceUnavailable(\n value: Data | undefined | null,\n headers?: Record<string, string>,\n ) {\n return send(contextFn(), value, 503, headers);\n },\n };\n}\n\nexport const output = createOutput(() => getContext());\n", "import { parse as parseContentType } from 'fast-content-type-parse';\nimport type { MiddlewareHandler, ValidationTargets } from 'hono';\nimport { createMiddleware } from 'hono/factory';\nimport { HTTPException } from 'hono/http-exception';\nimport z from 'zod';\n\ntype ContentType =\n | 'application/json'\n | 'application/x-www-form-urlencoded'\n | 'multipart/form-data'\n | 'text/plain';\n\n// z.ZodType<any> mirrors zod v3's ZodTypeAny: with the default `unknown`\n// output, concrete middlewares stop being assignable to\n// ValidateMiddleware<ValidatorConfig>.\n\ntype ValidatorConfig = Record<\n string,\n { select: unknown; against: z.ZodType<any> }\n>;\n\ntype ExtractInput<T extends ValidatorConfig> = {\n [K in keyof T]: z.infer<T[K]['against']>;\n};\n\ntype HasUndefined<T> = undefined extends T ? true : false;\n\ntype InferTarget<\n T extends ValidatorConfig,\n S,\n Target extends keyof ValidationTargets,\n> = {\n [K in keyof T as T[K]['select'] extends S ? K : never]: HasUndefined<\n z.infer<T[K]['against']>\n > extends true\n ? z.infer<T[K]['against']> | undefined\n : z.infer<T[K]['against']> extends ValidationTargets[Target]\n ? z.infer<T[K]['against']>\n : z.infer<T[K]['against']>;\n};\n\ntype InferIn<T extends ValidatorConfig> = (keyof InferTarget<\n T,\n QuerySelect | QueriesSelect,\n 'query'\n> extends never\n ? never\n : { query: InferTarget<T, QuerySelect | QueriesSelect, 'query'> }) &\n (keyof InferTarget<T, BodySelect, 'json'> extends never\n ? never\n : { json: InferTarget<T, BodySelect, 'json'> }) &\n (keyof InferTarget<T, ParamsSelect, 'param'> extends never\n ? never\n : { param: InferTarget<T, ParamsSelect, 'param'> }) &\n (keyof InferTarget<T, HeadersSelect, 'header'> extends never\n ? never\n : { header: InferTarget<T, HeadersSelect, 'header'> }) &\n (keyof InferTarget<T, CookieSelect, 'cookie'> extends never\n ? never\n : { cookie: InferTarget<T, CookieSelect, 'cookie'> });\n\n// Marker classes\nclass BodySelect {\n #private = 0;\n}\nclass QuerySelect {\n #private = 0;\n}\nclass QueriesSelect {\n #private = 0;\n}\nclass ParamsSelect {\n #private = 0;\n}\nclass HeadersSelect {\n #private = 0;\n}\nclass CookieSelect {\n #private = 0;\n}\n\ntype SelectorFn<T> = (payload: {\n body: Record<string, BodySelect>;\n query: Record<string, QuerySelect>;\n queries: Record<string, QueriesSelect>;\n params: Record<string, ParamsSelect>;\n headers: Record<string, HeadersSelect>;\n}) => T;\ntype ValidateMiddleware<T extends ValidatorConfig> = MiddlewareHandler<\n {\n Variables: {\n input: ExtractInput<T>;\n };\n },\n string,\n { in: InferIn<T> }\n>;\n\nexport function validate<T extends ValidatorConfig>(\n selector: SelectorFn<T>,\n): ValidateMiddleware<T>;\nexport function validate<T extends ValidatorConfig>(\n expectedContentTypeOrSelector: ContentType,\n selector: SelectorFn<T>,\n): ValidateMiddleware<T>;\nexport function validate<T extends ValidatorConfig>(\n expectedContentTypeOrSelector: ContentType | SelectorFn<T>,\n selector?: SelectorFn<T>,\n): ValidateMiddleware<T> {\n const expectedContentType =\n typeof expectedContentTypeOrSelector === 'string'\n ? expectedContentTypeOrSelector\n : undefined;\n const _selector =\n typeof expectedContentTypeOrSelector === 'function'\n ? expectedContentTypeOrSelector\n : selector;\n if (!_selector) {\n throw new Error('Selector function is required');\n }\n\n return createMiddleware(async (c, next) => {\n const ct = c.req.header('content-type');\n if (c.req.method === 'GET' && ct) {\n throw new HTTPException(415, {\n message: 'Unsupported Media Type',\n cause: {\n code: 'api/unsupported-media-type',\n details: `GET requests cannot have a content type header`,\n },\n });\n }\n if (expectedContentType) {\n verifyContentType(ct, expectedContentType);\n }\n\n const contentType = ct ? parseContentType(ct) : null;\n let body: unknown = null;\n\n switch (contentType?.type) {\n case 'application/json':\n body = await c.req.json();\n break;\n case 'application/x-www-form-urlencoded':\n case 'multipart/form-data':\n body = await c.req.parseBody();\n break;\n default:\n body = {};\n }\n\n const payload = {\n body,\n query: c.req.query(),\n queries: c.req.queries(),\n params: c.req.param(),\n headers: Object.fromEntries(\n Object.entries(c.req.header()).map(([k, v]) => [k, v ?? '']),\n ),\n };\n\n const config = _selector(payload as never);\n const schema = z.object(\n Object.entries(config).reduce(\n (acc, [key, value]) => {\n acc[key] = value.against;\n return acc;\n },\n {} as Record<string, z.ZodType>,\n ),\n );\n\n const input = Object.entries(config).reduce(\n (acc, [key, value]) => {\n acc[key] = value.select;\n return acc;\n },\n {} as Record<string, unknown>,\n );\n\n const parsed = await parse(schema, input);\n c.set('input', parsed as ExtractInput<T>);\n await next();\n });\n}\n\nexport async function parse<T extends z.ZodRawShape>(\n schema: z.ZodObject<T>,\n input: unknown,\n) {\n const result = await schema.safeParseAsync(input);\n if (!result.success) {\n const error = new HTTPException(400, {\n message: 'Validation failed',\n cause: {\n code: 'api/validation-failed',\n detail: 'The input data is invalid',\n errors: z.flattenError(result.error, (issue) => ({\n message: issue.message,\n code: issue.code,\n path: issue.path.join('.'),\n })).fieldErrors,\n },\n });\n throw error;\n }\n return result.data;\n}\n\nexport const openapi = validate;\n\nexport const consume = (contentType: ContentType) => {\n return createMiddleware(async (context, next) => {\n verifyContentType(context.req.header('content-type'), contentType);\n await next();\n });\n};\n\nexport function verifyContentType(\n actual: string | undefined,\n expected: ContentType,\n): asserts actual is ContentType {\n if (!actual) {\n throw new HTTPException(415, {\n message: 'Unsupported Media Type',\n cause: {\n code: 'api/unsupported-media-type',\n details: 'Missing content type header',\n },\n });\n }\n const { type: incomingContentType } = parseContentType(actual);\n if (incomingContentType !== expected) {\n throw new HTTPException(415, {\n message: 'Unsupported Media Type',\n cause: {\n code: 'api/unsupported-media-type',\n details: `Expected content type: ${expected}, but got: ${incomingContentType}`,\n },\n });\n }\n}\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -2,37 +2,37 @@ import type { Context } from 'hono';
|
|
|
2
2
|
type Data = any;
|
|
3
3
|
export declare function createOutput(contextFn: () => Context): {
|
|
4
4
|
nocontent(): Response & import("hono").TypedResponse<null, 204, "body">;
|
|
5
|
-
ok(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<
|
|
6
|
-
created(valueOrUri: string | Data, value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<
|
|
5
|
+
ok(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<any, -1 | 100 | 102 | 103 | 200 | 201 | 202 | 203 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 305 | 306 | 307 | 308 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511, "body">;
|
|
6
|
+
created(valueOrUri: string | Data, value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<any, -1 | 100 | 102 | 103 | 200 | 201 | 202 | 203 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 305 | 306 | 307 | 308 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511, "body">;
|
|
7
7
|
redirect(uri: string | URL, statusCode?: unknown): Response & import("hono").TypedResponse<undefined, 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308, "redirect">;
|
|
8
|
-
attachment(buffer: Buffer, filename: string, mimeType: string): Response & import("hono").TypedResponse<
|
|
9
|
-
badRequest(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<
|
|
10
|
-
unauthorized(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<
|
|
11
|
-
forbidden(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<
|
|
12
|
-
notFound(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<
|
|
13
|
-
notImplemented(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<
|
|
14
|
-
accepted(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<
|
|
15
|
-
conflict(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<
|
|
16
|
-
unprocessableEntity(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<
|
|
17
|
-
internalServerError(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<
|
|
18
|
-
serviceUnavailable(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<
|
|
8
|
+
attachment(buffer: Buffer, filename: string, mimeType: string): Response & import("hono").TypedResponse<never, 200, "body">;
|
|
9
|
+
badRequest(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<any, -1 | 100 | 102 | 103 | 200 | 201 | 202 | 203 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 305 | 306 | 307 | 308 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511, "body">;
|
|
10
|
+
unauthorized(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<any, -1 | 100 | 102 | 103 | 200 | 201 | 202 | 203 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 305 | 306 | 307 | 308 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511, "body">;
|
|
11
|
+
forbidden(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<any, -1 | 100 | 102 | 103 | 200 | 201 | 202 | 203 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 305 | 306 | 307 | 308 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511, "body">;
|
|
12
|
+
notFound(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<any, -1 | 100 | 102 | 103 | 200 | 201 | 202 | 203 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 305 | 306 | 307 | 308 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511, "body">;
|
|
13
|
+
notImplemented(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<any, -1 | 100 | 102 | 103 | 200 | 201 | 202 | 203 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 305 | 306 | 307 | 308 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511, "body">;
|
|
14
|
+
accepted(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<any, -1 | 100 | 102 | 103 | 200 | 201 | 202 | 203 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 305 | 306 | 307 | 308 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511, "body">;
|
|
15
|
+
conflict(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<any, -1 | 100 | 102 | 103 | 200 | 201 | 202 | 203 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 305 | 306 | 307 | 308 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511, "body">;
|
|
16
|
+
unprocessableEntity(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<any, -1 | 100 | 102 | 103 | 200 | 201 | 202 | 203 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 305 | 306 | 307 | 308 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511, "body">;
|
|
17
|
+
internalServerError(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<any, -1 | 100 | 102 | 103 | 200 | 201 | 202 | 203 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 305 | 306 | 307 | 308 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511, "body">;
|
|
18
|
+
serviceUnavailable(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<any, -1 | 100 | 102 | 103 | 200 | 201 | 202 | 203 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 305 | 306 | 307 | 308 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511, "body">;
|
|
19
19
|
};
|
|
20
20
|
export declare const output: {
|
|
21
21
|
nocontent(): Response & import("hono").TypedResponse<null, 204, "body">;
|
|
22
|
-
ok(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<
|
|
23
|
-
created(valueOrUri: string | Data, value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<
|
|
22
|
+
ok(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<any, -1 | 100 | 102 | 103 | 200 | 201 | 202 | 203 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 305 | 306 | 307 | 308 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511, "body">;
|
|
23
|
+
created(valueOrUri: string | Data, value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<any, -1 | 100 | 102 | 103 | 200 | 201 | 202 | 203 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 305 | 306 | 307 | 308 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511, "body">;
|
|
24
24
|
redirect(uri: string | URL, statusCode?: unknown): Response & import("hono").TypedResponse<undefined, 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308, "redirect">;
|
|
25
|
-
attachment(buffer: Buffer, filename: string, mimeType: string): Response & import("hono").TypedResponse<
|
|
26
|
-
badRequest(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<
|
|
27
|
-
unauthorized(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<
|
|
28
|
-
forbidden(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<
|
|
29
|
-
notFound(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<
|
|
30
|
-
notImplemented(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<
|
|
31
|
-
accepted(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<
|
|
32
|
-
conflict(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<
|
|
33
|
-
unprocessableEntity(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<
|
|
34
|
-
internalServerError(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<
|
|
35
|
-
serviceUnavailable(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<
|
|
25
|
+
attachment(buffer: Buffer, filename: string, mimeType: string): Response & import("hono").TypedResponse<never, 200, "body">;
|
|
26
|
+
badRequest(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<any, -1 | 100 | 102 | 103 | 200 | 201 | 202 | 203 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 305 | 306 | 307 | 308 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511, "body">;
|
|
27
|
+
unauthorized(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<any, -1 | 100 | 102 | 103 | 200 | 201 | 202 | 203 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 305 | 306 | 307 | 308 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511, "body">;
|
|
28
|
+
forbidden(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<any, -1 | 100 | 102 | 103 | 200 | 201 | 202 | 203 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 305 | 306 | 307 | 308 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511, "body">;
|
|
29
|
+
notFound(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<any, -1 | 100 | 102 | 103 | 200 | 201 | 202 | 203 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 305 | 306 | 307 | 308 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511, "body">;
|
|
30
|
+
notImplemented(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<any, -1 | 100 | 102 | 103 | 200 | 201 | 202 | 203 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 305 | 306 | 307 | 308 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511, "body">;
|
|
31
|
+
accepted(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<any, -1 | 100 | 102 | 103 | 200 | 201 | 202 | 203 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 305 | 306 | 307 | 308 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511, "body">;
|
|
32
|
+
conflict(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<any, -1 | 100 | 102 | 103 | 200 | 201 | 202 | 203 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 305 | 306 | 307 | 308 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511, "body">;
|
|
33
|
+
unprocessableEntity(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<any, -1 | 100 | 102 | 103 | 200 | 201 | 202 | 203 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 305 | 306 | 307 | 308 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511, "body">;
|
|
34
|
+
internalServerError(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<any, -1 | 100 | 102 | 103 | 200 | 201 | 202 | 203 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 305 | 306 | 307 | 308 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511, "body">;
|
|
35
|
+
serviceUnavailable(value: Data | undefined | null, headers?: Record<string, string>): Response & import("hono").TypedResponse<any, -1 | 100 | 102 | 103 | 200 | 201 | 202 | 203 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 305 | 306 | 307 | 308 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511, "body">;
|
|
36
36
|
};
|
|
37
37
|
export {};
|
|
38
38
|
//# sourceMappingURL=output.d.ts.map
|
|
@@ -59,7 +59,7 @@ export declare function validate<T extends ValidatorConfig>(selector: SelectorFn
|
|
|
59
59
|
export declare function validate<T extends ValidatorConfig>(expectedContentTypeOrSelector: ContentType, selector: SelectorFn<T>): ValidateMiddleware<T>;
|
|
60
60
|
export declare function parse<T extends z.ZodRawShape>(schema: z.ZodObject<T>, input: unknown): Promise<z.core.$InferObjectOutput<T, {}>>;
|
|
61
61
|
export declare const openapi: typeof validate;
|
|
62
|
-
export declare const consume: (contentType: ContentType) => MiddlewareHandler<any, string, {}>;
|
|
62
|
+
export declare const consume: (contentType: ContentType) => MiddlewareHandler<any, string, {}, Response>;
|
|
63
63
|
export declare function verifyContentType(actual: string | undefined, expected: ContentType): asserts actual is ContentType;
|
|
64
64
|
export {};
|
|
65
65
|
//# sourceMappingURL=validator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../../src/lib/runtime/validator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../../src/lib/runtime/validator.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sdk-it/hono",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.46.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -27,13 +27,13 @@
|
|
|
27
27
|
"!**/*.test.*"
|
|
28
28
|
],
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@sdk-it/core": "0.
|
|
30
|
+
"@sdk-it/core": "0.46.0",
|
|
31
31
|
"hono": "^4.7.4",
|
|
32
32
|
"zod": "^4.3.0",
|
|
33
33
|
"fast-content-type-parse": "^3.0.0"
|
|
34
34
|
},
|
|
35
35
|
"peerDependencies": {
|
|
36
|
-
"typescript": "^
|
|
36
|
+
"typescript": "^6.0.3"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@types/debug": "^4.1.12"
|