@sdk-it/readme 0.22.1 → 0.24.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
@@ -6,6 +6,7 @@ import {
6
6
 
7
7
  // packages/readme/src/lib/prop.emitter.ts
8
8
  import { followRef, isRef } from "@sdk-it/core";
9
+ import { coerceTypes } from "@sdk-it/spec";
9
10
  var PropEmitter = class {
10
11
  #spec;
11
12
  constructor(spec) {
@@ -64,8 +65,7 @@ var PropEmitter = class {
64
65
  lines.push(`- Minimum items: ${schema.minItems}`);
65
66
  if (schema.maxItems !== void 0)
66
67
  lines.push(`- Maximum items: ${schema.maxItems}`);
67
- if (schema.uniqueItems)
68
- lines.push(`- Items must be unique.`);
68
+ if (schema.uniqueItems) lines.push(`- Items must be unique.`);
69
69
  return lines;
70
70
  }
71
71
  #ref($ref) {
@@ -108,8 +108,7 @@ var PropEmitter = class {
108
108
  }
109
109
  #enum(schema) {
110
110
  const lines = [`**Type:** \`${schema.type || "unknown"}\` (enum)`];
111
- if (schema.description)
112
- lines.push(schema.description);
111
+ if (schema.description) lines.push(schema.description);
113
112
  lines.push("**Allowed values:**");
114
113
  lines.push(
115
114
  ...(schema.enum || []).map((val) => `- \`${JSON.stringify(val)}\``)
@@ -222,7 +221,7 @@ var PropEmitter = class {
222
221
  if (schema.enum && Array.isArray(schema.enum)) {
223
222
  return this.#enum(schema);
224
223
  }
225
- let types = Array.isArray(schema.type) ? schema.type : schema.type ? [schema.type] : [];
224
+ let types = coerceTypes(schema);
226
225
  let nullable = false;
227
226
  if (types.includes("null")) {
228
227
  nullable = true;
@@ -237,8 +236,7 @@ var PropEmitter = class {
237
236
  }
238
237
  if (types.length === 0) {
239
238
  const lines2 = ["**Type:** `unknown`"];
240
- if (schema.description)
241
- lines2.push(schema.description);
239
+ if (schema.description) lines2.push(schema.description);
242
240
  if (schema.default !== void 0)
243
241
  lines2.push(`**Default:** \`${JSON.stringify(schema.default)}\``);
244
242
  return lines2;
@@ -249,8 +247,7 @@ var PropEmitter = class {
249
247
  const typeString = types.join(" | ");
250
248
  const nullableSuffix = nullable ? " (nullable)" : "";
251
249
  const lines = [`**Type:** \`${typeString}\`${nullableSuffix}`];
252
- if (schema.description)
253
- lines.push(schema.description);
250
+ if (schema.description) lines.push(schema.description);
254
251
  if (schema.default !== void 0)
255
252
  lines.push(`**Default:** \`${JSON.stringify(schema.default)}\``);
256
253
  return lines;
@@ -259,8 +256,7 @@ var PropEmitter = class {
259
256
  * Process a request body and return markdown documentation
260
257
  */
261
258
  requestBody(requestBody) {
262
- if (!requestBody)
263
- return [];
259
+ if (!requestBody) return [];
264
260
  const lines = [];
265
261
  lines.push(`##### Request Body`);
266
262
  if (requestBody.description) {
package/dist/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/lib/readme.ts", "../src/lib/prop.emitter.ts"],
4
- "sourcesContent": ["import { isEmpty } from '@sdk-it/core';\nimport {\n type OperationEntry,\n type OurOpenAPIObject,\n type TunedOperationObject,\n forEachOperation,\n} from '@sdk-it/spec';\n\nimport { PropEmitter } from './prop.emitter.ts';\n\nexport function toReadme(\n spec: OurOpenAPIObject,\n generators: {\n generateSnippet: (\n entry: OperationEntry,\n operation: TunedOperationObject,\n ) => string;\n },\n) {\n // table of content is the navigation headers in apiref\n const markdown: string[] = [];\n const propEmitter = new PropEmitter(spec);\n\n forEachOperation(spec, (entry, operation) => {\n const { method, path, name } = entry;\n markdown.push(\n `#### ${name || operation.operationId} | ${`_${method.toUpperCase()} ${path}_`}`,\n );\n markdown.push(operation.summary || '');\n\n const snippet = generators.generateSnippet(entry, operation);\n markdown.push(`##### Example usage`);\n markdown.push(snippet);\n\n // Process request body using the refactored emitter\n const requestBodyContent = propEmitter.requestBody(operation.requestBody);\n if (requestBodyContent.length > 1) {\n // Check if more than just the header was added\n markdown.push(requestBodyContent.join('\\n\\n'));\n }\n\n markdown.push(`##### Responses`);\n for (const status in operation.responses) {\n const response = operation.responses[status];\n // Wrap each response in its own toggle\n markdown.push(`<details>`);\n markdown.push(\n `<summary><b>${status}</b> <i>${response.description}</i></summary>`,\n );\n if (!isEmpty(response.content)) {\n for (const [contentType, mediaType] of Object.entries(\n response.content,\n )) {\n markdown.push(`\\n**Content Type:** \\`${contentType}\\``);\n if (mediaType.schema) {\n const schemaDocs = propEmitter.handle(mediaType.schema);\n // hide emitter output under the toggle\n markdown.push(...schemaDocs.map((l) => `\\n${l}`));\n }\n }\n }\n markdown.push(`</details>`);\n }\n });\n return markdown.join('\\n\\n');\n}\n", "import type {\n OpenAPIObject,\n ReferenceObject,\n RequestBodyObject,\n SchemaObject,\n} from 'openapi3-ts/oas31';\n\nimport { followRef, isRef } from '@sdk-it/core';\n\n/**\n * PropEmitter handles converting OpenAPI schemas to Markdown documentation\n * Similar structure to ZodDeserializer but for generating markdown props documentation\n */\nexport class PropEmitter {\n #spec: OpenAPIObject;\n\n constructor(spec: OpenAPIObject) {\n this.#spec = spec;\n }\n\n /**\n * Handle objects (properties)\n */\n #object(schema: SchemaObject): string[] {\n const lines: string[] = [];\n const properties = schema.properties || {};\n\n if (Object.keys(properties).length > 0) {\n lines.push(`**Properties:**`);\n\n for (const [propName, propSchema] of Object.entries(properties)) {\n const isRequired = (schema.required ?? []).includes(propName);\n lines.push(...this.#property(propName, propSchema, isRequired));\n }\n }\n\n // Handle additionalProperties\n if (schema.additionalProperties) {\n lines.push(`**Additional Properties:**`);\n if (typeof schema.additionalProperties === 'boolean') {\n lines.push(`- Allowed: ${schema.additionalProperties}`);\n } else {\n // Indent the schema documentation for additional properties\n lines.push(\n ...this.handle(schema.additionalProperties).map((l) => ` ${l}`),\n );\n }\n }\n\n return lines;\n }\n\n /**\n * Format a property with its type and description\n */\n #property(\n name: string,\n schema: SchemaObject | ReferenceObject,\n required: boolean,\n ): string[] {\n // get full docs and extract the type line\n const docs = this.handle(schema);\n const rawType = docs[0]\n .replace('**Type:** ', '')\n .replace(' (nullable)', '|null');\n\n // detect default if present on the schema\n const defaultVal =\n !isRef(schema) && (schema as SchemaObject).default !== undefined\n ? ` default: ${JSON.stringify((schema as SchemaObject).default)}`\n : '';\n\n // build summary line\n const reqMark = required ? ' required' : '';\n const summary = `- \\`${name}\\` ${rawType}${reqMark}${defaultVal}:`;\n\n // assemble final lines (skip the type and any default in details)\n const detailLines = docs\n .slice(1)\n .filter((l) => !l.startsWith('**Default:**'))\n .map((l) => ` ${l}`);\n\n return [summary, ...detailLines];\n }\n\n /**\n * Handle array schemas\n */\n #array(schema: SchemaObject): string[] {\n const lines: string[] = [];\n lines.push(`**Array items:**`);\n\n if (schema.items) {\n // Get documentation for the items schema\n const itemDocs = this.handle(schema.items);\n // Indent item documentation\n lines.push(...itemDocs.map((line) => ` ${line}`));\n } else {\n lines.push(` **Type:** \\`unknown\\``); // Array of unknown items\n }\n // Add array constraints\n if (schema.minItems !== undefined)\n lines.push(`- Minimum items: ${schema.minItems}`);\n if (schema.maxItems !== undefined)\n lines.push(`- Maximum items: ${schema.maxItems}`);\n if (schema.uniqueItems) lines.push(`- Items must be unique.`);\n\n return lines;\n }\n\n #ref($ref: string): string[] {\n const schemaName = $ref.split('/').pop() || 'object';\n const resolved = followRef<SchemaObject>(this.#spec, $ref);\n // Link to the schema definition (assuming heading anchors are generated elsewhere)\n const lines = [\n `**Type:** [\\`${schemaName}\\`](#${schemaName.toLowerCase()})`,\n ];\n if (resolved.description) {\n lines.push(resolved.description);\n }\n // Avoid deep recursion by default, just link and show description.\n // If more detail is needed, the linked definition should provide it.\n return lines;\n }\n\n #allOf(schemas: (SchemaObject | ReferenceObject)[]): string[] {\n const lines = ['**All of (Intersection):**'];\n schemas.forEach((subSchema, index) => {\n lines.push(`- **Constraint ${index + 1}:**`);\n const subLines = this.handle(subSchema);\n lines.push(...subLines.map((l) => ` ${l}`)); // Indent sub-schema docs\n });\n return lines;\n }\n\n #anyOf(schemas: (SchemaObject | ReferenceObject)[]): string[] {\n const lines = ['**Any of (Union):**'];\n schemas.forEach((subSchema, index) => {\n lines.push(`- **Option ${index + 1}:**`);\n const subLines = this.handle(subSchema);\n lines.push(...subLines.map((l) => ` ${l}`));\n });\n return lines;\n }\n\n #oneOf(schemas: (SchemaObject | ReferenceObject)[]): string[] {\n const lines = ['**One of (Exclusive Union):**'];\n schemas.forEach((subSchema, index) => {\n lines.push(`- **Option ${index + 1}:**`);\n const subLines = this.handle(subSchema);\n lines.push(...subLines.map((l) => ` ${l}`));\n });\n return lines;\n }\n\n #enum(schema: SchemaObject): string[] {\n const lines = [`**Type:** \\`${schema.type || 'unknown'}\\` (enum)`];\n if (schema.description) lines.push(schema.description);\n lines.push('**Allowed values:**');\n lines.push(\n ...(schema.enum || []).map((val) => `- \\`${JSON.stringify(val)}\\``),\n );\n if (schema.default !== undefined) {\n lines.push(`**Default:** \\`${JSON.stringify(schema.default)}\\``);\n }\n return lines;\n }\n\n #normal(type: string, schema: SchemaObject, nullable: boolean): string[] {\n const lines: string[] = [];\n const nullableSuffix = nullable ? ' (nullable)' : '';\n const description = schema.description ? [schema.description] : [];\n\n switch (type) {\n case 'string':\n lines.push(\n `**Type:** \\`string\\`${schema.format ? ` (format: ${schema.format})` : ''}${nullableSuffix}`,\n );\n lines.push(...description);\n if (schema.minLength !== undefined)\n lines.push(`- Minimum length: ${schema.minLength}`);\n if (schema.maxLength !== undefined)\n lines.push(`- Maximum length: ${schema.maxLength}`);\n if (schema.pattern !== undefined)\n lines.push(`- Pattern: \\`${schema.pattern}\\``);\n break;\n case 'number':\n case 'integer':\n lines.push(\n `**Type:** \\`${type}\\`${schema.format ? ` (format: ${schema.format})` : ''}${nullableSuffix}`,\n );\n lines.push(...description);\n // Add number constraints (OpenAPI 3.1)\n if (schema.minimum !== undefined) {\n // Check if exclusiveMinimum is a number (OAS 3.1)\n const exclusiveMin = typeof schema.exclusiveMinimum === 'number';\n lines.push(\n `- Minimum: ${schema.minimum}${exclusiveMin ? ' (exclusive)' : ''}`,\n );\n if (exclusiveMin) {\n lines.push(\n `- Must be strictly greater than: ${schema.exclusiveMinimum}`,\n );\n }\n } else if (typeof schema.exclusiveMinimum === 'number') {\n lines.push(\n `- Must be strictly greater than: ${schema.exclusiveMinimum}`,\n );\n }\n\n if (schema.maximum !== undefined) {\n // Check if exclusiveMaximum is a number (OAS 3.1)\n const exclusiveMax = typeof schema.exclusiveMaximum === 'number';\n lines.push(\n `- Maximum: ${schema.maximum}${exclusiveMax ? ' (exclusive)' : ''}`,\n );\n if (exclusiveMax) {\n lines.push(\n `- Must be strictly less than: ${schema.exclusiveMaximum}`,\n );\n }\n } else if (typeof schema.exclusiveMaximum === 'number') {\n lines.push(\n `- Must be strictly less than: ${schema.exclusiveMaximum}`,\n );\n }\n if (schema.multipleOf !== undefined)\n lines.push(`- Must be a multiple of: ${schema.multipleOf}`);\n break;\n case 'boolean':\n lines.push(`**Type:** \\`boolean\\`${nullableSuffix}`);\n lines.push(...description);\n break;\n case 'object':\n lines.push(`**Type:** \\`object\\`${nullableSuffix}`);\n lines.push(...description);\n lines.push(...this.#object(schema));\n break;\n case 'array':\n lines.push(`**Type:** \\`array\\`${nullableSuffix}`);\n lines.push(...description);\n lines.push(...this.#array(schema));\n break;\n case 'null':\n lines.push(`**Type:** \\`null\\``);\n lines.push(...description);\n break;\n default:\n lines.push(`**Type:** \\`${type}\\`${nullableSuffix}`);\n lines.push(...description);\n }\n if (schema.default !== undefined) {\n lines.push(`**Default:** \\`${JSON.stringify(schema.default)}\\``);\n }\n return lines.filter((l) => l); // Filter out empty description lines\n }\n\n /**\n * Handle schemas by resolving references and delegating to appropriate handler\n */\n public handle(schemaOrRef: SchemaObject | ReferenceObject): string[] {\n if (isRef(schemaOrRef)) {\n return this.#ref(schemaOrRef.$ref);\n }\n\n const schema = schemaOrRef;\n\n // Handle composition keywords first\n if (schema.allOf && Array.isArray(schema.allOf)) {\n return this.#allOf(schema.allOf);\n }\n if (schema.anyOf && Array.isArray(schema.anyOf)) {\n return this.#anyOf(schema.anyOf);\n }\n if (schema.oneOf && Array.isArray(schema.oneOf)) {\n return this.#oneOf(schema.oneOf);\n }\n\n // Handle enums\n if (schema.enum && Array.isArray(schema.enum)) {\n return this.#enum(schema);\n }\n\n // Determine type(s) and nullability\n let types = Array.isArray(schema.type)\n ? schema.type\n : schema.type\n ? [schema.type]\n : [];\n let nullable = false; // Default to false\n\n if (types.includes('null')) {\n nullable = true;\n types = types.filter((t) => t !== 'null');\n }\n\n // Infer type if not explicitly set\n if (types.length === 0) {\n if (schema.properties || schema.additionalProperties) {\n types = ['object'];\n } else if (schema.items) {\n types = ['array'];\n }\n // Add other inferences if needed (e.g., based on format)\n }\n\n // If still no type, treat as unknown or any\n if (types.length === 0) {\n const lines = ['**Type:** `unknown`'];\n if (schema.description) lines.push(schema.description);\n if (schema.default !== undefined)\n lines.push(`**Default:** \\`${JSON.stringify(schema.default)}\\``);\n return lines;\n }\n\n // Handle single type (potentially nullable)\n if (types.length === 1) {\n return this.#normal(types[0], schema, nullable);\n }\n\n // Handle union of multiple non-null types (potentially nullable overall)\n const typeString = types.join(' | ');\n const nullableSuffix = nullable ? ' (nullable)' : '';\n const lines = [`**Type:** \\`${typeString}\\`${nullableSuffix}`];\n if (schema.description) lines.push(schema.description);\n if (schema.default !== undefined)\n lines.push(`**Default:** \\`${JSON.stringify(schema.default)}\\``);\n return lines;\n }\n\n /**\n * Process a request body and return markdown documentation\n */\n requestBody(requestBody?: RequestBodyObject): string[] {\n if (!requestBody) return [];\n\n const lines: string[] = [];\n lines.push(`##### Request Body`);\n\n if (requestBody.description) {\n lines.push(requestBody.description);\n }\n if (requestBody.required) {\n lines.push(`*This request body is required.*`);\n }\n\n if (requestBody.content) {\n for (const [contentType, mediaType] of Object.entries(\n requestBody.content,\n )) {\n lines.push(`**Content Type:** \\`${contentType}\\``);\n\n if (mediaType.schema) {\n // Use the main handle method here\n const schemaDocs = this.handle(mediaType.schema);\n lines.push(...schemaDocs); // Add schema docs directly\n }\n }\n }\n\n return lines;\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { isEmpty } from '@sdk-it/core';\nimport {\n type OperationEntry,\n type OurOpenAPIObject,\n type TunedOperationObject,\n forEachOperation,\n} from '@sdk-it/spec';\n\nimport { PropEmitter } from './prop.emitter.ts';\n\nexport function toReadme(\n spec: OurOpenAPIObject,\n generators: {\n generateSnippet: (\n entry: OperationEntry,\n operation: TunedOperationObject,\n ) => string;\n },\n) {\n // table of content is the navigation headers in apiref\n const markdown: string[] = [];\n const propEmitter = new PropEmitter(spec);\n\n forEachOperation(spec, (entry, operation) => {\n const { method, path, name } = entry;\n markdown.push(\n `#### ${name || operation.operationId} | ${`_${method.toUpperCase()} ${path}_`}`,\n );\n markdown.push(operation.summary || '');\n\n const snippet = generators.generateSnippet(entry, operation);\n markdown.push(`##### Example usage`);\n markdown.push(snippet);\n\n // Process request body using the refactored emitter\n const requestBodyContent = propEmitter.requestBody(operation.requestBody);\n if (requestBodyContent.length > 1) {\n // Check if more than just the header was added\n markdown.push(requestBodyContent.join('\\n\\n'));\n }\n\n markdown.push(`##### Responses`);\n for (const status in operation.responses) {\n const response = operation.responses[status];\n // Wrap each response in its own toggle\n markdown.push(`<details>`);\n markdown.push(\n `<summary><b>${status}</b> <i>${response.description}</i></summary>`,\n );\n if (!isEmpty(response.content)) {\n for (const [contentType, mediaType] of Object.entries(\n response.content,\n )) {\n markdown.push(`\\n**Content Type:** \\`${contentType}\\``);\n if (mediaType.schema) {\n const schemaDocs = propEmitter.handle(mediaType.schema);\n // hide emitter output under the toggle\n markdown.push(...schemaDocs.map((l) => `\\n${l}`));\n }\n }\n }\n markdown.push(`</details>`);\n }\n });\n return markdown.join('\\n\\n');\n}\n", "import type {\n OpenAPIObject,\n ReferenceObject,\n RequestBodyObject,\n SchemaObject,\n} from 'openapi3-ts/oas31';\n\nimport { followRef, isRef } from '@sdk-it/core';\nimport { coerceTypes } from '@sdk-it/spec';\n\n/**\n * PropEmitter handles converting OpenAPI schemas to Markdown documentation\n * Similar structure to ZodDeserializer but for generating markdown props documentation\n */\nexport class PropEmitter {\n #spec: OpenAPIObject;\n\n constructor(spec: OpenAPIObject) {\n this.#spec = spec;\n }\n\n /**\n * Handle objects (properties)\n */\n #object(schema: SchemaObject): string[] {\n const lines: string[] = [];\n const properties = schema.properties || {};\n\n if (Object.keys(properties).length > 0) {\n lines.push(`**Properties:**`);\n\n for (const [propName, propSchema] of Object.entries(properties)) {\n const isRequired = (schema.required ?? []).includes(propName);\n lines.push(...this.#property(propName, propSchema, isRequired));\n }\n }\n\n // Handle additionalProperties\n if (schema.additionalProperties) {\n lines.push(`**Additional Properties:**`);\n if (typeof schema.additionalProperties === 'boolean') {\n lines.push(`- Allowed: ${schema.additionalProperties}`);\n } else {\n // Indent the schema documentation for additional properties\n lines.push(\n ...this.handle(schema.additionalProperties).map((l) => ` ${l}`),\n );\n }\n }\n\n return lines;\n }\n\n /**\n * Format a property with its type and description\n */\n #property(\n name: string,\n schema: SchemaObject | ReferenceObject,\n required: boolean,\n ): string[] {\n // get full docs and extract the type line\n const docs = this.handle(schema);\n const rawType = docs[0]\n .replace('**Type:** ', '')\n .replace(' (nullable)', '|null');\n\n // detect default if present on the schema\n const defaultVal =\n !isRef(schema) && (schema as SchemaObject).default !== undefined\n ? ` default: ${JSON.stringify((schema as SchemaObject).default)}`\n : '';\n\n // build summary line\n const reqMark = required ? ' required' : '';\n const summary = `- \\`${name}\\` ${rawType}${reqMark}${defaultVal}:`;\n\n // assemble final lines (skip the type and any default in details)\n const detailLines = docs\n .slice(1)\n .filter((l) => !l.startsWith('**Default:**'))\n .map((l) => ` ${l}`);\n\n return [summary, ...detailLines];\n }\n\n /**\n * Handle array schemas\n */\n #array(schema: SchemaObject): string[] {\n const lines: string[] = [];\n lines.push(`**Array items:**`);\n\n if (schema.items) {\n // Get documentation for the items schema\n const itemDocs = this.handle(schema.items);\n // Indent item documentation\n lines.push(...itemDocs.map((line) => ` ${line}`));\n } else {\n lines.push(` **Type:** \\`unknown\\``); // Array of unknown items\n }\n // Add array constraints\n if (schema.minItems !== undefined)\n lines.push(`- Minimum items: ${schema.minItems}`);\n if (schema.maxItems !== undefined)\n lines.push(`- Maximum items: ${schema.maxItems}`);\n if (schema.uniqueItems) lines.push(`- Items must be unique.`);\n\n return lines;\n }\n\n #ref($ref: string): string[] {\n const schemaName = $ref.split('/').pop() || 'object';\n const resolved = followRef<SchemaObject>(this.#spec, $ref);\n // Link to the schema definition (assuming heading anchors are generated elsewhere)\n const lines = [\n `**Type:** [\\`${schemaName}\\`](#${schemaName.toLowerCase()})`,\n ];\n if (resolved.description) {\n lines.push(resolved.description);\n }\n // Avoid deep recursion by default, just link and show description.\n // If more detail is needed, the linked definition should provide it.\n return lines;\n }\n\n #allOf(schemas: (SchemaObject | ReferenceObject)[]): string[] {\n const lines = ['**All of (Intersection):**'];\n schemas.forEach((subSchema, index) => {\n lines.push(`- **Constraint ${index + 1}:**`);\n const subLines = this.handle(subSchema);\n lines.push(...subLines.map((l) => ` ${l}`)); // Indent sub-schema docs\n });\n return lines;\n }\n\n #anyOf(schemas: (SchemaObject | ReferenceObject)[]): string[] {\n const lines = ['**Any of (Union):**'];\n schemas.forEach((subSchema, index) => {\n lines.push(`- **Option ${index + 1}:**`);\n const subLines = this.handle(subSchema);\n lines.push(...subLines.map((l) => ` ${l}`));\n });\n return lines;\n }\n\n #oneOf(schemas: (SchemaObject | ReferenceObject)[]): string[] {\n const lines = ['**One of (Exclusive Union):**'];\n schemas.forEach((subSchema, index) => {\n lines.push(`- **Option ${index + 1}:**`);\n const subLines = this.handle(subSchema);\n lines.push(...subLines.map((l) => ` ${l}`));\n });\n return lines;\n }\n\n #enum(schema: SchemaObject): string[] {\n const lines = [`**Type:** \\`${schema.type || 'unknown'}\\` (enum)`];\n if (schema.description) lines.push(schema.description);\n lines.push('**Allowed values:**');\n lines.push(\n ...(schema.enum || []).map((val) => `- \\`${JSON.stringify(val)}\\``),\n );\n if (schema.default !== undefined) {\n lines.push(`**Default:** \\`${JSON.stringify(schema.default)}\\``);\n }\n return lines;\n }\n\n #normal(type: string, schema: SchemaObject, nullable: boolean): string[] {\n const lines: string[] = [];\n const nullableSuffix = nullable ? ' (nullable)' : '';\n const description = schema.description ? [schema.description] : [];\n\n switch (type) {\n case 'string':\n lines.push(\n `**Type:** \\`string\\`${schema.format ? ` (format: ${schema.format})` : ''}${nullableSuffix}`,\n );\n lines.push(...description);\n if (schema.minLength !== undefined)\n lines.push(`- Minimum length: ${schema.minLength}`);\n if (schema.maxLength !== undefined)\n lines.push(`- Maximum length: ${schema.maxLength}`);\n if (schema.pattern !== undefined)\n lines.push(`- Pattern: \\`${schema.pattern}\\``);\n break;\n case 'number':\n case 'integer':\n lines.push(\n `**Type:** \\`${type}\\`${schema.format ? ` (format: ${schema.format})` : ''}${nullableSuffix}`,\n );\n lines.push(...description);\n // Add number constraints (OpenAPI 3.1)\n if (schema.minimum !== undefined) {\n // Check if exclusiveMinimum is a number (OAS 3.1)\n const exclusiveMin = typeof schema.exclusiveMinimum === 'number';\n lines.push(\n `- Minimum: ${schema.minimum}${exclusiveMin ? ' (exclusive)' : ''}`,\n );\n if (exclusiveMin) {\n lines.push(\n `- Must be strictly greater than: ${schema.exclusiveMinimum}`,\n );\n }\n } else if (typeof schema.exclusiveMinimum === 'number') {\n lines.push(\n `- Must be strictly greater than: ${schema.exclusiveMinimum}`,\n );\n }\n\n if (schema.maximum !== undefined) {\n // Check if exclusiveMaximum is a number (OAS 3.1)\n const exclusiveMax = typeof schema.exclusiveMaximum === 'number';\n lines.push(\n `- Maximum: ${schema.maximum}${exclusiveMax ? ' (exclusive)' : ''}`,\n );\n if (exclusiveMax) {\n lines.push(\n `- Must be strictly less than: ${schema.exclusiveMaximum}`,\n );\n }\n } else if (typeof schema.exclusiveMaximum === 'number') {\n lines.push(\n `- Must be strictly less than: ${schema.exclusiveMaximum}`,\n );\n }\n if (schema.multipleOf !== undefined)\n lines.push(`- Must be a multiple of: ${schema.multipleOf}`);\n break;\n case 'boolean':\n lines.push(`**Type:** \\`boolean\\`${nullableSuffix}`);\n lines.push(...description);\n break;\n case 'object':\n lines.push(`**Type:** \\`object\\`${nullableSuffix}`);\n lines.push(...description);\n lines.push(...this.#object(schema));\n break;\n case 'array':\n lines.push(`**Type:** \\`array\\`${nullableSuffix}`);\n lines.push(...description);\n lines.push(...this.#array(schema));\n break;\n case 'null':\n lines.push(`**Type:** \\`null\\``);\n lines.push(...description);\n break;\n default:\n lines.push(`**Type:** \\`${type}\\`${nullableSuffix}`);\n lines.push(...description);\n }\n if (schema.default !== undefined) {\n lines.push(`**Default:** \\`${JSON.stringify(schema.default)}\\``);\n }\n return lines.filter((l) => l); // Filter out empty description lines\n }\n\n /**\n * Handle schemas by resolving references and delegating to appropriate handler\n */\n public handle(schemaOrRef: SchemaObject | ReferenceObject): string[] {\n if (isRef(schemaOrRef)) {\n return this.#ref(schemaOrRef.$ref);\n }\n\n const schema = schemaOrRef;\n\n // Handle composition keywords first\n if (schema.allOf && Array.isArray(schema.allOf)) {\n return this.#allOf(schema.allOf);\n }\n if (schema.anyOf && Array.isArray(schema.anyOf)) {\n return this.#anyOf(schema.anyOf);\n }\n if (schema.oneOf && Array.isArray(schema.oneOf)) {\n return this.#oneOf(schema.oneOf);\n }\n\n // Handle enums\n if (schema.enum && Array.isArray(schema.enum)) {\n return this.#enum(schema);\n }\n\n // Determine type(s) and nullability\n let types = coerceTypes(schema);\n let nullable = false; // Default to false\n\n if (types.includes('null')) {\n nullable = true;\n types = types.filter((t) => t !== 'null');\n }\n\n // Infer type if not explicitly set\n if (types.length === 0) {\n if (schema.properties || schema.additionalProperties) {\n types = ['object'];\n } else if (schema.items) {\n types = ['array'];\n }\n // Add other inferences if needed (e.g., based on format)\n }\n\n // If still no type, treat as unknown or any\n if (types.length === 0) {\n const lines = ['**Type:** `unknown`'];\n if (schema.description) lines.push(schema.description);\n if (schema.default !== undefined)\n lines.push(`**Default:** \\`${JSON.stringify(schema.default)}\\``);\n return lines;\n }\n\n // Handle single type (potentially nullable)\n if (types.length === 1) {\n return this.#normal(types[0], schema, nullable);\n }\n\n // Handle union of multiple non-null types (potentially nullable overall)\n const typeString = types.join(' | ');\n const nullableSuffix = nullable ? ' (nullable)' : '';\n const lines = [`**Type:** \\`${typeString}\\`${nullableSuffix}`];\n if (schema.description) lines.push(schema.description);\n if (schema.default !== undefined)\n lines.push(`**Default:** \\`${JSON.stringify(schema.default)}\\``);\n return lines;\n }\n\n /**\n * Process a request body and return markdown documentation\n */\n requestBody(requestBody?: RequestBodyObject): string[] {\n if (!requestBody) return [];\n\n const lines: string[] = [];\n lines.push(`##### Request Body`);\n\n if (requestBody.description) {\n lines.push(requestBody.description);\n }\n if (requestBody.required) {\n lines.push(`*This request body is required.*`);\n }\n\n if (requestBody.content) {\n for (const [contentType, mediaType] of Object.entries(\n requestBody.content,\n )) {\n lines.push(`**Content Type:** \\`${contentType}\\``);\n\n if (mediaType.schema) {\n // Use the main handle method here\n const schemaDocs = this.handle(mediaType.schema);\n lines.push(...schemaDocs); // Add schema docs directly\n }\n }\n }\n\n return lines;\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["lines"]
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"prop.emitter.d.ts","sourceRoot":"","sources":["../../src/lib/prop.emitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,YAAY,EACb,MAAM,mBAAmB,CAAC;AAI3B;;;GAGG;AACH,qBAAa,WAAW;;gBAGV,IAAI,EAAE,aAAa;IAiP/B;;OAEG;IACI,MAAM,CAAC,WAAW,EAAE,YAAY,GAAG,eAAe,GAAG,MAAM,EAAE;IAsEpE;;OAEG;IACH,WAAW,CAAC,WAAW,CAAC,EAAE,iBAAiB,GAAG,MAAM,EAAE;CA6BvD"}
1
+ {"version":3,"file":"prop.emitter.d.ts","sourceRoot":"","sources":["../../src/lib/prop.emitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,YAAY,EACb,MAAM,mBAAmB,CAAC;AAK3B;;;GAGG;AACH,qBAAa,WAAW;;gBAGV,IAAI,EAAE,aAAa;IAiP/B;;OAEG;IACI,MAAM,CAAC,WAAW,EAAE,YAAY,GAAG,eAAe,GAAG,MAAM,EAAE;IAkEpE;;OAEG;IACH,WAAW,CAAC,WAAW,CAAC,EAAE,iBAAiB,GAAG,MAAM,EAAE;CA6BvD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sdk-it/readme",
3
- "version": "0.22.1",
3
+ "version": "0.24.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -21,8 +21,7 @@
21
21
  "!**/*.tsbuildinfo"
22
22
  ],
23
23
  "dependencies": {
24
- "openapi3-ts": "4.4.0",
25
- "@sdk-it/core": "0.22.1",
26
- "@sdk-it/spec": "0.22.1"
24
+ "@sdk-it/core": "0.24.0",
25
+ "@sdk-it/spec": "0.24.0"
27
26
  }
28
27
  }