Custom code regions in TypeScript
To enable custom code regions for TypeScript SDKs, update the project’s
.speakeasy/gen.yaml
file like so:
.speakeasy/gen.yaml
configVersion: 2.0.0generation:# ...typescript:# ...+ enableCustomCodeRegions: true
Full example
The Speakeasy examples repository has a full example (opens in a new tab) of a TypeScript SDK that uses custom code regions.
Regions
Below are the available code regions in TypeScript SDKs.
SDK classes
TypeScript SDK classes can have two code regions:
// #region imports
- allows the addition of imports to an SDK file needed for custom methods and properties. This region must be located at the top of the file alongside generated imports.// #region sdk-class-body
- allows the addition of custom methods and properties to an SDK class. This region must be located in the body of a Python SDK class alongside generated methods and properties.
src/sdk/todos.ts
/** Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.*/import { todosGetOne } from "../funcs/todosGetOne.js";import { ClientSDK, RequestOptions } from "../lib/sdks.js";import * as operations from "../models/operations/index.js";import { unwrapAsync } from "../types/fp.js";// #region importsimport DOMPurify from 'dompurify';import marked from "marked";import type { Todo } from "../models/components/todo.js";// #endregion importsexport class Todos extends ClientSDK {// #region sdk-class-bodyasync renderTodo(id: string): Promise<string> {const todo = await this.getOne({ id });const html = await marked.parse(`# ${todo.title}\n\n${todo.description}`, {async: true,});return DOMPurify.sanitize(html);}// #endregion sdk-class-bodyasync getOne(request: operations.TodosGetOneRequest, options?: RequestOptions): Promise<operations.TodosGetOneResponse> {return await unwrapAsync(todosGetOne(this, request, options));}}