Geolocation
Browser geolocation integration for Effect programs.
This module defines a Geolocation service backed by navigator.geolocation. The service can read one current position or stream watched position updates with a sliding buffer. Browser callback failures are represented as GeolocationError values with PositionUnavailable, PermissionDenied, or Timeout reasons. The module also provides the browser-backed layer and a watchPosition accessor.
Accessors
watchPosition
Signature
declare function watchPosition(
options?: PositionOptions & {
readonly bufferSize?: number;
},
): Stream<GeolocationPosition, GeolocationError, Geolocation>;Errors
GeolocationError
Tagged error wrapping a browser geolocation failure reason.
Signature
declare class GeolocationError extends YieldableError<this> & {
readonly _tag: "GeolocationError";
} & Readonly<{
readonly reason: GeolocationErrorReason;
}> {
constructor(props: {
readonly reason: GeolocationErrorReason;
});
readonly "~@effect/platform-browser/Geolocation/GeolocationError": "~@effect/platform-browser/Geolocation/GeolocationError";
message: string;
}GeolocationErrorReason type
Union of browser geolocation error reasons represented by the service.
Signature
type GeolocationErrorReason = PositionUnavailable | PermissionDenied | Timeout;PermissionDenied
Error reason for the browser geolocation PERMISSION_DENIED failure.
Signature
declare class PermissionDenied extends YieldableError<this> & {
readonly _tag: "PermissionDenied";
} & Readonly<{
readonly cause: unknown;
}> {
constructor(args: {
readonly cause: unknown;
});
message: string;
}Error reason for the browser geolocation TIMEOUT failure.
Signature
declare class Timeout extends YieldableError<this> & {
readonly _tag: "Timeout";
} & Readonly<{
readonly cause: unknown;
}> {
constructor(args: {
readonly cause: unknown;
});
message: string;
}Layers
Services
Geolocation
Service tag for browser geolocation capabilities.
When to use
Use when you need to access or provide geolocation capabilities through Effect's context.
See
layerfor providing the browser-backed geolocation service
Signature
declare const Geolocation: Service<Geolocation, Geolocation>;Geolocation interface
Defines the service interface for browser geolocation, providing effects for the current position and streams of watched positions.
When to use
Use when browser code needs a typed Effect service for one-shot location reads or streamed location updates.
Details
getCurrentPosition returns one position effect. watchPosition returns a stream and accepts the browser PositionOptions plus an optional sliding bufferSize.
Gotchas
Browser permission prompts, denied permissions, timeouts, unavailable position data, secure-context restrictions, and policy restrictions are surfaced as GeolocationError.
See
GeolocationErrorfor represented browser geolocation failureslayerfor the browser-backed service implementation
Signature
interface Geolocation {
readonly "~@effect/platform-browser/Geolocation": "~@effect/platform-browser/Geolocation";
readonly getCurrentPosition: (
options?: PositionOptions,
) => Effect<GeolocationPosition, GeolocationError>;
readonly watchPosition: (
options?: PositionOptions & {
readonly bufferSize?: number;
},
) => Stream<GeolocationPosition, GeolocationError>;
}
Reads geolocation positions from the
Geolocationservice as a stream, with an optional sliding buffer size.