@distributed-functions/core
Version:
Distributed Functions for TypeScript
72 lines • 4.69 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CustomEitherCall = void 0;
const uuid_1 = require("uuid");
const CustomEitherCall = (name, metaConstructor) => {
return {
name,
request: (params, meta) => {
const id = (0, uuid_1.v4)();
return {
id,
name,
params,
meta: metaConstructor(meta)
};
},
response: (requestOrId, result, meta) => {
const isString = typeof requestOrId === 'string';
return {
id: isString ? requestOrId : requestOrId.id,
result,
meta: metaConstructor(meta)
};
},
success: (requestOrId, success, meta) => {
const isString = typeof requestOrId === 'string';
return {
id: isString ? requestOrId : requestOrId.id,
result: { $case: 'success', success },
meta: metaConstructor(meta)
};
},
failure: (requestOrId, failure, meta) => {
const isString = typeof requestOrId === 'string';
return {
id: isString ? requestOrId : requestOrId.id,
result: { $case: 'failure', failure },
meta: metaConstructor(meta)
};
}
};
};
exports.CustomEitherCall = CustomEitherCall;
// USAGE
// export type ExampleCustomEitherCallMeta = {
// traceId: string
// ts: number
// sub?: string
// sid?: string
// }
// export type ExampleCustomEitherCall<
// Name extends string,
// RequestParams extends Record<any, any>,
// Success extends Record<any, any>,
// Failure extends DefaultCallResponseResultFailure = DefaultCallResponseResultFailure
// > = CustomEitherCall<Name, ExampleCustomEitherCallMeta, RequestParams, Success, Failure>
// export const ExampleCustomEitherCall = <
// Name extends string,
// Params extends Record<any, any>,
// Success extends Record<any, any>,
// Failure extends DefaultCallResponseResultFailure = DefaultCallResponseResultFailure
// >(name: Name) => {
// return CustomEitherCall<Name, ExampleCustomEitherCallMeta, Params, Success, Failure>(name, (meta) => {
// return {
// traceId: meta?.traceId ?? v4(),
// ts: meta?.ts ?? Date.now(),
// sub: meta?.sub,
// sid: meta?.sid
// }
// })
// }
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWVpdGhlci1jYWxsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2N1c3RvbS1laXRoZXItY2FsbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBeUI7QUE0Q2xCLE1BQU0sZ0JBQWdCLEdBQUcsQ0FPOUIsSUFBVSxFQUNWLGVBQStDLEVBQ1MsRUFBRTtJQUMxRCxPQUFPO1FBQ0wsSUFBSTtRQUNKLE9BQU8sRUFBRSxDQUFDLE1BQWMsRUFBRSxJQUFvQixFQUFtQyxFQUFFO1lBQ2pGLE1BQU0sRUFBRSxHQUFHLElBQUEsU0FBRSxHQUFFLENBQUE7WUFFZixPQUFPO2dCQUNMLEVBQUU7Z0JBQ0YsSUFBSTtnQkFDSixNQUFNO2dCQUNOLElBQUksRUFBRSxlQUFlLENBQUMsSUFBSSxDQUFDO2FBQzVCLENBQUE7UUFDSCxDQUFDO1FBQ0QsUUFBUSxFQUFFLENBQ1IsV0FBcUQsRUFDckQsTUFBd0QsRUFDeEQsSUFBb0IsRUFDcEIsRUFBRTtZQUNGLE1BQU0sUUFBUSxHQUFHLE9BQU8sV0FBVyxLQUFLLFFBQVEsQ0FBQTtZQUVoRCxPQUFPO2dCQUNMLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQzNDLE1BQU07Z0JBQ04sSUFBSSxFQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUM7YUFDNUIsQ0FBQTtRQUNILENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQyxXQUFxRCxFQUFFLE9BQWdCLEVBQUUsSUFBb0IsRUFBRSxFQUFFO1lBQ3pHLE1BQU0sUUFBUSxHQUFHLE9BQU8sV0FBVyxLQUFLLFFBQVEsQ0FBQTtZQUVoRCxPQUFPO2dCQUNMLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQzNDLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFO2dCQUNyQyxJQUFJLEVBQUUsZUFBZSxDQUFDLElBQUksQ0FBQzthQUM1QixDQUFBO1FBQ0gsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDLFdBQXFELEVBQUUsT0FBZ0IsRUFBRSxJQUFvQixFQUFFLEVBQUU7WUFDekcsTUFBTSxRQUFRLEdBQUcsT0FBTyxXQUFXLEtBQUssUUFBUSxDQUFBO1lBRWhELE9BQU87Z0JBQ0wsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFBRTtnQkFDM0MsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUU7Z0JBQ3JDLElBQUksRUFBRSxlQUFlLENBQUMsSUFBSSxDQUFDO2FBQzVCLENBQUE7UUFDSCxDQUFDO0tBQ0YsQ0FBQTtBQUNILENBQUMsQ0FBQTtBQXREWSxRQUFBLGdCQUFnQixvQkFzRDVCO0FBRUQsUUFBUTtBQUVSLDhDQUE4QztBQUM5QyxvQkFBb0I7QUFDcEIsZUFBZTtBQUNmLGlCQUFpQjtBQUNqQixpQkFBaUI7QUFDakIsSUFBSTtBQUVKLHVDQUF1QztBQUN2Qyx5QkFBeUI7QUFDekIsNENBQTRDO0FBQzVDLHNDQUFzQztBQUN0Qyx3RkFBd0Y7QUFDeEYsMkZBQTJGO0FBRTNGLDJDQUEyQztBQUMzQyx5QkFBeUI7QUFDekIscUNBQXFDO0FBQ3JDLHNDQUFzQztBQUN0Qyx3RkFBd0Y7QUFDeEYscUJBQXFCO0FBQ3JCLDJHQUEyRztBQUMzRyxlQUFlO0FBQ2Ysd0NBQXdDO0FBQ3hDLG9DQUFvQztBQUNwQyx3QkFBd0I7QUFDeEIsdUJBQXVCO0FBQ3ZCLFFBQVE7QUFDUixPQUFPO0FBQ1AsSUFBSSJ9