@sdk-it/hono 0.9.0 → 0.10.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
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
// packages/hono/src/lib/response-analyzer.ts
|
|
2
2
|
import ts from "typescript";
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
$types
|
|
5
|
+
} from "@sdk-it/core";
|
|
4
6
|
var handlerVisitor = (callback, contextVarName) => {
|
|
5
7
|
return (node) => {
|
|
6
8
|
if (ts.isReturnStatement(node) && node.expression) {
|
|
@@ -76,13 +78,29 @@ function stream(handler, deriver) {
|
|
|
76
78
|
}
|
|
77
79
|
];
|
|
78
80
|
}
|
|
81
|
+
var httpException = (handler, deriver, node) => {
|
|
82
|
+
if (ts.isNewExpression(node)) {
|
|
83
|
+
const [status, options] = node.arguments ?? [];
|
|
84
|
+
return [
|
|
85
|
+
{
|
|
86
|
+
contentType: "application/json",
|
|
87
|
+
headers: [],
|
|
88
|
+
statusCode: resolveStatusCode(status),
|
|
89
|
+
response: options ? deriver.serializeNode(options) : void 0
|
|
90
|
+
}
|
|
91
|
+
];
|
|
92
|
+
}
|
|
93
|
+
return [];
|
|
94
|
+
};
|
|
79
95
|
var responseAnalyzer = {
|
|
80
96
|
default: defaultResponseAnalyzer,
|
|
81
97
|
streamText,
|
|
82
|
-
stream
|
|
98
|
+
stream,
|
|
99
|
+
"throw.new.HTTPException": httpException
|
|
83
100
|
};
|
|
84
101
|
export {
|
|
85
102
|
defaultResponseAnalyzer,
|
|
103
|
+
httpException,
|
|
86
104
|
responseAnalyzer,
|
|
87
105
|
stream,
|
|
88
106
|
streamText
|
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/lib/response-analyzer.ts"],
|
|
4
|
-
"sourcesContent": ["import ts from 'typescript';\n\nimport {
|
|
5
|
-
"mappings": ";AAAA,OAAO,QAAQ;AAEf,
|
|
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\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 toResponses(handler: ts.ArrowFunction, deriver: TypeDeriver) {\n const contextVarName = handler.parameters[0].name.getText();\n const responsesList: ResponseItem[] = [];\n const visit = handlerVisitor((node, statusCode, headers, contentType) => {\n responsesList.push({\n headers: headers ? Object.keys(deriver.serializeNode(headers)) : [],\n contentType,\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\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\nexport function defaultResponseAnalyzer(\n handler: ts.ArrowFunction,\n deriver: TypeDeriver,\n) {\n return toResponses(handler, deriver);\n}\n\nexport function streamText(\n handler: ts.ArrowFunction,\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,\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 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 'throw.new.HTTPException': httpException,\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import ts from 'typescript';
|
|
2
|
-
import { type ResponseItem, type TypeDeriver } from '@sdk-it/core';
|
|
2
|
+
import { type NaunceResponseAnalyzerFn, type ResponseItem, type TypeDeriver } from '@sdk-it/core';
|
|
3
3
|
export declare function defaultResponseAnalyzer(handler: ts.ArrowFunction, deriver: TypeDeriver): ResponseItem[];
|
|
4
4
|
export declare function streamText(handler: ts.ArrowFunction, deriver: TypeDeriver): ResponseItem[];
|
|
5
5
|
export declare function stream(handler: ts.ArrowFunction, deriver: TypeDeriver): ResponseItem[];
|
|
6
|
+
export declare const httpException: NaunceResponseAnalyzerFn;
|
|
6
7
|
export declare const responseAnalyzer: {
|
|
7
8
|
default: typeof defaultResponseAnalyzer;
|
|
8
9
|
streamText: typeof streamText;
|
|
9
10
|
stream: typeof stream;
|
|
11
|
+
'throw.new.HTTPException': NaunceResponseAnalyzerFn;
|
|
10
12
|
};
|
|
11
13
|
//# sourceMappingURL=response-analyzer.d.ts.map
|
|
@@ -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,
|
|
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;AAkEtB,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,EAAE,CAAC,aAAa,EACzB,OAAO,EAAE,WAAW,kBAGrB;AAED,wBAAgB,UAAU,CACxB,OAAO,EAAE,EAAE,CAAC,aAAa,EACzB,OAAO,EAAE,WAAW,GACnB,YAAY,EAAE,CAahB;AAED,wBAAgB,MAAM,CACpB,OAAO,EAAE,EAAE,CAAC,aAAa,EACzB,OAAO,EAAE,WAAW,GACnB,YAAY,EAAE,CAahB;AAED,eAAO,MAAM,aAAa,EAAE,wBAkC3B,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;;;CAK5B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sdk-it/hono",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"!**/*.tsbuildinfo"
|
|
27
27
|
],
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@sdk-it/core": "0.
|
|
29
|
+
"@sdk-it/core": "0.10.0",
|
|
30
30
|
"hono": "^4.7.4",
|
|
31
31
|
"typescript": "^5.7.2",
|
|
32
32
|
"zod": "^3.24.2"
|