diff --git a/packages/typespec-ts/package.json b/packages/typespec-ts/package.json index 27af6a3740..458a63a7aa 100644 --- a/packages/typespec-ts/package.json +++ b/packages/typespec-ts/package.json @@ -58,7 +58,7 @@ "stop-test-server": "npx tsp-spector server stop", "unit-test": "npm-run-all --parallel unit-test:rlc unit-test:modular", "unit-test:rlc": "cross-env TS_NODE_PROJECT=tsconfig.json mocha -r ts-node/register --experimental-specifier-resolution=node --experimental-modules=true --timeout 36000 './test/unit/**/*.spec.ts'", - "unit-test:modular": "cross-env TS_NODE_PROJECT=tsconfig.test.json NODE_OPTIONS='--max-old-space-size=8192' mocha -r ts-node/register --experimental-specifier-resolution=node --experimental-modules=true --no-timeout './test/modularUnit/**/*.spec.ts' --reporter-options maxDiffSize=20000", + "unit-test:modular": "cross-env TS_NODE_PROJECT=tsconfig.test.json mocha -r ts-node/register --experimental-specifier-resolution=node --experimental-modules=true --no-timeout './test/modularUnit/**/*.spec.ts' --reporter-options maxDiffSize=20000", "regen-docs": "npm run build && tspd doc . --enable-experimental --output-dir ./website/src/content/docs/docs/emitters/clients/typespec-ts/reference --skip-js" }, "author": "Jose Heredia ", diff --git a/packages/typespec-ts/test/modularUnit/scenarios/operations/operations.md b/packages/typespec-ts/test/modularUnit/scenarios/operations/operations.md index 0075fb93dd..ef35c9c3e5 100644 --- a/packages/typespec-ts/test/modularUnit/scenarios/operations/operations.md +++ b/packages/typespec-ts/test/modularUnit/scenarios/operations/operations.md @@ -1275,4 +1275,85 @@ export function bar( { itemName: "tests", nextLinkName: "next" }, ); } +``` + +# only: should support non-model type as response from TypeSpec + +## TypeSpec + +```tsp +import "@typespec/http"; +import "@azure-tools/typespec-client-generator-core"; +using TypeSpec.Http; +using Azure.ClientGenerator.Core; + +@service(#{ + title: "Test Service" +}) +namespace testService; +model ListTestResult is string[]; + +model Test { + id: string; +} + +@route("/list-get") +@post +op bar(): ListTestResult; +``` + +The config would be like: + +```yaml +withRawContent: true +``` + +## models + +```ts models +// (file was not generated) +``` + +## Operations + +```ts operations +import { testServiceContext as Client } from "./index.js"; +import { BarOptionalParams } from "./options.js"; +import { + StreamableMethod, + PathUncheckedResponse, + createRestError, + operationOptionsToRequestParameters, +} from "@azure-rest/core-client"; + +export function _barSend( + context: Client, + options: BarOptionalParams = { requestOptions: {} }, +): StreamableMethod { + return context + .path("/list-get") + .post({ + ...operationOptionsToRequestParameters(options), + headers: { accept: "application/json", ...options.requestOptions?.headers }, + }); +} + +export async function _barDeserialize(result: PathUncheckedResponse): Promise { + const expectedStatuses = ["200"]; + if (!expectedStatuses.includes(result.status)) { + throw createRestError(result); + } + + return result.body.map((p: any) => { + return p; + }); +} + +export async function bar( + context: Client, + options: BarOptionalParams = { requestOptions: {} }, +): Promise { + const result = await _barSend(context, options); + return _barDeserialize(result); +} ``` \ No newline at end of file