@jrkienle/posthog-effect
v0.1.0
Published
Effect bindings for Posthog
Downloads
4,848
Readme
posthog-effect
Effect bindings for PostHog
Installation
First, ensure you have effect (version 3.0.0 or later) and
posthog-node (version 5.0.0 or later) installed.
pnpm add effect posthog-effectNext, install the @jrkienle/posthog package, which integrates Effect and PostHog.
pnpm add @jrkienle/posthogSetup
Before you can use @jrkienle/posthog, you'll need to provide a
Config value for POSTHOG_API_KEY. This is
usually done by providing the value as an env var.
Usage
To use the package, simply provide the default service implementation to your program and call a function from the PostHog client:
import { PostHogClient } from '@jrkienle/posthog-effect';
import { Effect } from 'effect';
// Using the service
const program = Effect.gen(function* () {
const postHog = yield* PostHogClient;
const flags = yield* postHog.evaluateFlags('distinct_id_of_user');
if (flags.isEnabled('flag-key')) {
// Do something differently for this user
// Optional: fetch the payload
const matchedFlagPayload = flags.getFlagPayload('flag-key');
}
});
// Providing the implementation
const runnable = Effect.provide(program, PostHogClient.Default);
// Ran successfully
Effect.runPromise(runnable);Additionally, you can provide a value for the PostHogClientOptions , which will be used when
initializing the PostHog client:
import { PostHogClient, PostHogClientOptions } from '@jrkienle/posthog-effect';
import { Effect } from 'effect';
const program = Effect.gen(function* () {
const postHog = yield* PostHogClient;
});
const runnable = program.pipe(
PostHogClient.default,
Effect.provideService(PostHogClientOptions, {});
);Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.
License
This package is licensed under the MIT License. See LICENSE.
TODO
This package isn't complete yet. There are a few items I'll be taking care of in future releases:
- Adding
fetchandonmethods toPostHogClient. - Setting up CI (need to run my own Forgejo instance first)
- Adding docs / doc comments
- Adding non-client methods
More coming soon!
