Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,6 @@ export const TypescriptCustomConfigSchema = z.strictObject({
useBrandedStringAliases: z.optional(z.boolean()),
offsetSemantics: z.optional(z.enum(["item-index", "page-index"])),

// OAuth token override configuration
oauthTokenOverride: z.optional(z.boolean()),

// beta (not in docs)
includeContentHeadersOnFileDownloadResponse: z.optional(z.boolean()),
includeUtilsOnUnionMembers: z.optional(z.boolean()),
Expand Down
6 changes: 2 additions & 4 deletions generators/typescript/sdk/cli/src/SdkGeneratorCli.ts
Original file line number Diff line number Diff line change
Expand Up @@ -96,8 +96,7 @@ export class SdkGeneratorCli extends AbstractGeneratorCli<SdkCustomConfig> {
linter: parsed?.linter ?? "biome",
formatter: parsed?.formatter ?? "biome",
generateSubpackageExports: parsed?.generateSubpackageExports ?? false,
offsetSemantics: parsed?.offsetSemantics ?? "item-index",
oauthTokenOverride: parsed?.oauthTokenOverride ?? false
offsetSemantics: parsed?.offsetSemantics ?? "item-index"
};

if (parsed?.noSerdeLayer === false && typeof parsed?.enableInlineTypes === "undefined") {
Expand Down Expand Up @@ -243,8 +242,7 @@ export class SdkGeneratorCli extends AbstractGeneratorCli<SdkCustomConfig> {
formatter: customConfig.formatter,
linter: customConfig.linter,
generateSubpackageExports: customConfig.generateSubpackageExports ?? false,
offsetSemantics: customConfig.offsetSemantics,
oauthTokenOverride: customConfig.oauthTokenOverride ?? false
offsetSemantics: customConfig.offsetSemantics
}
});
const typescriptProject = await sdkGenerator.generate();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,5 +60,4 @@ export interface SdkCustomConfig {
parameterNaming: "originalName" | "wireValue" | "camelCase" | "snakeCase" | "default";
generateSubpackageExports: boolean | undefined;
offsetSemantics: "item-index" | "page-index";
oauthTokenOverride: boolean | undefined;
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,19 +19,12 @@ export declare namespace AuthProvidersGenerator {
authScheme: AuthScheme | { type: "any" };
neverThrowErrors: boolean;
includeSerdeLayer: boolean;
oauthTokenOverride: boolean;
}
}

export class AuthProvidersGenerator implements GeneratedFile<SdkContext> {
private readonly authProviderGenerator: AuthProviderGenerator | undefined;
constructor({
ir,
authScheme,
neverThrowErrors,
includeSerdeLayer,
oauthTokenOverride
}: AuthProvidersGenerator.Init) {
constructor({ ir, authScheme, neverThrowErrors, includeSerdeLayer }: AuthProvidersGenerator.Init) {
this.authProviderGenerator = (() => {
switch (authScheme.type) {
case "any":
Expand Down Expand Up @@ -64,8 +57,7 @@ export class AuthProvidersGenerator implements GeneratedFile<SdkContext> {
ir,
authScheme,
neverThrowErrors,
includeSerdeLayer,
oauthTokenOverride
includeSerdeLayer
});
default:
assertNever(authScheme);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ export declare namespace BaseClientTypeGenerator {
generateIdempotentRequestOptions: boolean;
ir: FernIr.IntermediateRepresentation;
omitFernHeaders: boolean;
oauthTokenOverride: boolean;
}
}

Expand All @@ -21,18 +20,11 @@ export class BaseClientTypeGenerator {
private readonly generateIdempotentRequestOptions: boolean;
private readonly ir: FernIr.IntermediateRepresentation;
private readonly omitFernHeaders: boolean;
private readonly oauthTokenOverride: boolean;

constructor({
generateIdempotentRequestOptions,
ir,
omitFernHeaders,
oauthTokenOverride
}: BaseClientTypeGenerator.Init) {

constructor({ generateIdempotentRequestOptions, ir, omitFernHeaders }: BaseClientTypeGenerator.Init) {
this.generateIdempotentRequestOptions = generateIdempotentRequestOptions;
this.ir = ir;
this.omitFernHeaders = omitFernHeaders;
this.oauthTokenOverride = oauthTokenOverride;
}

public writeToFile(context: SdkContext): void {
Expand Down Expand Up @@ -281,10 +273,9 @@ export type NormalizedClientOptionsWithAuth<T extends BaseClientOptions> = Norma
namedImports: ["OAuthAuthProvider"]
});
providerImports.push("OAuthAuthProvider");
const oauthCreation = this.oauthTokenOverride
? "if (OAuthAuthProvider.canCreate(normalizedWithNoOpAuthProvider)) { authProviders.push(OAuthAuthProvider.createInstance(normalizedWithNoOpAuthProvider)); }"
: "if (OAuthAuthProvider.canCreate(normalizedWithNoOpAuthProvider)) { authProviders.push(new OAuthAuthProvider(normalizedWithNoOpAuthProvider)); }";
providerInstantiations.push(oauthCreation);
providerInstantiations.push(
"if (OAuthAuthProvider.canCreate(normalizedWithNoOpAuthProvider)) { authProviders.push(OAuthAuthProvider.createInstance(normalizedWithNoOpAuthProvider)); }"
);
}
}

Expand Down Expand Up @@ -321,9 +312,7 @@ export type NormalizedClientOptionsWithAuth<T extends BaseClientOptions> = Norma
moduleSpecifier: "./auth/OAuthAuthProvider.js",
namedImports: ["OAuthAuthProvider"]
});
authProviderCreation = this.oauthTokenOverride
? "OAuthAuthProvider.createInstance(normalizedWithNoOpAuthProvider)"
: "new OAuthAuthProvider(normalizedWithNoOpAuthProvider)";
authProviderCreation = "OAuthAuthProvider.createInstance(normalizedWithNoOpAuthProvider)";
break;
} else if (authScheme.type === "inferred") {
context.sourceFile.addImportDeclaration({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,6 @@ export declare namespace GeneratedSdkClientClassImpl {
generateEndpointMetadata: boolean;
parameterNaming: "originalName" | "wireValue" | "camelCase" | "snakeCase" | "default";
offsetSemantics: "item-index" | "page-index";
oauthTokenOverride: boolean;
}
}

Expand Down Expand Up @@ -137,7 +136,6 @@ export class GeneratedSdkClientClassImpl implements GeneratedSdkClientClass {
private readonly anyEndpointWithAuth: boolean;
private readonly generateEndpointMetadata: boolean;
private readonly offsetSemantics: "item-index" | "page-index";
private readonly oauthTokenOverride: boolean;

constructor({
isRoot,
Expand All @@ -164,8 +162,7 @@ export class GeneratedSdkClientClassImpl implements GeneratedSdkClientClass {
formDataSupport,
generateEndpointMetadata,
parameterNaming,
offsetSemantics,
oauthTokenOverride
offsetSemantics
}: GeneratedSdkClientClassImpl.Init) {
this.isRoot = isRoot;
this.intermediateRepresentation = intermediateRepresentation;
Expand All @@ -185,7 +182,6 @@ export class GeneratedSdkClientClassImpl implements GeneratedSdkClientClass {
this.generateEndpointMetadata = generateEndpointMetadata;
this.parameterNaming = parameterNaming;
this.offsetSemantics = offsetSemantics;
this.oauthTokenOverride = oauthTokenOverride;

const package_ = packageResolver.resolvePackage(packageId);
this.package_ = package_;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ export declare namespace SdkClientClassGenerator {
generateEndpointMetadata: boolean;
parameterNaming: "originalName" | "wireValue" | "camelCase" | "snakeCase" | "default";
offsetSemantics: "item-index" | "page-index";
oauthTokenOverride: boolean;
}

export namespace generateService {
Expand Down Expand Up @@ -69,7 +68,6 @@ export class SdkClientClassGenerator {
private readonly generateEndpointMetadata: boolean;
private readonly parameterNaming: "originalName" | "wireValue" | "camelCase" | "snakeCase" | "default";
private readonly offsetSemantics: "item-index" | "page-index";
private readonly oauthTokenOverride: boolean;

constructor({
intermediateRepresentation,
Expand All @@ -95,8 +93,7 @@ export class SdkClientClassGenerator {
useDefaultRequestParameterValues,
generateEndpointMetadata,
parameterNaming,
offsetSemantics,
oauthTokenOverride
offsetSemantics
}: SdkClientClassGenerator.Init) {
this.intermediateRepresentation = intermediateRepresentation;
this.errorResolver = errorResolver;
Expand All @@ -122,7 +119,6 @@ export class SdkClientClassGenerator {
this.generateEndpointMetadata = generateEndpointMetadata;
this.parameterNaming = parameterNaming;
this.offsetSemantics = offsetSemantics;
this.oauthTokenOverride = oauthTokenOverride;
}

public generateService({
Expand Down Expand Up @@ -158,8 +154,7 @@ export class SdkClientClassGenerator {
useDefaultRequestParameterValues: this.useDefaultRequestParameterValues,
generateEndpointMetadata: this.generateEndpointMetadata,
parameterNaming: this.parameterNaming,
offsetSemantics: this.offsetSemantics,
oauthTokenOverride: this.oauthTokenOverride
offsetSemantics: this.offsetSemantics
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ export declare namespace OAuthAuthProviderGenerator {
authScheme: FernIr.OAuthScheme;
neverThrowErrors: boolean;
includeSerdeLayer: boolean;
oauthTokenOverride: boolean;
}
}

Expand Down Expand Up @@ -42,14 +41,12 @@ export class OAuthAuthProviderGenerator implements AuthProviderGenerator {
private readonly authScheme: FernIr.OAuthScheme;
private readonly neverThrowErrors: boolean;
private readonly includeSerdeLayer: boolean;
private readonly oauthTokenOverride: boolean;

constructor(init: OAuthAuthProviderGenerator.Init) {
this.ir = init.ir;
this.authScheme = init.authScheme;
this.neverThrowErrors = init.neverThrowErrors;
this.includeSerdeLayer = init.includeSerdeLayer;
this.oauthTokenOverride = init.oauthTokenOverride;
}

public getFilePath(): ExportedFilePath {
Expand Down Expand Up @@ -134,7 +131,7 @@ export class OAuthAuthProviderGenerator implements AuthProviderGenerator {
}

public instantiate(constructorArgs: ts.Expression[]): ts.Expression {
const hasTokenOverride = this.oauthTokenOverride;
const hasTokenOverride = true;
if (hasTokenOverride) {
return ts.factory.createCallExpression(
ts.factory.createPropertyAccessExpression(ts.factory.createIdentifier(CLASS_NAME), "createInstance"),
Expand All @@ -146,7 +143,7 @@ export class OAuthAuthProviderGenerator implements AuthProviderGenerator {
}

public writeToFile(context: SdkContext): void {
const hasTokenOverride = this.oauthTokenOverride;
const hasTokenOverride = true;
this.writeClass(context);
if (hasTokenOverride) {
this.writeTokenOverrideClass(context);
Expand Down Expand Up @@ -219,7 +216,7 @@ export class OAuthAuthProviderGenerator implements AuthProviderGenerator {
context.genericAPISdkError.getReferenceToGenericAPISdkError().getExpression()
);

const hasTokenOverride = this.oauthTokenOverride;
const hasTokenOverride = true;

const constructorOptionsType = hasTokenOverride
? `${CLASS_NAME}.${OPTIONS_TYPE_NAME} & ${CLASS_NAME}.AuthOptions.ClientCredentials`
Expand Down Expand Up @@ -800,7 +797,7 @@ export class OAuthAuthProviderGenerator implements AuthProviderGenerator {
return;
}

const hasTokenOverride = this.oauthTokenOverride;
const hasTokenOverride = true;

// Import BaseClientOptions for Options to extend
// OAuthAuthProvider.Options needs to extend BaseClientOptions because it creates an AuthClient
Expand Down
22 changes: 7 additions & 15 deletions generators/typescript/sdk/generator/src/SdkGenerator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,6 @@ export declare namespace SdkGenerator {
formatter: "prettier" | "biome" | "oxfmt";
generateSubpackageExports: boolean;
offsetSemantics: "item-index" | "page-index";
oauthTokenOverride: boolean;
}
}

Expand Down Expand Up @@ -378,8 +377,7 @@ export class SdkGenerator {
requireDefaultEnvironment: config.requireDefaultEnvironment,
retainOriginalCasing: config.retainOriginalCasing,
parameterNaming: config.parameterNaming,
baseClientTypeDeclarationReferencer: this.baseClientTypeDeclarationReferencer,
oauthTokenOverride: config.oauthTokenOverride
baseClientTypeDeclarationReferencer: this.baseClientTypeDeclarationReferencer
});
this.genericAPISdkErrorDeclarationReferencer = new GenericAPISdkErrorDeclarationReferencer({
containingDirectory: [],
Expand Down Expand Up @@ -473,14 +471,12 @@ export class SdkGenerator {
useDefaultRequestParameterValues: config.useDefaultRequestParameterValues,
generateEndpointMetadata: config.generateEndpointMetadata,
parameterNaming: config.parameterNaming,
offsetSemantics: config.offsetSemantics,
oauthTokenOverride: config.oauthTokenOverride
offsetSemantics: config.offsetSemantics
});
this.baseClientTypeGenerator = new BaseClientTypeGenerator({
ir: intermediateRepresentation,
generateIdempotentRequestOptions: this.hasIdempotentEndpoints(),
omitFernHeaders: config.omitFernHeaders,
oauthTokenOverride: config.oauthTokenOverride
omitFernHeaders: config.omitFernHeaders
});
this.websocketGenerator = new WebsocketClassGenerator({
intermediateRepresentation,
Expand Down Expand Up @@ -528,8 +524,7 @@ export class SdkGenerator {
endpointSnippets: this.endpointSnippets,
fileResponseType: this.config.fileResponseType,
fetchSupport: this.config.fetchSupport,
generateSubpackageExports: this.config.generateSubpackageExports,
oauthTokenOverride: this.config.oauthTokenOverride
generateSubpackageExports: this.config.generateSubpackageExports
}),
ir: intermediateRepresentation
});
Expand Down Expand Up @@ -1396,8 +1391,7 @@ export class SdkGenerator {
ir: this.intermediateRepresentation,
authScheme,
neverThrowErrors: this.config.neverThrowErrors,
includeSerdeLayer: this.config.includeSerdeLayer,
oauthTokenOverride: this.config.oauthTokenOverride
includeSerdeLayer: this.config.includeSerdeLayer
});
if (!authProvidersGenerator.shouldWriteFile()) {
continue;
Expand All @@ -1416,8 +1410,7 @@ export class SdkGenerator {
ir: this.intermediateRepresentation,
authScheme: { type: "any" },
neverThrowErrors: this.config.neverThrowErrors,
includeSerdeLayer: this.config.includeSerdeLayer,
oauthTokenOverride: this.config.oauthTokenOverride
includeSerdeLayer: this.config.includeSerdeLayer
});
this.withSourceFile({
filepath: anyAuthProvidersGenerator.getFilePath(),
Expand All @@ -1433,8 +1426,7 @@ export class SdkGenerator {
ir: this.intermediateRepresentation,
authScheme,
neverThrowErrors: this.config.neverThrowErrors,
includeSerdeLayer: this.config.includeSerdeLayer,
oauthTokenOverride: this.config.oauthTokenOverride
includeSerdeLayer: this.config.includeSerdeLayer
});
if (!authProvidersGenerator.shouldWriteFile()) {
continue;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ export declare namespace BaseClientContextImpl {
generateIdempotentRequestOptions: boolean;
parameterNaming: "originalName" | "wireValue" | "camelCase" | "snakeCase" | "default";
baseClientTypeDeclarationReferencer: BaseClientTypeDeclarationReferencer;
oauthTokenOverride: boolean;
}
}
const OPTIONS_INTERFACE_NAME = "BaseClientOptions";
Expand All @@ -43,7 +42,6 @@ export class BaseClientContextImpl implements BaseClientContext {
private readonly parameterNaming: "originalName" | "wireValue" | "camelCase" | "snakeCase" | "default";
private readonly generateIdempotentRequestOptions: boolean;
private readonly baseClientTypeDeclarationReferencer: BaseClientTypeDeclarationReferencer;
private readonly oauthTokenOverride: boolean;

public static readonly OPTIONS_INTERFACE_NAME = OPTIONS_INTERFACE_NAME;

Expand All @@ -68,8 +66,7 @@ export class BaseClientContextImpl implements BaseClientContext {
retainOriginalCasing,
generateIdempotentRequestOptions,
parameterNaming,
baseClientTypeDeclarationReferencer,
oauthTokenOverride
baseClientTypeDeclarationReferencer
}: BaseClientContextImpl.Init) {
this.intermediateRepresentation = intermediateRepresentation;
this.allowCustomFetcher = allowCustomFetcher;
Expand All @@ -78,7 +75,6 @@ export class BaseClientContextImpl implements BaseClientContext {
this.generateIdempotentRequestOptions = generateIdempotentRequestOptions;
this.parameterNaming = parameterNaming;
this.baseClientTypeDeclarationReferencer = baseClientTypeDeclarationReferencer;
this.oauthTokenOverride = oauthTokenOverride;

this.authHeaders = [];
for (const authScheme of intermediateRepresentation.auth.schemes) {
Expand Down
Loading
Loading