From 5fbb091018b2a458e94e30790d7f6f272f4fb6be Mon Sep 17 00:00:00 2001 From: Timothee Guerin Date: Tue, 4 Jun 2024 09:13:23 -0700 Subject: [PATCH 1/4] Deprecate getAssetEmitter --- packages/compiler/src/core/types.ts | 2 ++ packages/json-schema/src/index.ts | 3 ++- packages/openapi3/src/openapi.ts | 6 ++++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/compiler/src/core/types.ts b/packages/compiler/src/core/types.ts index 8c2eeab612..8cde7d7f42 100644 --- a/packages/compiler/src/core/types.ts +++ b/packages/compiler/src/core/types.ts @@ -2602,6 +2602,8 @@ export interface EmitContext> { /** * Get an asset emitter to write emitted output to disk using a TypeEmitter * + * @deprecated call {@link createAssetEmitter} directly instead. + * * @param TypeEmitterClass The TypeEmitter to construct your emitted output */ getAssetEmitter(TypeEmitterClass: typeof TypeEmitter): AssetEmitter; diff --git a/packages/json-schema/src/index.ts b/packages/json-schema/src/index.ts index de5c4bdced..2a36440998 100644 --- a/packages/json-schema/src/index.ts +++ b/packages/json-schema/src/index.ts @@ -14,6 +14,7 @@ import { setTypeSpecNamespace, typespecTypeToJson, } from "@typespec/compiler"; +import { createAssetEmitter } from "@typespec/compiler/emitter-framework"; import { ValidatesRawJsonDecorator } from "../generated-defs/TypeSpec.JsonSchema.Private.js"; import { BaseUriDecorator, @@ -44,7 +45,7 @@ export type JsonSchemaDeclaration = Model | Union | Enum | Scalar; const jsonSchemaKey = createStateSymbol("JsonSchema"); export async function $onEmit(context: EmitContext) { - const emitter = context.getAssetEmitter(JsonSchemaEmitter); + const emitter = createAssetEmitter(context.program, JsonSchemaEmitter as any, context); if (emitter.getOptions().emitAllModels) { emitter.emitProgram({ emitTypeSpecNamespace: false }); diff --git a/packages/openapi3/src/openapi.ts b/packages/openapi3/src/openapi.ts index 6922ab3aef..01538af7cf 100644 --- a/packages/openapi3/src/openapi.ts +++ b/packages/openapi3/src/openapi.ts @@ -301,12 +301,14 @@ function createOAPIEmitter( service.type, options.omitUnreachableTypes ); - schemaEmitter = context.getAssetEmitter( + schemaEmitter = createAssetEmitter( + program, class extends OpenAPI3SchemaEmitter { constructor(emitter: AssetEmitter, OpenAPI3EmitterOptions>) { super(emitter, metadataInfo, visibilityUsage, options); } - } as any + } as any, + context ); const securitySchemes = getOpenAPISecuritySchemes(allHttpAuthentications); From cd315b52dd0438513676f5449e53ce56dfb572a1 Mon Sep 17 00:00:00 2001 From: Timothee Guerin Date: Tue, 4 Jun 2024 09:36:41 -0700 Subject: [PATCH 2/4] Create deprecate-get-asset-emitter-2024-5-4-16-18-29.md --- .../deprecate-get-asset-emitter-2024-5-4-16-18-29.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .chronus/changes/deprecate-get-asset-emitter-2024-5-4-16-18-29.md diff --git a/.chronus/changes/deprecate-get-asset-emitter-2024-5-4-16-18-29.md b/.chronus/changes/deprecate-get-asset-emitter-2024-5-4-16-18-29.md new file mode 100644 index 0000000000..e782b01262 --- /dev/null +++ b/.chronus/changes/deprecate-get-asset-emitter-2024-5-4-16-18-29.md @@ -0,0 +1,8 @@ +--- +# Change versionKind to one of: internal, fix, dependencies, feature, deprecation, breaking +changeKind: fix +packages: + - "@typespec/compiler" +--- + +Deprecate getAssetEmitter and recommend calling `createAssetEmitter` directly From f7537966ff52c6b6ec58a126c03bb5e680fbe9fc Mon Sep 17 00:00:00 2001 From: Timothee Guerin Date: Tue, 4 Jun 2024 10:18:00 -0700 Subject: [PATCH 3/4] Create deprecate-get-asset-emitter-2024-5-4-16-38-47.md --- .../deprecate-get-asset-emitter-2024-5-4-16-38-47.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .chronus/changes/deprecate-get-asset-emitter-2024-5-4-16-38-47.md diff --git a/.chronus/changes/deprecate-get-asset-emitter-2024-5-4-16-38-47.md b/.chronus/changes/deprecate-get-asset-emitter-2024-5-4-16-38-47.md new file mode 100644 index 0000000000..71726ec5e4 --- /dev/null +++ b/.chronus/changes/deprecate-get-asset-emitter-2024-5-4-16-38-47.md @@ -0,0 +1,9 @@ +--- +# Change versionKind to one of: internal, fix, dependencies, feature, deprecation, breaking +changeKind: fix +packages: + - "@typespec/json-schema" + - "@typespec/openapi3" +--- + +Fix issue that could result in invalid document generation when runnning `tsp compile` from another directory From bba51515262b77eed171d25de69475e4d50d1918 Mon Sep 17 00:00:00 2001 From: Timothee Guerin Date: Mon, 1 Jul 2024 10:32:21 -0700 Subject: [PATCH 4/4] Update .chronus/changes/deprecate-get-asset-emitter-2024-5-4-16-38-47.md --- .../changes/deprecate-get-asset-emitter-2024-5-4-16-38-47.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.chronus/changes/deprecate-get-asset-emitter-2024-5-4-16-38-47.md b/.chronus/changes/deprecate-get-asset-emitter-2024-5-4-16-38-47.md index 71726ec5e4..1ac7a664c0 100644 --- a/.chronus/changes/deprecate-get-asset-emitter-2024-5-4-16-38-47.md +++ b/.chronus/changes/deprecate-get-asset-emitter-2024-5-4-16-38-47.md @@ -6,4 +6,4 @@ packages: - "@typespec/openapi3" --- -Fix issue that could result in invalid document generation when runnning `tsp compile` from another directory +Fix issue that could result in invalid document generation when running `tsp compile` from another directory