oapiex 0.1.2 → 0.2.1

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.d.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  import { Element, IOptionalBrowserSettings, Window } from "happy-dom";
2
2
  import { Command } from "@h3ravel/musket";
3
- import { Browser } from "puppeteer";
3
+ import { Browser, Page } from "puppeteer";
4
4
 
5
5
  //#region src/types/app.d.ts
6
6
  type BrowserName = 'axios' | 'happy-dom' | 'jsdom' | 'puppeteer';
7
7
  interface UserConfig {
8
- outputFormat: 'pretty' | 'json' | 'js';
8
+ outputFormat: 'pretty' | 'json' | 'js' | 'ts';
9
9
  outputShape: 'raw' | 'openapi';
10
10
  requestTimeout: number;
11
11
  maxRedirects: number;
@@ -123,6 +123,7 @@ interface OpenApiOperationLike {
123
123
  operationId?: string;
124
124
  parameters?: OpenApiParameterLike[];
125
125
  requestBody?: {
126
+ description?: string;
126
127
  required: boolean;
127
128
  content: Record<string, OpenApiMediaType>;
128
129
  };
@@ -216,12 +217,78 @@ declare class Application {
216
217
  loadHtmlSource(source: string, initial?: boolean): Promise<string>;
217
218
  }
218
219
  //#endregion
220
+ //#region src/Commands/GenerateCommand.d.ts
221
+ declare class GenerateCommand extends Command<Application> {
222
+ protected signature: string;
223
+ protected description: string;
224
+ handle(): Promise<void>;
225
+ /**
226
+ * Resolves the SDK source by either loading a pre-generated TypeScript artifact or
227
+ * crawling/parsing HTML documentation based on the provided options and source string.
228
+ *
229
+ * @param options The options for resolving the SDK source.
230
+ * @returns An object containing the OpenAPI document and the generated schema module as a string.
231
+ */
232
+ private resolveSdkSource;
233
+ /**
234
+ * Loads the SDK source from a pre-generated TypeScript artifact.
235
+ *
236
+ * @param source
237
+ * @returns
238
+ */
239
+ private loadSdkSourceFromTypeScriptArtifact;
240
+ /**
241
+ * Builds an OpenAPI document from the extracted operations.
242
+ *
243
+ * @param payload
244
+ * @returns
245
+ */
246
+ private buildOpenApiPayload;
247
+ private resolveTimeoutOverride;
248
+ /**
249
+ * Resolves the output directory for the generated SDK package.
250
+ *
251
+ * @param source The source string used to determine the output directory.
252
+ * @returns The resolved output directory path.
253
+ */
254
+ private resolveOutputDirectory;
255
+ private resolvePackageName;
256
+ private parseOutputMode;
257
+ private parseSignatureStyle;
258
+ private parseNamespaceStrategy;
259
+ private parseMethodStrategy;
260
+ /**
261
+ * Checks if the provided source string points to a TypeScript or JavaScript file, which is
262
+ * used to determine if the source should be loaded as a pre-generated artifact instead
263
+ * of crawling/parsing HTML documentation.
264
+ *
265
+ * @param source The source string to check.
266
+ * @returns True if the source is a TypeScript or JavaScript file, false otherwise.
267
+ */
268
+ private isTypeScriptArtifactSource;
269
+ /**
270
+ * Type guard to check if a value conforms to the OpenApiDocumentLike interface.
271
+ *
272
+ * @param value
273
+ * @returns
274
+ */
275
+ private isOpenApiDocumentLike;
276
+ /**
277
+ * Writes the generated files to the output directory, creating any necessary subdirectories.
278
+ *
279
+ * @param packageDir
280
+ * @param files
281
+ */
282
+ private writePackageFiles;
283
+ }
284
+ //#endregion
219
285
  //#region src/Commands/InitCommand.d.ts
220
286
  declare class InitCommand extends Command {
221
287
  protected signature: string;
222
288
  protected description: string;
223
289
  handle(): Promise<void>;
224
290
  buildConfigTemplate(): string;
291
+ buildSdkConfigTemplate(): string;
225
292
  }
226
293
  //#endregion
227
294
  //#region src/Commands/ParseCommand.d.ts
@@ -229,6 +296,7 @@ declare class ParseCommand extends Command<Application> {
229
296
  protected signature: string;
230
297
  protected description: string;
231
298
  handle(): Promise<void>;
299
+ resolveTimeoutOverride: (value: string, fallback: number) => number;
232
300
  buildOpenApiPayload: (payload: Awaited<ReturnType<Application["crawlReadmeOperations"]>> | ReturnType<typeof extractReadmeOperationFromHtml>) => OpenApiDocumentLike;
233
301
  saveOutputToFile: (content: string, source: string, shape: string, outputFormat: UserConfig["outputFormat"]) => Promise<string>;
234
302
  }
@@ -240,8 +308,254 @@ declare function resolveConfig(cliOverrides?: Partial<UserConfig>): Promise<User
240
308
  //#region src/Core.d.ts
241
309
  declare const isRecord: (value: unknown) => value is Record<string, unknown>;
242
310
  //#endregion
311
+ //#region src/generator/types.d.ts
312
+ type JsonLike = null | boolean | number | string | JsonLike[] | {
313
+ [key: string]: JsonLike;
314
+ };
315
+ type ShapeNode = {
316
+ kind: 'primitive';
317
+ type: string;
318
+ } | {
319
+ kind: 'array';
320
+ item: ShapeNode;
321
+ } | {
322
+ kind: 'object';
323
+ signature: string;
324
+ properties: ShapeProperty[];
325
+ } | {
326
+ kind: 'union';
327
+ types: ShapeNode[];
328
+ };
329
+ interface ShapeProperty {
330
+ key: string;
331
+ optional: boolean;
332
+ shape: ShapeNode;
333
+ }
334
+ interface InterfaceDeclaration {
335
+ kind: 'interface';
336
+ name: string;
337
+ baseName: string;
338
+ rawShape: Extract<ShapeNode, {
339
+ kind: 'object';
340
+ }>;
341
+ properties: ShapeProperty[];
342
+ }
343
+ interface InterfaceAliasDeclaration {
344
+ kind: 'interface-alias';
345
+ name: string;
346
+ target: string;
347
+ }
348
+ interface TypeReferenceAliasDeclaration {
349
+ kind: 'type-alias';
350
+ name: string;
351
+ target: string;
352
+ }
353
+ interface ShapeAliasDeclaration {
354
+ kind: 'shape-alias';
355
+ name: string;
356
+ shape: ShapeNode;
357
+ }
358
+ type Declaration = InterfaceDeclaration | InterfaceAliasDeclaration | TypeReferenceAliasDeclaration | ShapeAliasDeclaration;
359
+ interface GeneratorContext {
360
+ declarations: Declaration[];
361
+ declarationByName: Map<string, Declaration>;
362
+ nameBySignature: Map<string, string>;
363
+ usedNames: Set<string>;
364
+ }
365
+ interface SemanticModel {
366
+ path: string;
367
+ method: string;
368
+ name: string;
369
+ role: 'response' | 'responseExample' | 'input' | 'query' | 'header' | 'params';
370
+ shape: ShapeNode;
371
+ collisionSuffix: string;
372
+ }
373
+ interface OperationTypeRefs {
374
+ response: string;
375
+ responseExample: string;
376
+ input: string;
377
+ query: string;
378
+ header: string;
379
+ params: string;
380
+ }
381
+ type SdkNamespaceNamingStrategy = 'smart' | 'scoped';
382
+ type SdkMethodNamingStrategy = 'smart' | 'operation-id';
383
+ interface SdkNamingStrategyOptions {
384
+ namespaceStrategy?: SdkNamespaceNamingStrategy;
385
+ methodStrategy?: SdkMethodNamingStrategy;
386
+ }
387
+ interface SdkParameterManifest {
388
+ name: string;
389
+ accessor: string;
390
+ in: 'query' | 'header' | 'path';
391
+ required: boolean;
392
+ description?: string;
393
+ }
394
+ interface SdkOperationManifest {
395
+ path: string;
396
+ method: string;
397
+ methodName: string;
398
+ summary?: string;
399
+ description?: string;
400
+ operationId?: string;
401
+ requestBodyDescription?: string;
402
+ responseDescription?: string;
403
+ responseType: string;
404
+ inputType: string;
405
+ queryType: string;
406
+ headerType: string;
407
+ paramsType: string;
408
+ hasBody: boolean;
409
+ bodyRequired: boolean;
410
+ pathParams: SdkParameterManifest[];
411
+ queryParams: SdkParameterManifest[];
412
+ headerParams: SdkParameterManifest[];
413
+ }
414
+ interface SdkGroupManifest {
415
+ className: string;
416
+ propertyName: string;
417
+ operations: SdkOperationManifest[];
418
+ }
419
+ interface SdkManifest {
420
+ groups: SdkGroupManifest[];
421
+ }
422
+ interface PayloadSchemaCandidate {
423
+ schema?: OpenApiSchema;
424
+ example?: unknown;
425
+ }
426
+ //#endregion
427
+ //#region src/generator/OutputGenerator.d.ts
428
+ declare class OutputGenerator {
429
+ /**
430
+ * Serialize the extracted payload into the desired output format, optionally
431
+ * generating TypeScript types when requested.
432
+ *
433
+ * @param payload The extracted payload to serialize.
434
+ * @param outputFormat The desired output format ('json', 'js', 'ts', 'pretty').
435
+ * @param rootTypeName The root type name to use when generating TypeScript types.
436
+ * @returns A promise that resolves to the serialized output string.
437
+ */
438
+ static serializeOutput: (payload: unknown, outputFormat: UserConfig["outputFormat"], rootTypeName?: string, typeScriptOptions?: SdkNamingStrategyOptions) => Promise<string>;
439
+ /**
440
+ * Build a safe file path for the output based on the workspace root, source
441
+ * identifier, desired shape, and output format.
442
+ *
443
+ * @param workspaceRoot The root directory of the workspace.
444
+ * @param source The original source identifier
445
+ * @param shape The desired output shape ('raw' or 'openapi').
446
+ * @param outputFormat The desired output format ('json', 'js', 'ts', 'pretty').
447
+ * @returns The constructed file path for the output.
448
+ */
449
+ static buildFilePath: (workspaceRoot: string, source: string, shape: string, outputFormat: UserConfig["outputFormat"]) => string;
450
+ static buildArtifactDirectory: (workspaceRoot: string, source: string, artifact: string) => string;
451
+ static toSafeSourceName(source: string): string;
452
+ /**
453
+ * Determine the appropriate root type name for TypeScript generation based on the desired
454
+ * output shape. This helps ensure that generated types are meaningful and contextually relevant.
455
+ *
456
+ * @param shape The desired output shape ('raw' or 'openapi').
457
+ * @returns The root type name to use for TypeScript generation.
458
+ */
459
+ static getRootTypeName: (shape: string) => string;
460
+ }
461
+ //#endregion
462
+ //#region src/generator/SdkPackageGenerator.d.ts
463
+ interface SdkPackageGeneratorOptions extends SdkNamingStrategyOptions {
464
+ outputMode?: 'runtime' | 'classes' | 'both';
465
+ signatureStyle?: 'flat' | 'grouped';
466
+ rootTypeName?: string;
467
+ schemaModule?: string;
468
+ packageName?: string;
469
+ packageVersion?: string;
470
+ packageDescription?: string;
471
+ sdkKitPackageName?: string;
472
+ }
473
+ declare class SdkPackageGenerator {
474
+ private typeBuilder;
475
+ private typeScriptGenerator;
476
+ generate(document: OpenApiDocumentLike, options?: SdkPackageGeneratorOptions): Record<string, string>;
477
+ private createOperationTypeRefs;
478
+ private renderBaseApi;
479
+ private renderApiBinder;
480
+ private renderApiClass;
481
+ private renderApiMethod;
482
+ private renderMethodDocComment;
483
+ private renderGroupedParameterDocs;
484
+ private renderFlatParameterDocs;
485
+ private renderParamDoc;
486
+ private describeParameterGroup;
487
+ private wrapDocText;
488
+ private renderGroupedSignature;
489
+ private renderFlatSignature;
490
+ private createTypeImportContext;
491
+ private rewriteTypeReference;
492
+ private renderFlatObjectLiteral;
493
+ private renderFlatHeaders;
494
+ private renderCoreFile;
495
+ private renderPackageJson;
496
+ private renderReadme;
497
+ private renderReadmeDescription;
498
+ private renderReadmeUsage;
499
+ private renderReadmeClientSnippet;
500
+ private renderReadmeClientBody;
501
+ private renderReadmeExports;
502
+ private pickExampleOperation;
503
+ private collectReadmeTypeImports;
504
+ private renderReadmeOperationCall;
505
+ private renderReadmeGroupedArgs;
506
+ private renderReadmeFlatArgs;
507
+ private renderTsconfig;
508
+ private renderTsdownConfig;
509
+ private renderVitestConfig;
510
+ private renderExportsTest;
511
+ private renderIndexFile;
512
+ private collectTypeIdentifiers;
513
+ }
514
+ //#endregion
515
+ //#region src/generator/TypeScriptGenerator.d.ts
516
+ declare class TypeScriptGenerator {
517
+ private typeBuilder;
518
+ private moduleRenderer;
519
+ /**
520
+ * Static helper method to generate a TypeScript module string from a generic JSON-like
521
+ * value, inferring types and creating type definitions as needed, using the provided root
522
+ * type name.
523
+ *
524
+ * @param value
525
+ * @param rootTypeName
526
+ * @returns
527
+ */
528
+ static generateModule: (value: JsonLike, rootTypeName?: string, options?: SdkNamingStrategyOptions) => string;
529
+ /**
530
+ * Generate a TypeScript module string from a generic JSON-like value, inferring types
531
+ * and creating type definitions as needed.
532
+ *
533
+ * @param value
534
+ * @param rootTypeName
535
+ * @returns
536
+ */
537
+ generate(value: JsonLike, rootTypeName?: string, options?: SdkNamingStrategyOptions): string;
538
+ /**
539
+ * Generate a TypeScript module string from an OpenAPI document, including type definitions
540
+ *
541
+ * @param document
542
+ * @param rootTypeName
543
+ * @returns
544
+ */
545
+ generateModule(document: OpenApiDocumentLike, rootTypeName: string, options?: SdkNamingStrategyOptions): string;
546
+ private generateGenericModule;
547
+ private isOpenApiDocumentLike;
548
+ }
549
+ //#endregion
243
550
  //#region src/JsonRepair.d.ts
244
- declare const parsePossiblyTruncatedJson: (value: string) => unknown | null;
551
+ declare class JsonRepair {
552
+ static parsePossiblyTruncated: (value: string) => unknown | null;
553
+ private repairCommonJsonIssues;
554
+ private removeUnexpectedObjectTokens;
555
+ private insertMissingCommas;
556
+ private shouldInsertCommaBeforeKey;
557
+ private buildMissingJsonClosers;
558
+ }
245
559
  //#endregion
246
560
  //#region src/Manager.d.ts
247
561
  interface BrowserSession {
@@ -268,38 +582,40 @@ declare const isSupportedBrowser: (value: string) => value is BrowserName;
268
582
  * @returns A promise that resolves to the HTML content as a string.
269
583
  */
270
584
  declare const browser: (source: string, config?: UserConfig, initial?: boolean) => Promise<string>;
585
+ declare const extractStablePageHtml: (page: Page, timeout: number, initial?: boolean, maxAttempts?: number) => Promise<string>;
271
586
  declare const mergeSsrPropsIntoRenderedHtml: (renderedHtml: string, rawHtml: string) => string;
272
587
  //#endregion
273
588
  //#region src/OpenApiTransform.d.ts
274
- declare const createOpenApiDocumentFromReadmeOperations: (operations: ReadmeOperation[], title?: string, version?: string) => OpenApiDocumentLike;
275
- declare const shouldSkipNormalizedOperation: (normalized: {
276
- path: string;
277
- method: string;
278
- operation: OpenApiOperationLike;
279
- }) => boolean;
280
- declare const transformReadmeOperationToOpenApi: (operation: ReadmeOperation) => {
589
+ type NormalizedOperation = {
281
590
  path: string;
282
591
  method: string;
283
592
  operation: OpenApiOperationLike;
284
- } | null;
285
- declare const shouldSkipPlaceholderOperation: (url: URL, operation: ReadmeOperation) => boolean;
286
- declare const decodeOpenApiPathname: (pathname: string) => string;
287
- declare const hasExtractedBodyParams: (params: ReadmeParameter[]) => boolean;
288
- declare const createParameters: (params: ReadmeParameter[]) => OpenApiOperationLike["parameters"] | undefined;
289
- declare const createRequestBody: (params: ReadmeParameter[], example: unknown | null, fallbackExample: unknown | null) => OpenApiOperationLike["requestBody"] | undefined;
290
- declare const buildRequestBodySchema: (params: ReadmeParameter[], example: unknown | null, fallbackExample: unknown | null) => OpenApiSchema;
291
- declare const inferSchemaFromExample: (value: unknown) => OpenApiSchema | undefined;
292
- declare const insertRequestBodyParam: (rootSchema: OpenApiSchema, param: ReadmeParameter) => void;
293
- declare const createParameter: (param: ReadmeParameter) => OpenApiParameterLike;
294
- declare const createParameterSchema: (param: ReadmeParameter) => OpenApiSchema;
295
- declare const createResponses: (schemas: ReadmeOperation["responseSchemas"], responseBodies: ReadmeResponseBody[]) => Record<string, OpenApiResponse>;
296
- declare const createResponseContent: (bodies: ReadmeResponseBody[]) => Record<string, OpenApiMediaType> | undefined;
297
- declare const inferSchemaFromBody: (body: unknown, format: ReadmeResponseBody["format"]) => OpenApiSchema | undefined;
298
- declare const resolveFallbackRequestBodyExample: (operation: ReadmeOperation) => unknown | null;
299
- declare const createExampleSchema: (value: unknown) => OpenApiSchema | null;
300
- declare const mergeOpenApiSchemas: (left: OpenApiSchema | null, right: OpenApiSchema | null) => OpenApiSchema | null;
301
- declare const buildOperationId: (method: string, path: string) => string;
302
- declare const isOpenApiParameterLocation: (value: ReadmeParameter["in"]) => value is OpenApiParameterLike["in"];
593
+ };
594
+ declare class OpenApiTransformer {
595
+ createDocument(operations: ReadmeOperation[], title?: string, version?: string): OpenApiDocumentLike;
596
+ transformOperation(operation: ReadmeOperation): NormalizedOperation | null;
597
+ private shouldSkipNormalizedOperation;
598
+ private shouldSkipPlaceholderOperation;
599
+ private decodeOpenApiPathname;
600
+ private hasExtractedBodyParams;
601
+ private createParameters;
602
+ private createRequestBody;
603
+ private buildRequestBodySchema;
604
+ private inferSchemaFromExample;
605
+ private insertRequestBodyParam;
606
+ private createParameter;
607
+ private createParameterSchema;
608
+ private createResponses;
609
+ private createResponseContent;
610
+ private inferSchemaFromBody;
611
+ private normalizeResponseExampleValue;
612
+ private resolveFallbackRequestBodyExample;
613
+ private createExampleSchema;
614
+ private mergeOpenApiSchemas;
615
+ private buildOperationId;
616
+ private isOpenApiParameterLocation;
617
+ }
618
+ declare const transformer: OpenApiTransformer;
303
619
  //#endregion
304
620
  //#region src/ReadmeCrawler.d.ts
305
621
  interface ReadmeCrawledOperation extends ReadmeOperation {
@@ -307,4 +623,4 @@ interface ReadmeCrawledOperation extends ReadmeOperation {
307
623
  }
308
624
  declare const resolveReadmeSidebarUrls: (operation: Pick<ReadmeOperation, "sidebarLinks">, baseUrl: string) => string[];
309
625
  //#endregion
310
- export { Application, AttributeQueryNode, AttributedNode, BrowserName, InitCommand, OpenApiDocumentLike, OpenApiMediaType, OpenApiOperationLike, OpenApiParameterLike, OpenApiResponse, OpenApiSchema, ParseCommand, QueryableNode, ReadmeCodeSnippet, ReadmeCrawledOperation, ReadmeNormalizedRequestExample, ReadmeOperation, ReadmeParameter, ReadmeResponseBody, ReadmeResponseSchema, ReadmeSidebarLink, TextNodeLike, UserConfig, browser, buildOperationId, buildOperationUrl, buildRequestBodySchema, createExampleSchema, createOpenApiDocumentFromReadmeOperations, createParameter, createParameterSchema, createParameters, createRequestBody, createResponseContent, createResponses, decodeOpenApiPathname, defaultConfig, defineConfig, endBrowserSession, escapeSelector, extractBalancedSegment, extractButtonText, extractCodeMirrorText, extractCodeSnippets, extractFetchBody, extractFetchHeaders, extractObjectPropertyValue, extractOperationDescription, extractOperationParametersFromOpenApi, extractParameterDescription, extractReadmeOperationFromHtml, extractReadmeOperationFromSsrProps, extractRequestCodeSnippets, extractRequestParams, extractRequestParamsFromOpenApi, extractRequestSnippetLabel, extractResponseBodies, extractResponseBodiesFromOpenApi, extractResponseContentTypes, extractResponseLabels, extractResponseSchemas, extractResponseSchemasFromOpenApi, extractSidebarLinkLabel, extractSidebarLinks, extractStringLiteralValue, findParameterRoot, flattenOpenApiSchemaProperties, getBrowserSession, globalConfig, hasExtractedBodyParams, inferParameterLocation, inferParameterLocationFromText, inferParameterPath, inferParameterType, inferSchemaFromBody, inferSchemaFromExample, insertRequestBodyParam, isOpenApiParameterLocation, isRecord, isRequiredParameter, isSupportedBrowser, loadUserConfig, mergeOpenApiSchemas, mergeReadmeOperations, mergeSsrPropsIntoRenderedHtml, normalizeCurlSnippet, normalizeFetchSnippet, normalizeRequestCodeSnippet, normalizeResponseBody, normalizeStructuredRequestBody, parseLooseStructuredValue, parsePossiblyTruncatedJson, readInputValue, readText, readTexts, resolveConfig, resolveFallbackRequestBodyExample, resolveOpenApiMediaExample, resolveParameterInput, resolveReadmeSidebarUrls, resolveSsrOperation, shouldSkipNormalizedOperation, shouldSkipPlaceholderOperation, startBrowserSession, supportedBrowsers, transformReadmeOperationToOpenApi };
626
+ export { Application, AttributeQueryNode, AttributedNode, BrowserName, Declaration, GenerateCommand, GeneratorContext, InitCommand, InterfaceAliasDeclaration, InterfaceDeclaration, JsonLike, JsonRepair, OpenApiDocumentLike, OpenApiMediaType, OpenApiOperationLike, OpenApiParameterLike, OpenApiResponse, OpenApiSchema, OpenApiTransformer, OperationTypeRefs, OutputGenerator, ParseCommand, PayloadSchemaCandidate, QueryableNode, ReadmeCodeSnippet, ReadmeCrawledOperation, ReadmeNormalizedRequestExample, ReadmeOperation, ReadmeParameter, ReadmeResponseBody, ReadmeResponseSchema, ReadmeSidebarLink, SdkGroupManifest, SdkManifest, SdkMethodNamingStrategy, SdkNamespaceNamingStrategy, SdkNamingStrategyOptions, SdkOperationManifest, SdkPackageGenerator, SdkPackageGeneratorOptions, SdkParameterManifest, SemanticModel, ShapeAliasDeclaration, ShapeNode, ShapeProperty, TextNodeLike, TypeReferenceAliasDeclaration, TypeScriptGenerator, UserConfig, browser, buildOperationUrl, defaultConfig, defineConfig, endBrowserSession, escapeSelector, extractBalancedSegment, extractButtonText, extractCodeMirrorText, extractCodeSnippets, extractFetchBody, extractFetchHeaders, extractObjectPropertyValue, extractOperationDescription, extractOperationParametersFromOpenApi, extractParameterDescription, extractReadmeOperationFromHtml, extractReadmeOperationFromSsrProps, extractRequestCodeSnippets, extractRequestParams, extractRequestParamsFromOpenApi, extractRequestSnippetLabel, extractResponseBodies, extractResponseBodiesFromOpenApi, extractResponseContentTypes, extractResponseLabels, extractResponseSchemas, extractResponseSchemasFromOpenApi, extractSidebarLinkLabel, extractSidebarLinks, extractStablePageHtml, extractStringLiteralValue, findParameterRoot, flattenOpenApiSchemaProperties, getBrowserSession, globalConfig, inferParameterLocation, inferParameterLocationFromText, inferParameterPath, inferParameterType, isRecord, isRequiredParameter, isSupportedBrowser, loadUserConfig, mergeReadmeOperations, mergeSsrPropsIntoRenderedHtml, normalizeCurlSnippet, normalizeFetchSnippet, normalizeRequestCodeSnippet, normalizeResponseBody, normalizeStructuredRequestBody, parseLooseStructuredValue, readInputValue, readText, readTexts, resolveConfig, resolveOpenApiMediaExample, resolveParameterInput, resolveReadmeSidebarUrls, resolveSsrOperation, startBrowserSession, supportedBrowsers, transformer };