H4ad / serverless-adapter-examples

Working examples to show how to integrate with https://github.com/H4ad/serverless-adapter
https://viniciusl.com.br/serverless-adapter
MIT License
12 stars 0 forks source link

When using the Azure Handler and TRPC Adapter, I get this bizzare error: UnhandledPromiseRejectionWarning: TypeError: context.done is not a function #3

Closed itaifish closed 1 year ago

itaifish commented 1 year ago
/** index.ts **/
import { ServerlessAdapter } from '@h4ad/serverless-adapter';
import { AzureHandler } from '@h4ad/serverless-adapter/lib/handlers/azure';
import { PromiseResolver } from '@h4ad/serverless-adapter/lib/resolvers/promise';
import { HttpTriggerV4Adapter } from '@h4ad/serverless-adapter/lib/adapters/azure';
import app, { frameworkOptions, TrpcContext } from '../router/app';
import { TrpcFramework } from '@h4ad/serverless-adapter/lib/frameworks/trpc';

export default ServerlessAdapter.new(app)
    .setHandler(new AzureHandler())
    .setResolver(new PromiseResolver())
    .setFramework(new TrpcFramework<TrpcContext>(frameworkOptions))
    .addAdapter(new HttpTriggerV4Adapter({ stripBasePath: '/api' }))
    .build();
/** app.ts **/
import * as trpc from '@trpc/server';
import {
    BufferToJSObjectTransformer,
    TrpcAdapterContext,
    TrpcFrameworkOptions,
} from '@h4ad/serverless-adapter/lib/frameworks/trpc';

export type CustomContext = { done: () => void };
export type TrpcContext = TrpcAdapterContext<CustomContext>;

interface User {
    id: string;
    name: string;
}
const userList: User[] = [
    {
        id: '1',
        name: 'KATT',
    },
];

const appRouter = trpc
    .router<TrpcContext>()
    .transformer(new BufferToJSObjectTransformer())
    .query('getUserById', {
        input: (val: unknown) => {
            if (typeof val === 'string') {
                return val;
            }
            throw new Error(`Invalid input: ${typeof val}`);
        },
        async resolve(req) {
            return userList.find((user) => (user.id = req.input));
        },
    });
export type AppRouter = typeof appRouter;

export const frameworkOptions: TrpcFrameworkOptions<TrpcContext> = {
    createContext: () => ({
        done: () => {
            console.log(this);
        },
    }),
};

export default appRouter;

Error:

[2022-12-06T21:06:39.616Z] (node:315642) UnhandledPromiseRejectionWarning: TypeError: context.done is not a function
[2022-12-06T21:06:39.616Z]     at /home/itai/.config/yarn/global/node_modules/azure-functions-core-tools/bin/workers/node/worker-bundle.js:18698:29
[2022-12-06T21:06:39.616Z]     at processTicksAndRejections (internal/process/task_queues.js:95:5)
itaifish commented 1 year ago

The fix for this was updated Azure Function Core tools to v4!