EdgeAIG's picture
download
raw
4.55 kB
/**
* The `ClusterSchema` module collects the annotations that add cluster behavior
* to RPC protocols and entity definitions. These annotations describe how
* requests are persisted, handled in transactions, interrupted, traced, and
* routed to shard groups without changing the request or response schema.
*
* @since 4.0.0
*/
import * as Context from "../../Context.js";
import { constFalse, constTrue, identity } from "../../Function.js";
/**
* Annotation that marks whether a cluster request should be persisted in mailbox
* storage.
*
* **Details**
*
* The default value is `false`.
*
* @category annotations
* @since 4.0.0
*/
export const Persisted = /*#__PURE__*/Context.Reference("effect/cluster/ClusterSchema/Persisted", {
defaultValue: constFalse
});
/**
* Annotation that marks whether request handling should be wrapped in the
* configured message storage transaction.
*
* **When to use**
*
* Use when you need server-side request handling or storage work wrapped in the
* storage transaction.
*
* **Details**
*
* The default value is `false`. When `true`, entity handling wraps server
* writes with the configured storage transaction.
*
* **Gotchas**
*
* This annotation has transactional behavior only when the configured
* `MessageStorage` implements it.
*
* @category annotations
* @since 4.0.0
*/
export const WithTransaction = /*#__PURE__*/Context.Reference("effect/cluster/ClusterSchema/WithTransaction", {
defaultValue: constFalse
});
/**
* Annotation that controls whether a cluster request is treated as
* uninterruptible.
*
* **Details**
*
* Use `true` for both client and server handling, `"client"` for client-side
* handling only, `"server"` for server-side handling only, or `false` to allow
* interruption.
*
* @category annotations
* @since 4.0.0
*/
export const Uninterruptible = /*#__PURE__*/Context.Reference("effect/cluster/ClusterSchema/Uninterruptible", {
defaultValue: constFalse
});
/**
* Returns whether the `Uninterruptible` annotation applies to server-side
* request handling for the provided context.
*
* **Details**
*
* Returns `true` only when `Uninterruptible` is `true` or `"server"`.
*
* @see {@link Uninterruptible} for the annotation values interpreted by this helper
* @see {@link isUninterruptibleForClient} for the client-side counterpart
*
* @category annotations
* @since 4.0.0
*/
export const isUninterruptibleForServer = context => {
const value = Context.get(context, Uninterruptible);
return value === true || value === "server";
};
/**
* Returns whether the `Uninterruptible` annotation applies to client-side
* request handling for the provided context.
*
* **When to use**
*
* Use when you need client-side cluster request handling to decide whether to
* ignore an interrupt.
*
* **Details**
*
* Returns `true` when `Uninterruptible` is `true` or `"client"`, and `false`
* for `"server"` or the default `false`.
*
* @see {@link Uninterruptible} for the annotation values interpreted by this helper
* @see {@link isUninterruptibleForServer} for the server-side counterpart
*
* @category annotations
* @since 4.0.0
*/
export const isUninterruptibleForClient = context => {
const value = Context.get(context, Uninterruptible);
return value === true || value === "client";
};
/**
* Annotation that selects the shard group for an entity id.
*
* **Details**
*
* By default, every entity id is assigned to the `"default"` shard group.
*
* @category annotations
* @since 4.0.0
*/
export const ShardGroup = /*#__PURE__*/Context.Reference("effect/cluster/ClusterSchema/ShardGroup", {
defaultValue: () => _ => "default"
});
/**
* Annotation that controls whether client-side cluster request tracing is
* enabled.
*
* **Details**
*
* The default value is `true`.
*
* @category annotations
* @since 4.0.0
*/
export const ClientTracingEnabled = /*#__PURE__*/Context.Reference("effect/cluster/ClusterSchema/ClientTracingEnabled", {
defaultValue: constTrue
});
/**
* Context reference for deriving request annotations from a cluster request.
*
* **When to use**
*
* Use to customize server-side request annotations based on the decoded
* request value.
*
* **Gotchas**
*
* This only applies to requests handled by the entity, not to the generated
* client.
*
* @category annotations
* @since 4.0.0
*/
export const Dynamic = /*#__PURE__*/Context.Reference("effect/cluster/ClusterSchema/Dynamic", {
defaultValue: () => identity
});
//# sourceMappingURL=ClusterSchema.js.map

Xet Storage Details

Size:
4.55 kB
·
Xet hash:
83be2d02199759e0f23ff37b85e72d0841bc688744c2599771216cff42f3d71e

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.