@bepalo/spine 1.3.12 → 1.5.14

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.
@@ -0,0 +1,238 @@
1
+ import { HandlerRouteEntry, HttpMethodLower, HttpMethodUpper } from "./types";
2
+ export type OpenApiDesc = {
3
+ summary?: string;
4
+ description?: string;
5
+ tags?: string[];
6
+ operationId?: string;
7
+ parameters?: OpenApiParameter[];
8
+ requestBody?: {
9
+ required?: boolean;
10
+ content: Record<string, {
11
+ schema: OpenApiSchema;
12
+ }>;
13
+ };
14
+ responses?: Record<string, {
15
+ description: string;
16
+ content?: Record<string, {
17
+ schema: OpenApiSchema;
18
+ example?: any;
19
+ }>;
20
+ }>;
21
+ security?: Array<Record<string, string[]>>;
22
+ };
23
+ export type OpenApiPathItem = {
24
+ summary?: string;
25
+ description?: string;
26
+ tags?: string[];
27
+ parameters?: OpenApiParameter[];
28
+ requestBody?: OpenApiRequestBody;
29
+ responses: Record<string, OpenApiResponse>;
30
+ security?: Array<Record<string, string[]>>;
31
+ operationId?: string;
32
+ };
33
+ export type OpenApiRequestBody = {
34
+ required?: boolean;
35
+ content: Record<string, {
36
+ schema: OpenApiSchema;
37
+ examples?: Record<string, {
38
+ value: any;
39
+ summary?: string;
40
+ }>;
41
+ }>;
42
+ };
43
+ export type OpenApiResponse = {
44
+ description: string;
45
+ content?: Record<string, {
46
+ schema: OpenApiSchema;
47
+ examples?: Record<string, {
48
+ value: any;
49
+ summary?: string;
50
+ }>;
51
+ }>;
52
+ headers?: Record<string, {
53
+ description?: string;
54
+ schema: OpenApiSchema;
55
+ }>;
56
+ };
57
+ export type OpenApiSecurityScheme = {
58
+ type: "apiKey" | "http" | "oauth2" | "openIdConnect";
59
+ description?: string;
60
+ name?: string;
61
+ in?: "query" | "header" | "cookie";
62
+ scheme?: string;
63
+ bearerFormat?: string;
64
+ flows?: {
65
+ implicit?: {
66
+ authorizationUrl: string;
67
+ scopes: Record<string, string>;
68
+ };
69
+ password?: {
70
+ tokenUrl: string;
71
+ scopes: Record<string, string>;
72
+ };
73
+ clientCredentials?: {
74
+ tokenUrl: string;
75
+ scopes: Record<string, string>;
76
+ };
77
+ authorizationCode?: {
78
+ authorizationUrl: string;
79
+ tokenUrl: string;
80
+ scopes: Record<string, string>;
81
+ };
82
+ };
83
+ openIdConnectUrl?: string;
84
+ };
85
+ export type OpenApiParameter = {
86
+ name: string;
87
+ description?: string;
88
+ in: "query" | "header" | "path" | "cookie";
89
+ required?: boolean;
90
+ schema: OpenApiSchema;
91
+ };
92
+ export type OpenApiSchema = {
93
+ type?: "string" | "number" | "integer" | "boolean" | "array" | "object";
94
+ title?: string;
95
+ description?: string;
96
+ minLength?: number;
97
+ maxLength?: number;
98
+ pattern?: string;
99
+ format?: "date" | "date-time" | "email" | "uuid" | "uri" | "hostname" | "ipv4" | "ipv6" | "binary" | "base64" | "byte";
100
+ enum?: string[];
101
+ minimum?: number;
102
+ maximum?: number;
103
+ exclusiveMinimum?: number;
104
+ exclusiveMaximum?: number;
105
+ multipleOf?: number;
106
+ items?: OpenApiSchema;
107
+ minItems?: number;
108
+ maxItems?: number;
109
+ uniqueItems?: boolean;
110
+ properties?: Record<string, OpenApiSchema>;
111
+ required?: string[];
112
+ additionalProperties?: boolean | OpenApiSchema;
113
+ minProperties?: number;
114
+ maxProperties?: number;
115
+ allOf?: OpenApiSchema[];
116
+ anyOf?: OpenApiSchema[];
117
+ oneOf?: OpenApiSchema[];
118
+ not?: OpenApiSchema;
119
+ nullable?: boolean;
120
+ example?: any;
121
+ default?: any;
122
+ readOnly?: boolean;
123
+ writeOnly?: boolean;
124
+ deprecated?: boolean;
125
+ externalDocs?: {
126
+ description?: string;
127
+ url: string;
128
+ };
129
+ };
130
+ export interface GenerateOpenApiInfo {
131
+ title?: string;
132
+ version?: string;
133
+ description?: string;
134
+ servers?: Array<{
135
+ url: string;
136
+ description?: string;
137
+ }>;
138
+ security?: Array<Record<string, string[]>>;
139
+ components?: {
140
+ schemas?: Record<string, OpenApiSchema>;
141
+ securitySchemes?: Record<string, OpenApiSecurityScheme>;
142
+ parameters?: Record<string, OpenApiParameter>;
143
+ responses?: Record<string, OpenApiResponse>;
144
+ examples?: Record<string, {
145
+ value: any;
146
+ summary?: string;
147
+ }>;
148
+ };
149
+ termsOfService?: string;
150
+ contact?: {
151
+ name?: string;
152
+ url?: string;
153
+ email?: string;
154
+ };
155
+ license?: {
156
+ name: string;
157
+ url?: string;
158
+ };
159
+ tags?: Array<{
160
+ name: string;
161
+ description?: string;
162
+ externalDocs?: {
163
+ description?: string;
164
+ url: string;
165
+ };
166
+ }>;
167
+ externalDocs?: {
168
+ description?: string;
169
+ url: string;
170
+ };
171
+ }
172
+ export declare const SORT_METHOD_PRIORITY_INDEX: Readonly<Map<HttpMethodUpper, number>>;
173
+ export interface GenerateOpenAPISortParam {
174
+ method: HttpMethodUpper;
175
+ path: string;
176
+ parts: readonly string[];
177
+ tags: readonly string[];
178
+ }
179
+ export interface GenerateOpenAPIOptions<ExtendContext extends Record<string, unknown> = Record<string, unknown>> {
180
+ pick?: (entry: GenerateOpenAPISortParam) => boolean;
181
+ includeOperationId?: boolean;
182
+ autoTag?: boolean | ((entry: HandlerRouteEntry<ExtendContext>) => string[]);
183
+ commonParameters?: OpenApiParameter[];
184
+ autoSummary?: boolean;
185
+ cleanOperationId?: boolean;
186
+ sortTagsOrder?: 1 | -1;
187
+ sortMethodOrder?: 1 | -1;
188
+ sortPathnameOrder?: 1 | -1;
189
+ sortMethodPriorityMap?: Map<HttpMethodUpper, number>;
190
+ routeSorter?: (a: GenerateOpenAPISortParam, b: GenerateOpenAPISortParam) => number;
191
+ }
192
+ export interface GeneratedOpenApi {
193
+ openapi: "3.0.0";
194
+ info: {
195
+ title: string;
196
+ version: string;
197
+ description?: string;
198
+ termsOfService?: string;
199
+ contact?: {
200
+ name?: string;
201
+ url?: string;
202
+ email?: string;
203
+ };
204
+ license?: {
205
+ name: string;
206
+ url?: string;
207
+ };
208
+ };
209
+ servers?: Array<{
210
+ url: string;
211
+ description?: string;
212
+ }>;
213
+ tags?: Array<{
214
+ name: string;
215
+ description?: string;
216
+ externalDocs?: {
217
+ description?: string;
218
+ url: string;
219
+ };
220
+ }>;
221
+ externalDocs?: {
222
+ description?: string;
223
+ url: string;
224
+ };
225
+ paths: Record<string, Record<HttpMethodLower, OpenApiPathItem>>;
226
+ components?: {
227
+ schemas?: Record<string, OpenApiSchema>;
228
+ securitySchemes?: Record<string, OpenApiSecurityScheme>;
229
+ parameters?: Record<string, OpenApiParameter>;
230
+ responses?: Record<string, OpenApiResponse>;
231
+ examples?: Record<string, {
232
+ value: any;
233
+ summary?: string;
234
+ }>;
235
+ };
236
+ security?: Array<Record<string, string[]>>;
237
+ }
238
+ //# sourceMappingURL=types.openapi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.openapi.d.ts","sourceRoot":"","sources":["../../src/types.openapi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ // src/types.openapi.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.SORT_METHOD_PRIORITY_INDEX = void 0;
5
+ exports.SORT_METHOD_PRIORITY_INDEX = Object.freeze(new Map([
6
+ ["HEAD", 0],
7
+ ["GET", 1],
8
+ ["POST", 2],
9
+ ["PUT", 3],
10
+ ["PATCH", 4],
11
+ ["DELETE", 5],
12
+ ["OPTIONS", 6],
13
+ ["TRACE", 7],
14
+ ]));
15
+ //# sourceMappingURL=types.openapi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.openapi.js","sourceRoot":"","sources":["../../src/types.openapi.ts"],"names":[],"mappings":";AAAA,uBAAuB;;;AAkNV,QAAA,0BAA0B,GAAG,MAAM,CAAC,MAAM,CACrD,IAAI,GAAG,CAA0B;IAC/B,CAAC,MAAM,EAAE,CAAC,CAAC;IACX,CAAC,KAAK,EAAE,CAAC,CAAC;IACV,CAAC,MAAM,EAAE,CAAC,CAAC;IACX,CAAC,KAAK,EAAE,CAAC,CAAC;IACV,CAAC,OAAO,EAAE,CAAC,CAAC;IACZ,CAAC,QAAQ,EAAE,CAAC,CAAC;IACb,CAAC,SAAS,EAAE,CAAC,CAAC;IACd,CAAC,OAAO,EAAE,CAAC,CAAC;CACb,CAAC,CACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAiFzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,eAAO,MAAM,4BAA4B,GAAU,kHAShD;IACD,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,gBAAgB,CAAC,EAAE,OAAO,GAAG;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACvC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,EAAE,IAAI,EAAE,WAAW,KAAK,OAAO,GAAG,IAAI,CAAC;CACzE,KAAG,OAAO,CAAC,MAAM,CAkGjB,CAAC;AAEF,eAAe,4BAA4B,CAAC"}
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAwFzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,eAAO,MAAM,4BAA4B,GAAU,kHAShD;IACD,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,gBAAgB,CAAC,EAAE,OAAO,GAAG;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACvC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,EAAE,IAAI,EAAE,WAAW,KAAK,OAAO,GAAG,IAAI,CAAC;CACzE,KAAG,OAAO,CAAC,MAAM,CA2GjB,CAAC;AAEF,eAAe,4BAA4B,CAAC"}
package/dist/generator.js CHANGED
@@ -1,4 +1,37 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
36
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
37
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -29,10 +62,10 @@ var __asyncValues = (this && this.__asyncValues) || function (o) {
29
62
  Object.defineProperty(exports, "__esModule", { value: true });
30
63
  exports.generateStaticRoutesImporter = void 0;
31
64
  const types_ts_1 = require("./types.js");
32
- const router_ts_1 = require("./router.js");
65
+ const router_ts_1 = __importStar(require("./router.js"));
33
66
  const utils_node_ts_1 = require("./utils.node.js");
34
67
  const node_crypto_1 = require("node:crypto");
35
- function getRouteLoaders(routerId, moduleId, pathname, module, importPath) {
68
+ function getRouteLoaders(routerId, moduleId, pathname, module, importPath, testRouter) {
36
69
  let setters = "";
37
70
  for (const [methodHandler, def] of Object.entries(module)) {
38
71
  // get method and handler type
@@ -70,6 +103,7 @@ function getRouteLoaders(routerId, moduleId, pathname, module, importPath) {
70
103
  const entryId = `${moduleId}.${methodHandler}`;
71
104
  const optionsStr = Object.entries(options).length > 0 ? `, $O(${entryId})` : "";
72
105
  const pipeStr = defIsObject ? `${entryId}.pipe` : entryId;
106
+ testRouter.register(handlerType, `${method} ${pathname}`, pipe, options);
73
107
  switch (handlerType) {
74
108
  case "filter":
75
109
  setters += `\n ${routerId}.filter${method}("${pathname}", ${pipeStr}${optionsStr});`;
@@ -144,6 +178,7 @@ function getRouteLoaders(routerId, moduleId, pathname, module, importPath) {
144
178
  */
145
179
  const generateStaticRoutesImporter = (_a) => __awaiter(void 0, [_a], void 0, function* ({ routesPath, importRoot = "./", usePathForIdGeneration = false, importExtensions = false, pattern = /\.(js|ts|mjs|cjs)$/, dirPattern = /.*/, processName = (name) => name.substring(0, name.lastIndexOf(".")), onError, }) {
146
180
  var _b, e_1, _c, _d;
181
+ const testRouter = new router_ts_1.default();
147
182
  let imports = "";
148
183
  let loads = "";
149
184
  const prefix = "route";
@@ -187,7 +222,8 @@ const generateStaticRoutesImporter = (_a) => __awaiter(void 0, [_a], void 0, fun
187
222
  : (0, node_crypto_1.hash)("sha1", pureRelativePath, "base64url").replace(/[^a-zA-Z0-9_]/g, "_"));
188
223
  const importPath = importRoot + pureRelativePath + extension;
189
224
  const module = (yield (0, utils_node_ts_1.dynamicImport)(fullPath));
190
- const routeDef = " " + getRouteLoaders("router", importName, pathname, module, _path);
225
+ const routeDef = " " +
226
+ getRouteLoaders("router", importName, pathname, module, _path, testRouter);
191
227
  const importStr = `import * as ${importName} from "${importPath}";\n`;
192
228
  const loadStr = routeDef;
193
229
  let entry = map.get("/" + parent);
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
package/dist/router.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ExtractParams, HttpError, type HttpMethodLower, type OpenApiPathItem, type CTError, type CTResponse, type EmptyRecord, type Handler, type HandlerRegisterPiplineOptions, type HandlerType, type HttpMethod, type HttpMethodUpper, type MethodPath, type Path, type Pipe, type RegisterPiplineOptions, type RespondContext, type RouterConfig, OpenApiSchema, OpenApiSecurityScheme } from "./types.ts";
1
+ import { ExtractParams, HttpError, type CTError, type CTResponse, type EmptyRecord, type Handler, type HandlerRegisterPiplineOptions, type HandlerType, type HttpMethod, type HttpMethodUpper, type MethodPath, type Path, type Pipe, type RegisterPiplineOptions, type RespondContext, type RouterConfig, GenerateOpenApiInfo, GenerateOpenAPIOptions, GeneratedOpenApi } from "./types.ts";
2
2
  import { CTParams } from "./parsers.ts";
3
3
  export declare const PATH_PART_REGEX: RegExp;
4
4
  export declare const REGISTER_PATH_REGEX: RegExp;
@@ -33,37 +33,96 @@ export declare class Router<_ExtendContext extends Record<string, unknown> = Emp
33
33
  dirPattern?: RegExp;
34
34
  processName?: (name: string) => string;
35
35
  }): Promise<void>;
36
- generateOpenAPI(info?: {
37
- title?: string;
38
- version?: string;
39
- description?: string;
40
- servers?: Array<{
41
- url: string;
42
- description?: string;
43
- }>;
44
- security?: Array<Record<string, string[]>>;
45
- components?: {
46
- schemas?: Record<string, OpenApiSchema>;
47
- securitySchemes?: Record<string, OpenApiSecurityScheme>;
48
- };
49
- }): Promise<{
50
- openapi: "3.0.0";
51
- info: {
52
- title: string;
53
- version: string;
54
- description?: string;
55
- };
56
- servers?: Array<{
57
- url: string;
58
- description?: string;
59
- }>;
60
- paths: Record<string, Record<HttpMethodLower, OpenApiPathItem>>;
61
- components?: {
62
- schemas?: Record<string, OpenApiSchema>;
63
- securitySchemes?: Record<string, OpenApiSecurityScheme>;
64
- };
65
- security?: Array<Record<string, string[]>>;
66
- }>;
36
+ /**
37
+ * Generates an OpenAPI 3.0.0 specification document from the registered routes.
38
+ *
39
+ * This method scans all registered routes and builds a comprehensive OpenAPI specification
40
+ * that can be used with Swagger UI, Redoc, or any OpenAPI-compatible tooling.
41
+ *
42
+ * @param info - Configuration for the OpenAPI document
43
+ * @param info.title - API title (defaults to "API")
44
+ * @param info.version - API version (defaults to "1.0.0")
45
+ * @param info.description - API description
46
+ * @param info.servers - Array of server URLs and descriptions
47
+ * @param info.security - Global security requirements
48
+ * @param info.components - Reusable components (schemas, securitySchemes, parameters, responses, examples)
49
+ * @param info.termsOfService - URL to terms of service
50
+ * @param info.contact - Contact information for the API
51
+ * @param info.license - License information
52
+ * @param info.tags - Global tags for grouping operations
53
+ * @param info.externalDocs - External documentation reference
54
+ *
55
+ * @param options - Generation options
56
+ * @param {Map<HttpMethodUpper,number>} options.sortMethodPriorityMap - Map method to priority for the default sorter.
57
+ * @param {1|-1|undefined} options.sortPathnameOrder - Enable and define the pathname sort order for the default sorter.
58
+ * @param {1|-1|undefined} options.sortMethodOrder - Enable and define the method sort order for the default sorter.
59
+ * @param {1|-1|undefined} options.sortTagsOrder - Enable and define the tags sort order for the default sorter.
60
+ * @param options.pick - Filter function to selectively include routes
61
+ * - Receives one `GenerateOpenAPISortParam` parameter: `{ method, path, parts, tags }`
62
+ * - Return true to include, false to exclude
63
+ * @param options.routeSorter - Custom route sorter.
64
+ * - Recieves two `GenerateOpenAPISortParam` parameters: `{ method, path, parts, tags }`
65
+ * - Return -1, 0, 1
66
+ * @param options.includeOperationId - Whether to generate operationId for each operation (default: true)
67
+ * @param options.autoTag - Automatically tag operations based on path (default: true)
68
+ * - When `true`, uses the first path segment as the tag
69
+ * - When a function, allows custom tag generation
70
+ * @param options.commonParameters - Parameters to apply to all operations
71
+ * @param options.autoSummary - Generate summary from path when not provided (default: true)
72
+ * @param options.cleanOperationId - Remove special characters from operation IDs (default: true)
73
+
74
+ * @returns {Promise<GeneratedOpenApi>} A promise that resolves to the complete OpenAPI 3.0.0 specification
75
+ *
76
+ * @example
77
+ * ```typescript
78
+ * // Basic usage
79
+ * const openapi = await router.generateOpenAPI({
80
+ * title: "My API",
81
+ * version: "2.0.0",
82
+ * description: "My awesome API",
83
+ * });
84
+ *
85
+ * // With custom options
86
+ * const openapi = await router.generateOpenAPI(
87
+ * { title: "My API", version: "1.0.0" },
88
+ * {
89
+ * pick: ({ tags, path, parts, method }) => {
90
+ * return path.startsWith('/api');
91
+ * },
92
+ * autoTag: ({ path }) => {
93
+ * const parts = path.split('/').filter(p => p && p !== "*");
94
+ * return parts.length > 0 ? [parts[0]] : ['default'];
95
+ * },
96
+ * commonParameters: [
97
+ * {
98
+ * name: 'X-Request-ID',
99
+ * in: 'header',
100
+ * schema: { type: 'string' },
101
+ * description: 'Request ID for tracing'
102
+ * }
103
+ * ]
104
+ * }
105
+ * );
106
+ *
107
+ * // Write to file
108
+ * await Deno.writeTextFile('./openapi.json', JSON.stringify(openapi, null, 2));
109
+ * ```
110
+ *
111
+ * @remarks
112
+ * - Routes with `openApi: false` in their definition are excluded from generation
113
+ * - Super glob routes (`/**`) are automatically excluded
114
+ * - Unnamed glob routes (`/*`) are named by their index like so 'glob1'
115
+ * - Connect HTTP method is not supported
116
+ * - Tags are only included if they are actually used by at least one operation
117
+ * - Response schemas are only included when explicitly provided
118
+ * - Path parameters are automatically extracted from route definitions and forced to `required: true`
119
+ * - Operation IDs are guaranteed to be unique with collision detection
120
+ *
121
+ * @see {@link GenerateOpenApiInfo} for complete info options
122
+ * @see {@link GenerateOpenAPIOptions} for complete generation options
123
+ * @see {@link GeneratedOpenApi} for the return type structure
124
+ */
125
+ generateOpenAPI(info?: GenerateOpenApiInfo, options?: GenerateOpenAPIOptions<ExtendContext>): Promise<GeneratedOpenApi>;
67
126
  all<ExtendContextMore extends Record<string, unknown> = EmptyRecord, P extends Path = Path>(paths: P | Array<P>, pipe: Handler<CTParams<ExtractParams<P>> & ExtendContext & ExtendContextMore> | Pipe<CTParams<ExtractParams<P>> & ExtendContext & ExtendContextMore>, options?: RegisterPiplineOptions): Router<ExtendContext>;
68
127
  crud<ExtendContextMore extends Record<string, unknown> = EmptyRecord, P extends Path = Path>(paths: Path | Array<Path>, pipe: Handler<CTParams<ExtractParams<P>> & ExtendContext & ExtendContextMore> | Pipe<CTParams<ExtractParams<P>> & ExtendContext & ExtendContextMore>, options?: RegisterPiplineOptions): Router<ExtendContext>;
69
128
  head<ExtendContextMore extends Record<string, unknown> = EmptyRecord, P extends Path = Path>(paths: Path | Array<Path>, pipe: Handler<CTParams<ExtractParams<P>> & ExtendContext & ExtendContextMore> | Pipe<CTParams<ExtractParams<P>> & ExtendContext & ExtendContextMore>, options?: RegisterPiplineOptions): Router<ExtendContext>;