PHPackages                             pipetic/bundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. pipetic/bundle

ActiveLibrary

pipetic/bundle
==============

Pipetic Bundle

0220PHP

Since Mar 14Pushed 3mo ago1 watchersCompare

[ Source](https://github.com/pipetic/pipetic-bundle)[ Packagist](https://packagist.org/packages/pipetic/bundle)[ RSS](/packages/pipetic-bundle/feed)WikiDiscussions main Synced today

READMEChangelogDependenciesVersions (2)Used By (0)

pipetic-bundle
==============

[](#pipetic-bundle)

Base package for the [Pipetic](https://github.com/pipetic) organisation.

Provides the core ETL pipeline primitives and Droplet tracking model used by Pipetic adapter packages (e.g. [pipetic/salesforce](https://github.com/pipetic/salesforce)).

---

Features
--------

[](#features)

- **ETL Pipeline** – minimal but extensible Extract → Transform → Load orchestrator inspired by [wizacode/php-etl](https://github.com/wizacode/php-etl), [jwhulette/pipes](https://github.com/jwhulette/pipes), and [php-etl/pipeline](https://github.com/php-etl/pipeline).
- **Droplet tracking** – lightweight model for tracking the lifecycle of each sync item (Pending → Sent / Retrying / Failed).

---

Requirements
------------

[](#requirements)

- PHP &gt;= 8.2

---

Installation
------------

[](#installation)

```
composer require pipetic/bundle
```

---

ETL Pipeline
------------

[](#etl-pipeline)

### Basic usage

[](#basic-usage)

```
use Pipetic\Bundle\Pipeline\Pipeline;

(new Pipeline())
    ->extract(new MySourceExtractor())
    ->pipe(new MapFieldsTransformer($fieldMap))
    ->pipe(new ValidateRecordTransformer())
    ->load(new MyDestinationLoader())
    ->run();
```

### Custom Extractor

[](#custom-extractor)

```
use Pipetic\Bundle\Pipeline\AbstractExtractor;

class MySourceExtractor extends AbstractExtractor
{
    protected function doExtract(): iterable
    {
        foreach ($this->source->getRecords() as $record) {
            yield $record;
        }
    }
}
```

### Custom Transformer

[](#custom-transformer)

Return `null` from `doTransform()` to skip (filter out) a record.

```
use Pipetic\Bundle\Pipeline\AbstractTransformer;

class MapFieldsTransformer extends AbstractTransformer
{
    protected function doTransform(mixed $record): mixed
    {
        return [
            'name'  => $record['full_name'],
            'email' => $record['email_address'],
        ];
    }
}
```

### Custom Loader

[](#custom-loader)

```
use Pipetic\Bundle\Pipeline\AbstractLoader;

class MyDestinationLoader extends AbstractLoader
{
    protected function doLoad(mixed $record): void
    {
        $this->repository->save($record);
    }
}
```

### Processed / skipped counts

[](#processed--skipped-counts)

```
$pipeline->run();

echo $pipeline->getProcessedCount(); // records successfully loaded
echo $pipeline->getSkippedCount();   // records filtered out by a transformer
```

---

Inspiration
-----------

[](#inspiration)

-
-
-

###  Health Score

22

—

LowBetter than 21% of packages

Maintenance53

Moderate activity, may be stable

Popularity12

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity14

Early-stage or recently created project

 Bus Factor1

Top contributor holds 85% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/bee4d69e72d2a9819fbbb63e3d81c904273f04bbcce9e0105c0f40fba73ef73d?d=identicon)[gabrielsolomon](/maintainers/gabrielsolomon)

---

Top Contributors

[![gabrielsolomon](https://avatars.githubusercontent.com/u/17990591?v=4)](https://github.com/gabrielsolomon "gabrielsolomon (17 commits)")[![Copilot](https://avatars.githubusercontent.com/in/1143301?v=4)](https://github.com/Copilot "Copilot (3 commits)")

### Embed Badge

![Health badge](/badges/pipetic-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/pipetic-bundle/health.svg)](https://phpackages.com/packages/pipetic-bundle)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
