@azure-utils/durable-functions
Version:
Utilities for Azure Durable functions.
65 lines (63 loc) • 2.69 kB
JavaScript
import { requestAzureFunctionsDurableTaskWebhookOrThrow } from "./durable-webhook-CL8hkdP6.mjs";
//#region src/durable-entities-api.ts
/**
* An object that contains all the functions for interacting with Azure Functions Durable Entity.
*
* @throws Each method can throw an error if the operation fails.
*/
const durableEntities = {
list: listAzureFunctionsEntitiesOrThrow,
getState: getAzureFunctionsEntityStateOrThrow,
signal: signalAzureFunctionsEntityOrThrow
};
/**
* Sends a one-way operation message to a Durable Entity. If the entity doesn't exist, it will be created automatically.
*/
async function signalAzureFunctionsEntityOrThrow(options, requestOptions) {
const { entityKey, entityName, operationInput, operationName } = options;
const searchParams = new URLSearchParams();
if (operationName) searchParams.set("op", operationName);
await requestAzureFunctionsDurableTaskWebhookOrThrow(`entities/${entityName}/${entityKey}`, {
...requestOptions,
searchParams,
body: JSON.stringify(operationInput),
method: "POST"
});
return;
}
/**
* Gets the state of the specified entity.
*/
async function getAzureFunctionsEntityStateOrThrow(options, requestOptions) {
const { entityKey, entityName } = options;
const response = await requestAzureFunctionsDurableTaskWebhookOrThrow(`entities/${entityName}/${entityKey}`, requestOptions);
return response.json();
}
/**
* Query and list Azure Functions Entity Instances.
*/
async function listAzureFunctionsEntitiesOrThrow(options, requestOptions) {
const { entityName = "", fetchState, lastOperationTimeFrom, lastOperationTimeTo, top, continuationToken } = options;
const searchParams = new URLSearchParams();
if (fetchState) searchParams.set("fetchState", "true");
if (lastOperationTimeFrom) searchParams.set("lastOperationTimeFrom", lastOperationTimeFrom.toISOString());
if (lastOperationTimeTo) searchParams.set("lastOperationTimeTo", lastOperationTimeTo.toISOString());
if (top) searchParams.set("top", top.toString());
const continuationTokenHeader = "x-ms-continuation-token";
const headers = new Headers();
if (continuationToken) headers.set(continuationTokenHeader, continuationToken);
const response = await requestAzureFunctionsDurableTaskWebhookOrThrow(`entities/${entityName}`, {
...requestOptions,
searchParams,
headers
});
const instances = await response.json();
return {
instances,
top: top ?? null,
continuationToken: response.headers.get(continuationTokenHeader)
};
}
//#endregion
export { durableEntities, getAzureFunctionsEntityStateOrThrow, listAzureFunctionsEntitiesOrThrow, signalAzureFunctionsEntityOrThrow };
//# sourceMappingURL=durable-entities-api-C8E-23d0.mjs.map