open-index/open-npm huggingface dataset:
npm package: @posthog/schema-enforcer-app
Description: Enforce schema on events to ensure clean data.
Author: Yakko Majuri
Latest version: 0.0.7

![PostHog Schema Enforcer Plugin mascot](./police-hog.png)
# 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

```json
{
    "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.](https://join.slack.com/t/posthogusers/shared_invite/enQtOTY0MzU5NjAwMDY3LTc2MWQ0OTZlNjhkODk3ZDI3NDVjMDE1YjgxY2I4ZjI4MzJhZmVmNjJkN2NmMGJmMzc2N2U3Yjc3ZjI5NGFlZDQ)
npm package: @posthog/schema-enforcer-plugin
Description: Enforce schema on events to ensure clean data.
Author: Yakko Majuri
Latest version: 0.0.6

![PostHog Schema Enforcer Plugin mascot](./police-hog.png)
# 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

```json
{
    "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.](https://join.slack.com/t/posthogusers/shared_invite/enQtOTY0MzU5NjAwMDY3LTc2MWQ0OTZlNjhkODk3ZDI3NDVjMDE1YjgxY2I4ZjI4MzJhZmVmNjJkN2NmMGJmMzc2N2U3Yjc3ZjI5NGFlZDQ)
npm package: @posthog/semver-flattener-plugin
Description: [![License: MIT](https://img.shields.io/badge/License-MIT-red.svg?style=flat-square)](https://opensource.org/licenses/MIT)
Author: PostHog
Latest version: 0.0.7

# PostHog Plugin: SemVer Flattener

[![License: MIT](https://img.shields.io/badge/License-MIT-red.svg?style=flat-square)](https://opensource.org/licenses/MIT)

It is common to want to compare versions when filtering in insights.

> Show me events where `app_version < 22.7`

It isn't possible to (correctly) use string comparison for this because then several comparisons don't work. Amusingly `apples < banana` but `apples > BANANA`. Importantly `22.7` is less than `22.7-beta` which would be wrong.

This plugin splits a valid SemVer version string into 

```
export interface VersionParts {
    major: number
    minor: number
    patch?: number
    preRelease?: string
    build?: string
}
```

And flattens them onto an event. 

So this...

```
{
    properties: {
        app_version: '22.7.11'
    }
}
```

becomes...

```
{
    properties: {
        app_version: '22.7.11'
        app_version__major: 22,
        app_version__minor: 7,
        app_version__patch: 11
    }
}
```


## Questions?

### [Join our Slack community.](https://join.slack.com/t/posthogusers/shared_invite/enQtOTY0MzU5NjAwMDY3LTc2MWQ0OTZlNjhkODk3ZDI3NDVjMDE1YjgxY2I4ZjI4MzJhZmVmNjJkN2NmMGJmMzc2N2U3Yjc3ZjI5NGFlZDQ)

We're here to help you with anything PostHog!

### logo taken from 

https://publicdomainvectors.org/en/free-clipart/Decimal-separator-to-the-left/88496.html
npm package: @posthog/shopify-sync-plugin
Description: Sync Shopify Events to PostHog
Author: Sreeraj Rajan
Latest version: 0.0.7

# Shopify Plugin

Get customer and order data from Shopify into PostHog.

This plugin will:

* Associate your Shopify customers with PostHog users
* Create a PostHog user from a Shopify customer if it doesn't exist
* Create events for every new order
* In case while fetching orders if there is an error (promise timeout/poor connectivity), the next run of runEveryMinute() would try to read state from where it stopped the previous time.


## Installation
* If you are developing locally, go to `Advanced` tab in `Plugins` and either provide the URL of this repository or clone this repository and provide the absolute path of the folder created.
* The plugin has not been accepted yet to the official plugin repository


## Configuration

### Shopify Store
Get the store name from your Shopify Account and set it while initializing the plugin to fetch order events for it.

### Shopify Access Token
* Create an app on the admin page of your Shopify Account.
* Generate `Admin API access token` in the `API Credentials` tab of your newly created app.
* We will use this token to call the admin APIs to fetch orders.
npm package: @posthog/timestamp-parser-plugin
Description: Parse your event timestamps into useful date properties.
Author: Yakko Majuri
Latest version: 0.0.7

# Timestamp Parser Plugin

Parse event timestamps into:

-   Day of the week
-   Day of the month
-   Month
-   Year
-   Hour
-   Minute


So you can explore questions like:

-   Do we get more purchases on weekdays or weekends?
-   Why does our traffic spike on Tuesdays?
-   How do users use our platform differently during the holiday season?
npm package: @posthog/types
Description: Type definitions for the PostHog JavaScript SDK
Latest version: 1.367.0

# @posthog/types

Type definitions for the PostHog JavaScript SDK.

## When to Use This Package

### ✅ You Need This Package If:

You're loading PostHog via a **`<script>` tag** and want TypeScript types for `window.posthog`.

```html
<!-- You load PostHog like this -->
<script>
    !function(t,e){...}(document,window.posthog||[]);
    posthog.init('your-api-key', { api_host: 'https://us.i.posthog.com' })
</script>
```

### ❌ You Don't Need This Package If:

You're installing any PostHog library via npm/yarn/pnpm. The types are **already included**:

- `posthog-js` - Browser SDK (includes all types)
- `posthog-node` - Node.js SDK
- `posthog-react-native` - React Native SDK
- `@posthog/react` - React hooks and components

```typescript
// Types are already available when you install posthog-js
import posthog from 'posthog-js'

posthog.init('your-api-key')
posthog.capture('my_event') // ✅ Fully typed
```

## Installation

```bash
npm install @posthog/types
# or
yarn add @posthog/types
# or
pnpm add @posthog/types
```

## Usage

### Typing `window.posthog` (Script Tag Usage)

Create a type declaration file to type `window.posthog`:

```typescript
// posthog.d.ts
import type { PostHog } from '@posthog/types'

declare global {
    interface Window {
        posthog?: PostHog
    }
}

export {}
```

Now you can use `window.posthog` with full type safety:

```typescript
// Your code
window.posthog?.capture('button_clicked', { button_id: 'signup' })
window.posthog?.identify('user-123', { email: 'user@example.com' })

const flagValue = window.posthog?.getFeatureFlag('my-flag')
if (flagValue === 'variant-a') {
    // ...
}
```

### Typing Configuration Objects

```typescript
import type { PostHogConfig, Properties } from '@posthog/types'

// Type your configuration
const config: Partial<PostHogConfig> = {
    api_host: 'https://us.i.posthog.com',
    autocapture: true,
    capture_pageview: 'history_change',
}

// Type event properties
const eventProps: Properties = {
    button_id: 'signup',
    page: '/pricing',
}
```

## Version Synchronization

This package's version is synchronized with `posthog-js`. They are always released together with matching version numbers.

## License

MIT
npm package: @posthog/user-agent-app
Description: Automatically attach detailed browser details to the event when $useragent property exists
Author: Weyert de Boer
Latest version: 0.0.7

# User Agent Plugin

Enhances events to include the browser details when the event has a property `$useragent`
which allows off loading retrieving/parsing user agent strings at event ingest.

It's used to easily pass the `User-Agent` HTTP header from incoming requests and let
this plugin handle parsing it.

## Installation

1. Visit 'Project Plugins' under 'Settings'
1. Enable plugins if you haven't already done so
1. Click the 'Available' tab next to 'Installed'
1. Click 'Install' on this plugin
npm package: @posthog/user-agent-plugin
Description: Automatically attach detailed browser details to the event when $useragent property exists
Author: Weyert de Boer
Latest version: 0.0.6

# User Agent Plugin

Enhances events to include the browser details when the event has a property `$useragent`
which allows off loading retrieving/parsing user agent strings at event ingest.

It's used to easily pass the `User-Agent` HTTP header from incoming requests and let
this plugin handle parsing it.

## Installation

1. Visit 'Project Plugins' under 'Settings'
1. Enable plugins if you haven't already done so
1. Click the 'Available' tab next to 'Installed'
1. Click 'Install' on this plugin
npm package: @posthog/useragent-plugin
Description: Automatically attach detailed browser details to the event when $useragent property exists
Author: Weyert de Boer
Latest version: 0.0.3

# User Agent Plugin

Enhances events to include the browser details when the event has a property `$useragent`
which allows off loading retrieving/parsing user agent strings at event ingest.

It's used to easily pass the `User-Agent` HTTP header from incoming requests and let
this plugin handle parsing it.

## Installation

1. Visit 'Project Plugins' under 'Settings'
1. Enable plugins if you haven't already done so
1. Click the 'Available' tab next to 'Installed'
1. Click 'Install' on this plugin
npm package: @postilion/event-framework
Description: event-framework is a nodejs wrapper around MongoDB change streams to support per-collection events based on listeners which define a handler for the event and a set of filters to limit the events to exactly what the handler was built for
Latest version: 1.4.1
Deprecated: please use @postilion/events instead

# Event-Framework

event-framework is a nodejs wrapper around MongoDB change streams to support per-Collection events based on a set of listeners with filters

## Installation

Use the package manager [npm](https://docs.npmjs.com/) to install event-framework.

```bash
npm install @postilion/event-framework
```

## Usage

1. Import the EventFramework constructor
```javascript
import { EventFramework } from '@postilion/event-framework';
```

2. Define subscriptions with a model, operation, handler, filters and queue options
```javascript
const subscriptions: Array<Subscription> = [
    {
		// a named subscription is one used by a scheduled job that
		// runs at periodic intervals or is manually pushed to from
		// another queue
        name: 'SyncFilingsByTicker',
        model: models.Company,
        operation: Operation.named,
        handler: filingManager.syncSecFilingFeedByTicker,
        filters: [],
        options: {}
    },
    {
		// a collection-based subscription listens for a change to
		// the model with an operationType that matches this operation
		// and meets the filters/pipeline query
        name: 'GetFilingDocumentsForFiling',
        model: models.Filing,
        operation: Operation.create,
        handler: filingManager.getDocumentsForFiling,
        filters: [
            {
                $match: {
                    status: 'unseeded'
                }
            }
        ],
        options: {}
    }
];
```

3. Pass your connection string and subscriptions to the event framework constructor
```javascript
const eventFramework = new EventFramework('mongodb://user:pass@localhost/db', subscriptions);
```

4. Change a document in a collection you've created a subscription for
```javascript
db.collection.insert({ ... })
```

5. The handler attached to each matching subscription should receive an event
```javascript
{
  id: "cde20f20-28d9-11ea-9735-99b5e82d5a99",
  name: "GetFilingDocumentsForFiling",
  operation: "insert",
  data: {
    _id: "5e06528b29734aab3823235d",
    status: "unseeded",
    company: "5e065276aeee4f3833517b6b",
    publishedAt: "2019-02-01T01:22:40.000Z",
    fiscalYearEnd: "1231-01-01T00:00:00.000Z",
    source: "sec",
    type: "10-K",
    refId: "0001018724-19-000004",
    period: "2018-12-31T00:00:00.000Z",
    url: "https://www.sec.gov/Archives/edgar/data/1018724/000101872419000004/0001018724-19-000004-index.htm",
    name: "Form 10-K",
    filedAt: "2019-02-01T00:00:00.000Z",
    acceptedAt: "2019-02-01T04:22:40.000Z",
    __v: 0
  }
}
```

## Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

## License
[MIT](https://choosealicense.com/licenses/mit/)
npm package: @postillon/react-native-instagram-zoomable
Description: A component to implement the Instagram Zoom-Draggable-Effect for any component in React-Native
Author: Daniel Lang
Latest version: 1.0.1

# react-native-instagram-zoomable

### Description

A component to implement the Instagram Zoom-Draggable-Effect for any component in React-Native.


### Installation

```shell
npm i --save https://github.com/postillonmedia/react-native-instagram-zoomable.git
```


### Usage

#### InstagramProvider
props:
* children
* renderBackground: _(selected: , scaleValue, gesturePosition) => React.Component_

#### ElementContainer



### Thank you

Thank you to [Audy Tanudjaja](https://medium.com/@audytanudjaja) and his article on Medium: [React Native UI Challenge: Building Instagram Zoom-Draggable Photo](https://medium.com/@audytanudjaja/react-native-ui-challenge-building-instagram-zoom-draggable-photo-9127413b1d29)
npm package: @postillon/react-native-theme
Description: A theming library for react native
Author: Daniel Lang
Latest version: 2.0.1

# react-native-theme
An efficient and `StyleSheet.create` compatible theming library for React Native.


## Installation
> `$ npm install --save react-native-theming`  


## Usage
### Create themes

```javascript
import { createTheme } from 'react-native-theming'

const themes = [
  createTheme({
    backgroundColor: 'white',
    textColor: 'black',
    buttonColor: 'blue',
    buttonText: 'white',
    icon: require('./icons/default.png'),
    statusBar: 'dark-content',
  }, 'Light'),
  createTheme({
    backgroundColor: 'black',
    textColor: 'white',
    buttonColor: 'yellow',
    buttonText: 'black',
    icon: require('./icons/colorful.png'),
    statusBar: 'light-content',
  }, 'Dark'),
];
```