open-index/open-npm huggingface dataset:
npm package: @splitlab/core
Description: Shared evaluation engine for SplitLab SDKs — hashing, targeting, bucketing
Latest version: 0.8.0

# @splitlab/core

Shared evaluation engine for SplitLab SDKs. Pure functions, zero dependencies.

## What's in here

- **`localEvaluate()`** — evaluate all experiments and flags for a user in < 1ms
- **`evaluateRules()`** — targeting rule engine (supports `is`, `contains`, `gt`, `in`, segments, etc.)
- **Deterministic hashing** — consistent experiment bucketing and flag rollout
- **`parseUserAgent()`** — lightweight UA parser (browser, OS, device type)
- **Types** — shared TypeScript types used across all SDKs (`ExperimentConfig`, `FlagConfig`, `ServerConfig`, `EvalResult`, etc.)

## Installation

```bash
npm install @splitlab/core
```

## Usage

```typescript
import { localEvaluate } from '@splitlab/core';
import type { ServerConfig, EvalResult } from '@splitlab/core';

// Evaluate all experiments and flags locally
const config: ServerConfig = await fetchConfigFromServer();
const result: EvalResult = localEvaluate(config, 'user-123', { country: 'US' });

console.log(result.experiments); // { 'checkout-btn': 'variant_a' }
console.log(result.flags);       // { 'dark-mode': true }
```

## Targeting Rules

The rule engine supports nested conditions with `all`/`any` matching:

```typescript
import { evaluateRules } from '@splitlab/core';

const rules = {
  match: 'all',
  groups: [{
    conditions: [
      { attribute: 'country', operator: 'is', value: 'US' },
      { attribute: 'plan', operator: 'in', value: ['pro', 'enterprise'] },
    ],
  }],
};

evaluateRules(rules, { country: 'US', plan: 'pro' }, []);
// → true
```

**Operators:** `is`, `is_not`, `contains`, `not_contains`, `gt`, `lt`, `gte`, `lte`, `in`, `not_in`.

## Building

```bash
npm run build   # ESM + CJS + types → dist/
npm run dev     # Watch mode
```

All evaluation logic lives here so that browser, server, and React SDKs produce identical results.
npm package: @splitmedialabs/node-queue-processor
Description: Built on NodeJS. This application will process queue messages.
Author: Kelvin Joaquin
Latest version: 1.0.10

# Queue Processor
Built on NodeJS. This application will process queue messages.

## Features
- Use different queues
- Rate limit work process

## Supported Queues
- Google Pub/Sub
- AWS SNS
- RabbitMQ **soon**

# Sample Code
```js
const { Manager, Worker, RateLimit } = require('node-queue-processor');
const config = require('../config');

// AWS SQS
const Queue = new AwsSqsQueue(
    {
        access_key: config.accessKey,
        secret_access_key: config.secretAccessKey,
    },
    config.queueUrl
);

// OR Google Pub/Sub
const Queue = new GooglePubsubQueue(
    config.projectId,
    config.keyfile,
    config.subscription,
    config.topic
);

async function main() {
    
    const manager = new Manager(Queue);
    const worker = new Worker(async (data) => {
        console.log(data);
        return 'done';
    }, new RateLimit({
        process_per_period: 5, // 5 requests
        period: 60, // per 60 seconds
    }, {
        id: 'test',
        redisConnection: {
            host: '127.0.0.1',
            port: 6379
        }
    }));

    // attach handlers
    manager.attachWorker('sample-handler', worker);

    manager.start();
}

main();
```

# Sample Message
Message body:
```js
{
  "hello": "world"
}
```

Message attributes:
```js
{
  "type": "sample-handler"
}
```
npm package: @splitmedialabs/vault-tpl
Description: Simple CLI app that reads a file, finds secrets and replace them.
Latest version: 1.3.0

# vault-tpl - Templating vault secrets

vault-tpl is a CLI application that replaces some tokens with secrets from Vault. You can use it to store secrets inside your repository and have them decrypted for development, for deployment or for any other reasons.

## Example

Input (secrets.yaml)

```yaml
MYSQL_PASSWORD: (( vault "production/mysql:MYSQL_PASSWORD@1" ))
GCLOUD_CREDENTIALS: (( vault "production/google:*@1" ))
```

Command

```
vault-tpl secrets.yaml --write --output secrets-output.yaml
```

Output (secrets-output.yaml)

```yaml
MYSQL_PASSWORD: hunter2
GCLOUD_CREDENTIALS: |-
  {
    "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
    "auth_uri": "https://accounts.google.com/o/oauth2/auth",
    "client_email": "",
    "client_id": "",
    "client_x509_cert_url": "",
    "private_key": "",
    "private_key_id": "",
    "project_id": "",
    "token_uri": "https://accounts.google.com/o/oauth2/token",
    "type": "service_account"
  }
```

## Requirements

- A reachable [Vault](https://www.vaultproject.io) installation, stored as `VAULT_ADDR` in your environment
- A valid [Vault](https://www.vaultproject.io) token, stored as `VAULT_TOKEN`
- Node 10+

## Getting Started

```js
yarn global add vault-tpl
vault-tpl --help
```

## Why?

- Authentication is handled by Vault so you don't have to mess with GPG keys
- Supports Vault versioning, so secrets are immutable. If a secret has changed, it has to be modified in git also, to track accountability
- Supports outputting specific keys in a secret, or the whole object. Useful for GCloud Credentials and other JSON keys

## Thanks to

- [Hashicorp](https://www.hashicorp.com) for creating Vault
npm package: @splitroute/login-client
Description: SplitRoute client-side OAuth SDK
Latest version: 0.1.0

# @splitroute/login-client

SplitRoute's browser SDK for initiating the authentication flow. It opens the hosted SplitRoute popup, validates the response, and exchanges the authorization code against your backend.

## Install

```bash
npm install @splitroute/login-client
```

## Quick Start

```javascript
import { SplitRouteClient } from '@splitroute/login-client';

const client = new SplitRouteClient({
  clientId: 'sr_pub_your_client_id',
  exchangeUrl: '/api/auth/callback'
});

const session = await client.getSession();
console.log('Logged in user:', session.user);
```

The SDK automatically uses `${authBaseUrl}callback/` for redirect handling and ships with structured `SplitRouteAuthError` codes so you can provide great UX around failure states.

## Documentation

See the workspace README for the full architecture guide and examples.
npm package: @splitroute/login-server
Description: SplitRoute server-side OAuth helper
Latest version: 0.1.0

# @splitroute/login-server

SplitRoute's server helper for completing the OAuth authorization-code exchange. It validates incoming codes, fetches tokens from the SplitRoute auth proxy, and verifies JWT claims.

## Install

```bash
npm install @splitroute/login-server
```

## Quick Start

```javascript
import express from 'express';
import { SplitRouteLoginServer } from '@splitroute/login-server';

const app = express();
app.use(express.json());

const splitroute = new SplitRouteLoginServer({
  clientId: process.env.CLIENT_ID,
  clientSecret: process.env.CLIENT_SECRET,
  authBaseUrl: process.env.AUTH_BASE_URL || 'https://auth.splitroute.com/'
});

app.post('/api/auth/callback', async (req, res) => {
  const { authorizationCode } = req.body;
  const result = await splitroute.exchangeCode(authorizationCode);

  res.json({
    success: true,
    user: {
      id: result.claims.sub,
      state: result.claims.state
    }
  });
});
```

`exchangeCode` automatically targets `${authBaseUrl}callback/`, verifies signatures, and returns both the raw token response and decoded claims so you can mint your own session.

## Documentation

See the workspace README for end-to-end examples and production readiness guidance.
npm package: @splits/porto
Description: Next-gen Account for Ethereum
Latest version: 0.2.38

![Porto](https://github.com/ithacaxyz/porto/blob/main/.github/banner.png)

# Porto

Next-gen Account for Ethereum.

<p>
  <a href="https://www.npmjs.com/package/porto">
    <picture>
      <source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/npm/v/porto?colorA=21262d&colorB=21262d&style=flat">
      <img src="https://img.shields.io/npm/v/porto?colorA=f6f8fa&colorB=f6f8fa&style=flat" alt="Version">
    </picture>
  </a>
  <a href="https://github.com/ithacaxyz/porto/blob/main/LICENSE-MIT">
    <picture>
      <source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/badge/license-MIT-blue.svg?colorA=21262d&colorB=21262d&style=flat">
      <img src="https://img.shields.io/badge/license-MIT-blue.svg?colorA=f6f8fa&colorB=f6f8fa&style=flat" alt="MIT License">
    </picture>
  </a>
  <a href="https://github.com/ithacaxyz/porto/blob/main/LICENSE-APACHE">
    <picture>
      <source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/badge/license-APACHE-blue.svg?colorA=21262d&colorB=21262d&style=flat">
      <img src="https://img.shields.io/badge/license-APACHE-blue.svg?colorA=f6f8fa&colorB=f6f8fa&style=flat" alt="APACHE License">
    </picture>
  </a>
  <a href="https://deepwiki.com/ithacaxyz/porto">
    <img src="https://deepwiki.com/badge.svg" alt="Ask DeepWiki">
  </a>
</p>

## Documentation

For documentation and guides, visit [porto.sh](https://porto.sh).

## Development

### Apps

```bash
pnpm install # Install dependencies
pnpm dev # Run id, playground, and iframe dialog
```

### Tests

```bash
pnpm install # Install dependencies
pnpm test # Test
```

### Contracts

```bash
# Install Foundry
foundryup

forge build --config-path ./contracts/account/foundry.toml # Build
forge test --config-path ./contracts/account/foundry.toml # Test

forge build --config-path ./contracts/demo/foundry.toml # Build
forge test --config-path ./contracts/demo/foundry.toml # Test
```

## License

<sup>
Licensed under either of <a href="LICENSE-APACHE">Apache License, Version
2.0</a> or <a href="LICENSE-MIT">MIT license</a> at your option.
</sup>

<br>

<sub>
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in these packages by you, as defined in the Apache-2.0 license,
shall be dual licensed as above, without any additional terms or conditions.
</sub>

## Getting Help

Have questions or building something cool with Porto Accounts?  
Join the Telegram group to chat with the team and other devs: [@porto_devs](https://t.me/porto_devs)