@posthog/schema-enforcer-plugin

0.0.6 • Public • Published

PostHog Schema Enforcer Plugin mascot

PostHog Schema Enforcer Plugin (WIP)

Objective

This plugin allows users to specify schemas for events ingested so that they can prevent the ingestion of events that don't match a specified schema.

What it currently does

Prevents ingestion if the event:

  • Is missing a required property
  • Has a property with the wrong type
  • Is not included in the file and onlyIngestEventsFromFile is true

It also:

  • Removes all other properties from an event except selected ones if acceptOnlySchemaProps is true

Configuration is done via a JSON file uploaded as a plugin attachment

Example config file

{
    "onlyIngestEventsFromFile": true,
    "eventSchemas": {
        "testEvent": {
            "acceptOnlySchemaProps": true,
            "schema": {
                "foo": {
                    "type": "string",
                    "required": false
                },
                "bar": {
                    "type": "number",
                    "required": true
                },
                "baz": {
                    "type": "boolean",
                    "required": false
                }
            } 
        }
    }
}

To Do

Short Term

  • Create an interface to generate the config file (In Progress)
  • Friendlier config (e.g. accept 1, 'true', and true for toggles)
  • More config options, such as:
    • List of events to ingest
    • Thresholds (e.g. 'greater than' for number type)
    • Default values
    • ...
  • Tests

Future

  • Accept YAML
  • Powerful threshold and filtering
  • More options for what to do with "bad events" beyond not ingesting them

Questions?

Join our Slack community.

/@posthog/schema-enforcer-plugin/

    Package Sidebar

    Install

    npm i @posthog/schema-enforcer-plugin

    Weekly Downloads

    0

    Version

    0.0.6

    License

    MIT

    Unpacked Size

    77.4 kB

    Total Files

    12

    Last publish

    Collaborators

    • robbie-c
    • fraserhopper
    • manoelposthog
    • watilo
    • ben-posthog
    • twixes
    • fuziontech
    • mariusandra
    • timgl