diff --git a/.codecov.yaml b/.codecov.yaml index b439999d08..0d821d9d24 100644 --- a/.codecov.yaml +++ b/.codecov.yaml @@ -43,6 +43,18 @@ component_management: name: lib-snappy paths: - src/lib/snappy/** + - component_id: lib-dremel + name: lib-dremel + paths: + - src/lib/dremel/** + - component_id: lib-postgresql + name: lib-postgresql + paths: + - src/lib/postgresql/** + - component_id: lib-telemetry + name: lib-telemetry + paths: + - src/lib/telemetry/** - component_id: bridge-filesystem-async-aws name: bridge-filesystem-async-aws paths: @@ -63,6 +75,26 @@ component_management: name: symfony-http-foundation paths: - src/bridge/symfony/http-foundation/** + - component_id: bridge-psr18-telemetry + name: bridge-psr18-telemetry + paths: + - src/bridge/psr18/telemetry/** + - component_id: bridge-psr7-telemetry + name: bridge-psr7-telemetry + paths: + - src/bridge/psr7/telemetry/** + - component_id: bridge-telemetry-otlp + name: bridge-telemetry-otlp + paths: + - src/bridge/telemetry/otlp/** + - component_id: bridge-symfony-http-foundation-telemetry + name: bridge-symfony-http-foundation-telemetry + paths: + - src/bridge/symfony/http-foundation-telemetry/** + - component_id: bridge-symfony-telemetry-bundle + name: bridge-symfony-telemetry-bundle + paths: + - src/bridge/symfony/telemetry-bundle/** - component_id: adapter-chartjs name: adapter-chartjs paths: @@ -110,4 +142,16 @@ component_management: - component_id: adapter-xml name: adapter-xml paths: - - src/adapter/etl-adapter-xml/** \ No newline at end of file + - src/adapter/etl-adapter-xml/** + - component_id: adapter-avro + name: adapter-avro + paths: + - src/adapter/etl-adapter-avro/** + - component_id: adapter-excel + name: adapter-excel + paths: + - src/adapter/etl-adapter-excel/** + - component_id: adapter-postgresql + name: adapter-postgresql + paths: + - src/adapter/etl-adapter-postgresql/** \ No newline at end of file diff --git a/.github/workflows/job-tests.yml b/.github/workflows/job-tests.yml index cab88cfdd6..896844f20e 100644 --- a/.github/workflows/job-tests.yml +++ b/.github/workflows/job-tests.yml @@ -76,7 +76,7 @@ jobs: docker run -d --name otel-collector \ -p 4317:4317 -p 4318:4318 -p 8888:8888 -p 13133:13133 \ -v ${{ github.workspace }}/docker/otel-collector-test-config.yaml:/etc/otelcol-contrib/config.yaml:ro \ - otel/opentelemetry-collector-contrib:0.115.1 + otel/opentelemetry-collector-contrib:0.144.0 # Wait for container to be ready for i in {1..30}; do if curl -sf http://localhost:13133/ > /dev/null 2>&1; then diff --git a/.php-cs-fixer.php b/.php-cs-fixer.php index 36bd1f86e6..efd7e4d8a1 100644 --- a/.php-cs-fixer.php +++ b/.php-cs-fixer.php @@ -31,6 +31,8 @@ __DIR__ . '/web/landing/bin', __DIR__ . '/examples', __DIR__ . '/tools/rector/src', + __DIR__ . '/tools/phpunit/extension/telemetry/src', + __DIR__ . '/tools/phpunit/extension/telemetry/tests', ]) ->exclude([ 'Flow/Parquet/ThriftModel', diff --git a/compose.yml.dist b/compose.yml.dist index adc63f2046..c31dcd9edb 100644 --- a/compose.yml.dist +++ b/compose.yml.dist @@ -1,3 +1,7 @@ +networks: + flow-php: + driver: bridge + services: postgres: image: postgres:18-alpine @@ -8,6 +12,8 @@ services: - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres - POSTGRES_DB=postgres + networks: + - flow-php mysql: image: mysql:8.0.31 container_name: flow-php-mysql @@ -18,6 +24,8 @@ services: MYSQL_PASSWORD: mysql MYSQL_DATABASE: mysql MYSQL_ROOT_PASSWORD: root + networks: + - flow-php elasticsearch: image: elasticsearch:7.17.2 container_name: flow-php-elasticsearch @@ -28,6 +36,8 @@ services: - discovery.type=single-node - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" + networks: + - flow-php meilisearch: image: getmeili/meilisearch:latest container_name: flow-php-meilisearch @@ -36,6 +46,8 @@ services: environment: - MEILI_MASTER_KEY=masterKey - MEILI_NO_ANALYTICS=true + networks: + - flow-php azurite: image: mcr.microsoft.com/azure-storage/azurite container_name: flow-php-azurite @@ -48,11 +60,15 @@ services: - 10000:10000 volumes: - ./var/azurite:/workspace + networks: + - flow-php redis: image: redis:latest container_name: flow-php-redis ports: - "6379:6379" + networks: + - flow-php localstack: image: localstack/localstack:latest container_name: flow-php-localstack @@ -64,8 +80,21 @@ services: - DATA_DIR=/var/localstack/data volumes: - "./var/localstack:/var/localstack" + networks: + - flow-php + aspire: + image: mcr.microsoft.com/dotnet/aspire-dashboard:latest + container_name: flow-php-aspire + ports: + - "18888:18888" + - "18889:18889" + environment: + - DOTNET_DASHBOARD_UNSECURED_ALLOW_ANONYMOUS=true + - ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL=http://0.0.0.0:18889 + networks: + - flow-php otel-collector: - image: otel/opentelemetry-collector-contrib:0.115.1 + image: otel/opentelemetry-collector-contrib:0.144.0 container_name: flow-php-otel-collector command: ["--config=/etc/otel-collector-config.yaml"] ports: @@ -73,7 +102,14 @@ services: - "4318:4318" - "8888:8888" volumes: - - "./docker/otel-collector-test-config.yaml:/etc/otel-collector-config.yaml:ro" + - "./docker/otel-collector-config.yaml:/etc/otel-collector-config.yaml:ro" - "./var/otel:/var/otel" + depends_on: + - aspire + - postgres + - mysql + - redis + networks: + - flow-php diff --git a/composer.json b/composer.json index e4ae11160b..254f10080e 100644 --- a/composer.json +++ b/composer.json @@ -113,7 +113,8 @@ "flow-php/symfony-telemetry-bundle": "self.version", "flow-php/telemetry": "self.version", "flow-php/telemetry-otlp-bridge": "self.version", - "flow-php/types": "self.version" + "flow-php/types": "self.version", + "flow-php/phpunit-telemetry": "self.version" }, "minimum-stability": "dev", "prefer-stable": true, @@ -166,6 +167,9 @@ ], "Flow\\ETL\\Adapter\\Doctrine\\": [ "src/adapter/etl-adapter-doctrine/src/Flow/ETL/Adapter/Doctrine" + ], + "Flow\\Tool\\PHPUnit\\Telemetry\\": [ + "tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry" ] }, "files": [ @@ -258,6 +262,9 @@ ], "Flow\\ETL\\Adapter\\Doctrine\\Tests\\": [ "src/adapter/etl-adapter-doctrine/tests/Flow/ETL/Adapter/Doctrine/Tests" + ], + "Flow\\Tool\\PHPUnit\\Telemetry\\Tests\\": [ + "tools/phpunit/extension/telemetry/tests/Flow/Tool/PHPUnit/Telemetry/Tests" ] } }, @@ -464,6 +471,9 @@ "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-postgresql-unit --log-junit ./var/phpunit/logs/adapter-postgresql-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-postgresql-unit.coverage.xml", "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-postgresql-integration --log-junit ./var/phpunit/logs/adapter-postgresql-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-postgresql-integration.coverage.xml" ], + "test:tool:phpunit-telemetry": [ + "tools/phpunit/vendor/bin/phpunit --testsuite=tool-phpunit-telemetry-unit --log-junit ./var/phpunit/logs/tool-phpunit-telemetry-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/tool-phpunit-telemetry-unit.coverage.xml" + ], "test:docs": [ "docker run -t --rm -v $PWD:/app norberttech/md-link-linter --exclude=vendor --exclude=.scratchpad --exclude=examples --exclude=documentation ." ], diff --git a/docker/.gitignore b/docker/.gitignore index 4e0fd87f12..94510d51cc 100644 --- a/docker/.gitignore +++ b/docker/.gitignore @@ -1,2 +1,3 @@ -otel-collector-dev-config.yaml +otel-collector-*-config.yaml +!otel-collector-test-config.yaml signoz/ \ No newline at end of file diff --git a/docker/otel-collector-config.yaml b/docker/otel-collector-config.yaml new file mode 100644 index 0000000000..10f1436df4 --- /dev/null +++ b/docker/otel-collector-config.yaml @@ -0,0 +1,140 @@ +receivers: + otlp: + protocols: + grpc: + endpoint: 0.0.0.0:4317 + http: + endpoint: 0.0.0.0:4318 + + # PostgreSQL metrics receiver + # Docs: https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/postgresqlreceiver + postgresql: + endpoint: postgres:5432 + transport: tcp + username: postgres + password: postgres + databases: + - postgres + collection_interval: 10s + tls: + insecure: true + + # MySQL metrics receiver + # Docs: https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/mysqlreceiver + mysql: + endpoint: mysql:3306 + username: root + password: root + database: mysql + collection_interval: 10s + tls: + insecure: true + + # Redis metrics receiver + # Docs: https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/redisreceiver + redis: + endpoint: redis:6379 + collection_interval: 10s + tls: + insecure: true + +exporters: + debug: + verbosity: basic + otlp_grpc/aspire: + endpoint: aspire:18889 + tls: + insecure: true + +processors: + # Add service.name to PostgreSQL metrics + resource/postgresql: + attributes: + - key: service.name + value: postgresql + action: upsert + - key: service.namespace + value: flow-php + action: upsert + + # Add service.name to MySQL metrics + resource/mysql: + attributes: + - key: service.name + value: mysql + action: upsert + - key: service.namespace + value: flow-php + action: upsert + + # Add service.name to Redis metrics + resource/redis: + attributes: + - key: service.name + value: redis + action: upsert + - key: service.namespace + value: flow-php + action: upsert + +extensions: + health_check: + endpoint: 0.0.0.0:13133 + +service: + extensions: [health_check] + telemetry: + traces: + sampler: + trace_id_ratio_based: + ratio: 0.1 + processors: + - batch: + exporter: + otlp: + protocol: http/protobuf + endpoint: http://localhost:4318 + metrics: + level: detailed + readers: + - pull: + exporter: + prometheus: + host: '0.0.0.0' + port: 8888 + - periodic: + exporter: + otlp: + protocol: grpc + endpoint: http://aspire:18889 + insecure: true + logs: + level: warn + processors: + - batch: + exporter: + otlp: + protocol: http/protobuf + endpoint: http://localhost:4318 + pipelines: + traces: + receivers: [otlp] + exporters: [debug, otlp_grpc/aspire] + metrics: + receivers: [otlp] + exporters: [debug, otlp_grpc/aspire] + metrics/postgresql: + receivers: [postgresql] + processors: [resource/postgresql] + exporters: [debug, otlp_grpc/aspire] + metrics/mysql: + receivers: [mysql] + processors: [resource/mysql] + exporters: [debug, otlp_grpc/aspire] + metrics/redis: + receivers: [redis] + processors: [resource/redis] + exporters: [debug, otlp_grpc/aspire] + logs: + receivers: [otlp] + exporters: [debug, otlp_grpc/aspire] diff --git a/docker/otel-collector-test-config.yaml b/docker/otel-collector-test-config.yaml index 58200e1be3..9d0fbf0767 100644 --- a/docker/otel-collector-test-config.yaml +++ b/docker/otel-collector-test-config.yaml @@ -15,15 +15,16 @@ extensions: endpoint: 0.0.0.0:13133 service: - extensions: [health_check] telemetry: metrics: + level: detailed readers: - pull: exporter: prometheus: host: '0.0.0.0' port: 8888 + extensions: [health_check] pipelines: traces: receivers: [otlp] diff --git a/documentation/components/libs/postgresql.md b/documentation/components/libs/postgresql.md index 9be61eecfb..6a660dc775 100644 --- a/documentation/components/libs/postgresql.md +++ b/documentation/components/libs/postgresql.md @@ -350,6 +350,7 @@ See [Type System](/documentation/components/libs/postgresql/client-types.md) for - [Type System](/documentation/components/libs/postgresql/client-types.md) - Value converters, TypedValue, custom types - [Query Plan Analysis](/documentation/components/libs/postgresql/client-explain.md) - EXPLAIN ANALYZE, plan insights, performance debugging +- [Telemetry](/documentation/components/libs/postgresql/client-telemetry.md) - OpenTelemetry tracing and metrics --- diff --git a/documentation/components/libs/postgresql/client-telemetry.md b/documentation/components/libs/postgresql/client-telemetry.md new file mode 100644 index 0000000000..541458173c --- /dev/null +++ b/documentation/components/libs/postgresql/client-telemetry.md @@ -0,0 +1,331 @@ +# Telemetry + +- [⬅️ Back](/documentation/components/libs/postgresql.md) + +[TOC] + +Telemetry support for the PostgreSQL client provides observability through OpenTelemetry-compatible traces, metrics, +and logs. The `TraceableClient` decorator wraps your client and automatically instruments all operations. + +## Quick Start + +```php + 'my-app'])), + new SystemClock(), // PSR-20 ClockInterface implementation + ), +); + +// All operations are now traced +$users = $client->fetchAll('SELECT * FROM users WHERE active = $1', [true]); +``` + +## Configuration Options + +Configure telemetry behavior with `postgresql_telemetry_options()`: + +```php +traceQueries(true) + ->traceTransactions(true) + ->collectMetrics(true) + ->logQueries(true) + ->maxQueryLength(500) + ->includeParameters(true) + ->maxParameters(5) + ->maxParameterLength(50); +``` + +## Traced Operations + +### Query Operations + +All query methods are traced with individual spans: + +- `fetch()`, `fetchOne()`, `fetchAll()` - SELECT queries +- `fetchScalar()`, `fetchScalarInt()`, `fetchScalarString()`, etc. +- `fetchInto()`, `fetchOneInto()`, `fetchAllInto()` - Object mapping queries +- `execute()` - INSERT, UPDATE, DELETE operations +- `explain()` - Query plan analysis + +Span names follow the pattern: `{OPERATION} {table}` (e.g., `SELECT users`) + +### Transaction Lifecycle + +Transaction operations create hierarchical spans: + +- `beginTransaction()` - Opens a span for the transaction +- `commit()` - Completes the transaction span with OK status +- `rollBack()` - Completes the transaction span (and all nested spans) +- Nested transactions create `SAVEPOINT` spans + +```php +transaction(function ($client) { + // Span: BEGIN TRANSACTION + $client->execute('INSERT INTO users (name) VALUES ($1)', ['John']); + // Span: INSERT users + $client->execute('INSERT INTO logs (user_id, action) VALUES ($1, $2)', [1, 'created']); + // Span: INSERT logs + // Span completion: COMMIT TRANSACTION (on success) +}); +``` + +### Cursor Iteration + +Cursors create spans that track the entire iteration lifecycle: + +```php +cursor('SELECT * FROM large_table'); +// Span: SELECT large_table (cursor) + +foreach ($cursor->iterate() as $row) { + processRow($row); +} +// Span completed with row count +``` + +## Collected Attributes + +Spans include attributes following [OpenTelemetry database semantic conventions](https://opentelemetry.io/docs/specs/semconv/database/): + +| Attribute | Description | Example | +|------------------------------|--------------------------------------------------------------|---------------------------------| +| `db.system.name` | Database system identifier | `postgresql` | +| `db.namespace` | Database name | `mydb` | +| `db.operation.name` | SQL operation type | `SELECT`, `INSERT`, `UPDATE` | +| `db.collection.name` | Target table name | `users` | +| `db.query.text` | SQL query text (may be truncated) | `SELECT * FROM users WHERE...` | +| `db.query.parameter.{n}` | Parameter values (when enabled) | `123`, `true` | +| `db.response.returned_rows` | Number of rows returned | `42` | +| `db.response.status_code` | PostgreSQL SQLSTATE code (on error) | `23505` | +| `server.address` | Database host | `localhost` | +| `server.port` | Database port (only if non-default) | `5433` | +| `error.type` | Exception class name (on error) | `QueryException` | + +### Transaction-Specific Attributes + +| Attribute | Description | Example | +|---------------------------------|-------------------------------|----------------| +| `db.transaction.nesting_level` | Current nesting depth | `1`, `2` | +| `db.transaction.savepoint` | Savepoint name (nested txns) | `savepoint_1` | + +## Security Considerations + +**Query parameters are disabled by default** for security reasons. Parameter values may contain sensitive data +(passwords, tokens, PII) that should not appear in traces. + +Enable parameters only in development or when you're certain the data is safe: + +```php + 'order-service'])), + new SystemClock(), + ), +); + +// Transaction with multiple operations +$orderId = $client->transaction(function ($client) use ($userId, $items) { + // Insert order + $client->execute( + 'INSERT INTO orders (user_id, status) VALUES ($1, $2)', + [$userId, 'pending'], + ); + + $orderId = $client->fetchScalarInt('SELECT lastval()'); + + // Insert order items + foreach ($items as $item) { + $client->execute( + 'INSERT INTO order_items (order_id, product_id, quantity) VALUES ($1, $2, $3)', + [$orderId, $item['product_id'], $item['quantity']], + ); + } + + // Update inventory + $client->execute( + 'UPDATE products SET stock = stock - $1 WHERE id = $2', + [$item['quantity'], $item['product_id']], + ); + + return $orderId; +}); +``` + +This produces traces like: + +``` +BEGIN TRANSACTION +├── INSERT orders +├── SELECT +├── INSERT order_items +├── INSERT order_items +├── UPDATE products +└── COMMIT TRANSACTION +``` + +### Error Handling + +Errors are automatically captured with span status and exception details: + +```php +execute('INSERT INTO users (email) VALUES ($1)', ['duplicate@example.com']); +} catch (QueryException $e) { + // Span includes: + // - status: ERROR + // - error.type: Flow\PostgreSql\Client\Exception\QueryException + // - db.response.status_code: 23505 (unique_violation) + // - exception event with stack trace +} +``` + +### Cursor with Row Counting + +```php +cursor('SELECT * FROM audit_log WHERE created_at > $1', [$since]); + +$processed = 0; +foreach ($cursor->iterate() as $row) { + processAuditEntry($row); + $processed++; +} + +// Span completed with db.response.returned_rows = $processed +``` + +### Metrics-Only Mode + +Disable tracing but keep metrics for performance monitoring: + +```php +error('Payment failed', [ $logger->debug('Cache hit', ['key' => 'user:123', 'ttl' => 3600]); ``` +## Attribute and Cardinality Limits + +Flow Telemetry enforces limits on signals following the OpenTelemetry specification. +This prevents unbounded memory growth and ensures telemetry data doesn't exceed collector size limits. + +### Default Limits + +| Signal Type | Attribute Count | Value Length | Events | Links | Cardinality | +|-------------|-----------------|--------------|--------|-------|-------------| +| Span | 128 | unlimited | 128 | 128 | N/A | +| Span Event | 128 | unlimited | - | - | N/A | +| Span Link | 128 | unlimited | - | - | N/A | +| LogRecord | 128 | unlimited | - | - | N/A | +| Metric | exempt | exempt | - | - | 2000 | + +**Note:** Resource attributes are exempt from limits per the OTel specification. Metrics are exempt from attribute count +and value length limits, but have cardinality limits (unique attribute combinations per instrument). + +### Configuring Limits + +```php + - + @@ -29,6 +28,9 @@ + + + @@ -225,6 +227,9 @@ src/adapter/etl-adapter-xml/tests/Flow/ETL/Adapter/XML/Tests/Integration + + tools/phpunit/extension/telemetry/tests/Flow/Tool/PHPUnit/Telemetry/Tests/Unit + @@ -270,4 +275,14 @@ src/bridge/telemetry/otlp/src/Flow/Bridge/Telemetry/OTLP/DSL/functions.php + + + + + + + + + + diff --git a/rector.src.php b/rector.src.php index cb26857e2a..64476e6128 100644 --- a/rector.src.php +++ b/rector.src.php @@ -18,6 +18,7 @@ __DIR__ . '/src/adapter/*/src', __DIR__ . '/src/bridge/*/*/src', __DIR__ . '/src/tools/*/src', + __DIR__ . '/tools/phpunit/extension/telemetry/src', __DIR__ . '/web/landing/src', ]) ->withSkip([ diff --git a/rector.tests.php b/rector.tests.php index 470b16b889..b6a281c050 100644 --- a/rector.tests.php +++ b/rector.tests.php @@ -93,6 +93,7 @@ __DIR__ . '/src/adapter/*/*/tests', __DIR__ . '/src/bridge/*/*/tests', __DIR__ . '/src/tools/*/*/tests', + __DIR__ . '/tools/phpunit/extension/telemetry/tests', __DIR__ . '/web/landing/tests', ]) ->withSets([ diff --git a/src/bridge/psr18/telemetry/src/Flow/Bridge/Psr18/Telemetry/PSR18TraceableClient.php b/src/bridge/psr18/telemetry/src/Flow/Bridge/Psr18/Telemetry/PSR18TraceableClient.php index f74ccbef67..fd9958a71e 100644 --- a/src/bridge/psr18/telemetry/src/Flow/Bridge/Psr18/Telemetry/PSR18TraceableClient.php +++ b/src/bridge/psr18/telemetry/src/Flow/Bridge/Psr18/Telemetry/PSR18TraceableClient.php @@ -29,24 +29,31 @@ public function sendRequest(RequestInterface $request) : ResponseInterface $method = $request->getMethod(); $scheme = $uri->getScheme() ?: 'http'; $host = $uri->getHost() ?: 'unknown'; + $port = $uri->getPort(); $url = (string) $uri; + $attributes = [ + 'http.request.method' => $method, + 'url.full' => $url, + 'url.scheme' => $scheme, + 'server.address' => $host, + ]; + + if ($port !== null && $port !== 80 && $port !== 443) { + $attributes['server.port'] = $port; + } + $span = $this->tracer->span( "{$method} {$host}", SpanKind::CLIENT, - [ - 'http.method' => $method, - 'http.url' => $url, - 'http.scheme' => $scheme, - 'http.host' => $host, - ] + $attributes ); try { $response = $this->client->sendRequest($request); $statusCode = $response->getStatusCode(); - $span->setAttribute('http.status_code', $statusCode); + $span->setAttribute('http.response.status_code', $statusCode); if ($statusCode >= 400) { $span->setStatus(SpanStatus::error("HTTP {$statusCode}")); diff --git a/src/bridge/psr18/telemetry/tests/Flow/Bridge/Psr18/Telemetry/Tests/Integration/PSR18TraceableClientIntegrationTest.php b/src/bridge/psr18/telemetry/tests/Flow/Bridge/Psr18/Telemetry/Tests/Integration/PSR18TraceableClientIntegrationTest.php index 3459410b09..6d6848b2cc 100644 --- a/src/bridge/psr18/telemetry/tests/Flow/Bridge/Psr18/Telemetry/Tests/Integration/PSR18TraceableClientIntegrationTest.php +++ b/src/bridge/psr18/telemetry/tests/Flow/Bridge/Psr18/Telemetry/Tests/Integration/PSR18TraceableClientIntegrationTest.php @@ -41,11 +41,11 @@ public function test_real_http_request_creates_span() : void self::assertSame(SpanKind::CLIENT, $span->kind()); $attributes = $span->attributes(); - self::assertSame('GET', $attributes['http.method']); - self::assertSame('http://flow-php.com', $attributes['http.url']); - self::assertSame('http', $attributes['http.scheme']); - self::assertSame('flow-php.com', $attributes['http.host']); - self::assertArrayHasKey('http.status_code', $attributes); + self::assertSame('GET', $attributes['http.request.method']); + self::assertSame('http://flow-php.com', $attributes['url.full']); + self::assertSame('http', $attributes['url.scheme']); + self::assertSame('flow-php.com', $attributes['server.address']); + self::assertArrayHasKey('http.response.status_code', $attributes); self::assertNotNull($span->status()); self::assertTrue($span->status()->isOk()); diff --git a/src/bridge/psr18/telemetry/tests/Flow/Bridge/Psr18/Telemetry/Tests/Unit/PSR18TraceableClientTest.php b/src/bridge/psr18/telemetry/tests/Flow/Bridge/Psr18/Telemetry/Tests/Unit/PSR18TraceableClientTest.php index 4198aaa625..62108a6f8c 100644 --- a/src/bridge/psr18/telemetry/tests/Flow/Bridge/Psr18/Telemetry/Tests/Unit/PSR18TraceableClientTest.php +++ b/src/bridge/psr18/telemetry/tests/Flow/Bridge/Psr18/Telemetry/Tests/Unit/PSR18TraceableClientTest.php @@ -76,7 +76,7 @@ public function test_request_with_4xx_status_creates_error_span() : void self::assertNotNull($span->status()); self::assertTrue($span->status()->isError()); self::assertSame('HTTP 404', $span->status()->description); - self::assertSame(404, $span->attributes()['http.status_code']); + self::assertSame(404, $span->attributes()['http.response.status_code']); } public function test_request_with_5xx_status_creates_error_span() : void @@ -99,7 +99,7 @@ public function test_request_with_5xx_status_creates_error_span() : void self::assertNotNull($span->status()); self::assertTrue($span->status()->isError()); self::assertSame('HTTP 500', $span->status()->description); - self::assertSame(500, $span->attributes()['http.status_code']); + self::assertSame(500, $span->attributes()['http.response.status_code']); } public function test_span_has_correct_attributes() : void @@ -120,11 +120,12 @@ public function test_span_has_correct_attributes() : void $span = $spans[0]; $attributes = $span->attributes(); - self::assertSame('POST', $attributes['http.method']); - self::assertSame('https://api.example.com:8080/users?page=1', $attributes['http.url']); - self::assertSame('https', $attributes['http.scheme']); - self::assertSame('api.example.com', $attributes['http.host']); - self::assertSame(200, $attributes['http.status_code']); + self::assertSame('POST', $attributes['http.request.method']); + self::assertSame('https://api.example.com:8080/users?page=1', $attributes['url.full']); + self::assertSame('https', $attributes['url.scheme']); + self::assertSame('api.example.com', $attributes['server.address']); + self::assertSame(8080, $attributes['server.port']); + self::assertSame(200, $attributes['http.response.status_code']); } public function test_span_kind_is_client() : void diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Cache/TagAwareTraceableCacheAdapter.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Cache/TagAwareTraceableCacheAdapter.php index 9458c7bcb3..7f7671510d 100644 --- a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Cache/TagAwareTraceableCacheAdapter.php +++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Cache/TagAwareTraceableCacheAdapter.php @@ -4,6 +4,7 @@ namespace Flow\Bridge\Symfony\TelemetryBundle\Instrumentation\Cache; +use Flow\Telemetry\Meter\Instrument\Counter; use Flow\Telemetry\{PackageVersion, Telemetry}; use Flow\Telemetry\Tracer\{SpanKind, SpanStatus, Tracer}; use Psr\Cache\CacheItemInterface; @@ -13,6 +14,10 @@ final readonly class TagAwareTraceableCacheAdapter implements PruneableInterface, ResettableInterface, TagAwareAdapterInterface, TagAwareCacheInterface { + private Counter $hitCounter; + + private Counter $missCounter; + private Tracer $tracer; public function __construct( @@ -21,6 +26,9 @@ public function __construct( private string $poolName, ) { $this->tracer = $this->telemetry->tracer('flow.symfony.cache', PackageVersion::get('symfony/cache')); + $meter = $this->telemetry->meter('flow.symfony.cache', PackageVersion::get('symfony/cache')); + $this->hitCounter = $meter->createCounter('cache.hits', 'operations', 'Number of cache hits'); + $this->missCounter = $meter->createCounter('cache.misses', 'operations', 'Number of cache misses'); } public function clear(string $prefix = '') : bool @@ -34,7 +42,7 @@ public function clear(string $prefix = '') : bool $attributes['cache.prefix'] = $prefix; } - $span = $this->tracer->span('cache clear', SpanKind::CLIENT, $attributes); + $span = $this->tracer->span("Cache Clear {$this->poolName}", SpanKind::CLIENT, $attributes); try { $result = $this->adapter->clear($prefix); @@ -54,7 +62,7 @@ public function clear(string $prefix = '') : bool public function commit() : bool { $span = $this->tracer->span( - 'cache commit', + "Cache Commit {$this->poolName}", SpanKind::CLIENT, [ 'cache.operation' => 'commit', @@ -84,7 +92,7 @@ public function delete(string $key) : bool } $span = $this->tracer->span( - 'cache delete', + "Cache Delete {$key} {$this->poolName}", SpanKind::CLIENT, [ 'cache.operation' => 'delete', @@ -111,7 +119,7 @@ public function delete(string $key) : bool public function deleteItem(mixed $key) : bool { $span = $this->tracer->span( - 'cache deleteItem', + "Cache DeleteItem {$key} {$this->poolName}", SpanKind::CLIENT, [ 'cache.operation' => 'deleteItem', @@ -141,7 +149,7 @@ public function deleteItem(mixed $key) : bool public function deleteItems(array $keys) : bool { $span = $this->tracer->span( - 'cache deleteItems', + "Cache DeleteItems {$this->poolName}", SpanKind::CLIENT, [ 'cache.operation' => 'deleteItems', @@ -174,16 +182,6 @@ public function get(string $key, callable $callback, ?float $beta = null, ?array throw new \BadMethodCallException(\sprintf('The adapter "%s" does not implement "%s".', $this->adapter::class, TagAwareCacheInterface::class)); } - $span = $this->tracer->span( - 'cache get', - SpanKind::CLIENT, - [ - 'cache.operation' => 'get', - 'cache.pool' => $this->poolName, - 'cache.key' => $key, - ] - ); - $hit = true; $wrappedCallback = static function (ItemInterface $item, bool &$save) use ($callback, &$hit) : mixed { $hit = false; @@ -191,123 +189,70 @@ public function get(string $key, callable $callback, ?float $beta = null, ?array return $callback($item, $save); }; - try { - $result = $this->adapter->get($key, $wrappedCallback, $beta, $metadata); - $span->setAttribute('cache.hit', $hit); - $span->setStatus(SpanStatus::ok()); - - return $result; - } catch (\Throwable $exception) { - $span->recordException($exception, new \DateTimeImmutable()); - $span->setStatus(SpanStatus::error($exception->getMessage())); + $result = $this->adapter->get($key, $wrappedCallback, $beta, $metadata); - throw $exception; - } finally { - $this->tracer->complete($span); + if ($hit) { + $this->hitCounter->add(1, ['cache.pool' => $this->poolName]); + } else { + $this->missCounter->add(1, ['cache.pool' => $this->poolName]); } + + return $result; } public function getItem(mixed $key) : CacheItem { - $span = $this->tracer->span( - 'cache getItem', - SpanKind::CLIENT, - [ - 'cache.operation' => 'getItem', - 'cache.pool' => $this->poolName, - 'cache.key' => $key, - ] - ); + $item = $this->adapter->getItem($key); - try { - $item = $this->adapter->getItem($key); - $span->setAttribute('cache.hit', $item->isHit()); - $span->setStatus(SpanStatus::ok()); - - return $item; - } catch (\Throwable $exception) { - $span->recordException($exception, new \DateTimeImmutable()); - $span->setStatus(SpanStatus::error($exception->getMessage())); - - throw $exception; - } finally { - $this->tracer->complete($span); + if ($item->isHit()) { + $this->hitCounter->add(1, ['cache.pool' => $this->poolName]); + } else { + $this->missCounter->add(1, ['cache.pool' => $this->poolName]); } + + return $item; } /** * @param array $keys * - * @return iterable + * @return \Generator */ - public function getItems(array $keys = []) : iterable + public function getItems(array $keys = []) : \Generator { - $span = $this->tracer->span( - 'cache getItems', - SpanKind::CLIENT, - [ - 'cache.operation' => 'getItems', - 'cache.pool' => $this->poolName, - 'cache.key_count' => \count($keys), - ] - ); - - try { - $items = $this->adapter->getItems($keys); - $itemsArray = \iterator_to_array($items); - - $hits = 0; - $misses = 0; - - foreach ($itemsArray as $item) { - if ($item->isHit()) { - $hits++; - } else { - $misses++; - } + $hits = 0; + $misses = 0; + + foreach ($this->adapter->getItems($keys) as $key => $item) { + if ($item->isHit()) { + $hits++; + } else { + $misses++; } - $span->setAttribute('cache.hits', $hits); - $span->setAttribute('cache.misses', $misses); - $span->setStatus(SpanStatus::ok()); + yield $key => $item; + } - return $itemsArray; - } catch (\Throwable $exception) { - $span->recordException($exception, new \DateTimeImmutable()); - $span->setStatus(SpanStatus::error($exception->getMessage())); + if ($hits > 0) { + $this->hitCounter->add($hits, ['cache.pool' => $this->poolName]); + } - throw $exception; - } finally { - $this->tracer->complete($span); + if ($misses > 0) { + $this->missCounter->add($misses, ['cache.pool' => $this->poolName]); } } public function hasItem(mixed $key) : bool { - $span = $this->tracer->span( - 'cache hasItem', - SpanKind::CLIENT, - [ - 'cache.operation' => 'hasItem', - 'cache.pool' => $this->poolName, - 'cache.key' => $key, - ] - ); + $exists = $this->adapter->hasItem($key); - try { - $exists = $this->adapter->hasItem($key); - $span->setAttribute('cache.exists', $exists); - $span->setStatus(SpanStatus::ok()); - - return $exists; - } catch (\Throwable $exception) { - $span->recordException($exception, new \DateTimeImmutable()); - $span->setStatus(SpanStatus::error($exception->getMessage())); - - throw $exception; - } finally { - $this->tracer->complete($span); + if ($exists) { + $this->hitCounter->add(1, ['cache.pool' => $this->poolName]); + } else { + $this->missCounter->add(1, ['cache.pool' => $this->poolName]); } + + return $exists; } /** @@ -316,7 +261,7 @@ public function hasItem(mixed $key) : bool public function invalidateTags(array $tags) : bool { $span = $this->tracer->span( - 'cache invalidateTags', + "Cache InvalidateTags {$this->poolName}", SpanKind::CLIENT, [ 'cache.operation' => 'invalidateTags', @@ -348,7 +293,7 @@ public function prune() : bool } $span = $this->tracer->span( - 'cache prune', + "Cache Prune {$this->poolName}", SpanKind::CLIENT, [ 'cache.operation' => 'prune', @@ -378,7 +323,7 @@ public function reset() : void } $span = $this->tracer->span( - 'cache reset', + "Cache Reset {$this->poolName}", SpanKind::CLIENT, [ 'cache.operation' => 'reset', @@ -401,13 +346,14 @@ public function reset() : void public function save(CacheItemInterface $item) : bool { + $key = $item->getKey(); $span = $this->tracer->span( - 'cache save', + "Cache Save {$key} {$this->poolName}", SpanKind::CLIENT, [ 'cache.operation' => 'save', 'cache.pool' => $this->poolName, - 'cache.key' => $item->getKey(), + 'cache.key' => $key, ] ); @@ -428,13 +374,14 @@ public function save(CacheItemInterface $item) : bool public function saveDeferred(CacheItemInterface $item) : bool { + $key = $item->getKey(); $span = $this->tracer->span( - 'cache saveDeferred', + "Cache SaveDeferred {$key} {$this->poolName}", SpanKind::CLIENT, [ 'cache.operation' => 'saveDeferred', 'cache.pool' => $this->poolName, - 'cache.key' => $item->getKey(), + 'cache.key' => $key, ] ); diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Cache/TraceableCacheAdapter.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Cache/TraceableCacheAdapter.php index 65746a582b..2a072f3cfc 100644 --- a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Cache/TraceableCacheAdapter.php +++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Cache/TraceableCacheAdapter.php @@ -4,6 +4,7 @@ namespace Flow\Bridge\Symfony\TelemetryBundle\Instrumentation\Cache; +use Flow\Telemetry\Meter\Instrument\Counter; use Flow\Telemetry\{PackageVersion, Telemetry}; use Flow\Telemetry\Tracer\{SpanKind, SpanStatus, Tracer}; use Psr\Cache\CacheItemInterface; @@ -13,6 +14,10 @@ final readonly class TraceableCacheAdapter implements AdapterInterface, CacheInterface, PruneableInterface, ResettableInterface { + private Counter $hitCounter; + + private Counter $missCounter; + private Tracer $tracer; public function __construct( @@ -21,6 +26,9 @@ public function __construct( private string $poolName, ) { $this->tracer = $this->telemetry->tracer('flow.symfony.cache', PackageVersion::get('symfony/cache')); + $meter = $this->telemetry->meter('flow.symfony.cache', PackageVersion::get('symfony/cache')); + $this->hitCounter = $meter->createCounter('cache.hits', 'operations', 'Number of cache hits'); + $this->missCounter = $meter->createCounter('cache.misses', 'operations', 'Number of cache misses'); } public function clear(string $prefix = '') : bool @@ -34,7 +42,7 @@ public function clear(string $prefix = '') : bool $attributes['cache.prefix'] = $prefix; } - $span = $this->tracer->span('cache clear', SpanKind::CLIENT, $attributes); + $span = $this->tracer->span("Cache Clear {$this->poolName}", SpanKind::CLIENT, $attributes); try { $result = $this->adapter->clear($prefix); @@ -54,7 +62,7 @@ public function clear(string $prefix = '') : bool public function commit() : bool { $span = $this->tracer->span( - 'cache commit', + "Cache Commit {$this->poolName}", SpanKind::CLIENT, [ 'cache.operation' => 'commit', @@ -84,7 +92,7 @@ public function delete(string $key) : bool } $span = $this->tracer->span( - 'cache delete', + "Cache Delete {$key} {$this->poolName}", SpanKind::CLIENT, [ 'cache.operation' => 'delete', @@ -111,7 +119,7 @@ public function delete(string $key) : bool public function deleteItem(mixed $key) : bool { $span = $this->tracer->span( - 'cache deleteItem', + "Cache DeleteItem {$key} {$this->poolName}", SpanKind::CLIENT, [ 'cache.operation' => 'deleteItem', @@ -141,7 +149,7 @@ public function deleteItem(mixed $key) : bool public function deleteItems(array $keys) : bool { $span = $this->tracer->span( - 'cache deleteItems', + "Cache DeleteItems {$this->poolName}", SpanKind::CLIENT, [ 'cache.operation' => 'deleteItems', @@ -174,16 +182,6 @@ public function get(string $key, callable $callback, ?float $beta = null, ?array throw new \BadMethodCallException(\sprintf('The adapter "%s" does not implement "%s".', $this->adapter::class, CacheInterface::class)); } - $span = $this->tracer->span( - 'cache get', - SpanKind::CLIENT, - [ - 'cache.operation' => 'get', - 'cache.pool' => $this->poolName, - 'cache.key' => $key, - ] - ); - $hit = true; $wrappedCallback = static function (ItemInterface $item, bool &$save) use ($callback, &$hit) : mixed { $hit = false; @@ -191,123 +189,70 @@ public function get(string $key, callable $callback, ?float $beta = null, ?array return $callback($item, $save); }; - try { - $result = $this->adapter->get($key, $wrappedCallback, $beta, $metadata); - $span->setAttribute('cache.hit', $hit); - $span->setStatus(SpanStatus::ok()); - - return $result; - } catch (\Throwable $exception) { - $span->recordException($exception, new \DateTimeImmutable()); - $span->setStatus(SpanStatus::error($exception->getMessage())); + $result = $this->adapter->get($key, $wrappedCallback, $beta, $metadata); - throw $exception; - } finally { - $this->tracer->complete($span); + if ($hit) { + $this->hitCounter->add(1, ['cache.pool' => $this->poolName]); + } else { + $this->missCounter->add(1, ['cache.pool' => $this->poolName]); } + + return $result; } public function getItem(mixed $key) : CacheItem { - $span = $this->tracer->span( - 'cache getItem', - SpanKind::CLIENT, - [ - 'cache.operation' => 'getItem', - 'cache.pool' => $this->poolName, - 'cache.key' => $key, - ] - ); + $item = $this->adapter->getItem($key); - try { - $item = $this->adapter->getItem($key); - $span->setAttribute('cache.hit', $item->isHit()); - $span->setStatus(SpanStatus::ok()); - - return $item; - } catch (\Throwable $exception) { - $span->recordException($exception, new \DateTimeImmutable()); - $span->setStatus(SpanStatus::error($exception->getMessage())); - - throw $exception; - } finally { - $this->tracer->complete($span); + if ($item->isHit()) { + $this->hitCounter->add(1, ['cache.pool' => $this->poolName]); + } else { + $this->missCounter->add(1, ['cache.pool' => $this->poolName]); } + + return $item; } /** * @param array $keys * - * @return iterable + * @return \Generator */ - public function getItems(array $keys = []) : iterable + public function getItems(array $keys = []) : \Generator { - $span = $this->tracer->span( - 'cache getItems', - SpanKind::CLIENT, - [ - 'cache.operation' => 'getItems', - 'cache.pool' => $this->poolName, - 'cache.key_count' => \count($keys), - ] - ); - - try { - $items = $this->adapter->getItems($keys); - $itemsArray = \iterator_to_array($items); - - $hits = 0; - $misses = 0; - - foreach ($itemsArray as $item) { - if ($item->isHit()) { - $hits++; - } else { - $misses++; - } + $hits = 0; + $misses = 0; + + foreach ($this->adapter->getItems($keys) as $key => $item) { + if ($item->isHit()) { + $hits++; + } else { + $misses++; } - $span->setAttribute('cache.hits', $hits); - $span->setAttribute('cache.misses', $misses); - $span->setStatus(SpanStatus::ok()); + yield $key => $item; + } - return $itemsArray; - } catch (\Throwable $exception) { - $span->recordException($exception, new \DateTimeImmutable()); - $span->setStatus(SpanStatus::error($exception->getMessage())); + if ($hits > 0) { + $this->hitCounter->add($hits, ['cache.pool' => $this->poolName]); + } - throw $exception; - } finally { - $this->tracer->complete($span); + if ($misses > 0) { + $this->missCounter->add($misses, ['cache.pool' => $this->poolName]); } } public function hasItem(mixed $key) : bool { - $span = $this->tracer->span( - 'cache hasItem', - SpanKind::CLIENT, - [ - 'cache.operation' => 'hasItem', - 'cache.pool' => $this->poolName, - 'cache.key' => $key, - ] - ); + $exists = $this->adapter->hasItem($key); - try { - $exists = $this->adapter->hasItem($key); - $span->setAttribute('cache.exists', $exists); - $span->setStatus(SpanStatus::ok()); - - return $exists; - } catch (\Throwable $exception) { - $span->recordException($exception, new \DateTimeImmutable()); - $span->setStatus(SpanStatus::error($exception->getMessage())); - - throw $exception; - } finally { - $this->tracer->complete($span); + if ($exists) { + $this->hitCounter->add(1, ['cache.pool' => $this->poolName]); + } else { + $this->missCounter->add(1, ['cache.pool' => $this->poolName]); } + + return $exists; } public function prune() : bool @@ -317,7 +262,7 @@ public function prune() : bool } $span = $this->tracer->span( - 'cache prune', + "Cache Prune {$this->poolName}", SpanKind::CLIENT, [ 'cache.operation' => 'prune', @@ -347,7 +292,7 @@ public function reset() : void } $span = $this->tracer->span( - 'cache reset', + "Cache Reset {$this->poolName}", SpanKind::CLIENT, [ 'cache.operation' => 'reset', @@ -370,13 +315,14 @@ public function reset() : void public function save(CacheItemInterface $item) : bool { + $key = $item->getKey(); $span = $this->tracer->span( - 'cache save', + "Cache Save {$key} {$this->poolName}", SpanKind::CLIENT, [ 'cache.operation' => 'save', 'cache.pool' => $this->poolName, - 'cache.key' => $item->getKey(), + 'cache.key' => $key, ] ); @@ -397,13 +343,14 @@ public function save(CacheItemInterface $item) : bool public function saveDeferred(CacheItemInterface $item) : bool { + $key = $item->getKey(); $span = $this->tracer->span( - 'cache saveDeferred', + "Cache SaveDeferred {$key} {$this->poolName}", SpanKind::CLIENT, [ 'cache.operation' => 'saveDeferred', 'cache.pool' => $this->poolName, - 'cache.key' => $item->getKey(), + 'cache.key' => $key, ] ); diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V3/TracingDriver.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V3/TracingDriver.php index 10f81affa0..ad0162e73e 100644 --- a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V3/TracingDriver.php +++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V3/TracingDriver.php @@ -40,7 +40,7 @@ public function connect( 'doctrine.dbal.connection', SpanKind::CLIENT, [ - 'db.system' => $this->getSemanticDbSystem(), + 'db.system.name' => $this->getSemanticDbSystem(), 'db.namespace' => $params['dbname'] ?? 'default', 'db.connection.name' => $this->connectionName, ] diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V4/TracingDriver.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V4/TracingDriver.php index 7ab49e2ddc..3db8fd5b31 100644 --- a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V4/TracingDriver.php +++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V4/TracingDriver.php @@ -49,7 +49,7 @@ public function connect( try { $connection = parent::connect($params); - $span->setAttribute('db.system', $this->getSemanticDbSystem($connection->getServerVersion())); + $span->setAttribute('db.system.name', $this->getSemanticDbSystem($connection->getServerVersion())); $span->setStatus(SpanStatus::ok()); return new TracingConnection( diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/HttpClient/TracableHttpClient.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/HttpClient/TracableHttpClient.php index 29f4dc937c..0e0b4bc511 100644 --- a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/HttpClient/TracableHttpClient.php +++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/HttpClient/TracableHttpClient.php @@ -25,26 +25,33 @@ public function request(string $method, string $url, array $options = []) : Resp $parsedUrl = \parse_url($url); $scheme = $parsedUrl['scheme'] ?? 'http'; $host = $parsedUrl['host'] ?? 'unknown'; + $port = $parsedUrl['port'] ?? null; $tracer = $this->telemetry->tracer('flow.symfony.http_client', PackageVersion::get('symfony/http-client')); + $attributes = [ + 'http.request.method' => $method, + 'url.full' => $url, + 'url.scheme' => $scheme, + 'server.address' => $host, + 'http.client.name' => $this->clientName, + ]; + + if ($port !== null && $port !== 80 && $port !== 443) { + $attributes['server.port'] = $port; + } + $span = $tracer->span( "{$method} {$host}", SpanKind::CLIENT, - [ - 'http.method' => $method, - 'http.url' => $url, - 'http.scheme' => $scheme, - 'http.host' => $host, - 'http.client.name' => $this->clientName, - ] + $attributes ); try { $response = $this->client->request($method, $url, $options); $statusCode = $response->getStatusCode(); - $span->setAttribute('http.status_code', $statusCode); + $span->setAttribute('http.response.status_code', $statusCode); if ($statusCode >= 400) { $span->setStatus(SpanStatus::error("HTTP {$statusCode}")); diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/HttpKernel/HttpKernelSpanSubscriber.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/HttpKernel/HttpKernelSpanSubscriber.php index 0cb74fa9ab..de0a5d8ee3 100644 --- a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/HttpKernel/HttpKernelSpanSubscriber.php +++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/HttpKernel/HttpKernelSpanSubscriber.php @@ -62,8 +62,6 @@ public function onController(ControllerEvent $event) : void if (\is_string($route)) { $span->setAttribute('http.route', $route); - $method = $request->getMethod(); - $span->rename("{$method} {$route}"); } $controller = $event->getController(); @@ -107,11 +105,11 @@ public function onRequest(RequestEvent $event) : void "{$method} {$path}", $kind, [ - 'http.method' => $method, - 'http.url' => $request->getUri(), - 'http.target' => $request->getRequestUri(), - 'http.scheme' => $request->getScheme(), - 'http.host' => $request->getHost(), + 'http.request.method' => $method, + 'url.full' => $request->getUri(), + 'url.path' => $request->getRequestUri(), + 'url.scheme' => $request->getScheme(), + 'server.address' => $request->getHost(), ], ); @@ -131,7 +129,7 @@ public function onResponse(ResponseEvent $event) : void $response = $event->getResponse(); $statusCode = $response->getStatusCode(); - $span->setAttribute('http.status_code', $statusCode); + $span->setAttribute('http.response.status_code', $statusCode); if ($statusCode >= 400) { $span->setStatus(SpanStatus::error("HTTP {$statusCode}")); @@ -177,7 +175,7 @@ private function extractContextFromRequest(Request $request) : void $context = $context->withBaggage($propagationContext->baggage); } - $this->contextStorage->store($context); + $this->contextStorage->attach($context); } } diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Messenger/TracingMiddleware.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Messenger/TracingMiddleware.php index 0bcdf7be15..498e9b5a55 100644 --- a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Messenger/TracingMiddleware.php +++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Messenger/TracingMiddleware.php @@ -47,9 +47,10 @@ public function handle(Envelope $envelope, StackInterface $stack) : Envelope $attributes = [ 'messaging.system' => 'symfony_messenger', - 'messaging.destination' => $busName, + 'messaging.destination.name' => $busName, 'messaging.message.class' => $messageClass, - 'messaging.operation' => $operation, + 'messaging.operation.type' => $operation, + 'messaging.operation.name' => $messageClass, ]; if ($receivedStamp instanceof ReceivedStamp) { @@ -104,7 +105,7 @@ private function extractContext(Envelope $envelope) : void $context = $context->withBaggage($propagationContext->baggage); } - $this->contextStorage->store($context); + $this->contextStorage->attach($context); } } diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/Cache/TraceableCacheAdapterTest.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/Cache/TraceableCacheAdapterTest.php index 59343c886b..7eac830213 100644 --- a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/Cache/TraceableCacheAdapterTest.php +++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/Cache/TraceableCacheAdapterTest.php @@ -6,10 +6,11 @@ use Flow\Bridge\Symfony\TelemetryBundle\DependencyInjection\Compiler\CacheTelemetryPass; use Flow\Bridge\Symfony\TelemetryBundle\Instrumentation\Cache\{TagAwareTraceableCacheAdapter, TraceableCacheAdapter}; -use Flow\Bridge\Symfony\TelemetryBundle\Tests\Fixtures\Cache\{ArrayCacheAdapter, FailingCacheAdapter, TagAwareArrayCacheAdapter}; +use Flow\Bridge\Symfony\TelemetryBundle\Tests\Fixtures\Cache\{ArrayCacheAdapter, TagAwareArrayCacheAdapter}; use Flow\Bridge\Symfony\TelemetryBundle\Tests\Fixtures\TestKernel; use Flow\Bridge\Symfony\TelemetryBundle\Tests\Integration\KernelTestCase; -use Flow\Telemetry\Provider\Memory\MemorySpanProcessor; +use Flow\Telemetry\Provider\Memory\{MemoryMetricProcessor, MemorySpanProcessor}; +use Flow\Telemetry\Telemetry; use Flow\Telemetry\Tracer\SpanKind; use PHPUnit\Framework\Attributes\CoversClass; use Symfony\Component\Cache\Adapter\AdapterInterface; @@ -160,7 +161,7 @@ public function test_excluded_pool_by_regex_is_not_wrapped() : void self::assertInstanceOf(ArrayCacheAdapter::class, $container->get('test.cache.profiler.second')); } - public function test_get_item_records_hit_miss() : void + public function test_get_item_records_metrics() : void { $this->bootKernel([ 'config' => static function (TestKernel $kernel) : void { @@ -172,7 +173,7 @@ public function test_get_item_records_hit_miss() : void $kernel->addTestExtensionConfig('flow_telemetry', [ 'resource' => [], - 'tracer_provider' => [ + 'meter_provider' => [ 'processor' => [ 'type' => 'memory', 'exporter' => ['type' => 'memory'], @@ -198,21 +199,27 @@ public function test_get_item_records_hit_miss() : void $cache->get('existing-key', static fn () => 'value'); - /** @var MemorySpanProcessor $processor */ - $processor = $container->get('flow.telemetry.tracer_provider.processor'); - $processor->endedSpans(); - $existingItem = $cache->getItem('existing-key'); self::assertTrue($existingItem->isHit()); - $spans = $processor->endedSpans(); - $getItemSpan = $spans[\count($spans) - 1]; + /** @var Telemetry $telemetry */ + $telemetry = $container->get('flow.telemetry'); + $telemetry->flush(); + + /** @var MemoryMetricProcessor $processor */ + $processor = $container->get('flow.telemetry.meter_provider.processor'); + $hitMetrics = $processor->metricsWithName('cache.hits'); + $missMetrics = $processor->metricsWithName('cache.misses'); + + $totalHits = \array_sum(\array_map(static fn ($m) => $m->value, $hitMetrics)); + $totalMisses = \array_sum(\array_map(static fn ($m) => $m->value, $missMetrics)); - self::assertSame('cache getItem', $getItemSpan->name()); - self::assertTrue($getItemSpan->attributes()['cache.hit']); + self::assertSame(1, $totalHits); + self::assertSame(2, $totalMisses); + self::assertSame('test.cache.app', $hitMetrics[0]->attributes->get('cache.pool')); } - public function test_get_items_records_hits_and_misses() : void + public function test_get_items_records_metrics() : void { $this->bootKernel([ 'config' => static function (TestKernel $kernel) : void { @@ -224,7 +231,7 @@ public function test_get_items_records_hits_and_misses() : void $kernel->addTestExtensionConfig('flow_telemetry', [ 'resource' => [], - 'tracer_provider' => [ + 'meter_provider' => [ 'processor' => [ 'type' => 'memory', 'exporter' => ['type' => 'memory'], @@ -248,34 +255,43 @@ public function test_get_items_records_hits_and_misses() : void $cache->get('key1', static fn () => 'value1'); $cache->get('key2', static fn () => 'value2'); - /** @var MemorySpanProcessor $processor */ - $processor = $container->get('flow.telemetry.tracer_provider.processor'); - $processor->endedSpans(); - $items = $cache->getItems(['key1', 'key2', 'key3']); \iterator_to_array($items); - $spans = $processor->endedSpans(); - $getItemsSpan = $spans[\count($spans) - 1]; + /** @var Telemetry $telemetry */ + $telemetry = $container->get('flow.telemetry'); + $telemetry->flush(); + + /** @var MemoryMetricProcessor $processor */ + $processor = $container->get('flow.telemetry.meter_provider.processor'); + $hitMetrics = $processor->metricsWithName('cache.hits'); + $missMetrics = $processor->metricsWithName('cache.misses'); + + $totalHits = \array_sum(\array_map(static fn ($m) => $m->value, $hitMetrics)); + $totalMisses = \array_sum(\array_map(static fn ($m) => $m->value, $missMetrics)); - self::assertSame('cache getItems', $getItemsSpan->name()); - self::assertSame(3, $getItemsSpan->attributes()['cache.key_count']); - self::assertSame(2, $getItemsSpan->attributes()['cache.hits']); - self::assertSame(1, $getItemsSpan->attributes()['cache.misses']); + self::assertSame(2, $totalHits); + self::assertSame(3, $totalMisses); } - public function test_tag_aware_adapters_are_wrapped_with_tag_aware_traceable() : void + public function test_get_records_hit_metric_on_cache_hit() : void { $this->bootKernel([ 'config' => static function (TestKernel $kernel) : void { $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void { - $container->register('test.cache.tags', TagAwareArrayCacheAdapter::class) + $container->register('test.cache.app', ArrayCacheAdapter::class) ->addTag('cache.pool') ->setPublic(true); }); $kernel->addTestExtensionConfig('flow_telemetry', [ 'resource' => [], + 'meter_provider' => [ + 'processor' => [ + 'type' => 'memory', + 'exporter' => ['type' => 'memory'], + ], + ], 'instrumentation' => [ 'http_kernel' => false, 'console' => false, @@ -288,22 +304,43 @@ public function test_tag_aware_adapters_are_wrapped_with_tag_aware_traceable() : $container = $this->getContainer(); - self::assertInstanceOf(TagAwareTraceableCacheAdapter::class, $container->get('test.cache.tags')); + /** @var TraceableCacheAdapter $cache */ + $cache = $container->get('test.cache.app'); + $cache->get('my-key', static fn () => 'my-value'); + $cache->get('my-key', static fn () => 'should-not-be-called'); + + /** @var Telemetry $telemetry */ + $telemetry = $container->get('flow.telemetry'); + $telemetry->flush(); + + /** @var MemoryMetricProcessor $processor */ + $processor = $container->get('flow.telemetry.meter_provider.processor'); + $hitMetrics = $processor->metricsWithName('cache.hits'); + $missMetrics = $processor->metricsWithName('cache.misses'); + + self::assertCount(1, $hitMetrics); + self::assertCount(1, $missMetrics); + + self::assertSame(1, $hitMetrics[0]->value); + self::assertSame('test.cache.app', $hitMetrics[0]->attributes->get('cache.pool')); + + self::assertSame(1, $missMetrics[0]->value); + self::assertSame('test.cache.app', $missMetrics[0]->attributes->get('cache.pool')); } - public function test_tag_aware_cache_creates_span_for_invalidate_tags() : void + public function test_get_records_miss_metric_on_cache_miss() : void { $this->bootKernel([ 'config' => static function (TestKernel $kernel) : void { $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void { - $container->register('test.cache.tags', TagAwareArrayCacheAdapter::class) + $container->register('test.cache.app', ArrayCacheAdapter::class) ->addTag('cache.pool') ->setPublic(true); }); $kernel->addTestExtensionConfig('flow_telemetry', [ 'resource' => [], - 'tracer_provider' => [ + 'meter_provider' => [ 'processor' => [ 'type' => 'memory', 'exporter' => ['type' => 'memory'], @@ -321,28 +358,24 @@ public function test_tag_aware_cache_creates_span_for_invalidate_tags() : void $container = $this->getContainer(); - /** @var TagAwareTraceableCacheAdapter $cache */ - $cache = $container->get('test.cache.tags'); - $cache->invalidateTags(['tag1', 'tag2', 'tag3']); - - /** @var MemorySpanProcessor $processor */ - $processor = $container->get('flow.telemetry.tracer_provider.processor'); - $spans = $processor->endedSpans(); + /** @var TraceableCacheAdapter $cache */ + $cache = $container->get('test.cache.app'); + $cache->get('nonexistent-key', static fn () => 'new-value'); - self::assertCount(1, $spans); + /** @var Telemetry $telemetry */ + $telemetry = $container->get('flow.telemetry'); + $telemetry->flush(); - $span = $spans[0]; - self::assertSame('cache invalidateTags', $span->name()); - self::assertSame(SpanKind::CLIENT, $span->kind()); + /** @var MemoryMetricProcessor $processor */ + $processor = $container->get('flow.telemetry.meter_provider.processor'); + $missMetrics = $processor->metricsWithName('cache.misses'); - $attributes = $span->attributes(); - self::assertSame('invalidateTags', $attributes['cache.operation']); - self::assertSame('test.cache.tags', $attributes['cache.pool']); - self::assertSame(['tag1', 'tag2', 'tag3'], $attributes['cache.tags']); - self::assertSame(3, $attributes['cache.tag_count']); + self::assertCount(1, $missMetrics); + self::assertSame(1, $missMetrics[0]->value); + self::assertSame('test.cache.app', $missMetrics[0]->attributes->get('cache.pool')); } - public function test_wrapped_cache_creates_span_for_get_operation() : void + public function test_has_item_records_hit_metric_when_exists() : void { $this->bootKernel([ 'config' => static function (TestKernel $kernel) : void { @@ -354,7 +387,7 @@ public function test_wrapped_cache_creates_span_for_get_operation() : void $kernel->addTestExtensionConfig('flow_telemetry', [ 'resource' => [], - 'tracer_provider' => [ + 'meter_provider' => [ 'processor' => [ 'type' => 'memory', 'exporter' => ['type' => 'memory'], @@ -374,25 +407,25 @@ public function test_wrapped_cache_creates_span_for_get_operation() : void /** @var TraceableCacheAdapter $cache */ $cache = $container->get('test.cache.app'); - $cache->get('my-key', static fn () => 'my-value'); + $cache->get('existing-key', static fn () => 'value'); + $exists = $cache->hasItem('existing-key'); - /** @var MemorySpanProcessor $processor */ - $processor = $container->get('flow.telemetry.tracer_provider.processor'); - $spans = $processor->endedSpans(); + self::assertTrue($exists); - self::assertCount(1, $spans); + /** @var Telemetry $telemetry */ + $telemetry = $container->get('flow.telemetry'); + $telemetry->flush(); - $span = $spans[0]; - self::assertSame('cache get', $span->name()); - self::assertSame(SpanKind::CLIENT, $span->kind()); + /** @var MemoryMetricProcessor $processor */ + $processor = $container->get('flow.telemetry.meter_provider.processor'); + $hitMetrics = $processor->metricsWithName('cache.hits'); - $attributes = $span->attributes(); - self::assertSame('get', $attributes['cache.operation']); - self::assertSame('test.cache.app', $attributes['cache.pool']); - self::assertSame('my-key', $attributes['cache.key']); + self::assertCount(1, $hitMetrics); + self::assertSame(1, $hitMetrics[0]->value); + self::assertSame('test.cache.app', $hitMetrics[0]->attributes->get('cache.pool')); } - public function test_wrapped_cache_records_cache_hit() : void + public function test_has_item_records_miss_metric_when_not_exists() : void { $this->bootKernel([ 'config' => static function (TestKernel $kernel) : void { @@ -404,7 +437,7 @@ public function test_wrapped_cache_records_cache_hit() : void $kernel->addTestExtensionConfig('flow_telemetry', [ 'resource' => [], - 'tracer_provider' => [ + 'meter_provider' => [ 'processor' => [ 'type' => 'memory', 'exporter' => ['type' => 'memory'], @@ -424,40 +457,35 @@ public function test_wrapped_cache_records_cache_hit() : void /** @var TraceableCacheAdapter $cache */ $cache = $container->get('test.cache.app'); - $cache->get('my-key', static fn () => 'my-value'); - $cache->get('my-key', static fn () => 'should-not-be-called'); + $exists = $cache->hasItem('nonexistent-key'); - /** @var MemorySpanProcessor $processor */ - $processor = $container->get('flow.telemetry.tracer_provider.processor'); - $spans = $processor->endedSpans(); + self::assertFalse($exists); - self::assertCount(2, $spans); + /** @var Telemetry $telemetry */ + $telemetry = $container->get('flow.telemetry'); + $telemetry->flush(); - $firstSpan = $spans[0]; - self::assertFalse($firstSpan->attributes()['cache.hit']); + /** @var MemoryMetricProcessor $processor */ + $processor = $container->get('flow.telemetry.meter_provider.processor'); + $missMetrics = $processor->metricsWithName('cache.misses'); - $secondSpan = $spans[1]; - self::assertTrue($secondSpan->attributes()['cache.hit']); + self::assertCount(1, $missMetrics); + self::assertSame(1, $missMetrics[0]->value); + self::assertSame('test.cache.app', $missMetrics[0]->attributes->get('cache.pool')); } - public function test_wrapped_cache_records_cache_miss() : void + public function test_tag_aware_adapters_are_wrapped_with_tag_aware_traceable() : void { $this->bootKernel([ 'config' => static function (TestKernel $kernel) : void { $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void { - $container->register('test.cache.app', ArrayCacheAdapter::class) + $container->register('test.cache.tags', TagAwareArrayCacheAdapter::class) ->addTag('cache.pool') ->setPublic(true); }); $kernel->addTestExtensionConfig('flow_telemetry', [ 'resource' => [], - 'tracer_provider' => [ - 'processor' => [ - 'type' => 'memory', - 'exporter' => ['type' => 'memory'], - ], - ], 'instrumentation' => [ 'http_kernel' => false, 'console' => false, @@ -470,25 +498,15 @@ public function test_wrapped_cache_records_cache_miss() : void $container = $this->getContainer(); - /** @var TraceableCacheAdapter $cache */ - $cache = $container->get('test.cache.app'); - $cache->get('nonexistent-key', static fn () => 'new-value'); - - /** @var MemorySpanProcessor $processor */ - $processor = $container->get('flow.telemetry.tracer_provider.processor'); - $spans = $processor->endedSpans(); - - self::assertCount(1, $spans); - self::assertFalse($spans[0]->attributes()['cache.hit']); + self::assertInstanceOf(TagAwareTraceableCacheAdapter::class, $container->get('test.cache.tags')); } - public function test_wrapped_cache_records_exception() : void + public function test_tag_aware_cache_creates_span_for_invalidate_tags() : void { $this->bootKernel([ 'config' => static function (TestKernel $kernel) : void { $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void { - $container->register('test.cache.failing', FailingCacheAdapter::class) - ->addArgument('Connection refused') + $container->register('test.cache.tags', TagAwareArrayCacheAdapter::class) ->addTag('cache.pool') ->setPublic(true); }); @@ -513,19 +531,9 @@ public function test_wrapped_cache_records_exception() : void $container = $this->getContainer(); - /** @var TraceableCacheAdapter $cache */ - $cache = $container->get('test.cache.failing'); - - $exceptionThrown = false; - - try { - $cache->get('my-key', static fn () => 'value'); - } catch (\RuntimeException $e) { - $exceptionThrown = true; - self::assertSame('Connection refused', $e->getMessage()); - } - - self::assertTrue($exceptionThrown, 'Expected exception was not thrown'); + /** @var TagAwareTraceableCacheAdapter $cache */ + $cache = $container->get('test.cache.tags'); + $cache->invalidateTags(['tag1', 'tag2', 'tag3']); /** @var MemorySpanProcessor $processor */ $processor = $container->get('flow.telemetry.tracer_provider.processor'); @@ -534,13 +542,13 @@ public function test_wrapped_cache_records_exception() : void self::assertCount(1, $spans); $span = $spans[0]; - $status = $span->status(); - self::assertNotNull($status); - self::assertTrue($status->isError()); - self::assertSame('Connection refused', $status->description); - - $events = $span->events(); - self::assertCount(1, $events); - self::assertSame('exception', $events[0]->name()); + self::assertSame('Cache InvalidateTags test.cache.tags', $span->name()); + self::assertSame(SpanKind::CLIENT, $span->kind()); + + $attributes = $span->attributes(); + self::assertSame('invalidateTags', $attributes['cache.operation']); + self::assertSame('test.cache.tags', $attributes['cache.pool']); + self::assertSame(['tag1', 'tag2', 'tag3'], $attributes['cache.tags']); + self::assertSame(3, $attributes['cache.tag_count']); } } diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/Doctrine/DBAL/TracingMiddlewareTest.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/Doctrine/DBAL/TracingMiddlewareTest.php index 92b6ae5022..a6aaa305eb 100644 --- a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/Doctrine/DBAL/TracingMiddlewareTest.php +++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/Doctrine/DBAL/TracingMiddlewareTest.php @@ -82,7 +82,7 @@ public function test_connection_span_includes_db_system_attribute() : void } self::assertNotNull($connectionSpan, 'Connection span should exist'); - self::assertSame('sqlite', $connectionSpan->attributes()['db.system']); + self::assertSame('sqlite', $connectionSpan->attributes()['db.system.name']); self::assertSame('default', $connectionSpan->attributes()['db.connection.name']); } diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/HttpClient/TracableHttpClientTest.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/HttpClient/TracableHttpClientTest.php index 324060436a..d15572223f 100644 --- a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/HttpClient/TracableHttpClientTest.php +++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/HttpClient/TracableHttpClientTest.php @@ -210,7 +210,7 @@ public function test_wrapped_client_creates_error_span_for_http_error_response() $span = $spans[0]; self::assertSame('POST localhost', $span->name()); - self::assertSame(500, $span->attributes()['http.status_code']); + self::assertSame(500, $span->attributes()['http.response.status_code']); $status = $span->status(); self::assertNotNull($status); @@ -264,12 +264,12 @@ public function test_wrapped_client_creates_span_with_correct_attributes() : voi self::assertSame(SpanKind::CLIENT, $span->kind()); $attributes = $span->attributes(); - self::assertSame('GET', $attributes['http.method']); - self::assertSame('https://api.example.com/users?page=1', $attributes['http.url']); - self::assertSame('https', $attributes['http.scheme']); - self::assertSame('api.example.com', $attributes['http.host']); + self::assertSame('GET', $attributes['http.request.method']); + self::assertSame('https://api.example.com/users?page=1', $attributes['url.full']); + self::assertSame('https', $attributes['url.scheme']); + self::assertSame('api.example.com', $attributes['server.address']); self::assertSame('test.api_client', $attributes['http.client.name']); - self::assertSame(200, $attributes['http.status_code']); + self::assertSame(200, $attributes['http.response.status_code']); $status = $span->status(); self::assertNotNull($status); diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/HttpKernel/HttpKernelSpanSubscriberTest.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/HttpKernel/HttpKernelSpanSubscriberTest.php index c5dc7f2040..c054981c9f 100644 --- a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/HttpKernel/HttpKernelSpanSubscriberTest.php +++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/HttpKernel/HttpKernelSpanSubscriberTest.php @@ -192,7 +192,7 @@ public function test_excludes_path_with_exact_match() : void $spans = $processor->endedSpans(); self::assertCount(1, $spans); - self::assertSame('GET test_index', $spans[0]->name()); + self::assertSame('GET /test', $spans[0]->name()); } public function test_excludes_path_with_method_filter() : void @@ -251,7 +251,7 @@ public function test_excludes_path_with_method_filter() : void $spans = $processor->endedSpans(); self::assertCount(1, $spans); - self::assertSame('POST wdt', $spans[0]->name()); + self::assertSame('POST /_wdt', $spans[0]->name()); } public function test_excludes_path_with_regex_pattern() : void @@ -315,7 +315,7 @@ public function test_excludes_path_with_regex_pattern() : void $spans = $processor->endedSpans(); self::assertCount(1, $spans); - self::assertSame('GET test_index', $spans[0]->name()); + self::assertSame('GET /test', $spans[0]->name()); } public function test_extracts_context_from_traceparent_header() : void @@ -488,7 +488,7 @@ public function test_traces_http_request_with_error_status() : void $span = $spans[0]; $attributes = $span->attributes(); - self::assertSame(404, $attributes['http.status_code']); + self::assertSame(404, $attributes['http.response.status_code']); $status = $span->status(); self::assertNotNull($status); @@ -546,12 +546,12 @@ public function test_traces_successful_http_request() : void self::assertCount(1, $spans); $span = $spans[0]; - self::assertSame('GET test_index', $span->name()); + self::assertSame('GET /test', $span->name()); self::assertSame(SpanKind::SERVER, $span->kind()); $attributes = $span->attributes(); - self::assertSame('GET', $attributes['http.method']); - self::assertSame(200, $attributes['http.status_code']); + self::assertSame('GET', $attributes['http.request.method']); + self::assertSame(200, $attributes['http.response.status_code']); self::assertSame('test_index', $attributes['http.route']); self::assertSame(TestController::class . '::index', $attributes['controller']); } diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/Messenger/TracingMiddlewareTest.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/Messenger/TracingMiddlewareTest.php index ed37e05123..e6f608d961 100644 --- a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/Messenger/TracingMiddlewareTest.php +++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/Messenger/TracingMiddlewareTest.php @@ -134,12 +134,12 @@ public function test_context_is_injected_on_dispatch_when_context_propagation_en $traceId = TraceId::generate(); $context = Context::withTraceId($traceId); - $contextStorage->store($context); + $contextStorage->attach($context); $tracer = $telemetry->tracer('test'); $span = $tracer->span('parent-span'); $context = $context->withActiveSpan($span->context()->spanId); - $contextStorage->store($context); + $contextStorage->attach($context); $handler = new TestMessageHandler(); $capturingMiddleware = new CapturingMiddleware(); @@ -483,9 +483,10 @@ public function test_traces_message_dispatch() : void $attributes = $span->attributes(); self::assertSame('symfony_messenger', $attributes['messaging.system']); - self::assertSame('command.bus', $attributes['messaging.destination']); + self::assertSame('command.bus', $attributes['messaging.destination.name']); self::assertSame(TestMessage::class, $attributes['messaging.message.class']); - self::assertSame('send', $attributes['messaging.operation']); + self::assertSame('send', $attributes['messaging.operation.type']); + self::assertSame(TestMessage::class, $attributes['messaging.operation.name']); $status = $span->status(); self::assertNotNull($status); diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/Psr18/Psr18ClientTelemetryPassTest.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/Psr18/Psr18ClientTelemetryPassTest.php index 295760d517..a1307b8202 100644 --- a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/Psr18/Psr18ClientTelemetryPassTest.php +++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/Psr18/Psr18ClientTelemetryPassTest.php @@ -206,7 +206,7 @@ public function test_wrapped_client_creates_error_span_for_http_error_response() $span = $spans[0]; self::assertSame('POST localhost', $span->name()); - self::assertSame(500, $span->attributes()['http.status_code']); + self::assertSame(500, $span->attributes()['http.response.status_code']); $status = $span->status(); self::assertNotNull($status); @@ -259,11 +259,11 @@ public function test_wrapped_client_creates_span_with_correct_attributes() : voi self::assertSame(SpanKind::CLIENT, $span->kind()); $attributes = $span->attributes(); - self::assertSame('GET', $attributes['http.method']); - self::assertSame('https://api.example.com/users?page=1', $attributes['http.url']); - self::assertSame('https', $attributes['http.scheme']); - self::assertSame('api.example.com', $attributes['http.host']); - self::assertSame(200, $attributes['http.status_code']); + self::assertSame('GET', $attributes['http.request.method']); + self::assertSame('https://api.example.com/users?page=1', $attributes['url.full']); + self::assertSame('https', $attributes['url.scheme']); + self::assertSame('api.example.com', $attributes['server.address']); + self::assertSame(200, $attributes['http.response.status_code']); $status = $span->status(); self::assertNotNull($status); diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Cache/TagAwareTraceableCacheAdapterTest.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Cache/TagAwareTraceableCacheAdapterTest.php index b2498d1f68..6f43a8b777 100644 --- a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Cache/TagAwareTraceableCacheAdapterTest.php +++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Cache/TagAwareTraceableCacheAdapterTest.php @@ -87,7 +87,7 @@ public function saveDeferred(CacheItemInterface $item) : bool self::assertCount(1, $spans); $span = $spans[0]; - self::assertSame('cache clear', $span->name()); + self::assertSame('Cache Clear test.pool', $span->name()); self::assertSame(SpanKind::CLIENT, $span->kind()); self::assertSame('clear', $span->attributes()['cache.operation']); self::assertSame('test.pool', $span->attributes()['cache.pool']); @@ -357,7 +357,7 @@ public function saveDeferred(CacheItemInterface $item) : bool self::assertCount(1, $spans); $span = $spans[0]; - self::assertSame('cache invalidateTags', $span->name()); + self::assertSame('Cache InvalidateTags test.pool', $span->name()); self::assertSame(['tag1', 'tag2', 'tag3'], $span->attributes()['cache.tags']); self::assertSame(3, $span->attributes()['cache.tag_count']); } diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Doctrine/DBAL/TracingDriverTest.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Doctrine/DBAL/TracingDriverTest.php index 6428862c16..0c8305c5f6 100644 --- a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Doctrine/DBAL/TracingDriverTest.php +++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Doctrine/DBAL/TracingDriverTest.php @@ -44,7 +44,7 @@ public function test_get_semantic_db_system_defaults_to_other_sql() : void $spans = $spanProcessor->endedSpans(); self::assertCount(1, $spans); - self::assertSame('other_sql', $spans[0]->attributes()['db.system']); + self::assertSame('other_sql', $spans[0]->attributes()['db.system.name']); } public function test_get_semantic_db_system_detects_db2() : void @@ -61,7 +61,7 @@ public function test_get_semantic_db_system_detects_db2() : void $spans = $spanProcessor->endedSpans(); self::assertCount(1, $spans); - self::assertSame('db2', $spans[0]->attributes()['db.system']); + self::assertSame('db2', $spans[0]->attributes()['db.system.name']); } public function test_get_semantic_db_system_detects_mariadb_as_mysql() : void @@ -78,7 +78,7 @@ public function test_get_semantic_db_system_detects_mariadb_as_mysql() : void $spans = $spanProcessor->endedSpans(); self::assertCount(1, $spans); - self::assertSame('mysql', $spans[0]->attributes()['db.system']); + self::assertSame('mysql', $spans[0]->attributes()['db.system.name']); } public function test_get_semantic_db_system_detects_mssql() : void @@ -95,7 +95,7 @@ public function test_get_semantic_db_system_detects_mssql() : void $spans = $spanProcessor->endedSpans(); self::assertCount(1, $spans); - self::assertSame('mssql', $spans[0]->attributes()['db.system']); + self::assertSame('mssql', $spans[0]->attributes()['db.system.name']); } public function test_get_semantic_db_system_detects_mysql() : void @@ -112,7 +112,7 @@ public function test_get_semantic_db_system_detects_mysql() : void $spans = $spanProcessor->endedSpans(); self::assertCount(1, $spans); - self::assertSame('mysql', $spans[0]->attributes()['db.system']); + self::assertSame('mysql', $spans[0]->attributes()['db.system.name']); } public function test_get_semantic_db_system_detects_oracle() : void @@ -129,7 +129,7 @@ public function test_get_semantic_db_system_detects_oracle() : void $spans = $spanProcessor->endedSpans(); self::assertCount(1, $spans); - self::assertSame('oracle', $spans[0]->attributes()['db.system']); + self::assertSame('oracle', $spans[0]->attributes()['db.system.name']); } public function test_get_semantic_db_system_detects_postgresql() : void @@ -146,7 +146,7 @@ public function test_get_semantic_db_system_detects_postgresql() : void $spans = $spanProcessor->endedSpans(); self::assertCount(1, $spans); - self::assertSame('postgresql', $spans[0]->attributes()['db.system']); + self::assertSame('postgresql', $spans[0]->attributes()['db.system.name']); } public function test_get_semantic_db_system_detects_sqlite() : void @@ -163,7 +163,7 @@ public function test_get_semantic_db_system_detects_sqlite() : void $spans = $spanProcessor->endedSpans(); self::assertCount(1, $spans); - self::assertSame('sqlite', $spans[0]->attributes()['db.system']); + self::assertSame('sqlite', $spans[0]->attributes()['db.system.name']); } public function test_span_defaults_db_namespace_to_default() : void diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Doctrine/DBAL/V3/TracingDriverTest.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Doctrine/DBAL/V3/TracingDriverTest.php index 2636c7890e..0e2a198d49 100644 --- a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Doctrine/DBAL/V3/TracingDriverTest.php +++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Doctrine/DBAL/V3/TracingDriverTest.php @@ -46,7 +46,7 @@ public function test_get_semantic_db_system_defaults_to_other_sql() : void $spans = $spanProcessor->endedSpans(); self::assertCount(1, $spans); - self::assertSame('other_sql', $spans[0]->attributes()['db.system']); + self::assertSame('other_sql', $spans[0]->attributes()['db.system.name']); } public function test_get_semantic_db_system_detects_db2() : void @@ -63,7 +63,7 @@ public function test_get_semantic_db_system_detects_db2() : void $spans = $spanProcessor->endedSpans(); self::assertCount(1, $spans); - self::assertSame('db2', $spans[0]->attributes()['db.system']); + self::assertSame('db2', $spans[0]->attributes()['db.system.name']); } public function test_get_semantic_db_system_detects_mariadb_as_mysql() : void @@ -80,7 +80,7 @@ public function test_get_semantic_db_system_detects_mariadb_as_mysql() : void $spans = $spanProcessor->endedSpans(); self::assertCount(1, $spans); - self::assertSame('mysql', $spans[0]->attributes()['db.system']); + self::assertSame('mysql', $spans[0]->attributes()['db.system.name']); } public function test_get_semantic_db_system_detects_mssql() : void @@ -97,7 +97,7 @@ public function test_get_semantic_db_system_detects_mssql() : void $spans = $spanProcessor->endedSpans(); self::assertCount(1, $spans); - self::assertSame('mssql', $spans[0]->attributes()['db.system']); + self::assertSame('mssql', $spans[0]->attributes()['db.system.name']); } public function test_get_semantic_db_system_detects_mysql() : void @@ -114,7 +114,7 @@ public function test_get_semantic_db_system_detects_mysql() : void $spans = $spanProcessor->endedSpans(); self::assertCount(1, $spans); - self::assertSame('mysql', $spans[0]->attributes()['db.system']); + self::assertSame('mysql', $spans[0]->attributes()['db.system.name']); } public function test_get_semantic_db_system_detects_oracle() : void @@ -131,7 +131,7 @@ public function test_get_semantic_db_system_detects_oracle() : void $spans = $spanProcessor->endedSpans(); self::assertCount(1, $spans); - self::assertSame('oracle', $spans[0]->attributes()['db.system']); + self::assertSame('oracle', $spans[0]->attributes()['db.system.name']); } public function test_get_semantic_db_system_detects_postgresql() : void @@ -148,7 +148,7 @@ public function test_get_semantic_db_system_detects_postgresql() : void $spans = $spanProcessor->endedSpans(); self::assertCount(1, $spans); - self::assertSame('postgresql', $spans[0]->attributes()['db.system']); + self::assertSame('postgresql', $spans[0]->attributes()['db.system.name']); } public function test_get_semantic_db_system_detects_sqlite() : void @@ -165,7 +165,7 @@ public function test_get_semantic_db_system_detects_sqlite() : void $spans = $spanProcessor->endedSpans(); self::assertCount(1, $spans); - self::assertSame('sqlite', $spans[0]->attributes()['db.system']); + self::assertSame('sqlite', $spans[0]->attributes()['db.system.name']); } public function test_span_defaults_db_namespace_to_default() : void diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/HttpClient/TracableHttpClientTest.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/HttpClient/TracableHttpClientTest.php index 69b7db7b38..fa92d3246e 100644 --- a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/HttpClient/TracableHttpClientTest.php +++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/HttpClient/TracableHttpClientTest.php @@ -32,7 +32,7 @@ public function test_request_defaults_host_to_unknown_when_missing() : void $spans = $spanProcessor->endedSpans(); self::assertCount(1, $spans); - self::assertSame('unknown', $spans[0]->attributes()['http.host']); + self::assertSame('unknown', $spans[0]->attributes()['server.address']); } public function test_request_defaults_scheme_to_http_when_missing() : void @@ -47,7 +47,7 @@ public function test_request_defaults_scheme_to_http_when_missing() : void $spans = $spanProcessor->endedSpans(); self::assertCount(1, $spans); - self::assertSame('http', $spans[0]->attributes()['http.scheme']); + self::assertSame('http', $spans[0]->attributes()['url.scheme']); } public function test_request_extracts_host_from_url() : void @@ -62,7 +62,7 @@ public function test_request_extracts_host_from_url() : void $spans = $spanProcessor->endedSpans(); self::assertCount(1, $spans); - self::assertSame('api.example.com', $spans[0]->attributes()['http.host']); + self::assertSame('api.example.com', $spans[0]->attributes()['server.address']); } public function test_request_extracts_scheme_from_url() : void @@ -126,7 +126,7 @@ public function withOptions(array $options) : static $spans = $spanProcessor->endedSpans(); self::assertCount(1, $spans); - self::assertSame('https', $spans[0]->attributes()['http.scheme']); + self::assertSame('https', $spans[0]->attributes()['url.scheme']); } public function test_request_includes_client_name_attribute() : void @@ -156,7 +156,7 @@ public function test_request_includes_http_status_code_attribute() : void $spans = $spanProcessor->endedSpans(); static::assertCount(1, $spans); - static::assertSame(200, $spans[0]->attributes()['http.status_code']); + static::assertSame(200, $spans[0]->attributes()['http.response.status_code']); } public function test_request_includes_method_and_url_attributes() : void @@ -171,8 +171,8 @@ public function test_request_includes_method_and_url_attributes() : void $spans = $spanProcessor->endedSpans(); static::assertCount(1, $spans); - static::assertSame('POST', $spans[0]->attributes()['http.method']); - static::assertSame('https://api.example.com/users', $spans[0]->attributes()['http.url']); + static::assertSame('POST', $spans[0]->attributes()['http.request.method']); + static::assertSame('https://api.example.com/users', $spans[0]->attributes()['url.full']); } public function test_request_records_exception_on_failure() : void diff --git a/src/bridge/telemetry/otlp/tests/Flow/Bridge/Telemetry/OTLP/Tests/Context/OtelContext.php b/src/bridge/telemetry/otlp/tests/Flow/Bridge/Telemetry/OTLP/Tests/Context/OtelContext.php index 893885b0a5..aafdee7951 100644 --- a/src/bridge/telemetry/otlp/tests/Flow/Bridge/Telemetry/OTLP/Tests/Context/OtelContext.php +++ b/src/bridge/telemetry/otlp/tests/Flow/Bridge/Telemetry/OTLP/Tests/Context/OtelContext.php @@ -5,7 +5,7 @@ namespace Flow\Bridge\Telemetry\OTLP\Tests\Context; use function Flow\Bridge\Telemetry\OTLP\DSL\{otlp_log_exporter, otlp_metric_exporter, otlp_span_exporter}; -use function Flow\Telemetry\DSL\{batching_log_processor, batching_metric_processor, batching_span_processor, logger_provider, meter_provider, telemetry, tracer_provider}; +use function Flow\Telemetry\DSL\{batching_log_processor, batching_metric_processor, batching_span_processor, logger_provider, meter_provider, resource, telemetry, tracer_provider}; use Flow\Bridge\Telemetry\OTLP\Tests\Integration\CollectorMetrics; use Flow\Telemetry\Context\MemoryContextStorage; use Flow\Telemetry\Provider\Clock\SystemClock; @@ -40,10 +40,24 @@ private function __construct() $this->httpClient = new Psr18Client(); $this->psr17Factory = new Psr17Factory(); - $this->httpEndpoint = \getenv('OTEL_RECEIVER_HTTP_ENDPOINT') ?: 'http://localhost:4318'; - $this->grpcEndpoint = \getenv('OTEL_RECEIVER_GRPC_ENDPOINT') ?: 'localhost:4317'; + $httpEndpoint = \getenv('OTEL_RECEIVER_HTTP_ENDPOINT'); + $grpcEndpoint = \getenv('OTEL_RECEIVER_GRPC_ENDPOINT'); + $metricsEndpoint = \getenv('OTEL_COLLECTOR_METRICS_ENDPOINT'); - $metricsEndpoint = \getenv('OTEL_COLLECTOR_METRICS_ENDPOINT') ?: 'http://localhost:8888/metrics'; + if ($httpEndpoint === false) { + throw new \RuntimeException('Missing required environment variable: OTEL_RECEIVER_HTTP_ENDPOINT'); + } + + if ($grpcEndpoint === false) { + throw new \RuntimeException('Missing required environment variable: OTEL_RECEIVER_GRPC_ENDPOINT'); + } + + if ($metricsEndpoint === false) { + throw new \RuntimeException('Missing required environment variable: OTEL_COLLECTOR_METRICS_ENDPOINT'); + } + + $this->httpEndpoint = $httpEndpoint; + $this->grpcEndpoint = $grpcEndpoint; $this->collectorMetrics = new CollectorMetrics( $this->httpClient, @@ -83,7 +97,11 @@ public function collectorMetrics() : CollectorMetrics */ public function createTelemetry(TransportConfiguration $config, ?Resource $resource = null) : Telemetry { - $resource ??= Resource::empty(); + $resource ??= resource([ + 'service.name' => 'flow-php-otlp-bridge-tests', + 'service.namespace' => 'flow-php', + 'deployment.environment' => 'test', + ]); $clock = new SystemClock(); $contextStorage = new MemoryContextStorage(); $batchSize = 1; diff --git a/src/bridge/telemetry/otlp/tests/Flow/Bridge/Telemetry/OTLP/Tests/Integration/CollectorMetrics.php b/src/bridge/telemetry/otlp/tests/Flow/Bridge/Telemetry/OTLP/Tests/Integration/CollectorMetrics.php index d24554ad59..89e7f40dc3 100644 --- a/src/bridge/telemetry/otlp/tests/Flow/Bridge/Telemetry/OTLP/Tests/Integration/CollectorMetrics.php +++ b/src/bridge/telemetry/otlp/tests/Flow/Bridge/Telemetry/OTLP/Tests/Integration/CollectorMetrics.php @@ -12,7 +12,7 @@ * Helper class to query OTEL Collector's Prometheus metrics endpoint. * * Used to verify that telemetry data flows through the collector. - * Queries `otelcol_exporter_sent_*` metrics which indicate data was + * Queries `otelcol_exporter_sent_*_total` metrics which indicate data was * successfully exported (more reliable than receiver metrics in v0.115+). * The collector exposes internal metrics at port 8888. */ @@ -27,17 +27,17 @@ public function __construct( public function getAcceptedLogRecords() : int { - return $this->getMetricValue('otelcol_exporter_sent_log_records'); + return $this->getMetricValue('otelcol_exporter_sent_log_records_total'); } public function getAcceptedMetricPoints() : int { - return $this->getMetricValue('otelcol_exporter_sent_metric_points'); + return $this->getMetricValue('otelcol_exporter_sent_metric_points_total'); } public function getAcceptedSpans() : int { - return $this->getMetricValue('otelcol_exporter_sent_spans'); + return $this->getMetricValue('otelcol_exporter_sent_spans_total'); } /** @@ -49,7 +49,7 @@ public function getAcceptedSpans() : int */ public function waitForLogRecords(int $threshold, int $timeoutMs = 500, int $pollIntervalMs = 10) : int { - return $this->waitForMetric('otelcol_exporter_sent_log_records', $threshold, $timeoutMs, $pollIntervalMs); + return $this->waitForMetric('otelcol_exporter_sent_log_records_total', $threshold, $timeoutMs, $pollIntervalMs); } /** @@ -61,7 +61,7 @@ public function waitForLogRecords(int $threshold, int $timeoutMs = 500, int $pol */ public function waitForMetricPoints(int $threshold, int $timeoutMs = 500, int $pollIntervalMs = 10) : int { - return $this->waitForMetric('otelcol_exporter_sent_metric_points', $threshold, $timeoutMs, $pollIntervalMs); + return $this->waitForMetric('otelcol_exporter_sent_metric_points_total', $threshold, $timeoutMs, $pollIntervalMs); } /** @@ -73,7 +73,7 @@ public function waitForMetricPoints(int $threshold, int $timeoutMs = 500, int $p */ public function waitForSpans(int $threshold, int $timeoutMs = 500, int $pollIntervalMs = 10) : int { - return $this->waitForMetric('otelcol_exporter_sent_spans', $threshold, $timeoutMs, $pollIntervalMs); + return $this->waitForMetric('otelcol_exporter_sent_spans_total', $threshold, $timeoutMs, $pollIntervalMs); } private function getMetricValue(string $metricName) : int diff --git a/src/bridge/telemetry/otlp/tests/Flow/Bridge/Telemetry/OTLP/Tests/Integration/LogExportIntegrationTest.php b/src/bridge/telemetry/otlp/tests/Flow/Bridge/Telemetry/OTLP/Tests/Integration/LogExportIntegrationTest.php index 2c34d87052..48ff9b443e 100644 --- a/src/bridge/telemetry/otlp/tests/Flow/Bridge/Telemetry/OTLP/Tests/Integration/LogExportIntegrationTest.php +++ b/src/bridge/telemetry/otlp/tests/Flow/Bridge/Telemetry/OTLP/Tests/Integration/LogExportIntegrationTest.php @@ -40,7 +40,7 @@ public function test_exports_log_with_resource_attributes(TransportConfiguration $logsBefore = $this->otelContext->collectorMetrics()->getAcceptedLogRecords(); $telemetry = $this->otelContext->createTelemetry($config, Resource::create([ - 'service.name' => 'log-test-service', + 'service.name' => 'flow-php-otlp-bridge-tests', 'service.version' => '3.0.0', 'deployment.environment' => 'integration-test', ])); diff --git a/src/bridge/telemetry/otlp/tests/Flow/Bridge/Telemetry/OTLP/Tests/Integration/MetricExportIntegrationTest.php b/src/bridge/telemetry/otlp/tests/Flow/Bridge/Telemetry/OTLP/Tests/Integration/MetricExportIntegrationTest.php index 7b3ff72271..29e2daef2b 100644 --- a/src/bridge/telemetry/otlp/tests/Flow/Bridge/Telemetry/OTLP/Tests/Integration/MetricExportIntegrationTest.php +++ b/src/bridge/telemetry/otlp/tests/Flow/Bridge/Telemetry/OTLP/Tests/Integration/MetricExportIntegrationTest.php @@ -118,7 +118,7 @@ public function test_exports_metric_with_resource_attributes(TransportConfigurat $metricsBefore = $this->otelContext->collectorMetrics()->getAcceptedMetricPoints(); $telemetry = $this->otelContext->createTelemetry($config, Resource::create([ - 'service.name' => 'metric-test-service', + 'service.name' => 'flow-php-otlp-bridge-tests', 'service.version' => '2.0.0', ])); $meter = $telemetry->meter('test-meter'); diff --git a/src/bridge/telemetry/otlp/tests/Flow/Bridge/Telemetry/OTLP/Tests/Integration/SpanExportIntegrationTest.php b/src/bridge/telemetry/otlp/tests/Flow/Bridge/Telemetry/OTLP/Tests/Integration/SpanExportIntegrationTest.php index 335fc44c33..e59a284c21 100644 --- a/src/bridge/telemetry/otlp/tests/Flow/Bridge/Telemetry/OTLP/Tests/Integration/SpanExportIntegrationTest.php +++ b/src/bridge/telemetry/otlp/tests/Flow/Bridge/Telemetry/OTLP/Tests/Integration/SpanExportIntegrationTest.php @@ -154,7 +154,7 @@ public function test_exports_span_with_resource_attributes(TransportConfiguratio $spansBefore = $this->otelContext->collectorMetrics()->getAcceptedSpans(); $telemetry = $this->otelContext->createTelemetry($config, Resource::create([ - 'service.name' => 'test-service', + 'service.name' => 'flow-php-otlp-bridge-tests', 'service.version' => '1.2.3', 'deployment.environment' => 'testing', ])); diff --git a/src/core/etl/src/Flow/ETL/Cache/Implementation/TraceableCache.php b/src/core/etl/src/Flow/ETL/Cache/Implementation/TraceableCache.php new file mode 100644 index 0000000000..0731701121 --- /dev/null +++ b/src/core/etl/src/Flow/ETL/Cache/Implementation/TraceableCache.php @@ -0,0 +1,140 @@ +tracer = $telemetry->tracer('flow_php_dataframe', PackageVersion::get('flow-php/etl')); + $meter = $telemetry->meter('flow_php_dataframe', PackageVersion::get('flow-php/etl')); + $this->hitCounter = $meter->createCounter('cache_hits', 'operations', 'Number of cache hits'); + $this->missCounter = $meter->createCounter('cache_misses', 'operations', 'Number of cache misses'); + } + + public function clear() : void + { + $span = $this->tracer->span( + 'Cache Clear', + SpanKind::CLIENT, + [ + 'cache.operation' => 'clear', + ] + ); + + try { + $this->cache->clear(); + $span->setStatus(SpanStatus::ok()); + } catch (\Throwable $exception) { + $span->recordException($exception, new \DateTimeImmutable()); + $span->setStatus(SpanStatus::error($exception->getMessage())); + + throw $exception; + } finally { + $this->tracer->complete($span); + } + } + + public function delete(string $key) : void + { + $span = $this->tracer->span( + "Cache Delete {$key}", + SpanKind::CLIENT, + [ + 'cache.operation' => 'delete', + 'cache.key' => $key, + ] + ); + + try { + $this->cache->delete($key); + $span->setStatus(SpanStatus::ok()); + } catch (\Throwable $exception) { + $span->recordException($exception, new \DateTimeImmutable()); + $span->setStatus(SpanStatus::error($exception->getMessage())); + + throw $exception; + } finally { + $this->tracer->complete($span); + } + } + + public function get(string $key) : Row|Rows|CacheIndex + { + $attributes = ['dataframe.name' => $this->dataframeName]; + + try { + $result = $this->cache->get($key); + $this->hitCounter->add(1, $attributes); + + return $result; + } catch (KeyNotInCacheException $exception) { + $this->missCounter->add(1, $attributes); + + throw $exception; + } + } + + public function has(string $key) : bool + { + $attributes = ['dataframe.name' => $this->dataframeName]; + $exists = $this->cache->has($key); + + if ($exists) { + $this->hitCounter->add(1, $attributes); + } else { + $this->missCounter->add(1, $attributes); + } + + return $exists; + } + + public function set(string $key, Row|Rows|CacheIndex $value) : void + { + $valueType = match (true) { + $value instanceof Row => 'Row', + $value instanceof Rows => 'Rows', + $value instanceof CacheIndex => 'CacheIndex', + }; + + $span = $this->tracer->span( + "Cache Set {$key}", + SpanKind::CLIENT, + [ + 'cache.operation' => 'set', + 'cache.key' => $key, + 'cache.value_type' => $valueType, + ] + ); + + try { + $this->cache->set($key, $value); + $span->setStatus(SpanStatus::ok()); + } catch (\Throwable $exception) { + $span->recordException($exception, new \DateTimeImmutable()); + $span->setStatus(SpanStatus::error($exception->getMessage())); + + throw $exception; + } finally { + $this->tracer->complete($span); + } + } +} diff --git a/src/core/etl/src/Flow/ETL/Config.php b/src/core/etl/src/Flow/ETL/Config.php index 29e5dc3cd6..eb88c1387e 100644 --- a/src/core/etl/src/Flow/ETL/Config.php +++ b/src/core/etl/src/Flow/ETL/Config.php @@ -33,6 +33,7 @@ public function __construct( private string $id, + private string $name, private string $version, private Serializer $serializer, private ClockInterface $clock, @@ -88,6 +89,11 @@ public function id() : string return $this->id; } + public function name() : string + { + return $this->name; + } + public function optimizer() : Optimizer { return $this->optimizer; diff --git a/src/core/etl/src/Flow/ETL/Config/Cache/CacheConfigBuilder.php b/src/core/etl/src/Flow/ETL/Config/Cache/CacheConfigBuilder.php index 0aab7c46a1..d2ef5ef030 100644 --- a/src/core/etl/src/Flow/ETL/Config/Cache/CacheConfigBuilder.php +++ b/src/core/etl/src/Flow/ETL/Config/Cache/CacheConfigBuilder.php @@ -6,7 +6,8 @@ use function Flow\Filesystem\DSL\{path_real, protocol}; use Flow\ETL\Cache; -use Flow\ETL\Cache\Implementation\FilesystemCache; +use Flow\ETL\Cache\Implementation\{FilesystemCache, TraceableCache}; +use Flow\ETL\Config\Telemetry\TelemetryConfig; use Flow\ETL\Exception\InvalidArgumentException; use Flow\Filesystem\FilesystemTable; use Flow\Serializer\Serializer; @@ -20,17 +21,23 @@ final class CacheConfigBuilder */ private int $externalSortBucketsCount = 100; - public function build(FilesystemTable $fstab, Serializer $serializer) : CacheConfig + public function build(FilesystemTable $fstab, Serializer $serializer, ?TelemetryConfig $telemetryConfig = null, string $dataframeName = 'flow_dataframe') : CacheConfig { $cachePath = \getenv(CacheConfig::CACHE_DIR_ENV) ?: ''; $cachePath = path_real($cachePath !== '' ? $cachePath : \sys_get_temp_dir() . '/flow_php/cache'); + $cache = $this->cache ?? new FilesystemCache( + $fstab->for(protocol('file')), + $serializer, + cacheDir: $cachePath + ); + + if ($telemetryConfig !== null && $telemetryConfig->options->traceCache) { + $cache = new TraceableCache($cache, $telemetryConfig->telemetry, $dataframeName); + } + return new CacheConfig( - cache: $this->cache ?? new FilesystemCache( - $fstab->for(protocol('file')), - $serializer, - cacheDir: $cachePath - ), + cache: $cache, localFilesystemCacheDir: $cachePath, externalSortBucketsCount: $this->externalSortBucketsCount ); diff --git a/src/core/etl/src/Flow/ETL/Config/ConfigBuilder.php b/src/core/etl/src/Flow/ETL/Config/ConfigBuilder.php index ba67e7fa63..ff7fbf75e3 100644 --- a/src/core/etl/src/Flow/ETL/Config/ConfigBuilder.php +++ b/src/core/etl/src/Flow/ETL/Config/ConfigBuilder.php @@ -34,6 +34,8 @@ final class ConfigBuilder private ?string $id; + private ?string $name; + private ?Optimizer $optimizer; private bool $putInputIntoRows; @@ -49,6 +51,7 @@ final class ConfigBuilder public function __construct() { $this->id = null; + $this->name = null; $this->serializer = null; $this->fstab = null; $this->putInputIntoRows = false; @@ -71,28 +74,30 @@ public function analyze(Analyze $analyze) : self public function build(EntryFactory $entryFactory = new EntryFactory()) : Config { - $this->id ??= 'flow_php' . $this->randomValueGenerator->string(32); + $this->id ??= 'flow-php-' . $this->randomValueGenerator->string(32); $this->serializer ??= new Base64Serializer(new NativePHPSerializer()); - $this->clock ??= SystemClock::utc(); $this->optimizer ??= new Optimizer( new LimitOptimization(), new BatchSizeOptimization(batchSize: 1000) ); + $dataframeName = $this->name ?? 'flow_dataframe'; + return new Config( $this->id, + $dataframeName, $this->version, $this->serializer, - $this->clock, + $this->getClock(), $this->fstab(), new FilesystemStreams($this->fstab()), $this->optimizer, $this->putInputIntoRows, $entryFactory, - $this->cache->build($this->fstab(), $this->serializer), + $this->cache->build($this->fstab(), $this->serializer, $this->telemetryConfig, $dataframeName), $this->sort->build(), $this->analyze, - $this->telemetryConfig ?? TelemetryConfig::default($this->clock), + $this->telemetryConfig ?? TelemetryConfig::default($this->getClock()), ); } @@ -141,6 +146,13 @@ public function mount(Filesystem $filesystem) : self return $this; } + public function name(string $name) : self + { + $this->name = $name; + + return $this; + } + public function optimizer(Optimizer $optimizer) : self { $this->optimizer = $optimizer; @@ -193,7 +205,7 @@ public function withTelemetry(Telemetry $telemetry, TelemetryOptions $options = $this->fstab->withTelemetry( filesystem_telemetry_config( $telemetry, - $this->clock ?? SystemClock::utc(), + $this->getClock(), $options->filesystem ) ); @@ -212,7 +224,7 @@ private function fstab() : FilesystemTable if ($filesystemOptions !== null && ($filesystemOptions->traceStreams || $filesystemOptions->collectMetrics)) { $this->fstab->withTelemetry(filesystem_telemetry_config( $this->telemetry()->telemetry, - $this->clock ?? SystemClock::utc(), + $this->getClock(), $filesystemOptions )); } @@ -221,10 +233,20 @@ private function fstab() : FilesystemTable return $this->fstab; } + private function getClock() : ClockInterface + { + if ($this->clock === null) { + $this->clock = SystemClock::utc(); + } + + return $this->clock; + + } + private function telemetry() : TelemetryConfig { if ($this->telemetryConfig === null) { - $this->telemetryConfig = TelemetryConfig::default($this->clock ?? SystemClock::utc()); + $this->telemetryConfig = TelemetryConfig::default($this->getClock()); } return $this->telemetryConfig; diff --git a/src/core/etl/src/Flow/ETL/Config/Telemetry/TelemetryAttributes.php b/src/core/etl/src/Flow/ETL/Config/Telemetry/TelemetryAttributes.php index 41186f30d4..0108c6f35d 100644 --- a/src/core/etl/src/Flow/ETL/Config/Telemetry/TelemetryAttributes.php +++ b/src/core/etl/src/Flow/ETL/Config/Telemetry/TelemetryAttributes.php @@ -6,6 +6,8 @@ final class TelemetryAttributes { + public const string ATTR_DATAFRAME_NAME = 'dataframe.name'; + public const string ATTR_LOADER_DESTINATION_URI = 'destination.uri'; public const string ATTR_LOADING_ROWS = 'loading.rows'; diff --git a/src/core/etl/src/Flow/ETL/Config/Telemetry/TelemetryContext.php b/src/core/etl/src/Flow/ETL/Config/Telemetry/TelemetryContext.php index 6690f78d22..81c354a255 100644 --- a/src/core/etl/src/Flow/ETL/Config/Telemetry/TelemetryContext.php +++ b/src/core/etl/src/Flow/ETL/Config/Telemetry/TelemetryContext.php @@ -4,7 +4,7 @@ namespace Flow\ETL\Config\Telemetry; -use Flow\ETL\{DataFrame, +use Flow\ETL\{ Dataset\Memory\Consumption, Dataset\Statistics\HighResolutionTime, FlowContext, @@ -13,7 +13,7 @@ Rows, Transformer}; use Flow\Filesystem\Filesystem; -use Flow\Telemetry\Attributes; +use Flow\Telemetry\{Attributes, ObjectExtractor}; use Flow\Telemetry\Logger\Logger; use Flow\Telemetry\Meter\Instrument\{Counter, Throughput}; use Flow\Telemetry\Meter\Meter; @@ -24,6 +24,8 @@ */ final class TelemetryContext { + private ?FlowContext $context = null; + private ?Counter $counterProcessedRows = null; private ?HighResolutionTime $dataFrameExecutionTime = null; @@ -55,8 +57,9 @@ public function dataFrameBatchProcessed(Rows $rows, FlowContext $context) : void $this->memory->capture(); if ($this->options->collectMetrics) { - $this->counterProcessedRows?->add($rows->count()); - $this->throughputRows?->add($rows->count()); + $attributes = ['dataframe.name' => $context->config->name()]; + $this->counterProcessedRows?->add($rows->count(), $attributes); + $this->throughputRows?->add($rows->count(), $attributes); } } @@ -73,6 +76,7 @@ public function dataFrameCompleted(FlowContext $context, array $attributes = []) 'Data frame processing completed', [ 'dataframe_id' => $context->config->id(), + 'dataframe_name' => $context->config->name(), 'total_rows_processed' => $this->totalRowsProcessed, 'memory_min_mb' => $this->memory->min()->inMb(), 'memory_max_mb' => $this->memory->max()->inMb(), @@ -93,6 +97,7 @@ public function dataFrameCompleted(FlowContext $context, array $attributes = []) $attributes, [ 'dataframe.id' => $context->config->id(), + 'dataframe.name' => $context->config->name(), 'rows.total' => $this->totalRowsProcessed, 'rows.throughput.per_second' => $throughput, 'memory.min.mb' => $this->memory->min()->inMb(), @@ -112,6 +117,62 @@ public function dataFrameCompleted(FlowContext $context, array $attributes = []) $this->throughputRows = null; } + $this->context = null; + $this->dataFrameExecutionTime = null; + $this->totalRowsProcessed = 0; + $this->dataFrameSpan = null; + $this->memory = new Consumption(); + } + + /** + * @param TAttributeValueMap $attributes + */ + public function dataFrameFailed(FlowContext $context, \Throwable $exception, array $attributes = []) : void + { + if ($this->dataFrameSpan === null) { + return; + } + + $this->logger->error('Data frame processing failed', [ + 'exception' => $exception->getMessage(), + 'dataframe_id' => $context->config->id(), + 'dataframe_name' => $context->config->name(), + ]); + + $throughput = 0.0; + + if ($this->dataFrameExecutionTime !== null) { + $durationSeconds = HighResolutionTime::now()->diff($this->dataFrameExecutionTime)->toSeconds(); + $throughput = $durationSeconds > 0 ? \round($this->totalRowsProcessed / $durationSeconds, 2) : 0.0; + } + + $this->tracer->complete( + $this->dataFrameSpan + ->setAttributes(\array_merge( + $attributes, + [ + 'dataframe.id' => $context->config->id(), + 'dataframe.name' => $context->config->name(), + 'rows.total' => $this->totalRowsProcessed, + 'rows.throughput.per_second' => $throughput, + 'memory.min.mb' => $this->memory->min()->inMb(), + 'memory.max.mb' => $this->memory->max()->inMb(), + ] + )) + ->setStatus(SpanStatus::error($exception->getMessage())) + ); + + if ($this->counterProcessedRows !== null) { + $this->meter->complete($this->counterProcessedRows); + $this->counterProcessedRows = null; + } + + if ($this->throughputRows !== null) { + $this->meter->complete($this->throughputRows); + $this->throughputRows = null; + } + + $this->context = null; $this->dataFrameExecutionTime = null; $this->totalRowsProcessed = 0; $this->dataFrameSpan = null; @@ -120,12 +181,21 @@ public function dataFrameCompleted(FlowContext $context, array $attributes = []) public function dataFrameStarted(FlowContext $context) : void { - $this->dataFrameSpan = $this->tracer->span(DataFrame::class); + $this->context = $context; + $this->dataFrameSpan = $this->tracer->span( + 'DataFrame ' . $context->config->name(), + SpanKind::INTERNAL, + Attributes::create([ + 'dataframe.id' => $context->config->id(), + 'dataframe.name' => $context->config->name(), + ]) + ); $this->logger()->debug( 'Data frame processing started', [ 'dataframe_id' => $context->config->id(), + 'dataframe_name' => $context->config->name(), 'cache' => $context->cache()::class, 'serializer' => $context->config->serializer()::class, 'optimizers' => \array_map(static fn (Optimization $optimization) => $optimization::class, $context->config->optimizer()->optimizations()), @@ -140,8 +210,16 @@ public function dataFrameStarted(FlowContext $context) : void ); if ($this->options->collectMetrics) { - $this->counterProcessedRows = $this->meter->createCounter('rows.processed.total', 'Rows Processed'); - $this->throughputRows = $this->meter->createThroughput('rows.processed.throughput', 'Rows Processed'); + $this->counterProcessedRows = $this->meter->createCounter( + 'rows_processed', + 'rows', + 'Total number of rows processed by the DataFrame' + ); + $this->throughputRows = $this->meter->createThroughput( + 'rows_throughput', + 'rows/s', + 'Rows processed per second' + ); } $this->dataFrameExecutionTime = HighResolutionTime::now(); @@ -194,9 +272,12 @@ public function loadingStarted(Loader $loader, array $attributes = []) : void } $this->loadingSpan = $this->tracer->span( - $loader::class, + ObjectExtractor::shortName($loader), SpanKind::INTERNAL, - Attributes::create($attributes), + Attributes::create(\array_merge([ + 'loader.class' => $loader::class, + 'dataframe.name' => $this->context?->config->name(), + ], $attributes)), parentContext: $this->dataFrameSpan?->context() ); } @@ -251,9 +332,12 @@ public function transformationStarted(Transformer $transformer, array $attribute } $this->transformationSpan = $this->tracer->span( - $transformer::class, + ObjectExtractor::shortName($transformer), SpanKind::INTERNAL, - Attributes::create($attributes), + Attributes::create(\array_merge([ + 'transformer.class' => $transformer::class, + 'dataframe.name' => $this->context?->config->name(), + ], $attributes)), parentContext: $this->dataFrameSpan?->context() ); } diff --git a/src/core/etl/src/Flow/ETL/Config/Telemetry/TelemetryOptions.php b/src/core/etl/src/Flow/ETL/Config/Telemetry/TelemetryOptions.php index 5143179dcd..6d8e1c99c5 100644 --- a/src/core/etl/src/Flow/ETL/Config/Telemetry/TelemetryOptions.php +++ b/src/core/etl/src/Flow/ETL/Config/Telemetry/TelemetryOptions.php @@ -11,6 +11,7 @@ public function __construct( public bool $traceLoading = false, public bool $traceTransformations = false, + public bool $traceCache = false, public bool $collectMetrics = false, public FilesystemTelemetryOptions $filesystem = new FilesystemTelemetryOptions(), ) { @@ -21,6 +22,7 @@ public function collectMetrics(bool $collect = true) : self return new self( traceLoading: $this->traceLoading, traceTransformations: $this->traceTransformations, + traceCache: $this->traceCache, collectMetrics: $collect, filesystem: $this->filesystem, ); @@ -31,16 +33,29 @@ public function filesystem(FilesystemTelemetryOptions $options) : self return new self( traceLoading: $this->traceLoading, traceTransformations: $this->traceTransformations, + traceCache: $this->traceCache, collectMetrics: $this->collectMetrics, filesystem: $options, ); } + public function traceCache(bool $trace = true) : self + { + return new self( + traceLoading: $this->traceLoading, + traceTransformations: $this->traceTransformations, + traceCache: $trace, + collectMetrics: $this->collectMetrics, + filesystem: $this->filesystem, + ); + } + public function traceLoading(bool $trace = true) : self { return new self( traceLoading: $trace, traceTransformations: $this->traceTransformations, + traceCache: $this->traceCache, collectMetrics: $this->collectMetrics, filesystem: $this->filesystem, ); @@ -51,6 +66,7 @@ public function traceTransformations(bool $trace = true) : self return new self( traceLoading: $this->traceLoading, traceTransformations: $trace, + traceCache: $this->traceCache, collectMetrics: $this->collectMetrics, filesystem: $this->filesystem, ); diff --git a/src/core/etl/src/Flow/ETL/DSL/functions.php b/src/core/etl/src/Flow/ETL/DSL/functions.php index 17b13bc281..59fa5f34b8 100644 --- a/src/core/etl/src/Flow/ETL/DSL/functions.php +++ b/src/core/etl/src/Flow/ETL/DSL/functions.php @@ -268,12 +268,14 @@ function data_frame(Config|ConfigBuilder|null $config = null) : Flow function telemetry_options( bool $trace_loading = false, bool $trace_transformations = false, + bool $trace_cache = false, bool $collect_metrics = false, ?FilesystemTelemetryOptions $filesystem = null, ) : TelemetryOptions { return new TelemetryOptions( $trace_loading, $trace_transformations, + $trace_cache, $collect_metrics, $filesystem ?? new FilesystemTelemetryOptions() ); diff --git a/src/core/etl/src/Flow/ETL/DataFrame.php b/src/core/etl/src/Flow/ETL/DataFrame.php index 60a3f7fb79..5a7fa7b76d 100644 --- a/src/core/etl/src/Flow/ETL/DataFrame.php +++ b/src/core/etl/src/Flow/ETL/DataFrame.php @@ -222,8 +222,15 @@ public function count() : int { $total = 0; - foreach ($this->pipeline->process($this->context) as $rows) { - $total += $rows->count(); + try { + foreach ($this->pipeline->process($this->context) as $rows) { + $total += $rows->count(); + } + $this->context->telemetry()->dataFrameCompleted($this->context); + } catch (\Throwable $e) { + $this->context->telemetry()->dataFrameFailed($this->context, $e); + + throw $e; } return $total; @@ -255,8 +262,15 @@ public function display(int $limit = 20, int|bool $truncate = 20, Formatter $for $output = ''; - foreach ($this->pipeline->process($this->context) as $rows) { - $output .= $formatter->format($rows, $truncate); + try { + foreach ($this->pipeline->process($this->context) as $rows) { + $output .= $formatter->format($rows, $truncate); + } + $this->context->telemetry()->dataFrameCompleted($this->context); + } catch (\Throwable $e) { + $this->context->telemetry()->dataFrameFailed($this->context, $e); + + throw $e; } return $output; @@ -329,8 +343,15 @@ public function fetch(?int $limit = null) : Rows $rows = new Rows(); - foreach ($this->pipeline->process($this->context) as $nextRows) { - $rows = $rows->merge($nextRows); + try { + foreach ($this->pipeline->process($this->context) as $nextRows) { + $rows = $rows->merge($nextRows); + } + $this->context->telemetry()->dataFrameCompleted($this->context); + } catch (\Throwable $e) { + $this->context->telemetry()->dataFrameFailed($this->context, $e); + + throw $e; } return $rows; @@ -410,7 +431,16 @@ public function forEach(?callable $callback = null) : void */ public function get() : \Generator { - return $this->pipeline->process($this->context); + try { + foreach ($this->pipeline->process($this->context) as $rows) { + yield $rows; + } + $this->context->telemetry()->dataFrameCompleted($this->context); + } catch (\Throwable $e) { + $this->context->telemetry()->dataFrameFailed($this->context, $e); + + throw $e; + } } /** @@ -422,8 +452,15 @@ public function get() : \Generator */ public function getAsArray() : \Generator { - foreach ($this->pipeline->process($this->context) as $rows) { - yield $rows->toArray(); + try { + foreach ($this->pipeline->process($this->context) as $rows) { + yield $rows->toArray(); + } + $this->context->telemetry()->dataFrameCompleted($this->context); + } catch (\Throwable $e) { + $this->context->telemetry()->dataFrameFailed($this->context, $e); + + throw $e; } } @@ -436,10 +473,17 @@ public function getAsArray() : \Generator */ public function getEach() : \Generator { - foreach ($this->pipeline->process($this->context) as $rows) { - foreach ($rows as $row) { - yield $row; + try { + foreach ($this->pipeline->process($this->context) as $rows) { + foreach ($rows as $row) { + yield $row; + } } + $this->context->telemetry()->dataFrameCompleted($this->context); + } catch (\Throwable $e) { + $this->context->telemetry()->dataFrameFailed($this->context, $e); + + throw $e; } } @@ -452,10 +496,17 @@ public function getEach() : \Generator */ public function getEachAsArray() : \Generator { - foreach ($this->pipeline->process($this->context) as $rows) { - foreach ($rows as $row) { - yield $row->toArray(); + try { + foreach ($this->pipeline->process($this->context) as $rows) { + foreach ($rows as $row) { + yield $row->toArray(); + } } + $this->context->telemetry()->dataFrameCompleted($this->context); + } catch (\Throwable $e) { + $this->context->telemetry()->dataFrameFailed($this->context, $e); + + throw $e; } } @@ -827,16 +878,22 @@ public function saveMode(SaveMode $mode) : self /** * @trigger - */ - /** + * * @return Schema */ public function schema() : Schema { $schema = new Schema(); - foreach ($this->pipeline->process($this->context) as $rows) { - $schema = $schema->merge($rows->schema()); + try { + foreach ($this->pipeline->process($this->context) as $rows) { + $schema = $schema->merge($rows->schema()); + } + $this->context->telemetry()->dataFrameCompleted($this->context); + } catch (\Throwable $e) { + $this->context->telemetry()->dataFrameFailed($this->context, $e); + + throw $e; } return $schema; diff --git a/src/core/etl/src/Flow/ETL/Execution/StatisticsCollector.php b/src/core/etl/src/Flow/ETL/Execution/StatisticsCollector.php index 526c583355..5c8843085f 100644 --- a/src/core/etl/src/Flow/ETL/Execution/StatisticsCollector.php +++ b/src/core/etl/src/Flow/ETL/Execution/StatisticsCollector.php @@ -80,10 +80,10 @@ public function capture(Rows $rows) : void public function end(?\Throwable $exception = null) : void { if ($exception !== null) { - $this->context->telemetry()->logger()->error('Data frame processing failed', ['exception' => $exception->getMessage()]); + $this->context->telemetry()->dataFrameFailed($this->context, $exception); + } else { + $this->context->telemetry()->dataFrameCompleted($this->context); } - - $this->context->telemetry()->dataFrameCompleted($this->context); } /** diff --git a/src/core/etl/src/Flow/ETL/FlowContext.php b/src/core/etl/src/Flow/ETL/FlowContext.php index f96e3e9d19..b279165f60 100644 --- a/src/core/etl/src/Flow/ETL/FlowContext.php +++ b/src/core/etl/src/Flow/ETL/FlowContext.php @@ -69,9 +69,9 @@ public function streams() : FilesystemStreams public function telemetry() : TelemetryContext { return $this->telemetryContext ??= new TelemetryContext( - $this->config->telemetry->telemetry->logger('flow-php', $this->config->version()), - $this->config->telemetry->telemetry->tracer('flow-php', $this->config->version()), - $this->config->telemetry->telemetry->meter('flow-php', $this->config->version()), + $this->config->telemetry->telemetry->logger('flow_php_dataframe', $this->config->version()), + $this->config->telemetry->telemetry->tracer('flow_php_dataframe', $this->config->version()), + $this->config->telemetry->telemetry->meter('flow_php_dataframe', $this->config->version()), $this->config->telemetry->options, ); } diff --git a/src/core/etl/tests/Flow/ETL/Tests/Integration/Cache/TraceableCacheTestSuite.php b/src/core/etl/tests/Flow/ETL/Tests/Integration/Cache/TraceableCacheTestSuite.php new file mode 100644 index 0000000000..aacb2a2816 --- /dev/null +++ b/src/core/etl/tests/Flow/ETL/Tests/Integration/Cache/TraceableCacheTestSuite.php @@ -0,0 +1,50 @@ +telemetry = new Telemetry( + Resource::create(['service.name' => 'test-service']), + new TracerProvider($spanProcessor, $clock, $contextStorage), + new MeterProvider($metricProcessor, $clock), + new LoggerProvider($logProcessor, $clock, $contextStorage), + ); + + $this->innerCache = new InMemoryCache(); + + parent::setUp(); + } + + protected function cache() : Cache + { + return new TraceableCache($this->innerCache, $this->telemetry); + } +} diff --git a/src/core/etl/tests/Flow/ETL/Tests/Integration/DataFrame/CacheTest.php b/src/core/etl/tests/Flow/ETL/Tests/Integration/DataFrame/CacheTest.php index 585275d840..66d0ce8d2a 100644 --- a/src/core/etl/tests/Flow/ETL/Tests/Integration/DataFrame/CacheTest.php +++ b/src/core/etl/tests/Flow/ETL/Tests/Integration/DataFrame/CacheTest.php @@ -4,12 +4,20 @@ namespace Flow\ETL\Tests\Integration\DataFrame; -use function Flow\ETL\DSL\{config_builder, df, from_array, from_cache}; +use function Flow\ETL\DSL\{config_builder, df, from_array, from_cache, telemetry_options}; use Flow\ETL\Cache\CacheIndex; use Flow\ETL\Cache\Implementation\InMemoryCache; use Flow\ETL\{Extractor, FlowContext, Rows}; use Flow\ETL\Tests\Double\FakeExtractor; use Flow\ETL\Tests\FlowIntegrationTestCase; +use Flow\Telemetry\Context\MemoryContextStorage; +use Flow\Telemetry\Logger\LoggerProvider; +use Flow\Telemetry\Meter\MeterProvider; +use Flow\Telemetry\Provider\Clock\SystemClock; +use Flow\Telemetry\Provider\Memory\{MemoryLogProcessor, MemoryMetricProcessor, MemorySpanProcessor}; +use Flow\Telemetry\Provider\Void\{VoidLogExporter, VoidMetricExporter, VoidSpanExporter}; +use Flow\Telemetry\{Resource, Telemetry}; +use Flow\Telemetry\Tracer\TracerProvider; final class CacheTest extends FlowIntegrationTestCase { @@ -85,6 +93,45 @@ public function test_cache_with_previously_set_batch_size() : void } } + public function test_cache_with_telemetry_collects_spans_and_metrics() : void + { + $clock = new SystemClock(); + $contextStorage = new MemoryContextStorage(); + + $spanProcessor = new MemorySpanProcessor(new VoidSpanExporter()); + $metricProcessor = new MemoryMetricProcessor(new VoidMetricExporter()); + $logProcessor = new MemoryLogProcessor(new VoidLogExporter()); + + $telemetry = new Telemetry( + Resource::create(['service.name' => 'test-service']), + new TracerProvider($spanProcessor, $clock, $contextStorage), + new MeterProvider($metricProcessor, $clock), + new LoggerProvider($logProcessor, $clock, $contextStorage), + ); + + df(config_builder()->withTelemetry($telemetry, telemetry_options(trace_cache: true))) + ->read( + from_array([ + ['id' => 1], + ['id' => 2], + ]) + ) + ->cache('telemetry_test') + ->run(); + + $telemetry->flush(); + + $spans = $spanProcessor->endedSpans(); + $setSpans = \array_filter($spans, static fn ($span) => \str_starts_with((string) $span->name(), 'Cache Set ')); + + self::assertNotEmpty($setSpans, 'Expected Cache Set spans to be recorded'); + + $hitMetrics = $metricProcessor->metricsWithName('cache_hits'); + $missMetrics = $metricProcessor->metricsWithName('cache_misses'); + + self::assertNotEmpty($missMetrics, 'Expected cache miss metrics to be recorded (from has() checks)'); + } + public function test_cache_without_previously_set_batch_size() : void { $cache = new InMemoryCache(); diff --git a/src/core/etl/tests/Flow/ETL/Tests/Integration/DataFrame/TelemetryTest.php b/src/core/etl/tests/Flow/ETL/Tests/Integration/DataFrame/TelemetryTest.php index 164715002f..cda5056dc3 100644 --- a/src/core/etl/tests/Flow/ETL/Tests/Integration/DataFrame/TelemetryTest.php +++ b/src/core/etl/tests/Flow/ETL/Tests/Integration/DataFrame/TelemetryTest.php @@ -5,7 +5,6 @@ namespace Flow\ETL\Tests\Integration\DataFrame; use function Flow\ETL\DSL\{config_builder, df, from_array, ref, telemetry_options, to_array}; -use Flow\ETL\DataFrame; use Flow\ETL\Tests\FlowTestCase; use Flow\Telemetry\Context\MemoryContextStorage; use Flow\Telemetry\Logger\{LoggerProvider, Severity}; @@ -47,7 +46,7 @@ public function test_dataframe_collects_metrics_when_enabled() : void $telemetry->flush(); - $counterMetrics = $metricProcessor->metricsWithName('rows.processed.total'); + $counterMetrics = $metricProcessor->metricsWithName('rows_processed'); self::assertNotEmpty($counterMetrics, 'Counter metrics should be collected'); self::assertSame(3, $counterMetrics[0]->value); } @@ -86,9 +85,9 @@ public function test_dataframe_loading_traced_when_enabled() : void $loadingSpans = []; foreach ($endedSpans as $span) { - if ($span->name() === DataFrame::class) { + if ($span->name() === 'DataFrame flow_dataframe') { $dataFrameSpan = $span; - } elseif (\str_contains($span->name(), 'Loader')) { + } elseif (\str_ends_with($span->name(), 'Loader')) { $loadingSpans[] = $span; } } @@ -99,6 +98,7 @@ public function test_dataframe_loading_traced_when_enabled() : void foreach ($loadingSpans as $span) { self::assertNotNull($span->status()); self::assertTrue($span->status()->isOk()); + self::assertArrayHasKey('loader.class', $span->attributes()); } } @@ -132,7 +132,7 @@ public function test_dataframe_run_creates_telemetry_span() : void self::assertCount(1, $endedSpans); $dataFrameSpan = $endedSpans[0]; - self::assertSame(DataFrame::class, $dataFrameSpan->name()); + self::assertSame('DataFrame flow_dataframe', $dataFrameSpan->name()); self::assertNotNull($dataFrameSpan->status()); self::assertTrue($dataFrameSpan->status()->isOk()); } @@ -258,9 +258,9 @@ public function test_dataframe_transformations_traced_when_enabled() : void $transformerSpans = []; foreach ($endedSpans as $span) { - if ($span->name() === DataFrame::class) { + if ($span->name() === 'DataFrame flow_dataframe') { $dataFrameSpan = $span; - } elseif (\str_contains($span->name(), 'Transformer')) { + } elseif (\str_ends_with($span->name(), 'Transformer')) { $transformerSpans[] = $span; } } @@ -271,6 +271,7 @@ public function test_dataframe_transformations_traced_when_enabled() : void foreach ($transformerSpans as $span) { self::assertNotNull($span->status()); self::assertTrue($span->status()->isOk()); + self::assertArrayHasKey('transformer.class', $span->attributes()); } } diff --git a/src/core/etl/tests/Flow/ETL/Tests/Unit/Cache/Implementation/TraceableCacheTest.php b/src/core/etl/tests/Flow/ETL/Tests/Unit/Cache/Implementation/TraceableCacheTest.php new file mode 100644 index 0000000000..e9f697a356 --- /dev/null +++ b/src/core/etl/tests/Flow/ETL/Tests/Unit/Cache/Implementation/TraceableCacheTest.php @@ -0,0 +1,259 @@ +spanProcessor = new MemorySpanProcessor(new VoidSpanExporter()); + $this->metricProcessor = new MemoryMetricProcessor(new VoidMetricExporter()); + $logProcessor = new MemoryLogProcessor(new VoidLogExporter()); + + $this->telemetry = new Telemetry( + Resource::create(['service.name' => 'test-service']), + new TracerProvider($this->spanProcessor, $clock, $contextStorage), + new MeterProvider($this->metricProcessor, $clock), + new LoggerProvider($logProcessor, $clock, $contextStorage), + ); + } + + public function test_clear_creates_span_with_correct_name_and_attributes() : void + { + $innerCache = new InMemoryCache(); + $cache = new TraceableCache($innerCache, $this->telemetry); + + $cache->clear(); + + $this->telemetry->flush(); + $spans = $this->spanProcessor->endedSpans(); + + self::assertCount(1, $spans); + + $span = $spans[0]; + self::assertSame('Cache Clear', $span->name()); + self::assertSame(SpanKind::CLIENT, $span->kind()); + + $attributes = $span->attributes(); + self::assertSame('clear', $attributes['cache.operation']); + } + + public function test_delete_creates_span_with_correct_name_and_attributes() : void + { + $innerCache = new InMemoryCache(); + $cache = new TraceableCache($innerCache, $this->telemetry); + + $cache->delete('test-key'); + + $this->telemetry->flush(); + $spans = $this->spanProcessor->endedSpans(); + + self::assertCount(1, $spans); + + $span = $spans[0]; + self::assertSame('Cache Delete test-key', $span->name()); + self::assertSame(SpanKind::CLIENT, $span->kind()); + + $attributes = $span->attributes(); + self::assertSame('delete', $attributes['cache.operation']); + self::assertSame('test-key', $attributes['cache.key']); + } + + public function test_get_increments_hit_counter_on_existing_key() : void + { + $innerCache = new InMemoryCache(); + $cache = new TraceableCache($innerCache, $this->telemetry, 'test_dataframe'); + + $innerCache->set('existing-key', row()); + $cache->get('existing-key'); + + $this->telemetry->flush(); + $hitMetrics = $this->metricProcessor->metricsWithName('cache_hits'); + $missMetrics = $this->metricProcessor->metricsWithName('cache_misses'); + + self::assertCount(1, $hitMetrics); + self::assertCount(0, $missMetrics); + self::assertSame(1, $hitMetrics[0]->value); + self::assertSame('test_dataframe', $hitMetrics[0]->attributes->get('dataframe.name')); + } + + public function test_get_increments_miss_counter_and_throws_on_non_existing_key() : void + { + $innerCache = new InMemoryCache(); + $cache = new TraceableCache($innerCache, $this->telemetry, 'test_dataframe'); + + $this->expectException(KeyNotInCacheException::class); + + try { + $cache->get('non-existing-key'); + } finally { + $this->telemetry->flush(); + $hitMetrics = $this->metricProcessor->metricsWithName('cache_hits'); + $missMetrics = $this->metricProcessor->metricsWithName('cache_misses'); + + self::assertCount(0, $hitMetrics); + self::assertCount(1, $missMetrics); + self::assertSame(1, $missMetrics[0]->value); + self::assertSame('test_dataframe', $missMetrics[0]->attributes->get('dataframe.name')); + } + } + + public function test_has_increments_hit_counter_when_key_exists() : void + { + $innerCache = new InMemoryCache(); + $cache = new TraceableCache($innerCache, $this->telemetry, 'test_dataframe'); + + $innerCache->set('existing-key', row()); + $exists = $cache->has('existing-key'); + + self::assertTrue($exists); + + $this->telemetry->flush(); + $hitMetrics = $this->metricProcessor->metricsWithName('cache_hits'); + $missMetrics = $this->metricProcessor->metricsWithName('cache_misses'); + + self::assertCount(1, $hitMetrics); + self::assertCount(0, $missMetrics); + self::assertSame(1, $hitMetrics[0]->value); + self::assertSame('test_dataframe', $hitMetrics[0]->attributes->get('dataframe.name')); + } + + public function test_has_increments_miss_counter_when_key_does_not_exist() : void + { + $innerCache = new InMemoryCache(); + $cache = new TraceableCache($innerCache, $this->telemetry, 'test_dataframe'); + + $exists = $cache->has('non-existing-key'); + + self::assertFalse($exists); + + $this->telemetry->flush(); + $hitMetrics = $this->metricProcessor->metricsWithName('cache_hits'); + $missMetrics = $this->metricProcessor->metricsWithName('cache_misses'); + + self::assertCount(0, $hitMetrics); + self::assertCount(1, $missMetrics); + self::assertSame(1, $missMetrics[0]->value); + self::assertSame('test_dataframe', $missMetrics[0]->attributes->get('dataframe.name')); + } + + public function test_set_creates_span_with_cache_index_value_type() : void + { + $innerCache = new InMemoryCache(); + $cache = new TraceableCache($innerCache, $this->telemetry); + + $cache->set('test-key', new CacheIndex('test-id')); + + $this->telemetry->flush(); + $spans = $this->spanProcessor->endedSpans(); + + self::assertCount(1, $spans); + + $span = $spans[0]; + self::assertSame('Cache Set test-key', $span->name()); + self::assertSame(SpanKind::CLIENT, $span->kind()); + + $attributes = $span->attributes(); + self::assertSame('set', $attributes['cache.operation']); + self::assertSame('test-key', $attributes['cache.key']); + self::assertSame('CacheIndex', $attributes['cache.value_type']); + } + + public function test_set_creates_span_with_correct_name_and_attributes_for_row() : void + { + $innerCache = new InMemoryCache(); + $cache = new TraceableCache($innerCache, $this->telemetry); + + $cache->set('test-key', row()); + + $this->telemetry->flush(); + $spans = $this->spanProcessor->endedSpans(); + + self::assertCount(1, $spans); + + $span = $spans[0]; + self::assertSame('Cache Set test-key', $span->name()); + self::assertSame(SpanKind::CLIENT, $span->kind()); + + $attributes = $span->attributes(); + self::assertSame('set', $attributes['cache.operation']); + self::assertSame('test-key', $attributes['cache.key']); + self::assertSame('Row', $attributes['cache.value_type']); + } + + public function test_set_creates_span_with_rows_value_type() : void + { + $innerCache = new InMemoryCache(); + $cache = new TraceableCache($innerCache, $this->telemetry); + + $cache->set('test-key', rows()); + + $this->telemetry->flush(); + $spans = $this->spanProcessor->endedSpans(); + + self::assertCount(1, $spans); + + $span = $spans[0]; + self::assertSame('Cache Set test-key', $span->name()); + self::assertSame(SpanKind::CLIENT, $span->kind()); + + $attributes = $span->attributes(); + self::assertSame('set', $attributes['cache.operation']); + self::assertSame('test-key', $attributes['cache.key']); + self::assertSame('Rows', $attributes['cache.value_type']); + } + + public function test_set_records_exception_on_error() : void + { + $innerCache = $this->createMock(Cache::class); + $innerCache->method('set')->willThrowException(new \RuntimeException('Test error')); + + $cache = new TraceableCache($innerCache, $this->telemetry); + + $this->expectException(\RuntimeException::class); + $this->expectExceptionMessage('Test error'); + + try { + $cache->set('test-key', row()); + } finally { + $this->telemetry->flush(); + $spans = $this->spanProcessor->endedSpans(); + + self::assertCount(1, $spans); + + $span = $spans[0]; + self::assertNotNull($span->status()); + self::assertTrue($span->status()->isError()); + self::assertSame('Test error', $span->status()->description); + self::assertCount(1, $span->events()); + } + } +} diff --git a/src/core/etl/tests/Flow/ETL/Tests/Unit/Config/Telemetry/TelemetryContextTest.php b/src/core/etl/tests/Flow/ETL/Tests/Unit/Config/Telemetry/TelemetryContextTest.php index 56650ffe33..6ed57933b9 100644 --- a/src/core/etl/tests/Flow/ETL/Tests/Unit/Config/Telemetry/TelemetryContextTest.php +++ b/src/core/etl/tests/Flow/ETL/Tests/Unit/Config/Telemetry/TelemetryContextTest.php @@ -7,7 +7,6 @@ use function Flow\ETL\DSL\{config_builder, flow_context, telemetry_options}; use function Flow\ETL\DSL\{int_entry, row, rows}; use Flow\ETL\Config\Telemetry\{TelemetryContext, TelemetryOptions}; -use Flow\ETL\DataFrame; use Flow\ETL\Loader\StreamLoader; use Flow\ETL\Tests\FlowTestCase; use Flow\ETL\Transformer\LimitTransformer; @@ -66,7 +65,7 @@ public function test_dataframe_batch_processed_tracks_rows_and_memory() : void $metrics = $metricProcessor->metrics(); self::assertNotEmpty($metrics); - $counterMetrics = $metricProcessor->metricsWithName('rows.processed.total'); + $counterMetrics = $metricProcessor->metricsWithName('rows_processed'); self::assertNotEmpty($counterMetrics, 'Counter metrics should be collected'); self::assertSame(3, $counterMetrics[0]->value); } @@ -113,7 +112,7 @@ public function test_dataframe_completed_finalizes_span_with_statistics() : void self::assertCount(1, $spans); $span = $spans[0]; - self::assertSame(DataFrame::class, $span->name()); + self::assertSame('DataFrame flow_dataframe', $span->name()); self::assertNotNull($span->status()); self::assertTrue($span->status()->isOk()); @@ -127,6 +126,57 @@ public function test_dataframe_completed_finalizes_span_with_statistics() : void self::assertGreaterThanOrEqual(2, \count($debugLogs)); } + public function test_dataframe_failed_logs_error_and_sets_span_status() : void + { + $spanProcessor = new MemorySpanProcessor(new VoidSpanExporter()); + $metricProcessor = new MemoryMetricProcessor(new VoidMetricExporter()); + $logProcessor = new MemoryLogProcessor(new VoidLogExporter()); + $clock = $this->createFrozenClock(); + $contextStorage = new MemoryContextStorage(); + + $telemetry = new Telemetry( + Resource::create(['service.name' => 'flow-test']), + new TracerProvider($spanProcessor, $clock, $contextStorage), + new MeterProvider($metricProcessor, $clock), + new LoggerProvider($logProcessor, $clock, $contextStorage), + ); + + $telemetryContext = new TelemetryContext( + $telemetry->logger('flow-php'), + $telemetry->tracer('flow-php'), + $telemetry->meter('flow-php'), + new TelemetryOptions(), + ); + + $config = config_builder() + ->withTelemetry($telemetry) + ->build(); + + $context = flow_context($config); + + $telemetryContext->dataFrameStarted($context); + + $rows = rows(row(int_entry('id', 1))); + $telemetryContext->dataFrameBatchProcessed($rows, $context); + + $exception = new \RuntimeException('Processing failed due to invalid data'); + $telemetryContext->dataFrameFailed($context, $exception); + + $errorLogs = $logProcessor->entriesWithSeverity(Severity::ERROR); + self::assertCount(1, $errorLogs); + self::assertStringContainsString('Data frame processing failed', $errorLogs[0]->record->body); + + $endedSpans = $spanProcessor->endedSpans(); + self::assertCount(1, $endedSpans); + self::assertNotNull($endedSpans[0]->status()); + self::assertTrue($endedSpans[0]->status()->isError()); + self::assertSame('Processing failed due to invalid data', $endedSpans[0]->status()->description); + + $attributes = $endedSpans[0]->attributes(); + self::assertArrayHasKey('rows.total', $attributes); + self::assertSame(1, $attributes['rows.total']); + } + public function test_dataframe_started_creates_span_and_logs_debug_message() : void { $spanProcessor = new MemorySpanProcessor(new VoidSpanExporter()); @@ -159,7 +209,7 @@ public function test_dataframe_started_creates_span_and_logs_debug_message() : v $startedSpans = $spanProcessor->startedSpans(); self::assertCount(1, $startedSpans); - self::assertSame(DataFrame::class, $startedSpans[0]->name()); + self::assertSame('DataFrame flow_dataframe', $startedSpans[0]->name()); $debugLogs = $logProcessor->entriesWithSeverity(Severity::DEBUG); self::assertCount(1, $debugLogs); @@ -204,7 +254,8 @@ public function test_loading_completed_finalizes_span_with_ok_status() : void $endedSpans = $spanProcessor->endedSpans(); self::assertCount(1, $endedSpans); - self::assertSame(StreamLoader::class, $endedSpans[0]->name()); + self::assertSame('StreamLoader', $endedSpans[0]->name()); + self::assertSame(StreamLoader::class, $endedSpans[0]->attributes()['loader.class']); self::assertNotNull($endedSpans[0]->status()); self::assertTrue($endedSpans[0]->status()->isOk()); } @@ -291,7 +342,8 @@ public function test_loading_started_creates_span_when_trace_loading_enabled() : $startedSpans = $spanProcessor->startedSpans(); self::assertCount(2, $startedSpans); - self::assertSame(StreamLoader::class, $startedSpans[1]->name()); + self::assertSame('StreamLoader', $startedSpans[1]->name()); + self::assertSame(StreamLoader::class, $startedSpans[1]->attributes()['loader.class']); } public function test_loading_started_does_not_create_span_when_trace_loading_disabled() : void @@ -329,7 +381,7 @@ public function test_loading_started_does_not_create_span_when_trace_loading_dis $startedSpans = $spanProcessor->startedSpans(); self::assertCount(1, $startedSpans); - self::assertSame(DataFrame::class, $startedSpans[0]->name()); + self::assertSame('DataFrame flow_dataframe', $startedSpans[0]->name()); } public function test_metrics_collected_when_collect_metrics_enabled() : void @@ -370,13 +422,64 @@ public function test_metrics_collected_when_collect_metrics_enabled() : void $telemetryContext->dataFrameCompleted($context); $telemetry->flush(); - $counterMetrics = $metricProcessor->metricsWithName('rows.processed.total'); - $throughputMetrics = $metricProcessor->metricsWithName('rows.processed.throughput'); + $counterMetrics = $metricProcessor->metricsWithName('rows_processed'); + $throughputMetrics = $metricProcessor->metricsWithName('rows_throughput'); self::assertNotEmpty($counterMetrics, 'Counter should be created when metrics enabled'); self::assertNotEmpty($throughputMetrics, 'Throughput should be created when metrics enabled'); } + public function test_metrics_include_dataframe_name_attribute() : void + { + $spanProcessor = new MemorySpanProcessor(new VoidSpanExporter()); + $metricProcessor = new MemoryMetricProcessor(new VoidMetricExporter()); + $logProcessor = new MemoryLogProcessor(new VoidLogExporter()); + $clock = $this->createFrozenClock(); + $contextStorage = new MemoryContextStorage(); + + $telemetry = new Telemetry( + Resource::create(['service.name' => 'flow-test']), + new TracerProvider($spanProcessor, $clock, $contextStorage), + new MeterProvider($metricProcessor, $clock), + new LoggerProvider($logProcessor, $clock, $contextStorage), + ); + + $telemetryContext = new TelemetryContext( + $telemetry->logger('flow-php'), + $telemetry->tracer('flow-php'), + $telemetry->meter('flow-php'), + telemetry_options(collect_metrics: true), + ); + + $config = config_builder() + ->name('my_custom_dataframe') + ->withTelemetry($telemetry, telemetry_options(collect_metrics: true)) + ->build(); + + $context = flow_context($config); + + $telemetryContext->dataFrameStarted($context); + + $rows = rows( + row(int_entry('id', 1)), + row(int_entry('id', 2)), + row(int_entry('id', 3)), + ); + $telemetryContext->dataFrameBatchProcessed($rows, $context); + $telemetryContext->dataFrameCompleted($context); + $telemetry->flush(); + + $counterMetrics = $metricProcessor->metricsWithName('rows_processed'); + $throughputMetrics = $metricProcessor->metricsWithName('rows_throughput'); + + self::assertCount(1, $counterMetrics); + self::assertSame(3, $counterMetrics[0]->value); + self::assertSame('my_custom_dataframe', $counterMetrics[0]->attributes->get('dataframe.name')); + + self::assertCount(1, $throughputMetrics); + self::assertSame('my_custom_dataframe', $throughputMetrics[0]->attributes->get('dataframe.name')); + } + public function test_metrics_not_collected_when_collect_metrics_disabled() : void { $spanProcessor = new MemorySpanProcessor(new VoidSpanExporter()); @@ -455,7 +558,8 @@ public function test_transformation_completed_finalizes_span() : void $endedSpans = $spanProcessor->endedSpans(); self::assertCount(1, $endedSpans); - self::assertSame(LimitTransformer::class, $endedSpans[0]->name()); + self::assertSame('LimitTransformer', $endedSpans[0]->name()); + self::assertSame(LimitTransformer::class, $endedSpans[0]->attributes()['transformer.class']); self::assertNotNull($endedSpans[0]->status()); self::assertTrue($endedSpans[0]->status()->isOk()); } @@ -542,7 +646,8 @@ public function test_transformation_started_creates_span_when_trace_transformati $startedSpans = $spanProcessor->startedSpans(); self::assertCount(2, $startedSpans); - self::assertSame(LimitTransformer::class, $startedSpans[1]->name()); + self::assertSame('LimitTransformer', $startedSpans[1]->name()); + self::assertSame(LimitTransformer::class, $startedSpans[1]->attributes()['transformer.class']); } public function test_transformation_started_does_not_create_span_when_trace_transformations_disabled() : void @@ -580,7 +685,7 @@ public function test_transformation_started_does_not_create_span_when_trace_tran $startedSpans = $spanProcessor->startedSpans(); self::assertCount(1, $startedSpans); - self::assertSame(DataFrame::class, $startedSpans[0]->name()); + self::assertSame('DataFrame flow_dataframe', $startedSpans[0]->name()); } private function createFrozenClock(\DateTimeImmutable $now = new \DateTimeImmutable()) : ClockInterface diff --git a/src/lib/filesystem/src/Flow/Filesystem/Telemetry/TraceableDestinationStream.php b/src/lib/filesystem/src/Flow/Filesystem/Telemetry/TraceableDestinationStream.php index 8a7b1133bf..8143d06746 100644 --- a/src/lib/filesystem/src/Flow/Filesystem/Telemetry/TraceableDestinationStream.php +++ b/src/lib/filesystem/src/Flow/Filesystem/Telemetry/TraceableDestinationStream.php @@ -30,32 +30,33 @@ public function __construct( ) { if ($this->telemetryConfig->options->traceStreams) { $this->tracer = $telemetryConfig->telemetry->tracer( - 'flow.filesystem', + 'flow_php_filesystem', PackageVersion::get('flow-php/filesystem'), ); $this->span = $this->tracer->span( - 'DestinationStream', + 'Write ' . $this->stream->path()->basename(), SpanKind::INTERNAL, [ FilesystemTelemetryAttributes::ATTR_STREAM_TYPE => 'destination', FilesystemTelemetryAttributes::ATTR_PATH_URI => $this->stream->path()->uri(), + FilesystemTelemetryAttributes::ATTR_FILESYSTEM_PROTOCOL => $this->stream->path()->protocol()->name, ] ); } if ($this->telemetryConfig->options->collectMetrics) { $this->meter = $telemetryConfig->telemetry->meter( - 'flow.filesystem', + 'flow_php_filesystem', PackageVersion::get('flow-php/filesystem'), ); $this->bytesWrittenCounter = $this->meter->createCounter( - 'filesystem.destination.bytes_written', + 'write_size', 'bytes', 'Total bytes written to destination streams', ); $this->operationsCounter = $this->meter->createCounter( - 'filesystem.destination.operations', + 'write_operations', 'operations', 'Number of write operations', ); diff --git a/src/lib/filesystem/src/Flow/Filesystem/Telemetry/TraceableFilesystem.php b/src/lib/filesystem/src/Flow/Filesystem/Telemetry/TraceableFilesystem.php index a05af1ea7e..9888b47001 100644 --- a/src/lib/filesystem/src/Flow/Filesystem/Telemetry/TraceableFilesystem.php +++ b/src/lib/filesystem/src/Flow/Filesystem/Telemetry/TraceableFilesystem.php @@ -19,7 +19,7 @@ public function __construct( private FilesystemTelemetryConfig $telemetryConfig, ) { $this->logger = $telemetryConfig->telemetry->logger( - 'flow.filesystem', + 'flow_php_filesystem', PackageVersion::get('flow-php/filesystem'), ); } diff --git a/src/lib/filesystem/src/Flow/Filesystem/Telemetry/TraceableSourceStream.php b/src/lib/filesystem/src/Flow/Filesystem/Telemetry/TraceableSourceStream.php index 3a8ea0f0e0..bcffd48962 100644 --- a/src/lib/filesystem/src/Flow/Filesystem/Telemetry/TraceableSourceStream.php +++ b/src/lib/filesystem/src/Flow/Filesystem/Telemetry/TraceableSourceStream.php @@ -30,32 +30,33 @@ public function __construct( ) { if ($this->telemetryConfig->options->traceStreams) { $this->tracer = $telemetryConfig->telemetry->tracer( - 'flow.filesystem', + 'flow_php_filesystem', PackageVersion::get('flow-php/filesystem'), ); $this->span = $this->tracer->span( - 'SourceStream', + 'Read ' . $this->stream->path()->basename(), SpanKind::INTERNAL, [ FilesystemTelemetryAttributes::ATTR_STREAM_TYPE => 'source', FilesystemTelemetryAttributes::ATTR_PATH_URI => $this->stream->path()->uri(), + FilesystemTelemetryAttributes::ATTR_FILESYSTEM_PROTOCOL => $this->stream->path()->protocol()->name, ] ); } if ($this->telemetryConfig->options->collectMetrics) { $this->meter = $telemetryConfig->telemetry->meter( - 'flow.filesystem', + 'flow_php_filesystem', PackageVersion::get('flow-php/filesystem'), ); $this->bytesReadCounter = $this->meter->createCounter( - 'filesystem.source.bytes_read', + 'read_size', 'bytes', 'Total bytes read from source streams', ); $this->operationsCounter = $this->meter->createCounter( - 'filesystem.source.operations', + 'read_operations', 'operations', 'Number of read operations', ); diff --git a/src/lib/filesystem/tests/Flow/Filesystem/Tests/Integration/Telemetry/TraceableFilesystemIntegrationTest.php b/src/lib/filesystem/tests/Flow/Filesystem/Tests/Integration/Telemetry/TraceableFilesystemIntegrationTest.php index 28b014fa04..2e2ccc8998 100644 --- a/src/lib/filesystem/tests/Flow/Filesystem/Tests/Integration/Telemetry/TraceableFilesystemIntegrationTest.php +++ b/src/lib/filesystem/tests/Flow/Filesystem/Tests/Integration/Telemetry/TraceableFilesystemIntegrationTest.php @@ -4,38 +4,30 @@ namespace Flow\Filesystem\Tests\Integration\Telemetry; -use function Flow\Filesystem\DSL\{filesystem_telemetry_config, filesystem_telemetry_options, native_local_filesystem, path}; -use function Flow\Telemetry\DSL\{logger_provider, memory_context_storage, memory_log_processor, memory_metric_processor, memory_span_processor, meter_provider, resource, telemetry, tracer_provider, void_log_exporter, void_metric_exporter, void_span_exporter}; -use Flow\Filesystem\Telemetry\{FilesystemTelemetryAttributes, FilesystemTelemetryOptions, TraceableFilesystem}; -use Flow\Telemetry\Provider\Clock\SystemClock; -use Flow\Telemetry\Provider\Memory\{MemoryLogProcessor, MemoryMetricProcessor, MemorySpanProcessor}; -use Flow\Telemetry\Telemetry; +use function Flow\Filesystem\DSL\{filesystem_telemetry_options, native_local_filesystem, path}; +use function Flow\Telemetry\DSL\{memory_metric_processor, memory_span_processor, void_metric_exporter, void_span_exporter}; +use Flow\Filesystem\Telemetry\FilesystemTelemetryAttributes; +use Flow\Filesystem\Tests\Mother\FilesystemTelemetryConfigMother; use PHPUnit\Framework\TestCase; final class TraceableFilesystemIntegrationTest extends TestCase { - private string $testDir; - - protected function setUp() : void + protected function tearDown() : void { - $this->testDir = __DIR__ . '/var'; + $testDir = path(__DIR__ . '/var'); + $localFs = native_local_filesystem(); - if (!\file_exists($this->testDir)) { - \mkdir($this->testDir, 0777, true); + if ($localFs->status($testDir) !== null) { + $localFs->rm($testDir); } } - protected function tearDown() : void - { - $this->removeDirectory($this->testDir); - } - public function test_complete_read_write_workflow_produces_lifecycle_spans() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $fs = $this->createTraceableFilesystem($spanProcessor); + $fs = FilesystemTelemetryConfigMother::createTraceableFilesystem($spanProcessor); - $testFile = path($this->testDir . '/test_file.txt'); + $testFile = path(__DIR__ . '/var/test_file.txt'); $content = 'Hello, World!'; $writeStream = $fs->writeTo($testFile); @@ -51,8 +43,8 @@ public function test_complete_read_write_workflow_produces_lifecycle_spans() : v $spans = $spanProcessor->endedSpans(); $spanNames = \array_map(static fn ($span) => $span->name(), $spans); - self::assertContains('DestinationStream', $spanNames); - self::assertContains('SourceStream', $spanNames); + self::assertContains('Write test_file.txt', $spanNames); + self::assertContains('Read test_file.txt', $spanNames); self::assertCount(2, $spans); foreach ($spans as $span) { @@ -60,21 +52,21 @@ public function test_complete_read_write_workflow_produces_lifecycle_spans() : v self::assertTrue($span->status()->isOk()); } - $destinationSpan = $this->findSpanByName($spans, 'DestinationStream'); - self::assertNotNull($destinationSpan); - self::assertSame(\strlen($content), $destinationSpan->attributes()[FilesystemTelemetryAttributes::ATTR_BYTES_TOTAL_WRITTEN]); + $destinationSpans = \array_values(\array_filter($spans, static fn ($span) => $span->name() === 'Write test_file.txt')); + self::assertCount(1, $destinationSpans); + self::assertSame(\strlen($content), $destinationSpans[0]->attributes()[FilesystemTelemetryAttributes::ATTR_BYTES_TOTAL_WRITTEN]); - $sourceSpan = $this->findSpanByName($spans, 'SourceStream'); - self::assertNotNull($sourceSpan); - self::assertSame(\strlen($content), $sourceSpan->attributes()[FilesystemTelemetryAttributes::ATTR_BYTES_TOTAL_READ]); + $sourceSpans = \array_values(\array_filter($spans, static fn ($span) => $span->name() === 'Read test_file.txt')); + self::assertCount(1, $sourceSpans); + self::assertSame(\strlen($content), $sourceSpans[0]->attributes()[FilesystemTelemetryAttributes::ATTR_BYTES_TOTAL_READ]); } public function test_filesystem_operations_do_not_create_spans() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $fs = $this->createTraceableFilesystem($spanProcessor); + $fs = FilesystemTelemetryConfigMother::createTraceableFilesystem($spanProcessor); - $testFile = path($this->testDir . '/no_fs_trace.txt'); + $testFile = path(__DIR__ . '/var/no_fs_trace.txt'); $fs->writeTo($testFile)->append('content')->close(); $spanProcessor->reset(); @@ -88,16 +80,16 @@ public function test_filesystem_operations_do_not_create_spans() : void public function test_from_resource_tracks_bytes_in_lifecycle_span() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $fs = $this->createTraceableFilesystem($spanProcessor); + $fs = FilesystemTelemetryConfigMother::createTraceableFilesystem($spanProcessor); - $sourceFile = __DIR__ . '/../Fixtures/orders.csv'; + $sourceFilePath = __DIR__ . '/../Fixtures/orders.csv'; - if (!\file_exists($sourceFile)) { + if (native_local_filesystem()->status(path($sourceFilePath)) === null) { self::markTestSkipped('Test fixture file not found'); } - $testFile = path($this->testDir . '/from_resource_test.txt'); - $resource = \fopen($sourceFile, 'rb'); + $testFile = path(__DIR__ . '/var/from_resource_test.txt'); + $resource = \fopen($sourceFilePath, 'rb'); self::assertIsResource($resource); $writeStream = $fs->writeTo($testFile); @@ -107,20 +99,20 @@ public function test_from_resource_tracks_bytes_in_lifecycle_span() : void \fclose($resource); $spans = $spanProcessor->endedSpans(); - $destinationSpan = $this->findSpanByName($spans, 'DestinationStream'); + $destinationSpans = \array_values(\array_filter($spans, static fn ($span) => $span->name() === 'Write from_resource_test.txt')); - self::assertNotNull($destinationSpan); - self::assertNotNull($destinationSpan->status()); - self::assertTrue($destinationSpan->status()->isOk()); - self::assertSame('destination', $destinationSpan->attributes()[FilesystemTelemetryAttributes::ATTR_STREAM_TYPE]); + self::assertCount(1, $destinationSpans); + self::assertNotNull($destinationSpans[0]->status()); + self::assertTrue($destinationSpans[0]->status()->isOk()); + self::assertSame('destination', $destinationSpans[0]->attributes()[FilesystemTelemetryAttributes::ATTR_STREAM_TYPE]); } public function test_iterate_tracks_total_bytes_in_lifecycle_span() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $fs = $this->createTraceableFilesystem($spanProcessor); + $fs = FilesystemTelemetryConfigMother::createTraceableFilesystem($spanProcessor); - $testFile = path($this->testDir . '/iterate_test.txt'); + $testFile = path(__DIR__ . '/var/iterate_test.txt'); $content = "Line 1\nLine 2\nLine 3"; $fs->writeTo($testFile)->append($content)->close(); @@ -137,25 +129,27 @@ public function test_iterate_tracks_total_bytes_in_lifecycle_span() : void self::assertSame($content, \implode('', $chunks)); $spans = $spanProcessor->endedSpans(); - $sourceSpan = $this->findSpanByName($spans, 'SourceStream'); + $sourceSpans = \array_values(\array_filter($spans, static fn ($span) => $span->name() === 'Read iterate_test.txt')); - self::assertNotNull($sourceSpan); + self::assertCount(1, $sourceSpans); self::assertSame( \strlen($content), - $sourceSpan->attributes()[FilesystemTelemetryAttributes::ATTR_BYTES_TOTAL_READ] + $sourceSpans[0]->attributes()[FilesystemTelemetryAttributes::ATTR_BYTES_TOTAL_READ] ); } public function test_list_operation_does_not_create_span() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $fs = $this->createTraceableFilesystem($spanProcessor); + $fs = FilesystemTelemetryConfigMother::createTraceableFilesystem($spanProcessor); - $fs->writeTo(path($this->testDir . '/file1.txt'))->append('content1')->close(); - $fs->writeTo(path($this->testDir . '/file2.txt'))->append('content2')->close(); + $testDir = __DIR__ . '/var'; + + $fs->writeTo(path($testDir . '/file1.txt'))->append('content1')->close(); + $fs->writeTo(path($testDir . '/file2.txt'))->append('content2')->close(); $spanProcessor->reset(); - $files = \iterator_to_array($fs->list(path($this->testDir . '/*.txt'))); + $files = \iterator_to_array($fs->list(path($testDir . '/*.txt'))); self::assertCount(2, $files); @@ -167,9 +161,9 @@ public function test_metrics_are_collected_for_stream_operations() : void { $metricProcessor = memory_metric_processor(void_metric_exporter()); $spanProcessor = memory_span_processor(void_span_exporter()); - [$fs, $telemetry] = $this->createTraceableFilesystemWithTelemetry($spanProcessor, null, $metricProcessor); + [$fs, $telemetry] = FilesystemTelemetryConfigMother::createTraceableFilesystemWithTelemetry($spanProcessor, null, $metricProcessor); - $testFile = path($this->testDir . '/metrics_test.txt'); + $testFile = path(__DIR__ . '/var/metrics_test.txt'); $content = 'Test content for metrics'; $writeStream = $fs->writeTo($testFile); @@ -186,18 +180,18 @@ public function test_metrics_are_collected_for_stream_operations() : void $metrics = $metricProcessor->metrics(); $metricNames = \array_map(static fn ($m) => $m->name, $metrics); - self::assertContains('filesystem.destination.bytes_written', $metricNames); - self::assertContains('filesystem.destination.operations', $metricNames); - self::assertContains('filesystem.source.bytes_read', $metricNames); - self::assertContains('filesystem.source.operations', $metricNames); + self::assertContains('write_size', $metricNames); + self::assertContains('write_operations', $metricNames); + self::assertContains('read_size', $metricNames); + self::assertContains('read_operations', $metricNames); } public function test_multiple_appends_create_single_span_with_cumulative_metrics() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $fs = $this->createTraceableFilesystem($spanProcessor); + $fs = FilesystemTelemetryConfigMother::createTraceableFilesystem($spanProcessor); - $testFile = path($this->testDir . '/multiple_appends.txt'); + $testFile = path(__DIR__ . '/var/multiple_appends.txt'); $chunk = 'data chunk;'; $writeStream = $fs->writeTo($testFile); @@ -212,17 +206,18 @@ public function test_multiple_appends_create_single_span_with_cumulative_metrics self::assertCount(1, $spans); $destinationSpan = $spans[0]; - self::assertSame('DestinationStream', $destinationSpan->name()); + self::assertSame('Write multiple_appends.txt', $destinationSpan->name()); self::assertSame(\strlen($chunk) * 10, $destinationSpan->attributes()[FilesystemTelemetryAttributes::ATTR_BYTES_TOTAL_WRITTEN]); } public function test_mv_operation_does_not_create_span() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $fs = $this->createTraceableFilesystem($spanProcessor); + $fs = FilesystemTelemetryConfigMother::createTraceableFilesystem($spanProcessor); - $sourceFile = path($this->testDir . '/source.txt'); - $destFile = path($this->testDir . '/dest.txt'); + $testDir = __DIR__ . '/var'; + $sourceFile = path($testDir . '/source.txt'); + $destFile = path($testDir . '/dest.txt'); $fs->writeTo($sourceFile)->append('content')->close(); $spanProcessor->reset(); @@ -238,9 +233,9 @@ public function test_mv_operation_does_not_create_span() : void public function test_read_lines_tracks_bytes_in_lifecycle_span() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $fs = $this->createTraceableFilesystem($spanProcessor); + $fs = FilesystemTelemetryConfigMother::createTraceableFilesystem($spanProcessor); - $testFile = path($this->testDir . '/lines_test.txt'); + $testFile = path(__DIR__ . '/var/lines_test.txt'); $content = "Line 1\nLine 2\nLine 3"; $fs->writeTo($testFile)->append($content)->close(); @@ -253,19 +248,19 @@ public function test_read_lines_tracks_bytes_in_lifecycle_span() : void self::assertCount(3, $lines); $spans = $spanProcessor->endedSpans(); - $sourceSpan = $this->findSpanByName($spans, 'SourceStream'); + $sourceSpans = \array_values(\array_filter($spans, static fn ($span) => $span->name() === 'Read lines_test.txt')); - self::assertNotNull($sourceSpan); - self::assertNotNull($sourceSpan->status()); - self::assertTrue($sourceSpan->status()->isOk()); + self::assertCount(1, $sourceSpans); + self::assertNotNull($sourceSpans[0]->status()); + self::assertTrue($sourceSpans[0]->status()->isOk()); } public function test_rm_operation_does_not_create_span() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $fs = $this->createTraceableFilesystem($spanProcessor); + $fs = FilesystemTelemetryConfigMother::createTraceableFilesystem($spanProcessor); - $testFile = path($this->testDir . '/to_remove.txt'); + $testFile = path(__DIR__ . '/var/to_remove.txt'); $fs->writeTo($testFile)->append('content')->close(); $spanProcessor->reset(); @@ -280,9 +275,9 @@ public function test_rm_operation_does_not_create_span() : void public function test_status_operation_does_not_create_span() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $fs = $this->createTraceableFilesystem($spanProcessor); + $fs = FilesystemTelemetryConfigMother::createTraceableFilesystem($spanProcessor); - $testFile = path($this->testDir . '/status_test.txt'); + $testFile = path(__DIR__ . '/var/status_test.txt'); $fs->writeTo($testFile)->append('content')->close(); $spanProcessor->reset(); @@ -298,11 +293,11 @@ public function test_status_operation_does_not_create_span() : void public function test_stream_lifecycle_tracing_can_be_disabled() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $fs = $this->createTraceableFilesystem($spanProcessor, filesystem_telemetry_options( + $fs = FilesystemTelemetryConfigMother::createTraceableFilesystem($spanProcessor, filesystem_telemetry_options( traceStreams: false, )); - $testFile = path($this->testDir . '/no_stream_trace.txt'); + $testFile = path(__DIR__ . '/var/no_stream_trace.txt'); $writeStream = $fs->writeTo($testFile); $writeStream->append('content'); @@ -312,74 +307,4 @@ public function test_stream_lifecycle_tracing_can_be_disabled() : void self::assertCount(0, $spans); } - - private function createTraceableFilesystem( - MemorySpanProcessor $spanProcessor, - ?FilesystemTelemetryOptions $options = null, - ?MemoryMetricProcessor $metricProcessor = null, - ?MemoryLogProcessor $logProcessor = null, - ) : TraceableFilesystem { - [$fs] = $this->createTraceableFilesystemWithTelemetry($spanProcessor, $options, $metricProcessor, $logProcessor); - - return $fs; - } - - /** - * @return array{0: TraceableFilesystem, 1: Telemetry} - */ - private function createTraceableFilesystemWithTelemetry( - MemorySpanProcessor $spanProcessor, - ?FilesystemTelemetryOptions $options = null, - ?MemoryMetricProcessor $metricProcessor = null, - ?MemoryLogProcessor $logProcessor = null, - ) : array { - $clock = new SystemClock(); - $contextStorage = memory_context_storage(); - - $tel = telemetry( - resource(), - tracer_provider($spanProcessor, $clock, $contextStorage), - meter_provider($metricProcessor ?? memory_metric_processor(void_metric_exporter()), $clock), - logger_provider($logProcessor ?? memory_log_processor(void_log_exporter()), $clock, $contextStorage), - ); - - $config = filesystem_telemetry_config($tel, $clock, $options ?? filesystem_telemetry_options()); - - return [new TraceableFilesystem(native_local_filesystem(), $config), $tel]; - } - - /** - * @param array<\Flow\Telemetry\Tracer\Span> $spans - */ - private function findSpanByName(array $spans, string $name) : ?\Flow\Telemetry\Tracer\Span - { - foreach ($spans as $span) { - if ($span->name() === $name) { - return $span; - } - } - - return null; - } - - private function removeDirectory(string $dir) : void - { - if (!\file_exists($dir)) { - return; - } - - $files = \array_diff(\scandir($dir), ['.', '..']); - - foreach ($files as $file) { - $path = $dir . '/' . $file; - - if (\is_dir($path)) { - $this->removeDirectory($path); - } else { - \unlink($path); - } - } - - \rmdir($dir); - } } diff --git a/src/lib/filesystem/tests/Flow/Filesystem/Tests/Mother/FilesystemTelemetryConfigMother.php b/src/lib/filesystem/tests/Flow/Filesystem/Tests/Mother/FilesystemTelemetryConfigMother.php new file mode 100644 index 0000000000..6ae4b9d468 --- /dev/null +++ b/src/lib/filesystem/tests/Flow/Filesystem/Tests/Mother/FilesystemTelemetryConfigMother.php @@ -0,0 +1,92 @@ +createTelemetryConfig(); + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $mockFilesystem = $this->createMock(Filesystem::class); $mockFilesystem->method('protocol')->willReturn(protocol('s3')); @@ -50,7 +51,8 @@ public function test_mount_does_not_wrap_when_telemetry_not_configured() : void public function test_mount_wraps_new_filesystem_when_telemetry_configured() : void { $fstab = new FilesystemTable(); - $config = $this->createTelemetryConfig(); + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $fstab->withTelemetry($config); @@ -66,7 +68,8 @@ public function test_mount_wraps_new_filesystem_when_telemetry_configured() : vo public function test_with_telemetry_skips_already_traceable_filesystems() : void { - $config = $this->createTelemetryConfig(); + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $mockFilesystem = $this->createMock(Filesystem::class); $mockFilesystem->method('protocol')->willReturn(protocol('sftp')); @@ -88,7 +91,8 @@ public function test_with_telemetry_wraps_existing_filesystems_in_traceable() : $mockFilesystem->method('protocol')->willReturn(protocol('ftp')); $fstab = new FilesystemTable($mockFilesystem); - $config = $this->createTelemetryConfig(); + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $fstab->withTelemetry($config); @@ -96,19 +100,4 @@ public function test_with_telemetry_wraps_existing_filesystems_in_traceable() : self::assertInstanceOf(TraceableFilesystem::class, $filesystem); } - - private function createTelemetryConfig() : FilesystemTelemetryConfig - { - $clock = new SystemClock(); - $contextStorage = memory_context_storage(); - - $tel = telemetry( - resource(), - tracer_provider(memory_span_processor(void_span_exporter()), $clock, $contextStorage), - meter_provider(memory_metric_processor(void_metric_exporter()), $clock), - logger_provider(memory_log_processor(void_log_exporter()), $clock, $contextStorage), - ); - - return filesystem_telemetry_config($tel, $clock, filesystem_telemetry_options()); - } } diff --git a/src/lib/filesystem/tests/Flow/Filesystem/Tests/Unit/Telemetry/FilesystemTelemetryConfigTest.php b/src/lib/filesystem/tests/Flow/Filesystem/Tests/Unit/Telemetry/FilesystemTelemetryConfigTest.php index 87098689fd..b2674299a7 100644 --- a/src/lib/filesystem/tests/Flow/Filesystem/Tests/Unit/Telemetry/FilesystemTelemetryConfigTest.php +++ b/src/lib/filesystem/tests/Flow/Filesystem/Tests/Unit/Telemetry/FilesystemTelemetryConfigTest.php @@ -5,7 +5,7 @@ namespace Flow\Filesystem\Tests\Unit\Telemetry; use function Flow\Filesystem\DSL\{filesystem_telemetry_config, filesystem_telemetry_options}; -use function Flow\Telemetry\DSL\{logger_provider, memory_context_storage, memory_log_processor, memory_metric_processor, memory_span_processor, meter_provider, resource, telemetry, tracer_provider, void_log_exporter, void_metric_exporter, void_span_exporter}; +use Flow\Filesystem\Tests\Mother\FilesystemTelemetryConfigMother; use Flow\Telemetry\Provider\Clock\SystemClock; use PHPUnit\Framework\TestCase; @@ -14,7 +14,7 @@ final class FilesystemTelemetryConfigTest extends TestCase public function test_config_can_be_created_with_custom_options() : void { $clock = new SystemClock(); - $tel = $this->createTelemetry($clock); + $tel = FilesystemTelemetryConfigMother::createTelemetry($clock); $options = filesystem_telemetry_options( traceStreams: false, collectMetrics: false, @@ -32,7 +32,7 @@ public function test_config_can_be_created_with_custom_options() : void public function test_config_can_be_created_with_default_options() : void { $clock = new SystemClock(); - $tel = $this->createTelemetry($clock); + $tel = FilesystemTelemetryConfigMother::createTelemetry($clock); $config = filesystem_telemetry_config($tel, $clock); @@ -41,16 +41,4 @@ public function test_config_can_be_created_with_default_options() : void self::assertTrue($config->options->traceStreams); self::assertTrue($config->options->collectMetrics); } - - private function createTelemetry(SystemClock $clock) : \Flow\Telemetry\Telemetry - { - $contextStorage = memory_context_storage(); - - return telemetry( - resource(), - tracer_provider(memory_span_processor(void_span_exporter()), $clock, $contextStorage), - meter_provider(memory_metric_processor(void_metric_exporter()), $clock), - logger_provider(memory_log_processor(void_log_exporter()), $clock, $contextStorage), - ); - } } diff --git a/src/lib/filesystem/tests/Flow/Filesystem/Tests/Unit/Telemetry/TraceableDestinationStreamTest.php b/src/lib/filesystem/tests/Flow/Filesystem/Tests/Unit/Telemetry/TraceableDestinationStreamTest.php index 0b9088e581..1ff035ebc6 100644 --- a/src/lib/filesystem/tests/Flow/Filesystem/Tests/Unit/Telemetry/TraceableDestinationStreamTest.php +++ b/src/lib/filesystem/tests/Flow/Filesystem/Tests/Unit/Telemetry/TraceableDestinationStreamTest.php @@ -4,12 +4,11 @@ namespace Flow\Filesystem\Tests\Unit\Telemetry; -use function Flow\Filesystem\DSL\{filesystem_telemetry_config, filesystem_telemetry_options}; -use function Flow\Telemetry\DSL\{logger_provider, memory_context_storage, memory_log_processor, memory_metric_processor, memory_span_processor, meter_provider, resource, telemetry, tracer_provider, void_log_exporter, void_metric_exporter, void_span_exporter}; +use function Flow\Filesystem\DSL\filesystem_telemetry_options; +use function Flow\Telemetry\DSL\{memory_span_processor, void_span_exporter}; use Flow\Filesystem\{DestinationStream, Path}; -use Flow\Filesystem\Telemetry\{FilesystemTelemetryAttributes, FilesystemTelemetryConfig, FilesystemTelemetryOptions, TraceableDestinationStream}; -use Flow\Telemetry\Provider\Clock\SystemClock; -use Flow\Telemetry\Provider\Memory\MemorySpanProcessor; +use Flow\Filesystem\Telemetry\{FilesystemTelemetryAttributes, TraceableDestinationStream}; +use Flow\Filesystem\Tests\Mother\FilesystemTelemetryConfigMother; use PHPUnit\Framework\TestCase; final class TraceableDestinationStreamTest extends TestCase @@ -17,7 +16,7 @@ final class TraceableDestinationStreamTest extends TestCase public function test_append_tracks_bytes_written() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $path = Path::realpath('/tmp/test.txt'); $data = 'Hello, World!'; @@ -34,7 +33,7 @@ public function test_append_tracks_bytes_written() : void $spans = $spanProcessor->endedSpans(); self::assertCount(1, $spans); - self::assertSame('DestinationStream', $spans[0]->name()); + self::assertSame('Write test.txt', $spans[0]->name()); self::assertSame('destination', $spans[0]->attributes()[FilesystemTelemetryAttributes::ATTR_STREAM_TYPE]); self::assertSame($path->uri(), $spans[0]->attributes()[FilesystemTelemetryAttributes::ATTR_PATH_URI]); self::assertSame(\strlen($data), $spans[0]->attributes()[FilesystemTelemetryAttributes::ATTR_BYTES_TOTAL_WRITTEN]); @@ -45,7 +44,7 @@ public function test_append_tracks_bytes_written() : void public function test_close_completes_lifecycle_span_with_final_attributes() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $path = Path::realpath('/tmp/test.txt'); $data = 'Hello, World!'; @@ -59,7 +58,7 @@ public function test_close_completes_lifecycle_span_with_final_attributes() : vo $spans = $spanProcessor->endedSpans(); self::assertCount(1, $spans); - self::assertSame('DestinationStream', $spans[0]->name()); + self::assertSame('Write test.txt', $spans[0]->name()); self::assertSame('destination', $spans[0]->attributes()[FilesystemTelemetryAttributes::ATTR_STREAM_TYPE]); self::assertSame($path->uri(), $spans[0]->attributes()[FilesystemTelemetryAttributes::ATTR_PATH_URI]); self::assertSame(\strlen($data), $spans[0]->attributes()[FilesystemTelemetryAttributes::ATTR_BYTES_TOTAL_WRITTEN]); @@ -70,7 +69,7 @@ public function test_close_completes_lifecycle_span_with_final_attributes() : vo public function test_close_records_exception_and_rethrows() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $path = Path::realpath('/tmp/test.txt'); $exception = new \RuntimeException('Close failed'); @@ -99,7 +98,7 @@ public function test_close_records_exception_and_rethrows() : void public function test_close_without_operations_still_creates_span() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $path = Path::realpath('/tmp/test.txt'); $mockStream = $this->createMock(DestinationStream::class); @@ -110,14 +109,14 @@ public function test_close_without_operations_still_creates_span() : void $spans = $spanProcessor->endedSpans(); self::assertCount(1, $spans); - self::assertSame('DestinationStream', $spans[0]->name()); + self::assertSame('Write test.txt', $spans[0]->name()); self::assertSame(0, $spans[0]->attributes()[FilesystemTelemetryAttributes::ATTR_BYTES_TOTAL_WRITTEN]); } public function test_from_resource_tracks_bytes_written() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $path = Path::realpath('/tmp/test.txt'); $resource = \fopen('php://memory', 'rb'); self::assertIsResource($resource); @@ -135,7 +134,7 @@ public function test_from_resource_tracks_bytes_written() : void $spans = $spanProcessor->endedSpans(); self::assertCount(1, $spans); - self::assertSame('DestinationStream', $spans[0]->name()); + self::assertSame('Write test.txt', $spans[0]->name()); self::assertSame('destination', $spans[0]->attributes()[FilesystemTelemetryAttributes::ATTR_STREAM_TYPE]); self::assertSame($path->uri(), $spans[0]->attributes()[FilesystemTelemetryAttributes::ATTR_PATH_URI]); self::assertNotNull($spans[0]->status()); @@ -147,7 +146,7 @@ public function test_from_resource_tracks_bytes_written() : void public function test_is_open_delegates_without_affecting_span() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $path = Path::realpath('/tmp/test.txt'); $mockStream = $this->createMock(DestinationStream::class); @@ -163,7 +162,7 @@ public function test_is_open_delegates_without_affecting_span() : void public function test_multiple_appends_create_single_span_with_cumulative_bytes() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $path = Path::realpath('/tmp/test.txt'); $mockStream = $this->createMock(DestinationStream::class); @@ -178,14 +177,14 @@ public function test_multiple_appends_create_single_span_with_cumulative_bytes() $spans = $spanProcessor->endedSpans(); self::assertCount(1, $spans); - self::assertSame('DestinationStream', $spans[0]->name()); + self::assertSame('Write test.txt', $spans[0]->name()); self::assertSame(13, $spans[0]->attributes()[FilesystemTelemetryAttributes::ATTR_BYTES_TOTAL_WRITTEN]); } public function test_path_delegates_without_affecting_span() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $path = Path::realpath('/tmp/test.txt'); $mockStream = $this->createMock(DestinationStream::class); @@ -200,7 +199,7 @@ public function test_path_delegates_without_affecting_span() : void public function test_span_created_in_constructor() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $path = Path::realpath('/tmp/test.txt'); $mockStream = $this->createMock(DestinationStream::class); @@ -214,15 +213,16 @@ public function test_span_created_in_constructor() : void $spans = $spanProcessor->endedSpans(); self::assertCount(1, $spans); - self::assertSame('DestinationStream', $spans[0]->name()); + self::assertSame('Write test.txt', $spans[0]->name()); self::assertSame('destination', $spans[0]->attributes()[FilesystemTelemetryAttributes::ATTR_STREAM_TYPE]); self::assertSame($path->uri(), $spans[0]->attributes()[FilesystemTelemetryAttributes::ATTR_PATH_URI]); + self::assertSame('file', $spans[0]->attributes()[FilesystemTelemetryAttributes::ATTR_FILESYSTEM_PROTOCOL]); } public function test_tracing_disabled_does_not_create_spans() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor, filesystem_telemetry_options( + $config = FilesystemTelemetryConfigMother::create($spanProcessor, filesystem_telemetry_options( traceStreams: false, collectMetrics: false, )); @@ -238,19 +238,4 @@ public function test_tracing_disabled_does_not_create_spans() : void self::assertEmpty($spanProcessor->endedSpans()); } - - private function createConfig(MemorySpanProcessor $spanProcessor, ?FilesystemTelemetryOptions $options = null) : FilesystemTelemetryConfig - { - $clock = new SystemClock(); - $contextStorage = memory_context_storage(); - - $tel = telemetry( - resource(), - tracer_provider($spanProcessor, $clock, $contextStorage), - meter_provider(memory_metric_processor(void_metric_exporter()), $clock), - logger_provider(memory_log_processor(void_log_exporter()), $clock, $contextStorage), - ); - - return filesystem_telemetry_config($tel, $clock, $options ?? filesystem_telemetry_options()); - } } diff --git a/src/lib/filesystem/tests/Flow/Filesystem/Tests/Unit/Telemetry/TraceableFilesystemTest.php b/src/lib/filesystem/tests/Flow/Filesystem/Tests/Unit/Telemetry/TraceableFilesystemTest.php index 0489d11168..f5e46d6ade 100644 --- a/src/lib/filesystem/tests/Flow/Filesystem/Tests/Unit/Telemetry/TraceableFilesystemTest.php +++ b/src/lib/filesystem/tests/Flow/Filesystem/Tests/Unit/Telemetry/TraceableFilesystemTest.php @@ -4,12 +4,11 @@ namespace Flow\Filesystem\Tests\Unit\Telemetry; -use function Flow\Filesystem\DSL\{filesystem_telemetry_config, filesystem_telemetry_options, path, protocol}; -use function Flow\Telemetry\DSL\{logger_provider, memory_context_storage, memory_log_processor, memory_metric_processor, memory_span_processor, meter_provider, resource, telemetry, tracer_provider, void_log_exporter, void_metric_exporter, void_span_exporter}; +use function Flow\Filesystem\DSL\{filesystem_telemetry_options, path, protocol}; +use function Flow\Telemetry\DSL\{memory_span_processor, void_span_exporter}; use Flow\Filesystem\{DestinationStream, FileStatus, Filesystem, Path, SourceStream}; -use Flow\Filesystem\Telemetry\{FilesystemTelemetryConfig, FilesystemTelemetryOptions, TraceableDestinationStream, TraceableFilesystem, TraceableSourceStream}; -use Flow\Telemetry\Provider\Clock\SystemClock; -use Flow\Telemetry\Provider\Memory\MemorySpanProcessor; +use Flow\Filesystem\Telemetry\{TraceableDestinationStream, TraceableFilesystem, TraceableSourceStream}; +use Flow\Filesystem\Tests\Mother\FilesystemTelemetryConfigMother; use PHPUnit\Framework\TestCase; final class TraceableFilesystemTest extends TestCase @@ -17,7 +16,7 @@ final class TraceableFilesystemTest extends TestCase public function test_all_telemetry_disabled_does_not_wrap_streams() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor, filesystem_telemetry_options( + $config = FilesystemTelemetryConfigMother::create($spanProcessor, filesystem_telemetry_options( traceStreams: false, collectMetrics: false, )); @@ -40,7 +39,7 @@ public function test_all_telemetry_disabled_does_not_wrap_streams() : void public function test_append_to_rethrows_exception() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $path = Path::realpath('/tmp/test.txt'); $exception = new \RuntimeException('Append failed'); @@ -59,7 +58,7 @@ public function test_append_to_rethrows_exception() : void public function test_append_to_returns_traceable_destination_stream() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $path = Path::realpath('/tmp/test.txt'); $mockStream = $this->createMock(DestinationStream::class); @@ -78,7 +77,7 @@ public function test_append_to_returns_traceable_destination_stream() : void public function test_get_system_tmp_dir_delegates_to_underlying_filesystem() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $tmpPath = Path::realpath('/tmp'); $mockFilesystem = $this->createMock(Filesystem::class); @@ -93,7 +92,7 @@ public function test_get_system_tmp_dir_delegates_to_underlying_filesystem() : v public function test_list_delegates_to_underlying_filesystem() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $path = path('file://tmp/**/*.txt'); $mockFilesystem = $this->createMock(Filesystem::class); @@ -111,7 +110,7 @@ public function test_list_delegates_to_underlying_filesystem() : void public function test_mv_delegates_to_underlying_filesystem() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $from = Path::realpath('/tmp/source.txt'); $to = Path::realpath('/tmp/dest.txt'); @@ -129,7 +128,7 @@ public function test_mv_delegates_to_underlying_filesystem() : void public function test_protocol_delegates_to_underlying_filesystem() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $protocol = protocol('s3'); $mockFilesystem = $this->createMock(Filesystem::class); @@ -144,7 +143,7 @@ public function test_protocol_delegates_to_underlying_filesystem() : void public function test_read_from_rethrows_exception() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $path = Path::realpath('/tmp/test.txt'); $exception = new \RuntimeException('Read failed'); @@ -163,7 +162,7 @@ public function test_read_from_rethrows_exception() : void public function test_read_from_returns_traceable_source_stream() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $path = Path::realpath('/tmp/test.txt'); $mockStream = $this->createMock(SourceStream::class); @@ -182,7 +181,7 @@ public function test_read_from_returns_traceable_source_stream() : void public function test_rm_delegates_to_underlying_filesystem() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $path = Path::realpath('/tmp/test.txt'); $mockFilesystem = $this->createMock(Filesystem::class); @@ -199,7 +198,7 @@ public function test_rm_delegates_to_underlying_filesystem() : void public function test_status_delegates_to_underlying_filesystem() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $path = Path::realpath('/tmp/test.txt'); $fileStatus = new FileStatus($path, true); @@ -217,7 +216,7 @@ public function test_status_delegates_to_underlying_filesystem() : void public function test_stream_tracing_enabled_wraps_streams() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor, filesystem_telemetry_options( + $config = FilesystemTelemetryConfigMother::create($spanProcessor, filesystem_telemetry_options( traceStreams: true, )); $path = Path::realpath('/tmp/test.txt'); @@ -238,7 +237,7 @@ public function test_stream_tracing_enabled_wraps_streams() : void public function test_write_to_rethrows_exception() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $path = Path::realpath('/tmp/test.txt'); $exception = new \RuntimeException('Write failed'); @@ -257,7 +256,7 @@ public function test_write_to_rethrows_exception() : void public function test_write_to_returns_traceable_destination_stream() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $path = Path::realpath('/tmp/test.txt'); $mockStream = $this->createMock(DestinationStream::class); @@ -272,19 +271,4 @@ public function test_write_to_returns_traceable_destination_stream() : void self::assertInstanceOf(TraceableDestinationStream::class, $stream); } - - private function createConfig(MemorySpanProcessor $spanProcessor, ?FilesystemTelemetryOptions $options = null) : FilesystemTelemetryConfig - { - $clock = new SystemClock(); - $contextStorage = memory_context_storage(); - - $tel = telemetry( - resource(), - tracer_provider($spanProcessor, $clock, $contextStorage), - meter_provider(memory_metric_processor(void_metric_exporter()), $clock), - logger_provider(memory_log_processor(void_log_exporter()), $clock, $contextStorage), - ); - - return filesystem_telemetry_config($tel, $clock, $options ?? filesystem_telemetry_options()); - } } diff --git a/src/lib/filesystem/tests/Flow/Filesystem/Tests/Unit/Telemetry/TraceableSourceStreamTest.php b/src/lib/filesystem/tests/Flow/Filesystem/Tests/Unit/Telemetry/TraceableSourceStreamTest.php index 6c0bf79501..a2e8f421dd 100644 --- a/src/lib/filesystem/tests/Flow/Filesystem/Tests/Unit/Telemetry/TraceableSourceStreamTest.php +++ b/src/lib/filesystem/tests/Flow/Filesystem/Tests/Unit/Telemetry/TraceableSourceStreamTest.php @@ -4,12 +4,11 @@ namespace Flow\Filesystem\Tests\Unit\Telemetry; -use function Flow\Filesystem\DSL\{filesystem_telemetry_config, filesystem_telemetry_options}; -use function Flow\Telemetry\DSL\{logger_provider, memory_context_storage, memory_log_processor, memory_metric_processor, memory_span_processor, meter_provider, resource, telemetry, tracer_provider, void_log_exporter, void_metric_exporter, void_span_exporter}; +use function Flow\Filesystem\DSL\filesystem_telemetry_options; +use function Flow\Telemetry\DSL\{memory_span_processor, void_span_exporter}; use Flow\Filesystem\{Path, SourceStream}; -use Flow\Filesystem\Telemetry\{FilesystemTelemetryAttributes, FilesystemTelemetryConfig, FilesystemTelemetryOptions, TraceableSourceStream}; -use Flow\Telemetry\Provider\Clock\SystemClock; -use Flow\Telemetry\Provider\Memory\MemorySpanProcessor; +use Flow\Filesystem\Telemetry\{FilesystemTelemetryAttributes, TraceableSourceStream}; +use Flow\Filesystem\Tests\Mother\FilesystemTelemetryConfigMother; use PHPUnit\Framework\TestCase; final class TraceableSourceStreamTest extends TestCase @@ -17,7 +16,7 @@ final class TraceableSourceStreamTest extends TestCase public function test_close_completes_lifecycle_span_with_final_attributes() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $path = Path::realpath('/tmp/test.txt'); $content = 'Hello, World!'; @@ -31,7 +30,7 @@ public function test_close_completes_lifecycle_span_with_final_attributes() : vo $spans = $spanProcessor->endedSpans(); self::assertCount(1, $spans); - self::assertSame('SourceStream', $spans[0]->name()); + self::assertSame('Read test.txt', $spans[0]->name()); self::assertSame('source', $spans[0]->attributes()[FilesystemTelemetryAttributes::ATTR_STREAM_TYPE]); self::assertSame($path->uri(), $spans[0]->attributes()[FilesystemTelemetryAttributes::ATTR_PATH_URI]); self::assertSame(\strlen($content), $spans[0]->attributes()[FilesystemTelemetryAttributes::ATTR_BYTES_TOTAL_READ]); @@ -42,7 +41,7 @@ public function test_close_completes_lifecycle_span_with_final_attributes() : vo public function test_close_records_exception_and_rethrows() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $path = Path::realpath('/tmp/test.txt'); $exception = new \RuntimeException('Close failed'); @@ -71,7 +70,7 @@ public function test_close_records_exception_and_rethrows() : void public function test_close_without_operations_still_creates_span() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $path = Path::realpath('/tmp/test.txt'); $mockStream = $this->createMock(SourceStream::class); @@ -82,14 +81,14 @@ public function test_close_without_operations_still_creates_span() : void $spans = $spanProcessor->endedSpans(); self::assertCount(1, $spans); - self::assertSame('SourceStream', $spans[0]->name()); + self::assertSame('Read test.txt', $spans[0]->name()); self::assertSame(0, $spans[0]->attributes()[FilesystemTelemetryAttributes::ATTR_BYTES_TOTAL_READ]); } public function test_content_tracks_bytes_read() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $path = Path::realpath('/tmp/test.txt'); $content = 'Hello, World!'; @@ -106,14 +105,14 @@ public function test_content_tracks_bytes_read() : void $spans = $spanProcessor->endedSpans(); self::assertCount(1, $spans); - self::assertSame('SourceStream', $spans[0]->name()); + self::assertSame('Read test.txt', $spans[0]->name()); self::assertSame(\strlen($content), $spans[0]->attributes()[FilesystemTelemetryAttributes::ATTR_BYTES_TOTAL_READ]); } public function test_is_open_delegates_without_affecting_span() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $path = Path::realpath('/tmp/test.txt'); $mockStream = $this->createMock(SourceStream::class); @@ -129,7 +128,7 @@ public function test_is_open_delegates_without_affecting_span() : void public function test_iterate_tracks_bytes_read_cumulatively() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $path = Path::realpath('/tmp/test.txt'); $chunks = ['Hello', ', ', 'World', '!']; @@ -148,14 +147,14 @@ public function test_iterate_tracks_bytes_read_cumulatively() : void $spans = $spanProcessor->endedSpans(); self::assertCount(1, $spans); - self::assertSame('SourceStream', $spans[0]->name()); + self::assertSame('Read test.txt', $spans[0]->name()); self::assertSame(\strlen(\implode('', $chunks)), $spans[0]->attributes()[FilesystemTelemetryAttributes::ATTR_BYTES_TOTAL_READ]); } public function test_multiple_operations_track_cumulative_bytes() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $path = Path::realpath('/tmp/test.txt'); $mockStream = $this->createMock(SourceStream::class); @@ -177,7 +176,7 @@ public function test_multiple_operations_track_cumulative_bytes() : void public function test_path_delegates_without_affecting_span() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $path = Path::realpath('/tmp/test.txt'); $mockStream = $this->createMock(SourceStream::class); @@ -192,7 +191,7 @@ public function test_path_delegates_without_affecting_span() : void public function test_read_lines_tracks_bytes_read() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $path = Path::realpath('/tmp/test.txt'); $lines = ['line1', 'line2', 'line3']; @@ -211,13 +210,13 @@ public function test_read_lines_tracks_bytes_read() : void $spans = $spanProcessor->endedSpans(); self::assertCount(1, $spans); - self::assertSame('SourceStream', $spans[0]->name()); + self::assertSame('Read test.txt', $spans[0]->name()); } public function test_read_tracks_bytes_read() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $path = Path::realpath('/tmp/test.txt'); $content = 'Hello'; @@ -234,14 +233,14 @@ public function test_read_tracks_bytes_read() : void $spans = $spanProcessor->endedSpans(); self::assertCount(1, $spans); - self::assertSame('SourceStream', $spans[0]->name()); + self::assertSame('Read test.txt', $spans[0]->name()); self::assertSame(\strlen($content), $spans[0]->attributes()[FilesystemTelemetryAttributes::ATTR_BYTES_TOTAL_READ]); } public function test_size_delegates_without_affecting_span() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $path = Path::realpath('/tmp/test.txt'); $mockStream = $this->createMock(SourceStream::class); @@ -257,7 +256,7 @@ public function test_size_delegates_without_affecting_span() : void public function test_span_created_in_constructor() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor); + $config = FilesystemTelemetryConfigMother::create($spanProcessor); $path = Path::realpath('/tmp/test.txt'); $mockStream = $this->createMock(SourceStream::class); @@ -271,15 +270,16 @@ public function test_span_created_in_constructor() : void $spans = $spanProcessor->endedSpans(); self::assertCount(1, $spans); - self::assertSame('SourceStream', $spans[0]->name()); + self::assertSame('Read test.txt', $spans[0]->name()); self::assertSame('source', $spans[0]->attributes()[FilesystemTelemetryAttributes::ATTR_STREAM_TYPE]); self::assertSame($path->uri(), $spans[0]->attributes()[FilesystemTelemetryAttributes::ATTR_PATH_URI]); + self::assertSame('file', $spans[0]->attributes()[FilesystemTelemetryAttributes::ATTR_FILESYSTEM_PROTOCOL]); } public function test_tracing_disabled_does_not_create_spans() : void { $spanProcessor = memory_span_processor(void_span_exporter()); - $config = $this->createConfig($spanProcessor, filesystem_telemetry_options( + $config = FilesystemTelemetryConfigMother::create($spanProcessor, filesystem_telemetry_options( traceStreams: false, collectMetrics: false, )); @@ -296,19 +296,4 @@ public function test_tracing_disabled_does_not_create_spans() : void self::assertSame('Hello', $result); self::assertEmpty($spanProcessor->endedSpans()); } - - private function createConfig(MemorySpanProcessor $spanProcessor, ?FilesystemTelemetryOptions $options = null) : FilesystemTelemetryConfig - { - $clock = new SystemClock(); - $contextStorage = memory_context_storage(); - - $tel = telemetry( - resource(), - tracer_provider($spanProcessor, $clock, $contextStorage), - meter_provider(memory_metric_processor(void_metric_exporter()), $clock), - logger_provider(memory_log_processor(void_log_exporter()), $clock, $contextStorage), - ); - - return filesystem_telemetry_config($tel, $clock, $options ?? filesystem_telemetry_options()); - } } diff --git a/src/lib/postgresql/composer.json b/src/lib/postgresql/composer.json index 3b0639c0a4..1dbba0d983 100644 --- a/src/lib/postgresql/composer.json +++ b/src/lib/postgresql/composer.json @@ -12,7 +12,9 @@ ], "require": { "php": "~8.3.0 || ~8.4.0 || ~8.5.0", - "google/protobuf": "^4.0" + "flow-php/telemetry": "self.version", + "google/protobuf": "^4.0", + "psr/clock": "^1.0" }, "require-dev": { "ext-pg_query": "*", diff --git a/src/lib/postgresql/src/Flow/PostgreSql/Client/Client.php b/src/lib/postgresql/src/Flow/PostgreSql/Client/Client.php index 483ed2b55d..9ee45d7b17 100644 --- a/src/lib/postgresql/src/Flow/PostgreSql/Client/Client.php +++ b/src/lib/postgresql/src/Flow/PostgreSql/Client/Client.php @@ -260,6 +260,11 @@ public function isConnected() : bool; */ public function lastInsertId(string $sequenceName) : int|string; + /** + * Get the connection parameters used to establish this connection. + */ + public function parameters() : ConnectionParameters; + /** * Roll back the current transaction. * If nested, rolls back to the savepoint. diff --git a/src/lib/postgresql/src/Flow/PostgreSql/Client/Infrastructure/PgSql/PgSqlClient.php b/src/lib/postgresql/src/Flow/PostgreSql/Client/Infrastructure/PgSql/PgSqlClient.php index 0e0d0c2ff3..7958f79229 100644 --- a/src/lib/postgresql/src/Flow/PostgreSql/Client/Infrastructure/PgSql/PgSqlClient.php +++ b/src/lib/postgresql/src/Flow/PostgreSql/Client/Infrastructure/PgSql/PgSqlClient.php @@ -23,8 +23,12 @@ final class PgSqlClient implements Client private readonly TransactionContext $transactionContext; - private function __construct(private ?Connection $connection, private readonly ValueConverters $valueConverters, private readonly ?RowMapper $defaultMapper = null) - { + private function __construct( + private ?Connection $connection, + private readonly ConnectionParameters $connectionParameters, + private readonly ValueConverters $valueConverters, + private readonly ?RowMapper $defaultMapper = null, + ) { $this->resultCaster = new ResultCaster(); $this->transactionContext = new TransactionContext(); } @@ -52,6 +56,7 @@ public static function connect( return new self( $connection, + $params, $valueConverters ?? ValueConverters::create(), $mapper, ); @@ -348,6 +353,11 @@ public function lastInsertId(string $sequenceName) : int|string return $result; } + public function parameters() : ConnectionParameters + { + return $this->connectionParameters; + } + public function rollBack() : void { $this->assertConnected(); diff --git a/src/lib/postgresql/src/Flow/PostgreSql/Client/Telemetry/ParameterFormatter.php b/src/lib/postgresql/src/Flow/PostgreSql/Client/Telemetry/ParameterFormatter.php new file mode 100644 index 0000000000..e04b8314d5 --- /dev/null +++ b/src/lib/postgresql/src/Flow/PostgreSql/Client/Telemetry/ParameterFormatter.php @@ -0,0 +1,75 @@ +format('c'); + } + + if ($value instanceof TypedValue) { + return \json_encode([ + 'type' => $value->targetType->name, + 'value' => $this->convertToString($value->value), + ], JSON_THROW_ON_ERROR); + } + + if (\is_object($value) && \method_exists($value, '__toString')) { + return (string) $value; + } + + return \get_debug_type($value); + } + + /** + * Format a parameter value with optional length truncation. + * + * @param mixed $value The value to format + * @param null|int $maxLength Maximum length (null = unlimited) + */ + public function format(mixed $value, ?int $maxLength = null) : string + { + $result = $this->convertToString($value); + + if ($maxLength !== null && \strlen($result) > $maxLength) { + return \substr($result, 0, $maxLength) . '...'; + } + + return $result; + } +} diff --git a/src/lib/postgresql/src/Flow/PostgreSql/Client/Telemetry/PostgreSqlTelemetryAttributes.php b/src/lib/postgresql/src/Flow/PostgreSql/Client/Telemetry/PostgreSqlTelemetryAttributes.php new file mode 100644 index 0000000000..89c25cc2a2 --- /dev/null +++ b/src/lib/postgresql/src/Flow/PostgreSql/Client/Telemetry/PostgreSqlTelemetryAttributes.php @@ -0,0 +1,44 @@ +traceQueries, + $this->traceTransactions, + $collect, + $this->logQueries, + $this->maxQueryLength, + $this->includeParameters, + $this->maxParameters, + $this->maxParameterLength, + ); + } + + public function includeParameters(bool $include = true) : self + { + return new self( + $this->traceQueries, + $this->traceTransactions, + $this->collectMetrics, + $this->logQueries, + $this->maxQueryLength, + $include, + $this->maxParameters, + $this->maxParameterLength, + ); + } + + public function logQueries(bool $log = true) : self + { + return new self( + $this->traceQueries, + $this->traceTransactions, + $this->collectMetrics, + $log, + $this->maxQueryLength, + $this->includeParameters, + $this->maxParameters, + $this->maxParameterLength, + ); + } + + public function maxParameterLength(?int $length) : self + { + return new self( + $this->traceQueries, + $this->traceTransactions, + $this->collectMetrics, + $this->logQueries, + $this->maxQueryLength, + $this->includeParameters, + $this->maxParameters, + $length, + ); + } + + public function maxParameters(?int $max) : self + { + return new self( + $this->traceQueries, + $this->traceTransactions, + $this->collectMetrics, + $this->logQueries, + $this->maxQueryLength, + $this->includeParameters, + $max, + $this->maxParameterLength, + ); + } + + public function maxQueryLength(?int $length) : self + { + return new self( + $this->traceQueries, + $this->traceTransactions, + $this->collectMetrics, + $this->logQueries, + $length, + $this->includeParameters, + $this->maxParameters, + $this->maxParameterLength, + ); + } + + public function traceQueries(bool $trace = true) : self + { + return new self( + $trace, + $this->traceTransactions, + $this->collectMetrics, + $this->logQueries, + $this->maxQueryLength, + $this->includeParameters, + $this->maxParameters, + $this->maxParameterLength, + ); + } + + public function traceTransactions(bool $trace = true) : self + { + return new self( + $this->traceQueries, + $trace, + $this->collectMetrics, + $this->logQueries, + $this->maxQueryLength, + $this->includeParameters, + $this->maxParameters, + $this->maxParameterLength, + ); + } +} diff --git a/src/lib/postgresql/src/Flow/PostgreSql/Client/Telemetry/QueryAttributes.php b/src/lib/postgresql/src/Flow/PostgreSql/Client/Telemetry/QueryAttributes.php new file mode 100644 index 0000000000..2ca1b8714e --- /dev/null +++ b/src/lib/postgresql/src/Flow/PostgreSql/Client/Telemetry/QueryAttributes.php @@ -0,0 +1,20 @@ +extract($query)->operation; + } + + /** + * Extract the target table/collection from a query. + * + * Attempts to identify the primary table being operated on by looking + * for FROM, INTO, UPDATE, or JOIN clauses. + * + * @deprecated Use extract() instead for better performance + */ + public function extractTarget(string $query) : ?string + { + return $this->extract($query)->target; + } +} diff --git a/src/lib/postgresql/src/Flow/PostgreSql/Client/Telemetry/TraceableClient.php b/src/lib/postgresql/src/Flow/PostgreSql/Client/Telemetry/TraceableClient.php new file mode 100644 index 0000000000..31d557686c --- /dev/null +++ b/src/lib/postgresql/src/Flow/PostgreSql/Client/Telemetry/TraceableClient.php @@ -0,0 +1,670 @@ + + */ + private array $transactionSpans = []; + + public function __construct( + private readonly Client $client, + private readonly PostgreSqlTelemetryConfig $telemetryConfig, + ) { + $this->queryAttributesExtractor = new QueryAttributesExtractor(); + $this->parameterFormatter = new ParameterFormatter(); + + if ($this->telemetryConfig->options->traceQueries || $this->telemetryConfig->options->traceTransactions) { + $this->tracer = $telemetryConfig->telemetry->tracer( + 'flow_php_postgresql', + PackageVersion::get('flow-php/postgresql'), + ); + } + + if ($this->telemetryConfig->options->collectMetrics) { + $meter = $telemetryConfig->telemetry->meter( + 'flow_php_postgresql', + PackageVersion::get('flow-php/postgresql'), + ); + $this->operationDuration = $meter->createHistogram( + 'operation_duration', + 's', + 'Duration of database client operations', + ); + $this->returnedRows = $meter->createHistogram( + 'response_returned_rows', + '{row}', + 'Number of rows returned by database operations', + ); + } + + if ($this->telemetryConfig->options->logQueries) { + $this->logger = $telemetryConfig->telemetry->logger( + 'flow_php_postgresql', + PackageVersion::get('flow-php/postgresql'), + ); + } + } + + public function beginTransaction() : void + { + $startTime = \hrtime(true); + $nestingLevel = $this->client->getTransactionNestingLevel() + 1; + + try { + $this->client->beginTransaction(); + + if ($this->telemetryConfig->options->traceTransactions && $this->tracer !== null) { + $span = $this->tracer->span( + $this->buildTransactionSpanName('BEGIN', $nestingLevel), + SpanKind::CLIENT, + $this->buildTransactionAttributes($nestingLevel), + ); + $this->transactionSpans[$nestingLevel] = $span; + } + + $this->recordDuration($startTime, $this->buildTransactionAttributes($nestingLevel)); + } catch (\Throwable $e) { + $this->recordDuration($startTime, $this->buildTransactionAttributes($nestingLevel)); + + throw $e; + } + } + + public function close() : void + { + $this->client->close(); + } + + public function commit() : void + { + $startTime = \hrtime(true); + $nestingLevel = $this->client->getTransactionNestingLevel(); + + try { + $this->client->commit(); + + $this->completeTransactionSpan($nestingLevel, SpanStatus::ok()); + $this->recordDuration($startTime, $this->buildTransactionAttributes($nestingLevel)); + } catch (\Throwable $e) { + $this->completeTransactionSpan($nestingLevel, SpanStatus::error($e->getMessage()), $e); + $this->recordDuration($startTime, $this->buildTransactionAttributes($nestingLevel)); + + throw $e; + } + } + + public function converters() : ValueConverters + { + return $this->client->converters(); + } + + public function cursor(SqlQuery|string $sql, array $parameters = []) : Cursor + { + $query = $sql instanceof SqlQuery ? $sql->toSql() : $sql; + $cursor = $this->client->cursor($sql, $parameters); + + if (!$this->telemetryConfig->options->traceQueries && !$this->telemetryConfig->options->collectMetrics) { + return $cursor; + } + + $this->logQuery($query, $parameters); + + return new TraceableCursor($cursor, $this->telemetryConfig, $this->client->parameters(), $query, $parameters); + } + + public function execute(SqlQuery|string $sql, array $parameters = []) : int + { + $query = $sql instanceof SqlQuery ? $sql->toSql() : $sql; + + return $this->traceQuery( + $query, + $parameters, + function () use ($sql, $parameters, $query) : int { + $this->logQuery($query, $parameters); + + return $this->client->execute($sql, $parameters); + }, + static fn (int $affected) => $affected, + ); + } + + public function explain(SqlQuery|string $sql, array $parameters = [], ?ExplainConfig $config = null) : Plan + { + $query = $sql instanceof SqlQuery ? $sql->toSql() : $sql; + + return $this->traceQuery( + $query, + $parameters, + fn () => $this->client->explain($sql, $parameters, $config), + ); + } + + public function fetch(SqlQuery|string $sql, array $parameters = []) : ?array + { + $query = $sql instanceof SqlQuery ? $sql->toSql() : $sql; + + return $this->traceQuery( + $query, + $parameters, + function () use ($sql, $parameters, $query) : ?array { + $this->logQuery($query, $parameters); + + return $this->client->fetch($sql, $parameters); + }, + static fn (?array $row) => $row !== null ? 1 : 0, + ); + } + + public function fetchAll(SqlQuery|string $sql, array $parameters = []) : array + { + $query = $sql instanceof SqlQuery ? $sql->toSql() : $sql; + + return $this->traceQuery( + $query, + $parameters, + function () use ($sql, $parameters, $query) : array { + $this->logQuery($query, $parameters); + + return $this->client->fetchAll($sql, $parameters); + }, + static fn (array $rows) => \count($rows), + ); + } + + public function fetchAllInto( + string $class, + SqlQuery|string $sql, + array $parameters = [], + ?RowMapper $mapper = null, + ) : array { + $query = $sql instanceof SqlQuery ? $sql->toSql() : $sql; + + return $this->traceQuery( + $query, + $parameters, + function () use ($class, $sql, $parameters, $mapper, $query) : array { + $this->logQuery($query, $parameters); + + return $this->client->fetchAllInto($class, $sql, $parameters, $mapper); + }, + static fn (array $rows) => \count($rows), + ); + } + + public function fetchInto( + string $class, + SqlQuery|string $sql, + array $parameters = [], + ?RowMapper $mapper = null, + ) : ?object { + $query = $sql instanceof SqlQuery ? $sql->toSql() : $sql; + + return $this->traceQuery( + $query, + $parameters, + function () use ($class, $sql, $parameters, $mapper, $query) : ?object { + $this->logQuery($query, $parameters); + + return $this->client->fetchInto($class, $sql, $parameters, $mapper); + }, + static fn (?object $obj) => $obj !== null ? 1 : 0, + ); + } + + public function fetchOne(SqlQuery|string $sql, array $parameters = []) : array + { + $query = $sql instanceof SqlQuery ? $sql->toSql() : $sql; + + return $this->traceQuery( + $query, + $parameters, + function () use ($sql, $parameters, $query) : array { + $this->logQuery($query, $parameters); + + return $this->client->fetchOne($sql, $parameters); + }, + static fn (array $row) => 1, + ); + } + + public function fetchOneInto( + string $class, + SqlQuery|string $sql, + array $parameters = [], + ?RowMapper $mapper = null, + ) : object { + $query = $sql instanceof SqlQuery ? $sql->toSql() : $sql; + + return $this->traceQuery( + $query, + $parameters, + function () use ($class, $sql, $parameters, $mapper, $query) : object { + $this->logQuery($query, $parameters); + + return $this->client->fetchOneInto($class, $sql, $parameters, $mapper); + }, + static fn (object $obj) => 1, + ); + } + + public function fetchScalar(SqlQuery|string $sql, array $parameters = []) : mixed + { + $query = $sql instanceof SqlQuery ? $sql->toSql() : $sql; + + return $this->traceQuery( + $query, + $parameters, + function () use ($sql, $parameters, $query) : mixed { + $this->logQuery($query, $parameters); + + return $this->client->fetchScalar($sql, $parameters); + }, + static fn (mixed $value) => $value !== null ? 1 : 0, + ); + } + + public function fetchScalarBool(SqlQuery|string $sql, array $parameters = []) : bool + { + $query = $sql instanceof SqlQuery ? $sql->toSql() : $sql; + + return $this->traceQuery( + $query, + $parameters, + function () use ($sql, $parameters, $query) : bool { + $this->logQuery($query, $parameters); + + return $this->client->fetchScalarBool($sql, $parameters); + }, + static fn (bool $value) => 1, + ); + } + + public function fetchScalarFloat(SqlQuery|string $sql, array $parameters = []) : float + { + $query = $sql instanceof SqlQuery ? $sql->toSql() : $sql; + + return $this->traceQuery( + $query, + $parameters, + function () use ($sql, $parameters, $query) : float { + $this->logQuery($query, $parameters); + + return $this->client->fetchScalarFloat($sql, $parameters); + }, + static fn (float $value) => 1, + ); + } + + public function fetchScalarInt(SqlQuery|string $sql, array $parameters = []) : int + { + $query = $sql instanceof SqlQuery ? $sql->toSql() : $sql; + + return $this->traceQuery( + $query, + $parameters, + function () use ($sql, $parameters, $query) : int { + $this->logQuery($query, $parameters); + + return $this->client->fetchScalarInt($sql, $parameters); + }, + static fn (int $value) => 1, + ); + } + + public function fetchScalarString(SqlQuery|string $sql, array $parameters = []) : string + { + $query = $sql instanceof SqlQuery ? $sql->toSql() : $sql; + + return $this->traceQuery( + $query, + $parameters, + function () use ($sql, $parameters, $query) : string { + $this->logQuery($query, $parameters); + + return $this->client->fetchScalarString($sql, $parameters); + }, + static fn (string $value) => 1, + ); + } + + public function getTransactionNestingLevel() : int + { + return $this->client->getTransactionNestingLevel(); + } + + public function isAutoCommit() : bool + { + return $this->client->isAutoCommit(); + } + + public function isConnected() : bool + { + return $this->client->isConnected(); + } + + public function lastInsertId(string $sequenceName) : int|string + { + return $this->client->lastInsertId($sequenceName); + } + + public function parameters() : ConnectionParameters + { + return $this->client->parameters(); + } + + public function rollBack() : void + { + $startTime = \hrtime(true); + $nestingLevel = $this->client->getTransactionNestingLevel(); + + try { + $this->client->rollBack(); + + $this->completeAllTransactionSpans($nestingLevel, SpanStatus::ok()); + $this->recordDuration($startTime, $this->buildTransactionAttributes($nestingLevel)); + } catch (\Throwable $e) { + $this->completeAllTransactionSpans($nestingLevel, SpanStatus::error($e->getMessage()), $e); + $this->recordDuration($startTime, $this->buildTransactionAttributes($nestingLevel)); + + throw $e; + } + } + + public function setAutoCommit(bool $autoCommit) : void + { + $this->client->setAutoCommit($autoCommit); + } + + public function transaction(callable $callback) : mixed + { + $this->beginTransaction(); + + try { + $returnValue = $callback($this); + $this->commit(); + + return $returnValue; + } catch (\Throwable $e) { + $this->rollBack(); + + throw $e; + } + } + + /** + * @param array $parameters + * + * @return array|bool|float|int|string> + */ + private function buildQueryAttributes(string $query, array $parameters, QueryAttributes $queryAttrs) : array + { + $attributes = [ + PostgreSqlTelemetryAttributes::DB_SYSTEM_NAME => PostgreSqlTelemetryAttributes::DB_SYSTEM_POSTGRESQL, + PostgreSqlTelemetryAttributes::DB_NAMESPACE => $this->client->parameters()->database(), + PostgreSqlTelemetryAttributes::SERVER_ADDRESS => $this->client->parameters()->host(), + ]; + + $port = $this->client->parameters()->port(); + + if ($port !== 5432) { + $attributes[PostgreSqlTelemetryAttributes::SERVER_PORT] = $port; + } + + if ($queryAttrs->operation !== null) { + $attributes[PostgreSqlTelemetryAttributes::DB_OPERATION_NAME] = $queryAttrs->operation; + } + + if ($queryAttrs->target !== null) { + $attributes[PostgreSqlTelemetryAttributes::DB_COLLECTION_NAME] = $queryAttrs->target; + } + + $maxLength = $this->telemetryConfig->options->maxQueryLength; + $queryText = ($maxLength !== null && \strlen($query) > $maxLength) + ? \substr($query, 0, $maxLength) . '...' + : $query; + $attributes[PostgreSqlTelemetryAttributes::DB_QUERY_TEXT] = $queryText; + + if ($this->telemetryConfig->options->includeParameters && $parameters !== []) { + $maxParams = $this->telemetryConfig->options->maxParameters; + $maxParamLength = $this->telemetryConfig->options->maxParameterLength; + $count = 0; + + foreach ($parameters as $index => $value) { + if ($maxParams !== null && $count >= $maxParams) { + break; + } + $key = PostgreSqlTelemetryAttributes::DB_QUERY_PARAMETER_PREFIX . ($index + 1); + $attributes[$key] = $this->parameterFormatter->format($value, $maxParamLength); + $count++; + } + } + + return $attributes; + } + + private function buildSpanName(QueryAttributes $queryAttrs) : string + { + if ($queryAttrs->operation !== null && $queryAttrs->target !== null) { + return $queryAttrs->operation . ' ' . $queryAttrs->target; + } + + if ($queryAttrs->operation !== null) { + return $queryAttrs->operation; + } + + return 'query'; + } + + /** + * @return array|bool|float|int|string> + */ + private function buildTransactionAttributes(int $nestingLevel) : array + { + $attributes = [ + PostgreSqlTelemetryAttributes::DB_SYSTEM_NAME => PostgreSqlTelemetryAttributes::DB_SYSTEM_POSTGRESQL, + PostgreSqlTelemetryAttributes::DB_NAMESPACE => $this->client->parameters()->database(), + PostgreSqlTelemetryAttributes::SERVER_ADDRESS => $this->client->parameters()->host(), + PostgreSqlTelemetryAttributes::DB_TRANSACTION_NESTING_LEVEL => $nestingLevel, + ]; + + $port = $this->client->parameters()->port(); + + if ($port !== 5432) { + $attributes[PostgreSqlTelemetryAttributes::SERVER_PORT] = $port; + } + + if ($nestingLevel > 1) { + $attributes[PostgreSqlTelemetryAttributes::DB_TRANSACTION_SAVEPOINT] = 'savepoint_' . ($nestingLevel - 1); + } + + return $attributes; + } + + private function buildTransactionSpanName(string $operation, int $nestingLevel) : string + { + if ($nestingLevel > 1) { + return $operation . ' SAVEPOINT'; + } + + return $operation . ' TRANSACTION'; + } + + private function completeAllTransactionSpans(int $fromLevel, SpanStatus $status, ?\Throwable $exception = null) : void + { + for ($level = $fromLevel; $level >= 1; $level--) { + $this->completeTransactionSpan($level, $status, $exception); + } + } + + private function completeTransactionSpan(int $nestingLevel, SpanStatus $status, ?\Throwable $exception = null) : void + { + $tracer = $this->tracer; + + if (!isset($this->transactionSpans[$nestingLevel]) || $tracer === null) { + return; + } + + $span = $this->transactionSpans[$nestingLevel]; + + if ($exception !== null) { + $this->recordFailure($span, $exception); + } else { + $span->setStatus($status); + } + + $tracer->complete($span); + unset($this->transactionSpans[$nestingLevel]); + } + + /** + * @param array $parameters + */ + private function logQuery(string $query, array $parameters) : void + { + if ($this->logger === null) { + return; + } + + $queryAttrs = $this->queryAttributesExtractor->extract($query); + + $this->logger->debug( + 'Executing query', + $this->buildQueryAttributes($query, $parameters, $queryAttrs), + ); + } + + /** + * @param array|bool|float|int|string> $attributes + */ + private function recordDuration(int $startTime, array $attributes) : void + { + if ($this->operationDuration === null) { + return; + } + + $duration = (\hrtime(true) - $startTime) / 1_000_000_000; + $this->operationDuration->record($duration, $attributes); + } + + private function recordFailure(Span $span, \Throwable $e) : void + { + $span->recordException($e, $this->telemetryConfig->clock->now()); + $span->setAttribute(PostgreSqlTelemetryAttributes::ERROR_TYPE, $e::class); + + if ($e instanceof QueryException) { + $span->setAttribute( + PostgreSqlTelemetryAttributes::DB_RESPONSE_STATUS_CODE, + $e->error()->sqlState, + ); + } + + $span->setStatus(SpanStatus::error($e->getMessage())); + } + + private function recordRowCount(int $rowCount, QueryAttributes $queryAttrs) : void + { + if ($this->returnedRows === null) { + return; + } + + $attributes = [ + PostgreSqlTelemetryAttributes::DB_SYSTEM_NAME => PostgreSqlTelemetryAttributes::DB_SYSTEM_POSTGRESQL, + PostgreSqlTelemetryAttributes::DB_NAMESPACE => $this->client->parameters()->database(), + ]; + + if ($queryAttrs->operation !== null) { + $attributes[PostgreSqlTelemetryAttributes::DB_OPERATION_NAME] = $queryAttrs->operation; + } + + $this->returnedRows->record($rowCount, $attributes); + } + + /** + * @template T + * + * @param array $parameters + * @param callable(): T $operation + * @param null|callable(T): int $rowCountExtractor + * + * @return T + */ + private function traceQuery(string $query, array $parameters, callable $operation, ?callable $rowCountExtractor = null) : mixed + { + $startTime = \hrtime(true); + $queryAttrs = $this->queryAttributesExtractor->extract($query); + $attributes = $this->buildQueryAttributes($query, $parameters, $queryAttrs); + $span = null; + + if ($this->telemetryConfig->options->traceQueries && $this->tracer !== null) { + $span = $this->tracer->span( + $this->buildSpanName($queryAttrs), + SpanKind::CLIENT, + $attributes, + ); + } + + try { + $result = $operation(); + + if ($span !== null) { + if ($rowCountExtractor !== null) { + $rowCount = $rowCountExtractor($result); + $span->setAttribute(PostgreSqlTelemetryAttributes::DB_RESPONSE_RETURNED_ROWS, $rowCount); + $this->recordRowCount($rowCount, $queryAttrs); + } + + $span->setStatus(SpanStatus::ok()); + } + + $this->recordDuration($startTime, $attributes); + + return $result; + } catch (\Throwable $e) { + if ($span !== null) { + $this->recordFailure($span, $e); + } + + $this->recordDuration($startTime, $attributes); + + throw $e; + } finally { + if ($span !== null && $this->tracer !== null) { + $this->tracer->complete($span); + } + } + } +} diff --git a/src/lib/postgresql/src/Flow/PostgreSql/Client/Telemetry/TraceableCursor.php b/src/lib/postgresql/src/Flow/PostgreSql/Client/Telemetry/TraceableCursor.php new file mode 100644 index 0000000000..e69e73921f --- /dev/null +++ b/src/lib/postgresql/src/Flow/PostgreSql/Client/Telemetry/TraceableCursor.php @@ -0,0 +1,248 @@ + $parameters + */ + public function __construct( + private readonly Cursor $cursor, + private readonly PostgreSqlTelemetryConfig $telemetryConfig, + private readonly ConnectionParameters $connectionParameters, + private readonly string $query, + private readonly array $parameters = [], + ) { + $this->queryAttributesExtractor = new QueryAttributesExtractor(); + $this->parameterFormatter = new ParameterFormatter(); + $this->queryAttrs = $this->queryAttributesExtractor->extract($query); + + if ($this->telemetryConfig->options->traceQueries) { + $this->tracer = $telemetryConfig->telemetry->tracer( + 'flow_php_postgresql', + PackageVersion::get('flow-php/postgresql'), + ); + + $this->span = $this->tracer->span( + $this->buildSpanName(), + SpanKind::CLIENT, + $this->buildQueryAttributes(), + ); + } + + if ($this->telemetryConfig->options->collectMetrics) { + $this->meter = $telemetryConfig->telemetry->meter( + 'flow_php_postgresql', + PackageVersion::get('flow-php/postgresql'), + ); + $this->returnedRows = $this->meter->createHistogram( + 'response_returned_rows', + '{row}', + 'Number of rows returned by database operations', + ); + } + } + + public function count() : int + { + return $this->cursor->count(); + } + + public function free() : void + { + try { + $this->cursor->free(); + $this->completeSpan(SpanStatus::ok()); + } catch (\Throwable $e) { + $this->completeSpan(SpanStatus::error($e->getMessage()), $e); + + throw $e; + } + } + + public function getIterator() : \Traversable + { + return $this->iterate(); + } + + public function iterate() : \Generator + { + try { + foreach ($this->cursor->iterate() as $row) { + $this->rowsIterated++; + + yield $row; + } + + $this->completeSpan(SpanStatus::ok()); + } catch (\Throwable $e) { + $this->completeSpan(SpanStatus::error($e->getMessage()), $e); + + throw $e; + } + } + + public function map(string $class, ?RowMapper $mapper = null) : \Generator + { + try { + foreach ($this->cursor->map($class, $mapper) as $object) { + $this->rowsIterated++; + + yield $object; + } + + $this->completeSpan(SpanStatus::ok()); + } catch (\Throwable $e) { + $this->completeSpan(SpanStatus::error($e->getMessage()), $e); + + throw $e; + } + } + + public function next() : ?array + { + $row = $this->cursor->next(); + + if ($row !== null) { + $this->rowsIterated++; + } + + return $row; + } + + /** + * @return array|bool|float|int|string> + */ + private function buildQueryAttributes() : array + { + $attributes = [ + PostgreSqlTelemetryAttributes::DB_SYSTEM_NAME => PostgreSqlTelemetryAttributes::DB_SYSTEM_POSTGRESQL, + PostgreSqlTelemetryAttributes::DB_NAMESPACE => $this->connectionParameters->database(), + PostgreSqlTelemetryAttributes::SERVER_ADDRESS => $this->connectionParameters->host(), + ]; + + $port = $this->connectionParameters->port(); + + if ($port !== 5432) { + $attributes[PostgreSqlTelemetryAttributes::SERVER_PORT] = $port; + } + + if ($this->queryAttrs->operation !== null) { + $attributes[PostgreSqlTelemetryAttributes::DB_OPERATION_NAME] = $this->queryAttrs->operation; + } + + if ($this->queryAttrs->target !== null) { + $attributes[PostgreSqlTelemetryAttributes::DB_COLLECTION_NAME] = $this->queryAttrs->target; + } + + $maxLength = $this->telemetryConfig->options->maxQueryLength; + $queryText = ($maxLength !== null && \strlen($this->query) > $maxLength) + ? \substr($this->query, 0, $maxLength) . '...' + : $this->query; + $attributes[PostgreSqlTelemetryAttributes::DB_QUERY_TEXT] = $queryText; + + if ($this->telemetryConfig->options->includeParameters && $this->parameters !== []) { + $maxParams = $this->telemetryConfig->options->maxParameters; + $maxParamLength = $this->telemetryConfig->options->maxParameterLength; + $count = 0; + + foreach ($this->parameters as $index => $value) { + if ($maxParams !== null && $count >= $maxParams) { + break; + } + $key = PostgreSqlTelemetryAttributes::DB_QUERY_PARAMETER_PREFIX . ($index + 1); + $attributes[$key] = $this->parameterFormatter->format($value, $maxParamLength); + $count++; + } + } + + return $attributes; + } + + private function buildSpanName() : string + { + if ($this->queryAttrs->operation !== null && $this->queryAttrs->target !== null) { + return $this->queryAttrs->operation . ' ' . $this->queryAttrs->target . ' (cursor)'; + } + + if ($this->queryAttrs->operation !== null) { + return $this->queryAttrs->operation . ' (cursor)'; + } + + return 'cursor'; + } + + private function completeSpan(SpanStatus $status, ?\Throwable $exception = null) : void + { + if ($this->span === null) { + $this->recordMetrics(); + + return; + } + + $this->span->setAttribute(PostgreSqlTelemetryAttributes::DB_RESPONSE_RETURNED_ROWS, $this->rowsIterated); + + if ($exception !== null) { + $this->span->recordException($exception, $this->telemetryConfig->clock->now()); + $this->span->setAttribute(PostgreSqlTelemetryAttributes::ERROR_TYPE, $exception::class); + } + + $this->span->setStatus($status); + + if ($this->tracer !== null) { + $this->tracer->complete($this->span); + } + + $this->recordMetrics(); + $this->span = null; + } + + private function recordMetrics() : void + { + if ($this->returnedRows === null) { + return; + } + + $attributes = [ + PostgreSqlTelemetryAttributes::DB_SYSTEM_NAME => PostgreSqlTelemetryAttributes::DB_SYSTEM_POSTGRESQL, + PostgreSqlTelemetryAttributes::DB_NAMESPACE => $this->connectionParameters->database(), + ]; + + if ($this->queryAttrs->operation !== null) { + $attributes[PostgreSqlTelemetryAttributes::DB_OPERATION_NAME] = $this->queryAttrs->operation; + } + + $this->returnedRows->record($this->rowsIterated, $attributes); + } +} diff --git a/src/lib/postgresql/src/Flow/PostgreSql/DSL/functions.php b/src/lib/postgresql/src/Flow/PostgreSql/DSL/functions.php index 6e564ea99e..019b05f518 100644 --- a/src/lib/postgresql/src/Flow/PostgreSql/DSL/functions.php +++ b/src/lib/postgresql/src/Flow/PostgreSql/DSL/functions.php @@ -12,6 +12,7 @@ use Flow\PostgreSql\Client\Exception\ConnectionException; use Flow\PostgreSql\Client\Infrastructure\PgSql\PgSqlClient; use Flow\PostgreSql\Client\RowMapper\ConstructorMapper; +use Flow\PostgreSql\Client\Telemetry\{PostgreSqlTelemetryConfig, PostgreSqlTelemetryOptions, TraceableClient}; use Flow\PostgreSql\Client\Types\{PostgreSqlType, ValueConverters}; use Flow\PostgreSql\{DeparseOptions, ParsedQuery, Parser}; use Flow\PostgreSql\Explain\Analyzer\PlanAnalyzer; @@ -177,6 +178,8 @@ VacuumFinalStep }; use Flow\PostgreSql\QueryBuilder\With\WithBuilder; +use Flow\Telemetry\Telemetry; +use Psr\Clock\ClockInterface; #[DocumentationDSL(module: Module::PG_QUERY, type: DSLType::HELPER)] function sql_parser() : Parser @@ -2971,6 +2974,125 @@ function pgsql_client( return PgSqlClient::connect($params, $valueConverters, $mapper); } +/** + * Create telemetry options for PostgreSQL client instrumentation. + * + * Controls which telemetry signals (traces, metrics, logs) are enabled + * and how query information is captured. + * + * @param bool $traceQueries Create spans for query execution (default: true) + * @param bool $traceTransactions Create spans for transactions (default: true) + * @param bool $collectMetrics Collect duration and row count metrics (default: true) + * @param bool $logQueries Log executed queries (default: false) + * @param null|int $maxQueryLength Maximum query text length in telemetry (default: 1000, null = unlimited) + * @param bool $includeParameters Include query parameters in telemetry (default: false, security consideration) + * + * @example + * // Default options (traces and metrics enabled) + * $options = postgresql_telemetry_options(); + * + * // Enable query logging + * $options = postgresql_telemetry_options(logQueries: true); + * + * // Disable all but metrics + * $options = postgresql_telemetry_options( + * traceQueries: false, + * traceTransactions: false, + * collectMetrics: true, + * ); + */ +#[DocumentationDSL(module: Module::PG_QUERY, type: DSLType::HELPER)] +function postgresql_telemetry_options( + bool $traceQueries = true, + bool $traceTransactions = true, + bool $collectMetrics = true, + bool $logQueries = false, + ?int $maxQueryLength = 1000, + bool $includeParameters = false, + ?int $maxParameters = 10, + ?int $maxParameterLength = 100, +) : PostgreSqlTelemetryOptions { + return new PostgreSqlTelemetryOptions( + traceQueries: $traceQueries, + traceTransactions: $traceTransactions, + collectMetrics: $collectMetrics, + logQueries: $logQueries, + maxQueryLength: $maxQueryLength, + includeParameters: $includeParameters, + maxParameters: $maxParameters, + maxParameterLength: $maxParameterLength, + ); +} + +/** + * Create telemetry configuration for PostgreSQL client. + * + * Bundles telemetry instance, clock, and options needed to instrument a PostgreSQL client. + * + * @param Telemetry $telemetry The telemetry instance + * @param ClockInterface $clock Clock for timestamps + * @param null|PostgreSqlTelemetryOptions $options Telemetry options (default: all enabled) + * + * @example + * $config = postgresql_telemetry_config( + * telemetry(resource(['service.name' => 'my-app'])), + * new SystemClock(), + * ); + */ +#[DocumentationDSL(module: Module::PG_QUERY, type: DSLType::HELPER)] +function postgresql_telemetry_config( + Telemetry $telemetry, + ClockInterface $clock, + ?PostgreSqlTelemetryOptions $options = null, +) : PostgreSqlTelemetryConfig { + return new PostgreSqlTelemetryConfig( + telemetry: $telemetry, + clock: $clock, + options: $options ?? new PostgreSqlTelemetryOptions(), + ); +} + +/** + * Wrap a PostgreSQL client with telemetry instrumentation. + * + * Returns a decorator that adds spans, metrics, and logs to all + * query and transaction operations following OpenTelemetry conventions. + * + * @param Client\Client $client The PostgreSQL client to instrument + * @param PostgreSqlTelemetryConfig $telemetryConfig Telemetry configuration + * + * @example + * $client = pgsql_client(pgsql_connection('host=localhost dbname=mydb')); + * + * $traceableClient = traceable_postgresql_client( + * $client, + * postgresql_telemetry_config( + * telemetry(resource(['service.name' => 'my-app'])), + * new SystemClock(), + * postgresql_telemetry_options( + * traceQueries: true, + * traceTransactions: true, + * collectMetrics: true, + * logQueries: true, + * maxQueryLength: 500, + * ), + * ), + * ); + * + * // All operations now traced + * $traceableClient->transaction(function (Client $client) { + * $user = $client->fetchOne('SELECT * FROM users WHERE id = $1', [123]); + * $client->execute('UPDATE users SET last_login = NOW() WHERE id = $1', [123]); + * }); + */ +#[DocumentationDSL(module: Module::PG_QUERY, type: DSLType::HELPER)] +function traceable_postgresql_client( + Client\Client $client, + PostgreSqlTelemetryConfig $telemetryConfig, +) : TraceableClient { + return new TraceableClient($client, $telemetryConfig); +} + /** * Create a default constructor-based row mapper. * diff --git a/src/lib/postgresql/tests/Flow/PostgreSql/Tests/Integration/Client/Telemetry/TraceableClientTest.php b/src/lib/postgresql/tests/Flow/PostgreSql/Tests/Integration/Client/Telemetry/TraceableClientTest.php new file mode 100644 index 0000000000..60f28be8b4 --- /dev/null +++ b/src/lib/postgresql/tests/Flow/PostgreSql/Tests/Integration/Client/Telemetry/TraceableClientTest.php @@ -0,0 +1,258 @@ +baseClient = pgsql_client( + pgsql_connection_dsn($dsn), + mapper: pgsql_mapper(), + ); + } + + protected function tearDown() : void + { + if (isset($this->baseClient)) { + $this->baseClient->close(); + } + } + + public function test_cursor_iteration_creates_span() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor, options: postgresql_telemetry_options( + traceQueries: true, + )); + $client = traceable_postgresql_client($this->baseClient, $config); + + $client->execute('CREATE TEMP TABLE test_cursor (id serial PRIMARY KEY, name text)'); + $client->execute('INSERT INTO test_cursor (name) VALUES ($1), ($2)', ['John', 'Jane']); + + $cursor = $client->cursor('SELECT * FROM test_cursor'); + $rows = []; + + foreach ($cursor->iterate() as $row) { + $rows[] = $row; + } + + self::assertCount(2, $rows); + + $spans = $spanProcessor->endedSpans(); + $cursorSpan = \array_filter($spans, static fn ($s) => \str_contains($s->name(), 'cursor')); + self::assertNotEmpty($cursorSpan); + + $cursorSpan = \array_values($cursorSpan)[0]; + self::assertSame(2, $cursorSpan->attributes()[PostgreSqlTelemetryAttributes::DB_RESPONSE_RETURNED_ROWS]); + } + + public function test_execute_creates_span_with_database_attributes() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor); + $client = traceable_postgresql_client($this->baseClient, $config); + + $client->execute('CREATE TEMP TABLE test_execute_span (id serial PRIMARY KEY, name text)'); + $client->execute('INSERT INTO test_execute_span (name) VALUES ($1)', ['John']); + + $spans = $spanProcessor->endedSpans(); + self::assertCount(2, $spans); + + $insertSpan = $spans[1]; + self::assertSame('INSERT test_execute_span', $insertSpan->name()); + self::assertSame('postgresql', $insertSpan->attributes()[PostgreSqlTelemetryAttributes::DB_SYSTEM_NAME]); + self::assertSame('INSERT', $insertSpan->attributes()[PostgreSqlTelemetryAttributes::DB_OPERATION_NAME]); + self::assertSame('test_execute_span', $insertSpan->attributes()[PostgreSqlTelemetryAttributes::DB_COLLECTION_NAME]); + self::assertArrayHasKey(PostgreSqlTelemetryAttributes::DB_NAMESPACE, $insertSpan->attributes()); + self::assertArrayHasKey(PostgreSqlTelemetryAttributes::SERVER_ADDRESS, $insertSpan->attributes()); + } + + public function test_failed_query_records_error_in_span() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor); + $client = traceable_postgresql_client($this->baseClient, $config); + + try { + $client->execute('SELECT * FROM nonexistent_table_12345'); + } catch (\Throwable) { + } + + $spans = $spanProcessor->endedSpans(); + self::assertCount(1, $spans); + self::assertNotNull($spans[0]->status()); + self::assertTrue($spans[0]->status()->isError()); + self::assertArrayHasKey(PostgreSqlTelemetryAttributes::ERROR_TYPE, $spans[0]->attributes()); + } + + public function test_fetch_creates_span_with_row_count() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor); + $client = traceable_postgresql_client($this->baseClient, $config); + + $client->execute('CREATE TEMP TABLE test_fetch_span (id serial PRIMARY KEY, name text)'); + $client->execute('INSERT INTO test_fetch_span (name) VALUES ($1), ($2), ($3)', ['John', 'Jane', 'Bob']); + $result = $client->fetchAll('SELECT * FROM test_fetch_span'); + + self::assertCount(3, $result); + + $spans = $spanProcessor->endedSpans(); + $selectSpan = \array_filter($spans, static fn ($s) => \str_contains($s->name(), 'SELECT')); + $selectSpan = \array_values($selectSpan)[0]; + + self::assertSame(3, $selectSpan->attributes()[PostgreSqlTelemetryAttributes::DB_RESPONSE_RETURNED_ROWS]); + } + + public function test_logging_records_query_execution() : void + { + $logProcessor = memory_log_processor(void_log_exporter()); + $config = $this->createConfig(logProcessor: $logProcessor, options: postgresql_telemetry_options( + logQueries: true, + )); + $client = traceable_postgresql_client($this->baseClient, $config); + + $client->execute('CREATE TEMP TABLE test_logging (id serial PRIMARY KEY)'); + $client->execute('INSERT INTO test_logging DEFAULT VALUES'); + + $logs = $logProcessor->entries(); + self::assertCount(2, $logs); + self::assertSame('Executing query', $logs[0]->record->body); + self::assertSame(Severity::DEBUG, $logs[0]->record->severity); + } + + public function test_metrics_record_operation_duration() : void + { + $metricProcessor = memory_metric_processor(void_metric_exporter()); + $config = $this->createConfig(metricProcessor: $metricProcessor, options: postgresql_telemetry_options( + collectMetrics: true, + )); + $client = traceable_postgresql_client($this->baseClient, $config); + + $client->execute('SELECT 1'); + + $this->collectMetrics($config); + + $durationMetrics = $metricProcessor->metricsWithName('operation_duration'); + self::assertCount(1, $durationMetrics); + self::assertSame(MetricType::HISTOGRAM, $durationMetrics[0]->type); + self::assertGreaterThan(0, $durationMetrics[0]->value); + } + + public function test_nested_transaction_creates_savepoint_span() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor, options: postgresql_telemetry_options( + traceTransactions: true, + traceQueries: false, + )); + $client = traceable_postgresql_client($this->baseClient, $config); + + $client->execute('CREATE TEMP TABLE test_nested_tx (id serial PRIMARY KEY)'); + $client->transaction(static function (Client $outer) : void { + $outer->execute('INSERT INTO test_nested_tx DEFAULT VALUES'); + + $outer->transaction(static function (Client $inner) : void { + $inner->execute('INSERT INTO test_nested_tx DEFAULT VALUES'); + }); + }); + + $spans = $spanProcessor->endedSpans(); + self::assertCount(2, $spans); + + $spanNames = \array_map(static fn ($s) => $s->name(), $spans); + self::assertContains('BEGIN TRANSACTION', $spanNames); + self::assertContains('BEGIN SAVEPOINT', $spanNames); + } + + public function test_parameters_are_included_when_enabled() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor, options: postgresql_telemetry_options( + includeParameters: true, + )); + $client = traceable_postgresql_client($this->baseClient, $config); + + $client->execute('CREATE TEMP TABLE test_params (id serial PRIMARY KEY, name text)'); + $client->execute('INSERT INTO test_params (name) VALUES ($1)', ['John']); + + $spans = $spanProcessor->endedSpans(); + $insertSpan = \array_filter($spans, static fn ($s) => \str_contains($s->name(), 'INSERT')); + $insertSpan = \array_values($insertSpan)[0]; + + self::assertSame('John', $insertSpan->attributes()[PostgreSqlTelemetryAttributes::DB_QUERY_PARAMETER_PREFIX . '1']); + } + + public function test_transaction_creates_span() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor, options: postgresql_telemetry_options( + traceTransactions: true, + traceQueries: false, + )); + $client = traceable_postgresql_client($this->baseClient, $config); + + $client->execute('CREATE TEMP TABLE test_tx_span (id serial PRIMARY KEY)'); + $client->transaction(static function (Client $c) : void { + $c->execute('INSERT INTO test_tx_span DEFAULT VALUES'); + }); + + $spans = $spanProcessor->endedSpans(); + self::assertCount(1, $spans); + self::assertSame('BEGIN TRANSACTION', $spans[0]->name()); + self::assertSame(1, $spans[0]->attributes()[PostgreSqlTelemetryAttributes::DB_TRANSACTION_NESTING_LEVEL]); + } + + private function collectMetrics($config) : void + { + $meter = $config->telemetry->meter('flow_php_postgresql'); + + foreach ($meter->collect() as $metric) { + $meter->processor()->process($metric); + } + } + + private function createConfig( + ?MemorySpanProcessor $spanProcessor = null, + ?MemoryMetricProcessor $metricProcessor = null, + ?MemoryLogProcessor $logProcessor = null, + $options = null, + ) { + $clock = new SystemClock(); + $contextStorage = memory_context_storage(); + + $tel = telemetry( + resource(), + tracer_provider($spanProcessor ?? memory_span_processor(void_span_exporter()), $clock, $contextStorage), + meter_provider($metricProcessor ?? memory_metric_processor(void_metric_exporter()), $clock), + logger_provider($logProcessor ?? memory_log_processor(void_log_exporter()), $clock, $contextStorage), + ); + + return postgresql_telemetry_config($tel, $clock, $options ?? postgresql_telemetry_options()); + } +} diff --git a/src/lib/postgresql/tests/Flow/PostgreSql/Tests/Unit/Client/Telemetry/ParameterFormatterTest.php b/src/lib/postgresql/tests/Flow/PostgreSql/Tests/Unit/Client/Telemetry/ParameterFormatterTest.php new file mode 100644 index 0000000000..7047070483 --- /dev/null +++ b/src/lib/postgresql/tests/Flow/PostgreSql/Tests/Unit/Client/Telemetry/ParameterFormatterTest.php @@ -0,0 +1,163 @@ +convertToString([1, 2, 3])); + } + + public function test_convert_to_string_associative_array() : void + { + $formatter = new ParameterFormatter(); + + self::assertSame('{"name":"John","age":30}', $formatter->convertToString(['name' => 'John', 'age' => 30])); + } + + public function test_convert_to_string_boolean_false() : void + { + $formatter = new ParameterFormatter(); + + self::assertSame('false', $formatter->convertToString(false)); + } + + public function test_convert_to_string_boolean_true() : void + { + $formatter = new ParameterFormatter(); + + self::assertSame('true', $formatter->convertToString(true)); + } + + public function test_convert_to_string_datetime() : void + { + $formatter = new ParameterFormatter(); + $date = new \DateTimeImmutable('2024-01-15T10:30:00+00:00'); + + self::assertSame('2024-01-15T10:30:00+00:00', $formatter->convertToString($date)); + } + + public function test_convert_to_string_float() : void + { + $formatter = new ParameterFormatter(); + + self::assertSame('3.14', $formatter->convertToString(3.14)); + } + + public function test_convert_to_string_integer() : void + { + $formatter = new ParameterFormatter(); + + self::assertSame('42', $formatter->convertToString(42)); + } + + public function test_convert_to_string_null() : void + { + $formatter = new ParameterFormatter(); + + self::assertSame('NULL', $formatter->convertToString(null)); + } + + public function test_convert_to_string_object_with_to_string() : void + { + $formatter = new ParameterFormatter(); + $object = new class { + public function __toString() : string + { + return 'custom_string'; + } + }; + + self::assertSame('custom_string', $formatter->convertToString($object)); + } + + public function test_convert_to_string_object_without_to_string() : void + { + $formatter = new ParameterFormatter(); + $object = new \stdClass(); + + self::assertSame('stdClass', $formatter->convertToString($object)); + } + + public function test_convert_to_string_resource() : void + { + $formatter = new ParameterFormatter(); + $resource = \fopen('php://memory', 'rb'); + + self::assertSame('resource (stream)', $formatter->convertToString($resource)); + + \fclose($resource); + } + + public function test_convert_to_string_string() : void + { + $formatter = new ParameterFormatter(); + + self::assertSame('hello world', $formatter->convertToString('hello world')); + } + + public function test_convert_to_string_typed_value() : void + { + $formatter = new ParameterFormatter(); + $typedValue = new TypedValue('some_value', PostgreSqlType::TEXT); + + $result = $formatter->convertToString($typedValue); + + self::assertSame('{"type":"TEXT","value":"some_value"}', $result); + } + + public function test_convert_to_string_typed_value_with_nested_value() : void + { + $formatter = new ParameterFormatter(); + $typedValue = new TypedValue(['a', 'b', 'c'], PostgreSqlType::TEXT_ARRAY); + + $result = $formatter->convertToString($typedValue); + + self::assertSame('{"type":"TEXT_ARRAY","value":"[\"a\",\"b\",\"c\"]"}', $result); + } + + public function test_format_does_not_truncate_when_max_length_null() : void + { + $formatter = new ParameterFormatter(); + $longValue = \str_repeat('a', 200); + + self::assertSame($longValue, $formatter->format($longValue, null)); + } + + public function test_format_does_not_truncate_when_under_max_length() : void + { + $formatter = new ParameterFormatter(); + + self::assertSame('short', $formatter->format('short', 100)); + } + + public function test_format_truncates_at_exact_boundary() : void + { + $formatter = new ParameterFormatter(); + $value = 'exactly10!'; + + self::assertSame('exactly10!', $formatter->format($value, 10)); + } + + public function test_format_truncates_when_over_max_length() : void + { + $formatter = new ParameterFormatter(); + $longValue = \str_repeat('a', 200); + + $result = $formatter->format($longValue, 100); + + self::assertSame(103, \strlen($result)); + self::assertStringEndsWith('...', $result); + self::assertStringStartsWith(\str_repeat('a', 100), $result); + } +} diff --git a/src/lib/postgresql/tests/Flow/PostgreSql/Tests/Unit/Client/Telemetry/PostgreSqlTelemetryAttributesTest.php b/src/lib/postgresql/tests/Flow/PostgreSql/Tests/Unit/Client/Telemetry/PostgreSqlTelemetryAttributesTest.php new file mode 100644 index 0000000000..47d26676df --- /dev/null +++ b/src/lib/postgresql/tests/Flow/PostgreSql/Tests/Unit/Client/Telemetry/PostgreSqlTelemetryAttributesTest.php @@ -0,0 +1,73 @@ +createTelemetry($clock); + $options = postgresql_telemetry_options( + traceQueries: false, + traceTransactions: false, + collectMetrics: false, + logQueries: true, + ); + + $config = postgresql_telemetry_config($tel, $clock, $options); + + self::assertSame($tel, $config->telemetry); + self::assertSame($clock, $config->clock); + self::assertSame($options, $config->options); + self::assertFalse($config->options->traceQueries); + self::assertFalse($config->options->traceTransactions); + self::assertFalse($config->options->collectMetrics); + self::assertTrue($config->options->logQueries); + } + + public function test_config_can_be_created_with_default_options() : void + { + $clock = new SystemClock(); + $tel = $this->createTelemetry($clock); + + $config = postgresql_telemetry_config($tel, $clock); + + self::assertSame($tel, $config->telemetry); + self::assertSame($clock, $config->clock); + self::assertTrue($config->options->traceQueries); + self::assertTrue($config->options->traceTransactions); + self::assertTrue($config->options->collectMetrics); + self::assertFalse($config->options->logQueries); + } + + private function createTelemetry(SystemClock $clock) : \Flow\Telemetry\Telemetry + { + $contextStorage = memory_context_storage(); + + return telemetry( + resource(), + tracer_provider(memory_span_processor(void_span_exporter()), $clock, $contextStorage), + meter_provider(memory_metric_processor(void_metric_exporter()), $clock), + logger_provider(memory_log_processor(void_log_exporter()), $clock, $contextStorage), + ); + } +} diff --git a/src/lib/postgresql/tests/Flow/PostgreSql/Tests/Unit/Client/Telemetry/PostgreSqlTelemetryOptionsTest.php b/src/lib/postgresql/tests/Flow/PostgreSql/Tests/Unit/Client/Telemetry/PostgreSqlTelemetryOptionsTest.php new file mode 100644 index 0000000000..c0dfb8e8df --- /dev/null +++ b/src/lib/postgresql/tests/Flow/PostgreSql/Tests/Unit/Client/Telemetry/PostgreSqlTelemetryOptionsTest.php @@ -0,0 +1,169 @@ +traceQueries); + self::assertTrue($options->traceTransactions); + self::assertTrue($options->collectMetrics); + self::assertFalse($options->logQueries); + self::assertSame(1000, $options->maxQueryLength); + self::assertFalse($options->includeParameters); + self::assertSame(10, $options->maxParameters); + self::assertSame(100, $options->maxParameterLength); + } + + public function test_fluent_interface_allows_chaining() : void + { + $options = postgresql_telemetry_options() + ->traceQueries(false) + ->traceTransactions(false) + ->collectMetrics(false) + ->logQueries(true) + ->maxQueryLength(500) + ->includeParameters(true) + ->maxParameters(5) + ->maxParameterLength(50); + + self::assertFalse($options->traceQueries); + self::assertFalse($options->traceTransactions); + self::assertFalse($options->collectMetrics); + self::assertTrue($options->logQueries); + self::assertSame(500, $options->maxQueryLength); + self::assertTrue($options->includeParameters); + self::assertSame(5, $options->maxParameters); + self::assertSame(50, $options->maxParameterLength); + } + + public function test_options_can_be_created_with_custom_values() : void + { + $options = postgresql_telemetry_options( + traceQueries: false, + traceTransactions: false, + collectMetrics: false, + logQueries: true, + maxQueryLength: null, + includeParameters: true, + maxParameters: null, + maxParameterLength: null, + ); + + self::assertFalse($options->traceQueries); + self::assertFalse($options->traceTransactions); + self::assertFalse($options->collectMetrics); + self::assertTrue($options->logQueries); + self::assertNull($options->maxQueryLength); + self::assertTrue($options->includeParameters); + self::assertNull($options->maxParameters); + self::assertNull($options->maxParameterLength); + } + + public function test_with_collect_metrics_creates_new_instance() : void + { + $original = postgresql_telemetry_options(); + $modified = $original->collectMetrics(false); + + self::assertTrue($original->collectMetrics); + self::assertFalse($modified->collectMetrics); + } + + public function test_with_include_parameters_creates_new_instance() : void + { + $original = postgresql_telemetry_options(); + $modified = $original->includeParameters(true); + + self::assertFalse($original->includeParameters); + self::assertTrue($modified->includeParameters); + } + + public function test_with_log_queries_creates_new_instance() : void + { + $original = postgresql_telemetry_options(); + $modified = $original->logQueries(true); + + self::assertFalse($original->logQueries); + self::assertTrue($modified->logQueries); + } + + public function test_with_max_parameter_length_creates_new_instance() : void + { + $original = postgresql_telemetry_options(); + $modified = $original->maxParameterLength(50); + + self::assertSame(100, $original->maxParameterLength); + self::assertSame(50, $modified->maxParameterLength); + } + + public function test_with_max_parameter_length_null_creates_new_instance() : void + { + $original = postgresql_telemetry_options(); + $modified = $original->maxParameterLength(null); + + self::assertSame(100, $original->maxParameterLength); + self::assertNull($modified->maxParameterLength); + } + + public function test_with_max_parameters_creates_new_instance() : void + { + $original = postgresql_telemetry_options(); + $modified = $original->maxParameters(5); + + self::assertSame(10, $original->maxParameters); + self::assertSame(5, $modified->maxParameters); + } + + public function test_with_max_parameters_null_creates_new_instance() : void + { + $original = postgresql_telemetry_options(); + $modified = $original->maxParameters(null); + + self::assertSame(10, $original->maxParameters); + self::assertNull($modified->maxParameters); + } + + public function test_with_max_query_length_creates_new_instance() : void + { + $original = postgresql_telemetry_options(); + $modified = $original->maxQueryLength(500); + + self::assertSame(1000, $original->maxQueryLength); + self::assertSame(500, $modified->maxQueryLength); + } + + public function test_with_max_query_length_null_creates_new_instance() : void + { + $original = postgresql_telemetry_options(); + $modified = $original->maxQueryLength(null); + + self::assertSame(1000, $original->maxQueryLength); + self::assertNull($modified->maxQueryLength); + } + + public function test_with_trace_queries_creates_new_instance() : void + { + $original = postgresql_telemetry_options(); + $modified = $original->traceQueries(false); + + self::assertTrue($original->traceQueries); + self::assertFalse($modified->traceQueries); + } + + public function test_with_trace_transactions_creates_new_instance() : void + { + $original = postgresql_telemetry_options(); + $modified = $original->traceTransactions(false); + + self::assertTrue($original->traceTransactions); + self::assertFalse($modified->traceTransactions); + } +} diff --git a/src/lib/postgresql/tests/Flow/PostgreSql/Tests/Unit/Client/Telemetry/QueryAttributesExtractorTest.php b/src/lib/postgresql/tests/Flow/PostgreSql/Tests/Unit/Client/Telemetry/QueryAttributesExtractorTest.php new file mode 100644 index 0000000000..94f4cdf914 --- /dev/null +++ b/src/lib/postgresql/tests/Flow/PostgreSql/Tests/Unit/Client/Telemetry/QueryAttributesExtractorTest.php @@ -0,0 +1,272 @@ +extract('SELECT * FROM users WHERE id = 1'); + + self::assertSame('SELECT', $result->operation); + self::assertSame('users', $result->target); + } + + public function test_extract_delete_from_table() : void + { + $extractor = new QueryAttributesExtractor(); + $result = $extractor->extract('DELETE FROM users WHERE id = 1'); + + self::assertSame('DELETE', $result->operation); + self::assertSame('users', $result->target); + } + + public function test_extract_insert_into_table() : void + { + $extractor = new QueryAttributesExtractor(); + $result = $extractor->extract('INSERT INTO users (name) VALUES ($1)'); + + self::assertSame('INSERT', $result->operation); + self::assertSame('users', $result->target); + } + + public function test_extract_null_operation_for_unknown_query() : void + { + $extractor = new QueryAttributesExtractor(); + $result = $extractor->extract('VACUUM users'); + + self::assertNull($result->operation); + self::assertNull($result->target); + } + + public function test_extract_null_target_for_query_without_table() : void + { + $extractor = new QueryAttributesExtractor(); + $result = $extractor->extract('SELECT 1'); + + self::assertSame('SELECT', $result->operation); + self::assertNull($result->target); + } + + public function test_extract_operation_alter() : void + { + $extractor = new QueryAttributesExtractor(); + + self::assertSame('ALTER', $extractor->extractOperation('ALTER TABLE users ADD COLUMN email VARCHAR(255)')); + } + + public function test_extract_operation_begin() : void + { + $extractor = new QueryAttributesExtractor(); + + self::assertSame('BEGIN', $extractor->extractOperation('BEGIN')); + } + + public function test_extract_operation_commit() : void + { + $extractor = new QueryAttributesExtractor(); + + self::assertSame('COMMIT', $extractor->extractOperation('COMMIT')); + } + + public function test_extract_operation_copy() : void + { + $extractor = new QueryAttributesExtractor(); + + self::assertSame('COPY', $extractor->extractOperation('COPY users TO stdout')); + } + + public function test_extract_operation_create() : void + { + $extractor = new QueryAttributesExtractor(); + + self::assertSame('CREATE', $extractor->extractOperation('CREATE TABLE users (id SERIAL PRIMARY KEY)')); + } + + public function test_extract_operation_delete() : void + { + $extractor = new QueryAttributesExtractor(); + + self::assertSame('DELETE', $extractor->extractOperation('DELETE FROM users WHERE id = 1')); + } + + public function test_extract_operation_drop() : void + { + $extractor = new QueryAttributesExtractor(); + + self::assertSame('DROP', $extractor->extractOperation('DROP TABLE users')); + } + + public function test_extract_operation_explain() : void + { + $extractor = new QueryAttributesExtractor(); + + self::assertSame('EXPLAIN', $extractor->extractOperation('EXPLAIN ANALYZE SELECT * FROM users')); + } + + public function test_extract_operation_from_case_insensitive_query() : void + { + $extractor = new QueryAttributesExtractor(); + + self::assertSame('SELECT', $extractor->extractOperation('select * FROM users')); + } + + public function test_extract_operation_insert() : void + { + $extractor = new QueryAttributesExtractor(); + + self::assertSame('INSERT', $extractor->extractOperation('INSERT INTO users (name) VALUES ($1)')); + } + + public function test_extract_operation_merge() : void + { + $extractor = new QueryAttributesExtractor(); + + self::assertSame('MERGE', $extractor->extractOperation('MERGE INTO users USING source ON users.id = source.id')); + } + + public function test_extract_operation_returns_null_for_unknown_operation() : void + { + $extractor = new QueryAttributesExtractor(); + + self::assertNull($extractor->extractOperation('VACUUM users')); + } + + public function test_extract_operation_rollback() : void + { + $extractor = new QueryAttributesExtractor(); + + self::assertSame('ROLLBACK', $extractor->extractOperation('ROLLBACK')); + } + + public function test_extract_operation_select() : void + { + $extractor = new QueryAttributesExtractor(); + + self::assertSame('SELECT', $extractor->extractOperation('SELECT * FROM users')); + } + + public function test_extract_operation_truncate() : void + { + $extractor = new QueryAttributesExtractor(); + + self::assertSame('TRUNCATE', $extractor->extractOperation('TRUNCATE TABLE users')); + } + + public function test_extract_operation_update() : void + { + $extractor = new QueryAttributesExtractor(); + + self::assertSame('UPDATE', $extractor->extractOperation('UPDATE users SET name = $1 WHERE id = $2')); + } + + public function test_extract_operation_with() : void + { + $extractor = new QueryAttributesExtractor(); + + self::assertSame('WITH', $extractor->extractOperation('WITH cte AS (SELECT * FROM users) SELECT * FROM cte')); + } + + public function test_extract_operation_with_leading_whitespace() : void + { + $extractor = new QueryAttributesExtractor(); + + self::assertSame('SELECT', $extractor->extractOperation(' SELECT * FROM users')); + } + + public function test_extract_schema_qualified_table() : void + { + $extractor = new QueryAttributesExtractor(); + $result = $extractor->extract('SELECT * FROM public.users'); + + self::assertSame('SELECT', $result->operation); + self::assertSame('public.users', $result->target); + } + + public function test_extract_target_finds_first_from_clause() : void + { + $extractor = new QueryAttributesExtractor(); + + self::assertSame('orders', $extractor->extractTarget('SELECT * FROM orders o')); + } + + public function test_extract_target_from_delete() : void + { + $extractor = new QueryAttributesExtractor(); + + self::assertSame('users', $extractor->extractTarget('DELETE FROM users WHERE id = 1')); + } + + public function test_extract_target_from_insert() : void + { + $extractor = new QueryAttributesExtractor(); + + self::assertSame('users', $extractor->extractTarget('INSERT INTO users (name) VALUES ($1)')); + } + + public function test_extract_target_from_quoted_table() : void + { + $extractor = new QueryAttributesExtractor(); + + self::assertSame('Users', $extractor->extractTarget('SELECT * FROM "Users"')); + } + + public function test_extract_target_from_schema_qualified_table() : void + { + $extractor = new QueryAttributesExtractor(); + + self::assertSame('public.users', $extractor->extractTarget('SELECT * FROM public.users')); + } + + public function test_extract_target_from_select() : void + { + $extractor = new QueryAttributesExtractor(); + + self::assertSame('users', $extractor->extractTarget('SELECT * FROM users WHERE id = 1')); + } + + public function test_extract_target_from_update() : void + { + $extractor = new QueryAttributesExtractor(); + + self::assertSame('users', $extractor->extractTarget('UPDATE users SET name = $1 WHERE id = $2')); + } + + public function test_extract_target_prefers_from_over_join() : void + { + $extractor = new QueryAttributesExtractor(); + + self::assertSame('orders', $extractor->extractTarget('SELECT * FROM orders JOIN users ON orders.user_id = users.id')); + } + + public function test_extract_target_returns_null_for_query_without_table() : void + { + $extractor = new QueryAttributesExtractor(); + + self::assertNull($extractor->extractTarget('SELECT 1')); + } + + public function test_extract_update_table() : void + { + $extractor = new QueryAttributesExtractor(); + $result = $extractor->extract('UPDATE users SET name = $1 WHERE id = $2'); + + self::assertSame('UPDATE', $result->operation); + self::assertSame('users', $result->target); + } + + public function test_extract_with_multiline_query() : void + { + $extractor = new QueryAttributesExtractor(); + $result = $extractor->extract("SELECT *\n FROM users\n WHERE id = 1"); + + self::assertSame('SELECT', $result->operation); + self::assertSame('users', $result->target); + } +} diff --git a/src/lib/postgresql/tests/Flow/PostgreSql/Tests/Unit/Client/Telemetry/QueryAttributesTest.php b/src/lib/postgresql/tests/Flow/PostgreSql/Tests/Unit/Client/Telemetry/QueryAttributesTest.php new file mode 100644 index 0000000000..1450013d1e --- /dev/null +++ b/src/lib/postgresql/tests/Flow/PostgreSql/Tests/Unit/Client/Telemetry/QueryAttributesTest.php @@ -0,0 +1,43 @@ +operation); + self::assertSame('users', $attrs->target); + } + + public function test_create_with_null_operation() : void + { + $attrs = new QueryAttributes(null, 'users'); + + self::assertNull($attrs->operation); + self::assertSame('users', $attrs->target); + } + + public function test_create_with_null_target() : void + { + $attrs = new QueryAttributes('SELECT', null); + + self::assertSame('SELECT', $attrs->operation); + self::assertNull($attrs->target); + } + + public function test_create_with_null_values() : void + { + $attrs = new QueryAttributes(null, null); + + self::assertNull($attrs->operation); + self::assertNull($attrs->target); + } +} diff --git a/src/lib/postgresql/tests/Flow/PostgreSql/Tests/Unit/Client/Telemetry/TraceableClientTelemetryTest.php b/src/lib/postgresql/tests/Flow/PostgreSql/Tests/Unit/Client/Telemetry/TraceableClientTelemetryTest.php new file mode 100644 index 0000000000..47539f4f26 --- /dev/null +++ b/src/lib/postgresql/tests/Flow/PostgreSql/Tests/Unit/Client/Telemetry/TraceableClientTelemetryTest.php @@ -0,0 +1,513 @@ +createConfig($spanProcessor, $metricProcessor, $logProcessor, postgresql_telemetry_options( + traceQueries: true, + traceTransactions: true, + collectMetrics: true, + logQueries: true, + )); + + $nestingLevel = 0; + $mockClient = $this->createMockClient(); + $mockClient->method('getTransactionNestingLevel')->willReturnCallback(static function () use (&$nestingLevel) : int { + return $nestingLevel; + }); + $mockClient->method('beginTransaction')->willReturnCallback(static function () use (&$nestingLevel) : void { + $nestingLevel++; + }); + $mockClient->method('commit')->willReturnCallback(static function () use (&$nestingLevel) : void { + $nestingLevel--; + }); + $mockClient->method('fetchAll')->willReturn([['id' => 1], ['id' => 2]]); + $mockClient->method('execute')->willReturn(1); + + $client = traceable_postgresql_client($mockClient, $config); + $client->transaction(static function (Client $c) : void { + $c->fetchAll('SELECT * FROM users'); + $c->execute('UPDATE users SET active = true WHERE id = $1', [1]); + }); + + $this->collectMetrics($config); + + self::assertCount(3, $spanProcessor->endedSpans(), 'Expected 3 spans: transaction + 2 queries'); + self::assertCount(2, $logProcessor->entries(), 'Expected 2 log entries for 2 queries'); + self::assertGreaterThan(0, $metricProcessor->countMetrics(), 'Expected metrics to be recorded'); + + $durationMetrics = $metricProcessor->metricsWithName('operation_duration'); + self::assertGreaterThanOrEqual(3, \count($durationMetrics), 'Expected at least 3 duration metrics'); + } + + public function test_begin_transaction_creates_span_when_tracing_enabled() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor, options: postgresql_telemetry_options( + traceTransactions: true, + )); + + $nestingLevel = 0; + $mockClient = $this->createMockClient(); + $mockClient->method('getTransactionNestingLevel')->willReturnCallback(static function () use (&$nestingLevel) : int { + return $nestingLevel; + }); + $mockClient->method('beginTransaction')->willReturnCallback(static function () use (&$nestingLevel) : void { + $nestingLevel++; + }); + $mockClient->method('commit')->willReturnCallback(static function () use (&$nestingLevel) : void { + $nestingLevel--; + }); + + $client = traceable_postgresql_client($mockClient, $config); + $client->beginTransaction(); + $client->commit(); + + $spans = $spanProcessor->endedSpans(); + self::assertCount(1, $spans); + self::assertSame('BEGIN TRANSACTION', $spans[0]->name()); + self::assertSame(1, $spans[0]->attributes()[PostgreSqlTelemetryAttributes::DB_TRANSACTION_NESTING_LEVEL]); + } + + public function test_commit_completes_transaction_span() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor, options: postgresql_telemetry_options( + traceTransactions: true, + )); + + $nestingLevel = 0; + $mockClient = $this->createMockClient(); + $mockClient->method('getTransactionNestingLevel')->willReturnCallback(static function () use (&$nestingLevel) : int { + return $nestingLevel; + }); + $mockClient->method('beginTransaction')->willReturnCallback(static function () use (&$nestingLevel) : void { + $nestingLevel++; + }); + $mockClient->method('commit')->willReturnCallback(static function () use (&$nestingLevel) : void { + $nestingLevel--; + }); + + $client = traceable_postgresql_client($mockClient, $config); + $client->beginTransaction(); + $client->commit(); + + $spans = $spanProcessor->endedSpans(); + self::assertCount(1, $spans); + self::assertNotNull($spans[0]->status()); + self::assertFalse($spans[0]->status()->isError()); + } + + public function test_duration_metric_is_recorded_when_metrics_enabled() : void + { + $metricProcessor = memory_metric_processor(void_metric_exporter()); + $config = $this->createConfig(metricProcessor: $metricProcessor, options: postgresql_telemetry_options( + traceQueries: false, + collectMetrics: true, + )); + + $mockClient = $this->createMockClient(); + $mockClient->method('execute')->willReturn(5); + + $client = traceable_postgresql_client($mockClient, $config); + $client->execute('UPDATE users SET active = true'); + + $this->collectMetrics($config); + + $durationMetrics = $metricProcessor->metricsWithName('operation_duration'); + self::assertCount(1, $durationMetrics); + self::assertSame(MetricType::HISTOGRAM, $durationMetrics[0]->type); + self::assertGreaterThan(0, $durationMetrics[0]->value); + } + + public function test_explain_creates_span() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor, options: postgresql_telemetry_options( + traceQueries: true, + )); + + $plan = new Plan( + new PlanNode( + PlanNodeType::SEQ_SCAN, + new Cost(0.0, 10.0), + 100, + 8, + ), + ); + $mockClient = $this->createMockClient(); + $mockClient->method('explain')->willReturn($plan); + + $client = traceable_postgresql_client($mockClient, $config); + $client->explain('SELECT * FROM users WHERE id = $1', [1]); + + $spans = $spanProcessor->endedSpans(); + self::assertCount(1, $spans); + self::assertSame('SELECT users', $spans[0]->name()); + } + + public function test_fetch_all_into_creates_span_with_correct_row_count() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor, options: postgresql_telemetry_options( + traceQueries: true, + )); + + $users = [new \stdClass(), new \stdClass()]; + $mockClient = $this->createMockClient(); + $mockClient->method('fetchAllInto')->willReturn($users); + + $client = traceable_postgresql_client($mockClient, $config); + $client->fetchAllInto(\stdClass::class, 'SELECT * FROM users'); + + $spans = $spanProcessor->endedSpans(); + self::assertCount(1, $spans); + self::assertSame(2, $spans[0]->attributes()[PostgreSqlTelemetryAttributes::DB_RESPONSE_RETURNED_ROWS]); + } + + public function test_fetch_into_creates_span_with_correct_row_count() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor, options: postgresql_telemetry_options( + traceQueries: true, + )); + + $user = new \stdClass(); + $user->id = 1; + $mockClient = $this->createMockClient(); + $mockClient->method('fetchInto')->willReturn($user); + + $client = traceable_postgresql_client($mockClient, $config); + $client->fetchInto(\stdClass::class, 'SELECT * FROM users WHERE id = $1', [1]); + + $spans = $spanProcessor->endedSpans(); + self::assertCount(1, $spans); + self::assertSame(1, $spans[0]->attributes()[PostgreSqlTelemetryAttributes::DB_RESPONSE_RETURNED_ROWS]); + } + + public function test_fetch_one_into_creates_span() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor, options: postgresql_telemetry_options( + traceQueries: true, + )); + + $user = new \stdClass(); + $user->id = 1; + $mockClient = $this->createMockClient(); + $mockClient->method('fetchOneInto')->willReturn($user); + + $client = traceable_postgresql_client($mockClient, $config); + $client->fetchOneInto(\stdClass::class, 'SELECT * FROM users WHERE id = $1', [1]); + + $spans = $spanProcessor->endedSpans(); + self::assertCount(1, $spans); + self::assertSame(1, $spans[0]->attributes()[PostgreSqlTelemetryAttributes::DB_RESPONSE_RETURNED_ROWS]); + } + + public function test_fetch_scalar_bool_creates_span() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor, options: postgresql_telemetry_options( + traceQueries: true, + )); + + $mockClient = $this->createMockClient(); + $mockClient->method('fetchScalarBool')->willReturn(true); + + $client = traceable_postgresql_client($mockClient, $config); + $result = $client->fetchScalarBool('SELECT active FROM users WHERE id = $1', [1]); + + self::assertTrue($result); + self::assertCount(1, $spanProcessor->endedSpans()); + } + + public function test_fetch_scalar_float_creates_span() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor, options: postgresql_telemetry_options( + traceQueries: true, + )); + + $mockClient = $this->createMockClient(); + $mockClient->method('fetchScalarFloat')->willReturn(99.5); + + $client = traceable_postgresql_client($mockClient, $config); + $result = $client->fetchScalarFloat('SELECT price FROM products WHERE id = $1', [1]); + + self::assertSame(99.5, $result); + self::assertCount(1, $spanProcessor->endedSpans()); + } + + public function test_fetch_scalar_int_creates_span() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor, options: postgresql_telemetry_options( + traceQueries: true, + )); + + $mockClient = $this->createMockClient(); + $mockClient->method('fetchScalarInt')->willReturn(42); + + $client = traceable_postgresql_client($mockClient, $config); + $result = $client->fetchScalarInt('SELECT COUNT(*) FROM users'); + + self::assertSame(42, $result); + self::assertCount(1, $spanProcessor->endedSpans()); + } + + public function test_fetch_scalar_string_creates_span() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor, options: postgresql_telemetry_options( + traceQueries: true, + )); + + $mockClient = $this->createMockClient(); + $mockClient->method('fetchScalarString')->willReturn('John'); + + $client = traceable_postgresql_client($mockClient, $config); + $result = $client->fetchScalarString('SELECT name FROM users WHERE id = $1', [1]); + + self::assertSame('John', $result); + self::assertCount(1, $spanProcessor->endedSpans()); + } + + public function test_metrics_are_not_recorded_when_disabled() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $metricProcessor = memory_metric_processor(void_metric_exporter()); + $config = $this->createConfig($spanProcessor, $metricProcessor, options: postgresql_telemetry_options( + traceQueries: true, + collectMetrics: false, + )); + + $mockClient = $this->createMockClient(); + $mockClient->method('execute')->willReturn(5); + + $client = traceable_postgresql_client($mockClient, $config); + $client->execute('UPDATE users SET active = true'); + + $this->collectMetrics($config); + + self::assertCount(0, $metricProcessor->metrics()); + } + + public function test_nested_transaction_creates_savepoint_span() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor, options: postgresql_telemetry_options( + traceTransactions: true, + )); + + $nestingLevel = 0; + $mockClient = $this->createMockClient(); + $mockClient->method('getTransactionNestingLevel')->willReturnCallback(static function () use (&$nestingLevel) : int { + return $nestingLevel; + }); + $mockClient->method('beginTransaction')->willReturnCallback(static function () use (&$nestingLevel) : void { + $nestingLevel++; + }); + $mockClient->method('commit')->willReturnCallback(static function () use (&$nestingLevel) : void { + $nestingLevel--; + }); + + $client = traceable_postgresql_client($mockClient, $config); + $client->beginTransaction(); + $client->beginTransaction(); + $client->commit(); + $client->commit(); + + $spans = $spanProcessor->endedSpans(); + self::assertCount(2, $spans); + self::assertSame('BEGIN SAVEPOINT', $spans[0]->name()); + self::assertSame('savepoint_1', $spans[0]->attributes()[PostgreSqlTelemetryAttributes::DB_TRANSACTION_SAVEPOINT]); + self::assertSame('BEGIN TRANSACTION', $spans[1]->name()); + } + + public function test_queries_are_logged_when_logging_enabled() : void + { + $logProcessor = memory_log_processor(void_log_exporter()); + $config = $this->createConfig(logProcessor: $logProcessor, options: postgresql_telemetry_options( + logQueries: true, + )); + + $mockClient = $this->createMockClient(); + $mockClient->method('execute')->willReturn(3); + + $client = traceable_postgresql_client($mockClient, $config); + $client->execute('DELETE FROM users WHERE inactive = $1', [true]); + + $logs = $logProcessor->entries(); + self::assertCount(1, $logs); + self::assertSame('Executing query', $logs[0]->record->body); + self::assertSame(Severity::DEBUG, $logs[0]->record->severity); + self::assertSame('DELETE FROM users WHERE inactive = $1', $logs[0]->record->attributes->get(PostgreSqlTelemetryAttributes::DB_QUERY_TEXT)); + } + + public function test_queries_are_not_logged_when_disabled() : void + { + $logProcessor = memory_log_processor(void_log_exporter()); + $config = $this->createConfig(logProcessor: $logProcessor, options: postgresql_telemetry_options( + logQueries: false, + )); + + $mockClient = $this->createMockClient(); + $mockClient->method('execute')->willReturn(3); + + $client = traceable_postgresql_client($mockClient, $config); + $client->execute('DELETE FROM users WHERE inactive = $1', [true]); + + self::assertCount(0, $logProcessor->entries()); + } + + public function test_rollback_completes_all_nested_transaction_spans() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor, options: postgresql_telemetry_options( + traceTransactions: true, + )); + + $nestingLevel = 0; + $mockClient = $this->createMockClient(); + $mockClient->method('getTransactionNestingLevel')->willReturnCallback(static function () use (&$nestingLevel) : int { + return $nestingLevel; + }); + $mockClient->method('beginTransaction')->willReturnCallback(static function () use (&$nestingLevel) : void { + $nestingLevel++; + }); + $mockClient->method('rollBack')->willReturnCallback(static function () use (&$nestingLevel) : void { + $nestingLevel = 0; + }); + + $client = traceable_postgresql_client($mockClient, $config); + $client->beginTransaction(); + $client->beginTransaction(); + $client->rollBack(); + + $spans = $spanProcessor->endedSpans(); + self::assertCount(2, $spans); + } + + public function test_row_count_metric_is_recorded_for_fetch_operations() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $metricProcessor = memory_metric_processor(void_metric_exporter()); + $config = $this->createConfig($spanProcessor, $metricProcessor, options: postgresql_telemetry_options( + traceQueries: true, + collectMetrics: true, + )); + + $mockClient = $this->createMockClient(); + $mockClient->method('fetchAll')->willReturn([ + ['id' => 1], + ['id' => 2], + ['id' => 3], + ]); + + $client = traceable_postgresql_client($mockClient, $config); + $client->fetchAll('SELECT * FROM users'); + + $this->collectMetrics($config); + + $rowMetrics = $metricProcessor->metricsWithName('response_returned_rows'); + self::assertCount(1, $rowMetrics); + self::assertSame(MetricType::HISTOGRAM, $rowMetrics[0]->type); + self::assertSame(3.0, $rowMetrics[0]->value); + } + + public function test_transaction_callback_creates_parent_span_with_query_spans() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor, options: postgresql_telemetry_options( + traceQueries: true, + traceTransactions: true, + )); + + $nestingLevel = 0; + $mockClient = $this->createMockClient(); + $mockClient->method('getTransactionNestingLevel')->willReturnCallback(static function () use (&$nestingLevel) : int { + return $nestingLevel; + }); + $mockClient->method('beginTransaction')->willReturnCallback(static function () use (&$nestingLevel) : void { + $nestingLevel++; + }); + $mockClient->method('commit')->willReturnCallback(static function () use (&$nestingLevel) : void { + $nestingLevel--; + }); + $mockClient->method('execute')->willReturn(1); + + $client = traceable_postgresql_client($mockClient, $config); + $client->transaction(static function (Client $c) : void { + $c->execute('INSERT INTO users (name) VALUES ($1)', ['John']); + }); + + $spans = $spanProcessor->endedSpans(); + self::assertCount(2, $spans); + + $spanNames = \array_map(static fn ($s) => $s->name(), $spans); + self::assertContains('BEGIN TRANSACTION', $spanNames); + self::assertContains('INSERT users', $spanNames); + } + + private function collectMetrics(PostgreSqlTelemetryConfig $config) : void + { + $meter = $config->telemetry->meter('flow_php_postgresql'); + + foreach ($meter->collect() as $metric) { + $meter->processor()->process($metric); + } + } + + private function createConfig( + ?MemorySpanProcessor $spanProcessor = null, + ?MemoryMetricProcessor $metricProcessor = null, + ?MemoryLogProcessor $logProcessor = null, + ?PostgreSqlTelemetryOptions $options = null, + ) : PostgreSqlTelemetryConfig { + $clock = new SystemClock(); + $contextStorage = memory_context_storage(); + + $tel = telemetry( + resource(), + tracer_provider($spanProcessor ?? memory_span_processor(void_span_exporter()), $clock, $contextStorage), + meter_provider($metricProcessor ?? memory_metric_processor(void_metric_exporter()), $clock), + logger_provider($logProcessor ?? memory_log_processor(void_log_exporter()), $clock, $contextStorage), + ); + + return postgresql_telemetry_config($tel, $clock, $options ?? postgresql_telemetry_options()); + } + + /** + * @return Client&MockObject + */ + private function createMockClient() : Client + { + $mockClient = $this->createMock(Client::class); + $mockClient->method('parameters')->willReturn( + pgsql_connection_params('testdb', 'localhost', 5432, 'user') + ); + + return $mockClient; + } +} diff --git a/src/lib/postgresql/tests/Flow/PostgreSql/Tests/Unit/Client/Telemetry/TraceableClientTest.php b/src/lib/postgresql/tests/Flow/PostgreSql/Tests/Unit/Client/Telemetry/TraceableClientTest.php new file mode 100644 index 0000000000..f0f813065d --- /dev/null +++ b/src/lib/postgresql/tests/Flow/PostgreSql/Tests/Unit/Client/Telemetry/TraceableClientTest.php @@ -0,0 +1,506 @@ +createConfig($spanProcessor, postgresql_telemetry_options( + traceQueries: false, + traceTransactions: false, + collectMetrics: false, + )); + + $mockCursor = $this->createMock(Cursor::class); + $mockClient = $this->createMockClient(); + $mockClient->method('cursor')->willReturn($mockCursor); + + $client = traceable_postgresql_client($mockClient, $config); + $cursor = $client->cursor('SELECT * FROM users'); + + self::assertSame($mockCursor, $cursor); + self::assertEmpty($spanProcessor->endedSpans()); + } + + public function test_close_delegates_to_underlying_client() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor); + + $mockClient = $this->createMockClient(); + $mockClient->expects(self::once())->method('close'); + + $client = traceable_postgresql_client($mockClient, $config); + $client->close(); + } + + public function test_converters_delegates_to_underlying_client() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor); + + $converters = ValueConverters::create(); + $mockClient = $this->createMockClient(); + $mockClient->method('converters')->willReturn($converters); + + $client = traceable_postgresql_client($mockClient, $config); + + self::assertSame($converters, $client->converters()); + } + + public function test_cursor_returns_traceable_cursor_when_tracing_enabled() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor, postgresql_telemetry_options( + traceQueries: true, + )); + + $mockCursor = $this->createMock(Cursor::class); + $mockClient = $this->createMockClient(); + $mockClient->method('cursor')->willReturn($mockCursor); + + $client = traceable_postgresql_client($mockClient, $config); + $cursor = $client->cursor('SELECT * FROM users'); + + self::assertInstanceOf(TraceableCursor::class, $cursor); + } + + public function test_default_port_is_not_included_in_attributes() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor); + + $mockClient = $this->createMockClient(); + $mockClient->method('execute')->willReturn(1); + + $client = traceable_postgresql_client($mockClient, $config); + $client->execute('UPDATE users SET active = true'); + + $spans = $spanProcessor->endedSpans(); + self::assertCount(1, $spans); + self::assertArrayNotHasKey(PostgreSqlTelemetryAttributes::SERVER_PORT, $spans[0]->attributes()); + } + + public function test_execute_creates_span_with_correct_attributes() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor); + + $mockClient = $this->createMockClient(); + $mockClient->method('execute')->willReturn(5); + + $client = traceable_postgresql_client($mockClient, $config); + $result = $client->execute('UPDATE users SET active = $1 WHERE id = $2', [true, 123]); + + self::assertSame(5, $result); + + $spans = $spanProcessor->endedSpans(); + self::assertCount(1, $spans); + + $span = $spans[0]; + self::assertSame('UPDATE users', $span->name()); + self::assertSame('postgresql', $span->attributes()[PostgreSqlTelemetryAttributes::DB_SYSTEM_NAME]); + self::assertSame('testdb', $span->attributes()[PostgreSqlTelemetryAttributes::DB_NAMESPACE]); + self::assertSame('localhost', $span->attributes()[PostgreSqlTelemetryAttributes::SERVER_ADDRESS]); + self::assertSame('UPDATE', $span->attributes()[PostgreSqlTelemetryAttributes::DB_OPERATION_NAME]); + self::assertSame('users', $span->attributes()[PostgreSqlTelemetryAttributes::DB_COLLECTION_NAME]); + self::assertSame(5, $span->attributes()[PostgreSqlTelemetryAttributes::DB_RESPONSE_RETURNED_ROWS]); + } + + public function test_execute_rethrows_exception_and_records_error() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor); + + $exception = new \RuntimeException('Query failed'); + $mockClient = $this->createMockClient(); + $mockClient->method('execute')->willThrowException($exception); + + $client = traceable_postgresql_client($mockClient, $config); + + $this->expectException(\RuntimeException::class); + $this->expectExceptionMessage('Query failed'); + + try { + $client->execute('UPDATE users SET active = $1', [true]); + } finally { + $spans = $spanProcessor->endedSpans(); + self::assertCount(1, $spans); + self::assertNotNull($spans[0]->status()); + self::assertTrue($spans[0]->status()->isError()); + } + } + + public function test_fetch_all_creates_span_with_row_count() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor); + + $mockClient = $this->createMockClient(); + $mockClient->method('fetchAll')->willReturn([ + ['id' => 1, 'name' => 'User 1'], + ['id' => 2, 'name' => 'User 2'], + ['id' => 3, 'name' => 'User 3'], + ]); + + $client = traceable_postgresql_client($mockClient, $config); + $result = $client->fetchAll('SELECT * FROM users'); + + self::assertCount(3, $result); + + $spans = $spanProcessor->endedSpans(); + self::assertCount(1, $spans); + self::assertSame('SELECT users', $spans[0]->name()); + self::assertSame(3, $spans[0]->attributes()[PostgreSqlTelemetryAttributes::DB_RESPONSE_RETURNED_ROWS]); + } + + public function test_fetch_creates_span_with_row_count() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor); + + $mockClient = $this->createMockClient(); + $mockClient->method('fetch')->willReturn(['id' => 1, 'name' => 'Test']); + + $client = traceable_postgresql_client($mockClient, $config); + $result = $client->fetch('SELECT * FROM users WHERE id = $1', [1]); + + self::assertSame(['id' => 1, 'name' => 'Test'], $result); + + $spans = $spanProcessor->endedSpans(); + self::assertCount(1, $spans); + self::assertSame(1, $spans[0]->attributes()[PostgreSqlTelemetryAttributes::DB_RESPONSE_RETURNED_ROWS]); + } + + public function test_fetch_null_result_records_zero_rows() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor); + + $mockClient = $this->createMockClient(); + $mockClient->method('fetch')->willReturn(null); + + $client = traceable_postgresql_client($mockClient, $config); + $result = $client->fetch('SELECT * FROM users WHERE id = $1', [999]); + + self::assertNull($result); + + $spans = $spanProcessor->endedSpans(); + self::assertCount(1, $spans); + self::assertSame(0, $spans[0]->attributes()[PostgreSqlTelemetryAttributes::DB_RESPONSE_RETURNED_ROWS]); + } + + public function test_get_transaction_nesting_level_delegates() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor); + + $mockClient = $this->createMockClient(); + $mockClient->method('getTransactionNestingLevel')->willReturn(2); + + $client = traceable_postgresql_client($mockClient, $config); + + self::assertSame(2, $client->getTransactionNestingLevel()); + } + + public function test_is_auto_commit_delegates() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor); + + $mockClient = $this->createMockClient(); + $mockClient->method('isAutoCommit')->willReturn(true); + + $client = traceable_postgresql_client($mockClient, $config); + + self::assertTrue($client->isAutoCommit()); + } + + public function test_is_connected_delegates() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor); + + $mockClient = $this->createMockClient(); + $mockClient->method('isConnected')->willReturn(true); + + $client = traceable_postgresql_client($mockClient, $config); + + self::assertTrue($client->isConnected()); + } + + public function test_last_insert_id_delegates() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor); + + $mockClient = $this->createMockClient(); + $mockClient->method('lastInsertId')->with('users_id_seq')->willReturn(42); + + $client = traceable_postgresql_client($mockClient, $config); + + self::assertSame(42, $client->lastInsertId('users_id_seq')); + } + + public function test_non_default_port_is_included_in_attributes() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor); + + $connectionParams = pgsql_connection_params('testdb', 'localhost', 5433, 'user'); + $mockClient = $this->createMockClient($connectionParams); + $mockClient->method('execute')->willReturn(1); + + $client = traceable_postgresql_client($mockClient, $config); + $client->execute('UPDATE users SET active = true'); + + $spans = $spanProcessor->endedSpans(); + self::assertCount(1, $spans); + self::assertSame(5433, $spans[0]->attributes()[PostgreSqlTelemetryAttributes::SERVER_PORT]); + } + + public function test_parameter_count_is_limited_by_default() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor, postgresql_telemetry_options( + includeParameters: true, + )); + + $mockClient = $this->createMockClient(); + $mockClient->method('execute')->willReturn(1); + + $client = traceable_postgresql_client($mockClient, $config); + + $parameters = \array_fill(0, 20, 'value'); + $client->execute('SELECT * FROM users WHERE id IN ($1, $2, ...)', $parameters); + + $spans = $spanProcessor->endedSpans(); + self::assertCount(1, $spans); + + for ($i = 1; $i <= 10; $i++) { + self::assertArrayHasKey(PostgreSqlTelemetryAttributes::DB_QUERY_PARAMETER_PREFIX . $i, $spans[0]->attributes()); + } + + for ($i = 11; $i <= 20; $i++) { + self::assertArrayNotHasKey(PostgreSqlTelemetryAttributes::DB_QUERY_PARAMETER_PREFIX . $i, $spans[0]->attributes()); + } + } + + public function test_parameter_count_unlimited_when_null() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor, postgresql_telemetry_options( + includeParameters: true, + maxParameters: null, + )); + + $mockClient = $this->createMockClient(); + $mockClient->method('execute')->willReturn(1); + + $client = traceable_postgresql_client($mockClient, $config); + + $parameters = \array_fill(0, 20, 'value'); + $client->execute('SELECT * FROM users WHERE id IN ($1, $2, ...)', $parameters); + + $spans = $spanProcessor->endedSpans(); + self::assertCount(1, $spans); + + for ($i = 1; $i <= 20; $i++) { + self::assertArrayHasKey(PostgreSqlTelemetryAttributes::DB_QUERY_PARAMETER_PREFIX . $i, $spans[0]->attributes()); + } + } + + public function test_parameter_limits_ignored_when_include_parameters_false() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor, postgresql_telemetry_options( + includeParameters: false, + maxParameters: 5, + maxParameterLength: 50, + )); + + $mockClient = $this->createMockClient(); + $mockClient->method('execute')->willReturn(1); + + $client = traceable_postgresql_client($mockClient, $config); + $client->execute('UPDATE users SET name = $1 WHERE id = $2', ['John', 123]); + + $spans = $spanProcessor->endedSpans(); + self::assertCount(1, $spans); + self::assertArrayNotHasKey(PostgreSqlTelemetryAttributes::DB_QUERY_PARAMETER_PREFIX . '1', $spans[0]->attributes()); + self::assertArrayNotHasKey(PostgreSqlTelemetryAttributes::DB_QUERY_PARAMETER_PREFIX . '2', $spans[0]->attributes()); + } + + public function test_parameter_values_are_truncated_by_default() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor, postgresql_telemetry_options( + includeParameters: true, + )); + + $mockClient = $this->createMockClient(); + $mockClient->method('execute')->willReturn(1); + + $client = traceable_postgresql_client($mockClient, $config); + + $longValue = \str_repeat('a', 200); + $client->execute('UPDATE users SET name = $1', [$longValue]); + + $spans = $spanProcessor->endedSpans(); + self::assertCount(1, $spans); + + $paramValue = $spans[0]->attributes()[PostgreSqlTelemetryAttributes::DB_QUERY_PARAMETER_PREFIX . '1']; + self::assertSame(103, \strlen($paramValue)); + self::assertStringEndsWith('...', $paramValue); + } + + public function test_parameter_values_unlimited_when_null() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor, postgresql_telemetry_options( + includeParameters: true, + maxParameterLength: null, + )); + + $mockClient = $this->createMockClient(); + $mockClient->method('execute')->willReturn(1); + + $client = traceable_postgresql_client($mockClient, $config); + + $longValue = \str_repeat('a', 200); + $client->execute('UPDATE users SET name = $1', [$longValue]); + + $spans = $spanProcessor->endedSpans(); + self::assertCount(1, $spans); + + $paramValue = $spans[0]->attributes()[PostgreSqlTelemetryAttributes::DB_QUERY_PARAMETER_PREFIX . '1']; + self::assertSame(200, \strlen($paramValue)); + self::assertSame($longValue, $paramValue); + } + + public function test_parameters_are_included_when_enabled() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor, postgresql_telemetry_options( + includeParameters: true, + )); + + $mockClient = $this->createMockClient(); + $mockClient->method('execute')->willReturn(1); + + $client = traceable_postgresql_client($mockClient, $config); + $client->execute('UPDATE users SET name = $1 WHERE id = $2', ['John', 123]); + + $spans = $spanProcessor->endedSpans(); + self::assertCount(1, $spans); + self::assertSame('John', $spans[0]->attributes()[PostgreSqlTelemetryAttributes::DB_QUERY_PARAMETER_PREFIX . '1']); + self::assertSame('123', $spans[0]->attributes()[PostgreSqlTelemetryAttributes::DB_QUERY_PARAMETER_PREFIX . '2']); + } + + public function test_parameters_are_not_included_by_default() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor); + + $mockClient = $this->createMockClient(); + $mockClient->method('execute')->willReturn(1); + + $client = traceable_postgresql_client($mockClient, $config); + $client->execute('UPDATE users SET name = $1 WHERE id = $2', ['John', 123]); + + $spans = $spanProcessor->endedSpans(); + self::assertCount(1, $spans); + self::assertArrayNotHasKey(PostgreSqlTelemetryAttributes::DB_QUERY_PARAMETER_PREFIX . '1', $spans[0]->attributes()); + } + + public function test_query_text_is_not_truncated_when_max_length_null() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor, postgresql_telemetry_options( + maxQueryLength: null, + )); + + $longQuery = 'SELECT * FROM users WHERE ' . \str_repeat('id = 1 AND ', 100) . 'active = true'; + $mockClient = $this->createMockClient(); + $mockClient->method('execute')->willReturn(1); + + $client = traceable_postgresql_client($mockClient, $config); + $client->execute($longQuery); + + $spans = $spanProcessor->endedSpans(); + self::assertCount(1, $spans); + self::assertSame($longQuery, $spans[0]->attributes()[PostgreSqlTelemetryAttributes::DB_QUERY_TEXT]); + } + + public function test_query_text_is_truncated_when_max_length_set() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor, postgresql_telemetry_options( + maxQueryLength: 20, + )); + + $mockClient = $this->createMockClient(); + $mockClient->method('execute')->willReturn(1); + + $client = traceable_postgresql_client($mockClient, $config); + $client->execute('SELECT * FROM users WHERE id = 123 AND active = true'); + + $spans = $spanProcessor->endedSpans(); + self::assertCount(1, $spans); + self::assertSame('SELECT * FROM users ...', $spans[0]->attributes()[PostgreSqlTelemetryAttributes::DB_QUERY_TEXT]); + } + + public function test_set_auto_commit_delegates() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor); + + $mockClient = $this->createMockClient(); + $mockClient->expects(self::once())->method('setAutoCommit')->with(false); + + $client = traceable_postgresql_client($mockClient, $config); + $client->setAutoCommit(false); + } + + private function createConfig(MemorySpanProcessor $spanProcessor, ?PostgreSqlTelemetryOptions $options = null) : PostgreSqlTelemetryConfig + { + $clock = new SystemClock(); + $contextStorage = memory_context_storage(); + + $tel = telemetry( + resource(), + tracer_provider($spanProcessor, $clock, $contextStorage), + meter_provider(memory_metric_processor(void_metric_exporter()), $clock), + logger_provider(memory_log_processor(void_log_exporter()), $clock, $contextStorage), + ); + + return postgresql_telemetry_config($tel, $clock, $options ?? postgresql_telemetry_options()); + } + + /** + * @return Client&MockObject + */ + private function createMockClient(?ConnectionParameters $connectionParams = null) : Client + { + $mockClient = $this->createMock(Client::class); + $mockClient->method('parameters')->willReturn( + $connectionParams ?? pgsql_connection_params('testdb', 'localhost', 5432, 'user') + ); + + return $mockClient; + } +} diff --git a/src/lib/postgresql/tests/Flow/PostgreSql/Tests/Unit/Client/Telemetry/TraceableCursorTest.php b/src/lib/postgresql/tests/Flow/PostgreSql/Tests/Unit/Client/Telemetry/TraceableCursorTest.php new file mode 100644 index 0000000000..aa70097e04 --- /dev/null +++ b/src/lib/postgresql/tests/Flow/PostgreSql/Tests/Unit/Client/Telemetry/TraceableCursorTest.php @@ -0,0 +1,334 @@ +createConfig($spanProcessor); + + $mockCursor = $this->createMock(Cursor::class); + $mockCursor->method('count')->willReturn(10); + + $cursor = new TraceableCursor($mockCursor, $config, $this->connectionParams(), 'SELECT * FROM users'); + + self::assertSame(10, $cursor->count()); + } + + public function test_free_completes_span_with_row_count() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor); + + $mockCursor = $this->createMock(Cursor::class); + $mockCursor->method('next') + ->willReturnOnConsecutiveCalls( + ['id' => 1], + ['id' => 2], + null + ); + + $cursor = new TraceableCursor($mockCursor, $config, $this->connectionParams(), 'SELECT * FROM users'); + + $cursor->next(); + $cursor->next(); + $cursor->next(); + $cursor->free(); + + $spans = $spanProcessor->endedSpans(); + self::assertCount(1, $spans); + self::assertSame('SELECT users (cursor)', $spans[0]->name()); + self::assertSame(2, $spans[0]->attributes()[PostgreSqlTelemetryAttributes::DB_RESPONSE_RETURNED_ROWS]); + } + + public function test_free_rethrows_exception_and_records_error() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor); + + $exception = new \RuntimeException('Free failed'); + $mockCursor = $this->createMock(Cursor::class); + $mockCursor->method('free')->willThrowException($exception); + + $cursor = new TraceableCursor($mockCursor, $config, $this->connectionParams(), 'SELECT * FROM users'); + + $this->expectException(\RuntimeException::class); + $this->expectExceptionMessage('Free failed'); + + try { + $cursor->free(); + } finally { + $spans = $spanProcessor->endedSpans(); + self::assertCount(1, $spans); + self::assertNotNull($spans[0]->status()); + self::assertTrue($spans[0]->status()->isError()); + } + } + + public function test_iterate_completes_span_after_full_iteration() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor); + + $mockCursor = $this->createMock(Cursor::class); + $mockCursor->method('iterate')->willReturnCallback(static function () : \Generator { + yield ['id' => 1]; + yield ['id' => 2]; + yield ['id' => 3]; + }); + + $cursor = new TraceableCursor($mockCursor, $config, $this->connectionParams(), 'SELECT * FROM users'); + + $rows = []; + + foreach ($cursor->iterate() as $row) { + $rows[] = $row; + } + + self::assertCount(3, $rows); + + $spans = $spanProcessor->endedSpans(); + self::assertCount(1, $spans); + self::assertSame(3, $spans[0]->attributes()[PostgreSqlTelemetryAttributes::DB_RESPONSE_RETURNED_ROWS]); + } + + public function test_iterate_records_error_on_exception() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor); + + $mockCursor = $this->createMock(Cursor::class); + $mockCursor->method('iterate')->willReturnCallback(static function () : \Generator { + yield ['id' => 1]; + + throw new \RuntimeException('Iteration failed'); + }); + + $cursor = new TraceableCursor($mockCursor, $config, $this->connectionParams(), 'SELECT * FROM users'); + + $this->expectException(\RuntimeException::class); + + try { + foreach ($cursor->iterate() as $row) { + } + } finally { + $spans = $spanProcessor->endedSpans(); + self::assertCount(1, $spans); + self::assertNotNull($spans[0]->status()); + self::assertTrue($spans[0]->status()->isError()); + self::assertSame(1, $spans[0]->attributes()[PostgreSqlTelemetryAttributes::DB_RESPONSE_RETURNED_ROWS]); + } + } + + public function test_map_completes_span_after_full_iteration() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor); + + $mockCursor = $this->createMock(Cursor::class); + $mockCursor->method('map')->willReturnCallback(static function () : \Generator { + yield new \stdClass(); + yield new \stdClass(); + }); + + $cursor = new TraceableCursor($mockCursor, $config, $this->connectionParams(), 'SELECT * FROM users'); + + $objects = []; + + foreach ($cursor->map(\stdClass::class) as $object) { + $objects[] = $object; + } + + self::assertCount(2, $objects); + + $spans = $spanProcessor->endedSpans(); + self::assertCount(1, $spans); + self::assertSame(2, $spans[0]->attributes()[PostgreSqlTelemetryAttributes::DB_RESPONSE_RETURNED_ROWS]); + } + + public function test_next_increments_row_count() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor); + + $mockCursor = $this->createMock(Cursor::class); + $mockCursor->method('next') + ->willReturnOnConsecutiveCalls( + ['id' => 1], + ['id' => 2], + null + ); + + $cursor = new TraceableCursor($mockCursor, $config, $this->connectionParams(), 'SELECT * FROM users'); + + self::assertSame(['id' => 1], $cursor->next()); + self::assertSame(['id' => 2], $cursor->next()); + self::assertNull($cursor->next()); + + $cursor->free(); + + $spans = $spanProcessor->endedSpans(); + self::assertCount(1, $spans); + self::assertSame(2, $spans[0]->attributes()[PostgreSqlTelemetryAttributes::DB_RESPONSE_RETURNED_ROWS]); + } + + public function test_parameter_count_is_limited_by_default() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor, postgresql_telemetry_options( + includeParameters: true, + )); + + $mockCursor = $this->createMock(Cursor::class); + + $parameters = \array_fill(0, 20, 'value'); + $cursor = new TraceableCursor($mockCursor, $config, $this->connectionParams(), 'SELECT * FROM users', $parameters); + $cursor->free(); + + $spans = $spanProcessor->endedSpans(); + self::assertCount(1, $spans); + + for ($i = 1; $i <= 10; $i++) { + self::assertArrayHasKey(PostgreSqlTelemetryAttributes::DB_QUERY_PARAMETER_PREFIX . $i, $spans[0]->attributes()); + } + + for ($i = 11; $i <= 20; $i++) { + self::assertArrayNotHasKey(PostgreSqlTelemetryAttributes::DB_QUERY_PARAMETER_PREFIX . $i, $spans[0]->attributes()); + } + } + + public function test_parameter_count_unlimited_when_null() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor, postgresql_telemetry_options( + includeParameters: true, + maxParameters: null, + )); + + $mockCursor = $this->createMock(Cursor::class); + + $parameters = \array_fill(0, 20, 'value'); + $cursor = new TraceableCursor($mockCursor, $config, $this->connectionParams(), 'SELECT * FROM users', $parameters); + $cursor->free(); + + $spans = $spanProcessor->endedSpans(); + self::assertCount(1, $spans); + + for ($i = 1; $i <= 20; $i++) { + self::assertArrayHasKey(PostgreSqlTelemetryAttributes::DB_QUERY_PARAMETER_PREFIX . $i, $spans[0]->attributes()); + } + } + + public function test_parameter_values_are_truncated_by_default() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor, postgresql_telemetry_options( + includeParameters: true, + )); + + $mockCursor = $this->createMock(Cursor::class); + + $longValue = \str_repeat('a', 200); + $cursor = new TraceableCursor($mockCursor, $config, $this->connectionParams(), 'SELECT * FROM users WHERE name = $1', [$longValue]); + $cursor->free(); + + $spans = $spanProcessor->endedSpans(); + self::assertCount(1, $spans); + + $paramValue = $spans[0]->attributes()[PostgreSqlTelemetryAttributes::DB_QUERY_PARAMETER_PREFIX . '1']; + self::assertSame(103, \strlen($paramValue)); + self::assertStringEndsWith('...', $paramValue); + } + + public function test_parameter_values_unlimited_when_null() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor, postgresql_telemetry_options( + includeParameters: true, + maxParameterLength: null, + )); + + $mockCursor = $this->createMock(Cursor::class); + + $longValue = \str_repeat('a', 200); + $cursor = new TraceableCursor($mockCursor, $config, $this->connectionParams(), 'SELECT * FROM users WHERE name = $1', [$longValue]); + $cursor->free(); + + $spans = $spanProcessor->endedSpans(); + self::assertCount(1, $spans); + + $paramValue = $spans[0]->attributes()[PostgreSqlTelemetryAttributes::DB_QUERY_PARAMETER_PREFIX . '1']; + self::assertSame(200, \strlen($paramValue)); + self::assertSame($longValue, $paramValue); + } + + public function test_span_includes_correct_attributes() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor); + + $mockCursor = $this->createMock(Cursor::class); + + $cursor = new TraceableCursor($mockCursor, $config, $this->connectionParams(), 'SELECT * FROM users WHERE active = $1', [true]); + $cursor->free(); + + $spans = $spanProcessor->endedSpans(); + self::assertCount(1, $spans); + + $span = $spans[0]; + self::assertSame('SELECT users (cursor)', $span->name()); + self::assertSame('postgresql', $span->attributes()[PostgreSqlTelemetryAttributes::DB_SYSTEM_NAME]); + self::assertSame('testdb', $span->attributes()[PostgreSqlTelemetryAttributes::DB_NAMESPACE]); + self::assertSame('localhost', $span->attributes()[PostgreSqlTelemetryAttributes::SERVER_ADDRESS]); + self::assertSame('SELECT', $span->attributes()[PostgreSqlTelemetryAttributes::DB_OPERATION_NAME]); + self::assertSame('users', $span->attributes()[PostgreSqlTelemetryAttributes::DB_COLLECTION_NAME]); + } + + public function test_tracing_disabled_does_not_create_span() : void + { + $spanProcessor = memory_span_processor(void_span_exporter()); + $config = $this->createConfig($spanProcessor, postgresql_telemetry_options( + traceQueries: false, + collectMetrics: false, + )); + + $mockCursor = $this->createMock(Cursor::class); + + $cursor = new TraceableCursor($mockCursor, $config, $this->connectionParams(), 'SELECT * FROM users'); + $cursor->free(); + + self::assertEmpty($spanProcessor->endedSpans()); + } + + private function connectionParams() : ConnectionParameters + { + return pgsql_connection_params('testdb', 'localhost', 5432, 'user'); + } + + private function createConfig(MemorySpanProcessor $spanProcessor, ?PostgreSqlTelemetryOptions $options = null) : PostgreSqlTelemetryConfig + { + $clock = new SystemClock(); + $contextStorage = memory_context_storage(); + + $tel = telemetry( + resource(), + tracer_provider($spanProcessor, $clock, $contextStorage), + meter_provider(memory_metric_processor(void_metric_exporter()), $clock), + logger_provider(memory_log_processor(void_log_exporter()), $clock, $contextStorage), + ); + + return postgresql_telemetry_config($tel, $clock, $options ?? postgresql_telemetry_options()); + } +} diff --git a/src/lib/telemetry/src/Flow/Telemetry/AttributeLimitsEnforcer.php b/src/lib/telemetry/src/Flow/Telemetry/AttributeLimitsEnforcer.php new file mode 100644 index 0000000000..8d3c1ca4b1 --- /dev/null +++ b/src/lib/telemetry/src/Flow/Telemetry/AttributeLimitsEnforcer.php @@ -0,0 +1,81 @@ +normalize(); + $droppedCount = 0; + + if (\count($normalized) > $countLimit) { + $droppedCount = \count($normalized) - $countLimit; + $normalized = \array_slice($normalized, 0, $countLimit, true); + } + + if ($valueLengthLimit !== null) { + $normalized = $this->truncateStringValues($normalized, $valueLengthLimit); + } + + return new EnforcedAttributes( + Attributes::fromArray($normalized), + $droppedCount, + ); + } + + /** + * @param array $values + * + * @return array + */ + private function truncateArrayValues(array $values, int $maxLength) : array + { + foreach ($values as $index => $value) { + if (\is_string($value) && \mb_strlen($value) > $maxLength) { + $values[$index] = \mb_substr($value, 0, $maxLength); + } + } + + return $values; + } + + /** + * @param array|bool|float|int|string> $values + * + * @return array|bool|float|int|string> + */ + private function truncateStringValues(array $values, int $maxLength) : array + { + foreach ($values as $key => $value) { + if (\is_string($value) && \mb_strlen($value) > $maxLength) { + $values[$key] = \mb_substr($value, 0, $maxLength); + } elseif (\is_array($value)) { + $values[$key] = $this->truncateArrayValues($value, $maxLength); + } + } + + return $values; + } +} diff --git a/src/lib/telemetry/src/Flow/Telemetry/Context/ContextScope.php b/src/lib/telemetry/src/Flow/Telemetry/Context/ContextScope.php new file mode 100644 index 0000000000..cf45a60a09 --- /dev/null +++ b/src/lib/telemetry/src/Flow/Telemetry/Context/ContextScope.php @@ -0,0 +1,30 @@ +detached) { + return self::DETACHED; + } + + $this->detached = true; + $this->storage->store($this->previous); + + return self::DETACHED; + } +} diff --git a/src/lib/telemetry/src/Flow/Telemetry/Context/ContextStorage.php b/src/lib/telemetry/src/Flow/Telemetry/Context/ContextStorage.php index cad1ef54eb..1819c17dc2 100644 --- a/src/lib/telemetry/src/Flow/Telemetry/Context/ContextStorage.php +++ b/src/lib/telemetry/src/Flow/Telemetry/Context/ContextStorage.php @@ -6,7 +6,7 @@ interface ContextStorage { - public function current() : Context; + public function attach(Context $context) : Scope; - public function store(Context $context) : void; + public function current() : Context; } diff --git a/src/lib/telemetry/src/Flow/Telemetry/Context/MemoryContextStorage.php b/src/lib/telemetry/src/Flow/Telemetry/Context/MemoryContextStorage.php index ff9375e02a..d6eedef89c 100644 --- a/src/lib/telemetry/src/Flow/Telemetry/Context/MemoryContextStorage.php +++ b/src/lib/telemetry/src/Flow/Telemetry/Context/MemoryContextStorage.php @@ -13,11 +13,24 @@ public function __construct(?Context $context = null) $this->context = $context ?? Context::create(); } + public function attach(Context $context) : Scope + { + $previous = $this->context; + $this->context = $context; + + return new ContextScope($previous, $this); + } + public function current() : Context { return $this->context; } + /** + * Internal method for scope detachment. + * + * @internal + */ public function store(Context $context) : void { $this->context = $context; diff --git a/src/lib/telemetry/src/Flow/Telemetry/Context/Scope.php b/src/lib/telemetry/src/Flow/Telemetry/Context/Scope.php new file mode 100644 index 0000000000..2ee4578ffc --- /dev/null +++ b/src/lib/telemetry/src/Flow/Telemetry/Context/Scope.php @@ -0,0 +1,10 @@ +|bool|float|int|string>}, * scope: array{name: string, version: string, schemaUrl: null|string, attributes: array|bool|float|int|string>}, * timestamp: string, - * spanContext: null|array{traceId: array{hex: string}, spanId: array{hex: string}, parentSpanId: null|array{hex: string}, isRemote: bool, traceFlags: array{byte: int}, traceState: array{entries: array}} + * spanContext: null|array{traceId: array{hex: string}, spanId: array{hex: string}, parentSpanId: null|array{hex: string}, isRemote: bool, traceFlags: array{byte: int}, traceState: array{entries: array}}, + * droppedAttributeCount?: int * } $data Normalized LogEntry data */ public static function fromArray(array $data) : self @@ -48,6 +50,7 @@ public static function fromArray(array $data) : self InstrumentationScope::fromArray($data['scope']), new \DateTimeImmutable($data['timestamp']), $data['spanContext'] !== null ? SpanContext::fromArray($data['spanContext']) : null, + $data['droppedAttributeCount'] ?? 0, ); } @@ -59,7 +62,8 @@ public static function fromArray(array $data) : self * resource: array{attributes: array|bool|float|int|string>}, * scope: array{name: string, version: string, schemaUrl: null|string, attributes: array|bool|float|int|string>}, * timestamp: string, - * spanContext: null|array{traceId: array{hex: string}, spanId: array{hex: string}, parentSpanId: null|array{hex: string}, isRemote: bool, traceFlags: array{byte: int}, traceState: array{entries: array}} + * spanContext: null|array{traceId: array{hex: string}, spanId: array{hex: string}, parentSpanId: null|array{hex: string}, isRemote: bool, traceFlags: array{byte: int}, traceState: array{entries: array}}, + * droppedAttributeCount: int * } */ public function normalize() : array @@ -70,6 +74,7 @@ public function normalize() : array 'scope' => $this->scope->normalize(), 'timestamp' => $this->timestamp->format('c'), 'spanContext' => $this->spanContext?->normalize(), + 'droppedAttributeCount' => $this->droppedAttributeCount, ]; } } diff --git a/src/lib/telemetry/src/Flow/Telemetry/Logger/LogRecordLimits.php b/src/lib/telemetry/src/Flow/Telemetry/Logger/LogRecordLimits.php new file mode 100644 index 0000000000..273b51ee7c --- /dev/null +++ b/src/lib/telemetry/src/Flow/Telemetry/Logger/LogRecordLimits.php @@ -0,0 +1,56 @@ +attributes->count() > $this->limits->attributeCountLimit || $this->limits->attributeValueLengthLimit !== null) { + $enforcer = new AttributeLimitsEnforcer(); + $result = $enforcer->enforce( + $record->attributes, + $this->limits->attributeCountLimit, + $this->limits->attributeValueLengthLimit, + ); + + $record = new LogRecord( + $record->severity, + $record->body, + $result->attributes, + $record->timestamp, + $record->observedTimestamp, + ); + $droppedAttributeCount = $result->droppedAttributeCount; + } + $entry = new LogEntry( $record, $this->resource, $this->scope, $record->timestamp ?? $this->clock->now(), $spanContext ?? $this->resolveSpanContext(), + $droppedAttributeCount, ); $this->processor->process($entry); diff --git a/src/lib/telemetry/src/Flow/Telemetry/Logger/LoggerProvider.php b/src/lib/telemetry/src/Flow/Telemetry/Logger/LoggerProvider.php index df1eb0285a..2712100efd 100644 --- a/src/lib/telemetry/src/Flow/Telemetry/Logger/LoggerProvider.php +++ b/src/lib/telemetry/src/Flow/Telemetry/Logger/LoggerProvider.php @@ -37,6 +37,7 @@ public function __construct( private LogProcessor $processor, private ClockInterface $clock, private ContextStorage $contextStorage, + private LogRecordLimits $limits = new LogRecordLimits(), ) { } @@ -60,6 +61,7 @@ public function logger(Resource $resource, string $name, string $version = 'unkn $this->processor, $this->clock, $this->contextStorage, + $this->limits, ); } } diff --git a/src/lib/telemetry/src/Flow/Telemetry/Meter/Instrument/Counter.php b/src/lib/telemetry/src/Flow/Telemetry/Meter/Instrument/Counter.php index 251ab7a3c9..026b29a700 100644 --- a/src/lib/telemetry/src/Flow/Telemetry/Meter/Instrument/Counter.php +++ b/src/lib/telemetry/src/Flow/Telemetry/Meter/Instrument/Counter.php @@ -6,7 +6,7 @@ use Flow\Telemetry\Attributes; use Flow\Telemetry\{InstrumentationScope, Resource}; -use Flow\Telemetry\Meter\{AggregationTemporality, Metric, MetricType}; +use Flow\Telemetry\Meter\{AggregationTemporality, Metric, MetricLimits, MetricType}; use Flow\Telemetry\Meter\Exemplar\{ExemplarFilter, ExemplarReservoir, SimpleFixedSizeExemplarReservoir, TraceBasedExemplarFilter}; use Flow\Telemetry\Tracer\SpanContext; use Psr\Clock\ClockInterface; @@ -35,6 +35,11 @@ final class Counter implements Instrument */ private array $aggregations = []; + /** + * Key for overflow aggregation. + */ + private readonly string $overflowKey; + /** * @param string $name Instrument name * @param resource $resource The resource context for this instrument @@ -42,6 +47,7 @@ final class Counter implements Instrument * @param ClockInterface $clock Clock for timestamps * @param AggregationTemporality $temporality Aggregation temporality * @param ExemplarFilter $exemplarFilter Filter for exemplar sampling + * @param MetricLimits $limits Cardinality limits for this instrument * @param null|string $unit Unit of measurement * @param null|string $description Human-readable description */ @@ -52,9 +58,11 @@ public function __construct( private readonly ClockInterface $clock, private readonly AggregationTemporality $temporality = AggregationTemporality::CUMULATIVE, private readonly ExemplarFilter $exemplarFilter = new TraceBasedExemplarFilter(), + private readonly MetricLimits $limits = new MetricLimits(), private readonly ?string $unit = null, private readonly ?string $description = null, ) { + $this->overflowKey = Attributes::create([MetricLimits::OVERFLOW_ATTRIBUTE => true])->id(); } /** @@ -77,6 +85,17 @@ public function add(int|float $amount, array|Attributes $attributes = [], ?SpanC $attrs = \array_filter($normalized, static fn ($v) : bool => \is_scalar($v)); $key = Attributes::create($attrs)->id(); + if (!isset($this->aggregations[$key])) { + $nonOverflowCount = isset($this->aggregations[$this->overflowKey]) + ? \count($this->aggregations) - 1 + : \count($this->aggregations); + + if ($nonOverflowCount >= $this->limits->cardinalityLimit) { + $key = $this->overflowKey; + $attrs = [MetricLimits::OVERFLOW_ATTRIBUTE => true]; + } + } + if (!isset($this->aggregations[$key])) { $this->aggregations[$key] = [ 'sum' => 0, diff --git a/src/lib/telemetry/src/Flow/Telemetry/Meter/Instrument/Gauge.php b/src/lib/telemetry/src/Flow/Telemetry/Meter/Instrument/Gauge.php index ceabb8ee51..9033c7b370 100644 --- a/src/lib/telemetry/src/Flow/Telemetry/Meter/Instrument/Gauge.php +++ b/src/lib/telemetry/src/Flow/Telemetry/Meter/Instrument/Gauge.php @@ -7,7 +7,7 @@ use Flow\Telemetry\Attributes; use Flow\Telemetry\{InstrumentationScope, Resource}; use Flow\Telemetry\Meter\Exemplar\{ExemplarFilter, ExemplarReservoir, SimpleFixedSizeExemplarReservoir, TraceBasedExemplarFilter}; -use Flow\Telemetry\Meter\{Metric, MetricType}; +use Flow\Telemetry\Meter\{Metric, MetricLimits, MetricType}; use Flow\Telemetry\Tracer\SpanContext; use Psr\Clock\ClockInterface; @@ -35,12 +35,18 @@ final class Gauge implements Instrument */ private array $aggregations = []; + /** + * Key for overflow aggregation. + */ + private readonly string $overflowKey; + /** * @param string $name Instrument name * @param resource $resource The resource context for this instrument * @param InstrumentationScope $scope Instrumentation scope that created this instrument * @param ClockInterface $clock Clock for timestamps * @param ExemplarFilter $exemplarFilter Filter for exemplar sampling + * @param MetricLimits $limits Cardinality limits for this instrument * @param null|string $unit Unit of measurement * @param null|string $description Human-readable description */ @@ -50,9 +56,11 @@ public function __construct( private readonly InstrumentationScope $scope, private readonly ClockInterface $clock, private readonly ExemplarFilter $exemplarFilter = new TraceBasedExemplarFilter(), + private readonly MetricLimits $limits = new MetricLimits(), private readonly ?string $unit = null, private readonly ?string $description = null, ) { + $this->overflowKey = Attributes::create([MetricLimits::OVERFLOW_ATTRIBUTE => true])->id(); } public function collect() : array @@ -105,6 +113,17 @@ public function record(int|float $value, array|Attributes $attributes = [], ?Spa $attrs = \array_filter($normalized, static fn ($v) : bool => \is_scalar($v)); $key = Attributes::create($attrs)->id(); + if (!isset($this->aggregations[$key])) { + $nonOverflowCount = isset($this->aggregations[$this->overflowKey]) + ? \count($this->aggregations) - 1 + : \count($this->aggregations); + + if ($nonOverflowCount >= $this->limits->cardinalityLimit) { + $key = $this->overflowKey; + $attrs = [MetricLimits::OVERFLOW_ATTRIBUTE => true]; + } + } + if (!isset($this->aggregations[$key])) { $this->aggregations[$key] = [ 'value' => $value, diff --git a/src/lib/telemetry/src/Flow/Telemetry/Meter/Instrument/Histogram.php b/src/lib/telemetry/src/Flow/Telemetry/Meter/Instrument/Histogram.php index ee715452de..9ef8c0679c 100644 --- a/src/lib/telemetry/src/Flow/Telemetry/Meter/Instrument/Histogram.php +++ b/src/lib/telemetry/src/Flow/Telemetry/Meter/Instrument/Histogram.php @@ -6,7 +6,7 @@ use Flow\Telemetry\Attributes; use Flow\Telemetry\{InstrumentationScope, Resource}; -use Flow\Telemetry\Meter\{AggregationTemporality, Metric, MetricType}; +use Flow\Telemetry\Meter\{AggregationTemporality, Metric, MetricLimits, MetricType}; use Flow\Telemetry\Meter\Exemplar\{AlignedHistogramBucketExemplarReservoir, ExemplarFilter, ExemplarReservoir, TraceBasedExemplarFilter}; use Flow\Telemetry\Tracer\SpanContext; use Psr\Clock\ClockInterface; @@ -43,6 +43,11 @@ final class Histogram implements Instrument */ private array $aggregations = []; + /** + * Key for overflow aggregation. + */ + private readonly string $overflowKey; + /** * @param string $name Instrument name * @param resource $resource The resource context for this instrument @@ -50,6 +55,7 @@ final class Histogram implements Instrument * @param ClockInterface $clock Clock for timestamps * @param AggregationTemporality $temporality Aggregation temporality * @param ExemplarFilter $exemplarFilter Filter for exemplar sampling + * @param MetricLimits $limits Cardinality limits for this instrument * @param null|string $unit Unit of measurement * @param null|string $description Human-readable description * @param array $boundaries Explicit bucket boundaries (strictly increasing) @@ -61,10 +67,12 @@ public function __construct( private readonly ClockInterface $clock, private readonly AggregationTemporality $temporality = AggregationTemporality::CUMULATIVE, private readonly ExemplarFilter $exemplarFilter = new TraceBasedExemplarFilter(), + private readonly MetricLimits $limits = new MetricLimits(), private readonly ?string $unit = null, private readonly ?string $description = null, private readonly array $boundaries = self::DEFAULT_BOUNDARIES, ) { + $this->overflowKey = Attributes::create([MetricLimits::OVERFLOW_ATTRIBUTE => true])->id(); } /** @@ -136,6 +144,17 @@ public function record(int|float $value, array|Attributes $attributes = [], ?Spa $key = Attributes::create($attrs)->id(); $floatValue = (float) $value; + if (!isset($this->aggregations[$key])) { + $nonOverflowCount = isset($this->aggregations[$this->overflowKey]) + ? \count($this->aggregations) - 1 + : \count($this->aggregations); + + if ($nonOverflowCount >= $this->limits->cardinalityLimit) { + $key = $this->overflowKey; + $attrs = [MetricLimits::OVERFLOW_ATTRIBUTE => true]; + } + } + if (!isset($this->aggregations[$key])) { $this->aggregations[$key] = [ 'count' => 0, diff --git a/src/lib/telemetry/src/Flow/Telemetry/Meter/Instrument/Throughput.php b/src/lib/telemetry/src/Flow/Telemetry/Meter/Instrument/Throughput.php index 733b8e8486..b59c3705fe 100644 --- a/src/lib/telemetry/src/Flow/Telemetry/Meter/Instrument/Throughput.php +++ b/src/lib/telemetry/src/Flow/Telemetry/Meter/Instrument/Throughput.php @@ -6,7 +6,7 @@ use Flow\Telemetry\Attributes; use Flow\Telemetry\{InstrumentationScope, Resource}; -use Flow\Telemetry\Meter\{AggregationTemporality, Metric, MetricType, TimeUnit}; +use Flow\Telemetry\Meter\{AggregationTemporality, Metric, MetricLimits, MetricType, TimeUnit}; use Flow\Telemetry\Meter\Exemplar\{ExemplarFilter, ExemplarReservoir, SimpleFixedSizeExemplarReservoir, TraceBasedExemplarFilter}; use Flow\Telemetry\Tracer\SpanContext; use Psr\Clock\ClockInterface; @@ -35,6 +35,11 @@ final class Throughput implements Instrument */ private array $aggregations = []; + /** + * Key for overflow aggregation. + */ + private readonly string $overflowKey; + /** * @param string $name Instrument name * @param resource $resource The resource context for this instrument @@ -42,6 +47,7 @@ final class Throughput implements Instrument * @param ClockInterface $clock Clock for timestamps * @param AggregationTemporality $temporality Aggregation temporality * @param ExemplarFilter $exemplarFilter Filter for exemplar sampling + * @param MetricLimits $limits Cardinality limits for this instrument * @param null|string $unit Unit of measurement (e.g., 'rows', 'bytes') * @param null|string $description Human-readable description * @param null|int $ratePrecision Number of decimal places for rate calculation (default: 2, null for no rounding) @@ -54,11 +60,13 @@ public function __construct( private readonly ClockInterface $clock, private readonly AggregationTemporality $temporality = AggregationTemporality::CUMULATIVE, private readonly ExemplarFilter $exemplarFilter = new TraceBasedExemplarFilter(), + private readonly MetricLimits $limits = new MetricLimits(), private readonly ?string $unit = null, private readonly ?string $description = null, private readonly ?int $ratePrecision = 2, private readonly TimeUnit $timeUnit = TimeUnit::SECONDS, ) { + $this->overflowKey = Attributes::create([MetricLimits::OVERFLOW_ATTRIBUTE => true])->id(); } /** @@ -75,6 +83,17 @@ public function add(int $count, array|Attributes $attributes = [], ?SpanContext $attrs = \array_filter($normalized, static fn ($v) : bool => \is_scalar($v)); $key = Attributes::create($attrs)->id(); + if (!isset($this->aggregations[$key])) { + $nonOverflowCount = isset($this->aggregations[$this->overflowKey]) + ? \count($this->aggregations) - 1 + : \count($this->aggregations); + + if ($nonOverflowCount >= $this->limits->cardinalityLimit) { + $key = $this->overflowKey; + $attrs = [MetricLimits::OVERFLOW_ATTRIBUTE => true]; + } + } + if (!isset($this->aggregations[$key])) { $this->aggregations[$key] = [ 'count' => 0, diff --git a/src/lib/telemetry/src/Flow/Telemetry/Meter/Instrument/UpDownCounter.php b/src/lib/telemetry/src/Flow/Telemetry/Meter/Instrument/UpDownCounter.php index 0397f59910..fd5ef55bf0 100644 --- a/src/lib/telemetry/src/Flow/Telemetry/Meter/Instrument/UpDownCounter.php +++ b/src/lib/telemetry/src/Flow/Telemetry/Meter/Instrument/UpDownCounter.php @@ -6,7 +6,7 @@ use Flow\Telemetry\Attributes; use Flow\Telemetry\{InstrumentationScope, Resource}; -use Flow\Telemetry\Meter\{AggregationTemporality, Metric, MetricType}; +use Flow\Telemetry\Meter\{AggregationTemporality, Metric, MetricLimits, MetricType}; use Flow\Telemetry\Meter\Exemplar\{ExemplarFilter, ExemplarReservoir, SimpleFixedSizeExemplarReservoir, TraceBasedExemplarFilter}; use Flow\Telemetry\Tracer\SpanContext; use Psr\Clock\ClockInterface; @@ -35,6 +35,11 @@ final class UpDownCounter implements Instrument */ private array $aggregations = []; + /** + * Key for overflow aggregation. + */ + private readonly string $overflowKey; + /** * @param string $name Instrument name * @param resource $resource The resource context for this instrument @@ -42,6 +47,7 @@ final class UpDownCounter implements Instrument * @param ClockInterface $clock Clock for timestamps * @param AggregationTemporality $temporality Aggregation temporality * @param ExemplarFilter $exemplarFilter Filter for exemplar sampling + * @param MetricLimits $limits Cardinality limits for this instrument * @param null|string $unit Unit of measurement * @param null|string $description Human-readable description */ @@ -52,9 +58,11 @@ public function __construct( private readonly ClockInterface $clock, private readonly AggregationTemporality $temporality = AggregationTemporality::CUMULATIVE, private readonly ExemplarFilter $exemplarFilter = new TraceBasedExemplarFilter(), + private readonly MetricLimits $limits = new MetricLimits(), private readonly ?string $unit = null, private readonly ?string $description = null, ) { + $this->overflowKey = Attributes::create([MetricLimits::OVERFLOW_ATTRIBUTE => true])->id(); } /** @@ -71,6 +79,17 @@ public function add(int|float $amount, array|Attributes $attributes = [], ?SpanC $attrs = \array_filter($normalized, static fn ($v) : bool => \is_scalar($v)); $key = Attributes::create($attrs)->id(); + if (!isset($this->aggregations[$key])) { + $nonOverflowCount = isset($this->aggregations[$this->overflowKey]) + ? \count($this->aggregations) - 1 + : \count($this->aggregations); + + if ($nonOverflowCount >= $this->limits->cardinalityLimit) { + $key = $this->overflowKey; + $attrs = [MetricLimits::OVERFLOW_ATTRIBUTE => true]; + } + } + if (!isset($this->aggregations[$key])) { $this->aggregations[$key] = [ 'sum' => 0, diff --git a/src/lib/telemetry/src/Flow/Telemetry/Meter/Meter.php b/src/lib/telemetry/src/Flow/Telemetry/Meter/Meter.php index b83ae96b38..91d2a88106 100644 --- a/src/lib/telemetry/src/Flow/Telemetry/Meter/Meter.php +++ b/src/lib/telemetry/src/Flow/Telemetry/Meter/Meter.php @@ -45,6 +45,7 @@ final class Meter * @param ClockInterface $clock Clock for timestamps * @param AggregationTemporality $temporality Aggregation temporality for metrics * @param ExemplarFilter $exemplarFilter Filter for exemplar sampling + * @param MetricLimits $limits Cardinality limits for instruments */ public function __construct( private readonly Resource $resource, @@ -53,6 +54,7 @@ public function __construct( private readonly ClockInterface $clock, private readonly AggregationTemporality $temporality = AggregationTemporality::CUMULATIVE, private readonly ExemplarFilter $exemplarFilter = new TraceBasedExemplarFilter(), + private readonly MetricLimits $limits = new MetricLimits(), ) { } @@ -119,6 +121,7 @@ public function createCounter( $this->clock, $this->temporality, $this->exemplarFilter, + $this->limits, $unit, $description, ); @@ -152,6 +155,7 @@ public function createGauge( $this->scope, $this->clock, $this->exemplarFilter, + $this->limits, $unit, $description, ); @@ -188,6 +192,7 @@ public function createHistogram( $this->clock, $this->temporality, $this->exemplarFilter, + $this->limits, $unit, $description, $boundaries ?? Histogram::DEFAULT_BOUNDARIES, @@ -228,6 +233,7 @@ public function createThroughput( $this->clock, $this->temporality, $this->exemplarFilter, + $this->limits, $unit, $description, $ratePrecision, @@ -264,6 +270,7 @@ public function createUpDownCounter( $this->clock, $this->temporality, $this->exemplarFilter, + $this->limits, $unit, $description, ); diff --git a/src/lib/telemetry/src/Flow/Telemetry/Meter/MeterProvider.php b/src/lib/telemetry/src/Flow/Telemetry/Meter/MeterProvider.php index 56565f7feb..0a1e58c1e7 100644 --- a/src/lib/telemetry/src/Flow/Telemetry/Meter/MeterProvider.php +++ b/src/lib/telemetry/src/Flow/Telemetry/Meter/MeterProvider.php @@ -40,6 +40,7 @@ public function __construct( private ClockInterface $clock = new SystemClock(), private AggregationTemporality $temporality = AggregationTemporality::CUMULATIVE, private ExemplarFilter $exemplarFilter = new TraceBasedExemplarFilter(), + private MetricLimits $limits = new MetricLimits(), ) { } @@ -64,6 +65,7 @@ public function meter(Resource $resource, string $name, string $version = 'unkno $this->clock, $this->temporality, $this->exemplarFilter, + $this->limits, ); } } diff --git a/src/lib/telemetry/src/Flow/Telemetry/Meter/MetricLimits.php b/src/lib/telemetry/src/Flow/Telemetry/Meter/MetricLimits.php new file mode 100644 index 0000000000..3e121715c4 --- /dev/null +++ b/src/lib/telemetry/src/Flow/Telemetry/Meter/MetricLimits.php @@ -0,0 +1,58 @@ +|bool|float|int|string>} $data Normalized event data + * @param array{name: string, timestamp: string, attributes: array|bool|float|int|string>, droppedAttributeCount?: int} $data Normalized event data */ public static function fromArray(array $data) : self { @@ -52,6 +54,7 @@ public static function fromArray(array $data) : self $data['name'], new \DateTimeImmutable($data['timestamp']), Attributes::fromArray($data['attributes']), + $data['droppedAttributeCount'] ?? 0, ); } @@ -68,6 +71,11 @@ public function attributesObject() : Attributes return $this->attributesObject; } + public function droppedAttributeCount() : int + { + return $this->droppedAttributeCount; + } + public function name() : string { return $this->name; @@ -76,7 +84,7 @@ public function name() : string /** * Normalize the GenericEvent to an array representation for serialization. * - * @return array{name: string, timestamp: string, attributes: array|bool|float|int|string>} + * @return array{name: string, timestamp: string, attributes: array|bool|float|int|string>, droppedAttributeCount: int} */ public function normalize() : array { @@ -84,6 +92,7 @@ public function normalize() : array 'name' => $this->name, 'timestamp' => $this->timestamp->format('c'), 'attributes' => $this->attributesObject->normalize(), + 'droppedAttributeCount' => $this->droppedAttributeCount, ]; } diff --git a/src/lib/telemetry/src/Flow/Telemetry/Tracer/Span.php b/src/lib/telemetry/src/Flow/Telemetry/Tracer/Span.php index 9011634d31..d6837cb29c 100644 --- a/src/lib/telemetry/src/Flow/Telemetry/Tracer/Span.php +++ b/src/lib/telemetry/src/Flow/Telemetry/Tracer/Span.php @@ -4,7 +4,8 @@ namespace Flow\Telemetry\Tracer; -use Flow\Telemetry\{Attributes, InstrumentationScope, Resource}; +use Flow\Telemetry\{AttributeLimitsEnforcer, Attributes, InstrumentationScope, Resource}; +use Flow\Telemetry\Context\Scope; /** * Represents a single operation within a trace. @@ -31,6 +32,14 @@ final class Span { private Attributes $attributes; + private ?Scope $contextScope = null; + + private int $droppedAttributeCount = 0; + + private int $droppedEventsCount = 0; + + private int $droppedLinksCount = 0; + private ?\DateTimeImmutable $endTime = null; /** @@ -53,6 +62,7 @@ public function __construct( private readonly Resource $resource, private readonly InstrumentationScope $scope, private readonly bool $isRecording = true, + private readonly SpanLimits $limits = new SpanLimits(), ) { $this->attributes = Attributes::empty(); } @@ -72,8 +82,11 @@ public function __construct( * resource: array{attributes: array|bool|float|int|string>}, * scope: array{name: string, version: string, schemaUrl: null|string, attributes: array|bool|float|int|string>}, * attributes: array|bool|float|int|string>, - * events: array|bool|float|int|string>}>, - * links: array|bool|float|int|string>}>, + * droppedAttributeCount?: int, + * events: array|bool|float|int|string>, droppedAttributeCount?: int}>, + * droppedEventsCount?: int, + * links: array|bool|float|int|string>, droppedAttributeCount?: int}>, + * droppedLinksCount?: int, * status: null|array{code: int, description: null|string}, * isRecording: bool * } $data Normalized Span data @@ -91,14 +104,17 @@ public static function fromArray(array $data) : self ); $span->attributes = Attributes::fromArray($data['attributes']); + $span->droppedAttributeCount = $data['droppedAttributeCount'] ?? 0; foreach ($data['events'] as $eventData) { $span->events[] = GenericEvent::fromArray($eventData); } + $span->droppedEventsCount = $data['droppedEventsCount'] ?? 0; foreach ($data['links'] as $linkData) { $span->links[] = SpanLink::fromArray($linkData); } + $span->droppedLinksCount = $data['droppedLinksCount'] ?? 0; if ($data['status'] !== null) { $span->status = SpanStatus::fromArray($data['status']); @@ -114,11 +130,31 @@ public static function fromArray(array $data) : self /** * Add a link to another span. * + * If the link count limit is exceeded, the link is discarded. + * Link attributes are enforced against attributePerLinkCountLimit. + * * @return $this */ public function addLink(SpanLink $link) : self { - $this->links[] = $link; + if (\count($this->links) >= $this->limits->linkCountLimit) { + $this->droppedLinksCount++; + + return $this; + } + + if ($link->attributes->count() > $this->limits->attributePerLinkCountLimit || $this->limits->attributeValueLengthLimit !== null) { + $enforcer = new AttributeLimitsEnforcer(); + $result = $enforcer->enforce( + $link->attributes, + $this->limits->attributePerLinkCountLimit, + $this->limits->attributeValueLengthLimit, + ); + + $this->links[] = SpanLink::create($link->context, $result->attributes, $result->droppedAttributeCount); + } else { + $this->links[] = $link; + } return $this; } @@ -149,6 +185,38 @@ public function context() : SpanContext return $this->context; } + /** + * Get the context scope for this span. + */ + public function contextScope() : ?Scope + { + return $this->contextScope; + } + + /** + * Get the count of attributes that were dropped due to limits. + */ + public function droppedAttributeCount() : int + { + return $this->droppedAttributeCount; + } + + /** + * Get the count of events that were dropped due to limits. + */ + public function droppedEventsCount() : int + { + return $this->droppedEventsCount; + } + + /** + * Get the count of links that were dropped due to limits. + */ + public function droppedLinksCount() : int + { + return $this->droppedLinksCount; + } + /** * Get the span duration in milliseconds. * @@ -258,8 +326,11 @@ public function name() : string * resource: array{attributes: array|bool|float|int|string>}, * scope: array{name: string, version: string, schemaUrl: null|string, attributes: array|bool|float|int|string>}, * attributes: array|bool|float|int|string>, - * events: array|bool|float|int|string>}>, - * links: array|bool|float|int|string>}>, + * droppedAttributeCount: int, + * events: array|bool|float|int|string>, droppedAttributeCount: int}>, + * droppedEventsCount: int, + * links: array|bool|float|int|string>, droppedAttributeCount: int}>, + * droppedLinksCount: int, * status: null|array{code: int, description: null|string}, * isRecording: bool * } @@ -287,8 +358,11 @@ public function normalize() : array 'resource' => $this->resource->normalize(), 'scope' => $this->scope->normalize(), 'attributes' => $this->attributes->normalize(), + 'droppedAttributeCount' => $this->droppedAttributeCount, 'events' => $events, + 'droppedEventsCount' => $this->droppedEventsCount, 'links' => $links, + 'droppedLinksCount' => $this->droppedLinksCount, 'status' => $this->status?->normalize(), 'isRecording' => $this->isRecording, ]; @@ -297,11 +371,36 @@ public function normalize() : array /** * Record an event in this span. * + * If the event count limit is exceeded, the event is discarded. + * Event attributes are enforced against attributePerEventCountLimit. + * * @return $this */ public function recordEvent(SpanEvent $event) : self { - $this->events[] = $event; + if (\count($this->events) >= $this->limits->eventCountLimit) { + $this->droppedEventsCount++; + + return $this; + } + + if ($event->attributesObject()->count() > $this->limits->attributePerEventCountLimit || $this->limits->attributeValueLengthLimit !== null) { + $enforcer = new AttributeLimitsEnforcer(); + $result = $enforcer->enforce( + $event->attributesObject(), + $this->limits->attributePerEventCountLimit, + $this->limits->attributeValueLengthLimit, + ); + + $this->events[] = GenericEvent::create( + $event->name(), + $event->timestamp(), + $result->attributes, + $result->droppedAttributeCount, + ); + } else { + $this->events[] = $event; + } return $this; } @@ -362,12 +461,22 @@ public function scope() : InstrumentationScope /** * Set a single attribute. * + * If the attribute count limit is exceeded, the attribute is discarded. + * If the value is a string exceeding the length limit, it is truncated. + * * @param TAttributeValue $value * * @return $this */ public function setAttribute(string $key, string|int|float|bool|\DateTimeInterface|\Throwable|array $value) : self { + if (!$this->attributes->has($key) && $this->attributes->count() >= $this->limits->attributeCountLimit) { + $this->droppedAttributeCount++; + + return $this; + } + + $value = $this->truncateValue($value); $this->attributes = $this->attributes->with($key, $value); return $this; @@ -376,6 +485,8 @@ public function setAttribute(string $key, string|int|float|bool|\DateTimeInterfa /** * Set multiple attributes at once. * + * Attributes are added until the limit is reached. Excess attributes are discarded. + * * @param Attributes|TAttributeValueMap $attributes * * @return $this @@ -383,7 +494,25 @@ public function setAttribute(string $key, string|int|float|bool|\DateTimeInterfa public function setAttributes(Attributes|array $attributes) : self { $attrs = $attributes instanceof Attributes ? $attributes : Attributes::create($attributes); - $this->attributes = $this->attributes->merge($attrs); + $enforcer = new AttributeLimitsEnforcer(); + + $merged = $this->attributes->merge($attrs); + $result = $enforcer->enforce($merged, $this->limits->attributeCountLimit, $this->limits->attributeValueLengthLimit); + + $this->attributes = $result->attributes; + $this->droppedAttributeCount += $result->droppedAttributeCount; + + return $this; + } + + /** + * Set the context scope for this span. + * + * @return $this + */ + public function setContextScope(Scope $scope) : self + { + $this->contextScope = $scope; return $this; } @@ -415,4 +544,34 @@ public function status() : ?SpanStatus { return $this->status; } + + /** + * Truncate a value according to attribute value length limit. + * + * @param TAttributeValue $value + * + * @return TAttributeValue + */ + private function truncateValue(string|int|float|bool|\DateTimeInterface|\Throwable|array $value) : string|int|float|bool|\DateTimeInterface|\Throwable|array + { + if ($this->limits->attributeValueLengthLimit === null) { + return $value; + } + + if (\is_string($value) && \mb_strlen($value) > $this->limits->attributeValueLengthLimit) { + return \mb_substr($value, 0, $this->limits->attributeValueLengthLimit); + } + + if (\is_array($value)) { + return \array_map(function ($item) { + if (\is_string($item) && \mb_strlen($item) > $this->limits->attributeValueLengthLimit) { + return \mb_substr($item, 0, $this->limits->attributeValueLengthLimit); + } + + return $item; + }, $value); + } + + return $value; + } } diff --git a/src/lib/telemetry/src/Flow/Telemetry/Tracer/SpanEvent.php b/src/lib/telemetry/src/Flow/Telemetry/Tracer/SpanEvent.php index 1f1401699f..328a9641df 100644 --- a/src/lib/telemetry/src/Flow/Telemetry/Tracer/SpanEvent.php +++ b/src/lib/telemetry/src/Flow/Telemetry/Tracer/SpanEvent.php @@ -17,7 +17,7 @@ interface SpanEvent /** * Create a SpanEvent from a normalized array representation. * - * @param array{name: string, timestamp: string, attributes: array|bool|float|int|string>} $data Normalized event data + * @param array{name: string, timestamp: string, attributes: array|bool|float|int|string>, droppedAttributeCount?: int} $data Normalized event data */ public static function fromArray(array $data) : self; @@ -33,6 +33,11 @@ public function attributes() : array; */ public function attributesObject() : Attributes; + /** + * Get the count of attributes that were dropped due to limits. + */ + public function droppedAttributeCount() : int; + /** * Get the event name. */ @@ -41,7 +46,7 @@ public function name() : string; /** * Normalize the event to an array representation for serialization. * - * @return array{name: string, timestamp: string, attributes: array|bool|float|int|string>} + * @return array{name: string, timestamp: string, attributes: array|bool|float|int|string>, droppedAttributeCount: int} */ public function normalize() : array; diff --git a/src/lib/telemetry/src/Flow/Telemetry/Tracer/SpanLimits.php b/src/lib/telemetry/src/Flow/Telemetry/Tracer/SpanLimits.php index a562421273..5cd7b388b1 100644 --- a/src/lib/telemetry/src/Flow/Telemetry/Tracer/SpanLimits.php +++ b/src/lib/telemetry/src/Flow/Telemetry/Tracer/SpanLimits.php @@ -63,7 +63,7 @@ public static function default() : self /** * Create SpanLimits with unlimited values (for development/debugging). */ - public static function unlimited() : self + public function unlimited() : self { return new self( attributeCountLimit: PHP_INT_MAX, diff --git a/src/lib/telemetry/src/Flow/Telemetry/Tracer/SpanLink.php b/src/lib/telemetry/src/Flow/Telemetry/Tracer/SpanLink.php index 9b31950c24..b07928840e 100644 --- a/src/lib/telemetry/src/Flow/Telemetry/Tracer/SpanLink.php +++ b/src/lib/telemetry/src/Flow/Telemetry/Tracer/SpanLink.php @@ -27,6 +27,7 @@ public function __construct( public SpanContext $context, public Attributes $attributes = new Attributes(), + public int $droppedAttributeCount = 0, ) { } @@ -35,35 +36,38 @@ public function __construct( * * @param SpanContext $context The linked span's context * @param Attributes|TAttributeValueMap $attributes Link attributes + * @param int $droppedAttributeCount Number of attributes dropped due to limits */ - public static function create(SpanContext $context, Attributes|array $attributes = []) : self + public static function create(SpanContext $context, Attributes|array $attributes = [], int $droppedAttributeCount = 0) : self { - return new self($context, $attributes instanceof Attributes ? $attributes : Attributes::create($attributes)); + return new self($context, $attributes instanceof Attributes ? $attributes : Attributes::create($attributes), $droppedAttributeCount); } /** * Create a SpanLink from a normalized array representation. * - * @param array{context: array{traceId: array{hex: string}, spanId: array{hex: string}, parentSpanId: null|array{hex: string}, isRemote: bool}, attributes: array|bool|float|int|string>} $data Normalized SpanLink data + * @param array{context: array{traceId: array{hex: string}, spanId: array{hex: string}, parentSpanId: null|array{hex: string}, isRemote: bool}, attributes: array|bool|float|int|string>, droppedAttributeCount?: int} $data Normalized SpanLink data */ public static function fromArray(array $data) : self { return new self( SpanContext::fromArray($data['context']), Attributes::fromArray($data['attributes']), + $data['droppedAttributeCount'] ?? 0, ); } /** * Normalize the SpanLink to an array representation for serialization. * - * @return array{context: array{traceId: array{hex: string}, spanId: array{hex: string}, parentSpanId: null|array{hex: string}, isRemote: bool}, attributes: array|bool|float|int|string>} + * @return array{context: array{traceId: array{hex: string}, spanId: array{hex: string}, parentSpanId: null|array{hex: string}, isRemote: bool}, attributes: array|bool|float|int|string>, droppedAttributeCount: int} */ public function normalize() : array { return [ 'context' => $this->context->normalize(), 'attributes' => $this->attributes->normalize(), + 'droppedAttributeCount' => $this->droppedAttributeCount, ]; } } diff --git a/src/lib/telemetry/src/Flow/Telemetry/Tracer/Tracer.php b/src/lib/telemetry/src/Flow/Telemetry/Tracer/Tracer.php index f2f44a7e44..fd04179276 100644 --- a/src/lib/telemetry/src/Flow/Telemetry/Tracer/Tracer.php +++ b/src/lib/telemetry/src/Flow/Telemetry/Tracer/Tracer.php @@ -52,6 +52,7 @@ public function __construct( private readonly ClockInterface $clock, private readonly ContextStorage $contextStorage, private readonly ?Sampler $sampler = null, + private readonly SpanLimits $limits = new SpanLimits(), ) { /** @var \SplStack $stack */ $stack = new \SplStack(); @@ -90,13 +91,7 @@ public function complete(Span $span) : void } } - $context = $this->contextStorage->current(); - - if ($this->spanStack->isEmpty()) { - $this->contextStorage->store($context->withoutActiveSpan()); - } else { - $this->contextStorage->store($context->withActiveSpan($this->spanStack->top()->spanId)); - } + $span->contextScope()?->detach(); if ($span->isRecording()) { $this->processor->onEnd($span); @@ -190,7 +185,7 @@ public function span( if (!$traceId->isValid()) { $traceId = TraceId::generate(); $context = Context::withTraceId($traceId); - $this->contextStorage->store($context); + $this->contextStorage->attach($context); } $spanId = SpanId::generate(); @@ -203,7 +198,7 @@ public function span( : SpanContext::create($traceId, $spanId, $parentSpanId, $traceFlags, $traceState); $startTime = $this->clock->now(); - $span = new Span($name, $spanContext, $kind, $startTime, $this->resource, $this->scope, $isRecording); + $span = new Span($name, $spanContext, $kind, $startTime, $this->resource, $this->scope, $isRecording, $this->limits); $attributesToSet = $attributes instanceof Attributes ? $attributes : Attributes::create($attributes); $span->setAttributes($attributesToSet); @@ -231,7 +226,7 @@ public function span( ? SpanContext::createRemote($traceId, $spanId, $parentSpanId, $traceFlags, $traceState) : SpanContext::create($traceId, $spanId, $parentSpanId, $traceFlags, $traceState); - $span = new Span($name, $spanContext, $kind, $startTime, $this->resource, $this->scope, $isRecording); + $span = new Span($name, $spanContext, $kind, $startTime, $this->resource, $this->scope, $isRecording, $this->limits); $span->setAttributes($attributesToSet); foreach ($links as $link) { @@ -241,7 +236,7 @@ public function span( } $this->spanStack->push($span->context()); - $this->contextStorage->store($context->withActiveSpan($span->context()->spanId)); + $span->setContextScope($this->contextStorage->attach($context->withActiveSpan($span->context()->spanId))); if ($span->isRecording()) { $this->processor->onStart($span); diff --git a/src/lib/telemetry/src/Flow/Telemetry/Tracer/TracerProvider.php b/src/lib/telemetry/src/Flow/Telemetry/Tracer/TracerProvider.php index 44ad1e58cf..13e7bbf50f 100644 --- a/src/lib/telemetry/src/Flow/Telemetry/Tracer/TracerProvider.php +++ b/src/lib/telemetry/src/Flow/Telemetry/Tracer/TracerProvider.php @@ -40,6 +40,7 @@ public function __construct( private ClockInterface $clock, private ContextStorage $contextStorage, private Sampler $sampler = new AlwaysOnSampler(), + private SpanLimits $limits = new SpanLimits(), ) { } @@ -64,6 +65,7 @@ public function tracer(Resource $resource, string $name, string $version = 'unkn $this->clock, $this->contextStorage, $this->sampler, + $this->limits, ); } } diff --git a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Integration/Logger/LoggingIntegrationTest.php b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Integration/Logger/LoggingIntegrationTest.php index 3c219ba46b..4a55dac7d9 100644 --- a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Integration/Logger/LoggingIntegrationTest.php +++ b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Integration/Logger/LoggingIntegrationTest.php @@ -141,7 +141,7 @@ public function test_span_context_correlation() : void $contextStorage = new MemoryContextStorage(); $context = Context::withTraceId($traceId)->withActiveSpan($spanId); - $contextStorage->store($context); + $contextStorage->attach($context); $processor = $this->createProcessor(); $provider = new LoggerProvider($processor, $this->clock, $contextStorage); diff --git a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Integration/Telemetry/SignalLimitsIntegrationTest.php b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Integration/Telemetry/SignalLimitsIntegrationTest.php new file mode 100644 index 0000000000..7887bc3286 --- /dev/null +++ b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Integration/Telemetry/SignalLimitsIntegrationTest.php @@ -0,0 +1,438 @@ +clock = $this->createMock(ClockInterface::class); + $this->clock->method('now')->willReturn(new \DateTimeImmutable('2024-01-01 12:00:00.123456')); + } + + public function test_logger_dropped_count_included_in_normalized_output() : void + { + $logProcessor = new MemoryLogProcessor(new VoidLogExporter()); + $contextStorage = new MemoryContextStorage(); + $limits = new LogRecordLimits(attributeCountLimit: 1); + $loggerProvider = new LoggerProvider($logProcessor, $this->clock, $contextStorage, $limits); + + $logger = $loggerProvider->logger(ResourceMother::default(), 'test-service'); + + $logger->info('Test message', ['k1' => 'v1', 'k2' => 'v2', 'k3' => 'v3']); + + $normalized = $logProcessor->entries()[0]->normalize(); + + self::assertSame(2, $normalized['droppedAttributeCount']); + } + + public function test_logger_enforces_attribute_count_limit() : void + { + $logProcessor = new MemoryLogProcessor(new VoidLogExporter()); + $contextStorage = new MemoryContextStorage(); + $limits = new LogRecordLimits(attributeCountLimit: 3); + $loggerProvider = new LoggerProvider($logProcessor, $this->clock, $contextStorage, $limits); + + $logger = $loggerProvider->logger(ResourceMother::default(), 'test-service'); + + $logger->info('Test message', [ + 'key1' => 'value1', + 'key2' => 'value2', + 'key3' => 'value3', + 'key4' => 'value4', + 'key5' => 'value5', + ]); + + $entries = $logProcessor->entries(); + self::assertCount(1, $entries); + + $entry = $entries[0]; + self::assertCount(3, $entry->record->attributes->normalize()); + self::assertSame(2, $entry->droppedAttributeCount); + self::assertArrayHasKey('key1', $entry->record->attributes->normalize()); + self::assertArrayHasKey('key2', $entry->record->attributes->normalize()); + self::assertArrayHasKey('key3', $entry->record->attributes->normalize()); + } + + public function test_logger_enforces_attribute_value_length_limit() : void + { + $logProcessor = new MemoryLogProcessor(new VoidLogExporter()); + $contextStorage = new MemoryContextStorage(); + $limits = new LogRecordLimits(attributeValueLengthLimit: 10); + $loggerProvider = new LoggerProvider($logProcessor, $this->clock, $contextStorage, $limits); + + $logger = $loggerProvider->logger(ResourceMother::default(), 'test-service'); + + $logger->info('Test message', [ + 'short' => 'abc', + 'long' => 'this-is-a-very-long-string-value', + ]); + + $entries = $logProcessor->entries(); + $attrs = $entries[0]->record->attributes->normalize(); + + self::assertSame('abc', $attrs['short']); + self::assertSame('this-is-a-', $attrs['long']); + } + + public function test_meter_counter_enforces_cardinality_limit() : void + { + $metricProcessor = new MemoryMetricProcessor(new VoidMetricExporter()); + $limits = new MetricLimits(cardinalityLimit: 3); + $meterProvider = new MeterProvider($metricProcessor, $this->clock, limits: $limits); + + $meter = $meterProvider->meter(ResourceMother::default(), 'test-service'); + $counter = $meter->createCounter('test.counter'); + + $counter->add(1, ['key' => 'value1']); + $counter->add(2, ['key' => 'value2']); + $counter->add(3, ['key' => 'value3']); + $counter->add(4, ['key' => 'value4']); + $counter->add(5, ['key' => 'value5']); + + $metrics = $counter->collect(); + + self::assertCount(4, $metrics); + + $overflowMetrics = \array_values(\array_filter($metrics, static fn ($m) => $m->attributes->has(MetricLimits::OVERFLOW_ATTRIBUTE))); + self::assertCount(1, $overflowMetrics); + + self::assertTrue($overflowMetrics[0]->attributes->get(MetricLimits::OVERFLOW_ATTRIBUTE)); + self::assertSame(9, $overflowMetrics[0]->value); + } + + public function test_meter_histogram_enforces_cardinality_limit() : void + { + $metricProcessor = new MemoryMetricProcessor(new VoidMetricExporter()); + $limits = new MetricLimits(cardinalityLimit: 2); + $meterProvider = new MeterProvider($metricProcessor, $this->clock, limits: $limits); + + $meter = $meterProvider->meter(ResourceMother::default(), 'test-service'); + $histogram = $meter->createHistogram('test.histogram'); + + $histogram->record(10.0, ['region' => 'us']); + $histogram->record(20.0, ['region' => 'eu']); + $histogram->record(30.0, ['region' => 'asia']); + $histogram->record(40.0, ['region' => 'africa']); + + $metrics = $histogram->collect(); + + self::assertCount(3, $metrics); + + $overflowMetrics = \array_values(\array_filter($metrics, static fn ($m) => $m->attributes->has(MetricLimits::OVERFLOW_ATTRIBUTE))); + self::assertCount(1, $overflowMetrics); + } + + public function test_meter_overflow_aggregates_excess_measurements() : void + { + $metricProcessor = new MemoryMetricProcessor(new VoidMetricExporter()); + $limits = new MetricLimits(cardinalityLimit: 2); + $meterProvider = new MeterProvider($metricProcessor, $this->clock, limits: $limits); + + $meter = $meterProvider->meter(ResourceMother::default(), 'test-service'); + $counter = $meter->createCounter('test.counter'); + + $counter->add(1, ['id' => '1']); + $counter->add(2, ['id' => '2']); + $counter->add(3, ['id' => '3']); + $counter->add(4, ['id' => '4']); + $counter->add(5, ['id' => '5']); + + $metrics = $counter->collect(); + + $overflowMetrics = \array_values(\array_filter($metrics, static fn ($m) => $m->attributes->has(MetricLimits::OVERFLOW_ATTRIBUTE))); + + self::assertSame(12, $overflowMetrics[0]->value); + } + + public function test_meter_overflow_attribute_set_has_correct_attribute() : void + { + $metricProcessor = new MemoryMetricProcessor(new VoidMetricExporter()); + $limits = new MetricLimits(cardinalityLimit: 1); + $meterProvider = new MeterProvider($metricProcessor, $this->clock, limits: $limits); + + $meter = $meterProvider->meter(ResourceMother::default(), 'test-service'); + $counter = $meter->createCounter('test.counter'); + + $counter->add(1, ['key' => 'first']); + $counter->add(2, ['key' => 'overflow']); + + $metrics = $counter->collect(); + + self::assertCount(2, $metrics); + + $overflowMetrics = \array_values(\array_filter($metrics, static fn ($m) => $m->attributes->has(MetricLimits::OVERFLOW_ATTRIBUTE))); + + self::assertTrue($overflowMetrics[0]->attributes->get(MetricLimits::OVERFLOW_ATTRIBUTE)); + self::assertCount(1, $overflowMetrics[0]->attributes->normalize()); + } + + public function test_meter_reuses_existing_aggregations_within_limit() : void + { + $metricProcessor = new MemoryMetricProcessor(new VoidMetricExporter()); + $limits = new MetricLimits(cardinalityLimit: 2); + $meterProvider = new MeterProvider($metricProcessor, $this->clock, limits: $limits); + + $meter = $meterProvider->meter(ResourceMother::default(), 'test-service'); + $counter = $meter->createCounter('test.counter'); + + $counter->add(1, ['key' => 'a']); + $counter->add(2, ['key' => 'b']); + $counter->add(3, ['key' => 'a']); + $counter->add(4, ['key' => 'b']); + + $metrics = $counter->collect(); + + self::assertCount(2, $metrics); + + $attrA = \array_values(\array_filter($metrics, static fn ($m) => $m->attributes->get('key') === 'a')); + $attrB = \array_values(\array_filter($metrics, static fn ($m) => $m->attributes->get('key') === 'b')); + + self::assertSame(4, $attrA[0]->value); + self::assertSame(6, $attrB[0]->value); + } + + public function test_telemetry_facade_respects_limits() : void + { + $spanProcessor = new MemorySpanProcessor(new VoidSpanExporter()); + $metricProcessor = new MemoryMetricProcessor(new VoidMetricExporter()); + $logProcessor = new MemoryLogProcessor(new VoidLogExporter()); + $contextStorage = new MemoryContextStorage(); + + $spanLimits = new SpanLimits(attributeCountLimit: 2); + $logLimits = new LogRecordLimits(attributeCountLimit: 2); + + $tracerProvider = new TracerProvider($spanProcessor, $this->clock, $contextStorage, limits: $spanLimits); + $meterProvider = new MeterProvider($metricProcessor, $this->clock); + $loggerProvider = new LoggerProvider($logProcessor, $this->clock, $contextStorage, $logLimits); + + $telemetry = new Telemetry( + ResourceMother::default(), + $tracerProvider, + $meterProvider, + $loggerProvider, + ); + + $tracer = $telemetry->tracer('test-service'); + $logger = $telemetry->logger('test-service'); + + $span = $tracer->span('operation'); + $span->setAttributes(['a' => '1', 'b' => '2', 'c' => '3']); + $tracer->complete($span); + + $logger->info('message', ['x' => '1', 'y' => '2', 'z' => '3']); + + self::assertSame(1, $spanProcessor->endedSpans()[0]->droppedAttributeCount()); + self::assertSame(1, $logProcessor->entries()[0]->droppedAttributeCount); + } + + public function test_tracer_dropped_counts_included_in_normalized_output() : void + { + $spanProcessor = new MemorySpanProcessor(new VoidSpanExporter()); + $contextStorage = new MemoryContextStorage(); + $limits = new SpanLimits( + attributeCountLimit: 2, + eventCountLimit: 1, + linkCountLimit: 1, + ); + $tracerProvider = new TracerProvider($spanProcessor, $this->clock, $contextStorage, limits: $limits); + + $tracer = $tracerProvider->tracer(ResourceMother::default(), 'test-service'); + + $span = $tracer->span('test-operation'); + $span->setAttributes(['k1' => 'v1', 'k2' => 'v2', 'k3' => 'v3']); + $span->recordEvent(GenericEvent::create('e1', new \DateTimeImmutable())); + $span->recordEvent(GenericEvent::create('e2', new \DateTimeImmutable())); + $span->addLink(SpanLink::create(SpanContext::create(TraceId::generate(), SpanId::generate()))); + $span->addLink(SpanLink::create(SpanContext::create(TraceId::generate(), SpanId::generate()))); + $tracer->complete($span); + + $normalized = $spanProcessor->endedSpans()[0]->normalize(); + + self::assertSame(1, $normalized['droppedAttributeCount']); + self::assertSame(1, $normalized['droppedEventsCount']); + self::assertSame(1, $normalized['droppedLinksCount']); + } + + public function test_tracer_enforces_event_attribute_limits() : void + { + $spanProcessor = new MemorySpanProcessor(new VoidSpanExporter()); + $contextStorage = new MemoryContextStorage(); + $limits = new SpanLimits( + attributePerEventCountLimit: 2, + attributeValueLengthLimit: 10, + ); + $tracerProvider = new TracerProvider($spanProcessor, $this->clock, $contextStorage, limits: $limits); + + $tracer = $tracerProvider->tracer(ResourceMother::default(), 'test-service'); + + $span = $tracer->span('test-operation'); + $event = GenericEvent::create('test.event', new \DateTimeImmutable(), [ + 'key1' => 'short', + 'key2' => 'this-is-a-very-long-value', + 'key3' => 'dropped-attribute', + ]); + $span->recordEvent($event); + $tracer->complete($span); + + $endedSpans = $spanProcessor->endedSpans(); + $recordedEvent = $endedSpans[0]->events()[0]; + + self::assertCount(2, $recordedEvent->attributes()); + self::assertSame('short', $recordedEvent->attributes()['key1']); + self::assertSame('this-is-a-', $recordedEvent->attributes()['key2']); + self::assertSame(1, $recordedEvent->droppedAttributeCount()); + } + + public function test_tracer_enforces_event_count_limit() : void + { + $spanProcessor = new MemorySpanProcessor(new VoidSpanExporter()); + $contextStorage = new MemoryContextStorage(); + $limits = new SpanLimits(eventCountLimit: 2); + $tracerProvider = new TracerProvider($spanProcessor, $this->clock, $contextStorage, limits: $limits); + + $tracer = $tracerProvider->tracer(ResourceMother::default(), 'test-service'); + + $span = $tracer->span('test-operation'); + $span->recordEvent(GenericEvent::create('event1', new \DateTimeImmutable())); + $span->recordEvent(GenericEvent::create('event2', new \DateTimeImmutable())); + $span->recordEvent(GenericEvent::create('event3', new \DateTimeImmutable())); + $span->recordEvent(GenericEvent::create('event4', new \DateTimeImmutable())); + $tracer->complete($span); + + $endedSpans = $spanProcessor->endedSpans(); + $recordedSpan = $endedSpans[0]; + + self::assertCount(2, $recordedSpan->events()); + self::assertSame(2, $recordedSpan->droppedEventsCount()); + self::assertSame('event1', $recordedSpan->events()[0]->name()); + self::assertSame('event2', $recordedSpan->events()[1]->name()); + } + + public function test_tracer_enforces_link_attribute_limits() : void + { + $spanProcessor = new MemorySpanProcessor(new VoidSpanExporter()); + $contextStorage = new MemoryContextStorage(); + $limits = new SpanLimits( + attributePerLinkCountLimit: 2, + attributeValueLengthLimit: 10, + ); + $tracerProvider = new TracerProvider($spanProcessor, $this->clock, $contextStorage, limits: $limits); + + $tracer = $tracerProvider->tracer(ResourceMother::default(), 'test-service'); + + $span = $tracer->span('test-operation'); + $link = SpanLink::create( + SpanContext::create(TraceId::generate(), SpanId::generate()), + [ + 'key1' => 'short', + 'key2' => 'this-is-a-very-long-value', + 'key3' => 'dropped-attribute', + ], + ); + $span->addLink($link); + $tracer->complete($span); + + $endedSpans = $spanProcessor->endedSpans(); + $recordedLink = $endedSpans[0]->links()[0]; + + self::assertCount(2, $recordedLink->attributes->normalize()); + self::assertSame('short', $recordedLink->attributes->normalize()['key1']); + self::assertSame('this-is-a-', $recordedLink->attributes->normalize()['key2']); + self::assertSame(1, $recordedLink->droppedAttributeCount); + } + + public function test_tracer_enforces_link_count_limit() : void + { + $spanProcessor = new MemorySpanProcessor(new VoidSpanExporter()); + $contextStorage = new MemoryContextStorage(); + $limits = new SpanLimits(linkCountLimit: 2); + $tracerProvider = new TracerProvider($spanProcessor, $this->clock, $contextStorage, limits: $limits); + + $tracer = $tracerProvider->tracer(ResourceMother::default(), 'test-service'); + + $span = $tracer->span('test-operation'); + $span->addLink(SpanLink::create(SpanContext::create(TraceId::generate(), SpanId::generate()))); + $span->addLink(SpanLink::create(SpanContext::create(TraceId::generate(), SpanId::generate()))); + $span->addLink(SpanLink::create(SpanContext::create(TraceId::generate(), SpanId::generate()))); + $tracer->complete($span); + + $endedSpans = $spanProcessor->endedSpans(); + $recordedSpan = $endedSpans[0]; + + self::assertCount(2, $recordedSpan->links()); + self::assertSame(1, $recordedSpan->droppedLinksCount()); + } + + public function test_tracer_enforces_span_attribute_count_limit() : void + { + $spanProcessor = new MemorySpanProcessor(new VoidSpanExporter()); + $contextStorage = new MemoryContextStorage(); + $limits = new SpanLimits(attributeCountLimit: 3); + $tracerProvider = new TracerProvider($spanProcessor, $this->clock, $contextStorage, limits: $limits); + + $tracer = $tracerProvider->tracer(ResourceMother::default(), 'test-service'); + + $span = $tracer->span('test-operation'); + $span->setAttributes([ + 'key1' => 'value1', + 'key2' => 'value2', + 'key3' => 'value3', + 'key4' => 'value4', + 'key5' => 'value5', + ]); + $tracer->complete($span); + + $endedSpans = $spanProcessor->endedSpans(); + self::assertCount(1, $endedSpans); + + $recordedSpan = $endedSpans[0]; + self::assertCount(3, $recordedSpan->attributes()); + self::assertSame(2, $recordedSpan->droppedAttributeCount()); + self::assertArrayHasKey('key1', $recordedSpan->attributes()); + self::assertArrayHasKey('key2', $recordedSpan->attributes()); + self::assertArrayHasKey('key3', $recordedSpan->attributes()); + } + + public function test_tracer_enforces_span_attribute_value_length_limit() : void + { + $spanProcessor = new MemorySpanProcessor(new VoidSpanExporter()); + $contextStorage = new MemoryContextStorage(); + $limits = new SpanLimits(attributeValueLengthLimit: 10); + $tracerProvider = new TracerProvider($spanProcessor, $this->clock, $contextStorage, limits: $limits); + + $tracer = $tracerProvider->tracer(ResourceMother::default(), 'test-service'); + + $span = $tracer->span('test-operation'); + $span->setAttribute('short', 'abc'); + $span->setAttribute('long', 'this-is-a-very-long-string-value'); + $tracer->complete($span); + + $endedSpans = $spanProcessor->endedSpans(); + $recordedSpan = $endedSpans[0]; + + self::assertSame('abc', $recordedSpan->attributes()['short']); + self::assertSame('this-is-a-', $recordedSpan->attributes()['long']); + } +} diff --git a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Integration/Tracer/TracingIntegrationTest.php b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Integration/Tracer/TracingIntegrationTest.php index 3822587028..f99fbac78d 100644 --- a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Integration/Tracer/TracingIntegrationTest.php +++ b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Integration/Tracer/TracingIntegrationTest.php @@ -113,6 +113,33 @@ public function test_exception_handling_in_trace() : void self::assertSame(\RuntimeException::class, $event->attributes()['exception.type']); } + public function test_multiple_tracers_completing_spans_independently_preserve_context() : void + { + $storage = new MemoryContextStorage(); + $processor = $this->createProcessor(); + $provider = new TracerProvider($processor, $this->clock(), $storage); + + $tracerA = $provider->tracer($this->resource, 'tracer-a', '1.0.0'); + $tracerB = $provider->tracer($this->resource, 'tracer-b', '1.0.0'); + + $spanA = $tracerA->span('span-a'); + + self::assertNotNull($storage->current()->activeSpanId()); + self::assertTrue($spanA->context()->spanId->equals($storage->current()->activeSpanId())); + + $spanB = $tracerB->span('span-b'); + self::assertTrue($spanB->context()->spanId->equals($storage->current()->activeSpanId())); + + $tracerB->complete($spanB); + + self::assertNotNull($storage->current()->activeSpanId()); + self::assertTrue($spanA->context()->spanId->equals($storage->current()->activeSpanId())); + + $tracerA->complete($spanA); + + self::assertNull($storage->current()->activeSpanId()); + } + public function test_multiple_tracers_share_trace_id() : void { $ctx = context(); diff --git a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/AttributeLimitsEnforcerTest.php b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/AttributeLimitsEnforcerTest.php new file mode 100644 index 0000000000..da6df2aa68 --- /dev/null +++ b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/AttributeLimitsEnforcerTest.php @@ -0,0 +1,177 @@ + 'short', + 'key2' => 'this-is-a-long-value', + 'key3' => 'another-long-value', + 'key4' => 'dropped', + ]); + + $result = $enforcer->enforce($attributes, 3, 10); + + self::assertSame(3, $result->attributes->count()); + self::assertSame(1, $result->droppedAttributeCount); + self::assertSame('short', $result->attributes->get('key1')); + self::assertSame('this-is-a-', $result->attributes->get('key2')); + self::assertSame('another-lo', $result->attributes->get('key3')); + } + + public function test_does_not_drop_attributes_when_exactly_at_limit() : void + { + $enforcer = new AttributeLimitsEnforcer(); + $attributes = Attributes::create([ + 'key1' => 'value1', + 'key2' => 'value2', + 'key3' => 'value3', + ]); + + $result = $enforcer->enforce($attributes, 3, null); + + self::assertSame(3, $result->attributes->count()); + self::assertSame(0, $result->droppedAttributeCount); + } + + public function test_does_not_drop_attributes_when_under_limit() : void + { + $enforcer = new AttributeLimitsEnforcer(); + $attributes = Attributes::create([ + 'key1' => 'value1', + 'key2' => 'value2', + 'key3' => 'value3', + ]); + + $result = $enforcer->enforce($attributes, 10, null); + + self::assertSame(3, $result->attributes->count()); + self::assertSame(0, $result->droppedAttributeCount); + self::assertSame('value1', $result->attributes->get('key1')); + self::assertSame('value2', $result->attributes->get('key2')); + self::assertSame('value3', $result->attributes->get('key3')); + } + + public function test_does_not_modify_non_string_values() : void + { + $enforcer = new AttributeLimitsEnforcer(); + $attributes = Attributes::create([ + 'int' => 123456789012345, + 'float' => 123456.789012345, + 'bool' => true, + ]); + + $result = $enforcer->enforce($attributes, 10, 5); + + self::assertSame(123456789012345, $result->attributes->get('int')); + self::assertSame(123456.789012345, $result->attributes->get('float')); + self::assertTrue($result->attributes->get('bool')); + } + + public function test_drops_attributes_exceeding_count_limit() : void + { + $enforcer = new AttributeLimitsEnforcer(); + $attributes = Attributes::create([ + 'key1' => 'value1', + 'key2' => 'value2', + 'key3' => 'value3', + 'key4' => 'value4', + 'key5' => 'value5', + ]); + + $result = $enforcer->enforce($attributes, 3, null); + + self::assertSame(3, $result->attributes->count()); + self::assertSame(2, $result->droppedAttributeCount); + self::assertSame('value1', $result->attributes->get('key1')); + self::assertSame('value2', $result->attributes->get('key2')); + self::assertSame('value3', $result->attributes->get('key3')); + self::assertNull($result->attributes->get('key4')); + self::assertNull($result->attributes->get('key5')); + } + + public function test_handles_empty_attributes() : void + { + $enforcer = new AttributeLimitsEnforcer(); + $attributes = Attributes::empty(); + + $result = $enforcer->enforce($attributes, 10, 10); + + self::assertSame(0, $result->attributes->count()); + self::assertSame(0, $result->droppedAttributeCount); + } + + public function test_null_value_length_limit_does_not_truncate() : void + { + $enforcer = new AttributeLimitsEnforcer(); + $attributes = Attributes::create([ + 'long' => \str_repeat('a', 1000), + ]); + + $result = $enforcer->enforce($attributes, 10, null); + + $value = $result->attributes->get('long'); + self::assertIsString($value); + self::assertSame(1000, \strlen($value)); + } + + public function test_preserves_array_with_non_string_values() : void + { + $enforcer = new AttributeLimitsEnforcer(); + $attributes = Attributes::create([ + 'mixed' => [1, 2.5, true, 'truncate-this-string'], + ]); + + $result = $enforcer->enforce($attributes, 10, 10); + + self::assertSame([1, 2.5, true, 'truncate-t'], $result->attributes->get('mixed')); + } + + public function test_truncates_array_string_values() : void + { + $enforcer = new AttributeLimitsEnforcer(); + $attributes = Attributes::create([ + 'tags' => ['short', 'this-is-a-very-long-tag-value'], + ]); + + $result = $enforcer->enforce($attributes, 10, 10); + + self::assertSame(['short', 'this-is-a-'], $result->attributes->get('tags')); + } + + public function test_truncates_string_values_exceeding_length_limit() : void + { + $enforcer = new AttributeLimitsEnforcer(); + $attributes = Attributes::create([ + 'short' => 'abc', + 'long' => 'abcdefghijklmnopqrstuvwxyz', + ]); + + $result = $enforcer->enforce($attributes, 10, 10); + + self::assertSame('abc', $result->attributes->get('short')); + self::assertSame('abcdefghij', $result->attributes->get('long')); + self::assertSame(0, $result->droppedAttributeCount); + } + + public function test_truncates_string_values_using_utf8_safe_substring() : void + { + $enforcer = new AttributeLimitsEnforcer(); + $attributes = Attributes::create([ + 'unicode' => 'Zażółć gęślą jaźń', + ]); + + $result = $enforcer->enforce($attributes, 10, 10); + + self::assertSame('Zażółć gęś', $result->attributes->get('unicode')); + } +} diff --git a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Context/ContextScopeTest.php b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Context/ContextScopeTest.php new file mode 100644 index 0000000000..64732cbd83 --- /dev/null +++ b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Context/ContextScopeTest.php @@ -0,0 +1,65 @@ +attach($context1); + self::assertTrue($context1->traceId->equals($storage->current()->traceId)); + + $scope2 = $storage->attach($context2); + self::assertTrue($context2->traceId->equals($storage->current()->traceId)); + + $scope3 = $storage->attach($context3); + self::assertTrue($context3->traceId->equals($storage->current()->traceId)); + + $scope3->detach(); + self::assertTrue($context2->traceId->equals($storage->current()->traceId)); + + $scope2->detach(); + self::assertTrue($context1->traceId->equals($storage->current()->traceId)); + } + + public function test_detach_is_idempotent() : void + { + $storage = new MemoryContextStorage(); + $originalContext = $storage->current(); + + $newContext = Context::withTraceId(TraceId::generate()); + $scope = $storage->attach($newContext); + + self::assertSame(ContextScope::DETACHED, $scope->detach()); + self::assertSame(ContextScope::DETACHED, $scope->detach()); + self::assertSame(ContextScope::DETACHED, $scope->detach()); + + self::assertTrue($originalContext->traceId->equals($storage->current()->traceId)); + } + + public function test_detach_restores_previous_context() : void + { + $storage = new MemoryContextStorage(); + $originalContext = $storage->current(); + + $newContext = Context::withTraceId(TraceId::generate()); + $scope = $storage->attach($newContext); + + self::assertTrue($newContext->traceId->equals($storage->current()->traceId)); + + $scope->detach(); + + self::assertTrue($originalContext->traceId->equals($storage->current()->traceId)); + } +} diff --git a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Context/MemoryContextStorageTest.php b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Context/MemoryContextStorageTest.php index de4e2100b5..9527cc62d1 100644 --- a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Context/MemoryContextStorageTest.php +++ b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Context/MemoryContextStorageTest.php @@ -4,50 +4,50 @@ namespace Flow\Telemetry\Tests\Unit\Context; -use Flow\Telemetry\Context\{Context, ContextStorage, MemoryContextStorage, TraceId}; +use Flow\Telemetry\Context\{Context, ContextStorage, MemoryContextStorage, Scope, TraceId}; use PHPUnit\Framework\TestCase; final class MemoryContextStorageTest extends TestCase { - public function test_creates_default_context_when_none_provided() : void + public function test_attach_replaces_current_context() : void { $storage = new MemoryContextStorage(); + $originalContext = $storage->current(); - self::assertInstanceOf(Context::class, $storage->current()); + $newContext = Context::withTraceId(TraceId::generate()); + $storage->attach($newContext); + + self::assertFalse($originalContext->traceId->equals($storage->current()->traceId)); + self::assertTrue($newContext->traceId->equals($storage->current()->traceId)); } - public function test_current_returns_stored_context() : void + public function test_attach_returns_scope() : void { - $context = Context::withTraceId(TraceId::generate()); - $storage = new MemoryContextStorage($context); + $storage = new MemoryContextStorage(); + $newContext = Context::withTraceId(TraceId::generate()); - self::assertSame($context->traceId->toHex(), $storage->current()->traceId->toHex()); - } + $scope = $storage->attach($newContext); - public function test_implements_context_storage() : void - { - self::assertInstanceOf(ContextStorage::class, new MemoryContextStorage()); + self::assertInstanceOf(Scope::class, $scope); } - public function test_store_replaces_current_context() : void + public function test_creates_default_context_when_none_provided() : void { $storage = new MemoryContextStorage(); - $originalContext = $storage->current(); - $newContext = Context::withTraceId(TraceId::generate()); - $storage->store($newContext); - - self::assertFalse($originalContext->traceId->equals($storage->current()->traceId)); - self::assertTrue($newContext->traceId->equals($storage->current()->traceId)); + self::assertInstanceOf(Context::class, $storage->current()); } - public function test_store_updates_context_for_all_readers() : void + public function test_current_returns_stored_context() : void { - $storage = new MemoryContextStorage(); - $newContext = Context::withTraceId(TraceId::generate()); + $context = Context::withTraceId(TraceId::generate()); + $storage = new MemoryContextStorage($context); - $storage->store($newContext); + self::assertSame($context->traceId->toHex(), $storage->current()->traceId->toHex()); + } - self::assertSame($newContext->traceId->toHex(), $storage->current()->traceId->toHex()); + public function test_implements_context_storage() : void + { + self::assertInstanceOf(ContextStorage::class, new MemoryContextStorage()); } } diff --git a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/DSL/FunctionsTest.php b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/DSL/FunctionsTest.php index 7e8153abfb..0fd304b619 100644 --- a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/DSL/FunctionsTest.php +++ b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/DSL/FunctionsTest.php @@ -4,14 +4,15 @@ namespace Flow\Telemetry\Tests\Unit\DSL; -use function Flow\Telemetry\DSL\{baggage, context, instrumentation_scope, logger_provider, resource, span_context, span_event, span_id, span_link, trace_id, tracer_provider}; +use function Flow\Telemetry\DSL\{baggage, context, instrumentation_scope, log_record_limits, logger_provider, memory_log_exporter, memory_metric_exporter, memory_span_exporter, meter_provider, metric_limits, resource, span_context, span_event, span_id, span_limits, span_link, trace_id, tracer_provider, void_log_processor, void_metric_processor, void_span_processor}; use Flow\Telemetry\Context\{Baggage, Context, MemoryContextStorage, SpanId, TraceId}; use Flow\Telemetry\{InstrumentationScope, Resource}; -use Flow\Telemetry\Logger\{LoggerProvider, Severity}; -use Flow\Telemetry\Provider\Memory\{MemoryLogProcessor, MemorySpanProcessor}; -use Flow\Telemetry\Provider\Void\{VoidLogExporter, VoidSpanExporter, VoidSpanProcessor}; +use Flow\Telemetry\Logger\{LogRecordLimits, LoggerProvider, Severity}; +use Flow\Telemetry\Meter\{MeterProvider, MetricLimits}; +use Flow\Telemetry\Provider\Memory\{MemoryLogExporter, MemoryLogProcessor, MemoryMetricExporter, MemoryMetricProcessor, MemorySpanExporter, MemorySpanProcessor}; +use Flow\Telemetry\Provider\Void\{VoidLogExporter, VoidLogProcessor, VoidMetricExporter, VoidMetricProcessor, VoidSpanExporter, VoidSpanProcessor}; use Flow\Telemetry\Tests\Mother\ResourceMother; -use Flow\Telemetry\Tracer\{GenericEvent, SpanContext, SpanLink, TracerProvider}; +use Flow\Telemetry\Tracer\{GenericEvent, SpanContext, SpanLimits, SpanLink, TracerProvider}; use PHPUnit\Framework\TestCase; use Psr\Clock\ClockInterface; @@ -94,6 +95,22 @@ public function test_instrumentation_scope_with_version_and_schema() : void self::assertSame('https://schema.url', $scope->schemaUrl); } + public function test_log_record_limits_creates_custom_limits() : void + { + $limits = log_record_limits(attributeCountLimit: 64, attributeValueLengthLimit: 100); + + self::assertSame(64, $limits->attributeCountLimit); + self::assertSame(100, $limits->attributeValueLengthLimit); + } + + public function test_log_record_limits_creates_default_limits() : void + { + $limits = log_record_limits(); + + self::assertInstanceOf(LogRecordLimits::class, $limits); + self::assertSame(128, $limits->attributeCountLimit); + } + public function test_logger_provider_creates_provider() : void { $clock = $this->createMock(ClockInterface::class); @@ -120,6 +137,68 @@ public function test_logger_provider_works_correctly() : void self::assertSame(Severity::INFO, $processor->entries()[0]->record->severity); } + public function test_memory_log_exporter_creates_instance() : void + { + self::assertInstanceOf(MemoryLogExporter::class, memory_log_exporter()); + } + + public function test_memory_metric_exporter_creates_instance() : void + { + self::assertInstanceOf(MemoryMetricExporter::class, memory_metric_exporter()); + } + + public function test_memory_span_exporter_creates_instance() : void + { + self::assertInstanceOf(MemorySpanExporter::class, memory_span_exporter()); + } + + public function test_meter_provider_creates_provider() : void + { + $clock = $this->createMock(ClockInterface::class); + $processor = $this->createMetricProcessor(); + + $provider = meter_provider($processor, $clock); + + self::assertInstanceOf(MeterProvider::class, $provider); + } + + public function test_meter_provider_with_limits() : void + { + $clock = $this->createMock(ClockInterface::class); + $clock->method('now')->willReturn(new \DateTimeImmutable()); + $processor = $this->createMetricProcessor(); + $limits = metric_limits(cardinalityLimit: 5); + + $provider = meter_provider($processor, $clock, limits: $limits); + $meter = $provider->meter($this->testResource, 'test'); + $counter = $meter->createCounter('test.counter'); + + for ($i = 1; $i <= 6; $i++) { + $counter->add(1, ['id' => (string) $i]); + } + + $metrics = $counter->collect(); + + self::assertCount(6, $metrics); + $overflowMetrics = \array_filter($metrics, static fn ($m) => $m->attributes->has(MetricLimits::OVERFLOW_ATTRIBUTE)); + self::assertCount(1, $overflowMetrics); + } + + public function test_metric_limits_creates_custom_limits() : void + { + $limits = metric_limits(cardinalityLimit: 500); + + self::assertSame(500, $limits->cardinalityLimit); + } + + public function test_metric_limits_creates_default_limits() : void + { + $limits = metric_limits(); + + self::assertInstanceOf(MetricLimits::class, $limits); + self::assertSame(2000, $limits->cardinalityLimit); + } + public function test_resource_creates_empty_resource() : void { $res = resource(); @@ -202,6 +281,29 @@ public function test_span_id_generates_new_span_id() : void self::assertSame(16, \strlen($spanId->toHex())); } + public function test_span_limits_creates_custom_limits() : void + { + $limits = span_limits( + attributeCountLimit: 64, + eventCountLimit: 32, + linkCountLimit: 16, + ); + + self::assertSame(64, $limits->attributeCountLimit); + self::assertSame(32, $limits->eventCountLimit); + self::assertSame(16, $limits->linkCountLimit); + } + + public function test_span_limits_creates_default_limits() : void + { + $limits = span_limits(); + + self::assertInstanceOf(SpanLimits::class, $limits); + self::assertSame(128, $limits->attributeCountLimit); + self::assertSame(128, $limits->eventCountLimit); + self::assertSame(128, $limits->linkCountLimit); + } + public function test_span_link_creates_link() : void { $context = span_context(trace_id(), span_id()); @@ -274,11 +376,31 @@ public function test_tracer_provider_with_void_processor() : void self::assertInstanceOf(TracerProvider::class, $provider); } + public function test_void_log_processor_creates_instance() : void + { + self::assertInstanceOf(VoidLogProcessor::class, void_log_processor()); + } + + public function test_void_metric_processor_creates_instance() : void + { + self::assertInstanceOf(VoidMetricProcessor::class, void_metric_processor()); + } + + public function test_void_span_processor_creates_instance() : void + { + self::assertInstanceOf(VoidSpanProcessor::class, void_span_processor()); + } + private function createLogProcessor() : MemoryLogProcessor { return new MemoryLogProcessor(new VoidLogExporter()); } + private function createMetricProcessor() : MemoryMetricProcessor + { + return new MemoryMetricProcessor(new VoidMetricExporter()); + } + private function createSpanProcessor() : MemorySpanProcessor { return new MemorySpanProcessor(new VoidSpanExporter()); diff --git a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Logger/MemoryLoggerProviderTest.php b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Logger/MemoryLoggerProviderTest.php index 3513254edb..2e08698e85 100644 --- a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Logger/MemoryLoggerProviderTest.php +++ b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Logger/MemoryLoggerProviderTest.php @@ -6,7 +6,7 @@ use Flow\Telemetry\{Attributes, Resource}; use Flow\Telemetry\Context\{MemoryContextStorage, SpanId, TraceId}; -use Flow\Telemetry\Logger\{Logger, LoggerProvider, Severity}; +use Flow\Telemetry\Logger\{LogRecordLimits, Logger, LoggerProvider, Severity}; use Flow\Telemetry\Provider\Memory\MemoryLogProcessor; use Flow\Telemetry\Provider\Void\VoidLogExporter; use Flow\Telemetry\Tests\Mother\{ClockMother, ResourceMother}; @@ -32,6 +32,77 @@ public function test_creates_new_logger_each_time() : void self::assertNotSame($logger1, $logger2); } + public function test_limits_attribute_count_drops_excess_attributes() : void + { + $processor = $this->createProcessor(); + $limits = new LogRecordLimits(attributeCountLimit: 2); + $provider = new LoggerProvider($processor, ClockMother::frozen(), new MemoryContextStorage(), $limits); + $logger = $provider->logger($this->resource, 'service', '1.0'); + + $logger->info('message', [ + 'key1' => 'value1', + 'key2' => 'value2', + 'key3' => 'value3', + 'key4' => 'value4', + ]); + + $entry = $processor->entries()[0]; + self::assertCount(2, $entry->record->attributes->normalize()); + self::assertSame(2, $entry->droppedAttributeCount); + self::assertArrayHasKey('key1', $entry->record->attributes->normalize()); + self::assertArrayHasKey('key2', $entry->record->attributes->normalize()); + } + + public function test_limits_attribute_value_length_truncates_strings() : void + { + $processor = $this->createProcessor(); + $limits = new LogRecordLimits(attributeValueLengthLimit: 10); + $provider = new LoggerProvider($processor, ClockMother::frozen(), new MemoryContextStorage(), $limits); + $logger = $provider->logger($this->resource, 'service', '1.0'); + + $logger->info('message', [ + 'short' => 'abc', + 'long' => 'this-is-a-very-long-value', + ]); + + $entry = $processor->entries()[0]; + $attrs = $entry->record->attributes->normalize(); + self::assertSame('abc', $attrs['short']); + self::assertSame('this-is-a-', $attrs['long']); + } + + public function test_limits_dropped_count_in_normalized_output() : void + { + $processor = $this->createProcessor(); + $limits = new LogRecordLimits(attributeCountLimit: 1); + $provider = new LoggerProvider($processor, ClockMother::frozen(), new MemoryContextStorage(), $limits); + $logger = $provider->logger($this->resource, 'service', '1.0'); + + $logger->info('message', ['key1' => 'v1', 'key2' => 'v2', 'key3' => 'v3']); + + $entry = $processor->entries()[0]; + $normalized = $entry->normalize(); + self::assertSame(2, $normalized['droppedAttributeCount']); + } + + public function test_limits_with_default_limits_no_truncation() : void + { + $processor = $this->createProcessor(); + $provider = new LoggerProvider($processor, ClockMother::frozen(), new MemoryContextStorage()); + $logger = $provider->logger($this->resource, 'service', '1.0'); + + $attrs = []; + + for ($i = 0; $i < 100; $i++) { + $attrs["key{$i}"] = 'value'; + } + $logger->info('message', $attrs); + + $entry = $processor->entries()[0]; + self::assertCount(100, $entry->record->attributes->normalize()); + self::assertSame(0, $entry->droppedAttributeCount); + } + public function test_logger_accepts_attributes_object() : void { $processor = $this->createProcessor(); diff --git a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Meter/MemoryMeterProviderTest.php b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Meter/MemoryMeterProviderTest.php index 14380f95e3..0639f3b777 100644 --- a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Meter/MemoryMeterProviderTest.php +++ b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Meter/MemoryMeterProviderTest.php @@ -7,25 +7,17 @@ use Flow\Telemetry\Meter\{Meter, MeterProvider}; use Flow\Telemetry\Provider\Memory\MemoryMetricProcessor; use Flow\Telemetry\Provider\Void\VoidMetricExporter; -use Flow\Telemetry\Resource; use Flow\Telemetry\Tests\Mother\{ClockMother, ResourceMother}; use PHPUnit\Framework\TestCase; final class MemoryMeterProviderTest extends TestCase { - private Resource $resource; - - protected function setUp() : void - { - $this->resource = ResourceMother::default(); - } - public function test_creates_new_meter_each_time() : void { $provider = new MeterProvider($this->createProcessor(), ClockMother::frozen()); - $meter1 = $provider->meter($this->resource, 'test', '1.0.0'); - $meter2 = $provider->meter($this->resource, 'test', '1.0.0'); + $meter1 = $provider->meter(ResourceMother::default(), 'test', '1.0.0'); + $meter2 = $provider->meter(ResourceMother::default(), 'test', '1.0.0'); self::assertNotSame($meter1, $meter2); self::assertSame($meter1->name(), $meter2->name()); @@ -37,14 +29,11 @@ public function test_meter_collects_metrics_on_flush() : void $processor = $this->createProcessor(); $provider = new MeterProvider($processor, ClockMother::frozen()); - $meter = $provider->meter($this->resource, 'test'); + $meter = $provider->meter(ResourceMother::default(), 'test'); $counter = $meter->createCounter('requests.total'); $counter->add(5); - foreach ($meter->collect() as $metric) { - $meter->processor()->process($metric); - } - $processor->flush(); + $meter->flush(); self::assertCount(1, $processor->metrics()); self::assertSame('requests.total', $processor->metrics()[0]->name); @@ -55,7 +44,7 @@ public function test_meter_returns_meter_instance() : void { self::assertInstanceOf( Meter::class, - (new MeterProvider($this->createProcessor(), ClockMother::frozen()))->meter($this->resource, 'test-lib', '1.0.0') + (new MeterProvider($this->createProcessor(), ClockMother::frozen()))->meter(ResourceMother::default(), 'test-lib', '1.0.0') ); } @@ -64,7 +53,7 @@ public function test_metrics_returns_empty_before_flush() : void $processor = $this->createProcessor(); $provider = new MeterProvider($processor, ClockMother::frozen()); - $meter = $provider->meter($this->resource, 'test'); + $meter = $provider->meter(ResourceMother::default(), 'test'); $counter = $meter->createCounter('requests.total'); $counter->add(5); @@ -82,7 +71,7 @@ public function test_uses_default_version_when_not_provided() : void { $provider = new MeterProvider($this->createProcessor(), ClockMother::frozen()); - $meter = $provider->meter($this->resource, 'test'); + $meter = $provider->meter(ResourceMother::default(), 'test'); self::assertSame('unknown', $meter->version()); } diff --git a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/ObjectExtractorTest.php b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/ObjectExtractorTest.php new file mode 100644 index 0000000000..2221744820 --- /dev/null +++ b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/ObjectExtractorTest.php @@ -0,0 +1,60 @@ + 'test.event', 'timestamp' => '2024-01-01T12:00:00+00:00', 'attributes' => ['key' => 'value'], + 'droppedAttributeCount' => 0, ], $event->normalize()); } diff --git a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Tracer/SpanLimitsTest.php b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Tracer/SpanLimitsTest.php index 3832e0cbe4..2b3c2e09db 100644 --- a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Tracer/SpanLimitsTest.php +++ b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Tracer/SpanLimitsTest.php @@ -4,6 +4,7 @@ namespace Flow\Telemetry\Tests\Unit\Tracer; +use function Flow\Telemetry\DSL\span_limits; use Flow\Telemetry\Tracer\SpanLimits; use PHPUnit\Framework\TestCase; @@ -53,7 +54,7 @@ public function test_default_creates_limits_with_default_values() : void public function test_unlimited_creates_limits_with_max_values() : void { - $limits = SpanLimits::unlimited(); + $limits = span_limits()->unlimited(); self::assertSame(PHP_INT_MAX, $limits->attributeCountLimit); self::assertSame(PHP_INT_MAX, $limits->eventCountLimit); diff --git a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Tracer/SpanLinkTest.php b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Tracer/SpanLinkTest.php index 129b11ba53..97bc73f8f6 100644 --- a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Tracer/SpanLinkTest.php +++ b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Tracer/SpanLinkTest.php @@ -124,6 +124,7 @@ public function test_normalize_returns_array() : void self::assertNull($normalized['context']['parentSpanId']); self::assertFalse($normalized['context']['isRemote']); self::assertSame(['type' => 'test'], $normalized['attributes']); + self::assertSame(0, $normalized['droppedAttributeCount']); } public function test_supports_various_attribute_types() : void diff --git a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Tracer/SpanTest.php b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Tracer/SpanTest.php index 67f5cb6e7d..ab9a0f68ac 100644 --- a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Tracer/SpanTest.php +++ b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Tracer/SpanTest.php @@ -7,7 +7,7 @@ use Flow\Telemetry\Context\{SpanId, TraceId}; use Flow\Telemetry\InstrumentationScope; use Flow\Telemetry\Tests\Mother\ResourceMother; -use Flow\Telemetry\Tracer\{GenericEvent, Span, SpanContext, SpanKind, SpanLink, SpanStatus}; +use Flow\Telemetry\Tracer\{GenericEvent, Span, SpanContext, SpanKind, SpanLimits, SpanLink, SpanStatus}; use PHPUnit\Framework\TestCase; final class SpanTest extends TestCase @@ -194,6 +194,169 @@ public function test_from_array_with_minimal_data() : void self::assertEmpty($span->links()); } + public function test_limits_attribute_count_allows_overwriting_existing() : void + { + $limits = new SpanLimits(attributeCountLimit: 2); + $span = $this->createSpanWithLimits($limits); + + $span->setAttribute('key1', 'value1'); + $span->setAttribute('key2', 'value2'); + $span->setAttribute('key1', 'updated'); + + self::assertCount(2, $span->attributes()); + self::assertSame(0, $span->droppedAttributeCount()); + self::assertSame('updated', $span->attributes()['key1']); + } + + public function test_limits_attribute_count_drops_excess_attributes() : void + { + $limits = new SpanLimits(attributeCountLimit: 3); + $span = $this->createSpanWithLimits($limits); + + $span->setAttributes([ + 'key1' => 'value1', + 'key2' => 'value2', + 'key3' => 'value3', + 'key4' => 'value4', + 'key5' => 'value5', + ]); + + self::assertCount(3, $span->attributes()); + self::assertSame(2, $span->droppedAttributeCount()); + self::assertArrayHasKey('key1', $span->attributes()); + self::assertArrayHasKey('key2', $span->attributes()); + self::assertArrayHasKey('key3', $span->attributes()); + self::assertArrayNotHasKey('key4', $span->attributes()); + } + + public function test_limits_attribute_count_drops_single_attribute() : void + { + $limits = new SpanLimits(attributeCountLimit: 2); + $span = $this->createSpanWithLimits($limits); + + $span->setAttribute('key1', 'value1'); + $span->setAttribute('key2', 'value2'); + $span->setAttribute('key3', 'value3'); + + self::assertCount(2, $span->attributes()); + self::assertSame(1, $span->droppedAttributeCount()); + } + + public function test_limits_attribute_value_length_truncates_array_strings() : void + { + $limits = new SpanLimits(attributeValueLengthLimit: 5); + $span = $this->createSpanWithLimits($limits); + + $span->setAttribute('tags', ['short', 'this-is-long']); + + self::assertSame(['short', 'this-'], $span->attributes()['tags']); + } + + public function test_limits_attribute_value_length_truncates_strings() : void + { + $limits = new SpanLimits(attributeValueLengthLimit: 10); + $span = $this->createSpanWithLimits($limits); + + $span->setAttribute('short', 'abc'); + $span->setAttribute('long', 'this-is-a-very-long-string'); + + self::assertSame('abc', $span->attributes()['short']); + self::assertSame('this-is-a-', $span->attributes()['long']); + } + + public function test_limits_dropped_counts_in_normalize() : void + { + $limits = new SpanLimits( + attributeCountLimit: 2, + eventCountLimit: 1, + linkCountLimit: 1, + ); + $span = $this->createSpanWithLimits($limits); + + $span->setAttributes(['k1' => 'v1', 'k2' => 'v2', 'k3' => 'v3']); + $span->recordEvent(GenericEvent::create('e1', new \DateTimeImmutable())); + $span->recordEvent(GenericEvent::create('e2', new \DateTimeImmutable())); + $span->addLink(SpanLink::create(SpanContext::create(TraceId::generate(), SpanId::generate()))); + $span->addLink(SpanLink::create(SpanContext::create(TraceId::generate(), SpanId::generate()))); + + $normalized = $span->normalize(); + + self::assertSame(1, $normalized['droppedAttributeCount']); + self::assertSame(1, $normalized['droppedEventsCount']); + self::assertSame(1, $normalized['droppedLinksCount']); + } + + public function test_limits_event_attributes_are_enforced() : void + { + $limits = new SpanLimits(attributePerEventCountLimit: 2, attributeValueLengthLimit: 10); + $span = $this->createSpanWithLimits($limits); + + $event = GenericEvent::create('test.event', new \DateTimeImmutable(), [ + 'key1' => 'short', + 'key2' => 'this-is-a-very-long-value', + 'key3' => 'dropped', + ]); + $span->recordEvent($event); + + $recordedEvent = $span->events()[0]; + $attrs = $recordedEvent->attributes(); + self::assertCount(2, $attrs); + self::assertSame('short', $attrs['key1']); + self::assertSame('this-is-a-', $attrs['key2']); + self::assertSame(1, $recordedEvent->droppedAttributeCount()); + } + + public function test_limits_event_count_drops_excess_events() : void + { + $limits = new SpanLimits(eventCountLimit: 2); + $span = $this->createSpanWithLimits($limits); + + $span->recordEvent(GenericEvent::create('event1', new \DateTimeImmutable())); + $span->recordEvent(GenericEvent::create('event2', new \DateTimeImmutable())); + $span->recordEvent(GenericEvent::create('event3', new \DateTimeImmutable())); + + self::assertCount(2, $span->events()); + self::assertSame(1, $span->droppedEventsCount()); + self::assertSame('event1', $span->events()[0]->name()); + self::assertSame('event2', $span->events()[1]->name()); + } + + public function test_limits_link_attributes_are_enforced() : void + { + $limits = new SpanLimits(attributePerLinkCountLimit: 2, attributeValueLengthLimit: 10); + $span = $this->createSpanWithLimits($limits); + + $link = SpanLink::create( + SpanContext::create(TraceId::generate(), SpanId::generate()), + [ + 'key1' => 'short', + 'key2' => 'this-is-a-very-long-value', + 'key3' => 'dropped', + ], + ); + $span->addLink($link); + + $recordedLink = $span->links()[0]; + $attrs = $recordedLink->attributes->normalize(); + self::assertCount(2, $attrs); + self::assertSame('short', $attrs['key1']); + self::assertSame('this-is-a-', $attrs['key2']); + self::assertSame(1, $recordedLink->droppedAttributeCount); + } + + public function test_limits_link_count_drops_excess_links() : void + { + $limits = new SpanLimits(linkCountLimit: 2); + $span = $this->createSpanWithLimits($limits); + + $span->addLink(SpanLink::create(SpanContext::create(TraceId::generate(), SpanId::generate()))); + $span->addLink(SpanLink::create(SpanContext::create(TraceId::generate(), SpanId::generate()))); + $span->addLink(SpanLink::create(SpanContext::create(TraceId::generate(), SpanId::generate()))); + + self::assertCount(2, $span->links()); + self::assertSame(1, $span->droppedLinksCount()); + } + public function test_links_returns_empty_array_initially() : void { $span = $this->createSpan(); @@ -443,4 +606,18 @@ private function createSpan(string $name = 'test-span') : Span new InstrumentationScope('test', '1.0.0'), ); } + + private function createSpanWithLimits(SpanLimits $limits, string $name = 'test-span') : Span + { + return new Span( + $name, + SpanContext::create(TraceId::generate(), SpanId::generate()), + SpanKind::INTERNAL, + new \DateTimeImmutable(), + ResourceMother::default(), + new InstrumentationScope('test', '1.0.0'), + true, + $limits, + ); + } } diff --git a/tools/phpunit/extension/telemetry/README.md b/tools/phpunit/extension/telemetry/README.md new file mode 100644 index 0000000000..6e65f975e2 --- /dev/null +++ b/tools/phpunit/extension/telemetry/README.md @@ -0,0 +1,98 @@ +# PHPUnit Telemetry Extension + +A PHPUnit extension that exports test telemetry to an OpenTelemetry collector using Flow PHP's telemetry library. + +## Installation + +This extension is part of the Flow PHP monorepo and is automatically available when using the main `flow-php/flow` +package. + +## Configuration + +Add the extension to your `phpunit.xml`: + +```xml + + + + + + + + + + +``` + +### Configuration Parameters + +| Parameter | Type | Default | Description | +|------------------------|--------|-------------------------|----------------------------------------------------| +| `service_name` | string | `phpunit` | Service name for telemetry resource | +| `otel_collector_url` | string | `http://localhost:4318` | OTEL collector HTTP endpoint | +| `emit_traces` | bool | `true` | Enable span export | +| `emit_metrics` | bool | `true` | Enable metric export | +| `emit_test_spans` | bool | `true` | Emit spans for individual test methods | +| `emit_test_case_spans` | bool | `true` | Emit spans for test cases (classes) | + +### Reducing Telemetry Volume + +For large test suites, you may want to reduce telemetry volume by disabling granular spans: + +```xml + + + + + + + + +``` + +**Span hierarchy and what each option controls:** + +``` +Test Suite Run (root span) <- Always emitted + └── etl-unit (named testsuite) <- Always emitted (from phpunit.xml testsuites) + └── DateIntervalFunctionsTest <- Controlled by emit_test_case_spans + └── test_example <- Controlled by emit_test_spans +``` + +## Telemetry Data + +### Spans + +The extension creates a hierarchical span structure: + +``` +Test Suite Run (root span) + └── Test Suite / Class (span) + └── Test Method (span) +``` + +#### Test Method Span Attributes + +| Attribute | Description | +|---------------------|--------------------------------------------------| +| `test.class` | Fully qualified class name | +| `test.method` | Method name | +| `test.status` | passed / failed / errored / skipped / incomplete | +| `test.duration_ms` | Execution time in milliseconds | +| `test.suite` | Suite name | +| `exception.message` | Error message (if failed/errored) | + +### Metrics + +| Metric | Type | Labels | +|----------------------------|----------------|---------------| +| `phpunit.test.duration` | histogram (ms) | `test.status` | +| `phpunit.test.count` | counter | `test.status` | +| `phpunit.suite.duration` | histogram (ms) | `test.suite` | +| `phpunit.suite.test_count` | counter | `test.suite` | + +## Error Handling + +The extension is designed to never break your tests. All telemetry operations are wrapped in try-catch blocks with +silent failure. If telemetry fails for any reason (network issues, configuration errors, etc.), your tests will continue +to run normally. diff --git a/tools/phpunit/extension/telemetry/composer.json b/tools/phpunit/extension/telemetry/composer.json new file mode 100644 index 0000000000..e859737f2f --- /dev/null +++ b/tools/phpunit/extension/telemetry/composer.json @@ -0,0 +1,29 @@ +{ + "name": "flow-php/phpunit-telemetry", + "type": "library", + "description": "PHPUnit telemetry extension for Flow PHP - exports test telemetry to OTEL collector", + "keywords": ["phpunit", "telemetry", "opentelemetry", "otel", "testing"], + "require": { + "php": "~8.3.0 || ~8.4.0 || ~8.5.0", + "flow-php/telemetry": "self.version", + "flow-php/telemetry-otlp-bridge": "self.version", + "phpunit/phpunit": "^11" + }, + "config": { + "optimize-autoloader": true, + "sort-packages": true + }, + "license": "MIT", + "autoload": { + "psr-4": { + "Flow\\Tool\\PHPUnit\\Telemetry\\": "src/Flow/Tool/PHPUnit/Telemetry" + } + }, + "autoload-dev": { + "psr-4": { + "Flow\\Tool\\PHPUnit\\Telemetry\\Tests\\": "tests/Flow/Tool/PHPUnit/Telemetry/Tests" + } + }, + "minimum-stability": "dev", + "prefer-stable": true +} diff --git a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Configuration.php b/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Configuration.php new file mode 100644 index 0000000000..c5f8535a5f --- /dev/null +++ b/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Configuration.php @@ -0,0 +1,40 @@ +has('service_name') + ? $parameters->get('service_name') + : 'phpunit', + otelCollectorUrl: $parameters->has('otel_collector_url') + ? $parameters->get('otel_collector_url') + : 'http://localhost:4318', + emitTraces: !$parameters->has('emit_traces') + || $parameters->get('emit_traces') === 'true', + emitMetrics: !$parameters->has('emit_metrics') + || $parameters->get('emit_metrics') === 'true', + emitTestSpans: !$parameters->has('emit_test_spans') + || $parameters->get('emit_test_spans') === 'true', + emitTestCaseSpans: !$parameters->has('emit_test_case_spans') + || $parameters->get('emit_test_case_spans') === 'true', + ); + } +} diff --git a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/SpanStack.php b/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/SpanStack.php new file mode 100644 index 0000000000..39d1f74e29 --- /dev/null +++ b/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/SpanStack.php @@ -0,0 +1,78 @@ + + */ + private \SplStack $stack; + + /** + * @var array + */ + private array $suiteSpans = []; + + public function __construct() + { + /** @var \SplStack $stack */ + $stack = new \SplStack(); + $this->stack = $stack; + } + + public function clear() : void + { + /** @var \SplStack $stack */ + $stack = new \SplStack(); + $this->stack = $stack; + $this->suiteSpans = []; + } + + public function current() : ?Span + { + if ($this->stack->isEmpty()) { + return null; + } + + return $this->stack->top(); + } + + public function getSuiteSpan(string $suiteName) : ?Span + { + return $this->suiteSpans[$suiteName] ?? null; + } + + public function isEmpty() : bool + { + return $this->stack->isEmpty(); + } + + public function pop() : ?Span + { + if ($this->stack->isEmpty()) { + return null; + } + + return $this->stack->pop(); + } + + public function push(Span $span) : void + { + $this->stack->push($span); + } + + public function removeSuiteSpan(string $suiteName) : void + { + unset($this->suiteSpans[$suiteName]); + } + + public function setSuiteSpan(string $suiteName, Span $span) : void + { + $this->suiteSpans[$suiteName] = $span; + } +} diff --git a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestErroredSubscriber.php b/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestErroredSubscriber.php new file mode 100644 index 0000000000..aa6594111e --- /dev/null +++ b/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestErroredSubscriber.php @@ -0,0 +1,21 @@ +statusRegistry->setStatus($event->test()->id(), 'errored', $event->throwable()->message()); + } +} diff --git a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestFailedSubscriber.php b/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestFailedSubscriber.php new file mode 100644 index 0000000000..5d229f8298 --- /dev/null +++ b/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestFailedSubscriber.php @@ -0,0 +1,21 @@ +statusRegistry->setStatus($event->test()->id(), 'failed', $event->throwable()->message()); + } +} diff --git a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestFinishedSubscriber.php b/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestFinishedSubscriber.php new file mode 100644 index 0000000000..798ee3ffc9 --- /dev/null +++ b/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestFinishedSubscriber.php @@ -0,0 +1,85 @@ +test()->id(); + $status = $this->statusRegistry->getStatus($testId); + + if (!$this->config->emitTestSpans) { + if ($this->config->emitMetrics) { + $meter = $this->telemetry->meter('phpunit', PackageVersion::get('phpunit/phpunit')); + + $meter->createCounter('phpunit.test.count') + ->add(1, ['test.status' => $status]); + } + + $this->statusRegistry->clear($testId); + + return; + } + + $span = $this->spanStack->pop(); + + if ($span === null) { + return; + } + + $errorMessage = $this->statusRegistry->getMessage($testId); + $tracer = $this->telemetry->tracer('phpunit', PackageVersion::get('phpunit/phpunit')); + + $span->setAttribute('test.status', $status); + $span->end(); + + $duration = $span->duration(); + + if ($duration !== null) { + $span->setAttribute('test.duration_ms', $duration); + } + + if ($errorMessage !== null) { + $span->setAttribute('exception.message', $errorMessage); + } + + if ($status === 'passed') { + $span->setStatus(SpanStatus::ok()); + } else { + $span->setStatus(SpanStatus::error($errorMessage ?? $status)); + } + + if ($this->config->emitMetrics && $duration !== null) { + $meter = $this->telemetry->meter('phpunit', PackageVersion::get('phpunit/phpunit')); + + $meter->createHistogram('phpunit.test.duration', 'ms') + ->record($duration, ['test.status' => $status]); + + $meter->createCounter('phpunit.test.count') + ->add(1, ['test.status' => $status]); + } + + $tracer->complete($span); + $this->statusRegistry->clear($testId); + } catch (\Throwable) { + // Silent failure - telemetry must never break tests + } + } +} diff --git a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestMarkedIncompleteSubscriber.php b/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestMarkedIncompleteSubscriber.php new file mode 100644 index 0000000000..6783bfcf74 --- /dev/null +++ b/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestMarkedIncompleteSubscriber.php @@ -0,0 +1,21 @@ +statusRegistry->setStatus($event->test()->id(), 'incomplete', $event->throwable()->message()); + } +} diff --git a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestPassedSubscriber.php b/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestPassedSubscriber.php new file mode 100644 index 0000000000..02003c046f --- /dev/null +++ b/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestPassedSubscriber.php @@ -0,0 +1,21 @@ +statusRegistry->setStatus($event->test()->id(), 'passed'); + } +} diff --git a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestPreparationStartedSubscriber.php b/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestPreparationStartedSubscriber.php new file mode 100644 index 0000000000..14091e8bfc --- /dev/null +++ b/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestPreparationStartedSubscriber.php @@ -0,0 +1,54 @@ +config->emitTestSpans) { + return; + } + + $test = $event->test(); + $tracer = $this->telemetry->tracer('phpunit', PackageVersion::get('phpunit/phpunit')); + + $className = ''; + $methodName = ''; + + if ($test->isTestMethod()) { + $testMethod = $test; + $className = $testMethod->className(); + $methodName = $testMethod->methodName(); + } + + $span = $tracer->span( + $test->name(), + attributes: [ + 'test.id' => $test->id(), + 'test.name' => $test->name(), + 'test.class' => $className, + 'test.method' => $methodName, + ], + ); + + $this->spanStack->push($span); + } catch (\Throwable) { + // Silent failure - telemetry must never break tests + } + } +} diff --git a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestSkippedSubscriber.php b/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestSkippedSubscriber.php new file mode 100644 index 0000000000..5c69e8e74d --- /dev/null +++ b/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestSkippedSubscriber.php @@ -0,0 +1,21 @@ +statusRegistry->setStatus($event->test()->id(), 'skipped', $event->message()); + } +} diff --git a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestSuiteFinishedSubscriber.php b/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestSuiteFinishedSubscriber.php new file mode 100644 index 0000000000..65b859ec20 --- /dev/null +++ b/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestSuiteFinishedSubscriber.php @@ -0,0 +1,73 @@ +testSuite(); + $suiteName = $suite->name(); + + $isRoot = $suiteName === '' + || $suiteName === 'PHPUnit Test Suite' + || $suiteName === 'CLI Arguments' + || \str_ends_with((string) $suiteName, '.xml') + || \str_ends_with((string) $suiteName, '.xml.dist'); + + $isTestCase = \str_contains((string) $suiteName, '\\') || \str_contains((string) $suiteName, '::'); + + if (!$isRoot && $isTestCase && !$this->config->emitTestCaseSpans) { + return; + } + + $span = $this->spanStack->getSuiteSpan($suiteName); + + if ($span !== null) { + $phpunitVersion = PackageVersion::get('phpunit/phpunit'); + $tracer = $this->telemetry->tracer('phpunit', $phpunitVersion); + + $span->end(); + $duration = $span->duration(); + + $span->setStatus(SpanStatus::ok()); + + if ($this->config->emitMetrics && $duration !== null) { + $meter = $this->telemetry->meter('phpunit', $phpunitVersion); + + $meter->createHistogram('phpunit.suite.duration', 'ms') + ->record($duration, ['test.suite' => $suiteName]); + + $meter->createCounter('phpunit.suite.test_count') + ->add($suite->count(), ['test.suite' => $suiteName]); + } + + $tracer->complete($span); + + $this->spanStack->pop(); + $this->spanStack->removeSuiteSpan($suiteName); + } + + if ($isRoot) { + $this->telemetry->shutdown(); + } + } catch (\Throwable) { + // Silent failure - telemetry must never break tests + } + } +} diff --git a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestSuiteStartedSubscriber.php b/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestSuiteStartedSubscriber.php new file mode 100644 index 0000000000..d2c4fe867e --- /dev/null +++ b/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestSuiteStartedSubscriber.php @@ -0,0 +1,55 @@ +testSuite(); + $suiteName = $suite->name(); + + $isRoot = $suiteName === '' + || $suiteName === 'PHPUnit Test Suite' + || $suiteName === 'CLI Arguments' + || \str_ends_with((string) $suiteName, '.xml') + || \str_ends_with((string) $suiteName, '.xml.dist'); + + $isTestCase = \str_contains((string) $suiteName, '\\') || \str_contains((string) $suiteName, '::'); + + if (!$isRoot && $isTestCase && !$this->config->emitTestCaseSpans) { + return; + } + + $tracer = $this->telemetry->tracer('phpunit', PackageVersion::get('phpunit/phpunit')); + + $span = $tracer->span( + $isRoot ? 'Test Suite Run' : $suite->name(), + attributes: [ + 'test.suite' => $suite->name(), + 'test.suite.test_count' => $suite->count(), + 'test.suite.is_root' => $isRoot, + ], + ); + + $this->spanStack->setSuiteSpan($suite->name(), $span); + $this->spanStack->push($span); + } catch (\Throwable) { + // Silent failure - telemetry must never break tests + } + } +} diff --git a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/TelemetryExtension.php b/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/TelemetryExtension.php new file mode 100644 index 0000000000..3aff51f795 --- /dev/null +++ b/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/TelemetryExtension.php @@ -0,0 +1,39 @@ +registerSubscribers( + new TestSuiteStartedSubscriber($telemetry, $spanStack, $config), + new TestSuiteFinishedSubscriber($telemetry, $spanStack, $config), + new TestPreparationStartedSubscriber($telemetry, $spanStack, $config), + new TestPassedSubscriber($statusRegistry), + new TestFailedSubscriber($statusRegistry), + new TestErroredSubscriber($statusRegistry), + new TestSkippedSubscriber($statusRegistry), + new TestMarkedIncompleteSubscriber($statusRegistry), + new TestFinishedSubscriber($telemetry, $spanStack, $config, $statusRegistry), + ); + } catch (\Throwable) { + // Silent failure - telemetry must never break tests + } + } +} diff --git a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/TelemetryFactory.php b/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/TelemetryFactory.php new file mode 100644 index 0000000000..c217ef7237 --- /dev/null +++ b/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/TelemetryFactory.php @@ -0,0 +1,50 @@ +detect()->merge( + resource([ + 'service.name' => $config->serviceName, + 'telemetry.sdk.name' => 'flow-php-phpunit-telemetry', + 'telemetry.sdk.language' => 'php', + ]) + ); + + $clock = new SystemClock(); + $contextStorage = memory_context_storage(); + + $transport = otlp_curl_transport( + endpoint: $config->otelCollectorUrl, + serializer: otlp_json_serializer(), + ); + + $spanProcessor = $config->emitTraces + ? pass_through_span_processor(otlp_span_exporter($transport)) + : pass_through_span_processor(void_span_exporter()); + + $metricProcessor = $config->emitMetrics + ? pass_through_metric_processor(otlp_metric_exporter($transport)) + : pass_through_metric_processor(void_metric_exporter()); + + $logProcessor = pass_through_log_processor(void_log_exporter()); + + return telemetry( + $telemetryResource, + tracer_provider($spanProcessor, $clock, $contextStorage), + meter_provider($metricProcessor, $clock), + logger_provider($logProcessor, $clock, $contextStorage), + ); + } +} diff --git a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/TestStatusRegistry.php b/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/TestStatusRegistry.php new file mode 100644 index 0000000000..13ef0cbe21 --- /dev/null +++ b/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/TestStatusRegistry.php @@ -0,0 +1,33 @@ + + */ + private array $statuses = []; + + public function clear(string $testId) : void + { + unset($this->statuses[$testId]); + } + + public function getMessage(string $testId) : ?string + { + return $this->statuses[$testId]['message'] ?? null; + } + + public function getStatus(string $testId) : string + { + return $this->statuses[$testId]['status'] ?? 'passed'; + } + + public function setStatus(string $testId, string $status, ?string $message = null) : void + { + $this->statuses[$testId] = ['status' => $status, 'message' => $message]; + } +} diff --git a/tools/phpunit/extension/telemetry/tests/Flow/Tool/PHPUnit/Telemetry/Tests/Mother/ConfigurationMother.php b/tools/phpunit/extension/telemetry/tests/Flow/Tool/PHPUnit/Telemetry/Tests/Mother/ConfigurationMother.php new file mode 100644 index 0000000000..e0d9c9247f --- /dev/null +++ b/tools/phpunit/extension/telemetry/tests/Flow/Tool/PHPUnit/Telemetry/Tests/Mother/ConfigurationMother.php @@ -0,0 +1,94 @@ + 'http://otel-collector:4318']); + + $config = Configuration::fromParameters($parameters); + + self::assertSame('http://otel-collector:4318', $config->otelCollectorUrl); + } + + public function test_creates_configuration_with_custom_service_name() : void + { + $parameters = ParameterCollection::fromArray(['service_name' => 'my-test-suite']); + + $config = Configuration::fromParameters($parameters); + + self::assertSame('my-test-suite', $config->serviceName); + } + + public function test_creates_configuration_with_default_values() : void + { + $parameters = ParameterCollection::fromArray([]); + + $config = Configuration::fromParameters($parameters); + + self::assertSame('phpunit', $config->serviceName); + self::assertSame('http://localhost:4318', $config->otelCollectorUrl); + self::assertTrue($config->emitTraces); + self::assertTrue($config->emitMetrics); + self::assertTrue($config->emitTestSpans); + self::assertTrue($config->emitTestCaseSpans); + } + + public function test_creates_configuration_with_metrics_disabled() : void + { + $parameters = ParameterCollection::fromArray(['emit_metrics' => 'false']); + + $config = Configuration::fromParameters($parameters); + + self::assertFalse($config->emitMetrics); + } + + public function test_creates_configuration_with_test_case_spans_disabled() : void + { + $parameters = ParameterCollection::fromArray(['emit_test_case_spans' => 'false']); + + $config = Configuration::fromParameters($parameters); + + self::assertFalse($config->emitTestCaseSpans); + } + + public function test_creates_configuration_with_test_spans_disabled() : void + { + $parameters = ParameterCollection::fromArray(['emit_test_spans' => 'false']); + + $config = Configuration::fromParameters($parameters); + + self::assertFalse($config->emitTestSpans); + } + + public function test_creates_configuration_with_traces_disabled() : void + { + $parameters = ParameterCollection::fromArray(['emit_traces' => 'false']); + + $config = Configuration::fromParameters($parameters); + + self::assertFalse($config->emitTraces); + } + + public function test_mother_creates_configuration_with_custom_service_name() : void + { + $config = ConfigurationMother::withCustomServiceName('custom-service'); + + self::assertSame('custom-service', $config->serviceName); + } + + public function test_mother_creates_configuration_with_disabled_metrics() : void + { + $config = ConfigurationMother::withDisabledMetrics(); + + self::assertTrue($config->emitTraces); + self::assertFalse($config->emitMetrics); + } + + public function test_mother_creates_configuration_with_disabled_test_case_spans() : void + { + $config = ConfigurationMother::withDisabledTestCaseSpans(); + + self::assertTrue($config->emitTraces); + self::assertTrue($config->emitMetrics); + self::assertTrue($config->emitTestSpans); + self::assertFalse($config->emitTestCaseSpans); + } + + public function test_mother_creates_configuration_with_disabled_test_spans() : void + { + $config = ConfigurationMother::withDisabledTestSpans(); + + self::assertTrue($config->emitTraces); + self::assertTrue($config->emitMetrics); + self::assertFalse($config->emitTestSpans); + } + + public function test_mother_creates_configuration_with_disabled_traces() : void + { + $config = ConfigurationMother::withDisabledTraces(); + + self::assertFalse($config->emitTraces); + self::assertTrue($config->emitMetrics); + } + + public function test_mother_creates_default_configuration() : void + { + $config = ConfigurationMother::default(); + + self::assertSame('phpunit', $config->serviceName); + self::assertSame('http://localhost:4318', $config->otelCollectorUrl); + self::assertTrue($config->emitTraces); + self::assertTrue($config->emitMetrics); + self::assertTrue($config->emitTestSpans); + self::assertTrue($config->emitTestCaseSpans); + } +} diff --git a/tools/phpunit/extension/telemetry/tests/Flow/Tool/PHPUnit/Telemetry/Tests/Unit/SpanStackTest.php b/tools/phpunit/extension/telemetry/tests/Flow/Tool/PHPUnit/Telemetry/Tests/Unit/SpanStackTest.php new file mode 100644 index 0000000000..cbac817761 --- /dev/null +++ b/tools/phpunit/extension/telemetry/tests/Flow/Tool/PHPUnit/Telemetry/Tests/Unit/SpanStackTest.php @@ -0,0 +1,116 @@ +createSpan('span-1'); + $span2 = $this->createSpan('span-2'); + $suiteSpan = $this->createSpan('suite-span'); + + $stack->push($span1); + $stack->push($span2); + $stack->setSuiteSpan('TestSuite', $suiteSpan); + + $stack->clear(); + + self::assertTrue($stack->isEmpty()); + self::assertNull($stack->getSuiteSpan('TestSuite')); + } + + public function test_current_returns_top_without_removing() : void + { + $stack = new SpanStack(); + $span = $this->createSpan('test-span'); + + $stack->push($span); + + self::assertSame($span, $stack->current()); + self::assertSame($span, $stack->current()); + self::assertFalse($stack->isEmpty()); + } + + public function test_lifo_order() : void + { + $stack = new SpanStack(); + $span1 = $this->createSpan('span-1'); + $span2 = $this->createSpan('span-2'); + $span3 = $this->createSpan('span-3'); + + $stack->push($span1); + $stack->push($span2); + $stack->push($span3); + + self::assertSame($span3, $stack->pop()); + self::assertSame($span2, $stack->pop()); + self::assertSame($span1, $stack->pop()); + self::assertTrue($stack->isEmpty()); + } + + public function test_push_and_pop() : void + { + $stack = new SpanStack(); + $span = $this->createSpan('test-span'); + + $stack->push($span); + + self::assertFalse($stack->isEmpty()); + self::assertSame($span, $stack->current()); + self::assertSame($span, $stack->pop()); + self::assertTrue($stack->isEmpty()); + } + + public function test_remove_suite_span() : void + { + $stack = new SpanStack(); + $span = $this->createSpan('suite-span'); + + $stack->setSuiteSpan('TestSuite', $span); + $stack->removeSuiteSpan('TestSuite'); + + self::assertNull($stack->getSuiteSpan('TestSuite')); + } + + public function test_set_and_get_suite_span() : void + { + $stack = new SpanStack(); + $span = $this->createSpan('suite-span'); + + $stack->setSuiteSpan('TestSuite', $span); + + self::assertSame($span, $stack->getSuiteSpan('TestSuite')); + self::assertNull($stack->getSuiteSpan('OtherSuite')); + } + + public function test_starts_empty() : void + { + $stack = new SpanStack(); + + self::assertTrue($stack->isEmpty()); + self::assertNull($stack->current()); + self::assertNull($stack->pop()); + } + + private function createSpan(string $name) : Span + { + return new Span( + $name, + SpanContext::create(trace_id(), span_id()), + SpanKind::INTERNAL, + new \DateTimeImmutable(), + Resource::create([]), + new InstrumentationScope('test', '1.0.0'), + ); + } +} diff --git a/tools/phpunit/extension/telemetry/tests/Flow/Tool/PHPUnit/Telemetry/Tests/Unit/Subscriber/TestFinishedSubscriberTest.php b/tools/phpunit/extension/telemetry/tests/Flow/Tool/PHPUnit/Telemetry/Tests/Unit/Subscriber/TestFinishedSubscriberTest.php new file mode 100644 index 0000000000..c22d55787a --- /dev/null +++ b/tools/phpunit/extension/telemetry/tests/Flow/Tool/PHPUnit/Telemetry/Tests/Unit/Subscriber/TestFinishedSubscriberTest.php @@ -0,0 +1,75 @@ +setStatus($event->test()->id(), 'failed', 'some error'); + + $subscriber = new TestFinishedSubscriber($telemetry, $spanStack, $config, $statusRegistry); + $subscriber->notify($event); + + self::assertNull($statusRegistry->getMessage($event->test()->id())); + } + + public function test_does_not_pop_span_when_emit_test_spans_is_disabled() : void + { + $spanProcessor = new MemorySpanProcessor(new VoidSpanExporter()); + $telemetry = TelemetryMother::withSpanProcessor($spanProcessor); + $spanStack = new SpanStack(); + $config = ConfigurationMother::withDisabledTestSpans(); + $statusRegistry = new TestStatusRegistry(); + + $suiteSpan = SpanMother::create('suite-span'); + $spanStack->push($suiteSpan); + + $event = TestEventMother::finished(); + $statusRegistry->setStatus($event->test()->id(), 'passed'); + + $subscriber = new TestFinishedSubscriber($telemetry, $spanStack, $config, $statusRegistry); + $subscriber->notify($event); + + self::assertFalse($spanStack->isEmpty()); + self::assertSame($suiteSpan, $spanStack->current()); + } + + public function test_pops_span_when_emit_test_spans_is_enabled() : void + { + $spanProcessor = new MemorySpanProcessor(new VoidSpanExporter()); + $telemetry = TelemetryMother::withSpanProcessor($spanProcessor); + $spanStack = new SpanStack(); + $config = ConfigurationMother::default(); + $statusRegistry = new TestStatusRegistry(); + + $testSpan = SpanMother::create('test-span'); + $spanStack->push($testSpan); + + $event = TestEventMother::finished(); + $statusRegistry->setStatus($event->test()->id(), 'passed'); + + $subscriber = new TestFinishedSubscriber($telemetry, $spanStack, $config, $statusRegistry); + $subscriber->notify($event); + + self::assertTrue($spanStack->isEmpty()); + self::assertCount(1, $spanProcessor->endedSpans()); + } +} diff --git a/tools/phpunit/extension/telemetry/tests/Flow/Tool/PHPUnit/Telemetry/Tests/Unit/Subscriber/TestPreparationStartedSubscriberTest.php b/tools/phpunit/extension/telemetry/tests/Flow/Tool/PHPUnit/Telemetry/Tests/Unit/Subscriber/TestPreparationStartedSubscriberTest.php new file mode 100644 index 0000000000..1787124374 --- /dev/null +++ b/tools/phpunit/extension/telemetry/tests/Flow/Tool/PHPUnit/Telemetry/Tests/Unit/Subscriber/TestPreparationStartedSubscriberTest.php @@ -0,0 +1,43 @@ +notify(TestEventMother::preparationStarted()); + + self::assertFalse($spanStack->isEmpty()); + self::assertCount(1, $spanProcessor->startedSpans()); + } + + public function test_does_not_create_span_when_emit_test_spans_is_disabled() : void + { + $spanProcessor = new MemorySpanProcessor(new VoidSpanExporter()); + $telemetry = TelemetryMother::withSpanProcessor($spanProcessor); + $spanStack = new SpanStack(); + $config = ConfigurationMother::withDisabledTestSpans(); + + $subscriber = new TestPreparationStartedSubscriber($telemetry, $spanStack, $config); + $subscriber->notify(TestEventMother::preparationStarted()); + + self::assertTrue($spanStack->isEmpty()); + self::assertCount(0, $spanProcessor->startedSpans()); + } +} diff --git a/web/landing/assets/codemirror/completions/dataframe.js b/web/landing/assets/codemirror/completions/dataframe.js index 072bd51bd8..2cb5686d4c 100644 --- a/web/landing/assets/codemirror/completions/dataframe.js +++ b/web/landing/assets/codemirror/completions/dataframe.js @@ -14,7 +14,7 @@ const dataframeReturningMethods = {"flow":["extract","from","process","read"],"d // DataFrame methods const dataframeMethods = [ - { + { label: "aggregate", type: "method", detail: "Flow\\\\ETL\\\\DataFrame", @@ -907,7 +907,7 @@ const dataframeMethods = [ schema() : Schema
- @return Schema + @trigger
@return Schema
` return div @@ -1094,7 +1094,7 @@ const dataframeMethods = [ }, apply: snippet("write(" + "$" + "{" + "1:loader" + "}" + ")"), boost: 10 - } ] + } ] /** * DataFrame method completion source for CodeMirror diff --git a/web/landing/assets/codemirror/completions/dsl.js b/web/landing/assets/codemirror/completions/dsl.js index 43d4807ddb..43f906df1d 100644 --- a/web/landing/assets/codemirror/completions/dsl.js +++ b/web/landing/assets/codemirror/completions/dsl.js @@ -1,7 +1,7 @@ /** * CodeMirror Completer for Flow PHP DSL Functions * - * Total functions: 684 + * Total functions: 703 * * This completer provides autocompletion for all Flow PHP DSL functions: * - Extractors (flow-extractors) @@ -17,7 +17,7 @@ import { CompletionContext, snippet } from "@codemirror/autocomplete" // All DSL functions const dslFunctions = [ - { + { label: "add_row_index", type: "function", detail: "flow\u002Ddsl\u002Dtransformers", @@ -32,7 +32,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\add_row_index(" + "$" + "{" + "1:column" + "}" + ", " + "$" + "{" + "2:startFrom" + "}" + ")"), boost: 10 - }, { + }, { label: "agg", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -50,7 +50,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\agg(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:args" + "}" + ", " + "$" + "{" + "3:distinct" + "}" + ")"), boost: 10 - }, { + }, { label: "agg_avg", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -68,7 +68,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\agg_avg(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:distinct" + "}" + ")"), boost: 10 - }, { + }, { label: "agg_count", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -86,7 +86,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\agg_count(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:distinct" + "}" + ")"), boost: 10 - }, { + }, { label: "agg_max", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -104,7 +104,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\agg_max(" + "$" + "{" + "1:expr" + "}" + ")"), boost: 10 - }, { + }, { label: "agg_min", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -122,7 +122,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\agg_min(" + "$" + "{" + "1:expr" + "}" + ")"), boost: 10 - }, { + }, { label: "agg_sum", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -140,7 +140,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\agg_sum(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:distinct" + "}" + ")"), boost: 10 - }, { + }, { label: "all", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -155,7 +155,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\all(" + "$" + "{" + "1:functions" + "}" + ")"), boost: 10 - }, { + }, { label: "all_sub_select", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -173,7 +173,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\all_sub_select(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:operator" + "}" + ", " + "$" + "{" + "3:subquery" + "}" + ")"), boost: 10 - }, { + }, { label: "alter", type: "function", detail: "flow\u002Ddsl\u002Dschema", @@ -191,7 +191,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\alter()"), boost: 10 - }, { + }, { label: "always_off_exemplar_filter", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -209,7 +209,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\always_off_exemplar_filter()"), boost: 10 - }, { + }, { label: "always_on_exemplar_filter", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -227,7 +227,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\always_on_exemplar_filter()"), boost: 10 - }, { + }, { label: "analyze", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -242,7 +242,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\analyze()"), boost: 10 - }, { + }, { label: "analyze", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -260,7 +260,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\analyze()"), boost: 10 - }, { + }, { label: "any", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -275,7 +275,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\any(" + "$" + "{" + "1:values" + "}" + ")"), boost: 10 - }, { + }, { label: "any_sub_select", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -293,7 +293,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\any_sub_select(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:operator" + "}" + ", " + "$" + "{" + "3:subquery" + "}" + ")"), boost: 10 - }, { + }, { label: "append", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -311,7 +311,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\append()"), boost: 10 - }, { + }, { label: "array_carrier", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -329,7 +329,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\array_carrier(" + "$" + "{" + "1:data" + "}" + ")"), boost: 10 - }, { + }, { label: "array_contained_by", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -347,7 +347,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\array_contained_by(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:right" + "}" + ")"), boost: 10 - }, { + }, { label: "array_contains", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -365,7 +365,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\array_contains(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:right" + "}" + ")"), boost: 10 - }, { + }, { label: "array_exists", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -383,7 +383,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\array_exists(" + "$" + "{" + "1:ref" + "}" + ", " + "$" + "{" + "2:path" + "}" + ")"), boost: 10 - }, { + }, { label: "array_expand", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -401,7 +401,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\array_expand(" + "$" + "{" + "1:function" + "}" + ", " + "$" + "{" + "2:expand" + "}" + ")"), boost: 10 - }, { + }, { label: "array_expr", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -419,7 +419,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\array_expr(" + "$" + "{" + "1:elements" + "}" + ")"), boost: 10 - }, { + }, { label: "array_get", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -434,7 +434,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\array_get(" + "$" + "{" + "1:ref" + "}" + ", " + "$" + "{" + "2:path" + "}" + ")"), boost: 10 - }, { + }, { label: "array_get_collection", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -452,7 +452,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\array_get_collection(" + "$" + "{" + "1:ref" + "}" + ", " + "$" + "{" + "2:keys" + "}" + ")"), boost: 10 - }, { + }, { label: "array_get_collection_first", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -467,7 +467,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\array_get_collection_first(" + "$" + "{" + "1:ref" + "}" + ", " + "$" + "{" + "2:keys" + "}" + ")"), boost: 10 - }, { + }, { label: "array_keys_style_convert", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -482,7 +482,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\array_keys_style_convert(" + "$" + "{" + "1:ref" + "}" + ", " + "$" + "{" + "2:style" + "}" + ")"), boost: 10 - }, { + }, { label: "array_key_rename", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -497,7 +497,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\array_key_rename(" + "$" + "{" + "1:ref" + "}" + ", " + "$" + "{" + "2:path" + "}" + ", " + "$" + "{" + "3:newName" + "}" + ")"), boost: 10 - }, { + }, { label: "array_merge", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -515,7 +515,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\array_merge(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:right" + "}" + ")"), boost: 10 - }, { + }, { label: "array_merge_collection", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -533,7 +533,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\array_merge_collection(" + "$" + "{" + "1:array" + "}" + ")"), boost: 10 - }, { + }, { label: "array_overlap", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -551,7 +551,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\array_overlap(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:right" + "}" + ")"), boost: 10 - }, { + }, { label: "array_reverse", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -569,7 +569,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\array_reverse(" + "$" + "{" + "1:function" + "}" + ", " + "$" + "{" + "2:preserveKeys" + "}" + ")"), boost: 10 - }, { + }, { label: "array_sort", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -584,7 +584,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\array_sort(" + "$" + "{" + "1:function" + "}" + ", " + "$" + "{" + "2:sort_function" + "}" + ", " + "$" + "{" + "3:flags" + "}" + ", " + "$" + "{" + "4:recursive" + "}" + ")"), boost: 10 - }, { + }, { label: "array_to_generator", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -602,7 +602,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Parquet\\array_to_generator(" + "$" + "{" + "1:data" + "}" + ")"), boost: 10 - }, { + }, { label: "array_to_row", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -620,7 +620,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\array_to_row(" + "$" + "{" + "1:data" + "}" + ", " + "$" + "{" + "2:entryFactory" + "}" + ", " + "$" + "{" + "3:partitions" + "}" + ", " + "$" + "{" + "4:schema" + "}" + ")"), boost: 10 - }, { + }, { label: "array_to_rows", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -638,7 +638,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\array_to_rows(" + "$" + "{" + "1:data" + "}" + ", " + "$" + "{" + "2:entryFactory" + "}" + ", " + "$" + "{" + "3:partitions" + "}" + ", " + "$" + "{" + "4:schema" + "}" + ")"), boost: 10 - }, { + }, { label: "array_unpack", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -656,7 +656,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\array_unpack(" + "$" + "{" + "1:array" + "}" + ", " + "$" + "{" + "2:skip_keys" + "}" + ", " + "$" + "{" + "3:entry_prefix" + "}" + ")"), boost: 10 - }, { + }, { label: "asc", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -674,7 +674,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\asc(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:nulls" + "}" + ")"), boost: 10 - }, { + }, { label: "average", type: "function", detail: "flow\u002Ddsl\u002Daggregating\u002Dfunctions", @@ -689,7 +689,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\average(" + "$" + "{" + "1:ref" + "}" + ", " + "$" + "{" + "2:scale" + "}" + ", " + "$" + "{" + "3:rounding" + "}" + ")"), boost: 10 - }, { + }, { label: "aws_s3_client", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -707,7 +707,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Filesystem\\Bridge\\AsyncAWS\\DSL\\aws_s3_client(" + "$" + "{" + "1:configuration" + "}" + ")"), boost: 10 - }, { + }, { label: "aws_s3_filesystem", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -722,7 +722,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Filesystem\\Bridge\\AsyncAWS\\DSL\\aws_s3_filesystem(" + "$" + "{" + "1:bucket" + "}" + ", " + "$" + "{" + "2:s3Client" + "}" + ", " + "$" + "{" + "3:options" + "}" + ")"), boost: 10 - }, { + }, { label: "azure_blob_service", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -737,7 +737,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Azure\\SDK\\DSL\\azure_blob_service(" + "$" + "{" + "1:configuration" + "}" + ", " + "$" + "{" + "2:azure_authorization_factory" + "}" + ", " + "$" + "{" + "3:client" + "}" + ", " + "$" + "{" + "4:azure_http_factory" + "}" + ", " + "$" + "{" + "5:azure_url_factory" + "}" + ", " + "$" + "{" + "6:logger" + "}" + ")"), boost: 10 - }, { + }, { label: "azure_blob_service_config", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -752,7 +752,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Azure\\SDK\\DSL\\azure_blob_service_config(" + "$" + "{" + "1:account" + "}" + ", " + "$" + "{" + "2:container" + "}" + ")"), boost: 10 - }, { + }, { label: "azure_filesystem", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -767,7 +767,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Filesystem\\Bridge\\Azure\\DSL\\azure_filesystem(" + "$" + "{" + "1:blob_service" + "}" + ", " + "$" + "{" + "2:options" + "}" + ")"), boost: 10 - }, { + }, { label: "azure_filesystem_options", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -782,7 +782,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Filesystem\\Bridge\\Azure\\DSL\\azure_filesystem_options()"), boost: 10 - }, { + }, { label: "azure_http_factory", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -797,7 +797,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Azure\\SDK\\DSL\\azure_http_factory(" + "$" + "{" + "1:request_factory" + "}" + ", " + "$" + "{" + "2:stream_factory" + "}" + ")"), boost: 10 - }, { + }, { label: "azure_shared_key_authorization_factory", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -812,7 +812,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Azure\\SDK\\DSL\\azure_shared_key_authorization_factory(" + "$" + "{" + "1:account" + "}" + ", " + "$" + "{" + "2:key" + "}" + ")"), boost: 10 - }, { + }, { label: "azure_url_factory", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -827,7 +827,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Azure\\SDK\\DSL\\azure_url_factory(" + "$" + "{" + "1:host" + "}" + ")"), boost: 10 - }, { + }, { label: "azurite_url_factory", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -842,7 +842,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Azure\\SDK\\DSL\\azurite_url_factory(" + "$" + "{" + "1:host" + "}" + ", " + "$" + "{" + "2:port" + "}" + ", " + "$" + "{" + "3:secure" + "}" + ")"), boost: 10 - }, { + }, { label: "baggage", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -860,7 +860,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\baggage(" + "$" + "{" + "1:entries" + "}" + ")"), boost: 10 - }, { + }, { label: "bar_chart", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -875,7 +875,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\ChartJS\\bar_chart(" + "$" + "{" + "1:label" + "}" + ", " + "$" + "{" + "2:datasets" + "}" + ")"), boost: 10 - }, { + }, { label: "batched_by", type: "function", detail: "flow\u002Ddsl\u002Dextractors", @@ -893,7 +893,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\batched_by(" + "$" + "{" + "1:extractor" + "}" + ", " + "$" + "{" + "2:column" + "}" + ", " + "$" + "{" + "3:min_size" + "}" + ")"), boost: 10 - }, { + }, { label: "batches", type: "function", detail: "flow\u002Ddsl\u002Dextractors", @@ -911,7 +911,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\batches(" + "$" + "{" + "1:extractor" + "}" + ", " + "$" + "{" + "2:size" + "}" + ")"), boost: 10 - }, { + }, { label: "batching_log_processor", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -929,7 +929,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\batching_log_processor(" + "$" + "{" + "1:exporter" + "}" + ", " + "$" + "{" + "2:batchSize" + "}" + ")"), boost: 10 - }, { + }, { label: "batching_metric_processor", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -947,7 +947,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\batching_metric_processor(" + "$" + "{" + "1:exporter" + "}" + ", " + "$" + "{" + "2:batchSize" + "}" + ")"), boost: 10 - }, { + }, { label: "batching_span_processor", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -965,7 +965,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\batching_span_processor(" + "$" + "{" + "1:exporter" + "}" + ", " + "$" + "{" + "2:batchSize" + "}" + ")"), boost: 10 - }, { + }, { label: "batch_size", type: "function", detail: "flow\u002Ddsl\u002Dtransformers", @@ -983,7 +983,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\batch_size(" + "$" + "{" + "1:size" + "}" + ")"), boost: 10 - }, { + }, { label: "begin", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -1001,7 +1001,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\begin()"), boost: 10 - }, { + }, { label: "between", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -1016,7 +1016,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\between(" + "$" + "{" + "1:value" + "}" + ", " + "$" + "{" + "2:lower_bound" + "}" + ", " + "$" + "{" + "3:upper_bound" + "}" + ", " + "$" + "{" + "4:boundary" + "}" + ")"), boost: 10 - }, { + }, { label: "between", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -1034,7 +1034,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\between(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:low" + "}" + ", " + "$" + "{" + "3:high" + "}" + ", " + "$" + "{" + "4:not" + "}" + ")"), boost: 10 - }, { + }, { label: "binary_expr", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -1052,7 +1052,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\binary_expr(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:operator" + "}" + ", " + "$" + "{" + "3:right" + "}" + ")"), boost: 10 - }, { + }, { label: "boolean_entry", type: "function", detail: "flow\u002Ddsl\u002Dentries", @@ -1070,7 +1070,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\boolean_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "bool_entry", type: "function", detail: "flow\u002Ddsl\u002Dentries", @@ -1088,7 +1088,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\bool_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "bool_schema", type: "function", detail: "flow\u002Ddsl\u002Dschema", @@ -1103,7 +1103,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\bool_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:nullable" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "bulk_insert", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -1121,7 +1121,25 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\bulk_insert(" + "$" + "{" + "1:table" + "}" + ", " + "$" + "{" + "2:columns" + "}" + ", " + "$" + "{" + "3:rowCount" + "}" + ")"), boost: 10 - }, { + }, { + label: "caching_detector", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ caching_detector(ResourceDetector $detector, string $cachePath = null) : CachingDetector +
+
+ Create a CachingDetector.
Wraps another detector and caches its results to a file. On subsequent
calls, returns the cached resource instead of running detection again.
@param ResourceDetector $detector The detector to wrap
@param null|string $cachePath Cache file path (default: sys_get_temp_dir()/flow_telemetry_resource.cache) +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\caching_detector(" + "$" + "{" + "1:detector" + "}" + ", " + "$" + "{" + "2:cachePath" + "}" + ")"), + boost: 10 + }, { label: "call", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -1139,7 +1157,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\call(" + "$" + "{" + "1:callable" + "}" + ", " + "$" + "{" + "2:parameters" + "}" + ", " + "$" + "{" + "3:return_type" + "}" + ")"), boost: 10 - }, { + }, { label: "call", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -1157,7 +1175,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\call(" + "$" + "{" + "1:procedure" + "}" + ")"), boost: 10 - }, { + }, { label: "capitalize", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -1172,7 +1190,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\capitalize(" + "$" + "{" + "1:value" + "}" + ")"), boost: 10 - }, { + }, { label: "case_when", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -1190,7 +1208,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\case_when(" + "$" + "{" + "1:whenClauses" + "}" + ", " + "$" + "{" + "2:elseResult" + "}" + ", " + "$" + "{" + "3:operand" + "}" + ")"), boost: 10 - }, { + }, { label: "cast", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -1208,7 +1226,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\cast(" + "$" + "{" + "1:value" + "}" + ", " + "$" + "{" + "2:type" + "}" + ")"), boost: 10 - }, { + }, { label: "cast", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -1226,7 +1244,25 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\cast(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:dataType" + "}" + ")"), boost: 10 - }, { + }, { + label: "chain_detector", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ chain_detector(ResourceDetector $detectors) : ChainDetector +
+
+ Create a ChainDetector.
Combines multiple resource detectors into a chain. Detectors are executed
in order and their results are merged. Later detectors take precedence
over earlier ones when there are conflicting attribute keys.
@param ResourceDetector ...$detectors The detectors to chain +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\chain_detector(" + "$" + "{" + "1:detectors" + "}" + ")"), + boost: 10 + }, { label: "check_constraint", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -1244,7 +1280,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\check_constraint(" + "$" + "{" + "1:expression" + "}" + ")"), boost: 10 - }, { + }, { label: "chunks_from", type: "function", detail: "flow\u002Ddsl\u002Dextractors", @@ -1262,7 +1298,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\chunks_from(" + "$" + "{" + "1:extractor" + "}" + ", " + "$" + "{" + "2:chunk_size" + "}" + ")"), boost: 10 - }, { + }, { label: "close_cursor", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -1280,7 +1316,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\close_cursor(" + "$" + "{" + "1:cursorName" + "}" + ")"), boost: 10 - }, { + }, { label: "cluster", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -1298,7 +1334,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\cluster()"), boost: 10 - }, { + }, { label: "coalesce", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -1313,7 +1349,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\coalesce(" + "$" + "{" + "1:values" + "}" + ")"), boost: 10 - }, { + }, { label: "coalesce", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -1331,7 +1367,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\coalesce(" + "$" + "{" + "1:expressions" + "}" + ")"), boost: 10 - }, { + }, { label: "col", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -1349,7 +1385,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\col(" + "$" + "{" + "1:entry" + "}" + ")"), boost: 10 - }, { + }, { label: "col", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -1367,7 +1403,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\col(" + "$" + "{" + "1:column" + "}" + ", " + "$" + "{" + "2:table" + "}" + ", " + "$" + "{" + "3:schema" + "}" + ")"), boost: 10 - }, { + }, { label: "collect", type: "function", detail: "flow\u002Ddsl\u002Daggregating\u002Dfunctions", @@ -1382,7 +1418,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\collect(" + "$" + "{" + "1:ref" + "}" + ")"), boost: 10 - }, { + }, { label: "collect_unique", type: "function", detail: "flow\u002Ddsl\u002Daggregating\u002Dfunctions", @@ -1397,7 +1433,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\collect_unique(" + "$" + "{" + "1:ref" + "}" + ")"), boost: 10 - }, { + }, { label: "column", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -1415,7 +1451,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\column(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:type" + "}" + ")"), boost: 10 - }, { + }, { label: "combine", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -1433,7 +1469,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\combine(" + "$" + "{" + "1:keys" + "}" + ", " + "$" + "{" + "2:values" + "}" + ")"), boost: 10 - }, { + }, { label: "comment", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -1451,7 +1487,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\comment(" + "$" + "{" + "1:target" + "}" + ", " + "$" + "{" + "2:name" + "}" + ")"), boost: 10 - }, { + }, { label: "commit", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -1469,7 +1505,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\commit()"), boost: 10 - }, { + }, { label: "commit_prepared", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -1487,7 +1523,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\commit_prepared(" + "$" + "{" + "1:transactionId" + "}" + ")"), boost: 10 - }, { + }, { label: "compare_all", type: "function", detail: "flow\u002Ddsl\u002Dcomparisons", @@ -1502,7 +1538,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\compare_all(" + "$" + "{" + "1:comparisons" + "}" + ")"), boost: 10 - }, { + }, { label: "compare_any", type: "function", detail: "flow\u002Ddsl\u002Dcomparisons", @@ -1517,7 +1553,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\compare_any(" + "$" + "{" + "1:comparisons" + "}" + ")"), boost: 10 - }, { + }, { label: "compare_entries_by_name", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -1532,7 +1568,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\compare_entries_by_name(" + "$" + "{" + "1:order" + "}" + ")"), boost: 10 - }, { + }, { label: "compare_entries_by_name_desc", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -1547,7 +1583,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\compare_entries_by_name_desc()"), boost: 10 - }, { + }, { label: "compare_entries_by_type", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -1565,7 +1601,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\compare_entries_by_type(" + "$" + "{" + "1:priorities" + "}" + ", " + "$" + "{" + "2:order" + "}" + ")"), boost: 10 - }, { + }, { label: "compare_entries_by_type_and_name", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -1583,7 +1619,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\compare_entries_by_type_and_name(" + "$" + "{" + "1:priorities" + "}" + ", " + "$" + "{" + "2:order" + "}" + ")"), boost: 10 - }, { + }, { label: "compare_entries_by_type_desc", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -1601,7 +1637,25 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\compare_entries_by_type_desc(" + "$" + "{" + "1:priorities" + "}" + ")"), boost: 10 - }, { + }, { + label: "composer_detector", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ composer_detector() : ComposerDetector +
+
+ Create a ComposerDetector.
Detects service.name and service.version from Composer\'s InstalledVersions
using the root package information. +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\composer_detector()"), + boost: 10 + }, { label: "composite_propagator", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -1619,7 +1673,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\composite_propagator(" + "$" + "{" + "1:propagators" + "}" + ")"), boost: 10 - }, { + }, { label: "concat", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -1637,7 +1691,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\concat(" + "$" + "{" + "1:functions" + "}" + ")"), boost: 10 - }, { + }, { label: "concat_ws", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -1655,7 +1709,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\concat_ws(" + "$" + "{" + "1:separator" + "}" + ", " + "$" + "{" + "2:functions" + "}" + ")"), boost: 10 - }, { + }, { label: "conditions", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -1673,7 +1727,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\conditions()"), boost: 10 - }, { + }, { label: "cond_and", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -1691,7 +1745,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\cond_and(" + "$" + "{" + "1:conditions" + "}" + ")"), boost: 10 - }, { + }, { label: "cond_false", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -1709,7 +1763,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\cond_false()"), boost: 10 - }, { + }, { label: "cond_not", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -1727,7 +1781,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\cond_not(" + "$" + "{" + "1:condition" + "}" + ")"), boost: 10 - }, { + }, { label: "cond_or", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -1745,7 +1799,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\cond_or(" + "$" + "{" + "1:conditions" + "}" + ")"), boost: 10 - }, { + }, { label: "cond_true", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -1763,7 +1817,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\cond_true()"), boost: 10 - }, { + }, { label: "config", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -1778,7 +1832,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\config()"), boost: 10 - }, { + }, { label: "config_builder", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -1793,7 +1847,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\config_builder()"), boost: 10 - }, { + }, { label: "conflict_columns", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -1811,7 +1865,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\conflict_columns(" + "$" + "{" + "1:columns" + "}" + ")"), boost: 10 - }, { + }, { label: "conflict_constraint", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -1829,7 +1883,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\conflict_constraint(" + "$" + "{" + "1:name" + "}" + ")"), boost: 10 - }, { + }, { label: "console_log_exporter", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -1847,7 +1901,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\console_log_exporter(" + "$" + "{" + "1:colors" + "}" + ", " + "$" + "{" + "2:maxBodyLength" + "}" + ")"), boost: 10 - }, { + }, { label: "console_metric_exporter", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -1865,7 +1919,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\console_metric_exporter(" + "$" + "{" + "1:colors" + "}" + ")"), boost: 10 - }, { + }, { label: "console_span_exporter", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -1883,7 +1937,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\console_span_exporter(" + "$" + "{" + "1:colors" + "}" + ")"), boost: 10 - }, { + }, { label: "constraint_sorted_by", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -1898,7 +1952,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\constraint_sorted_by(" + "$" + "{" + "1:column" + "}" + ", " + "$" + "{" + "2:columns" + "}" + ")"), boost: 10 - }, { + }, { label: "constraint_unique", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -1913,7 +1967,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\constraint_unique(" + "$" + "{" + "1:reference" + "}" + ", " + "$" + "{" + "2:references" + "}" + ")"), boost: 10 - }, { + }, { label: "context", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -1931,7 +1985,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\context(" + "$" + "{" + "1:traceId" + "}" + ", " + "$" + "{" + "2:baggage" + "}" + ")"), boost: 10 - }, { + }, { label: "copy", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -1949,7 +2003,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\copy()"), boost: 10 - }, { + }, { label: "count", type: "function", detail: "flow\u002Ddsl\u002Daggregating\u002Dfunctions", @@ -1964,7 +2018,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\count(" + "$" + "{" + "1:function" + "}" + ")"), boost: 10 - }, { + }, { label: "create", type: "function", detail: "flow\u002Ddsl\u002Dschema", @@ -1982,7 +2036,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\create()"), boost: 10 - }, { + }, { label: "csv_detect_separator", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2000,7 +2054,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\CSV\\csv_detect_separator(" + "$" + "{" + "1:stream" + "}" + ", " + "$" + "{" + "2:lines" + "}" + ", " + "$" + "{" + "3:fallback" + "}" + ", " + "$" + "{" + "4:options" + "}" + ")"), boost: 10 - }, { + }, { label: "cte", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2018,7 +2072,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\cte(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:query" + "}" + ", " + "$" + "{" + "3:columnNames" + "}" + ", " + "$" + "{" + "4:materialization" + "}" + ", " + "$" + "{" + "5:recursive" + "}" + ")"), boost: 10 - }, { + }, { label: "current_date", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2036,7 +2090,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\current_date()"), boost: 10 - }, { + }, { label: "current_time", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2054,7 +2108,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\current_time()"), boost: 10 - }, { + }, { label: "current_timestamp", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2072,7 +2126,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\current_timestamp()"), boost: 10 - }, { + }, { label: "data_frame", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -2087,7 +2141,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\data_frame(" + "$" + "{" + "1:config" + "}" + ")"), boost: 10 - }, { + }, { label: "data_type_array", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2105,7 +2159,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_array(" + "$" + "{" + "1:elementType" + "}" + ")"), boost: 10 - }, { + }, { label: "data_type_bigint", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2123,7 +2177,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_bigint()"), boost: 10 - }, { + }, { label: "data_type_bigserial", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2141,7 +2195,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_bigserial()"), boost: 10 - }, { + }, { label: "data_type_boolean", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2159,7 +2213,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_boolean()"), boost: 10 - }, { + }, { label: "data_type_bytea", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2177,7 +2231,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_bytea()"), boost: 10 - }, { + }, { label: "data_type_char", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2195,7 +2249,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_char(" + "$" + "{" + "1:length" + "}" + ")"), boost: 10 - }, { + }, { label: "data_type_cidr", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2213,7 +2267,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_cidr()"), boost: 10 - }, { + }, { label: "data_type_custom", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2231,7 +2285,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_custom(" + "$" + "{" + "1:typeName" + "}" + ", " + "$" + "{" + "2:schema" + "}" + ")"), boost: 10 - }, { + }, { label: "data_type_date", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2249,7 +2303,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_date()"), boost: 10 - }, { + }, { label: "data_type_decimal", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2267,7 +2321,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_decimal(" + "$" + "{" + "1:precision" + "}" + ", " + "$" + "{" + "2:scale" + "}" + ")"), boost: 10 - }, { + }, { label: "data_type_double_precision", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2285,7 +2339,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_double_precision()"), boost: 10 - }, { + }, { label: "data_type_inet", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2303,7 +2357,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_inet()"), boost: 10 - }, { + }, { label: "data_type_integer", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2321,7 +2375,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_integer()"), boost: 10 - }, { + }, { label: "data_type_interval", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2339,7 +2393,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_interval()"), boost: 10 - }, { + }, { label: "data_type_json", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2357,7 +2411,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_json()"), boost: 10 - }, { + }, { label: "data_type_jsonb", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2375,7 +2429,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_jsonb()"), boost: 10 - }, { + }, { label: "data_type_macaddr", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2393,7 +2447,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_macaddr()"), boost: 10 - }, { + }, { label: "data_type_numeric", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2411,7 +2465,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_numeric(" + "$" + "{" + "1:precision" + "}" + ", " + "$" + "{" + "2:scale" + "}" + ")"), boost: 10 - }, { + }, { label: "data_type_real", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2429,7 +2483,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_real()"), boost: 10 - }, { + }, { label: "data_type_serial", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2447,7 +2501,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_serial()"), boost: 10 - }, { + }, { label: "data_type_smallint", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2465,7 +2519,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_smallint()"), boost: 10 - }, { + }, { label: "data_type_smallserial", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2483,7 +2537,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_smallserial()"), boost: 10 - }, { + }, { label: "data_type_text", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2501,7 +2555,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_text()"), boost: 10 - }, { + }, { label: "data_type_time", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2519,7 +2573,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_time(" + "$" + "{" + "1:precision" + "}" + ")"), boost: 10 - }, { + }, { label: "data_type_timestamp", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2537,7 +2591,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_timestamp(" + "$" + "{" + "1:precision" + "}" + ")"), boost: 10 - }, { + }, { label: "data_type_timestamptz", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2555,7 +2609,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_timestamptz(" + "$" + "{" + "1:precision" + "}" + ")"), boost: 10 - }, { + }, { label: "data_type_uuid", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2573,7 +2627,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_uuid()"), boost: 10 - }, { + }, { label: "data_type_varchar", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2591,7 +2645,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_varchar(" + "$" + "{" + "1:length" + "}" + ")"), boost: 10 - }, { + }, { label: "datetime_entry", type: "function", detail: "flow\u002Ddsl\u002Dentries", @@ -2609,7 +2663,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\datetime_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "datetime_schema", type: "function", detail: "flow\u002Ddsl\u002Dschema", @@ -2624,7 +2678,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\datetime_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:nullable" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "date_entry", type: "function", detail: "flow\u002Ddsl\u002Dentries", @@ -2642,7 +2696,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\date_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "date_interval_to_microseconds", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2657,7 +2711,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\date_interval_to_microseconds(" + "$" + "{" + "1:interval" + "}" + ")"), boost: 10 - }, { + }, { label: "date_interval_to_milliseconds", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2672,7 +2726,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\date_interval_to_milliseconds(" + "$" + "{" + "1:interval" + "}" + ")"), boost: 10 - }, { + }, { label: "date_interval_to_seconds", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2687,7 +2741,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\date_interval_to_seconds(" + "$" + "{" + "1:interval" + "}" + ")"), boost: 10 - }, { + }, { label: "date_schema", type: "function", detail: "flow\u002Ddsl\u002Dschema", @@ -2702,7 +2756,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\date_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:nullable" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "date_time_format", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -2717,7 +2771,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\date_time_format(" + "$" + "{" + "1:ref" + "}" + ", " + "$" + "{" + "2:format" + "}" + ")"), boost: 10 - }, { + }, { label: "dbal_dataframe_factory", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2735,7 +2789,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\dbal_dataframe_factory(" + "$" + "{" + "1:connection" + "}" + ", " + "$" + "{" + "2:query" + "}" + ", " + "$" + "{" + "3:parameters" + "}" + ")"), boost: 10 - }, { + }, { label: "dbal_from_queries", type: "function", detail: "flow\u002Ddsl\u002Dextractors", @@ -2753,7 +2807,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\dbal_from_queries(" + "$" + "{" + "1:connection" + "}" + ", " + "$" + "{" + "2:query" + "}" + ", " + "$" + "{" + "3:parameters_set" + "}" + ", " + "$" + "{" + "4:types" + "}" + ")"), boost: 10 - }, { + }, { label: "dbal_from_query", type: "function", detail: "flow\u002Ddsl\u002Dextractors", @@ -2771,7 +2825,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\dbal_from_query(" + "$" + "{" + "1:connection" + "}" + ", " + "$" + "{" + "2:query" + "}" + ", " + "$" + "{" + "3:parameters" + "}" + ", " + "$" + "{" + "4:types" + "}" + ")"), boost: 10 - }, { + }, { label: "declare_cursor", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2789,7 +2843,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\declare_cursor(" + "$" + "{" + "1:cursorName" + "}" + ", " + "$" + "{" + "2:query" + "}" + ")"), boost: 10 - }, { + }, { label: "definition_from_array", type: "function", detail: "flow\u002Ddsl\u002Dschema", @@ -2807,7 +2861,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\definition_from_array(" + "$" + "{" + "1:definition" + "}" + ")"), boost: 10 - }, { + }, { label: "definition_from_type", type: "function", detail: "flow\u002Ddsl\u002Dschema", @@ -2825,7 +2879,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\definition_from_type(" + "$" + "{" + "1:ref" + "}" + ", " + "$" + "{" + "2:type" + "}" + ", " + "$" + "{" + "3:nullable" + "}" + ", " + "$" + "{" + "4:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "delay_exponential", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2840,7 +2894,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\delay_exponential(" + "$" + "{" + "1:base" + "}" + ", " + "$" + "{" + "2:multiplier" + "}" + ", " + "$" + "{" + "3:max_delay" + "}" + ")"), boost: 10 - }, { + }, { label: "delay_fixed", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2855,7 +2909,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\delay_fixed(" + "$" + "{" + "1:delay" + "}" + ")"), boost: 10 - }, { + }, { label: "delay_jitter", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2873,7 +2927,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\delay_jitter(" + "$" + "{" + "1:delay" + "}" + ", " + "$" + "{" + "2:jitter_factor" + "}" + ")"), boost: 10 - }, { + }, { label: "delay_linear", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2888,7 +2942,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\delay_linear(" + "$" + "{" + "1:delay" + "}" + ", " + "$" + "{" + "2:increment" + "}" + ")"), boost: 10 - }, { + }, { label: "delete", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2906,7 +2960,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\delete()"), boost: 10 - }, { + }, { label: "dense_rank", type: "function", detail: "flow\u002Ddsl\u002Dwindow\u002Dfunctions", @@ -2921,7 +2975,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\dense_rank()"), boost: 10 - }, { + }, { label: "dens_rank", type: "function", detail: "flow\u002Ddsl\u002Dwindow\u002Dfunctions", @@ -2936,7 +2990,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\dens_rank()"), boost: 10 - }, { + }, { label: "derived", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2954,7 +3008,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\derived(" + "$" + "{" + "1:query" + "}" + ", " + "$" + "{" + "2:alias" + "}" + ")"), boost: 10 - }, { + }, { label: "desc", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -2972,7 +3026,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\desc(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:nulls" + "}" + ")"), boost: 10 - }, { + }, { label: "df", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -2990,7 +3044,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\df(" + "$" + "{" + "1:config" + "}" + ")"), boost: 10 - }, { + }, { label: "discard", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -3008,7 +3062,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\discard(" + "$" + "{" + "1:type" + "}" + ")"), boost: 10 - }, { + }, { label: "dom_element_to_string", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -3026,7 +3080,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\dom_element_to_string(" + "$" + "{" + "1:element" + "}" + ", " + "$" + "{" + "2:format_output" + "}" + ", " + "$" + "{" + "3:preserver_white_space" + "}" + ")"), boost: 10 - }, { + }, { label: "dom_element_to_string", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -3041,7 +3095,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\dom_element_to_string(" + "$" + "{" + "1:element" + "}" + ", " + "$" + "{" + "2:format_output" + "}" + ", " + "$" + "{" + "3:preserver_white_space" + "}" + ")"), boost: 10 - }, { + }, { label: "do_block", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -3059,7 +3113,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\do_block(" + "$" + "{" + "1:code" + "}" + ")"), boost: 10 - }, { + }, { label: "drop", type: "function", detail: "flow\u002Ddsl\u002Dtransformers", @@ -3074,7 +3128,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\drop(" + "$" + "{" + "1:entries" + "}" + ")"), boost: 10 - }, { + }, { label: "drop", type: "function", detail: "flow\u002Ddsl\u002Dschema", @@ -3092,7 +3146,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\drop()"), boost: 10 - }, { + }, { label: "drop_owned", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -3110,7 +3164,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\drop_owned(" + "$" + "{" + "1:roles" + "}" + ")"), boost: 10 - }, { + }, { label: "duration_microseconds", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -3125,7 +3179,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\duration_microseconds(" + "$" + "{" + "1:microseconds" + "}" + ")"), boost: 10 - }, { + }, { label: "duration_milliseconds", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -3140,7 +3194,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\duration_milliseconds(" + "$" + "{" + "1:milliseconds" + "}" + ")"), boost: 10 - }, { + }, { label: "duration_minutes", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -3155,7 +3209,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\duration_minutes(" + "$" + "{" + "1:minutes" + "}" + ")"), boost: 10 - }, { + }, { label: "duration_seconds", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -3170,7 +3224,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\duration_seconds(" + "$" + "{" + "1:seconds" + "}" + ")"), boost: 10 - }, { + }, { label: "empty_generator", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -3185,7 +3239,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Parquet\\empty_generator()"), boost: 10 - }, { + }, { label: "entries", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -3203,7 +3257,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\entries(" + "$" + "{" + "1:entries" + "}" + ")"), boost: 10 - }, { + }, { label: "entry", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -3221,7 +3275,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\entry(" + "$" + "{" + "1:entry" + "}" + ")"), boost: 10 - }, { + }, { label: "entry_id_factory", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -3236,7 +3290,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Elasticsearch\\entry_id_factory(" + "$" + "{" + "1:entry_name" + "}" + ")"), boost: 10 - }, { + }, { label: "enum_entry", type: "function", detail: "flow\u002Ddsl\u002Dentries", @@ -3254,7 +3308,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\enum_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:enum" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "enum_schema", type: "function", detail: "flow\u002Ddsl\u002Dschema", @@ -3272,7 +3326,25 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\enum_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:type" + "}" + ", " + "$" + "{" + "3:nullable" + "}" + ", " + "$" + "{" + "4:metadata" + "}" + ")"), boost: 10 - }, { + }, { + label: "environment_detector", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ environment_detector() : EnvironmentDetector +
+
+ Create an EnvironmentDetector.
Detects resource attributes from OpenTelemetry standard environment variables:
- OTEL_SERVICE_NAME: Sets service.name attribute
- OTEL_RESOURCE_ATTRIBUTES: Sets additional attributes in key=value,key2=value2 format +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\environment_detector()"), + boost: 10 + }, { label: "eq", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -3290,7 +3362,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\eq(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:right" + "}" + ")"), boost: 10 - }, { + }, { label: "equal", type: "function", detail: "flow\u002Ddsl\u002Dcomparisons", @@ -3305,7 +3377,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\equal(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:right" + "}" + ")"), boost: 10 - }, { + }, { label: "es_hits_to_rows", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -3323,7 +3395,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Elasticsearch\\es_hits_to_rows(" + "$" + "{" + "1:source" + "}" + ")"), boost: 10 - }, { + }, { label: "exception_if_exists", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -3341,7 +3413,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\exception_if_exists()"), boost: 10 - }, { + }, { label: "execution_context", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -3356,7 +3428,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\execution_context(" + "$" + "{" + "1:config" + "}" + ")"), boost: 10 - }, { + }, { label: "execution_lenient", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -3374,7 +3446,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\execution_lenient()"), boost: 10 - }, { + }, { label: "execution_strict", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -3392,7 +3464,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\execution_strict()"), boost: 10 - }, { + }, { label: "exists", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -3407,7 +3479,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\exists(" + "$" + "{" + "1:ref" + "}" + ")"), boost: 10 - }, { + }, { label: "exists", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -3425,7 +3497,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\exists(" + "$" + "{" + "1:subquery" + "}" + ")"), boost: 10 - }, { + }, { label: "explain", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -3443,7 +3515,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\explain(" + "$" + "{" + "1:query" + "}" + ")"), boost: 10 - }, { + }, { label: "fetch", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -3461,7 +3533,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\fetch(" + "$" + "{" + "1:cursorName" + "}" + ")"), boost: 10 - }, { + }, { label: "files", type: "function", detail: "flow\u002Ddsl\u002Dextractors", @@ -3476,7 +3548,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\files(" + "$" + "{" + "1:directory" + "}" + ")"), boost: 10 - }, { + }, { label: "filesystem_cache", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -3491,7 +3563,43 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\filesystem_cache(" + "$" + "{" + "1:cache_dir" + "}" + ", " + "$" + "{" + "2:filesystem" + "}" + ", " + "$" + "{" + "3:serializer" + "}" + ")"), boost: 10 - }, { + }, { + label: "filesystem_telemetry_config", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ filesystem_telemetry_config(Telemetry $telemetry, ClockInterface $clock, FilesystemTelemetryOptions $options = null) : FilesystemTelemetryConfig +
+
+ Create a telemetry configuration for the filesystem. +
+ ` + return div + }, + apply: snippet("\\Flow\\Filesystem\\DSL\\filesystem_telemetry_config(" + "$" + "{" + "1:telemetry" + "}" + ", " + "$" + "{" + "2:clock" + "}" + ", " + "$" + "{" + "3:options" + "}" + ")"), + boost: 10 + }, { + label: "filesystem_telemetry_options", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ filesystem_telemetry_options(bool $traceStreams = true, bool $collectMetrics = true) : FilesystemTelemetryOptions +
+
+ Create options for filesystem telemetry.
@param bool $traceStreams Create a single span per stream lifecycle (default: ON)
@param bool $collectMetrics Collect metrics for bytes/operation counts (default: ON) +
+ ` + return div + }, + apply: snippet("\\Flow\\Filesystem\\DSL\\filesystem_telemetry_options(" + "$" + "{" + "1:traceStreams" + "}" + ", " + "$" + "{" + "2:collectMetrics" + "}" + ")"), + boost: 10 + }, { label: "first", type: "function", detail: "flow\u002Ddsl\u002Daggregating\u002Dfunctions", @@ -3506,7 +3614,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\first(" + "$" + "{" + "1:ref" + "}" + ")"), boost: 10 - }, { + }, { label: "float_entry", type: "function", detail: "flow\u002Ddsl\u002Dentries", @@ -3524,7 +3632,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\float_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "float_schema", type: "function", detail: "flow\u002Ddsl\u002Dschema", @@ -3539,7 +3647,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\float_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:nullable" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "flow_context", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -3554,7 +3662,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\flow_context(" + "$" + "{" + "1:config" + "}" + ")"), boost: 10 - }, { + }, { label: "foreign_key", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -3572,7 +3680,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\foreign_key(" + "$" + "{" + "1:columns" + "}" + ", " + "$" + "{" + "2:referenceTable" + "}" + ", " + "$" + "{" + "3:referenceColumns" + "}" + ")"), boost: 10 - }, { + }, { label: "for_share", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -3590,7 +3698,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\for_share(" + "$" + "{" + "1:tables" + "}" + ")"), boost: 10 - }, { + }, { label: "for_update", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -3608,7 +3716,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\for_update(" + "$" + "{" + "1:tables" + "}" + ")"), boost: 10 - }, { + }, { label: "frame_current_row", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -3626,7 +3734,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\frame_current_row()"), boost: 10 - }, { + }, { label: "frame_following", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -3644,7 +3752,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\frame_following(" + "$" + "{" + "1:offset" + "}" + ")"), boost: 10 - }, { + }, { label: "frame_preceding", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -3662,7 +3770,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\frame_preceding(" + "$" + "{" + "1:offset" + "}" + ")"), boost: 10 - }, { + }, { label: "frame_unbounded_following", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -3680,7 +3788,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\frame_unbounded_following()"), boost: 10 - }, { + }, { label: "frame_unbounded_preceding", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -3698,7 +3806,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\frame_unbounded_preceding()"), boost: 10 - }, { + }, { label: "from_all", type: "function", detail: "flow\u002Ddsl\u002Dextractors", @@ -3713,7 +3821,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\from_all(" + "$" + "{" + "1:extractors" + "}" + ")"), boost: 10 - }, { + }, { label: "from_array", type: "function", detail: "flow\u002Ddsl\u002Dextractors", @@ -3731,7 +3839,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\from_array(" + "$" + "{" + "1:array" + "}" + ", " + "$" + "{" + "2:schema" + "}" + ")"), boost: 10 - }, { + }, { label: "from_avro", type: "function", detail: "flow\u002Ddsl\u002Dextractors", @@ -3746,7 +3854,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\Adapter\\Avro\\from_avro(" + "$" + "{" + "1:path" + "}" + ")"), boost: 10 - }, { + }, { label: "from_cache", type: "function", detail: "flow\u002Ddsl\u002Dextractors", @@ -3764,7 +3872,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\from_cache(" + "$" + "{" + "1:id" + "}" + ", " + "$" + "{" + "2:fallback_extractor" + "}" + ", " + "$" + "{" + "3:clear" + "}" + ")"), boost: 10 - }, { + }, { label: "from_csv", type: "function", detail: "flow\u002Ddsl\u002Dextractors", @@ -3782,7 +3890,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\CSV\\from_csv(" + "$" + "{" + "1:path" + "}" + ", " + "$" + "{" + "2:with_header" + "}" + ", " + "$" + "{" + "3:empty_to_null" + "}" + ", " + "$" + "{" + "4:separator" + "}" + ", " + "$" + "{" + "5:enclosure" + "}" + ", " + "$" + "{" + "6:escape" + "}" + ", " + "$" + "{" + "7:characters_read_in_line" + "}" + ", " + "$" + "{" + "8:schema" + "}" + ")"), boost: 10 - }, { + }, { label: "from_data_frame", type: "function", detail: "flow\u002Ddsl\u002Dextractors", @@ -3797,7 +3905,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\from_data_frame(" + "$" + "{" + "1:data_frame" + "}" + ")"), boost: 10 - }, { + }, { label: "from_dbal_key_set_qb", type: "function", detail: "flow\u002Ddsl\u002Dextractors", @@ -3812,7 +3920,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\from_dbal_key_set_qb(" + "$" + "{" + "1:connection" + "}" + ", " + "$" + "{" + "2:queryBuilder" + "}" + ", " + "$" + "{" + "3:key_set" + "}" + ")"), boost: 10 - }, { + }, { label: "from_dbal_limit_offset", type: "function", detail: "flow\u002Ddsl\u002Dextractors", @@ -3830,7 +3938,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\from_dbal_limit_offset(" + "$" + "{" + "1:connection" + "}" + ", " + "$" + "{" + "2:table" + "}" + ", " + "$" + "{" + "3:order_by" + "}" + ", " + "$" + "{" + "4:page_size" + "}" + ", " + "$" + "{" + "5:maximum" + "}" + ")"), boost: 10 - }, { + }, { label: "from_dbal_limit_offset_qb", type: "function", detail: "flow\u002Ddsl\u002Dextractors", @@ -3848,7 +3956,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\from_dbal_limit_offset_qb(" + "$" + "{" + "1:connection" + "}" + ", " + "$" + "{" + "2:queryBuilder" + "}" + ", " + "$" + "{" + "3:page_size" + "}" + ", " + "$" + "{" + "4:maximum" + "}" + ", " + "$" + "{" + "5:offset" + "}" + ")"), boost: 10 - }, { + }, { label: "from_dbal_queries", type: "function", detail: "flow\u002Ddsl\u002Dextractors", @@ -3866,7 +3974,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\from_dbal_queries(" + "$" + "{" + "1:connection" + "}" + ", " + "$" + "{" + "2:query" + "}" + ", " + "$" + "{" + "3:parameters_set" + "}" + ", " + "$" + "{" + "4:types" + "}" + ")"), boost: 10 - }, { + }, { label: "from_dbal_query", type: "function", detail: "flow\u002Ddsl\u002Dextractors", @@ -3884,7 +3992,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\from_dbal_query(" + "$" + "{" + "1:connection" + "}" + ", " + "$" + "{" + "2:query" + "}" + ", " + "$" + "{" + "3:parameters" + "}" + ", " + "$" + "{" + "4:types" + "}" + ")"), boost: 10 - }, { + }, { label: "from_dynamic_http_requests", type: "function", detail: "flow\u002Ddsl\u002Dextractors", @@ -3899,7 +4007,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Http\\from_dynamic_http_requests(" + "$" + "{" + "1:client" + "}" + ", " + "$" + "{" + "2:requestFactory" + "}" + ")"), boost: 10 - }, { + }, { label: "from_es", type: "function", detail: "flow\u002Ddsl\u002Dextractors", @@ -3917,7 +4025,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Elasticsearch\\from_es(" + "$" + "{" + "1:config" + "}" + ", " + "$" + "{" + "2:parameters" + "}" + ", " + "$" + "{" + "3:pit_params" + "}" + ")"), boost: 10 - }, { + }, { label: "from_excel", type: "function", detail: "flow\u002Ddsl\u002Dextractors", @@ -3932,7 +4040,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Excel\\DSL\\from_excel(" + "$" + "{" + "1:path" + "}" + ")"), boost: 10 - }, { + }, { label: "from_google_sheet", type: "function", detail: "flow\u002Ddsl\u002Dextractors", @@ -3950,7 +4058,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\GoogleSheet\\from_google_sheet(" + "$" + "{" + "1:auth_config" + "}" + ", " + "$" + "{" + "2:spreadsheet_id" + "}" + ", " + "$" + "{" + "3:sheet_name" + "}" + ", " + "$" + "{" + "4:with_header" + "}" + ", " + "$" + "{" + "5:rows_per_page" + "}" + ", " + "$" + "{" + "6:options" + "}" + ")"), boost: 10 - }, { + }, { label: "from_google_sheet_columns", type: "function", detail: "flow\u002Ddsl\u002Dextractors", @@ -3968,7 +4076,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\GoogleSheet\\from_google_sheet_columns(" + "$" + "{" + "1:auth_config" + "}" + ", " + "$" + "{" + "2:spreadsheet_id" + "}" + ", " + "$" + "{" + "3:sheet_name" + "}" + ", " + "$" + "{" + "4:start_range_column" + "}" + ", " + "$" + "{" + "5:end_range_column" + "}" + ", " + "$" + "{" + "6:with_header" + "}" + ", " + "$" + "{" + "7:rows_per_page" + "}" + ", " + "$" + "{" + "8:options" + "}" + ")"), boost: 10 - }, { + }, { label: "from_json", type: "function", detail: "flow\u002Ddsl\u002Dextractors", @@ -3986,7 +4094,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\JSON\\from_json(" + "$" + "{" + "1:path" + "}" + ", " + "$" + "{" + "2:pointer" + "}" + ", " + "$" + "{" + "3:schema" + "}" + ")"), boost: 10 - }, { + }, { label: "from_json_lines", type: "function", detail: "flow\u002Ddsl\u002Dextractors", @@ -4004,7 +4112,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\JSON\\from_json_lines(" + "$" + "{" + "1:path" + "}" + ")"), boost: 10 - }, { + }, { label: "from_meilisearch", type: "function", detail: "flow\u002Ddsl\u002Dextractors", @@ -4022,7 +4130,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Meilisearch\\from_meilisearch(" + "$" + "{" + "1:config" + "}" + ", " + "$" + "{" + "2:params" + "}" + ", " + "$" + "{" + "3:index" + "}" + ")"), boost: 10 - }, { + }, { label: "from_memory", type: "function", detail: "flow\u002Ddsl\u002Dextractors", @@ -4037,7 +4145,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\from_memory(" + "$" + "{" + "1:memory" + "}" + ")"), boost: 10 - }, { + }, { label: "from_parquet", type: "function", detail: "flow\u002Ddsl\u002Dextractors", @@ -4055,7 +4163,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Parquet\\from_parquet(" + "$" + "{" + "1:path" + "}" + ", " + "$" + "{" + "2:columns" + "}" + ", " + "$" + "{" + "3:options" + "}" + ", " + "$" + "{" + "4:byte_order" + "}" + ", " + "$" + "{" + "5:offset" + "}" + ")"), boost: 10 - }, { + }, { label: "from_path_partitions", type: "function", detail: "flow\u002Ddsl\u002Dextractors", @@ -4070,7 +4178,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\from_path_partitions(" + "$" + "{" + "1:path" + "}" + ")"), boost: 10 - }, { + }, { label: "from_pipeline", type: "function", detail: "flow\u002Ddsl\u002Dextractors", @@ -4085,7 +4193,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\from_pipeline(" + "$" + "{" + "1:pipeline" + "}" + ")"), boost: 10 - }, { + }, { label: "from_rows", type: "function", detail: "flow\u002Ddsl\u002Dextractors", @@ -4100,7 +4208,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\from_rows(" + "$" + "{" + "1:rows" + "}" + ")"), boost: 10 - }, { + }, { label: "from_sequence_date_period", type: "function", detail: "flow\u002Ddsl\u002Dextractors", @@ -4115,7 +4223,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\from_sequence_date_period(" + "$" + "{" + "1:entry_name" + "}" + ", " + "$" + "{" + "2:start" + "}" + ", " + "$" + "{" + "3:interval" + "}" + ", " + "$" + "{" + "4:end" + "}" + ", " + "$" + "{" + "5:options" + "}" + ")"), boost: 10 - }, { + }, { label: "from_sequence_date_period_recurrences", type: "function", detail: "flow\u002Ddsl\u002Dextractors", @@ -4130,7 +4238,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\from_sequence_date_period_recurrences(" + "$" + "{" + "1:entry_name" + "}" + ", " + "$" + "{" + "2:start" + "}" + ", " + "$" + "{" + "3:interval" + "}" + ", " + "$" + "{" + "4:recurrences" + "}" + ", " + "$" + "{" + "5:options" + "}" + ")"), boost: 10 - }, { + }, { label: "from_sequence_number", type: "function", detail: "flow\u002Ddsl\u002Dextractors", @@ -4145,7 +4253,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\from_sequence_number(" + "$" + "{" + "1:entry_name" + "}" + ", " + "$" + "{" + "2:start" + "}" + ", " + "$" + "{" + "3:end" + "}" + ", " + "$" + "{" + "4:step" + "}" + ")"), boost: 10 - }, { + }, { label: "from_static_http_requests", type: "function", detail: "flow\u002Ddsl\u002Dextractors", @@ -4163,7 +4271,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Http\\from_static_http_requests(" + "$" + "{" + "1:client" + "}" + ", " + "$" + "{" + "2:requests" + "}" + ")"), boost: 10 - }, { + }, { label: "from_text", type: "function", detail: "flow\u002Ddsl\u002Dextractors", @@ -4181,7 +4289,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Text\\from_text(" + "$" + "{" + "1:path" + "}" + ")"), boost: 10 - }, { + }, { label: "from_xml", type: "function", detail: "flow\u002Ddsl\u002Dextractors", @@ -4199,7 +4307,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\XML\\from_xml(" + "$" + "{" + "1:path" + "}" + ", " + "$" + "{" + "2:xml_node_path" + "}" + ")"), boost: 10 - }, { + }, { label: "fstab", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -4217,7 +4325,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Filesystem\\DSL\\fstab(" + "$" + "{" + "1:filesystems" + "}" + ")"), boost: 10 - }, { + }, { label: "func", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -4235,7 +4343,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\func(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:args" + "}" + ")"), boost: 10 - }, { + }, { label: "func_arg", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -4253,7 +4361,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\func_arg(" + "$" + "{" + "1:type" + "}" + ")"), boost: 10 - }, { + }, { label: "generate_random_int", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -4268,7 +4376,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\generate_random_int(" + "$" + "{" + "1:start" + "}" + ", " + "$" + "{" + "2:end" + "}" + ", " + "$" + "{" + "3:generator" + "}" + ")"), boost: 10 - }, { + }, { label: "generate_random_string", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -4283,7 +4391,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\generate_random_string(" + "$" + "{" + "1:length" + "}" + ", " + "$" + "{" + "2:generator" + "}" + ")"), boost: 10 - }, { + }, { label: "get_type", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -4301,7 +4409,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\get_type(" + "$" + "{" + "1:value" + "}" + ")"), boost: 10 - }, { + }, { label: "get_type", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -4319,7 +4427,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\get_type(" + "$" + "{" + "1:value" + "}" + ")"), boost: 10 - }, { + }, { label: "grant", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -4337,7 +4445,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\grant(" + "$" + "{" + "1:privileges" + "}" + ")"), boost: 10 - }, { + }, { label: "grant_role", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -4355,7 +4463,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\grant_role(" + "$" + "{" + "1:roles" + "}" + ")"), boost: 10 - }, { + }, { label: "greatest", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -4370,7 +4478,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\greatest(" + "$" + "{" + "1:values" + "}" + ")"), boost: 10 - }, { + }, { label: "greatest", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -4388,7 +4496,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\greatest(" + "$" + "{" + "1:expressions" + "}" + ")"), boost: 10 - }, { + }, { label: "gt", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -4406,7 +4514,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\gt(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:right" + "}" + ")"), boost: 10 - }, { + }, { label: "gte", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -4424,7 +4532,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\gte(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:right" + "}" + ")"), boost: 10 - }, { + }, { label: "hash", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -4439,7 +4547,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\hash(" + "$" + "{" + "1:value" + "}" + ", " + "$" + "{" + "2:algorithm" + "}" + ")"), boost: 10 - }, { + }, { label: "hash_id_factory", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -4454,7 +4562,25 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Elasticsearch\\hash_id_factory(" + "$" + "{" + "1:entry_names" + "}" + ")"), boost: 10 - }, { + }, { + label: "host_detector", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ host_detector() : HostDetector +
+
+ Create a HostDetector.
Detects host information including host.name, host.arch, and host.id
(from /etc/machine-id on Linux or IOPlatformUUID on macOS). +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\host_detector()"), + boost: 10 + }, { label: "html_element_entry", type: "function", detail: "flow\u002Ddsl\u002Dentries", @@ -4472,7 +4598,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\html_element_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "html_element_schema", type: "function", detail: "flow\u002Ddsl\u002Dschema", @@ -4487,7 +4613,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\html_element_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:nullable" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "html_entry", type: "function", detail: "flow\u002Ddsl\u002Dentries", @@ -4505,7 +4631,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\html_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "html_schema", type: "function", detail: "flow\u002Ddsl\u002Dschema", @@ -4520,7 +4646,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\html_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:nullable" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "identical", type: "function", detail: "flow\u002Ddsl\u002Dcomparisons", @@ -4535,7 +4661,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\identical(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:right" + "}" + ")"), boost: 10 - }, { + }, { label: "ignore", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -4553,7 +4679,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\ignore()"), boost: 10 - }, { + }, { label: "ignore_error_handler", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -4568,7 +4694,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\ignore_error_handler()"), boost: 10 - }, { + }, { label: "index_col", type: "function", detail: "flow\u002Ddsl\u002Dschema", @@ -4586,7 +4712,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\index_col(" + "$" + "{" + "1:name" + "}" + ")"), boost: 10 - }, { + }, { label: "index_expr", type: "function", detail: "flow\u002Ddsl\u002Dschema", @@ -4604,7 +4730,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\index_expr(" + "$" + "{" + "1:expression" + "}" + ")"), boost: 10 - }, { + }, { label: "index_method_brin", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -4622,7 +4748,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\index_method_brin()"), boost: 10 - }, { + }, { label: "index_method_btree", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -4640,7 +4766,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\index_method_btree()"), boost: 10 - }, { + }, { label: "index_method_gin", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -4658,7 +4784,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\index_method_gin()"), boost: 10 - }, { + }, { label: "index_method_gist", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -4676,7 +4802,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\index_method_gist()"), boost: 10 - }, { + }, { label: "index_method_hash", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -4694,7 +4820,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\index_method_hash()"), boost: 10 - }, { + }, { label: "index_method_spgist", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -4712,7 +4838,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\index_method_spgist()"), boost: 10 - }, { + }, { label: "insert", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -4730,7 +4856,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\insert()"), boost: 10 - }, { + }, { label: "instrumentation_scope", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -4748,7 +4874,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\instrumentation_scope(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:version" + "}" + ", " + "$" + "{" + "3:schemaUrl" + "}" + ", " + "$" + "{" + "4:attributes" + "}" + ")"), boost: 10 - }, { + }, { label: "integer_entry", type: "function", detail: "flow\u002Ddsl\u002Dentries", @@ -4766,7 +4892,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\integer_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "integer_schema", type: "function", detail: "flow\u002Ddsl\u002Dschema", @@ -4781,7 +4907,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\integer_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:nullable" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "int_entry", type: "function", detail: "flow\u002Ddsl\u002Dentries", @@ -4799,7 +4925,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\int_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "int_schema", type: "function", detail: "flow\u002Ddsl\u002Dschema", @@ -4817,7 +4943,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\int_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:nullable" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "is_distinct_from", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -4835,7 +4961,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\is_distinct_from(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:right" + "}" + ", " + "$" + "{" + "3:not" + "}" + ")"), boost: 10 - }, { + }, { label: "is_in", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -4853,7 +4979,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\is_in(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:values" + "}" + ")"), boost: 10 - }, { + }, { label: "is_null", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -4871,7 +4997,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\is_null(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:not" + "}" + ")"), boost: 10 - }, { + }, { label: "is_type", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -4889,7 +5015,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\is_type(" + "$" + "{" + "1:type" + "}" + ", " + "$" + "{" + "2:value" + "}" + ")"), boost: 10 - }, { + }, { label: "is_valid_excel_sheet_name", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -4904,7 +5030,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Excel\\DSL\\is_valid_excel_sheet_name(" + "$" + "{" + "1:sheet_name" + "}" + ")"), boost: 10 - }, { + }, { label: "join_on", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -4922,7 +5048,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\join_on(" + "$" + "{" + "1:comparisons" + "}" + ", " + "$" + "{" + "2:join_prefix" + "}" + ")"), boost: 10 - }, { + }, { label: "json_contained_by", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -4940,7 +5066,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\json_contained_by(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:right" + "}" + ")"), boost: 10 - }, { + }, { label: "json_contains", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -4958,7 +5084,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\json_contains(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:right" + "}" + ")"), boost: 10 - }, { + }, { label: "json_entry", type: "function", detail: "flow\u002Ddsl\u002Dentries", @@ -4976,7 +5102,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\json_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:data" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "json_exists", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -4994,7 +5120,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\json_exists(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:key" + "}" + ")"), boost: 10 - }, { + }, { label: "json_exists_all", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -5012,7 +5138,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\json_exists_all(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:keys" + "}" + ")"), boost: 10 - }, { + }, { label: "json_exists_any", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -5030,7 +5156,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\json_exists_any(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:keys" + "}" + ")"), boost: 10 - }, { + }, { label: "json_get", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -5048,7 +5174,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\json_get(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:key" + "}" + ")"), boost: 10 - }, { + }, { label: "json_get_text", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -5066,7 +5192,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\json_get_text(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:key" + "}" + ")"), boost: 10 - }, { + }, { label: "json_object_entry", type: "function", detail: "flow\u002Ddsl\u002Dentries", @@ -5084,7 +5210,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\json_object_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:data" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "json_path", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -5102,7 +5228,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\json_path(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:path" + "}" + ")"), boost: 10 - }, { + }, { label: "json_path_text", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -5120,7 +5246,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\json_path_text(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:path" + "}" + ")"), boost: 10 - }, { + }, { label: "json_schema", type: "function", detail: "flow\u002Ddsl\u002Dschema", @@ -5135,7 +5261,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\json_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:nullable" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "last", type: "function", detail: "flow\u002Ddsl\u002Daggregating\u002Dfunctions", @@ -5150,7 +5276,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\last(" + "$" + "{" + "1:ref" + "}" + ")"), boost: 10 - }, { + }, { label: "lateral", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -5168,7 +5294,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\lateral(" + "$" + "{" + "1:reference" + "}" + ")"), boost: 10 - }, { + }, { label: "least", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -5183,7 +5309,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\least(" + "$" + "{" + "1:values" + "}" + ")"), boost: 10 - }, { + }, { label: "least", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -5201,7 +5327,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\least(" + "$" + "{" + "1:expressions" + "}" + ")"), boost: 10 - }, { + }, { label: "like", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -5219,7 +5345,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\like(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:pattern" + "}" + ", " + "$" + "{" + "3:caseInsensitive" + "}" + ")"), boost: 10 - }, { + }, { label: "limit", type: "function", detail: "flow\u002Ddsl\u002Dtransformers", @@ -5234,7 +5360,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\limit(" + "$" + "{" + "1:limit" + "}" + ")"), boost: 10 - }, { + }, { label: "line_chart", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -5249,7 +5375,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\ChartJS\\line_chart(" + "$" + "{" + "1:label" + "}" + ", " + "$" + "{" + "2:datasets" + "}" + ")"), boost: 10 - }, { + }, { label: "list_entry", type: "function", detail: "flow\u002Ddsl\u002Dentries", @@ -5267,7 +5393,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\list_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:type" + "}" + ", " + "$" + "{" + "4:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "list_ref", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -5282,7 +5408,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\list_ref(" + "$" + "{" + "1:entry" + "}" + ")"), boost: 10 - }, { + }, { label: "list_schema", type: "function", detail: "flow\u002Ddsl\u002Dschema", @@ -5300,7 +5426,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\list_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:type" + "}" + ", " + "$" + "{" + "3:nullable" + "}" + ", " + "$" + "{" + "4:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "lit", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -5315,7 +5441,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\lit(" + "$" + "{" + "1:value" + "}" + ")"), boost: 10 - }, { + }, { label: "literal", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -5333,7 +5459,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\literal(" + "$" + "{" + "1:value" + "}" + ")"), boost: 10 - }, { + }, { label: "lock_for", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -5351,7 +5477,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\lock_for(" + "$" + "{" + "1:strength" + "}" + ", " + "$" + "{" + "2:tables" + "}" + ", " + "$" + "{" + "3:waitPolicy" + "}" + ")"), boost: 10 - }, { + }, { label: "lock_table", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -5369,7 +5495,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\lock_table(" + "$" + "{" + "1:tables" + "}" + ")"), boost: 10 - }, { + }, { label: "logger_provider", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -5377,17 +5503,17 @@ const dslFunctions = [ const div = document.createElement("div") div.innerHTML = `
- logger_provider(LogProcessor $processor, ClockInterface $clock, ContextStorage $contextStorage) : LoggerProvider + logger_provider(LogProcessor $processor, ClockInterface $clock, ContextStorage $contextStorage, LogRecordLimits $limits = Flow\\Telemetry\\Logger\\LogRecordLimits::...) : LoggerProvider
- Create a LoggerProvider.
Creates a provider that uses a LogProcessor for processing logs.
For void/disabled logging, pass void_processor().
For memory-based testing, pass memory_processor() with exporters.
@param LogProcessor $processor The processor for logs
@param ClockInterface $clock The clock for timestamps
@param ContextStorage $contextStorage Storage for span correlation + Create a LoggerProvider.
Creates a provider that uses a LogProcessor for processing logs.
For void/disabled logging, pass void_processor().
For memory-based testing, pass memory_processor() with exporters.
@param LogProcessor $processor The processor for logs
@param ClockInterface $clock The clock for timestamps
@param ContextStorage $contextStorage Storage for span correlation
@param LogRecordLimits $limits Limits for log record attributes
` return div }, - apply: snippet("\\Flow\\Telemetry\\DSL\\logger_provider(" + "$" + "{" + "1:processor" + "}" + ", " + "$" + "{" + "2:clock" + "}" + ", " + "$" + "{" + "3:contextStorage" + "}" + ")"), + apply: snippet("\\Flow\\Telemetry\\DSL\\logger_provider(" + "$" + "{" + "1:processor" + "}" + ", " + "$" + "{" + "2:clock" + "}" + ", " + "$" + "{" + "3:contextStorage" + "}" + ", " + "$" + "{" + "4:limits" + "}" + ")"), boost: 10 - }, { + }, { label: "log_record_converter", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -5405,7 +5531,25 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Bridge\\Monolog\\Telemetry\\DSL\\log_record_converter(" + "$" + "{" + "1:severityMapper" + "}" + ", " + "$" + "{" + "2:valueNormalizer" + "}" + ")"), boost: 10 - }, { + }, { + label: "log_record_limits", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ log_record_limits(int $attributeCountLimit = 128, int $attributeValueLengthLimit = null) : LogRecordLimits +
+
+ Create LogRecordLimits configuration.
LogRecordLimits controls the maximum amount of data a log record can collect,
preventing unbounded memory growth and ensuring reasonable log record sizes.
@param int $attributeCountLimit Maximum number of attributes per log record
@param null|int $attributeValueLengthLimit Maximum length for string attribute values (null = unlimited) +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\log_record_limits(" + "$" + "{" + "1:attributeCountLimit" + "}" + ", " + "$" + "{" + "2:attributeValueLengthLimit" + "}" + ")"), + boost: 10 + }, { label: "lower", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -5420,7 +5564,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\lower(" + "$" + "{" + "1:value" + "}" + ")"), boost: 10 - }, { + }, { label: "lt", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -5438,7 +5582,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\lt(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:right" + "}" + ")"), boost: 10 - }, { + }, { label: "lte", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -5456,7 +5600,25 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\lte(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:right" + "}" + ")"), boost: 10 - }, { + }, { + label: "manual_detector", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ manual_detector(array $attributes) : ManualDetector +
+
+ Create a ManualDetector.
Returns manually specified resource attributes. Use this when you need
to set attributes explicitly rather than detecting them automatically.
@param array|bool|float|int|string> $attributes Resource attributes +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\manual_detector(" + "$" + "{" + "1:attributes" + "}" + ")"), + boost: 10 + }, { label: "map_entry", type: "function", detail: "flow\u002Ddsl\u002Dentries", @@ -5474,7 +5636,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\map_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:mapType" + "}" + ", " + "$" + "{" + "4:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "map_schema", type: "function", detail: "flow\u002Ddsl\u002Dschema", @@ -5492,7 +5654,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\map_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:type" + "}" + ", " + "$" + "{" + "3:nullable" + "}" + ", " + "$" + "{" + "4:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "mask_columns", type: "function", detail: "flow\u002Ddsl\u002Dtransformers", @@ -5510,7 +5672,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\mask_columns(" + "$" + "{" + "1:columns" + "}" + ", " + "$" + "{" + "2:mask" + "}" + ")"), boost: 10 - }, { + }, { label: "match_cases", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -5528,7 +5690,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\match_cases(" + "$" + "{" + "1:cases" + "}" + ", " + "$" + "{" + "2:default" + "}" + ")"), boost: 10 - }, { + }, { label: "match_condition", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -5543,7 +5705,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\match_condition(" + "$" + "{" + "1:condition" + "}" + ", " + "$" + "{" + "2:then" + "}" + ")"), boost: 10 - }, { + }, { label: "max", type: "function", detail: "flow\u002Ddsl\u002Daggregating\u002Dfunctions", @@ -5558,7 +5720,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\max(" + "$" + "{" + "1:ref" + "}" + ")"), boost: 10 - }, { + }, { label: "meilisearch_hits_to_rows", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -5576,7 +5738,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Meilisearch\\meilisearch_hits_to_rows()"), boost: 10 - }, { + }, { label: "memory_context_storage", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -5594,7 +5756,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\memory_context_storage(" + "$" + "{" + "1:context" + "}" + ")"), boost: 10 - }, { + }, { label: "memory_filesystem", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -5612,7 +5774,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Filesystem\\DSL\\memory_filesystem()"), boost: 10 - }, { + }, { label: "memory_log_exporter", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -5630,7 +5792,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\memory_log_exporter()"), boost: 10 - }, { + }, { label: "memory_log_processor", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -5648,7 +5810,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\memory_log_processor(" + "$" + "{" + "1:exporter" + "}" + ")"), boost: 10 - }, { + }, { label: "memory_metric_exporter", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -5666,7 +5828,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\memory_metric_exporter()"), boost: 10 - }, { + }, { label: "memory_metric_processor", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -5684,7 +5846,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\memory_metric_processor(" + "$" + "{" + "1:exporter" + "}" + ")"), boost: 10 - }, { + }, { label: "memory_span_exporter", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -5702,7 +5864,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\memory_span_exporter()"), boost: 10 - }, { + }, { label: "memory_span_processor", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -5720,7 +5882,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\memory_span_processor(" + "$" + "{" + "1:exporter" + "}" + ")"), boost: 10 - }, { + }, { label: "merge", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -5738,7 +5900,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\merge(" + "$" + "{" + "1:table" + "}" + ", " + "$" + "{" + "2:alias" + "}" + ")"), boost: 10 - }, { + }, { label: "meter_provider", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -5746,17 +5908,35 @@ const dslFunctions = [ const div = document.createElement("div") div.innerHTML = `
- meter_provider(MetricProcessor $processor, ClockInterface $clock, AggregationTemporality $temporality = Flow\\Telemetry\\Meter\\AggregationTemporality::..., ExemplarFilter $exemplarFilter = Flow\\Telemetry\\Meter\\Exemplar\\TraceBasedExemplarFilter::...) : MeterProvider + meter_provider(MetricProcessor $processor, ClockInterface $clock, AggregationTemporality $temporality = Flow\\Telemetry\\Meter\\AggregationTemporality::..., ExemplarFilter $exemplarFilter = Flow\\Telemetry\\Meter\\Exemplar\\TraceBasedExemplarFilter::..., MetricLimits $limits = Flow\\Telemetry\\Meter\\MetricLimits::...) : MeterProvider
- Create a MeterProvider.
Creates a provider that uses a MetricProcessor for processing metrics.
For void/disabled metrics, pass void_processor().
For memory-based testing, pass memory_processor() with exporters.
@param MetricProcessor $processor The processor for metrics
@param ClockInterface $clock The clock for timestamps
@param AggregationTemporality $temporality Aggregation temporality for metrics
@param ExemplarFilter $exemplarFilter Filter for exemplar sampling (default: TraceBasedExemplarFilter) + Create a MeterProvider.
Creates a provider that uses a MetricProcessor for processing metrics.
For void/disabled metrics, pass void_processor().
For memory-based testing, pass memory_processor() with exporters.
@param MetricProcessor $processor The processor for metrics
@param ClockInterface $clock The clock for timestamps
@param AggregationTemporality $temporality Aggregation temporality for metrics
@param ExemplarFilter $exemplarFilter Filter for exemplar sampling (default: TraceBasedExemplarFilter)
@param MetricLimits $limits Cardinality limits for metric instruments
` return div }, - apply: snippet("\\Flow\\Telemetry\\DSL\\meter_provider(" + "$" + "{" + "1:processor" + "}" + ", " + "$" + "{" + "2:clock" + "}" + ", " + "$" + "{" + "3:temporality" + "}" + ", " + "$" + "{" + "4:exemplarFilter" + "}" + ")"), + apply: snippet("\\Flow\\Telemetry\\DSL\\meter_provider(" + "$" + "{" + "1:processor" + "}" + ", " + "$" + "{" + "2:clock" + "}" + ", " + "$" + "{" + "3:temporality" + "}" + ", " + "$" + "{" + "4:exemplarFilter" + "}" + ", " + "$" + "{" + "5:limits" + "}" + ")"), boost: 10 - }, { + }, { + label: "metric_limits", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ metric_limits(int $cardinalityLimit = 2000) : MetricLimits +
+
+ Create MetricLimits configuration.
MetricLimits controls the maximum cardinality (unique attribute combinations)
per metric instrument, preventing memory exhaustion from high-cardinality attributes.
When the cardinality limit is exceeded, new attribute combinations are aggregated
into an overflow data point with \`otel.metric.overflow: true\` attribute.
Note: Unlike spans and logs, metrics are EXEMPT from attribute count and value
length limits per the OpenTelemetry specification. Only cardinality is limited.
@param int $cardinalityLimit Maximum number of unique attribute combinations per instrument +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\metric_limits(" + "$" + "{" + "1:cardinalityLimit" + "}" + ")"), + boost: 10 + }, { label: "min", type: "function", detail: "flow\u002Ddsl\u002Daggregating\u002Dfunctions", @@ -5771,7 +5951,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\min(" + "$" + "{" + "1:ref" + "}" + ")"), boost: 10 - }, { + }, { label: "mysql_insert_options", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -5789,7 +5969,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\mysql_insert_options(" + "$" + "{" + "1:skip_conflicts" + "}" + ", " + "$" + "{" + "2:upsert" + "}" + ", " + "$" + "{" + "3:update_columns" + "}" + ")"), boost: 10 - }, { + }, { label: "native_local_filesystem", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -5804,7 +5984,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Filesystem\\DSL\\native_local_filesystem()"), boost: 10 - }, { + }, { label: "neq", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -5822,7 +6002,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\neq(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:right" + "}" + ")"), boost: 10 - }, { + }, { label: "not", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -5837,7 +6017,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\not(" + "$" + "{" + "1:value" + "}" + ")"), boost: 10 - }, { + }, { label: "not_regex_imatch", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -5855,7 +6035,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\not_regex_imatch(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:pattern" + "}" + ")"), boost: 10 - }, { + }, { label: "not_regex_match", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -5873,7 +6053,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\not_regex_match(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:pattern" + "}" + ")"), boost: 10 - }, { + }, { label: "now", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -5888,7 +6068,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\now(" + "$" + "{" + "1:time_zone" + "}" + ")"), boost: 10 - }, { + }, { label: "nullif", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -5906,7 +6086,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\nullif(" + "$" + "{" + "1:expr1" + "}" + ", " + "$" + "{" + "2:expr2" + "}" + ")"), boost: 10 - }, { + }, { label: "null_entry", type: "function", detail: "flow\u002Ddsl\u002Dentries", @@ -5924,7 +6104,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\null_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "null_schema", type: "function", detail: "flow\u002Ddsl\u002Dschema", @@ -5939,7 +6119,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\null_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "number_format", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -5954,7 +6134,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\number_format(" + "$" + "{" + "1:value" + "}" + ", " + "$" + "{" + "2:decimals" + "}" + ", " + "$" + "{" + "3:decimal_separator" + "}" + ", " + "$" + "{" + "4:thousands_separator" + "}" + ")"), boost: 10 - }, { + }, { label: "on_conflict_nothing", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -5972,7 +6152,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\on_conflict_nothing(" + "$" + "{" + "1:target" + "}" + ")"), boost: 10 - }, { + }, { label: "on_conflict_update", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -5990,7 +6170,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\on_conflict_update(" + "$" + "{" + "1:target" + "}" + ", " + "$" + "{" + "2:updates" + "}" + ")"), boost: 10 - }, { + }, { label: "optional", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -6005,7 +6185,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\optional(" + "$" + "{" + "1:function" + "}" + ")"), boost: 10 - }, { + }, { label: "order_by", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6023,7 +6203,25 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\order_by(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:direction" + "}" + ", " + "$" + "{" + "3:nulls" + "}" + ")"), boost: 10 - }, { + }, { + label: "os_detector", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ os_detector() : OsDetector +
+
+ Create an OsDetector.
Detects operating system information including os.type, os.name, os.version,
and os.description using PHP\'s php_uname() function. +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\os_detector()"), + boost: 10 + }, { label: "otlp_curl_options", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6041,7 +6239,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Bridge\\Telemetry\\OTLP\\DSL\\otlp_curl_options()"), boost: 10 - }, { + }, { label: "otlp_curl_transport", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6059,7 +6257,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Bridge\\Telemetry\\OTLP\\DSL\\otlp_curl_transport(" + "$" + "{" + "1:endpoint" + "}" + ", " + "$" + "{" + "2:serializer" + "}" + ", " + "$" + "{" + "3:options" + "}" + ")"), boost: 10 - }, { + }, { label: "otlp_grpc_transport", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6077,7 +6275,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Bridge\\Telemetry\\OTLP\\DSL\\otlp_grpc_transport(" + "$" + "{" + "1:endpoint" + "}" + ", " + "$" + "{" + "2:serializer" + "}" + ", " + "$" + "{" + "3:headers" + "}" + ", " + "$" + "{" + "4:insecure" + "}" + ")"), boost: 10 - }, { + }, { label: "otlp_http_transport", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6095,7 +6293,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Bridge\\Telemetry\\OTLP\\DSL\\otlp_http_transport(" + "$" + "{" + "1:client" + "}" + ", " + "$" + "{" + "2:requestFactory" + "}" + ", " + "$" + "{" + "3:streamFactory" + "}" + ", " + "$" + "{" + "4:endpoint" + "}" + ", " + "$" + "{" + "5:serializer" + "}" + ", " + "$" + "{" + "6:headers" + "}" + ")"), boost: 10 - }, { + }, { label: "otlp_json_serializer", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6113,7 +6311,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Bridge\\Telemetry\\OTLP\\DSL\\otlp_json_serializer()"), boost: 10 - }, { + }, { label: "otlp_logger_provider", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6131,7 +6329,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Bridge\\Telemetry\\OTLP\\DSL\\otlp_logger_provider(" + "$" + "{" + "1:processor" + "}" + ", " + "$" + "{" + "2:clock" + "}" + ", " + "$" + "{" + "3:contextStorage" + "}" + ")"), boost: 10 - }, { + }, { label: "otlp_log_exporter", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6149,7 +6347,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Bridge\\Telemetry\\OTLP\\DSL\\otlp_log_exporter(" + "$" + "{" + "1:transport" + "}" + ")"), boost: 10 - }, { + }, { label: "otlp_meter_provider", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6167,7 +6365,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Bridge\\Telemetry\\OTLP\\DSL\\otlp_meter_provider(" + "$" + "{" + "1:processor" + "}" + ", " + "$" + "{" + "2:clock" + "}" + ", " + "$" + "{" + "3:temporality" + "}" + ")"), boost: 10 - }, { + }, { label: "otlp_metric_exporter", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6185,7 +6383,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Bridge\\Telemetry\\OTLP\\DSL\\otlp_metric_exporter(" + "$" + "{" + "1:transport" + "}" + ")"), boost: 10 - }, { + }, { label: "otlp_protobuf_serializer", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6203,7 +6401,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Bridge\\Telemetry\\OTLP\\DSL\\otlp_protobuf_serializer()"), boost: 10 - }, { + }, { label: "otlp_span_exporter", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6221,7 +6419,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Bridge\\Telemetry\\OTLP\\DSL\\otlp_span_exporter(" + "$" + "{" + "1:transport" + "}" + ")"), boost: 10 - }, { + }, { label: "otlp_tracer_provider", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6239,7 +6437,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Bridge\\Telemetry\\OTLP\\DSL\\otlp_tracer_provider(" + "$" + "{" + "1:processor" + "}" + ", " + "$" + "{" + "2:clock" + "}" + ", " + "$" + "{" + "3:sampler" + "}" + ", " + "$" + "{" + "4:contextStorage" + "}" + ")"), boost: 10 - }, { + }, { label: "overwrite", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -6257,7 +6455,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\overwrite()"), boost: 10 - }, { + }, { label: "pagination_key_asc", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6272,7 +6470,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\pagination_key_asc(" + "$" + "{" + "1:column" + "}" + ", " + "$" + "{" + "2:type" + "}" + ")"), boost: 10 - }, { + }, { label: "pagination_key_desc", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6287,7 +6485,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\pagination_key_desc(" + "$" + "{" + "1:column" + "}" + ", " + "$" + "{" + "2:type" + "}" + ")"), boost: 10 - }, { + }, { label: "pagination_key_set", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6302,7 +6500,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\pagination_key_set(" + "$" + "{" + "1:keys" + "}" + ")"), boost: 10 - }, { + }, { label: "param", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6320,7 +6518,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\param(" + "$" + "{" + "1:position" + "}" + ")"), boost: 10 - }, { + }, { label: "partition", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6335,7 +6533,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Filesystem\\DSL\\partition(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ")"), boost: 10 - }, { + }, { label: "partitions", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6350,7 +6548,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Filesystem\\DSL\\partitions(" + "$" + "{" + "1:partition" + "}" + ")"), boost: 10 - }, { + }, { label: "pass_through_log_processor", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6368,7 +6566,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\pass_through_log_processor(" + "$" + "{" + "1:exporter" + "}" + ")"), boost: 10 - }, { + }, { label: "pass_through_metric_processor", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6386,7 +6584,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\pass_through_metric_processor(" + "$" + "{" + "1:exporter" + "}" + ")"), boost: 10 - }, { + }, { label: "pass_through_span_processor", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6404,7 +6602,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\pass_through_span_processor(" + "$" + "{" + "1:exporter" + "}" + ")"), boost: 10 - }, { + }, { label: "path", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6422,7 +6620,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Filesystem\\DSL\\path(" + "$" + "{" + "1:path" + "}" + ", " + "$" + "{" + "2:options" + "}" + ")"), boost: 10 - }, { + }, { label: "path_memory", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6440,7 +6638,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Filesystem\\DSL\\path_memory(" + "$" + "{" + "1:path" + "}" + ", " + "$" + "{" + "2:options" + "}" + ")"), boost: 10 - }, { + }, { label: "path_real", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6458,7 +6656,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Filesystem\\DSL\\path_real(" + "$" + "{" + "1:path" + "}" + ", " + "$" + "{" + "2:options" + "}" + ")"), boost: 10 - }, { + }, { label: "path_stdout", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6476,7 +6674,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Filesystem\\DSL\\path_stdout(" + "$" + "{" + "1:options" + "}" + ")"), boost: 10 - }, { + }, { label: "pgsql_client", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6494,7 +6692,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_client(" + "$" + "{" + "1:params" + "}" + ", " + "$" + "{" + "2:valueConverters" + "}" + ", " + "$" + "{" + "3:mapper" + "}" + ")"), boost: 10 - }, { + }, { label: "pgsql_connection", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6512,7 +6710,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_connection(" + "$" + "{" + "1:connectionString" + "}" + ")"), boost: 10 - }, { + }, { label: "pgsql_connection_dsn", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6530,7 +6728,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_connection_dsn(" + "$" + "{" + "1:dsn" + "}" + ")"), boost: 10 - }, { + }, { label: "pgsql_connection_params", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6548,7 +6746,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_connection_params(" + "$" + "{" + "1:database" + "}" + ", " + "$" + "{" + "2:host" + "}" + ", " + "$" + "{" + "3:port" + "}" + ", " + "$" + "{" + "4:user" + "}" + ", " + "$" + "{" + "5:password" + "}" + ", " + "$" + "{" + "6:options" + "}" + ")"), boost: 10 - }, { + }, { label: "pgsql_mapper", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6566,7 +6764,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_mapper()"), boost: 10 - }, { + }, { label: "pgsql_type_bigint", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6581,7 +6779,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_bigint()"), boost: 10 - }, { + }, { label: "pgsql_type_bit", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6596,7 +6794,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_bit()"), boost: 10 - }, { + }, { label: "pgsql_type_bool", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6611,7 +6809,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_bool()"), boost: 10 - }, { + }, { label: "pgsql_type_boolean", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6626,7 +6824,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_boolean()"), boost: 10 - }, { + }, { label: "pgsql_type_bool_array", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6641,7 +6839,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_bool_array()"), boost: 10 - }, { + }, { label: "pgsql_type_bpchar", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6656,7 +6854,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_bpchar()"), boost: 10 - }, { + }, { label: "pgsql_type_bytea", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6671,7 +6869,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_bytea()"), boost: 10 - }, { + }, { label: "pgsql_type_char", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6686,7 +6884,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_char()"), boost: 10 - }, { + }, { label: "pgsql_type_cidr", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6701,7 +6899,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_cidr()"), boost: 10 - }, { + }, { label: "pgsql_type_date", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6716,7 +6914,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_date()"), boost: 10 - }, { + }, { label: "pgsql_type_double", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6731,7 +6929,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_double()"), boost: 10 - }, { + }, { label: "pgsql_type_float4", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6746,7 +6944,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_float4()"), boost: 10 - }, { + }, { label: "pgsql_type_float4_array", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6761,7 +6959,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_float4_array()"), boost: 10 - }, { + }, { label: "pgsql_type_float8", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6776,7 +6974,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_float8()"), boost: 10 - }, { + }, { label: "pgsql_type_float8_array", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6791,7 +6989,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_float8_array()"), boost: 10 - }, { + }, { label: "pgsql_type_inet", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6806,7 +7004,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_inet()"), boost: 10 - }, { + }, { label: "pgsql_type_int2", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6821,7 +7019,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_int2()"), boost: 10 - }, { + }, { label: "pgsql_type_int2_array", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6836,7 +7034,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_int2_array()"), boost: 10 - }, { + }, { label: "pgsql_type_int4", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6851,7 +7049,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_int4()"), boost: 10 - }, { + }, { label: "pgsql_type_int4_array", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6866,7 +7064,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_int4_array()"), boost: 10 - }, { + }, { label: "pgsql_type_int8", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6881,7 +7079,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_int8()"), boost: 10 - }, { + }, { label: "pgsql_type_int8_array", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6896,7 +7094,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_int8_array()"), boost: 10 - }, { + }, { label: "pgsql_type_integer", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6911,7 +7109,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_integer()"), boost: 10 - }, { + }, { label: "pgsql_type_interval", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6926,7 +7124,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_interval()"), boost: 10 - }, { + }, { label: "pgsql_type_json", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6941,7 +7139,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_json()"), boost: 10 - }, { + }, { label: "pgsql_type_jsonb", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6956,7 +7154,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_jsonb()"), boost: 10 - }, { + }, { label: "pgsql_type_jsonb_array", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6971,7 +7169,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_jsonb_array()"), boost: 10 - }, { + }, { label: "pgsql_type_json_array", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -6986,7 +7184,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_json_array()"), boost: 10 - }, { + }, { label: "pgsql_type_macaddr", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7001,7 +7199,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_macaddr()"), boost: 10 - }, { + }, { label: "pgsql_type_macaddr8", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7016,7 +7214,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_macaddr8()"), boost: 10 - }, { + }, { label: "pgsql_type_money", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7031,7 +7229,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_money()"), boost: 10 - }, { + }, { label: "pgsql_type_numeric", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7046,7 +7244,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_numeric()"), boost: 10 - }, { + }, { label: "pgsql_type_oid", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7061,7 +7259,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_oid()"), boost: 10 - }, { + }, { label: "pgsql_type_real", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7076,7 +7274,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_real()"), boost: 10 - }, { + }, { label: "pgsql_type_smallint", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7091,7 +7289,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_smallint()"), boost: 10 - }, { + }, { label: "pgsql_type_text", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7106,7 +7304,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_text()"), boost: 10 - }, { + }, { label: "pgsql_type_text_array", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7121,7 +7319,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_text_array()"), boost: 10 - }, { + }, { label: "pgsql_type_time", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7136,7 +7334,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_time()"), boost: 10 - }, { + }, { label: "pgsql_type_timestamp", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7151,7 +7349,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_timestamp()"), boost: 10 - }, { + }, { label: "pgsql_type_timestamptz", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7166,7 +7364,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_timestamptz()"), boost: 10 - }, { + }, { label: "pgsql_type_timetz", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7181,7 +7379,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_timetz()"), boost: 10 - }, { + }, { label: "pgsql_type_uuid", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7196,7 +7394,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_uuid()"), boost: 10 - }, { + }, { label: "pgsql_type_uuid_array", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7211,7 +7409,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_uuid_array()"), boost: 10 - }, { + }, { label: "pgsql_type_varbit", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7226,7 +7424,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_varbit()"), boost: 10 - }, { + }, { label: "pgsql_type_varchar", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7241,7 +7439,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_varchar()"), boost: 10 - }, { + }, { label: "pgsql_type_varchar_array", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7256,7 +7454,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_varchar_array()"), boost: 10 - }, { + }, { label: "pgsql_type_xml", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7271,7 +7469,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_xml()"), boost: 10 - }, { + }, { label: "pie_chart", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7286,7 +7484,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\ChartJS\\pie_chart(" + "$" + "{" + "1:label" + "}" + ", " + "$" + "{" + "2:datasets" + "}" + ")"), boost: 10 - }, { + }, { label: "postgresql_insert_options", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7304,7 +7502,43 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\postgresql_insert_options(" + "$" + "{" + "1:skip_conflicts" + "}" + ", " + "$" + "{" + "2:constraint" + "}" + ", " + "$" + "{" + "3:conflict_columns" + "}" + ", " + "$" + "{" + "4:update_columns" + "}" + ")"), boost: 10 - }, { + }, { + label: "postgresql_telemetry_config", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ postgresql_telemetry_config(Telemetry $telemetry, ClockInterface $clock, PostgreSqlTelemetryOptions $options = null) : PostgreSqlTelemetryConfig +
+
+ Create telemetry configuration for PostgreSQL client.
Bundles telemetry instance, clock, and options needed to instrument a PostgreSQL client.
@param Telemetry $telemetry The telemetry instance
@param ClockInterface $clock Clock for timestamps
@param null|PostgreSqlTelemetryOptions $options Telemetry options (default: all enabled)
@example
$config = postgresql_telemetry_config(
telemetry(resource([\'service.name\' => \'my-app\'])),
new SystemClock(),
); +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\postgresql_telemetry_config(" + "$" + "{" + "1:telemetry" + "}" + ", " + "$" + "{" + "2:clock" + "}" + ", " + "$" + "{" + "3:options" + "}" + ")"), + boost: 10 + }, { + label: "postgresql_telemetry_options", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ postgresql_telemetry_options(bool $traceQueries = true, bool $traceTransactions = true, bool $collectMetrics = true, bool $logQueries = false, int $maxQueryLength = 1000, bool $includeParameters = false, int $maxParameters = 10, int $maxParameterLength = 100) : PostgreSqlTelemetryOptions +
+
+ Create telemetry options for PostgreSQL client instrumentation.
Controls which telemetry signals (traces, metrics, logs) are enabled
and how query information is captured.
@param bool $traceQueries Create spans for query execution (default: true)
@param bool $traceTransactions Create spans for transactions (default: true)
@param bool $collectMetrics Collect duration and row count metrics (default: true)
@param bool $logQueries Log executed queries (default: false)
@param null|int $maxQueryLength Maximum query text length in telemetry (default: 1000, null = unlimited)
@param bool $includeParameters Include query parameters in telemetry (default: false, security consideration)
@example
// Default options (traces and metrics enabled)
$options = postgresql_telemetry_options();
// Enable query logging
$options = postgresql_telemetry_options(logQueries: true);
// Disable all but metrics
$options = postgresql_telemetry_options(
traceQueries: false,
traceTransactions: false,
collectMetrics: true,
); +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\postgresql_telemetry_options(" + "$" + "{" + "1:traceQueries" + "}" + ", " + "$" + "{" + "2:traceTransactions" + "}" + ", " + "$" + "{" + "3:collectMetrics" + "}" + ", " + "$" + "{" + "4:logQueries" + "}" + ", " + "$" + "{" + "5:maxQueryLength" + "}" + ", " + "$" + "{" + "6:includeParameters" + "}" + ", " + "$" + "{" + "7:maxParameters" + "}" + ", " + "$" + "{" + "8:maxParameterLength" + "}" + ")"), + boost: 10 + }, { label: "postgresql_update_options", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7322,7 +7556,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\postgresql_update_options(" + "$" + "{" + "1:primary_key_columns" + "}" + ", " + "$" + "{" + "2:update_columns" + "}" + ")"), boost: 10 - }, { + }, { label: "prepare_transaction", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7340,7 +7574,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\prepare_transaction(" + "$" + "{" + "1:transactionId" + "}" + ")"), boost: 10 - }, { + }, { label: "primary_key", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7358,7 +7592,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\primary_key(" + "$" + "{" + "1:columns" + "}" + ")"), boost: 10 - }, { + }, { label: "print_rows", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -7373,7 +7607,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\print_rows(" + "$" + "{" + "1:rows" + "}" + ", " + "$" + "{" + "2:truncate" + "}" + ", " + "$" + "{" + "3:formatter" + "}" + ")"), boost: 10 - }, { + }, { label: "print_schema", type: "function", detail: "flow\u002Ddsl\u002Dschema", @@ -7391,7 +7625,25 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\print_schema(" + "$" + "{" + "1:schema" + "}" + ", " + "$" + "{" + "2:formatter" + "}" + ")"), boost: 10 - }, { + }, { + label: "process_detector", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ process_detector() : ProcessDetector +
+
+ Create a ProcessDetector.
Detects process information including process.pid, process.executable.path,
process.runtime.name (PHP), process.runtime.version, process.command,
and process.owner (on POSIX systems). +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\process_detector()"), + boost: 10 + }, { label: "propagation_context", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -7409,7 +7661,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\propagation_context(" + "$" + "{" + "1:spanContext" + "}" + ", " + "$" + "{" + "2:baggage" + "}" + ")"), boost: 10 - }, { + }, { label: "protocol", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7424,7 +7676,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Filesystem\\DSL\\protocol(" + "$" + "{" + "1:protocol" + "}" + ")"), boost: 10 - }, { + }, { label: "psr7_request_carrier", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7439,7 +7691,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Bridge\\Psr7\\Telemetry\\DSL\\psr7_request_carrier(" + "$" + "{" + "1:request" + "}" + ")"), boost: 10 - }, { + }, { label: "psr7_response_carrier", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7454,7 +7706,22 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Bridge\\Psr7\\Telemetry\\DSL\\psr7_response_carrier(" + "$" + "{" + "1:response" + "}" + ")"), boost: 10 - }, { + }, { + label: "psr18_traceable_client", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ psr18_traceable_client(ClientInterface $client, Telemetry $telemetry) : PSR18TraceableClient +
+ ` + return div + }, + apply: snippet("\\Flow\\Bridge\\Psr18\\Telemetry\\DSL\\psr18_traceable_client(" + "$" + "{" + "1:client" + "}" + ", " + "$" + "{" + "2:telemetry" + "}" + ")"), + boost: 10 + }, { label: "random_string", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -7469,7 +7736,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\random_string(" + "$" + "{" + "1:length" + "}" + ", " + "$" + "{" + "2:generator" + "}" + ")"), boost: 10 - }, { + }, { label: "rank", type: "function", detail: "flow\u002Ddsl\u002Dwindow\u002Dfunctions", @@ -7484,7 +7751,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\rank()"), boost: 10 - }, { + }, { label: "raw_cond", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7502,7 +7769,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\raw_cond(" + "$" + "{" + "1:sql" + "}" + ")"), boost: 10 - }, { + }, { label: "raw_expr", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7520,7 +7787,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\raw_expr(" + "$" + "{" + "1:sql" + "}" + ")"), boost: 10 - }, { + }, { label: "reassign_owned", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7538,7 +7805,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\reassign_owned(" + "$" + "{" + "1:roles" + "}" + ")"), boost: 10 - }, { + }, { label: "ref", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -7553,7 +7820,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\ref(" + "$" + "{" + "1:entry" + "}" + ")"), boost: 10 - }, { + }, { label: "refresh_materialized_view", type: "function", detail: "flow\u002Ddsl\u002Dschema", @@ -7571,7 +7838,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\refresh_materialized_view(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:schema" + "}" + ")"), boost: 10 - }, { + }, { label: "refs", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -7586,7 +7853,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\refs(" + "$" + "{" + "1:entries" + "}" + ")"), boost: 10 - }, { + }, { label: "ref_action_cascade", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7604,7 +7871,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\ref_action_cascade()"), boost: 10 - }, { + }, { label: "ref_action_no_action", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7622,7 +7889,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\ref_action_no_action()"), boost: 10 - }, { + }, { label: "ref_action_restrict", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7640,7 +7907,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\ref_action_restrict()"), boost: 10 - }, { + }, { label: "ref_action_set_default", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7658,7 +7925,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\ref_action_set_default()"), boost: 10 - }, { + }, { label: "ref_action_set_null", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7676,7 +7943,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\ref_action_set_null()"), boost: 10 - }, { + }, { label: "regex", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -7691,7 +7958,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\regex(" + "$" + "{" + "1:pattern" + "}" + ", " + "$" + "{" + "2:subject" + "}" + ", " + "$" + "{" + "3:flags" + "}" + ", " + "$" + "{" + "4:offset" + "}" + ")"), boost: 10 - }, { + }, { label: "regex_all", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -7706,7 +7973,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\regex_all(" + "$" + "{" + "1:pattern" + "}" + ", " + "$" + "{" + "2:subject" + "}" + ", " + "$" + "{" + "3:flags" + "}" + ", " + "$" + "{" + "4:offset" + "}" + ")"), boost: 10 - }, { + }, { label: "regex_imatch", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7724,7 +7991,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\regex_imatch(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:pattern" + "}" + ")"), boost: 10 - }, { + }, { label: "regex_match", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -7739,7 +8006,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\regex_match(" + "$" + "{" + "1:pattern" + "}" + ", " + "$" + "{" + "2:subject" + "}" + ", " + "$" + "{" + "3:flags" + "}" + ", " + "$" + "{" + "4:offset" + "}" + ")"), boost: 10 - }, { + }, { label: "regex_match", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7757,7 +8024,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\regex_match(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:pattern" + "}" + ")"), boost: 10 - }, { + }, { label: "regex_match_all", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -7772,7 +8039,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\regex_match_all(" + "$" + "{" + "1:pattern" + "}" + ", " + "$" + "{" + "2:subject" + "}" + ", " + "$" + "{" + "3:flags" + "}" + ", " + "$" + "{" + "4:offset" + "}" + ")"), boost: 10 - }, { + }, { label: "regex_replace", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -7787,7 +8054,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\regex_replace(" + "$" + "{" + "1:pattern" + "}" + ", " + "$" + "{" + "2:replacement" + "}" + ", " + "$" + "{" + "3:subject" + "}" + ", " + "$" + "{" + "4:limit" + "}" + ")"), boost: 10 - }, { + }, { label: "reindex_database", type: "function", detail: "flow\u002Ddsl\u002Dschema", @@ -7805,7 +8072,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\reindex_database(" + "$" + "{" + "1:name" + "}" + ")"), boost: 10 - }, { + }, { label: "reindex_index", type: "function", detail: "flow\u002Ddsl\u002Dschema", @@ -7823,7 +8090,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\reindex_index(" + "$" + "{" + "1:name" + "}" + ")"), boost: 10 - }, { + }, { label: "reindex_schema", type: "function", detail: "flow\u002Ddsl\u002Dschema", @@ -7841,7 +8108,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\reindex_schema(" + "$" + "{" + "1:name" + "}" + ")"), boost: 10 - }, { + }, { label: "reindex_table", type: "function", detail: "flow\u002Ddsl\u002Dschema", @@ -7859,7 +8126,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\reindex_table(" + "$" + "{" + "1:name" + "}" + ")"), boost: 10 - }, { + }, { label: "release_savepoint", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7877,7 +8144,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\release_savepoint(" + "$" + "{" + "1:name" + "}" + ")"), boost: 10 - }, { + }, { label: "rename_replace", type: "function", detail: "flow\u002Ddsl\u002Dtransformers", @@ -7895,7 +8162,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\rename_replace(" + "$" + "{" + "1:search" + "}" + ", " + "$" + "{" + "2:replace" + "}" + ")"), boost: 10 - }, { + }, { label: "rename_style", type: "function", detail: "flow\u002Ddsl\u002Dtransformers", @@ -7910,7 +8177,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\rename_style(" + "$" + "{" + "1:style" + "}" + ")"), boost: 10 - }, { + }, { label: "reset_role", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7928,7 +8195,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\reset_role()"), boost: 10 - }, { + }, { label: "resource", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -7946,7 +8213,25 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\resource(" + "$" + "{" + "1:attributes" + "}" + ")"), boost: 10 - }, { + }, { + label: "resource_detector", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ resource_detector(array $detectors = []) : ChainDetector +
+
+ Create a resource detector chain.
When no detectors are provided, uses the default detector chain:
1. OsDetector - Operating system information
2. HostDetector - Host information
3. ProcessDetector - Process information
4. ComposerDetector - Service information from Composer
5. EnvironmentDetector - Environment variable overrides (highest precedence)
When detectors are provided, uses only those detectors.
@param array $detectors Optional custom detectors (empty = use defaults) +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\resource_detector(" + "$" + "{" + "1:detectors" + "}" + ")"), + boost: 10 + }, { label: "retry_any_throwable", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7961,7 +8246,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\retry_any_throwable(" + "$" + "{" + "1:limit" + "}" + ")"), boost: 10 - }, { + }, { label: "retry_on_exception_types", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7979,7 +8264,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\retry_on_exception_types(" + "$" + "{" + "1:exception_types" + "}" + ", " + "$" + "{" + "2:limit" + "}" + ")"), boost: 10 - }, { + }, { label: "returning", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -7997,7 +8282,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\returning(" + "$" + "{" + "1:expressions" + "}" + ")"), boost: 10 - }, { + }, { label: "returning_all", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8015,7 +8300,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\returning_all()"), boost: 10 - }, { + }, { label: "revoke", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8033,7 +8318,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\revoke(" + "$" + "{" + "1:privileges" + "}" + ")"), boost: 10 - }, { + }, { label: "revoke_role", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8051,7 +8336,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\revoke_role(" + "$" + "{" + "1:roles" + "}" + ")"), boost: 10 - }, { + }, { label: "rollback", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8069,7 +8354,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\rollback()"), boost: 10 - }, { + }, { label: "rollback_prepared", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8087,7 +8372,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\rollback_prepared(" + "$" + "{" + "1:transactionId" + "}" + ")"), boost: 10 - }, { + }, { label: "round", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -8102,7 +8387,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\round(" + "$" + "{" + "1:value" + "}" + ", " + "$" + "{" + "2:precision" + "}" + ", " + "$" + "{" + "3:mode" + "}" + ")"), boost: 10 - }, { + }, { label: "row", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -8120,7 +8405,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\row(" + "$" + "{" + "1:entry" + "}" + ")"), boost: 10 - }, { + }, { label: "rows", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -8135,7 +8420,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\rows(" + "$" + "{" + "1:row" + "}" + ")"), boost: 10 - }, { + }, { label: "rows_partitioned", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -8153,7 +8438,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\rows_partitioned(" + "$" + "{" + "1:rows" + "}" + ", " + "$" + "{" + "2:partitions" + "}" + ")"), boost: 10 - }, { + }, { label: "row_expr", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8171,7 +8456,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\row_expr(" + "$" + "{" + "1:elements" + "}" + ")"), boost: 10 - }, { + }, { label: "row_number", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -8186,7 +8471,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\row_number()"), boost: 10 - }, { + }, { label: "sanitize", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -8201,7 +8486,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\sanitize(" + "$" + "{" + "1:value" + "}" + ", " + "$" + "{" + "2:placeholder" + "}" + ", " + "$" + "{" + "3:skipCharacters" + "}" + ")"), boost: 10 - }, { + }, { label: "savepoint", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8219,7 +8504,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\savepoint(" + "$" + "{" + "1:name" + "}" + ")"), boost: 10 - }, { + }, { label: "save_mode_append", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -8234,7 +8519,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\save_mode_append()"), boost: 10 - }, { + }, { label: "save_mode_exception_if_exists", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -8249,7 +8534,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\save_mode_exception_if_exists()"), boost: 10 - }, { + }, { label: "save_mode_ignore", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -8264,7 +8549,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\save_mode_ignore()"), boost: 10 - }, { + }, { label: "save_mode_overwrite", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -8279,7 +8564,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\save_mode_overwrite()"), boost: 10 - }, { + }, { label: "schema", type: "function", detail: "flow\u002Ddsl\u002Dschema", @@ -8297,7 +8582,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\schema(" + "$" + "{" + "1:definitions" + "}" + ")"), boost: 10 - }, { + }, { label: "schema_evolving_validator", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8312,7 +8597,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\schema_evolving_validator()"), boost: 10 - }, { + }, { label: "schema_from_json", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8330,7 +8615,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\schema_from_json(" + "$" + "{" + "1:schema" + "}" + ")"), boost: 10 - }, { + }, { label: "schema_from_parquet", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8345,7 +8630,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Parquet\\schema_from_parquet(" + "$" + "{" + "1:schema" + "}" + ")"), boost: 10 - }, { + }, { label: "schema_metadata", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8363,7 +8648,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\schema_metadata(" + "$" + "{" + "1:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "schema_selective_validator", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8378,7 +8663,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\schema_selective_validator()"), boost: 10 - }, { + }, { label: "schema_strict_validator", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8393,7 +8678,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\schema_strict_validator()"), boost: 10 - }, { + }, { label: "schema_to_ascii", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8411,7 +8696,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\schema_to_ascii(" + "$" + "{" + "1:schema" + "}" + ", " + "$" + "{" + "2:formatter" + "}" + ")"), boost: 10 - }, { + }, { label: "schema_to_json", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8429,7 +8714,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\schema_to_json(" + "$" + "{" + "1:schema" + "}" + ", " + "$" + "{" + "2:pretty" + "}" + ")"), boost: 10 - }, { + }, { label: "schema_to_parquet", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8444,7 +8729,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Parquet\\schema_to_parquet(" + "$" + "{" + "1:schema" + "}" + ")"), boost: 10 - }, { + }, { label: "schema_to_php", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8462,7 +8747,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\schema_to_php(" + "$" + "{" + "1:schema" + "}" + ", " + "$" + "{" + "2:valueFormatter" + "}" + ", " + "$" + "{" + "3:typeFormatter" + "}" + ")"), boost: 10 - }, { + }, { label: "schema_validate", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8480,7 +8765,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\schema_validate(" + "$" + "{" + "1:expected" + "}" + ", " + "$" + "{" + "2:given" + "}" + ", " + "$" + "{" + "3:validator" + "}" + ")"), boost: 10 - }, { + }, { label: "select", type: "function", detail: "flow\u002Ddsl\u002Dtransformers", @@ -8495,7 +8780,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\select(" + "$" + "{" + "1:entries" + "}" + ")"), boost: 10 - }, { + }, { label: "select", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8513,7 +8798,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\select(" + "$" + "{" + "1:expressions" + "}" + ")"), boost: 10 - }, { + }, { label: "set_role", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8531,7 +8816,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\set_role(" + "$" + "{" + "1:role" + "}" + ")"), boost: 10 - }, { + }, { label: "set_session_transaction", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8549,7 +8834,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\set_session_transaction()"), boost: 10 - }, { + }, { label: "set_transaction", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8567,7 +8852,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\set_transaction()"), boost: 10 - }, { + }, { label: "severity_filtering_log_processor", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8585,7 +8870,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\severity_filtering_log_processor(" + "$" + "{" + "1:processor" + "}" + ", " + "$" + "{" + "2:minimumSeverity" + "}" + ")"), boost: 10 - }, { + }, { label: "severity_mapper", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8603,7 +8888,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Bridge\\Monolog\\Telemetry\\DSL\\severity_mapper(" + "$" + "{" + "1:customMapping" + "}" + ")"), boost: 10 - }, { + }, { label: "similar_to", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8621,7 +8906,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\similar_to(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:pattern" + "}" + ")"), boost: 10 - }, { + }, { label: "size", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -8636,7 +8921,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\size(" + "$" + "{" + "1:value" + "}" + ")"), boost: 10 - }, { + }, { label: "skip_rows_handler", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -8651,7 +8936,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\skip_rows_handler()"), boost: 10 - }, { + }, { label: "span_context", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -8669,7 +8954,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\span_context(" + "$" + "{" + "1:traceId" + "}" + ", " + "$" + "{" + "2:spanId" + "}" + ", " + "$" + "{" + "3:parentSpanId" + "}" + ")"), boost: 10 - }, { + }, { label: "span_event", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -8687,7 +8972,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\span_event(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:timestamp" + "}" + ", " + "$" + "{" + "3:attributes" + "}" + ")"), boost: 10 - }, { + }, { label: "span_id", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -8705,7 +8990,25 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\span_id(" + "$" + "{" + "1:hex" + "}" + ")"), boost: 10 - }, { + }, { + label: "span_limits", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ span_limits(int $attributeCountLimit = 128, int $eventCountLimit = 128, int $linkCountLimit = 128, int $attributePerEventCountLimit = 128, int $attributePerLinkCountLimit = 128, int $attributeValueLengthLimit = null) : SpanLimits +
+
+ Create SpanLimits configuration.
SpanLimits controls the maximum amount of data a span can collect,
preventing unbounded memory growth and ensuring reasonable span sizes.
@param int $attributeCountLimit Maximum number of attributes per span
@param int $eventCountLimit Maximum number of events per span
@param int $linkCountLimit Maximum number of links per span
@param int $attributePerEventCountLimit Maximum number of attributes per event
@param int $attributePerLinkCountLimit Maximum number of attributes per link
@param null|int $attributeValueLengthLimit Maximum length for string attribute values (null = unlimited) +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\span_limits(" + "$" + "{" + "1:attributeCountLimit" + "}" + ", " + "$" + "{" + "2:eventCountLimit" + "}" + ", " + "$" + "{" + "3:linkCountLimit" + "}" + ", " + "$" + "{" + "4:attributePerEventCountLimit" + "}" + ", " + "$" + "{" + "5:attributePerLinkCountLimit" + "}" + ", " + "$" + "{" + "6:attributeValueLengthLimit" + "}" + ")"), + boost: 10 + }, { label: "span_link", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -8723,7 +9026,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\span_link(" + "$" + "{" + "1:context" + "}" + ", " + "$" + "{" + "2:attributes" + "}" + ")"), boost: 10 - }, { + }, { label: "split", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -8738,7 +9041,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\split(" + "$" + "{" + "1:value" + "}" + ", " + "$" + "{" + "2:separator" + "}" + ", " + "$" + "{" + "3:limit" + "}" + ")"), boost: 10 - }, { + }, { label: "sprintf", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -8753,7 +9056,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\sprintf(" + "$" + "{" + "1:format" + "}" + ", " + "$" + "{" + "2:args" + "}" + ")"), boost: 10 - }, { + }, { label: "sqlite_insert_options", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8771,7 +9074,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\sqlite_insert_options(" + "$" + "{" + "1:skip_conflicts" + "}" + ", " + "$" + "{" + "2:conflict_columns" + "}" + ", " + "$" + "{" + "3:update_columns" + "}" + ")"), boost: 10 - }, { + }, { label: "sql_analyze", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8789,7 +9092,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_analyze(" + "$" + "{" + "1:plan" + "}" + ")"), boost: 10 - }, { + }, { label: "sql_deparse", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8807,7 +9110,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_deparse(" + "$" + "{" + "1:query" + "}" + ", " + "$" + "{" + "2:options" + "}" + ")"), boost: 10 - }, { + }, { label: "sql_deparse_options", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8825,7 +9128,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_deparse_options()"), boost: 10 - }, { + }, { label: "sql_explain_config", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8843,7 +9146,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_explain_config(" + "$" + "{" + "1:analyze" + "}" + ", " + "$" + "{" + "2:verbose" + "}" + ", " + "$" + "{" + "3:costs" + "}" + ", " + "$" + "{" + "4:buffers" + "}" + ", " + "$" + "{" + "5:timing" + "}" + ", " + "$" + "{" + "6:format" + "}" + ")"), boost: 10 - }, { + }, { label: "sql_explain_modifier", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8861,7 +9164,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_explain_modifier(" + "$" + "{" + "1:config" + "}" + ")"), boost: 10 - }, { + }, { label: "sql_explain_parse", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8879,7 +9182,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_explain_parse(" + "$" + "{" + "1:jsonOutput" + "}" + ")"), boost: 10 - }, { + }, { label: "sql_fingerprint", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8897,7 +9200,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_fingerprint(" + "$" + "{" + "1:sql" + "}" + ")"), boost: 10 - }, { + }, { label: "sql_format", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8915,7 +9218,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_format(" + "$" + "{" + "1:sql" + "}" + ", " + "$" + "{" + "2:options" + "}" + ")"), boost: 10 - }, { + }, { label: "sql_keyset_column", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8933,7 +9236,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_keyset_column(" + "$" + "{" + "1:column" + "}" + ", " + "$" + "{" + "2:order" + "}" + ")"), boost: 10 - }, { + }, { label: "sql_normalize", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8951,7 +9254,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_normalize(" + "$" + "{" + "1:sql" + "}" + ")"), boost: 10 - }, { + }, { label: "sql_normalize_utility", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8969,7 +9272,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_normalize_utility(" + "$" + "{" + "1:sql" + "}" + ")"), boost: 10 - }, { + }, { label: "sql_parse", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8984,7 +9287,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_parse(" + "$" + "{" + "1:sql" + "}" + ")"), boost: 10 - }, { + }, { label: "sql_parser", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -8999,7 +9302,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_parser()"), boost: 10 - }, { + }, { label: "sql_query_columns", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -9017,7 +9320,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_query_columns(" + "$" + "{" + "1:query" + "}" + ")"), boost: 10 - }, { + }, { label: "sql_query_depth", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -9035,7 +9338,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_query_depth(" + "$" + "{" + "1:sql" + "}" + ")"), boost: 10 - }, { + }, { label: "sql_query_functions", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -9053,7 +9356,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_query_functions(" + "$" + "{" + "1:query" + "}" + ")"), boost: 10 - }, { + }, { label: "sql_query_order_by", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -9071,7 +9374,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_query_order_by(" + "$" + "{" + "1:query" + "}" + ")"), boost: 10 - }, { + }, { label: "sql_query_tables", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -9089,7 +9392,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_query_tables(" + "$" + "{" + "1:query" + "}" + ")"), boost: 10 - }, { + }, { label: "sql_split", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -9107,7 +9410,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_split(" + "$" + "{" + "1:sql" + "}" + ")"), boost: 10 - }, { + }, { label: "sql_summary", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -9125,7 +9428,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_summary(" + "$" + "{" + "1:sql" + "}" + ", " + "$" + "{" + "2:options" + "}" + ", " + "$" + "{" + "3:truncateLimit" + "}" + ")"), boost: 10 - }, { + }, { label: "sql_to_count_query", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -9143,7 +9446,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_to_count_query(" + "$" + "{" + "1:sql" + "}" + ")"), boost: 10 - }, { + }, { label: "sql_to_explain", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -9161,7 +9464,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_to_explain(" + "$" + "{" + "1:sql" + "}" + ", " + "$" + "{" + "2:config" + "}" + ")"), boost: 10 - }, { + }, { label: "sql_to_keyset_query", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -9179,7 +9482,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_to_keyset_query(" + "$" + "{" + "1:sql" + "}" + ", " + "$" + "{" + "2:limit" + "}" + ", " + "$" + "{" + "3:columns" + "}" + ", " + "$" + "{" + "4:cursor" + "}" + ")"), boost: 10 - }, { + }, { label: "sql_to_limited_query", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -9197,7 +9500,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_to_limited_query(" + "$" + "{" + "1:sql" + "}" + ", " + "$" + "{" + "2:limit" + "}" + ")"), boost: 10 - }, { + }, { label: "sql_to_paginated_query", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -9215,7 +9518,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_to_paginated_query(" + "$" + "{" + "1:sql" + "}" + ", " + "$" + "{" + "2:limit" + "}" + ", " + "$" + "{" + "3:offset" + "}" + ")"), boost: 10 - }, { + }, { label: "star", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -9233,7 +9536,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\star(" + "$" + "{" + "1:table" + "}" + ")"), boost: 10 - }, { + }, { label: "stdout_filesystem", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -9251,7 +9554,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Filesystem\\DSL\\stdout_filesystem()"), boost: 10 - }, { + }, { label: "string_agg", type: "function", detail: "flow\u002Ddsl\u002Daggregating\u002Dfunctions", @@ -9266,7 +9569,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\string_agg(" + "$" + "{" + "1:ref" + "}" + ", " + "$" + "{" + "2:separator" + "}" + ", " + "$" + "{" + "3:sort" + "}" + ")"), boost: 10 - }, { + }, { label: "string_entry", type: "function", detail: "flow\u002Ddsl\u002Dentries", @@ -9284,7 +9587,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\string_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "string_schema", type: "function", detail: "flow\u002Ddsl\u002Dschema", @@ -9299,7 +9602,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\string_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:nullable" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "structure_entry", type: "function", detail: "flow\u002Ddsl\u002Dentries", @@ -9317,7 +9620,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\structure_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:type" + "}" + ", " + "$" + "{" + "4:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "structure_ref", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -9332,7 +9635,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\structure_ref(" + "$" + "{" + "1:entry" + "}" + ")"), boost: 10 - }, { + }, { label: "structure_schema", type: "function", detail: "flow\u002Ddsl\u002Dschema", @@ -9350,7 +9653,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\structure_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:type" + "}" + ", " + "$" + "{" + "3:nullable" + "}" + ", " + "$" + "{" + "4:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "struct_entry", type: "function", detail: "flow\u002Ddsl\u002Dentries", @@ -9368,7 +9671,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\struct_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:type" + "}" + ", " + "$" + "{" + "4:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "struct_schema", type: "function", detail: "flow\u002Ddsl\u002Dschema", @@ -9386,7 +9689,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\struct_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:type" + "}" + ", " + "$" + "{" + "3:nullable" + "}" + ", " + "$" + "{" + "4:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "str_entry", type: "function", detail: "flow\u002Ddsl\u002Dentries", @@ -9404,7 +9707,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\str_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "str_schema", type: "function", detail: "flow\u002Ddsl\u002Dschema", @@ -9422,7 +9725,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\str_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:nullable" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "sub_select", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -9440,7 +9743,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\sub_select(" + "$" + "{" + "1:query" + "}" + ")"), boost: 10 - }, { + }, { label: "sum", type: "function", detail: "flow\u002Ddsl\u002Daggregating\u002Dfunctions", @@ -9455,7 +9758,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\sum(" + "$" + "{" + "1:ref" + "}" + ")"), boost: 10 - }, { + }, { label: "superglobal_carrier", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -9473,7 +9776,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\superglobal_carrier()"), boost: 10 - }, { + }, { label: "symfony_request_carrier", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -9488,7 +9791,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Bridge\\Symfony\\HttpFoundationTelemetry\\DSL\\symfony_request_carrier(" + "$" + "{" + "1:request" + "}" + ")"), boost: 10 - }, { + }, { label: "symfony_response_carrier", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -9503,7 +9806,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Bridge\\Symfony\\HttpFoundationTelemetry\\DSL\\symfony_response_carrier(" + "$" + "{" + "1:response" + "}" + ")"), boost: 10 - }, { + }, { label: "table", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -9521,7 +9824,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\table(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:schema" + "}" + ")"), boost: 10 - }, { + }, { label: "table_func", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -9539,7 +9842,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\table_func(" + "$" + "{" + "1:function" + "}" + ", " + "$" + "{" + "2:withOrdinality" + "}" + ")"), boost: 10 - }, { + }, { label: "table_schema_to_flow_schema", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -9557,7 +9860,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\table_schema_to_flow_schema(" + "$" + "{" + "1:table" + "}" + ", " + "$" + "{" + "2:types_map" + "}" + ")"), boost: 10 - }, { + }, { label: "telemetry", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -9575,7 +9878,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\telemetry(" + "$" + "{" + "1:resource" + "}" + ", " + "$" + "{" + "2:tracerProvider" + "}" + ", " + "$" + "{" + "3:meterProvider" + "}" + ", " + "$" + "{" + "4:loggerProvider" + "}" + ")"), boost: 10 - }, { + }, { label: "telemetry_handler", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -9593,7 +9896,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Bridge\\Monolog\\Telemetry\\DSL\\telemetry_handler(" + "$" + "{" + "1:logger" + "}" + ", " + "$" + "{" + "2:converter" + "}" + ", " + "$" + "{" + "3:level" + "}" + ", " + "$" + "{" + "4:bubble" + "}" + ")"), boost: 10 - }, { + }, { label: "telemetry_options", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -9601,14 +9904,14 @@ const dslFunctions = [ const div = document.createElement("div") div.innerHTML = `
- telemetry_options(bool $trace_loading = false, bool $trace_transformations = false, bool $collect_metrics = false) : TelemetryOptions + telemetry_options(bool $trace_loading = false, bool $trace_transformations = false, bool $trace_cache = false, bool $collect_metrics = false, FilesystemTelemetryOptions $filesystem = null) : TelemetryOptions
` return div }, - apply: snippet("\\Flow\\ETL\\DSL\\telemetry_options(" + "$" + "{" + "1:trace_loading" + "}" + ", " + "$" + "{" + "2:trace_transformations" + "}" + ", " + "$" + "{" + "3:collect_metrics" + "}" + ")"), + apply: snippet("\\Flow\\ETL\\DSL\\telemetry_options(" + "$" + "{" + "1:trace_loading" + "}" + ", " + "$" + "{" + "2:trace_transformations" + "}" + ", " + "$" + "{" + "3:trace_cache" + "}" + ", " + "$" + "{" + "4:collect_metrics" + "}" + ", " + "$" + "{" + "5:filesystem" + "}" + ")"), boost: 10 - }, { + }, { label: "text_search_match", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -9626,7 +9929,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\text_search_match(" + "$" + "{" + "1:document" + "}" + ", " + "$" + "{" + "2:query" + "}" + ")"), boost: 10 - }, { + }, { label: "throw_error_handler", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -9641,7 +9944,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\throw_error_handler()"), boost: 10 - }, { + }, { label: "time_entry", type: "function", detail: "flow\u002Ddsl\u002Dentries", @@ -9659,7 +9962,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\time_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "time_schema", type: "function", detail: "flow\u002Ddsl\u002Dschema", @@ -9674,7 +9977,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\time_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:nullable" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "to_array", type: "function", detail: "flow\u002Ddsl\u002Dloaders", @@ -9692,7 +9995,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\to_array(" + "$" + "{" + "1:array" + "}" + ")"), boost: 10 - }, { + }, { label: "to_avro", type: "function", detail: "flow\u002Ddsl\u002Dloaders", @@ -9707,7 +10010,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\Adapter\\Avro\\to_avro(" + "$" + "{" + "1:path" + "}" + ", " + "$" + "{" + "2:schema" + "}" + ")"), boost: 10 - }, { + }, { label: "to_branch", type: "function", detail: "flow\u002Ddsl\u002Dloaders", @@ -9722,7 +10025,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\to_branch(" + "$" + "{" + "1:condition" + "}" + ", " + "$" + "{" + "2:loader" + "}" + ")"), boost: 10 - }, { + }, { label: "to_callable", type: "function", detail: "flow\u002Ddsl\u002Dloaders", @@ -9737,7 +10040,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\to_callable(" + "$" + "{" + "1:callable" + "}" + ")"), boost: 10 - }, { + }, { label: "to_chartjs", type: "function", detail: "flow\u002Ddsl\u002Dloaders", @@ -9752,7 +10055,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\ChartJS\\to_chartjs(" + "$" + "{" + "1:type" + "}" + ")"), boost: 10 - }, { + }, { label: "to_chartjs_file", type: "function", detail: "flow\u002Ddsl\u002Dloaders", @@ -9770,7 +10073,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\ChartJS\\to_chartjs_file(" + "$" + "{" + "1:type" + "}" + ", " + "$" + "{" + "2:output" + "}" + ", " + "$" + "{" + "3:template" + "}" + ")"), boost: 10 - }, { + }, { label: "to_chartjs_var", type: "function", detail: "flow\u002Ddsl\u002Dloaders", @@ -9788,7 +10091,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\ChartJS\\to_chartjs_var(" + "$" + "{" + "1:type" + "}" + ", " + "$" + "{" + "2:output" + "}" + ")"), boost: 10 - }, { + }, { label: "to_csv", type: "function", detail: "flow\u002Ddsl\u002Dloaders", @@ -9806,7 +10109,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\CSV\\to_csv(" + "$" + "{" + "1:uri" + "}" + ", " + "$" + "{" + "2:with_header" + "}" + ", " + "$" + "{" + "3:separator" + "}" + ", " + "$" + "{" + "4:enclosure" + "}" + ", " + "$" + "{" + "5:escape" + "}" + ", " + "$" + "{" + "6:new_line_separator" + "}" + ", " + "$" + "{" + "7:datetime_format" + "}" + ")"), boost: 10 - }, { + }, { label: "to_date", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -9821,7 +10124,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\to_date(" + "$" + "{" + "1:ref" + "}" + ", " + "$" + "{" + "2:format" + "}" + ", " + "$" + "{" + "3:timeZone" + "}" + ")"), boost: 10 - }, { + }, { label: "to_date_time", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -9836,7 +10139,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\to_date_time(" + "$" + "{" + "1:ref" + "}" + ", " + "$" + "{" + "2:format" + "}" + ", " + "$" + "{" + "3:timeZone" + "}" + ")"), boost: 10 - }, { + }, { label: "to_dbal_schema_table", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -9854,7 +10157,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\to_dbal_schema_table(" + "$" + "{" + "1:schema" + "}" + ", " + "$" + "{" + "2:table_name" + "}" + ", " + "$" + "{" + "3:table_options" + "}" + ", " + "$" + "{" + "4:types_map" + "}" + ")"), boost: 10 - }, { + }, { label: "to_dbal_table_delete", type: "function", detail: "flow\u002Ddsl\u002Dloaders", @@ -9872,7 +10175,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\to_dbal_table_delete(" + "$" + "{" + "1:connection" + "}" + ", " + "$" + "{" + "2:table" + "}" + ")"), boost: 10 - }, { + }, { label: "to_dbal_table_insert", type: "function", detail: "flow\u002Ddsl\u002Dloaders", @@ -9890,7 +10193,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\to_dbal_table_insert(" + "$" + "{" + "1:connection" + "}" + ", " + "$" + "{" + "2:table" + "}" + ", " + "$" + "{" + "3:options" + "}" + ")"), boost: 10 - }, { + }, { label: "to_dbal_table_update", type: "function", detail: "flow\u002Ddsl\u002Dloaders", @@ -9908,7 +10211,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\to_dbal_table_update(" + "$" + "{" + "1:connection" + "}" + ", " + "$" + "{" + "2:table" + "}" + ", " + "$" + "{" + "3:options" + "}" + ")"), boost: 10 - }, { + }, { label: "to_dbal_transaction", type: "function", detail: "flow\u002Ddsl\u002Dloaders", @@ -9926,7 +10229,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\to_dbal_transaction(" + "$" + "{" + "1:connection" + "}" + ", " + "$" + "{" + "2:loaders" + "}" + ")"), boost: 10 - }, { + }, { label: "to_entry", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -9944,7 +10247,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\to_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:data" + "}" + ", " + "$" + "{" + "3:entryFactory" + "}" + ")"), boost: 10 - }, { + }, { label: "to_es_bulk_index", type: "function", detail: "flow\u002Ddsl\u002Dloaders", @@ -9962,7 +10265,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Elasticsearch\\to_es_bulk_index(" + "$" + "{" + "1:config" + "}" + ", " + "$" + "{" + "2:index" + "}" + ", " + "$" + "{" + "3:id_factory" + "}" + ", " + "$" + "{" + "4:parameters" + "}" + ")"), boost: 10 - }, { + }, { label: "to_es_bulk_update", type: "function", detail: "flow\u002Ddsl\u002Dloaders", @@ -9980,7 +10283,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Elasticsearch\\to_es_bulk_update(" + "$" + "{" + "1:config" + "}" + ", " + "$" + "{" + "2:index" + "}" + ", " + "$" + "{" + "3:id_factory" + "}" + ", " + "$" + "{" + "4:parameters" + "}" + ")"), boost: 10 - }, { + }, { label: "to_excel", type: "function", detail: "flow\u002Ddsl\u002Dloaders", @@ -9995,7 +10298,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Excel\\DSL\\to_excel(" + "$" + "{" + "1:path" + "}" + ")"), boost: 10 - }, { + }, { label: "to_json", type: "function", detail: "flow\u002Ddsl\u002Dloaders", @@ -10013,7 +10316,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\JSON\\to_json(" + "$" + "{" + "1:path" + "}" + ", " + "$" + "{" + "2:flags" + "}" + ", " + "$" + "{" + "3:date_time_format" + "}" + ", " + "$" + "{" + "4:put_rows_in_new_lines" + "}" + ")"), boost: 10 - }, { + }, { label: "to_json_lines", type: "function", detail: "flow\u002Ddsl\u002Dloaders", @@ -10031,7 +10334,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\JSON\\to_json_lines(" + "$" + "{" + "1:path" + "}" + ")"), boost: 10 - }, { + }, { label: "to_meilisearch_bulk_index", type: "function", detail: "flow\u002Ddsl\u002Dloaders", @@ -10049,7 +10352,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Meilisearch\\to_meilisearch_bulk_index(" + "$" + "{" + "1:config" + "}" + ", " + "$" + "{" + "2:index" + "}" + ")"), boost: 10 - }, { + }, { label: "to_meilisearch_bulk_update", type: "function", detail: "flow\u002Ddsl\u002Dloaders", @@ -10067,7 +10370,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Meilisearch\\to_meilisearch_bulk_update(" + "$" + "{" + "1:config" + "}" + ", " + "$" + "{" + "2:index" + "}" + ")"), boost: 10 - }, { + }, { label: "to_memory", type: "function", detail: "flow\u002Ddsl\u002Dloaders", @@ -10082,7 +10385,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\to_memory(" + "$" + "{" + "1:memory" + "}" + ")"), boost: 10 - }, { + }, { label: "to_output", type: "function", detail: "flow\u002Ddsl\u002Dloaders", @@ -10097,7 +10400,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\to_output(" + "$" + "{" + "1:truncate" + "}" + ", " + "$" + "{" + "2:output" + "}" + ", " + "$" + "{" + "3:formatter" + "}" + ", " + "$" + "{" + "4:schemaFormatter" + "}" + ")"), boost: 10 - }, { + }, { label: "to_parquet", type: "function", detail: "flow\u002Ddsl\u002Dloaders", @@ -10115,7 +10418,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Parquet\\to_parquet(" + "$" + "{" + "1:path" + "}" + ", " + "$" + "{" + "2:options" + "}" + ", " + "$" + "{" + "3:compressions" + "}" + ", " + "$" + "{" + "4:schema" + "}" + ")"), boost: 10 - }, { + }, { label: "to_stderr", type: "function", detail: "flow\u002Ddsl\u002Dloaders", @@ -10130,7 +10433,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\to_stderr(" + "$" + "{" + "1:truncate" + "}" + ", " + "$" + "{" + "2:output" + "}" + ", " + "$" + "{" + "3:formatter" + "}" + ", " + "$" + "{" + "4:schemaFormatter" + "}" + ")"), boost: 10 - }, { + }, { label: "to_stdout", type: "function", detail: "flow\u002Ddsl\u002Dloaders", @@ -10145,7 +10448,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\to_stdout(" + "$" + "{" + "1:truncate" + "}" + ", " + "$" + "{" + "2:output" + "}" + ", " + "$" + "{" + "3:formatter" + "}" + ", " + "$" + "{" + "4:schemaFormatter" + "}" + ")"), boost: 10 - }, { + }, { label: "to_stream", type: "function", detail: "flow\u002Ddsl\u002Dloaders", @@ -10160,7 +10463,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\to_stream(" + "$" + "{" + "1:uri" + "}" + ", " + "$" + "{" + "2:truncate" + "}" + ", " + "$" + "{" + "3:output" + "}" + ", " + "$" + "{" + "4:mode" + "}" + ", " + "$" + "{" + "5:formatter" + "}" + ", " + "$" + "{" + "6:schemaFormatter" + "}" + ")"), boost: 10 - }, { + }, { label: "to_text", type: "function", detail: "flow\u002Ddsl\u002Dloaders", @@ -10178,7 +10481,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\Text\\to_text(" + "$" + "{" + "1:path" + "}" + ", " + "$" + "{" + "2:new_line_separator" + "}" + ")"), boost: 10 - }, { + }, { label: "to_timezone", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -10193,7 +10496,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\to_timezone(" + "$" + "{" + "1:value" + "}" + ", " + "$" + "{" + "2:timeZone" + "}" + ")"), boost: 10 - }, { + }, { label: "to_transformation", type: "function", detail: "flow\u002Ddsl\u002Dloaders", @@ -10208,7 +10511,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\to_transformation(" + "$" + "{" + "1:transformer" + "}" + ", " + "$" + "{" + "2:loader" + "}" + ")"), boost: 10 - }, { + }, { label: "to_xml", type: "function", detail: "flow\u002Ddsl\u002Dloaders", @@ -10226,7 +10529,43 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\Adapter\\XML\\to_xml(" + "$" + "{" + "1:path" + "}" + ", " + "$" + "{" + "2:root_element_name" + "}" + ", " + "$" + "{" + "3:row_element_name" + "}" + ", " + "$" + "{" + "4:attribute_prefix" + "}" + ", " + "$" + "{" + "5:date_time_format" + "}" + ", " + "$" + "{" + "6:xml_writer" + "}" + ")"), boost: 10 - }, { + }, { + label: "traceable_filesystem", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ traceable_filesystem(Filesystem $filesystem, FilesystemTelemetryConfig $telemetryConfig) : TraceableFilesystem +
+
+ Wrap a filesystem with telemetry tracing support.
All filesystem and stream operations will be traced according to the configuration. +
+ ` + return div + }, + apply: snippet("\\Flow\\Filesystem\\DSL\\traceable_filesystem(" + "$" + "{" + "1:filesystem" + "}" + ", " + "$" + "{" + "2:telemetryConfig" + "}" + ")"), + boost: 10 + }, { + label: "traceable_postgresql_client", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ traceable_postgresql_client(Client $client, PostgreSqlTelemetryConfig $telemetryConfig) : TraceableClient +
+
+ Wrap a PostgreSQL client with telemetry instrumentation.
Returns a decorator that adds spans, metrics, and logs to all
query and transaction operations following OpenTelemetry conventions.
@param Client\\Client $client The PostgreSQL client to instrument
@param PostgreSqlTelemetryConfig $telemetryConfig Telemetry configuration
@example
$client = pgsql_client(pgsql_connection(\'host=localhost dbname=mydb\'));
$traceableClient = traceable_postgresql_client(
$client,
postgresql_telemetry_config(
telemetry(resource([\'service.name\' => \'my-app\'])),
new SystemClock(),
postgresql_telemetry_options(
traceQueries: true,
traceTransactions: true,
collectMetrics: true,
logQueries: true,
maxQueryLength: 500,
),
),
);
// All operations now traced
$traceableClient->transaction(function (Client $client) {
$user = $client->fetchOne(\'SELECT * FROM users WHERE id = $1\', [123]);
$client->execute(\'UPDATE users SET last_login = NOW() WHERE id = $1\', [123]);
}); +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\traceable_postgresql_client(" + "$" + "{" + "1:client" + "}" + ", " + "$" + "{" + "2:telemetryConfig" + "}" + ")"), + boost: 10 + }, { label: "tracer_provider", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -10234,17 +10573,17 @@ const dslFunctions = [ const div = document.createElement("div") div.innerHTML = `
- tracer_provider(SpanProcessor $processor, ClockInterface $clock, ContextStorage $contextStorage, Sampler $sampler = Flow\\Telemetry\\Tracer\\Sampler\\AlwaysOnSampler::...) : TracerProvider + tracer_provider(SpanProcessor $processor, ClockInterface $clock, ContextStorage $contextStorage, Sampler $sampler = Flow\\Telemetry\\Tracer\\Sampler\\AlwaysOnSampler::..., SpanLimits $limits = Flow\\Telemetry\\Tracer\\SpanLimits::...) : TracerProvider
- Create a TracerProvider.
Creates a provider that uses a SpanProcessor for processing spans.
For void/disabled tracing, pass void_processor().
For memory-based testing, pass memory_processor() with exporters.
@param SpanProcessor $processor The processor for spans
@param ClockInterface $clock The clock for timestamps
@param ContextStorage $contextStorage Storage for context propagation
@param Sampler $sampler Sampling strategy for spans + Create a TracerProvider.
Creates a provider that uses a SpanProcessor for processing spans.
For void/disabled tracing, pass void_processor().
For memory-based testing, pass memory_processor() with exporters.
@param SpanProcessor $processor The processor for spans
@param ClockInterface $clock The clock for timestamps
@param ContextStorage $contextStorage Storage for context propagation
@param Sampler $sampler Sampling strategy for spans
@param SpanLimits $limits Limits for span attributes, events, and links
` return div }, - apply: snippet("\\Flow\\Telemetry\\DSL\\tracer_provider(" + "$" + "{" + "1:processor" + "}" + ", " + "$" + "{" + "2:clock" + "}" + ", " + "$" + "{" + "3:contextStorage" + "}" + ", " + "$" + "{" + "4:sampler" + "}" + ")"), + apply: snippet("\\Flow\\Telemetry\\DSL\\tracer_provider(" + "$" + "{" + "1:processor" + "}" + ", " + "$" + "{" + "2:clock" + "}" + ", " + "$" + "{" + "3:contextStorage" + "}" + ", " + "$" + "{" + "4:sampler" + "}" + ", " + "$" + "{" + "5:limits" + "}" + ")"), boost: 10 - }, { + }, { label: "trace_based_exemplar_filter", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -10262,7 +10601,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\trace_based_exemplar_filter()"), boost: 10 - }, { + }, { label: "trace_id", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -10280,7 +10619,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\trace_id(" + "$" + "{" + "1:hex" + "}" + ")"), boost: 10 - }, { + }, { label: "transaction_snapshot", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -10298,7 +10637,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\transaction_snapshot(" + "$" + "{" + "1:snapshotId" + "}" + ")"), boost: 10 - }, { + }, { label: "truncate_table", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -10316,7 +10655,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\truncate_table(" + "$" + "{" + "1:tables" + "}" + ")"), boost: 10 - }, { + }, { label: "typed", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -10334,7 +10673,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\typed(" + "$" + "{" + "1:value" + "}" + ", " + "$" + "{" + "2:targetType" + "}" + ")"), boost: 10 - }, { + }, { label: "types", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -10352,7 +10691,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\types(" + "$" + "{" + "1:types" + "}" + ")"), boost: 10 - }, { + }, { label: "type_array", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -10370,7 +10709,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_array()"), boost: 10 - }, { + }, { label: "type_attr", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -10388,7 +10727,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\type_attr(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:type" + "}" + ")"), boost: 10 - }, { + }, { label: "type_boolean", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -10406,7 +10745,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_boolean()"), boost: 10 - }, { + }, { label: "type_callable", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -10424,7 +10763,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_callable()"), boost: 10 - }, { + }, { label: "type_class_string", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -10442,7 +10781,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_class_string(" + "$" + "{" + "1:class" + "}" + ")"), boost: 10 - }, { + }, { label: "type_date", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -10460,7 +10799,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\type_date()"), boost: 10 - }, { + }, { label: "type_date", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -10478,7 +10817,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_date()"), boost: 10 - }, { + }, { label: "type_datetime", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -10496,7 +10835,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_datetime()"), boost: 10 - }, { + }, { label: "type_enum", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -10514,7 +10853,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_enum(" + "$" + "{" + "1:class" + "}" + ")"), boost: 10 - }, { + }, { label: "type_equals", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -10532,7 +10871,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_equals(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:right" + "}" + ")"), boost: 10 - }, { + }, { label: "type_float", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -10550,7 +10889,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_float()"), boost: 10 - }, { + }, { label: "type_from_array", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -10568,7 +10907,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_from_array(" + "$" + "{" + "1:data" + "}" + ")"), boost: 10 - }, { + }, { label: "type_html", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -10586,7 +10925,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_html()"), boost: 10 - }, { + }, { label: "type_html_element", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -10604,7 +10943,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_html_element()"), boost: 10 - }, { + }, { label: "type_instance_of", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -10622,7 +10961,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_instance_of(" + "$" + "{" + "1:class" + "}" + ")"), boost: 10 - }, { + }, { label: "type_int", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -10640,7 +10979,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\type_int()"), boost: 10 - }, { + }, { label: "type_integer", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -10658,7 +10997,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_integer()"), boost: 10 - }, { + }, { label: "type_intersection", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -10676,7 +11015,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_intersection(" + "$" + "{" + "1:first" + "}" + ", " + "$" + "{" + "2:second" + "}" + ", " + "$" + "{" + "3:types" + "}" + ")"), boost: 10 - }, { + }, { label: "type_is", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -10694,7 +11033,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_is(" + "$" + "{" + "1:type" + "}" + ", " + "$" + "{" + "2:typeClass" + "}" + ")"), boost: 10 - }, { + }, { label: "type_is_any", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -10712,7 +11051,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_is_any(" + "$" + "{" + "1:type" + "}" + ", " + "$" + "{" + "2:typeClass" + "}" + ", " + "$" + "{" + "3:typeClasses" + "}" + ")"), boost: 10 - }, { + }, { label: "type_is_nullable", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -10730,7 +11069,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_is_nullable(" + "$" + "{" + "1:type" + "}" + ")"), boost: 10 - }, { + }, { label: "type_json", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -10748,7 +11087,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_json()"), boost: 10 - }, { + }, { label: "type_list", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -10766,7 +11105,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_list(" + "$" + "{" + "1:element" + "}" + ")"), boost: 10 - }, { + }, { label: "type_literal", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -10784,7 +11123,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_literal(" + "$" + "{" + "1:value" + "}" + ")"), boost: 10 - }, { + }, { label: "type_map", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -10802,7 +11141,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_map(" + "$" + "{" + "1:key_type" + "}" + ", " + "$" + "{" + "2:value_type" + "}" + ")"), boost: 10 - }, { + }, { label: "type_mixed", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -10820,7 +11159,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_mixed()"), boost: 10 - }, { + }, { label: "type_non_empty_string", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -10838,7 +11177,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_non_empty_string()"), boost: 10 - }, { + }, { label: "type_null", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -10856,7 +11195,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_null()"), boost: 10 - }, { + }, { label: "type_numeric_string", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -10874,7 +11213,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_numeric_string()"), boost: 10 - }, { + }, { label: "type_object", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -10892,7 +11231,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_object()"), boost: 10 - }, { + }, { label: "type_optional", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -10910,7 +11249,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_optional(" + "$" + "{" + "1:type" + "}" + ")"), boost: 10 - }, { + }, { label: "type_positive_integer", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -10928,7 +11267,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_positive_integer()"), boost: 10 - }, { + }, { label: "type_resource", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -10946,7 +11285,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_resource()"), boost: 10 - }, { + }, { label: "type_scalar", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -10964,7 +11303,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_scalar()"), boost: 10 - }, { + }, { label: "type_string", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -10982,7 +11321,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_string()"), boost: 10 - }, { + }, { label: "type_structure", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -11000,7 +11339,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_structure(" + "$" + "{" + "1:elements" + "}" + ", " + "$" + "{" + "2:optional_elements" + "}" + ", " + "$" + "{" + "3:allow_extra" + "}" + ")"), boost: 10 - }, { + }, { label: "type_time", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -11018,7 +11357,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_time()"), boost: 10 - }, { + }, { label: "type_time_zone", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -11036,7 +11375,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_time_zone()"), boost: 10 - }, { + }, { label: "type_union", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -11054,7 +11393,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_union(" + "$" + "{" + "1:first" + "}" + ", " + "$" + "{" + "2:second" + "}" + ", " + "$" + "{" + "3:types" + "}" + ")"), boost: 10 - }, { + }, { label: "type_uuid", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -11072,7 +11411,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_uuid()"), boost: 10 - }, { + }, { label: "type_xml", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -11090,7 +11429,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_xml()"), boost: 10 - }, { + }, { label: "type_xml_element", type: "function", detail: "flow\u002Ddsl\u002Dtype", @@ -11108,7 +11447,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Types\\DSL\\type_xml_element()"), boost: 10 - }, { + }, { label: "ulid", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -11123,7 +11462,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\ulid(" + "$" + "{" + "1:value" + "}" + ")"), boost: 10 - }, { + }, { label: "unique_constraint", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -11141,7 +11480,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\unique_constraint(" + "$" + "{" + "1:columns" + "}" + ")"), boost: 10 - }, { + }, { label: "update", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -11159,7 +11498,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\update()"), boost: 10 - }, { + }, { label: "upper", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -11174,7 +11513,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\upper(" + "$" + "{" + "1:value" + "}" + ")"), boost: 10 - }, { + }, { label: "uuid_entry", type: "function", detail: "flow\u002Ddsl\u002Dentries", @@ -11192,7 +11531,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\uuid_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "uuid_schema", type: "function", detail: "flow\u002Ddsl\u002Dschema", @@ -11207,7 +11546,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\uuid_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:nullable" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "uuid_v4", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -11222,7 +11561,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\uuid_v4()"), boost: 10 - }, { + }, { label: "uuid_v7", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -11237,7 +11576,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\uuid_v7(" + "$" + "{" + "1:value" + "}" + ")"), boost: 10 - }, { + }, { label: "vacuum", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -11255,7 +11594,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\vacuum()"), boost: 10 - }, { + }, { label: "values_table", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -11273,7 +11612,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\values_table(" + "$" + "{" + "1:rows" + "}" + ")"), boost: 10 - }, { + }, { label: "value_normalizer", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -11291,7 +11630,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Bridge\\Monolog\\Telemetry\\DSL\\value_normalizer()"), boost: 10 - }, { + }, { label: "void_log_exporter", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -11309,7 +11648,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\void_log_exporter()"), boost: 10 - }, { + }, { label: "void_log_processor", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -11327,7 +11666,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\void_log_processor()"), boost: 10 - }, { + }, { label: "void_metric_exporter", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -11345,7 +11684,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\void_metric_exporter()"), boost: 10 - }, { + }, { label: "void_metric_processor", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -11363,7 +11702,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\void_metric_processor()"), boost: 10 - }, { + }, { label: "void_span_exporter", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -11381,7 +11720,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\void_span_exporter()"), boost: 10 - }, { + }, { label: "void_span_processor", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -11399,7 +11738,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\void_span_processor()"), boost: 10 - }, { + }, { label: "w3c_baggage", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -11417,7 +11756,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\w3c_baggage()"), boost: 10 - }, { + }, { label: "w3c_trace_context", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -11435,7 +11774,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\Telemetry\\DSL\\w3c_trace_context()"), boost: 10 - }, { + }, { label: "when", type: "function", detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", @@ -11450,7 +11789,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\when(" + "$" + "{" + "1:condition" + "}" + ", " + "$" + "{" + "2:then" + "}" + ", " + "$" + "{" + "3:else" + "}" + ")"), boost: 10 - }, { + }, { label: "when", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -11468,7 +11807,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\when(" + "$" + "{" + "1:condition" + "}" + ", " + "$" + "{" + "2:result" + "}" + ")"), boost: 10 - }, { + }, { label: "window", type: "function", detail: "flow\u002Ddsl\u002Ddata\u002Dframe", @@ -11483,7 +11822,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\window()"), boost: 10 - }, { + }, { label: "window_def", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -11501,7 +11840,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\window_def(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:partitionBy" + "}" + ", " + "$" + "{" + "3:orderBy" + "}" + ", " + "$" + "{" + "4:frame" + "}" + ")"), boost: 10 - }, { + }, { label: "window_frame", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -11519,7 +11858,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\window_frame(" + "$" + "{" + "1:mode" + "}" + ", " + "$" + "{" + "2:start" + "}" + ", " + "$" + "{" + "3:end" + "}" + ", " + "$" + "{" + "4:exclusion" + "}" + ")"), boost: 10 - }, { + }, { label: "window_func", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -11537,7 +11876,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\window_func(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:args" + "}" + ", " + "$" + "{" + "3:partitionBy" + "}" + ", " + "$" + "{" + "4:orderBy" + "}" + ")"), boost: 10 - }, { + }, { label: "with", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -11555,7 +11894,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\PostgreSql\\DSL\\with(" + "$" + "{" + "1:ctes" + "}" + ")"), boost: 10 - }, { + }, { label: "with_entry", type: "function", detail: "flow\u002Ddsl\u002Dhelpers", @@ -11570,7 +11909,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\with_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:function" + "}" + ")"), boost: 10 - }, { + }, { label: "write_with_retries", type: "function", detail: "flow\u002Ddsl\u002Dloaders", @@ -11585,7 +11924,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\write_with_retries(" + "$" + "{" + "1:loader" + "}" + ", " + "$" + "{" + "2:retry_strategy" + "}" + ", " + "$" + "{" + "3:delay_factory" + "}" + ", " + "$" + "{" + "4:sleep" + "}" + ")"), boost: 10 - }, { + }, { label: "xml_element_entry", type: "function", detail: "flow\u002Ddsl\u002Dentries", @@ -11603,7 +11942,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\xml_element_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "xml_element_schema", type: "function", detail: "flow\u002Ddsl\u002Dschema", @@ -11618,7 +11957,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\xml_element_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:nullable" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "xml_entry", type: "function", detail: "flow\u002Ddsl\u002Dentries", @@ -11636,7 +11975,7 @@ const dslFunctions = [ }, apply: snippet("\\Flow\\ETL\\DSL\\xml_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), boost: 10 - }, { + }, { label: "xml_schema", type: "function", detail: "flow\u002Ddsl\u002Dschema", diff --git a/web/landing/assets/codemirror/completions/flow.js b/web/landing/assets/codemirror/completions/flow.js index 04b2ca8db6..1c8793bb3b 100644 --- a/web/landing/assets/codemirror/completions/flow.js +++ b/web/landing/assets/codemirror/completions/flow.js @@ -15,7 +15,7 @@ const flowFunctions = [ // Flow methods const flowMethods = [ - { + { label: "setUp", type: "method", detail: "Flow\\\\ETL\\\\Flow", @@ -30,7 +30,7 @@ const flowMethods = [ }, apply: snippet("setUp(" + "$" + "{" + "1:config" + "}" + ")"), boost: 10 - }, { + }, { label: "extract", type: "method", detail: "Flow\\\\ETL\\\\Flow", @@ -45,7 +45,7 @@ const flowMethods = [ }, apply: snippet("extract(" + "$" + "{" + "1:extractor" + "}" + ")"), boost: 10 - }, { + }, { label: "from", type: "method", detail: "Flow\\\\ETL\\\\Flow", @@ -60,7 +60,7 @@ const flowMethods = [ }, apply: snippet("from(" + "$" + "{" + "1:extractor" + "}" + ")"), boost: 10 - }, { + }, { label: "process", type: "method", detail: "Flow\\\\ETL\\\\Flow", @@ -75,7 +75,7 @@ const flowMethods = [ }, apply: snippet("process(" + "$" + "{" + "1:rows" + "}" + ")"), boost: 10 - }, { + }, { label: "read", type: "method", detail: "Flow\\\\ETL\\\\Flow", diff --git a/web/landing/assets/codemirror/completions/scalarfunctionchain.js b/web/landing/assets/codemirror/completions/scalarfunctionchain.js index 7df1b3ab03..11e3e46b35 100644 --- a/web/landing/assets/codemirror/completions/scalarfunctionchain.js +++ b/web/landing/assets/codemirror/completions/scalarfunctionchain.js @@ -15,7 +15,7 @@ const scalarFunctionChainFunctions = [ // ScalarFunctionChain methods const scalarFunctionChainMethods = [ - { + { label: "and", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -30,7 +30,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("and(" + "$" + "{" + "1:function" + "}" + ")"), boost: 10 - }, { + }, { label: "andNot", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -45,7 +45,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("andNot(" + "$" + "{" + "1:function" + "}" + ")"), boost: 10 - }, { + }, { label: "append", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -60,7 +60,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("append(" + "$" + "{" + "1:suffix" + "}" + ")"), boost: 10 - }, { + }, { label: "arrayFilter", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -78,7 +78,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("arrayFilter(" + "$" + "{" + "1:value" + "}" + ")"), boost: 10 - }, { + }, { label: "arrayGet", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -93,7 +93,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("arrayGet(" + "$" + "{" + "1:path" + "}" + ")"), boost: 10 - }, { + }, { label: "arrayGetCollection", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -111,7 +111,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("arrayGetCollection(" + "$" + "{" + "1:keys" + "}" + ")"), boost: 10 - }, { + }, { label: "arrayGetCollectionFirst", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -126,7 +126,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("arrayGetCollectionFirst(" + "$" + "{" + "1:keys" + "}" + ")"), boost: 10 - }, { + }, { label: "arrayKeep", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -144,7 +144,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("arrayKeep(" + "$" + "{" + "1:value" + "}" + ")"), boost: 10 - }, { + }, { label: "arrayKeys", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -162,7 +162,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("arrayKeys()"), boost: 10 - }, { + }, { label: "arrayMerge", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -180,7 +180,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("arrayMerge(" + "$" + "{" + "1:ref" + "}" + ")"), boost: 10 - }, { + }, { label: "arrayMergeCollection", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -195,7 +195,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("arrayMergeCollection()"), boost: 10 - }, { + }, { label: "arrayPathExists", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -210,7 +210,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("arrayPathExists(" + "$" + "{" + "1:path" + "}" + ")"), boost: 10 - }, { + }, { label: "arrayReverse", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -225,7 +225,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("arrayReverse(" + "$" + "{" + "1:preserveKeys" + "}" + ")"), boost: 10 - }, { + }, { label: "arraySort", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -240,7 +240,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("arraySort(" + "$" + "{" + "1:sortFunction" + "}" + ", " + "$" + "{" + "2:flags" + "}" + ", " + "$" + "{" + "3:recursive" + "}" + ")"), boost: 10 - }, { + }, { label: "arrayValues", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -258,7 +258,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("arrayValues()"), boost: 10 - }, { + }, { label: "ascii", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -273,7 +273,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("ascii()"), boost: 10 - }, { + }, { label: "between", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -291,7 +291,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("between(" + "$" + "{" + "1:lowerBoundRef" + "}" + ", " + "$" + "{" + "2:upperBoundRef" + "}" + ", " + "$" + "{" + "3:boundary" + "}" + ")"), boost: 10 - }, { + }, { label: "binaryLength", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -306,7 +306,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("binaryLength()"), boost: 10 - }, { + }, { label: "call", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -324,7 +324,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("call(" + "$" + "{" + "1:callable" + "}" + ", " + "$" + "{" + "2:arguments" + "}" + ", " + "$" + "{" + "3:refAlias" + "}" + ", " + "$" + "{" + "4:returnType" + "}" + ")"), boost: 10 - }, { + }, { label: "capitalize", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -339,7 +339,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("capitalize()"), boost: 10 - }, { + }, { label: "cast", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -357,7 +357,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("cast(" + "$" + "{" + "1:type" + "}" + ")"), boost: 10 - }, { + }, { label: "chunk", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -372,7 +372,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("chunk(" + "$" + "{" + "1:size" + "}" + ")"), boost: 10 - }, { + }, { label: "coalesce", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -387,7 +387,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("coalesce(" + "$" + "{" + "1:params" + "}" + ")"), boost: 10 - }, { + }, { label: "codePointLength", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -402,7 +402,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("codePointLength()"), boost: 10 - }, { + }, { label: "collapseWhitespace", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -417,7 +417,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("collapseWhitespace()"), boost: 10 - }, { + }, { label: "concat", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -432,7 +432,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("concat(" + "$" + "{" + "1:params" + "}" + ")"), boost: 10 - }, { + }, { label: "concatWithSeparator", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -447,7 +447,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("concatWithSeparator(" + "$" + "{" + "1:separator" + "}" + ", " + "$" + "{" + "2:params" + "}" + ")"), boost: 10 - }, { + }, { label: "contains", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -462,7 +462,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("contains(" + "$" + "{" + "1:needle" + "}" + ")"), boost: 10 - }, { + }, { label: "dateFormat", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -477,7 +477,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("dateFormat(" + "$" + "{" + "1:format" + "}" + ")"), boost: 10 - }, { + }, { label: "dateTimeFormat", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -492,7 +492,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("dateTimeFormat(" + "$" + "{" + "1:format" + "}" + ")"), boost: 10 - }, { + }, { label: "divide", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -507,7 +507,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("divide(" + "$" + "{" + "1:value" + "}" + ", " + "$" + "{" + "2:scale" + "}" + ", " + "$" + "{" + "3:rounding" + "}" + ")"), boost: 10 - }, { + }, { label: "domElementAttribute", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -525,7 +525,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("domElementAttribute(" + "$" + "{" + "1:attribute" + "}" + ")"), boost: 10 - }, { + }, { label: "domElementAttributesCount", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -540,7 +540,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("domElementAttributesCount()"), boost: 10 - }, { + }, { label: "domElementAttributeValue", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -555,7 +555,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("domElementAttributeValue(" + "$" + "{" + "1:attribute" + "}" + ")"), boost: 10 - }, { + }, { label: "domElementNextSibling", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -570,7 +570,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("domElementNextSibling(" + "$" + "{" + "1:allowOnlyElement" + "}" + ")"), boost: 10 - }, { + }, { label: "domElementParent", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -585,7 +585,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("domElementParent()"), boost: 10 - }, { + }, { label: "domElementPreviousSibling", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -600,7 +600,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("domElementPreviousSibling(" + "$" + "{" + "1:allowOnlyElement" + "}" + ")"), boost: 10 - }, { + }, { label: "domElementValue", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -615,7 +615,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("domElementValue()"), boost: 10 - }, { + }, { label: "endsWith", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -630,7 +630,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("endsWith(" + "$" + "{" + "1:needle" + "}" + ")"), boost: 10 - }, { + }, { label: "ensureEnd", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -645,7 +645,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("ensureEnd(" + "$" + "{" + "1:suffix" + "}" + ")"), boost: 10 - }, { + }, { label: "ensureStart", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -660,7 +660,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("ensureStart(" + "$" + "{" + "1:prefix" + "}" + ")"), boost: 10 - }, { + }, { label: "equals", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -675,7 +675,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("equals(" + "$" + "{" + "1:ref" + "}" + ")"), boost: 10 - }, { + }, { label: "exists", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -690,7 +690,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("exists()"), boost: 10 - }, { + }, { label: "expand", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -708,7 +708,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("expand(" + "$" + "{" + "1:expand" + "}" + ")"), boost: 10 - }, { + }, { label: "greaterThan", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -723,7 +723,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("greaterThan(" + "$" + "{" + "1:ref" + "}" + ")"), boost: 10 - }, { + }, { label: "greaterThanEqual", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -738,7 +738,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("greaterThanEqual(" + "$" + "{" + "1:ref" + "}" + ")"), boost: 10 - }, { + }, { label: "hash", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -753,7 +753,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("hash(" + "$" + "{" + "1:algorithm" + "}" + ")"), boost: 10 - }, { + }, { label: "htmlQuerySelector", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -768,7 +768,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("htmlQuerySelector(" + "$" + "{" + "1:path" + "}" + ")"), boost: 10 - }, { + }, { label: "htmlQuerySelectorAll", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -783,7 +783,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("htmlQuerySelectorAll(" + "$" + "{" + "1:path" + "}" + ")"), boost: 10 - }, { + }, { label: "indexOf", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -801,7 +801,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("indexOf(" + "$" + "{" + "1:needle" + "}" + ", " + "$" + "{" + "2:ignoreCase" + "}" + ", " + "$" + "{" + "3:offset" + "}" + ")"), boost: 10 - }, { + }, { label: "indexOfLast", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -819,7 +819,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("indexOfLast(" + "$" + "{" + "1:needle" + "}" + ", " + "$" + "{" + "2:ignoreCase" + "}" + ", " + "$" + "{" + "3:offset" + "}" + ")"), boost: 10 - }, { + }, { label: "isEmpty", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -834,7 +834,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("isEmpty()"), boost: 10 - }, { + }, { label: "isEven", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -849,7 +849,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("isEven()"), boost: 10 - }, { + }, { label: "isFalse", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -864,7 +864,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("isFalse()"), boost: 10 - }, { + }, { label: "isIn", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -882,7 +882,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("isIn(" + "$" + "{" + "1:haystack" + "}" + ")"), boost: 10 - }, { + }, { label: "isNotNull", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -897,7 +897,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("isNotNull()"), boost: 10 - }, { + }, { label: "isNotNumeric", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -912,7 +912,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("isNotNumeric()"), boost: 10 - }, { + }, { label: "isNull", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -927,7 +927,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("isNull()"), boost: 10 - }, { + }, { label: "isNumeric", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -942,7 +942,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("isNumeric()"), boost: 10 - }, { + }, { label: "isOdd", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -957,7 +957,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("isOdd()"), boost: 10 - }, { + }, { label: "isTrue", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -972,7 +972,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("isTrue()"), boost: 10 - }, { + }, { label: "isType", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -990,7 +990,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("isType(" + "$" + "{" + "1:types" + "}" + ")"), boost: 10 - }, { + }, { label: "isUtf8", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1008,7 +1008,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("isUtf8()"), boost: 10 - }, { + }, { label: "jsonDecode", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1023,7 +1023,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("jsonDecode(" + "$" + "{" + "1:flags" + "}" + ")"), boost: 10 - }, { + }, { label: "jsonEncode", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1038,7 +1038,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("jsonEncode(" + "$" + "{" + "1:flags" + "}" + ")"), boost: 10 - }, { + }, { label: "lessThan", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1053,7 +1053,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("lessThan(" + "$" + "{" + "1:ref" + "}" + ")"), boost: 10 - }, { + }, { label: "lessThanEqual", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1068,7 +1068,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("lessThanEqual(" + "$" + "{" + "1:ref" + "}" + ")"), boost: 10 - }, { + }, { label: "literal", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1083,7 +1083,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("literal(" + "$" + "{" + "1:value" + "}" + ")"), boost: 10 - }, { + }, { label: "lower", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1098,7 +1098,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("lower()"), boost: 10 - }, { + }, { label: "minus", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1113,7 +1113,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("minus(" + "$" + "{" + "1:ref" + "}" + ")"), boost: 10 - }, { + }, { label: "mod", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1128,7 +1128,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("mod(" + "$" + "{" + "1:value" + "}" + ")"), boost: 10 - }, { + }, { label: "modifyDateTime", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1143,7 +1143,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("modifyDateTime(" + "$" + "{" + "1:modifier" + "}" + ")"), boost: 10 - }, { + }, { label: "multiply", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1158,7 +1158,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("multiply(" + "$" + "{" + "1:value" + "}" + ")"), boost: 10 - }, { + }, { label: "notEquals", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1173,7 +1173,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("notEquals(" + "$" + "{" + "1:value" + "}" + ")"), boost: 10 - }, { + }, { label: "notSame", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1188,7 +1188,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("notSame(" + "$" + "{" + "1:value" + "}" + ")"), boost: 10 - }, { + }, { label: "numberFormat", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1203,7 +1203,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("numberFormat(" + "$" + "{" + "1:decimals" + "}" + ", " + "$" + "{" + "2:decimalSeparator" + "}" + ", " + "$" + "{" + "3:thousandsSeparator" + "}" + ")"), boost: 10 - }, { + }, { label: "onEach", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1221,7 +1221,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("onEach(" + "$" + "{" + "1:function" + "}" + ", " + "$" + "{" + "2:preserveKeys" + "}" + ")"), boost: 10 - }, { + }, { label: "or", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1236,7 +1236,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("or(" + "$" + "{" + "1:function" + "}" + ")"), boost: 10 - }, { + }, { label: "orNot", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1251,7 +1251,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("orNot(" + "$" + "{" + "1:function" + "}" + ")"), boost: 10 - }, { + }, { label: "plus", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1266,7 +1266,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("plus(" + "$" + "{" + "1:ref" + "}" + ")"), boost: 10 - }, { + }, { label: "power", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1281,7 +1281,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("power(" + "$" + "{" + "1:value" + "}" + ")"), boost: 10 - }, { + }, { label: "prepend", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1296,7 +1296,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("prepend(" + "$" + "{" + "1:prefix" + "}" + ")"), boost: 10 - }, { + }, { label: "regex", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1311,7 +1311,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("regex(" + "$" + "{" + "1:pattern" + "}" + ", " + "$" + "{" + "2:flags" + "}" + ", " + "$" + "{" + "3:offset" + "}" + ")"), boost: 10 - }, { + }, { label: "regexAll", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1326,7 +1326,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("regexAll(" + "$" + "{" + "1:pattern" + "}" + ", " + "$" + "{" + "2:flags" + "}" + ", " + "$" + "{" + "3:offset" + "}" + ")"), boost: 10 - }, { + }, { label: "regexMatch", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1341,7 +1341,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("regexMatch(" + "$" + "{" + "1:pattern" + "}" + ", " + "$" + "{" + "2:flags" + "}" + ", " + "$" + "{" + "3:offset" + "}" + ")"), boost: 10 - }, { + }, { label: "regexMatchAll", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1356,7 +1356,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("regexMatchAll(" + "$" + "{" + "1:pattern" + "}" + ", " + "$" + "{" + "2:flags" + "}" + ", " + "$" + "{" + "3:offset" + "}" + ")"), boost: 10 - }, { + }, { label: "regexReplace", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1371,7 +1371,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("regexReplace(" + "$" + "{" + "1:pattern" + "}" + ", " + "$" + "{" + "2:replacement" + "}" + ", " + "$" + "{" + "3:limit" + "}" + ")"), boost: 10 - }, { + }, { label: "repeat", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1386,7 +1386,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("repeat(" + "$" + "{" + "1:times" + "}" + ")"), boost: 10 - }, { + }, { label: "reverse", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1401,7 +1401,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("reverse()"), boost: 10 - }, { + }, { label: "round", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1416,7 +1416,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("round(" + "$" + "{" + "1:precision" + "}" + ", " + "$" + "{" + "2:mode" + "}" + ")"), boost: 10 - }, { + }, { label: "same", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1431,7 +1431,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("same(" + "$" + "{" + "1:value" + "}" + ")"), boost: 10 - }, { + }, { label: "sanitize", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1446,7 +1446,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("sanitize(" + "$" + "{" + "1:placeholder" + "}" + ", " + "$" + "{" + "2:skipCharacters" + "}" + ")"), boost: 10 - }, { + }, { label: "size", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1461,7 +1461,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("size()"), boost: 10 - }, { + }, { label: "slug", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1479,7 +1479,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("slug(" + "$" + "{" + "1:separator" + "}" + ", " + "$" + "{" + "2:locale" + "}" + ", " + "$" + "{" + "3:symbolsMap" + "}" + ")"), boost: 10 - }, { + }, { label: "split", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1494,7 +1494,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("split(" + "$" + "{" + "1:separator" + "}" + ", " + "$" + "{" + "2:limit" + "}" + ")"), boost: 10 - }, { + }, { label: "sprintf", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1509,7 +1509,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("sprintf(" + "$" + "{" + "1:params" + "}" + ")"), boost: 10 - }, { + }, { label: "startsWith", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1524,7 +1524,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("startsWith(" + "$" + "{" + "1:needle" + "}" + ")"), boost: 10 - }, { + }, { label: "stringAfter", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1542,7 +1542,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("stringAfter(" + "$" + "{" + "1:needle" + "}" + ", " + "$" + "{" + "2:includeNeedle" + "}" + ")"), boost: 10 - }, { + }, { label: "stringAfterLast", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1560,7 +1560,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("stringAfterLast(" + "$" + "{" + "1:needle" + "}" + ", " + "$" + "{" + "2:includeNeedle" + "}" + ")"), boost: 10 - }, { + }, { label: "stringBefore", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1578,7 +1578,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("stringBefore(" + "$" + "{" + "1:needle" + "}" + ", " + "$" + "{" + "2:includeNeedle" + "}" + ")"), boost: 10 - }, { + }, { label: "stringBeforeLast", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1596,7 +1596,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("stringBeforeLast(" + "$" + "{" + "1:needle" + "}" + ", " + "$" + "{" + "2:includeNeedle" + "}" + ")"), boost: 10 - }, { + }, { label: "stringContainsAny", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1614,7 +1614,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("stringContainsAny(" + "$" + "{" + "1:needles" + "}" + ")"), boost: 10 - }, { + }, { label: "stringEqualsTo", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1629,7 +1629,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("stringEqualsTo(" + "$" + "{" + "1:string" + "}" + ")"), boost: 10 - }, { + }, { label: "stringFold", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1647,7 +1647,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("stringFold()"), boost: 10 - }, { + }, { label: "stringMatch", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1662,7 +1662,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("stringMatch(" + "$" + "{" + "1:pattern" + "}" + ")"), boost: 10 - }, { + }, { label: "stringMatchAll", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1677,7 +1677,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("stringMatchAll(" + "$" + "{" + "1:pattern" + "}" + ")"), boost: 10 - }, { + }, { label: "stringNormalize", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1692,7 +1692,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("stringNormalize(" + "$" + "{" + "1:form" + "}" + ")"), boost: 10 - }, { + }, { label: "stringStyle", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1710,7 +1710,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("stringStyle(" + "$" + "{" + "1:style" + "}" + ")"), boost: 10 - }, { + }, { label: "stringTitle", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1728,7 +1728,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("stringTitle(" + "$" + "{" + "1:allWords" + "}" + ")"), boost: 10 - }, { + }, { label: "stringWidth", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1743,7 +1743,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("stringWidth()"), boost: 10 - }, { + }, { label: "strPad", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1758,7 +1758,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("strPad(" + "$" + "{" + "1:length" + "}" + ", " + "$" + "{" + "2:pad_string" + "}" + ", " + "$" + "{" + "3:type" + "}" + ")"), boost: 10 - }, { + }, { label: "strPadBoth", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1773,7 +1773,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("strPadBoth(" + "$" + "{" + "1:length" + "}" + ", " + "$" + "{" + "2:pad_string" + "}" + ")"), boost: 10 - }, { + }, { label: "strPadLeft", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1788,7 +1788,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("strPadLeft(" + "$" + "{" + "1:length" + "}" + ", " + "$" + "{" + "2:pad_string" + "}" + ")"), boost: 10 - }, { + }, { label: "strPadRight", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1803,7 +1803,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("strPadRight(" + "$" + "{" + "1:length" + "}" + ", " + "$" + "{" + "2:pad_string" + "}" + ")"), boost: 10 - }, { + }, { label: "strReplace", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1821,7 +1821,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("strReplace(" + "$" + "{" + "1:search" + "}" + ", " + "$" + "{" + "2:replace" + "}" + ")"), boost: 10 - }, { + }, { label: "toDate", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1839,7 +1839,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("toDate(" + "$" + "{" + "1:format" + "}" + ", " + "$" + "{" + "2:timeZone" + "}" + ")"), boost: 10 - }, { + }, { label: "toDateTime", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1857,7 +1857,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("toDateTime(" + "$" + "{" + "1:format" + "}" + ", " + "$" + "{" + "2:timeZone" + "}" + ")"), boost: 10 - }, { + }, { label: "trim", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1872,7 +1872,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("trim(" + "$" + "{" + "1:type" + "}" + ", " + "$" + "{" + "2:characters" + "}" + ")"), boost: 10 - }, { + }, { label: "truncate", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1887,7 +1887,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("truncate(" + "$" + "{" + "1:length" + "}" + ", " + "$" + "{" + "2:ellipsis" + "}" + ")"), boost: 10 - }, { + }, { label: "unicodeLength", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1902,7 +1902,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("unicodeLength()"), boost: 10 - }, { + }, { label: "unpack", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1920,7 +1920,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("unpack(" + "$" + "{" + "1:skipKeys" + "}" + ", " + "$" + "{" + "2:entryPrefix" + "}" + ")"), boost: 10 - }, { + }, { label: "upper", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1935,7 +1935,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("upper()"), boost: 10 - }, { + }, { label: "wordwrap", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", @@ -1950,7 +1950,7 @@ const scalarFunctionChainMethods = [ }, apply: snippet("wordwrap(" + "$" + "{" + "1:width" + "}" + ", " + "$" + "{" + "2:break" + "}" + ", " + "$" + "{" + "3:cut" + "}" + ")"), boost: 10 - }, { + }, { label: "xpath", type: "method", detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", diff --git a/web/landing/composer.json b/web/landing/composer.json index 3d58069692..e15c705a9b 100644 --- a/web/landing/composer.json +++ b/web/landing/composer.json @@ -45,6 +45,11 @@ "url": "../../src/bridge/symfony/http-foundation-telemetry", "options": { "symlink": true } }, + { + "type": "path", + "url": "../../src/bridge/psr18/telemetry", + "options": { "symlink": true } + }, { "type": "path", "url": "../../src/bridge/telemetry/otlp", @@ -54,15 +59,22 @@ "type": "path", "url": "../../src/bridge/monolog/telemetry", "options": { "symlink": true } + }, + { + "type": "path", + "url": "../../src/adapter/etl-adapter-json", + "options": { "symlink": true } } ], "require": { "php": "8.3.*", "flow-php/etl": "1.x-dev", "flow-php/etl-adapter-http": "1.x-dev", + "flow-php/etl-adapter-json": "1.x-dev", "flow-php/symfony-telemetry-bundle": "1.x-dev", "flow-php/telemetry-otlp-bridge": "*", "flow-php/monolog-telemetry-bridge": "*", + "flow-php/psr18-telemetry-bridge": "*", "nyholm/psr7": "^1.8", "php-http/curl-client": "^2.3", "psr/http-client": "^1.0", @@ -114,6 +126,12 @@ } }, "scripts": { + "generate:completers": [ + "bin/console app:generate:data-frame-completer", + "bin/console app:generate:dsl-completer", + "bin/console app:generate:flow-completer", + "bin/console app:generate:scalar-function-chain-completer" + ], "post-install-cmd": [ "@importmap:install", "@build:tailwind", diff --git a/web/landing/composer.lock b/web/landing/composer.lock index 3e392f63d1..95b89e16ad 100644 --- a/web/landing/composer.lock +++ b/web/landing/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "c4f6c4d36749461dfdcbe46e566327d3", + "content-hash": "72c84338e0498c1e3e7c61dd6ee17a1b", "packages": [ { "name": "brick/math", @@ -506,15 +506,63 @@ "relative": true } }, + { + "name": "flow-php/etl-adapter-json", + "version": "1.x-dev", + "dist": { + "type": "path", + "url": "../../src/adapter/etl-adapter-json", + "reference": "217c1e19fab49a81aaa7aae1670eb243684b4ec5" + }, + "require": { + "ext-json": "*", + "flow-php/etl": "self.version", + "halaxa/json-machine": "^1.1", + "php": "~8.3.0 || ~8.4.0 || ~8.5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Flow\\": [ + "src/Flow" + ] + }, + "files": [ + "src/Flow/ETL/Adapter/JSON/functions.php" + ] + }, + "autoload-dev": { + "psr-4": { + "Flow\\": "tests/Flow" + } + }, + "license": [ + "MIT" + ], + "description": "PHP ETL - Adapter - JSON", + "keywords": [ + "adapter", + "etl", + "extract", + "json", + "load", + "transform" + ], + "transport-options": { + "symlink": true, + "relative": true + } + }, { "name": "flow-php/filesystem", "version": "1.x-dev", "dist": { "type": "path", "url": "../../src/lib/filesystem", - "reference": "41a8aae737a5591e07aefde6b83097ec04e8e7d4" + "reference": "50ed65020123dd5924db6425977f04f37a14d502" }, "require": { + "flow-php/telemetry": "self.version", "flow-php/types": "self.version", "php": "~8.3.0 || ~8.4.0 || ~8.5.0", "webmozart/glob": "^3.0 || ^4.0" @@ -601,6 +649,52 @@ "relative": true } }, + { + "name": "flow-php/psr18-telemetry-bridge", + "version": "1.x-dev", + "dist": { + "type": "path", + "url": "../../src/bridge/psr18/telemetry", + "reference": "16327e6a08df7eb8071b8136657879648ab15051" + }, + "require": { + "flow-php/telemetry": "self.version", + "php": "~8.3.0 || ~8.4.0 || ~8.5.0", + "psr/http-client": "^1.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Flow\\": [ + "src/Flow" + ] + }, + "files": [ + "src/Flow/Bridge/Psr18/Telemetry/DSL/functions.php" + ] + }, + "autoload-dev": { + "psr-4": { + "Flow\\": "tests/Flow" + } + }, + "license": [ + "MIT" + ], + "description": "Flow PHP - PSR-18 Telemetry Bridge", + "homepage": "https://github.com/flow-php/flow", + "keywords": [ + "bridge", + "flow-php", + "psr-18", + "telemetry" + ], + "transport-options": { + "symlink": true, + "relative": true + } + }, { "name": "flow-php/symfony-http-foundation-telemetry-bridge", "version": "1.x-dev", @@ -865,6 +959,68 @@ "relative": true } }, + { + "name": "halaxa/json-machine", + "version": "1.2.6", + "source": { + "type": "git", + "url": "https://github.com/halaxa/json-machine.git", + "reference": "8bf0b0ff6ff60ab480778eaa5ad7d505b442c2d4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/halaxa/json-machine/zipball/8bf0b0ff6ff60ab480778eaa5ad7d505b442c2d4", + "reference": "8bf0b0ff6ff60ab480778eaa5ad7d505b442c2d4", + "shasum": "" + }, + "require": { + "php": "7.2 - 8.5" + }, + "require-dev": { + "ext-json": "*", + "friendsofphp/php-cs-fixer": "^3.0", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^8.0" + }, + "suggest": { + "ext-json": "To run JSON Machine out of the box without custom decoders.", + "guzzlehttp/guzzle": "To run example with GuzzleHttp" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "JsonMachine\\": "src/" + }, + "exclude-from-classmap": [ + "src/autoloader.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Filip Halaxa", + "email": "filip@halaxa.cz" + } + ], + "description": "Efficient, easy-to-use and fast JSON pull parser", + "support": { + "issues": "https://github.com/halaxa/json-machine/issues", + "source": "https://github.com/halaxa/json-machine/tree/1.2.6" + }, + "funding": [ + { + "url": "https://ko-fi.com/G2G57KTE4", + "type": "other" + } + ], + "time": "2025-12-05T14:53:09+00:00" + }, { "name": "league/commonmark", "version": "2.8.0", @@ -1224,16 +1380,16 @@ }, { "name": "nette/utils", - "version": "v4.1.2", + "version": "v4.1.3", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "f76b5dc3d6c6d3043c8d937df2698515b99cbaf5" + "reference": "bb3ea637e3d131d72acc033cfc2746ee893349fe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/f76b5dc3d6c6d3043c8d937df2698515b99cbaf5", - "reference": "f76b5dc3d6c6d3043c8d937df2698515b99cbaf5", + "url": "https://api.github.com/repos/nette/utils/zipball/bb3ea637e3d131d72acc033cfc2746ee893349fe", + "reference": "bb3ea637e3d131d72acc033cfc2746ee893349fe", "shasum": "" }, "require": { @@ -1245,8 +1401,10 @@ }, "require-dev": { "jetbrains/phpstorm-attributes": "^1.2", + "nette/phpstan-rules": "^1.0", "nette/tester": "^2.5", - "phpstan/phpstan": "^2.0@stable", + "phpstan/extension-installer": "^1.4@stable", + "phpstan/phpstan": "^2.1@stable", "tracy/tracy": "^2.9" }, "suggest": { @@ -1307,9 +1465,9 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.1.2" + "source": "https://github.com/nette/utils/tree/v4.1.3" }, - "time": "2026-02-03T17:21:09+00:00" + "time": "2026-02-13T03:05:33+00:00" }, { "name": "nyholm/psr7", @@ -7199,6 +7357,7 @@ "stability-flags": { "flow-php/etl": 20, "flow-php/etl-adapter-http": 20, + "flow-php/etl-adapter-json": 20, "flow-php/symfony-telemetry-bundle": 20, "norberttech/static-content-generator-bundle": 20 }, diff --git a/web/landing/config/packages/flow_telemetry.yaml b/web/landing/config/packages/flow_telemetry.yaml index 2c4cdbd18e..bee50c03e8 100644 --- a/web/landing/config/packages/flow_telemetry.yaml +++ b/web/landing/config/packages/flow_telemetry.yaml @@ -17,8 +17,8 @@ flow_telemetry: twig: enabled: true trace_templates: true - trace_blocks: true - trace_macros: true + trace_blocks: false + trace_macros: false exclude_templates: - '/\@WebProfiler*/' http_client: diff --git a/web/landing/resources/api.json b/web/landing/resources/api.json index 788e8ac457..77549b6c81 100644 --- a/web/landing/resources/api.json +++ b/web/landing/resources/api.json @@ -1 +1 @@ -[{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":21,"slug":"and","name":"and","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"function","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"All","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":26,"slug":"andnot","name":"andNot","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"function","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"All","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":31,"slug":"append","name":"append","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"suffix","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Append","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":44,"slug":"arrayfilter","name":"arrayFilter","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"value","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ArrayFilter","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBGaWx0ZXJzIGFuIGFycmF5IGJ5IHJlbW92aW5nIGFsbCBlbGVtZW50cyB0aGF0IG1hdGNoZXMgcGFzc2VkIHZhbHVlLgogICAgICogQXBwbGljYWJsZSB0byBhbGwgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgY2FuIGJlIGNvbnZlcnRlZCB0byBhbiBhcnJheToKICAgICAqICAgIC0ganNvbgogICAgICogICAgLSBsaXN0CiAgICAgKiAgICAtIG1hcAogICAgICogICAgLSBzdHJ1Y3R1cmUuCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":49,"slug":"arrayget","name":"arrayGet","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"path","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ArrayGet","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":57,"slug":"arraygetcollection","name":"arrayGetCollection","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"keys","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ArrayGetCollection","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8YXJyYXkta2V5LCBtaXhlZD4gJGtleXMKICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":62,"slug":"arraygetcollectionfirst","name":"arrayGetCollectionFirst","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"keys","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"ArrayGetCollection","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":75,"slug":"arraykeep","name":"arrayKeep","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"value","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ArrayKeep","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBGaWx0ZXJzIGFuIGFycmF5IGJ5IGtlZXBpbmcgb25seSBlbGVtZW50cyB0aGF0IG1hdGNoZXMgcGFzc2VkIHZhbHVlLgogICAgICogQXBwbGljYWJsZSB0byBhbGwgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgY2FuIGJlIGNvbnZlcnRlZCB0byBhbiBhcnJheToKICAgICAqICAgLSBqc29uCiAgICAgKiAgIC0gbGlzdAogICAgICogICAtIG1hcAogICAgICogICAtIHN0cnVjdHVyZS4KICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":88,"slug":"arraykeys","name":"arrayKeys","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"ArrayKeys","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBSZXR1cm5zIGFsbCBrZXlzIGZyb20gYW4gYXJyYXksIGlnbm9yaW5nIHRoZSB2YWx1ZXMuCiAgICAgKiBBcHBsaWNhYmxlIHRvIGFsbCBkYXRhIHN0cnVjdHVyZXMgdGhhdCBjYW4gYmUgY29udmVydGVkIHRvIGFuIGFycmF5OgogICAgICogICAtIGpzb24KICAgICAqICAgLSBsaXN0CiAgICAgKiAgIC0gbWFwCiAgICAgKiAgIC0gc3RydWN0dXJlLgogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":96,"slug":"arraymerge","name":"arrayMerge","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"ref","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ArrayMerge","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8YXJyYXkta2V5LCBtaXhlZD4gJHJlZgogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":101,"slug":"arraymergecollection","name":"arrayMergeCollection","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"ArrayMergeCollection","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":106,"slug":"arraypathexists","name":"arrayPathExists","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"path","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ArrayPathExists","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":111,"slug":"arrayreverse","name":"arrayReverse","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"preserveKeys","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"ArrayReverse","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":116,"slug":"arraysort","name":"arraySort","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"sortFunction","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"Sort","namespace":"Flow\\ETL\\Function\\ArraySort","is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"flags","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"recursive","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"}],"return_type":[{"name":"ArraySort","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":129,"slug":"arrayvalues","name":"arrayValues","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"ArrayValues","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBSZXR1cm5zIGFsbCB2YWx1ZXMgZnJvbSBhbiBhcnJheSwgaWdub3JpbmcgdGhlIGtleXMuCiAgICAgKiBBcHBsaWNhYmxlIHRvIGFsbCBkYXRhIHN0cnVjdHVyZXMgdGhhdCBjYW4gYmUgY29udmVydGVkIHRvIGFuIGFycmF5OgogICAgICogICAtIGpzb24KICAgICAqICAgLSBsaXN0CiAgICAgKiAgIC0gbWFwCiAgICAgKiAgIC0gc3RydWN0dXJlLgogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":134,"slug":"ascii","name":"ascii","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"Ascii","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":144,"slug":"between","name":"between","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"lowerBoundRef","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"upperBoundRef","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"boundary","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"Boundary","namespace":"Flow\\ETL\\Function\\Between","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Function\\Between\\Boundary::..."}],"return_type":[{"name":"Between","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBAcGFyYW0gbWl4ZWR8U2NhbGFyRnVuY3Rpb24gJGxvd2VyQm91bmRSZWYKICAgICAqIEBwYXJhbSBtaXhlZHxTY2FsYXJGdW5jdGlvbiAkdXBwZXJCb3VuZFJlZgogICAgICogQHBhcmFtIEJvdW5kYXJ5fFNjYWxhckZ1bmN0aW9uICRib3VuZGFyeQogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":149,"slug":"binarylength","name":"binaryLength","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"BinaryLength","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":158,"slug":"call","name":"call","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"callable","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"callable","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"arguments","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"refAlias","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"},{"name":"returnType","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"CallUserFunc","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8YXJyYXkta2V5LCBtaXhlZD4gJGFyZ3VtZW50cwogICAgICogQHBhcmFtIFR5cGU8bWl4ZWQ+ICRyZXR1cm5UeXBlCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":163,"slug":"capitalize","name":"capitalize","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"Capitalize","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":171,"slug":"cast","name":"cast","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"type","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Cast","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nfFR5cGU8bWl4ZWQ+ICR0eXBlCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":176,"slug":"chunk","name":"chunk","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"size","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Chunk","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":181,"slug":"coalesce","name":"coalesce","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"params","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Coalesce","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":186,"slug":"codepointlength","name":"codePointLength","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"CodePointLength","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":191,"slug":"collapsewhitespace","name":"collapseWhitespace","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"CollapseWhitespace","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":196,"slug":"concat","name":"concat","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"params","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Concat","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":201,"slug":"concatwithseparator","name":"concatWithSeparator","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"separator","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"params","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"ConcatWithSeparator","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":206,"slug":"contains","name":"contains","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"needle","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Contains","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":211,"slug":"dateformat","name":"dateFormat","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"format","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'Y-m-d'"}],"return_type":[{"name":"DateTimeFormat","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":216,"slug":"datetimeformat","name":"dateTimeFormat","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"format","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'Y-m-d H:i:s'"}],"return_type":[{"name":"DateTimeFormat","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":221,"slug":"divide","name":"divide","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"value","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"float","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"scale","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"rounding","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"Rounding","namespace":"Flow\\Calculator","is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Divide","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":229,"slug":"domelementattribute","name":"domElementAttribute","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"attribute","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"DOMElementAttributeValue","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBAZGVwcmVjYXRlZCBVc2UgZG9tRWxlbWVudEF0dHJpYnV0ZVZhbHVlIGluc3RlYWQKICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":234,"slug":"domelementattributescount","name":"domElementAttributesCount","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"DOMElementAttributesCount","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":239,"slug":"domelementattributevalue","name":"domElementAttributeValue","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"attribute","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"DOMElementAttributeValue","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":244,"slug":"domelementnextsibling","name":"domElementNextSibling","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"allowOnlyElement","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"DOMElementNextSibling","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":249,"slug":"domelementparent","name":"domElementParent","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"DOMElementParent","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":254,"slug":"domelementprevioussibling","name":"domElementPreviousSibling","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"allowOnlyElement","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"DOMElementPreviousSibling","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":259,"slug":"domelementvalue","name":"domElementValue","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"DOMElementValue","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":264,"slug":"endswith","name":"endsWith","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"needle","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"EndsWith","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":269,"slug":"ensureend","name":"ensureEnd","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"suffix","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"EnsureEnd","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":274,"slug":"ensurestart","name":"ensureStart","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"prefix","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"EnsureStart","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":279,"slug":"equals","name":"equals","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"ref","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Equals","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":284,"slug":"exists","name":"exists","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"Exists","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":309,"slug":"expand","name":"expand","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"expand","type":[{"name":"ArrayExpand","namespace":"Flow\\ETL\\Function\\ArrayExpand","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Function\\ArrayExpand\\ArrayExpand::..."}],"return_type":[{"name":"ArrayExpand","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBFeHBhbmRzIGVhY2ggdmFsdWUgaW50byBlbnRyeSwgaWYgdGhlcmUgYXJlIG1vcmUgdGhhbiBvbmUgdmFsdWUsIG11bHRpcGxlIHJvd3Mgd2lsbCBiZSBjcmVhdGVkLgogICAgICogQXJyYXkga2V5cyBhcmUgaWdub3JlZCwgb25seSB2YWx1ZXMgYXJlIHVzZWQgdG8gY3JlYXRlIG5ldyByb3dzLgogICAgICoKICAgICAqIEJlZm9yZToKICAgICAqICAgKy0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICAgKiAgIHxpZHwgICAgICAgICAgICAgIGFycmF5fAogICAgICogICArLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgICAqICAgfCAxfHsiYSI6MSwiYiI6MiwiYyI6M318CiAgICAgKiAgICstLSstLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgICoKICAgICAqIEFmdGVyOgogICAgICogICArLS0rLS0tLS0tLS0rCiAgICAgKiAgIHxpZHxleHBhbmRlZHwKICAgICAqICAgKy0tKy0tLS0tLS0tKwogICAgICogICB8IDF8ICAgICAgIDF8CiAgICAgKiAgIHwgMXwgICAgICAgMnwKICAgICAqICAgfCAxfCAgICAgICAzfAogICAgICogICArLS0rLS0tLS0tLS0rCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":314,"slug":"greaterthan","name":"greaterThan","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"ref","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"GreaterThan","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":319,"slug":"greaterthanequal","name":"greaterThanEqual","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"ref","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"GreaterThanEqual","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":324,"slug":"hash","name":"hash","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"algorithm","type":[{"name":"Algorithm","namespace":"Flow\\ETL\\Hash","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Hash\\NativePHPHash::..."}],"return_type":[{"name":"Hash","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":329,"slug":"htmlqueryselector","name":"htmlQuerySelector","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"path","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"HTMLQuerySelector","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":334,"slug":"htmlqueryselectorall","name":"htmlQuerySelectorAll","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"path","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"HTMLQuerySelectorAll","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":342,"slug":"indexof","name":"indexOf","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"needle","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"ignoreCase","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"offset","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"}],"return_type":[{"name":"IndexOf","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBSZXR1cm5zIHRoZSBpbmRleCBvZiBnaXZlbiAkbmVlZGxlIGluIHN0cmluZy4KICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":350,"slug":"indexoflast","name":"indexOfLast","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"needle","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"ignoreCase","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"offset","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"}],"return_type":[{"name":"IndexOfLast","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBSZXR1cm5zIHRoZSBsYXN0IGluZGV4IG9mIGdpdmVuICRuZWVkbGUgaW4gc3RyaW5nLgogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":355,"slug":"isempty","name":"isEmpty","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"IsEmpty","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":360,"slug":"iseven","name":"isEven","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"Equals","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":365,"slug":"isfalse","name":"isFalse","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"Same","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":373,"slug":"isin","name":"isIn","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"haystack","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"IsIn","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8YXJyYXkta2V5LCBtaXhlZD4gJGhheXN0YWNrCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":378,"slug":"isnotnull","name":"isNotNull","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"IsNotNull","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":383,"slug":"isnotnumeric","name":"isNotNumeric","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"IsNotNumeric","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":388,"slug":"isnull","name":"isNull","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"IsNull","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":393,"slug":"isnumeric","name":"isNumeric","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"IsNumeric","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":398,"slug":"isodd","name":"isOdd","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"NotEquals","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":403,"slug":"istrue","name":"isTrue","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"Same","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":411,"slug":"istype","name":"isType","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"types","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"IsType","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nfFR5cGU8bWl4ZWQ+ICR0eXBlcwogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":423,"slug":"isutf8","name":"isUtf8","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"IsUtf8","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBDaGVjayBzdHJpbmcgaXMgdXRmOCBhbmQgcmV0dXJucyB0cnVlIG9yIGZhbHNlLgogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":428,"slug":"jsondecode","name":"jsonDecode","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"flags","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"4194304"}],"return_type":[{"name":"JsonDecode","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":433,"slug":"jsonencode","name":"jsonEncode","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"flags","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"4194304"}],"return_type":[{"name":"JsonEncode","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":438,"slug":"lessthan","name":"lessThan","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"ref","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"LessThan","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":443,"slug":"lessthanequal","name":"lessThanEqual","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"ref","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"LessThanEqual","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":448,"slug":"literal","name":"literal","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"value","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Literal","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":453,"slug":"lower","name":"lower","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"ToLower","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":458,"slug":"minus","name":"minus","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"ref","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"float","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Minus","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":463,"slug":"mod","name":"mod","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"value","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Mod","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":468,"slug":"modifydatetime","name":"modifyDateTime","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"modifier","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ModifyDateTime","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":473,"slug":"multiply","name":"multiply","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"value","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"float","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Multiply","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":478,"slug":"notequals","name":"notEquals","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"value","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"NotEquals","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":483,"slug":"notsame","name":"notSame","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"value","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"NotSame","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":488,"slug":"numberformat","name":"numberFormat","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"decimals","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"2"},{"name":"decimalSeparator","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'.'"},{"name":"thousandsSeparator","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"','"}],"return_type":[{"name":"NumberFormat","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":499,"slug":"oneach","name":"onEach","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"function","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"preserveKeys","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"}],"return_type":[{"name":"OnEach","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBFeGVjdXRlIGEgc2NhbGFyIGZ1bmN0aW9uIG9uIGVhY2ggZWxlbWVudCBvZiBhbiBhcnJheS9saXN0L21hcC9zdHJ1Y3R1cmUgZW50cnkuCiAgICAgKiBJbiBvcmRlciB0byB1c2UgdGhpcyBmdW5jdGlvbiwgeW91IG5lZWQgdG8gcHJvdmlkZSBhIHJlZmVyZW5jZSB0byB0aGUgImVsZW1lbnQiIHRoYXQgd2lsbCBiZSB1c2VkIGluIHRoZSBmdW5jdGlvbi4KICAgICAqCiAgICAgKiBFeGFtcGxlOiAkZGYtPndpdGhFbnRyeSgnYXJyYXknLCByZWYoJ2FycmF5JyktPm9uRWFjaChyZWYoJ2VsZW1lbnQnKS0+Y2FzdCh0eXBlX3N0cmluZygpKSkpCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":504,"slug":"or","name":"or","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"function","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Any","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":509,"slug":"ornot","name":"orNot","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"function","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Any","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":514,"slug":"plus","name":"plus","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"ref","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"float","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Plus","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":519,"slug":"power","name":"power","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"value","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Power","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":524,"slug":"prepend","name":"prepend","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"prefix","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Prepend","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":529,"slug":"regex","name":"regex","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"pattern","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"flags","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"},{"name":"offset","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"}],"return_type":[{"name":"Regex","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":534,"slug":"regexall","name":"regexAll","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"pattern","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"flags","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"},{"name":"offset","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"}],"return_type":[{"name":"RegexAll","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":539,"slug":"regexmatch","name":"regexMatch","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"pattern","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"flags","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"},{"name":"offset","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"}],"return_type":[{"name":"RegexMatch","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":544,"slug":"regexmatchall","name":"regexMatchAll","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"pattern","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"flags","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"},{"name":"offset","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"}],"return_type":[{"name":"RegexMatchAll","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":549,"slug":"regexreplace","name":"regexReplace","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"pattern","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"replacement","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"limit","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"RegexReplace","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":554,"slug":"repeat","name":"repeat","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"times","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Repeat","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":559,"slug":"reverse","name":"reverse","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"Reverse","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":564,"slug":"round","name":"round","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"precision","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"2"},{"name":"mode","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"1"}],"return_type":[{"name":"Round","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":569,"slug":"same","name":"same","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"value","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Same","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":574,"slug":"sanitize","name":"sanitize","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"placeholder","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'*'"},{"name":"skipCharacters","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Sanitize","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":579,"slug":"size","name":"size","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"Size","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":587,"slug":"slug","name":"slug","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"separator","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'-'"},{"name":"locale","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"symbolsMap","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Slug","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBAcGFyYW0gbnVsbHxhcnJheTxhcnJheS1rZXksIG1peGVkPiAkc3ltYm9sc01hcAogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":592,"slug":"split","name":"split","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"separator","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"limit","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"9223372036854775807"}],"return_type":[{"name":"Split","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":597,"slug":"sprintf","name":"sprintf","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"params","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"float","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Sprintf","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":602,"slug":"startswith","name":"startsWith","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"needle","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"StartsWith","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":610,"slug":"stringafter","name":"stringAfter","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"needle","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"includeNeedle","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"StringAfter","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBSZXR1cm5zIHRoZSBjb250ZW50cyBmb3VuZCBhZnRlciB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB0aGUgZ2l2ZW4gc3RyaW5nLgogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":618,"slug":"stringafterlast","name":"stringAfterLast","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"needle","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"includeNeedle","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"StringAfterLast","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBSZXR1cm5zIHRoZSBjb250ZW50cyBmb3VuZCBhZnRlciB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIHRoZSBnaXZlbiBzdHJpbmcuCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":626,"slug":"stringbefore","name":"stringBefore","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"needle","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"includeNeedle","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"StringBefore","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBSZXR1cm5zIHRoZSBjb250ZW50cyBmb3VuZCBiZWZvcmUgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdGhlIGdpdmVuIHN0cmluZy4KICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":634,"slug":"stringbeforelast","name":"stringBeforeLast","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"needle","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"includeNeedle","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"StringBeforeLast","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBSZXR1cm5zIHRoZSBjb250ZW50cyBmb3VuZCBiZWZvcmUgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiB0aGUgZ2l2ZW4gc3RyaW5nLgogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":642,"slug":"stringcontainsany","name":"stringContainsAny","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"needles","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"StringContainsAny","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8c3RyaW5nPnxTY2FsYXJGdW5jdGlvbiAkbmVlZGxlcwogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":647,"slug":"stringequalsto","name":"stringEqualsTo","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"string","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"StringEqualsTo","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":655,"slug":"stringfold","name":"stringFold","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"StringFold","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHRoYXQgeW91IGNhbiB1c2UgaW4gY2FzZS1pbnNlbnNpdGl2ZSBjb21wYXJpc29ucy4KICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":660,"slug":"stringmatch","name":"stringMatch","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"pattern","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"StringMatch","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":665,"slug":"stringmatchall","name":"stringMatchAll","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"pattern","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"StringMatchAll","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":670,"slug":"stringnormalize","name":"stringNormalize","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"form","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"16"}],"return_type":[{"name":"StringNormalize","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":679,"slug":"stringstyle","name":"stringStyle","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"style","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"StringStyles","namespace":"Flow\\ETL\\Function\\StyleConverter","is_nullable":false,"is_variadic":false},{"name":"StringStyles","namespace":"Flow\\ETL\\String","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"StringStyle","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBDb3ZlcnQgc3RyaW5nIHRvIGEgc3R5bGUgZnJvbSBlbnVtIGxpc3QsIHBhc3NlZCBpbiBwYXJhbWV0ZXIuCiAgICAgKiBDYW4gYmUgc3RyaW5nICJ1cHBlciIgb3IgU3RyaW5nU3R5bGVzOjpVUFBFUiBmb3IgVXBwZXIgKGV4YW1wbGUpLgogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":687,"slug":"stringtitle","name":"stringTitle","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"allWords","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"StringTitle","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBDaGFuZ2VzIGFsbCBncmFwaGVtZXMvY29kZSBwb2ludHMgdG8gInRpdGxlIGNhc2UiLgogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":692,"slug":"stringwidth","name":"stringWidth","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"StringWidth","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":697,"slug":"strpad","name":"strPad","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"length","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"pad_string","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"' '"},{"name":"type","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"1"}],"return_type":[{"name":"StrPad","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":702,"slug":"strpadboth","name":"strPadBoth","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"length","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"pad_string","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"' '"}],"return_type":[{"name":"StrPad","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":707,"slug":"strpadleft","name":"strPadLeft","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"length","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"pad_string","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"' '"}],"return_type":[{"name":"StrPad","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":712,"slug":"strpadright","name":"strPadRight","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"length","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"pad_string","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"' '"}],"return_type":[{"name":"StrPad","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":721,"slug":"strreplace","name":"strReplace","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"search","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"replace","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"StrReplace","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8c3RyaW5nPnxTY2FsYXJGdW5jdGlvbnxzdHJpbmcgJHNlYXJjaAogICAgICogQHBhcmFtIGFycmF5PHN0cmluZz58U2NhbGFyRnVuY3Rpb258c3RyaW5nICRyZXBsYWNlCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":729,"slug":"todate","name":"toDate","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"format","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'Y-m-d\\\\TH:i:sP'"},{"name":"timeZone","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"DateTimeZone","namespace":"","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"DateTimeZone::..."}],"return_type":[{"name":"ToDate","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBAcGFyYW0gU2NhbGFyRnVuY3Rpb258c3RyaW5nICRmb3JtYXQgLSBjdXJyZW50IGZvcm1hdCBvZiB0aGUgZGF0ZSB0aGF0IHdpbGwgYmUgdXNlZCB0byBjcmVhdGUgRGF0ZVRpbWVJbW11dGFibGUgaW5zdGFuY2UKICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":738,"slug":"todatetime","name":"toDateTime","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"format","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'Y-m-d H:i:s'"},{"name":"timeZone","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"DateTimeZone","namespace":"","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"DateTimeZone::..."}],"return_type":[{"name":"ToDateTime","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBAcGFyYW0gU2NhbGFyRnVuY3Rpb258c3RyaW5nICRmb3JtYXQgLSBjdXJyZW50IGZvcm1hdCBvZiB0aGUgZGF0ZSB0aGF0IHdpbGwgYmUgdXNlZCB0byBjcmVhdGUgRGF0ZVRpbWVJbW11dGFibGUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSBcRGF0ZVRpbWVab25lfFNjYWxhckZ1bmN0aW9uICR0aW1lWm9uZQogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":743,"slug":"trim","name":"trim","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"type","type":[{"name":"Type","namespace":"Flow\\ETL\\Function\\Trim","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Function\\Trim\\Type::..."},{"name":"characters","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"' \\t\\n\\r\\0\u000b'"}],"return_type":[{"name":"Trim","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":748,"slug":"truncate","name":"truncate","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"length","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"ellipsis","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'...'"}],"return_type":[{"name":"Truncate","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":753,"slug":"unicodelength","name":"unicodeLength","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"UnicodeLength","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":780,"slug":"unpack","name":"unpack","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"skipKeys","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"entryPrefix","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"ArrayUnpack","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8YXJyYXkta2V5LCBtaXhlZD4gJHNraXBLZXlzCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":785,"slug":"upper","name":"upper","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"ToUpper","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":790,"slug":"wordwrap","name":"wordwrap","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"width","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"break","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'\\n'"},{"name":"cut","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"Wordwrap","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":795,"slug":"xpath","name":"xpath","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"string","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"XPath","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Flow.php","start_line_in_file":23,"slug":"setup","name":"setUp","class":"Flow\\ETL\\Flow","class_slug":"flow","parameters":[{"name":"config","type":[{"name":"ConfigBuilder","namespace":"Flow\\ETL\\Config","is_nullable":false,"is_variadic":false},{"name":"Config","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Flow.php","start_line_in_file":28,"slug":"extract","name":"extract","class":"Flow\\ETL\\Flow","class_slug":"flow","parameters":[{"name":"extractor","type":[{"name":"Extractor","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"DataFrame","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Flow.php","start_line_in_file":36,"slug":"from","name":"from","class":"Flow\\ETL\\Flow","class_slug":"flow","parameters":[{"name":"extractor","type":[{"name":"Extractor","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"DataFrame","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Flow.php","start_line_in_file":41,"slug":"process","name":"process","class":"Flow\\ETL\\Flow","class_slug":"flow","parameters":[{"name":"rows","type":[{"name":"Rows","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"DataFrame","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Flow.php","start_line_in_file":52,"slug":"read","name":"read","class":"Flow\\ETL\\Flow","class_slug":"flow","parameters":[{"name":"extractor","type":[{"name":"Extractor","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"DataFrame","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBBbGlhcyBmb3IgRmxvdzo6ZXh0cmFjdCBmdW5jdGlvbi4KICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":76,"slug":"aggregate","name":"aggregate","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"aggregations","type":[{"name":"AggregatingFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":86,"slug":"autocast","name":"autoCast","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":108,"slug":"batchby","name":"batchBy","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"column","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"minSize","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBNZXJnZS9TcGxpdCBSb3dzIHlpZWxkZWQgYnkgRXh0cmFjdG9yIGludG8gYmF0Y2hlcyBidXQga2VlcCB0aG9zZSB3aXRoIGNvbW1vbiB2YWx1ZSBpbiBnaXZlbiBjb2x1bW4gdG9nZXRoZXIuCiAgICAgKiBUaGlzIHdvcmtzIHByb3Blcmx5IG9ubHkgb24gc29ydGVkIGRhdGFzZXRzLgogICAgICoKICAgICAqIFdoZW4gbWluU2l6ZSBpcyBub3QgcHJvdmlkZWQsIGJhdGNoZXMgd2lsbCBiZSBjcmVhdGVkIG9ubHkgd2hlbiB0aGVyZSBpcyBhIGNoYW5nZSBpbiB2YWx1ZSBvZiB0aGUgY29sdW1uLgogICAgICogV2hlbiBtaW5TaXplIGlzIHByb3ZpZGVkLCBiYXRjaGVzIHdpbGwgYmUgY3JlYXRlZCBvbmx5IHdoZW4gdGhlcmUgaXMgYSBjaGFuZ2UgaW4gdmFsdWUgb2YgdGhlIGNvbHVtbiBvcgogICAgICogd2hlbiB0aGVyZSBhcmUgYXQgbGVhc3QgbWluU2l6ZSByb3dzIGluIHRoZSBiYXRjaC4KICAgICAqCiAgICAgKiBAcGFyYW0gUmVmZXJlbmNlfHN0cmluZyAkY29sdW1uIC0gY29sdW1uIHRvIGdyb3VwIGJ5IChhbGwgcm93cyB3aXRoIHNhbWUgdmFsdWUgc3RheSB0b2dldGhlcikKICAgICAqIEBwYXJhbSBudWxsfGludDwxLCBtYXg+ICRtaW5TaXplIC0gb3B0aW9uYWwgbWluaW11bSByb3dzIHBlciBiYXRjaCBmb3IgZWZmaWNpZW5jeQogICAgICoKICAgICAqIEBsYXp5CiAgICAgKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":128,"slug":"batchsize","name":"batchSize","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"size","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBNZXJnZS9TcGxpdCBSb3dzIHlpZWxkZWQgYnkgRXh0cmFjdG9yIGludG8gYmF0Y2hlcyBvZiBnaXZlbiBzaXplLgogICAgICogRm9yIGV4YW1wbGUsIHdoZW4gRXh0cmFjdG9yIGlzIHlpZWxkaW5nIG9uZSByb3cgYXQgdGltZSwgdGhpcyBtZXRob2Qgd2lsbCBtZXJnZSB0aGVtIGludG8gYmF0Y2hlcyBvZiBnaXZlbiBzaXplCiAgICAgKiBiZWZvcmUgcGFzc2luZyB0aGVtIHRvIHRoZSBuZXh0IHBpcGVsaW5lIGVsZW1lbnQuCiAgICAgKiBTaW1pbGFybHkgd2hlbiBFeHRyYWN0b3IgaXMgeWllbGRpbmcgYmF0Y2hlcyBvZiByb3dzLCB0aGlzIG1ldGhvZCB3aWxsIHNwbGl0IHRoZW0gaW50byBzbWFsbGVyIGJhdGNoZXMgb2YgZ2l2ZW4KICAgICAqIHNpemUuCiAgICAgKgogICAgICogSW4gb3JkZXIgdG8gbWVyZ2UgYWxsIFJvd3MgaW50byBhIHNpbmdsZSBiYXRjaCB1c2UgRGF0YUZyYW1lOjpjb2xsZWN0KCkgbWV0aG9kIG9yIHNldCBzaXplIHRvIC0xIG9yIDAuCiAgICAgKgogICAgICogQHBhcmFtIGludDwxLCBtYXg+ICRzaXplCiAgICAgKgogICAgICogQGxhenkKICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":155,"slug":"cache","name":"cache","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"id","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"cacheBatchSize","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBTdGFydCBwcm9jZXNzaW5nIHJvd3MgdXAgdG8gdGhpcyBtb21lbnQgYW5kIHB1dCBlYWNoIGluc3RhbmNlIG9mIFJvd3MKICAgICAqIGludG8gcHJldmlvdXNseSBkZWZpbmVkIGNhY2hlLgogICAgICogQ2FjaGUgdHlwZSBjYW4gYmUgc2V0IHRocm91Z2ggQ29uZmlnQnVpbGRlci4KICAgICAqIEJ5IGRlZmF1bHQgZXZlcnl0aGluZyBpcyBjYWNoZWQgaW4gc3lzdGVtIHRtcCBkaXIuCiAgICAgKgogICAgICogSW1wb3J0YW50OiBjYWNoZSBiYXRjaCBzaXplIG1pZ2h0IHNpZ25pZmljYW50bHkgaW1wcm92ZSBwZXJmb3JtYW5jZSB3aGVuIHByb2Nlc3NpbmcgbGFyZ2UgYW1vdW50IG9mIHJvd3MuCiAgICAgKiBMYXJnZXIgYmF0Y2ggc2l6ZSB3aWxsIGluY3JlYXNlIG1lbW9yeSBjb25zdW1wdGlvbiBidXQgd2lsbCByZWR1Y2UgbnVtYmVyIG9mIElPIG9wZXJhdGlvbnMuCiAgICAgKiBXaGVuIG5vdCBzZXQsIHRoZSBiYXRjaCBzaXplIGlzIHRha2VuIGZyb20gdGhlIGxhc3QgRGF0YUZyYW1lOjpiYXRjaFNpemUoKSBjYWxsLgogICAgICoKICAgICAqIEBsYXp5CiAgICAgKgogICAgICogQHBhcmFtIG51bGx8c3RyaW5nICRpZAogICAgICoKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":176,"slug":"collect","name":"collect","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBCZWZvcmUgdHJhbnNmb3JtaW5nIHJvd3MsIGNvbGxlY3QgdGhlbSBhbmQgbWVyZ2UgaW50byBzaW5nbGUgUm93cyBpbnN0YW5jZS4KICAgICAqIFRoaXMgbWlnaHQgbGVhZCB0byBtZW1vcnkgaXNzdWVzIHdoZW4gcHJvY2Vzc2luZyBsYXJnZSBhbW91bnQgb2Ygcm93cywgdXNlIHdpdGggY2F1dGlvbi4KICAgICAqCiAgICAgKiBAbGF6eQogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":195,"slug":"collectrefs","name":"collectRefs","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"references","type":[{"name":"References","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBUaGlzIG1ldGhvZCBhbGxvd3MgdG8gY29sbGVjdCByZWZlcmVuY2VzIHRvIGFsbCBlbnRyaWVzIHVzZWQgaW4gdGhpcyBwaXBlbGluZS4KICAgICAqCiAgICAgKiBgYGBwaHAKICAgICAqIChuZXcgRmxvdygpKQogICAgICogICAtPnJlYWQoRnJvbTo6Y2hhaW4oKSkKICAgICAqICAgLT5jb2xsZWN0UmVmcygkcmVmcyA9IHJlZnMoKSkKICAgICAqICAgLT5ydW4oKTsKICAgICAqIGBgYAogICAgICoKICAgICAqIEBsYXp5CiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":208,"slug":"constrain","name":"constrain","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"constraint","type":[{"name":"Constraint","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"constraints","type":[{"name":"Constraint","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":221,"slug":"count","name":"count","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[],"return_type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAdHJpZ2dlcgogICAgICogUmV0dXJuIHRvdGFsIGNvdW50IG9mIHJvd3MgcHJvY2Vzc2VkIGJ5IHRoaXMgcGlwZWxpbmUuCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":235,"slug":"crossjoin","name":"crossJoin","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"dataFrame","type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"prefix","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"''"}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":252,"slug":"display","name":"display","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"limit","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"20"},{"name":"truncate","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"20"},{"name":"formatter","type":[{"name":"Formatter","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Formatter\\AsciiTableFormatter::..."}],"return_type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAcGFyYW0gaW50ICRsaW1pdCBtYXhpbXVtIG51bWJlcnMgb2Ygcm93cyB0byBkaXNwbGF5CiAgICAgKiBAcGFyYW0gYm9vbHxpbnQgJHRydW5jYXRlIGZhbHNlIG9yIGlmIHNldCB0byAwIGNvbHVtbnMgYXJlIG5vdCB0cnVuY2F0ZWQsIG90aGVyd2lzZSBkZWZhdWx0IHRydW5jYXRlIHRvIDIwCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnMKICAgICAqIEBwYXJhbSBGb3JtYXR0ZXIgJGZvcm1hdHRlcgogICAgICoKICAgICAqIEB0cmlnZ2VyCiAgICAgKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":270,"slug":"drop","name":"drop","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"entries","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBEcm9wIGdpdmVuIGVudHJpZXMuCiAgICAgKgogICAgICogQGxhenkKICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":284,"slug":"dropduplicates","name":"dropDuplicates","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"entries","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAcGFyYW0gUmVmZXJlbmNlfHN0cmluZyAuLi4kZW50cmllcwogICAgICoKICAgICAqIEBsYXp5CiAgICAgKgogICAgICogQHJldHVybiAkdGhpcwogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":297,"slug":"droppartitions","name":"dropPartitions","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"dropPartitionColumns","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBEcm9wIGFsbCBwYXJ0aXRpb25zIGZyb20gUm93cywgYWRkaXRpb25hbGx5IHdoZW4gJGRyb3BQYXJ0aXRpb25Db2x1bW5zIGlzIHNldCB0byB0cnVlLCBwYXJ0aXRpb24gY29sdW1ucyBhcmUKICAgICAqIGFsc28gcmVtb3ZlZC4KICAgICAqCiAgICAgKiBAbGF6eQogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":304,"slug":"duplicaterow","name":"duplicateRow","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"condition","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"entries","type":[{"name":"WithEntry","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":324,"slug":"fetch","name":"fetch","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"limit","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Rows","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBCZSBhd2FyZSB0aGF0IGZldGNoIGlzIG5vdCBtZW1vcnkgc2FmZSBhbmQgd2lsbCBsb2FkIGFsbCByb3dzIGludG8gbWVtb3J5LgogICAgICogSWYgeW91IHdhbnQgdG8gc2FmZWx5IGl0ZXJhdGUgb3ZlciBSb3dzIHVzZSBvZSBvZiB0aGUgZm9sbG93aW5nIG1ldGhvZHM6LgogICAgICoKICAgICAqIERhdGFGcmFtZTo6Z2V0KCkgOiBcR2VuZXJhdG9yCiAgICAgKiBEYXRhRnJhbWU6OmdldEFzQXJyYXkoKSA6IFxHZW5lcmF0b3IKICAgICAqIERhdGFGcmFtZTo6Z2V0RWFjaCgpIDogXEdlbmVyYXRvcgogICAgICogRGF0YUZyYW1lOjpnZXRFYWNoQXNBcnJheSgpIDogXEdlbmVyYXRvcgogICAgICoKICAgICAqIEB0cmlnZ2VyCiAgICAgKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":342,"slug":"filter","name":"filter","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"function","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":354,"slug":"filterpartitions","name":"filterPartitions","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"filter","type":[{"name":"Filter","namespace":"Flow\\Filesystem\\Path","is_nullable":false,"is_variadic":false},{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICoKICAgICAqIEB0aHJvd3MgUnVudGltZUV4Y2VwdGlvbgogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":385,"slug":"filters","name":"filters","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"functions","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICoKICAgICAqIEBwYXJhbSBhcnJheTxTY2FsYXJGdW5jdGlvbj4gJGZ1bmN0aW9ucwogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":399,"slug":"foreach","name":"forEach","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"callback","type":[{"name":"callable","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"void","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAdHJpZ2dlcgogICAgICoKICAgICAqIEBwYXJhbSBudWxsfGNhbGxhYmxlKFJvd3MgJHJvd3MpIDogdm9pZCAkY2FsbGJhY2sKICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":411,"slug":"get","name":"get","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[],"return_type":[{"name":"Generator","namespace":"","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBZaWVsZHMgZWFjaCByb3cgYXMgYW4gaW5zdGFuY2Ugb2YgUm93cy4KICAgICAqCiAgICAgKiBAdHJpZ2dlcgogICAgICoKICAgICAqIEByZXR1cm4gXEdlbmVyYXRvcjxSb3dzPgogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":423,"slug":"getasarray","name":"getAsArray","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[],"return_type":[{"name":"Generator","namespace":"","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBZaWVsZHMgZWFjaCByb3cgYXMgYW4gYXJyYXkuCiAgICAgKgogICAgICogQHRyaWdnZXIKICAgICAqCiAgICAgKiBAcmV0dXJuIFxHZW5lcmF0b3I8YXJyYXk8YXJyYXk8bWl4ZWQ+Pj4KICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":437,"slug":"geteach","name":"getEach","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[],"return_type":[{"name":"Generator","namespace":"","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBZaWVsZCBlYWNoIHJvdyBhcyBhbiBpbnN0YW5jZSBvZiBSb3cuCiAgICAgKgogICAgICogQHRyaWdnZXIKICAgICAqCiAgICAgKiBAcmV0dXJuIFxHZW5lcmF0b3I8Um93PgogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":453,"slug":"geteachasarray","name":"getEachAsArray","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[],"return_type":[{"name":"Generator","namespace":"","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBZaWVsZCBlYWNoIHJvdyBhcyBhbiBhcnJheS4KICAgICAqCiAgICAgKiBAdHJpZ2dlcgogICAgICoKICAgICAqIEByZXR1cm4gXEdlbmVyYXRvcjxhcnJheTxtaXhlZD4+CiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":465,"slug":"groupby","name":"groupBy","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"entries","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"GroupedDataFrame","namespace":"Flow\\ETL\\DataFrame","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":473,"slug":"join","name":"join","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"dataFrame","type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"on","type":[{"name":"Expression","namespace":"Flow\\ETL\\Join","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"type","type":[{"name":"Join","namespace":"Flow\\ETL\\Join","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Join\\Join::..."}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":489,"slug":"joineach","name":"joinEach","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"factory","type":[{"name":"DataFrameFactory","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"on","type":[{"name":"Expression","namespace":"Flow\\ETL\\Join","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"type","type":[{"name":"Join","namespace":"Flow\\ETL\\Join","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Join\\Join::..."}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICoKICAgICAqIEBwc2FsbS1wYXJhbSBzdHJpbmd8Sm9pbiAkdHlwZQogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":512,"slug":"limit","name":"limit","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"limit","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICoKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":526,"slug":"load","name":"load","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"loader","type":[{"name":"Loader","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":538,"slug":"map","name":"map","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"callback","type":[{"name":"callable","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICoKICAgICAqIEBwYXJhbSBjYWxsYWJsZShSb3cgJHJvdykgOiBSb3cgJGNhbGxiYWNrCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":550,"slug":"match","name":"match","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"schema","type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"validator","type":[{"name":"SchemaValidator","namespace":"Flow\\ETL","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICoKICAgICAqIEBwYXJhbSBudWxsfFNjaGVtYVZhbGlkYXRvciAkdmFsaWRhdG9yIC0gd2hlbiBudWxsLCBTdHJpY3RWYWxpZGF0b3IgZ2V0cyBpbml0aWFsaXplZAogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":568,"slug":"mode","name":"mode","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"mode","type":[{"name":"SaveMode","namespace":"Flow\\ETL\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"ExecutionMode","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIHNldCB0aGUgYmVoYXZpb3Igb2YgdGhlIERhdGFGcmFtZS4KICAgICAqCiAgICAgKiBBdmFpbGFibGUgbW9kZXM6CiAgICAgKiAtIFNhdmVNb2RlIGRlZmluZXMgaG93IEZsb3cgc2hvdWxkIGJlaGF2ZSB3aGVuIHdyaXRpbmcgdG8gYSBmaWxlL2ZpbGVzIHRoYXQgYWxyZWFkeSBleGlzdHMuCiAgICAgKiAtIEV4ZWN1dGlvbk1vZGUgLSBkZWZpbmVzIGhvdyBmdW5jdGlvbnMgc2hvdWxkIGJlaGF2ZSB3aGVuIHRoZXkgZW5jb3VudGVyIHVuZXhwZWN0ZWQgZGF0YSAoZS5nLiwgdHlwZSBtaXNtYXRjaGVzLCBtaXNzaW5nIHZhbHVlcykuCiAgICAgKgogICAgICogQGxhenkKICAgICAqCiAgICAgKiBAcmV0dXJuICR0aGlzCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":593,"slug":"offset","name":"offset","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"offset","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBTa2lwIGdpdmVuIG51bWJlciBvZiByb3dzIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZGF0YXNldC4KICAgICAqIFdoZW4gJG9mZnNldCBpcyBudWxsLCBub3RoaW5nIGhhcHBlbnMgKG5vIHJvd3MgYXJlIHNraXBwZWQpLgogICAgICoKICAgICAqIFBlcmZvcm1hbmNlIE5vdGU6IERhdGFGcmFtZSBtdXN0IGl0ZXJhdGUgdGhyb3VnaCBhbmQgcHJvY2VzcyBhbGwgc2tpcHBlZCByb3dzCiAgICAgKiB0byByZWFjaCB0aGUgb2Zmc2V0IHBvc2l0aW9uLiBGb3IgbGFyZ2Ugb2Zmc2V0cywgdGhpcyBjYW4gaW1wYWN0IHBlcmZvcm1hbmNlCiAgICAgKiBhcyB0aGUgZGF0YSBzb3VyY2Ugc3RpbGwgbmVlZHMgdG8gYmUgcmVhZCBhbmQgcHJvY2Vzc2VkIHVwIHRvIHRoZSBvZmZzZXQgcG9pbnQuCiAgICAgKgogICAgICogQHBhcmFtID9pbnQ8MCwgbWF4PiAkb2Zmc2V0CiAgICAgKgogICAgICogQGxhenkKICAgICAqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":607,"slug":"onerror","name":"onError","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"handler","type":[{"name":"ErrorHandler","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":617,"slug":"partitionby","name":"partitionBy","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"entry","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"entries","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":626,"slug":"pivot","name":"pivot","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"ref","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":642,"slug":"printrows","name":"printRows","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"limit","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"20"},{"name":"truncate","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"20"},{"name":"formatter","type":[{"name":"Formatter","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Formatter\\AsciiTableFormatter::..."}],"return_type":[{"name":"void","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAdHJpZ2dlcgogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":656,"slug":"printschema","name":"printSchema","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"limit","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"20"},{"name":"formatter","type":[{"name":"SchemaFormatter","namespace":"Flow\\ETL\\Schema","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Row\\Formatter\\ASCIISchemaFormatter::..."}],"return_type":[{"name":"void","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAdHJpZ2dlcgogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":669,"slug":"rename","name":"rename","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"from","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"to","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":682,"slug":"renameall","name":"renameAll","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"search","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"replace","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICogSXRlcmF0ZSBvdmVyIGFsbCBlbnRyeSBuYW1lcyBhbmQgcmVwbGFjZSB0aGUgZ2l2ZW4gc2VhcmNoIHN0cmluZyB3aXRoIHJlcGxhY2Ugc3RyaW5nLgogICAgICoKICAgICAqIEBkZXByZWNhdGVkIHVzZSBEYXRhRnJhbWU6OnJlbmFtZUVhY2goKSB3aXRoIGEgUmVuYW1lUmVwbGFjZVN0cmF0ZWd5CiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":694,"slug":"renamealllowercase","name":"renameAllLowerCase","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICoKICAgICAqIEBkZXByZWNhdGVkIHVzZSBEYXRhRnJhbWU6OnJlbmFtZUVhY2goKSB3aXRoIGEgc2VsZWN0ZWQgU3RyaW5nU3R5bGVzCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":708,"slug":"renameallstyle","name":"renameAllStyle","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"style","type":[{"name":"StringStyles","namespace":"Flow\\ETL\\Function\\StyleConverter","is_nullable":false,"is_variadic":false},{"name":"StringStyles","namespace":"Flow\\ETL\\String","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICogUmVuYW1lIGFsbCBlbnRyaWVzIHRvIGEgZ2l2ZW4gc3R5bGUuCiAgICAgKiBQbGVhc2UgbG9vayBpbnRvIFxGbG93XEVUTFxGdW5jdGlvblxTdHlsZUNvbnZlcnRlclxTdHJpbmdTdHlsZXMgY2xhc3MgZm9yIGFsbCBhdmFpbGFibGUgc3R5bGVzLgogICAgICoKICAgICAqIEBkZXByZWNhdGVkIHVzZSBEYXRhRnJhbWU6OnJlbmFtZUVhY2goKSB3aXRoIGEgc2VsZWN0ZWQgU3R5bGUKICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":724,"slug":"renamealluppercase","name":"renameAllUpperCase","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICoKICAgICAqIEBkZXByZWNhdGVkIHVzZSBEYXRhRnJhbWU6OnJlbmFtZUVhY2goKSB3aXRoIGEgc2VsZWN0ZWQgU3R5bGUKICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":736,"slug":"renamealluppercasefirst","name":"renameAllUpperCaseFirst","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICoKICAgICAqIEBkZXByZWNhdGVkIHVzZSBEYXRhRnJhbWU6OnJlbmFtZUVhY2goKSB3aXRoIGEgc2VsZWN0ZWQgU3R5bGUKICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":748,"slug":"renamealluppercaseword","name":"renameAllUpperCaseWord","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICoKICAgICAqIEBkZXByZWNhdGVkIHVzZSBEYXRhRnJhbWU6OnJlbmFtZUVhY2goKSB3aXRoIGEgc2VsZWN0ZWQgU3R5bGUKICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":755,"slug":"renameeach","name":"renameEach","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"strategies","type":[{"name":"RenameEntryStrategy","namespace":"Flow\\ETL\\Transformer\\Rename","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":762,"slug":"reorderentries","name":"reorderEntries","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"comparator","type":[{"name":"Comparator","namespace":"Flow\\ETL\\Transformer\\OrderEntries","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Transformer\\OrderEntries\\TypeComparator::..."}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":773,"slug":"rows","name":"rows","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"transformer","type":[{"name":"Transformer","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false},{"name":"Transformation","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICogQWxpYXMgZm9yIEVUTDo6dHJhbnNmb3JtIG1ldGhvZC4KICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":791,"slug":"run","name":"run","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"callback","type":[{"name":"callable","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"analyze","type":[{"name":"Analyze","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"Report","namespace":"Flow\\ETL\\Dataset","is_nullable":true,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAdHJpZ2dlcgogICAgICoKICAgICAqIFdoZW4gYW5hbHl6aW5nIHBpcGVsaW5lIGV4ZWN1dGlvbiB3ZSBjYW4gY2hvc2UgdG8gY29sbGVjdCB2YXJpb3VzIG1ldHJpY3MgdGhyb3VnaCBhbmFseXplKCktPndpdGgqKCkgbWV0aG9kCiAgICAgKgogICAgICogLSBjb2x1bW4gc3RhdGlzdGljcyAtIGFuYWx5emUoKS0+d2l0aENvbHVtblN0YXRpc3RpY3MoKQogICAgICogLSBzY2hlbWEgLSBhbmFseXplKCktPndpdGhTY2hlbWEoKQogICAgICoKICAgICAqIEBwYXJhbSBudWxsfGNhbGxhYmxlKFJvd3MgJHJvd3MsIEZsb3dDb250ZXh0ICRjb250ZXh0KTogdm9pZCAkY2FsbGJhY2sKICAgICAqIEBwYXJhbSBBbmFseXplfGJvb2wgJGFuYWx5emUgLSB3aGVuIHNldCBydW4gd2lsbCByZXR1cm4gUmVwb3J0CiAgICAgKgogICAgICogQHJldHVybiAoJGFuYWx5emUgaXMgQW5hbHl6ZXx0cnVlID8gUmVwb3J0IDogbnVsbCkKICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":823,"slug":"savemode","name":"saveMode","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"mode","type":[{"name":"SaveMode","namespace":"Flow\\ETL\\Filesystem","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBBbGlhcyBmb3IgRGF0YUZyYW1lOjptb2RlLgogICAgICoKICAgICAqIEBsYXp5CiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":834,"slug":"schema","name":"schema","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[],"return_type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAcmV0dXJuIFNjaGVtYQogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":849,"slug":"select","name":"select","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"entries","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICogS2VlcCBvbmx5IGdpdmVuIGVudHJpZXMuCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":859,"slug":"sortby","name":"sortBy","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"entries","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":871,"slug":"transform","name":"transform","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"transformer","type":[{"name":"Transformer","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false},{"name":"Transformation","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false},{"name":"Transformations","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false},{"name":"WithEntry","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBBbGlhcyBmb3IgRGF0YUZyYW1lOjp3aXRoKCkuCiAgICAgKgogICAgICogQGxhenkKICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":882,"slug":"until","name":"until","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"function","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGZpbHRlciBhbmQgdW50aWwgaXMgdGhhdCBmaWx0ZXIgd2lsbCBrZWVwIGZpbHRlcmluZyByb3dzIHVudGlsIGV4dHJhY3RvcnMgZmluaXNoIHlpZWxkaW5nCiAgICAgKiByb3dzLiBVbnRpbCB3aWxsIHNlbmQgYSBTVE9QIHNpZ25hbCB0byB0aGUgRXh0cmFjdG9yIHdoZW4gdGhlIGNvbmRpdGlvbiBpcyBub3QgbWV0LgogICAgICoKICAgICAqIEBsYXp5CiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":896,"slug":"validate","name":"validate","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"schema","type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"validator","type":[{"name":"SchemaValidator","namespace":"Flow\\ETL","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAZGVwcmVjYXRlZCBQbGVhc2UgdXNlIERhdGFGcmFtZTo6bWF0Y2ggaW5zdGVhZAogICAgICoKICAgICAqIEBsYXp5CiAgICAgKgogICAgICogQHBhcmFtIG51bGx8U2NoZW1hVmFsaWRhdG9yICR2YWxpZGF0b3IgLSB3aGVuIG51bGwsIFN0cmljdFZhbGlkYXRvciBnZXRzIGluaXRpYWxpemVkCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":910,"slug":"void","name":"void","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICogVGhpcyBtZXRob2QgaXMgdXNlZnVsIG1vc3RseSBpbiBkZXZlbG9wbWVudCB3aGVuCiAgICAgKiB5b3Ugd2FudCB0byBwYXVzZSBwcm9jZXNzaW5nIGF0IGNlcnRhaW4gbW9tZW50IHdpdGhvdXQKICAgICAqIHJlbW92aW5nIGNvZGUuIEFsbCBvcGVyYXRpb25zIHdpbGwgZ2V0IHByb2Nlc3NlZCB1cCB0byB0aGlzIHBvaW50LAogICAgICogZnJvbSBoZXJlIG5vIHJvd3MgYXJlIHBhc3NlZCBmb3J3YXJkLgogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":920,"slug":"with","name":"with","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"transformer","type":[{"name":"Transformer","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false},{"name":"Transformation","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false},{"name":"Transformations","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false},{"name":"WithEntry","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":948,"slug":"withentries","name":"withEntries","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"references","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICoKICAgICAqIEBwYXJhbSBhcnJheTxpbnQsIFdpdGhFbnRyeT58YXJyYXk8c3RyaW5nLCBTY2FsYXJGdW5jdGlvbnxXaW5kb3dGdW5jdGlvbnxXaXRoRW50cnk+ICRyZWZlcmVuY2VzCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":966,"slug":"withentry","name":"withEntry","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"entry","type":[{"name":"Definition","namespace":"Flow\\ETL\\Schema","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"reference","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"WindowFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAcGFyYW0gRGVmaW5pdGlvbjxtaXhlZD58c3RyaW5nICRlbnRyeQogICAgICoKICAgICAqIEBsYXp5CiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":993,"slug":"write","name":"write","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"loader","type":[{"name":"Loader","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICogQWxpYXMgZm9yIEVUTDo6bG9hZCBmdW5jdGlvbi4KICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame\/GroupedDataFrame.php","start_line_in_file":18,"slug":"aggregate","name":"aggregate","class":"Flow\\ETL\\DataFrame\\GroupedDataFrame","class_slug":"groupeddataframe","parameters":[{"name":"aggregations","type":[{"name":"AggregatingFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"DataFrame","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame\/GroupedDataFrame.php","start_line_in_file":34,"slug":"pivot","name":"pivot","class":"Flow\\ETL\\DataFrame\\GroupedDataFrame","class_slug":"groupeddataframe","parameters":[{"name":"ref","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":null}] \ No newline at end of file +[{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":21,"slug":"and","name":"and","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"function","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"All","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":26,"slug":"andnot","name":"andNot","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"function","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"All","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":31,"slug":"append","name":"append","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"suffix","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Append","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":44,"slug":"arrayfilter","name":"arrayFilter","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"value","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ArrayFilter","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBGaWx0ZXJzIGFuIGFycmF5IGJ5IHJlbW92aW5nIGFsbCBlbGVtZW50cyB0aGF0IG1hdGNoZXMgcGFzc2VkIHZhbHVlLgogICAgICogQXBwbGljYWJsZSB0byBhbGwgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgY2FuIGJlIGNvbnZlcnRlZCB0byBhbiBhcnJheToKICAgICAqICAgIC0ganNvbgogICAgICogICAgLSBsaXN0CiAgICAgKiAgICAtIG1hcAogICAgICogICAgLSBzdHJ1Y3R1cmUuCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":49,"slug":"arrayget","name":"arrayGet","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"path","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ArrayGet","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":57,"slug":"arraygetcollection","name":"arrayGetCollection","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"keys","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ArrayGetCollection","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8YXJyYXkta2V5LCBtaXhlZD4gJGtleXMKICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":62,"slug":"arraygetcollectionfirst","name":"arrayGetCollectionFirst","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"keys","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"ArrayGetCollection","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":75,"slug":"arraykeep","name":"arrayKeep","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"value","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ArrayKeep","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBGaWx0ZXJzIGFuIGFycmF5IGJ5IGtlZXBpbmcgb25seSBlbGVtZW50cyB0aGF0IG1hdGNoZXMgcGFzc2VkIHZhbHVlLgogICAgICogQXBwbGljYWJsZSB0byBhbGwgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgY2FuIGJlIGNvbnZlcnRlZCB0byBhbiBhcnJheToKICAgICAqICAgLSBqc29uCiAgICAgKiAgIC0gbGlzdAogICAgICogICAtIG1hcAogICAgICogICAtIHN0cnVjdHVyZS4KICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":88,"slug":"arraykeys","name":"arrayKeys","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"ArrayKeys","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBSZXR1cm5zIGFsbCBrZXlzIGZyb20gYW4gYXJyYXksIGlnbm9yaW5nIHRoZSB2YWx1ZXMuCiAgICAgKiBBcHBsaWNhYmxlIHRvIGFsbCBkYXRhIHN0cnVjdHVyZXMgdGhhdCBjYW4gYmUgY29udmVydGVkIHRvIGFuIGFycmF5OgogICAgICogICAtIGpzb24KICAgICAqICAgLSBsaXN0CiAgICAgKiAgIC0gbWFwCiAgICAgKiAgIC0gc3RydWN0dXJlLgogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":96,"slug":"arraymerge","name":"arrayMerge","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"ref","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ArrayMerge","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8YXJyYXkta2V5LCBtaXhlZD4gJHJlZgogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":101,"slug":"arraymergecollection","name":"arrayMergeCollection","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"ArrayMergeCollection","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":106,"slug":"arraypathexists","name":"arrayPathExists","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"path","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ArrayPathExists","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":111,"slug":"arrayreverse","name":"arrayReverse","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"preserveKeys","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"ArrayReverse","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":116,"slug":"arraysort","name":"arraySort","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"sortFunction","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"Sort","namespace":"Flow\\ETL\\Function\\ArraySort","is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"flags","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"recursive","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"}],"return_type":[{"name":"ArraySort","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":129,"slug":"arrayvalues","name":"arrayValues","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"ArrayValues","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBSZXR1cm5zIGFsbCB2YWx1ZXMgZnJvbSBhbiBhcnJheSwgaWdub3JpbmcgdGhlIGtleXMuCiAgICAgKiBBcHBsaWNhYmxlIHRvIGFsbCBkYXRhIHN0cnVjdHVyZXMgdGhhdCBjYW4gYmUgY29udmVydGVkIHRvIGFuIGFycmF5OgogICAgICogICAtIGpzb24KICAgICAqICAgLSBsaXN0CiAgICAgKiAgIC0gbWFwCiAgICAgKiAgIC0gc3RydWN0dXJlLgogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":134,"slug":"ascii","name":"ascii","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"Ascii","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":144,"slug":"between","name":"between","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"lowerBoundRef","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"upperBoundRef","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"boundary","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"Boundary","namespace":"Flow\\ETL\\Function\\Between","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Function\\Between\\Boundary::..."}],"return_type":[{"name":"Between","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBAcGFyYW0gbWl4ZWR8U2NhbGFyRnVuY3Rpb24gJGxvd2VyQm91bmRSZWYKICAgICAqIEBwYXJhbSBtaXhlZHxTY2FsYXJGdW5jdGlvbiAkdXBwZXJCb3VuZFJlZgogICAgICogQHBhcmFtIEJvdW5kYXJ5fFNjYWxhckZ1bmN0aW9uICRib3VuZGFyeQogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":149,"slug":"binarylength","name":"binaryLength","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"BinaryLength","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":158,"slug":"call","name":"call","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"callable","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"callable","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"arguments","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"refAlias","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"},{"name":"returnType","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"CallUserFunc","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8YXJyYXkta2V5LCBtaXhlZD4gJGFyZ3VtZW50cwogICAgICogQHBhcmFtIFR5cGU8bWl4ZWQ+ICRyZXR1cm5UeXBlCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":163,"slug":"capitalize","name":"capitalize","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"Capitalize","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":171,"slug":"cast","name":"cast","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"type","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Cast","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nfFR5cGU8bWl4ZWQ+ICR0eXBlCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":176,"slug":"chunk","name":"chunk","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"size","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Chunk","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":181,"slug":"coalesce","name":"coalesce","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"params","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Coalesce","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":186,"slug":"codepointlength","name":"codePointLength","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"CodePointLength","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":191,"slug":"collapsewhitespace","name":"collapseWhitespace","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"CollapseWhitespace","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":196,"slug":"concat","name":"concat","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"params","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Concat","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":201,"slug":"concatwithseparator","name":"concatWithSeparator","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"separator","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"params","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"ConcatWithSeparator","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":206,"slug":"contains","name":"contains","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"needle","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Contains","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":211,"slug":"dateformat","name":"dateFormat","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"format","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'Y-m-d'"}],"return_type":[{"name":"DateTimeFormat","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":216,"slug":"datetimeformat","name":"dateTimeFormat","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"format","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'Y-m-d H:i:s'"}],"return_type":[{"name":"DateTimeFormat","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":221,"slug":"divide","name":"divide","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"value","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"float","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"scale","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"rounding","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"Rounding","namespace":"Flow\\Calculator","is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Divide","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":229,"slug":"domelementattribute","name":"domElementAttribute","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"attribute","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"DOMElementAttributeValue","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBAZGVwcmVjYXRlZCBVc2UgZG9tRWxlbWVudEF0dHJpYnV0ZVZhbHVlIGluc3RlYWQKICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":234,"slug":"domelementattributescount","name":"domElementAttributesCount","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"DOMElementAttributesCount","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":239,"slug":"domelementattributevalue","name":"domElementAttributeValue","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"attribute","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"DOMElementAttributeValue","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":244,"slug":"domelementnextsibling","name":"domElementNextSibling","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"allowOnlyElement","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"DOMElementNextSibling","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":249,"slug":"domelementparent","name":"domElementParent","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"DOMElementParent","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":254,"slug":"domelementprevioussibling","name":"domElementPreviousSibling","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"allowOnlyElement","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"DOMElementPreviousSibling","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":259,"slug":"domelementvalue","name":"domElementValue","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"DOMElementValue","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":264,"slug":"endswith","name":"endsWith","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"needle","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"EndsWith","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":269,"slug":"ensureend","name":"ensureEnd","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"suffix","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"EnsureEnd","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":274,"slug":"ensurestart","name":"ensureStart","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"prefix","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"EnsureStart","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":279,"slug":"equals","name":"equals","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"ref","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Equals","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":284,"slug":"exists","name":"exists","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"Exists","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":309,"slug":"expand","name":"expand","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"expand","type":[{"name":"ArrayExpand","namespace":"Flow\\ETL\\Function\\ArrayExpand","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Function\\ArrayExpand\\ArrayExpand::..."}],"return_type":[{"name":"ArrayExpand","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBFeHBhbmRzIGVhY2ggdmFsdWUgaW50byBlbnRyeSwgaWYgdGhlcmUgYXJlIG1vcmUgdGhhbiBvbmUgdmFsdWUsIG11bHRpcGxlIHJvd3Mgd2lsbCBiZSBjcmVhdGVkLgogICAgICogQXJyYXkga2V5cyBhcmUgaWdub3JlZCwgb25seSB2YWx1ZXMgYXJlIHVzZWQgdG8gY3JlYXRlIG5ldyByb3dzLgogICAgICoKICAgICAqIEJlZm9yZToKICAgICAqICAgKy0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICAgKiAgIHxpZHwgICAgICAgICAgICAgIGFycmF5fAogICAgICogICArLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgICAqICAgfCAxfHsiYSI6MSwiYiI6MiwiYyI6M318CiAgICAgKiAgICstLSstLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgICoKICAgICAqIEFmdGVyOgogICAgICogICArLS0rLS0tLS0tLS0rCiAgICAgKiAgIHxpZHxleHBhbmRlZHwKICAgICAqICAgKy0tKy0tLS0tLS0tKwogICAgICogICB8IDF8ICAgICAgIDF8CiAgICAgKiAgIHwgMXwgICAgICAgMnwKICAgICAqICAgfCAxfCAgICAgICAzfAogICAgICogICArLS0rLS0tLS0tLS0rCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":314,"slug":"greaterthan","name":"greaterThan","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"ref","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"GreaterThan","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":319,"slug":"greaterthanequal","name":"greaterThanEqual","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"ref","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"GreaterThanEqual","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":324,"slug":"hash","name":"hash","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"algorithm","type":[{"name":"Algorithm","namespace":"Flow\\ETL\\Hash","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Hash\\NativePHPHash::..."}],"return_type":[{"name":"Hash","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":329,"slug":"htmlqueryselector","name":"htmlQuerySelector","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"path","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"HTMLQuerySelector","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":334,"slug":"htmlqueryselectorall","name":"htmlQuerySelectorAll","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"path","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"HTMLQuerySelectorAll","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":342,"slug":"indexof","name":"indexOf","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"needle","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"ignoreCase","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"offset","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"}],"return_type":[{"name":"IndexOf","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBSZXR1cm5zIHRoZSBpbmRleCBvZiBnaXZlbiAkbmVlZGxlIGluIHN0cmluZy4KICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":350,"slug":"indexoflast","name":"indexOfLast","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"needle","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"ignoreCase","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"offset","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"}],"return_type":[{"name":"IndexOfLast","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBSZXR1cm5zIHRoZSBsYXN0IGluZGV4IG9mIGdpdmVuICRuZWVkbGUgaW4gc3RyaW5nLgogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":355,"slug":"isempty","name":"isEmpty","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"IsEmpty","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":360,"slug":"iseven","name":"isEven","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"Equals","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":365,"slug":"isfalse","name":"isFalse","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"Same","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":373,"slug":"isin","name":"isIn","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"haystack","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"IsIn","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8YXJyYXkta2V5LCBtaXhlZD4gJGhheXN0YWNrCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":378,"slug":"isnotnull","name":"isNotNull","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"IsNotNull","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":383,"slug":"isnotnumeric","name":"isNotNumeric","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"IsNotNumeric","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":388,"slug":"isnull","name":"isNull","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"IsNull","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":393,"slug":"isnumeric","name":"isNumeric","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"IsNumeric","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":398,"slug":"isodd","name":"isOdd","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"NotEquals","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":403,"slug":"istrue","name":"isTrue","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"Same","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":411,"slug":"istype","name":"isType","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"types","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"IsType","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nfFR5cGU8bWl4ZWQ+ICR0eXBlcwogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":423,"slug":"isutf8","name":"isUtf8","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"IsUtf8","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBDaGVjayBzdHJpbmcgaXMgdXRmOCBhbmQgcmV0dXJucyB0cnVlIG9yIGZhbHNlLgogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":428,"slug":"jsondecode","name":"jsonDecode","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"flags","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"4194304"}],"return_type":[{"name":"JsonDecode","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":433,"slug":"jsonencode","name":"jsonEncode","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"flags","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"4194304"}],"return_type":[{"name":"JsonEncode","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":438,"slug":"lessthan","name":"lessThan","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"ref","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"LessThan","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":443,"slug":"lessthanequal","name":"lessThanEqual","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"ref","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"LessThanEqual","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":448,"slug":"literal","name":"literal","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"value","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Literal","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":453,"slug":"lower","name":"lower","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"ToLower","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":458,"slug":"minus","name":"minus","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"ref","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"float","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Minus","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":463,"slug":"mod","name":"mod","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"value","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Mod","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":468,"slug":"modifydatetime","name":"modifyDateTime","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"modifier","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ModifyDateTime","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":473,"slug":"multiply","name":"multiply","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"value","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"float","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Multiply","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":478,"slug":"notequals","name":"notEquals","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"value","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"NotEquals","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":483,"slug":"notsame","name":"notSame","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"value","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"NotSame","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":488,"slug":"numberformat","name":"numberFormat","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"decimals","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"2"},{"name":"decimalSeparator","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'.'"},{"name":"thousandsSeparator","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"','"}],"return_type":[{"name":"NumberFormat","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":499,"slug":"oneach","name":"onEach","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"function","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"preserveKeys","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"}],"return_type":[{"name":"OnEach","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBFeGVjdXRlIGEgc2NhbGFyIGZ1bmN0aW9uIG9uIGVhY2ggZWxlbWVudCBvZiBhbiBhcnJheS9saXN0L21hcC9zdHJ1Y3R1cmUgZW50cnkuCiAgICAgKiBJbiBvcmRlciB0byB1c2UgdGhpcyBmdW5jdGlvbiwgeW91IG5lZWQgdG8gcHJvdmlkZSBhIHJlZmVyZW5jZSB0byB0aGUgImVsZW1lbnQiIHRoYXQgd2lsbCBiZSB1c2VkIGluIHRoZSBmdW5jdGlvbi4KICAgICAqCiAgICAgKiBFeGFtcGxlOiAkZGYtPndpdGhFbnRyeSgnYXJyYXknLCByZWYoJ2FycmF5JyktPm9uRWFjaChyZWYoJ2VsZW1lbnQnKS0+Y2FzdCh0eXBlX3N0cmluZygpKSkpCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":504,"slug":"or","name":"or","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"function","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Any","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":509,"slug":"ornot","name":"orNot","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"function","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Any","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":514,"slug":"plus","name":"plus","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"ref","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"float","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Plus","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":519,"slug":"power","name":"power","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"value","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Power","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":524,"slug":"prepend","name":"prepend","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"prefix","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Prepend","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":529,"slug":"regex","name":"regex","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"pattern","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"flags","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"},{"name":"offset","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"}],"return_type":[{"name":"Regex","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":534,"slug":"regexall","name":"regexAll","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"pattern","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"flags","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"},{"name":"offset","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"}],"return_type":[{"name":"RegexAll","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":539,"slug":"regexmatch","name":"regexMatch","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"pattern","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"flags","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"},{"name":"offset","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"}],"return_type":[{"name":"RegexMatch","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":544,"slug":"regexmatchall","name":"regexMatchAll","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"pattern","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"flags","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"},{"name":"offset","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"}],"return_type":[{"name":"RegexMatchAll","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":549,"slug":"regexreplace","name":"regexReplace","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"pattern","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"replacement","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"limit","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"RegexReplace","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":554,"slug":"repeat","name":"repeat","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"times","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Repeat","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":559,"slug":"reverse","name":"reverse","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"Reverse","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":564,"slug":"round","name":"round","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"precision","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"2"},{"name":"mode","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"1"}],"return_type":[{"name":"Round","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":569,"slug":"same","name":"same","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"value","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Same","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":574,"slug":"sanitize","name":"sanitize","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"placeholder","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'*'"},{"name":"skipCharacters","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Sanitize","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":579,"slug":"size","name":"size","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"Size","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":587,"slug":"slug","name":"slug","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"separator","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'-'"},{"name":"locale","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"symbolsMap","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Slug","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBAcGFyYW0gbnVsbHxhcnJheTxhcnJheS1rZXksIG1peGVkPiAkc3ltYm9sc01hcAogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":592,"slug":"split","name":"split","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"separator","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"limit","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"9223372036854775807"}],"return_type":[{"name":"Split","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":597,"slug":"sprintf","name":"sprintf","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"params","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"float","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Sprintf","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":602,"slug":"startswith","name":"startsWith","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"needle","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"StartsWith","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":610,"slug":"stringafter","name":"stringAfter","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"needle","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"includeNeedle","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"StringAfter","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBSZXR1cm5zIHRoZSBjb250ZW50cyBmb3VuZCBhZnRlciB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB0aGUgZ2l2ZW4gc3RyaW5nLgogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":618,"slug":"stringafterlast","name":"stringAfterLast","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"needle","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"includeNeedle","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"StringAfterLast","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBSZXR1cm5zIHRoZSBjb250ZW50cyBmb3VuZCBhZnRlciB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIHRoZSBnaXZlbiBzdHJpbmcuCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":626,"slug":"stringbefore","name":"stringBefore","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"needle","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"includeNeedle","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"StringBefore","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBSZXR1cm5zIHRoZSBjb250ZW50cyBmb3VuZCBiZWZvcmUgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdGhlIGdpdmVuIHN0cmluZy4KICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":634,"slug":"stringbeforelast","name":"stringBeforeLast","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"needle","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"includeNeedle","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"StringBeforeLast","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBSZXR1cm5zIHRoZSBjb250ZW50cyBmb3VuZCBiZWZvcmUgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiB0aGUgZ2l2ZW4gc3RyaW5nLgogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":642,"slug":"stringcontainsany","name":"stringContainsAny","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"needles","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"StringContainsAny","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8c3RyaW5nPnxTY2FsYXJGdW5jdGlvbiAkbmVlZGxlcwogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":647,"slug":"stringequalsto","name":"stringEqualsTo","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"string","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"StringEqualsTo","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":655,"slug":"stringfold","name":"stringFold","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"StringFold","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHRoYXQgeW91IGNhbiB1c2UgaW4gY2FzZS1pbnNlbnNpdGl2ZSBjb21wYXJpc29ucy4KICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":660,"slug":"stringmatch","name":"stringMatch","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"pattern","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"StringMatch","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":665,"slug":"stringmatchall","name":"stringMatchAll","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"pattern","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"StringMatchAll","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":670,"slug":"stringnormalize","name":"stringNormalize","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"form","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"16"}],"return_type":[{"name":"StringNormalize","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":679,"slug":"stringstyle","name":"stringStyle","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"style","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"StringStyles","namespace":"Flow\\ETL\\Function\\StyleConverter","is_nullable":false,"is_variadic":false},{"name":"StringStyles","namespace":"Flow\\ETL\\String","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"StringStyle","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBDb3ZlcnQgc3RyaW5nIHRvIGEgc3R5bGUgZnJvbSBlbnVtIGxpc3QsIHBhc3NlZCBpbiBwYXJhbWV0ZXIuCiAgICAgKiBDYW4gYmUgc3RyaW5nICJ1cHBlciIgb3IgU3RyaW5nU3R5bGVzOjpVUFBFUiBmb3IgVXBwZXIgKGV4YW1wbGUpLgogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":687,"slug":"stringtitle","name":"stringTitle","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"allWords","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"StringTitle","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBDaGFuZ2VzIGFsbCBncmFwaGVtZXMvY29kZSBwb2ludHMgdG8gInRpdGxlIGNhc2UiLgogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":692,"slug":"stringwidth","name":"stringWidth","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"StringWidth","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":697,"slug":"strpad","name":"strPad","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"length","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"pad_string","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"' '"},{"name":"type","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"1"}],"return_type":[{"name":"StrPad","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":702,"slug":"strpadboth","name":"strPadBoth","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"length","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"pad_string","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"' '"}],"return_type":[{"name":"StrPad","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":707,"slug":"strpadleft","name":"strPadLeft","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"length","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"pad_string","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"' '"}],"return_type":[{"name":"StrPad","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":712,"slug":"strpadright","name":"strPadRight","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"length","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"pad_string","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"' '"}],"return_type":[{"name":"StrPad","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":721,"slug":"strreplace","name":"strReplace","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"search","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"replace","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"StrReplace","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8c3RyaW5nPnxTY2FsYXJGdW5jdGlvbnxzdHJpbmcgJHNlYXJjaAogICAgICogQHBhcmFtIGFycmF5PHN0cmluZz58U2NhbGFyRnVuY3Rpb258c3RyaW5nICRyZXBsYWNlCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":729,"slug":"todate","name":"toDate","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"format","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'Y-m-d\\\\TH:i:sP'"},{"name":"timeZone","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"DateTimeZone","namespace":"","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"DateTimeZone::..."}],"return_type":[{"name":"ToDate","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBAcGFyYW0gU2NhbGFyRnVuY3Rpb258c3RyaW5nICRmb3JtYXQgLSBjdXJyZW50IGZvcm1hdCBvZiB0aGUgZGF0ZSB0aGF0IHdpbGwgYmUgdXNlZCB0byBjcmVhdGUgRGF0ZVRpbWVJbW11dGFibGUgaW5zdGFuY2UKICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":738,"slug":"todatetime","name":"toDateTime","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"format","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'Y-m-d H:i:s'"},{"name":"timeZone","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"DateTimeZone","namespace":"","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"DateTimeZone::..."}],"return_type":[{"name":"ToDateTime","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBAcGFyYW0gU2NhbGFyRnVuY3Rpb258c3RyaW5nICRmb3JtYXQgLSBjdXJyZW50IGZvcm1hdCBvZiB0aGUgZGF0ZSB0aGF0IHdpbGwgYmUgdXNlZCB0byBjcmVhdGUgRGF0ZVRpbWVJbW11dGFibGUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSBcRGF0ZVRpbWVab25lfFNjYWxhckZ1bmN0aW9uICR0aW1lWm9uZQogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":743,"slug":"trim","name":"trim","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"type","type":[{"name":"Type","namespace":"Flow\\ETL\\Function\\Trim","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Function\\Trim\\Type::..."},{"name":"characters","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"' \\t\\n\\r\\0\u000b'"}],"return_type":[{"name":"Trim","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":748,"slug":"truncate","name":"truncate","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"length","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"ellipsis","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'...'"}],"return_type":[{"name":"Truncate","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":753,"slug":"unicodelength","name":"unicodeLength","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"UnicodeLength","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":780,"slug":"unpack","name":"unpack","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"skipKeys","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"entryPrefix","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"ArrayUnpack","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":"LyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8YXJyYXkta2V5LCBtaXhlZD4gJHNraXBLZXlzCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":785,"slug":"upper","name":"upper","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[],"return_type":[{"name":"ToUpper","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":790,"slug":"wordwrap","name":"wordwrap","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"width","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"break","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'\\n'"},{"name":"cut","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"Wordwrap","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Function\/ScalarFunctionChain.php","start_line_in_file":795,"slug":"xpath","name":"xpath","class":"Flow\\ETL\\Function\\ScalarFunctionChain","class_slug":"scalarfunctionchain","parameters":[{"name":"string","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"XPath","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Flow.php","start_line_in_file":23,"slug":"setup","name":"setUp","class":"Flow\\ETL\\Flow","class_slug":"flow","parameters":[{"name":"config","type":[{"name":"ConfigBuilder","namespace":"Flow\\ETL\\Config","is_nullable":false,"is_variadic":false},{"name":"Config","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Flow.php","start_line_in_file":28,"slug":"extract","name":"extract","class":"Flow\\ETL\\Flow","class_slug":"flow","parameters":[{"name":"extractor","type":[{"name":"Extractor","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"DataFrame","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Flow.php","start_line_in_file":36,"slug":"from","name":"from","class":"Flow\\ETL\\Flow","class_slug":"flow","parameters":[{"name":"extractor","type":[{"name":"Extractor","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"DataFrame","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Flow.php","start_line_in_file":41,"slug":"process","name":"process","class":"Flow\\ETL\\Flow","class_slug":"flow","parameters":[{"name":"rows","type":[{"name":"Rows","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"DataFrame","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/Flow.php","start_line_in_file":52,"slug":"read","name":"read","class":"Flow\\ETL\\Flow","class_slug":"flow","parameters":[{"name":"extractor","type":[{"name":"Extractor","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"DataFrame","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBBbGlhcyBmb3IgRmxvdzo6ZXh0cmFjdCBmdW5jdGlvbi4KICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":76,"slug":"aggregate","name":"aggregate","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"aggregations","type":[{"name":"AggregatingFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":86,"slug":"autocast","name":"autoCast","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":108,"slug":"batchby","name":"batchBy","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"column","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"minSize","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBNZXJnZS9TcGxpdCBSb3dzIHlpZWxkZWQgYnkgRXh0cmFjdG9yIGludG8gYmF0Y2hlcyBidXQga2VlcCB0aG9zZSB3aXRoIGNvbW1vbiB2YWx1ZSBpbiBnaXZlbiBjb2x1bW4gdG9nZXRoZXIuCiAgICAgKiBUaGlzIHdvcmtzIHByb3Blcmx5IG9ubHkgb24gc29ydGVkIGRhdGFzZXRzLgogICAgICoKICAgICAqIFdoZW4gbWluU2l6ZSBpcyBub3QgcHJvdmlkZWQsIGJhdGNoZXMgd2lsbCBiZSBjcmVhdGVkIG9ubHkgd2hlbiB0aGVyZSBpcyBhIGNoYW5nZSBpbiB2YWx1ZSBvZiB0aGUgY29sdW1uLgogICAgICogV2hlbiBtaW5TaXplIGlzIHByb3ZpZGVkLCBiYXRjaGVzIHdpbGwgYmUgY3JlYXRlZCBvbmx5IHdoZW4gdGhlcmUgaXMgYSBjaGFuZ2UgaW4gdmFsdWUgb2YgdGhlIGNvbHVtbiBvcgogICAgICogd2hlbiB0aGVyZSBhcmUgYXQgbGVhc3QgbWluU2l6ZSByb3dzIGluIHRoZSBiYXRjaC4KICAgICAqCiAgICAgKiBAcGFyYW0gUmVmZXJlbmNlfHN0cmluZyAkY29sdW1uIC0gY29sdW1uIHRvIGdyb3VwIGJ5IChhbGwgcm93cyB3aXRoIHNhbWUgdmFsdWUgc3RheSB0b2dldGhlcikKICAgICAqIEBwYXJhbSBudWxsfGludDwxLCBtYXg+ICRtaW5TaXplIC0gb3B0aW9uYWwgbWluaW11bSByb3dzIHBlciBiYXRjaCBmb3IgZWZmaWNpZW5jeQogICAgICoKICAgICAqIEBsYXp5CiAgICAgKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":128,"slug":"batchsize","name":"batchSize","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"size","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBNZXJnZS9TcGxpdCBSb3dzIHlpZWxkZWQgYnkgRXh0cmFjdG9yIGludG8gYmF0Y2hlcyBvZiBnaXZlbiBzaXplLgogICAgICogRm9yIGV4YW1wbGUsIHdoZW4gRXh0cmFjdG9yIGlzIHlpZWxkaW5nIG9uZSByb3cgYXQgdGltZSwgdGhpcyBtZXRob2Qgd2lsbCBtZXJnZSB0aGVtIGludG8gYmF0Y2hlcyBvZiBnaXZlbiBzaXplCiAgICAgKiBiZWZvcmUgcGFzc2luZyB0aGVtIHRvIHRoZSBuZXh0IHBpcGVsaW5lIGVsZW1lbnQuCiAgICAgKiBTaW1pbGFybHkgd2hlbiBFeHRyYWN0b3IgaXMgeWllbGRpbmcgYmF0Y2hlcyBvZiByb3dzLCB0aGlzIG1ldGhvZCB3aWxsIHNwbGl0IHRoZW0gaW50byBzbWFsbGVyIGJhdGNoZXMgb2YgZ2l2ZW4KICAgICAqIHNpemUuCiAgICAgKgogICAgICogSW4gb3JkZXIgdG8gbWVyZ2UgYWxsIFJvd3MgaW50byBhIHNpbmdsZSBiYXRjaCB1c2UgRGF0YUZyYW1lOjpjb2xsZWN0KCkgbWV0aG9kIG9yIHNldCBzaXplIHRvIC0xIG9yIDAuCiAgICAgKgogICAgICogQHBhcmFtIGludDwxLCBtYXg+ICRzaXplCiAgICAgKgogICAgICogQGxhenkKICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":155,"slug":"cache","name":"cache","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"id","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"cacheBatchSize","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBTdGFydCBwcm9jZXNzaW5nIHJvd3MgdXAgdG8gdGhpcyBtb21lbnQgYW5kIHB1dCBlYWNoIGluc3RhbmNlIG9mIFJvd3MKICAgICAqIGludG8gcHJldmlvdXNseSBkZWZpbmVkIGNhY2hlLgogICAgICogQ2FjaGUgdHlwZSBjYW4gYmUgc2V0IHRocm91Z2ggQ29uZmlnQnVpbGRlci4KICAgICAqIEJ5IGRlZmF1bHQgZXZlcnl0aGluZyBpcyBjYWNoZWQgaW4gc3lzdGVtIHRtcCBkaXIuCiAgICAgKgogICAgICogSW1wb3J0YW50OiBjYWNoZSBiYXRjaCBzaXplIG1pZ2h0IHNpZ25pZmljYW50bHkgaW1wcm92ZSBwZXJmb3JtYW5jZSB3aGVuIHByb2Nlc3NpbmcgbGFyZ2UgYW1vdW50IG9mIHJvd3MuCiAgICAgKiBMYXJnZXIgYmF0Y2ggc2l6ZSB3aWxsIGluY3JlYXNlIG1lbW9yeSBjb25zdW1wdGlvbiBidXQgd2lsbCByZWR1Y2UgbnVtYmVyIG9mIElPIG9wZXJhdGlvbnMuCiAgICAgKiBXaGVuIG5vdCBzZXQsIHRoZSBiYXRjaCBzaXplIGlzIHRha2VuIGZyb20gdGhlIGxhc3QgRGF0YUZyYW1lOjpiYXRjaFNpemUoKSBjYWxsLgogICAgICoKICAgICAqIEBsYXp5CiAgICAgKgogICAgICogQHBhcmFtIG51bGx8c3RyaW5nICRpZAogICAgICoKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":176,"slug":"collect","name":"collect","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBCZWZvcmUgdHJhbnNmb3JtaW5nIHJvd3MsIGNvbGxlY3QgdGhlbSBhbmQgbWVyZ2UgaW50byBzaW5nbGUgUm93cyBpbnN0YW5jZS4KICAgICAqIFRoaXMgbWlnaHQgbGVhZCB0byBtZW1vcnkgaXNzdWVzIHdoZW4gcHJvY2Vzc2luZyBsYXJnZSBhbW91bnQgb2Ygcm93cywgdXNlIHdpdGggY2F1dGlvbi4KICAgICAqCiAgICAgKiBAbGF6eQogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":195,"slug":"collectrefs","name":"collectRefs","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"references","type":[{"name":"References","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBUaGlzIG1ldGhvZCBhbGxvd3MgdG8gY29sbGVjdCByZWZlcmVuY2VzIHRvIGFsbCBlbnRyaWVzIHVzZWQgaW4gdGhpcyBwaXBlbGluZS4KICAgICAqCiAgICAgKiBgYGBwaHAKICAgICAqIChuZXcgRmxvdygpKQogICAgICogICAtPnJlYWQoRnJvbTo6Y2hhaW4oKSkKICAgICAqICAgLT5jb2xsZWN0UmVmcygkcmVmcyA9IHJlZnMoKSkKICAgICAqICAgLT5ydW4oKTsKICAgICAqIGBgYAogICAgICoKICAgICAqIEBsYXp5CiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":208,"slug":"constrain","name":"constrain","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"constraint","type":[{"name":"Constraint","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"constraints","type":[{"name":"Constraint","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":221,"slug":"count","name":"count","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[],"return_type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAdHJpZ2dlcgogICAgICogUmV0dXJuIHRvdGFsIGNvdW50IG9mIHJvd3MgcHJvY2Vzc2VkIGJ5IHRoaXMgcGlwZWxpbmUuCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":242,"slug":"crossjoin","name":"crossJoin","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"dataFrame","type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"prefix","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"''"}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":259,"slug":"display","name":"display","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"limit","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"20"},{"name":"truncate","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"20"},{"name":"formatter","type":[{"name":"Formatter","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Formatter\\AsciiTableFormatter::..."}],"return_type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAcGFyYW0gaW50ICRsaW1pdCBtYXhpbXVtIG51bWJlcnMgb2Ygcm93cyB0byBkaXNwbGF5CiAgICAgKiBAcGFyYW0gYm9vbHxpbnQgJHRydW5jYXRlIGZhbHNlIG9yIGlmIHNldCB0byAwIGNvbHVtbnMgYXJlIG5vdCB0cnVuY2F0ZWQsIG90aGVyd2lzZSBkZWZhdWx0IHRydW5jYXRlIHRvIDIwCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnMKICAgICAqIEBwYXJhbSBGb3JtYXR0ZXIgJGZvcm1hdHRlcgogICAgICoKICAgICAqIEB0cmlnZ2VyCiAgICAgKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":284,"slug":"drop","name":"drop","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"entries","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBEcm9wIGdpdmVuIGVudHJpZXMuCiAgICAgKgogICAgICogQGxhenkKICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":298,"slug":"dropduplicates","name":"dropDuplicates","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"entries","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAcGFyYW0gUmVmZXJlbmNlfHN0cmluZyAuLi4kZW50cmllcwogICAgICoKICAgICAqIEBsYXp5CiAgICAgKgogICAgICogQHJldHVybiAkdGhpcwogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":311,"slug":"droppartitions","name":"dropPartitions","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"dropPartitionColumns","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBEcm9wIGFsbCBwYXJ0aXRpb25zIGZyb20gUm93cywgYWRkaXRpb25hbGx5IHdoZW4gJGRyb3BQYXJ0aXRpb25Db2x1bW5zIGlzIHNldCB0byB0cnVlLCBwYXJ0aXRpb24gY29sdW1ucyBhcmUKICAgICAqIGFsc28gcmVtb3ZlZC4KICAgICAqCiAgICAgKiBAbGF6eQogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":318,"slug":"duplicaterow","name":"duplicateRow","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"condition","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"entries","type":[{"name":"WithEntry","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":338,"slug":"fetch","name":"fetch","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"limit","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Rows","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBCZSBhd2FyZSB0aGF0IGZldGNoIGlzIG5vdCBtZW1vcnkgc2FmZSBhbmQgd2lsbCBsb2FkIGFsbCByb3dzIGludG8gbWVtb3J5LgogICAgICogSWYgeW91IHdhbnQgdG8gc2FmZWx5IGl0ZXJhdGUgb3ZlciBSb3dzIHVzZSBvZSBvZiB0aGUgZm9sbG93aW5nIG1ldGhvZHM6LgogICAgICoKICAgICAqIERhdGFGcmFtZTo6Z2V0KCkgOiBcR2VuZXJhdG9yCiAgICAgKiBEYXRhRnJhbWU6OmdldEFzQXJyYXkoKSA6IFxHZW5lcmF0b3IKICAgICAqIERhdGFGcmFtZTo6Z2V0RWFjaCgpIDogXEdlbmVyYXRvcgogICAgICogRGF0YUZyYW1lOjpnZXRFYWNoQXNBcnJheSgpIDogXEdlbmVyYXRvcgogICAgICoKICAgICAqIEB0cmlnZ2VyCiAgICAgKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":363,"slug":"filter","name":"filter","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"function","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":375,"slug":"filterpartitions","name":"filterPartitions","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"filter","type":[{"name":"Filter","namespace":"Flow\\Filesystem\\Path","is_nullable":false,"is_variadic":false},{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICoKICAgICAqIEB0aHJvd3MgUnVudGltZUV4Y2VwdGlvbgogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":406,"slug":"filters","name":"filters","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"functions","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICoKICAgICAqIEBwYXJhbSBhcnJheTxTY2FsYXJGdW5jdGlvbj4gJGZ1bmN0aW9ucwogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":420,"slug":"foreach","name":"forEach","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"callback","type":[{"name":"callable","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"void","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAdHJpZ2dlcgogICAgICoKICAgICAqIEBwYXJhbSBudWxsfGNhbGxhYmxlKFJvd3MgJHJvd3MpIDogdm9pZCAkY2FsbGJhY2sKICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":432,"slug":"get","name":"get","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[],"return_type":[{"name":"Generator","namespace":"","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBZaWVsZHMgZWFjaCByb3cgYXMgYW4gaW5zdGFuY2Ugb2YgUm93cy4KICAgICAqCiAgICAgKiBAdHJpZ2dlcgogICAgICoKICAgICAqIEByZXR1cm4gXEdlbmVyYXRvcjxSb3dzPgogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":453,"slug":"getasarray","name":"getAsArray","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[],"return_type":[{"name":"Generator","namespace":"","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBZaWVsZHMgZWFjaCByb3cgYXMgYW4gYXJyYXkuCiAgICAgKgogICAgICogQHRyaWdnZXIKICAgICAqCiAgICAgKiBAcmV0dXJuIFxHZW5lcmF0b3I8YXJyYXk8YXJyYXk8bWl4ZWQ+Pj4KICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":474,"slug":"geteach","name":"getEach","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[],"return_type":[{"name":"Generator","namespace":"","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBZaWVsZCBlYWNoIHJvdyBhcyBhbiBpbnN0YW5jZSBvZiBSb3cuCiAgICAgKgogICAgICogQHRyaWdnZXIKICAgICAqCiAgICAgKiBAcmV0dXJuIFxHZW5lcmF0b3I8Um93PgogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":497,"slug":"geteachasarray","name":"getEachAsArray","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[],"return_type":[{"name":"Generator","namespace":"","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBZaWVsZCBlYWNoIHJvdyBhcyBhbiBhcnJheS4KICAgICAqCiAgICAgKiBAdHJpZ2dlcgogICAgICoKICAgICAqIEByZXR1cm4gXEdlbmVyYXRvcjxhcnJheTxtaXhlZD4+CiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":516,"slug":"groupby","name":"groupBy","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"entries","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"GroupedDataFrame","namespace":"Flow\\ETL\\DataFrame","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":524,"slug":"join","name":"join","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"dataFrame","type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"on","type":[{"name":"Expression","namespace":"Flow\\ETL\\Join","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"type","type":[{"name":"Join","namespace":"Flow\\ETL\\Join","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Join\\Join::..."}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":540,"slug":"joineach","name":"joinEach","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"factory","type":[{"name":"DataFrameFactory","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"on","type":[{"name":"Expression","namespace":"Flow\\ETL\\Join","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"type","type":[{"name":"Join","namespace":"Flow\\ETL\\Join","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Join\\Join::..."}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICoKICAgICAqIEBwc2FsbS1wYXJhbSBzdHJpbmd8Sm9pbiAkdHlwZQogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":563,"slug":"limit","name":"limit","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"limit","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICoKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":577,"slug":"load","name":"load","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"loader","type":[{"name":"Loader","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":589,"slug":"map","name":"map","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"callback","type":[{"name":"callable","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICoKICAgICAqIEBwYXJhbSBjYWxsYWJsZShSb3cgJHJvdykgOiBSb3cgJGNhbGxiYWNrCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":601,"slug":"match","name":"match","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"schema","type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"validator","type":[{"name":"SchemaValidator","namespace":"Flow\\ETL","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICoKICAgICAqIEBwYXJhbSBudWxsfFNjaGVtYVZhbGlkYXRvciAkdmFsaWRhdG9yIC0gd2hlbiBudWxsLCBTdHJpY3RWYWxpZGF0b3IgZ2V0cyBpbml0aWFsaXplZAogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":619,"slug":"mode","name":"mode","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"mode","type":[{"name":"SaveMode","namespace":"Flow\\ETL\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"ExecutionMode","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIHNldCB0aGUgYmVoYXZpb3Igb2YgdGhlIERhdGFGcmFtZS4KICAgICAqCiAgICAgKiBBdmFpbGFibGUgbW9kZXM6CiAgICAgKiAtIFNhdmVNb2RlIGRlZmluZXMgaG93IEZsb3cgc2hvdWxkIGJlaGF2ZSB3aGVuIHdyaXRpbmcgdG8gYSBmaWxlL2ZpbGVzIHRoYXQgYWxyZWFkeSBleGlzdHMuCiAgICAgKiAtIEV4ZWN1dGlvbk1vZGUgLSBkZWZpbmVzIGhvdyBmdW5jdGlvbnMgc2hvdWxkIGJlaGF2ZSB3aGVuIHRoZXkgZW5jb3VudGVyIHVuZXhwZWN0ZWQgZGF0YSAoZS5nLiwgdHlwZSBtaXNtYXRjaGVzLCBtaXNzaW5nIHZhbHVlcykuCiAgICAgKgogICAgICogQGxhenkKICAgICAqCiAgICAgKiBAcmV0dXJuICR0aGlzCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":644,"slug":"offset","name":"offset","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"offset","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBTa2lwIGdpdmVuIG51bWJlciBvZiByb3dzIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZGF0YXNldC4KICAgICAqIFdoZW4gJG9mZnNldCBpcyBudWxsLCBub3RoaW5nIGhhcHBlbnMgKG5vIHJvd3MgYXJlIHNraXBwZWQpLgogICAgICoKICAgICAqIFBlcmZvcm1hbmNlIE5vdGU6IERhdGFGcmFtZSBtdXN0IGl0ZXJhdGUgdGhyb3VnaCBhbmQgcHJvY2VzcyBhbGwgc2tpcHBlZCByb3dzCiAgICAgKiB0byByZWFjaCB0aGUgb2Zmc2V0IHBvc2l0aW9uLiBGb3IgbGFyZ2Ugb2Zmc2V0cywgdGhpcyBjYW4gaW1wYWN0IHBlcmZvcm1hbmNlCiAgICAgKiBhcyB0aGUgZGF0YSBzb3VyY2Ugc3RpbGwgbmVlZHMgdG8gYmUgcmVhZCBhbmQgcHJvY2Vzc2VkIHVwIHRvIHRoZSBvZmZzZXQgcG9pbnQuCiAgICAgKgogICAgICogQHBhcmFtID9pbnQ8MCwgbWF4PiAkb2Zmc2V0CiAgICAgKgogICAgICogQGxhenkKICAgICAqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":658,"slug":"onerror","name":"onError","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"handler","type":[{"name":"ErrorHandler","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":668,"slug":"partitionby","name":"partitionBy","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"entry","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"entries","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":677,"slug":"pivot","name":"pivot","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"ref","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":693,"slug":"printrows","name":"printRows","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"limit","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"20"},{"name":"truncate","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"20"},{"name":"formatter","type":[{"name":"Formatter","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Formatter\\AsciiTableFormatter::..."}],"return_type":[{"name":"void","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAdHJpZ2dlcgogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":707,"slug":"printschema","name":"printSchema","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"limit","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"20"},{"name":"formatter","type":[{"name":"SchemaFormatter","namespace":"Flow\\ETL\\Schema","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Row\\Formatter\\ASCIISchemaFormatter::..."}],"return_type":[{"name":"void","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAdHJpZ2dlcgogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":720,"slug":"rename","name":"rename","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"from","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"to","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":733,"slug":"renameall","name":"renameAll","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"search","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"replace","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICogSXRlcmF0ZSBvdmVyIGFsbCBlbnRyeSBuYW1lcyBhbmQgcmVwbGFjZSB0aGUgZ2l2ZW4gc2VhcmNoIHN0cmluZyB3aXRoIHJlcGxhY2Ugc3RyaW5nLgogICAgICoKICAgICAqIEBkZXByZWNhdGVkIHVzZSBEYXRhRnJhbWU6OnJlbmFtZUVhY2goKSB3aXRoIGEgUmVuYW1lUmVwbGFjZVN0cmF0ZWd5CiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":745,"slug":"renamealllowercase","name":"renameAllLowerCase","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICoKICAgICAqIEBkZXByZWNhdGVkIHVzZSBEYXRhRnJhbWU6OnJlbmFtZUVhY2goKSB3aXRoIGEgc2VsZWN0ZWQgU3RyaW5nU3R5bGVzCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":759,"slug":"renameallstyle","name":"renameAllStyle","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"style","type":[{"name":"StringStyles","namespace":"Flow\\ETL\\Function\\StyleConverter","is_nullable":false,"is_variadic":false},{"name":"StringStyles","namespace":"Flow\\ETL\\String","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICogUmVuYW1lIGFsbCBlbnRyaWVzIHRvIGEgZ2l2ZW4gc3R5bGUuCiAgICAgKiBQbGVhc2UgbG9vayBpbnRvIFxGbG93XEVUTFxGdW5jdGlvblxTdHlsZUNvbnZlcnRlclxTdHJpbmdTdHlsZXMgY2xhc3MgZm9yIGFsbCBhdmFpbGFibGUgc3R5bGVzLgogICAgICoKICAgICAqIEBkZXByZWNhdGVkIHVzZSBEYXRhRnJhbWU6OnJlbmFtZUVhY2goKSB3aXRoIGEgc2VsZWN0ZWQgU3R5bGUKICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":775,"slug":"renamealluppercase","name":"renameAllUpperCase","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICoKICAgICAqIEBkZXByZWNhdGVkIHVzZSBEYXRhRnJhbWU6OnJlbmFtZUVhY2goKSB3aXRoIGEgc2VsZWN0ZWQgU3R5bGUKICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":787,"slug":"renamealluppercasefirst","name":"renameAllUpperCaseFirst","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICoKICAgICAqIEBkZXByZWNhdGVkIHVzZSBEYXRhRnJhbWU6OnJlbmFtZUVhY2goKSB3aXRoIGEgc2VsZWN0ZWQgU3R5bGUKICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":799,"slug":"renamealluppercaseword","name":"renameAllUpperCaseWord","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICoKICAgICAqIEBkZXByZWNhdGVkIHVzZSBEYXRhRnJhbWU6OnJlbmFtZUVhY2goKSB3aXRoIGEgc2VsZWN0ZWQgU3R5bGUKICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":806,"slug":"renameeach","name":"renameEach","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"strategies","type":[{"name":"RenameEntryStrategy","namespace":"Flow\\ETL\\Transformer\\Rename","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":813,"slug":"reorderentries","name":"reorderEntries","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"comparator","type":[{"name":"Comparator","namespace":"Flow\\ETL\\Transformer\\OrderEntries","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Transformer\\OrderEntries\\TypeComparator::..."}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":824,"slug":"rows","name":"rows","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"transformer","type":[{"name":"Transformer","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false},{"name":"Transformation","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICogQWxpYXMgZm9yIEVUTDo6dHJhbnNmb3JtIG1ldGhvZC4KICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":842,"slug":"run","name":"run","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"callback","type":[{"name":"callable","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"analyze","type":[{"name":"Analyze","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"Report","namespace":"Flow\\ETL\\Dataset","is_nullable":true,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAdHJpZ2dlcgogICAgICoKICAgICAqIFdoZW4gYW5hbHl6aW5nIHBpcGVsaW5lIGV4ZWN1dGlvbiB3ZSBjYW4gY2hvc2UgdG8gY29sbGVjdCB2YXJpb3VzIG1ldHJpY3MgdGhyb3VnaCBhbmFseXplKCktPndpdGgqKCkgbWV0aG9kCiAgICAgKgogICAgICogLSBjb2x1bW4gc3RhdGlzdGljcyAtIGFuYWx5emUoKS0+d2l0aENvbHVtblN0YXRpc3RpY3MoKQogICAgICogLSBzY2hlbWEgLSBhbmFseXplKCktPndpdGhTY2hlbWEoKQogICAgICoKICAgICAqIEBwYXJhbSBudWxsfGNhbGxhYmxlKFJvd3MgJHJvd3MsIEZsb3dDb250ZXh0ICRjb250ZXh0KTogdm9pZCAkY2FsbGJhY2sKICAgICAqIEBwYXJhbSBBbmFseXplfGJvb2wgJGFuYWx5emUgLSB3aGVuIHNldCBydW4gd2lsbCByZXR1cm4gUmVwb3J0CiAgICAgKgogICAgICogQHJldHVybiAoJGFuYWx5emUgaXMgQW5hbHl6ZXx0cnVlID8gUmVwb3J0IDogbnVsbCkKICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":874,"slug":"savemode","name":"saveMode","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"mode","type":[{"name":"SaveMode","namespace":"Flow\\ETL\\Filesystem","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBBbGlhcyBmb3IgRGF0YUZyYW1lOjptb2RlLgogICAgICoKICAgICAqIEBsYXp5CiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":884,"slug":"schema","name":"schema","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[],"return_type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAdHJpZ2dlcgogICAgICoKICAgICAqIEByZXR1cm4gU2NoZW1hCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":906,"slug":"select","name":"select","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"entries","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICogS2VlcCBvbmx5IGdpdmVuIGVudHJpZXMuCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":916,"slug":"sortby","name":"sortBy","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"entries","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":928,"slug":"transform","name":"transform","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"transformer","type":[{"name":"Transformer","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false},{"name":"Transformation","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false},{"name":"Transformations","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false},{"name":"WithEntry","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBBbGlhcyBmb3IgRGF0YUZyYW1lOjp3aXRoKCkuCiAgICAgKgogICAgICogQGxhenkKICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":939,"slug":"until","name":"until","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"function","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGZpbHRlciBhbmQgdW50aWwgaXMgdGhhdCBmaWx0ZXIgd2lsbCBrZWVwIGZpbHRlcmluZyByb3dzIHVudGlsIGV4dHJhY3RvcnMgZmluaXNoIHlpZWxkaW5nCiAgICAgKiByb3dzLiBVbnRpbCB3aWxsIHNlbmQgYSBTVE9QIHNpZ25hbCB0byB0aGUgRXh0cmFjdG9yIHdoZW4gdGhlIGNvbmRpdGlvbiBpcyBub3QgbWV0LgogICAgICoKICAgICAqIEBsYXp5CiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":953,"slug":"validate","name":"validate","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"schema","type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"validator","type":[{"name":"SchemaValidator","namespace":"Flow\\ETL","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAZGVwcmVjYXRlZCBQbGVhc2UgdXNlIERhdGFGcmFtZTo6bWF0Y2ggaW5zdGVhZAogICAgICoKICAgICAqIEBsYXp5CiAgICAgKgogICAgICogQHBhcmFtIG51bGx8U2NoZW1hVmFsaWRhdG9yICR2YWxpZGF0b3IgLSB3aGVuIG51bGwsIFN0cmljdFZhbGlkYXRvciBnZXRzIGluaXRpYWxpemVkCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":967,"slug":"void","name":"void","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICogVGhpcyBtZXRob2QgaXMgdXNlZnVsIG1vc3RseSBpbiBkZXZlbG9wbWVudCB3aGVuCiAgICAgKiB5b3Ugd2FudCB0byBwYXVzZSBwcm9jZXNzaW5nIGF0IGNlcnRhaW4gbW9tZW50IHdpdGhvdXQKICAgICAqIHJlbW92aW5nIGNvZGUuIEFsbCBvcGVyYXRpb25zIHdpbGwgZ2V0IHByb2Nlc3NlZCB1cCB0byB0aGlzIHBvaW50LAogICAgICogZnJvbSBoZXJlIG5vIHJvd3MgYXJlIHBhc3NlZCBmb3J3YXJkLgogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":977,"slug":"with","name":"with","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"transformer","type":[{"name":"Transformer","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false},{"name":"Transformation","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false},{"name":"Transformations","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false},{"name":"WithEntry","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":1005,"slug":"withentries","name":"withEntries","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"references","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICoKICAgICAqIEBwYXJhbSBhcnJheTxpbnQsIFdpdGhFbnRyeT58YXJyYXk8c3RyaW5nLCBTY2FsYXJGdW5jdGlvbnxXaW5kb3dGdW5jdGlvbnxXaXRoRW50cnk+ICRyZWZlcmVuY2VzCiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":1023,"slug":"withentry","name":"withEntry","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"entry","type":[{"name":"Definition","namespace":"Flow\\ETL\\Schema","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"reference","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"WindowFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAcGFyYW0gRGVmaW5pdGlvbjxtaXhlZD58c3RyaW5nICRlbnRyeQogICAgICoKICAgICAqIEBsYXp5CiAgICAgKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame.php","start_line_in_file":1050,"slug":"write","name":"write","class":"Flow\\ETL\\DataFrame","class_slug":"dataframe","parameters":[{"name":"loader","type":[{"name":"Loader","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":"LyoqCiAgICAgKiBAbGF6eQogICAgICogQWxpYXMgZm9yIEVUTDo6bG9hZCBmdW5jdGlvbi4KICAgICAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame\/GroupedDataFrame.php","start_line_in_file":18,"slug":"aggregate","name":"aggregate","class":"Flow\\ETL\\DataFrame\\GroupedDataFrame","class_slug":"groupeddataframe","parameters":[{"name":"aggregations","type":[{"name":"AggregatingFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"DataFrame","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DataFrame\/GroupedDataFrame.php","start_line_in_file":34,"slug":"pivot","name":"pivot","class":"Flow\\ETL\\DataFrame\\GroupedDataFrame","class_slug":"groupeddataframe","parameters":[{"name":"ref","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"self","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[],"scalar_function_chain":false,"doc_comment":null}] \ No newline at end of file diff --git a/web/landing/resources/dsl.json b/web/landing/resources/dsl.json index e101f206ce..d95e20c6f3 100644 --- a/web/landing/resources/dsl.json +++ b/web/landing/resources/dsl.json @@ -1 +1 @@ -[{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":254,"slug":"df","name":"df","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"config","type":[{"name":"Config","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false},{"name":"ConfigBuilder","namespace":"Flow\\ETL\\Config","is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Flow","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_reading","option":"data_frame"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_writing","option":"overwrite"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEFsaWFzIGZvciBkYXRhX2ZyYW1lKCkgOiBGbG93LgogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":262,"slug":"data-frame","name":"data_frame","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"config","type":[{"name":"Config","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false},{"name":"ConfigBuilder","namespace":"Flow\\ETL\\Config","is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Flow","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_reading","option":"data_frame"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_writing","option":"overwrite"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":268,"slug":"telemetry-options","name":"telemetry_options","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"trace_loading","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"trace_transformations","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"collect_metrics","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"filesystem","type":[{"name":"FilesystemTelemetryOptions","namespace":"Flow\\Filesystem\\Telemetry","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"TelemetryOptions","namespace":"Flow\\ETL\\Config\\Telemetry","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":285,"slug":"from-rows","name":"from_rows","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"rows","type":[{"name":"Rows","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"RowsExtractor","namespace":"Flow\\ETL\\Extractor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"EXTRACTOR"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_reading","option":"data_frame"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_writing","option":"overwrite"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":292,"slug":"from-path-partitions","name":"from_path_partitions","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"path","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"PathPartitionsExtractor","namespace":"Flow\\ETL\\Extractor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"EXTRACTOR"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"partitioning","example":"path_partitions"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":304,"slug":"from-array","name":"from_array","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"array","type":[{"name":"iterable","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"schema","type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"ArrayExtractor","namespace":"Flow\\ETL\\Extractor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"EXTRACTOR"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_reading","option":"array"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_reading","option":"data_frame"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBpdGVyYWJsZTxhcnJheTxtaXhlZD4+ICRhcnJheQogKiBAcGFyYW0gbnVsbHxTY2hlbWEgJHNjaGVtYSAtIEBkZXByZWNhdGVkIHVzZSB3aXRoU2NoZW1hKCkgbWV0aG9kIGluc3RlYWQKICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":321,"slug":"from-cache","name":"from_cache","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"id","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"fallback_extractor","type":[{"name":"Extractor","namespace":"Flow\\ETL","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"clear","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"CacheExtractor","namespace":"Flow\\ETL\\Extractor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBzdHJpbmcgJGlkIC0gY2FjaGUgaWQgZnJvbSB3aGljaCBkYXRhIHdpbGwgYmUgZXh0cmFjdGVkCiAqIEBwYXJhbSBudWxsfEV4dHJhY3RvciAkZmFsbGJhY2tfZXh0cmFjdG9yIC0gZXh0cmFjdG9yIHRoYXQgd2lsbCBiZSB1c2VkIHdoZW4gY2FjaGUgaXMgZW1wdHkgLSBAZGVwcmVjYXRlZCB1c2Ugd2l0aEZhbGxiYWNrRXh0cmFjdG9yKCkgbWV0aG9kIGluc3RlYWQKICogQHBhcmFtIGJvb2wgJGNsZWFyIC0gY2xlYXIgY2FjaGUgYWZ0ZXIgZXh0cmFjdGlvbiAtIEBkZXByZWNhdGVkIHVzZSB3aXRoQ2xlYXJPbkZpbmlzaCgpIG1ldGhvZCBpbnN0ZWFkCiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":337,"slug":"from-all","name":"from_all","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"extractors","type":[{"name":"Extractor","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"ChainExtractor","namespace":"Flow\\ETL\\Extractor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":343,"slug":"from-memory","name":"from_memory","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"memory","type":[{"name":"Memory","namespace":"Flow\\ETL\\Memory","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"MemoryExtractor","namespace":"Flow\\ETL\\Extractor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":349,"slug":"files","name":"files","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"directory","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"FilesExtractor","namespace":"Flow\\ETL\\Extractor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":355,"slug":"filesystem-cache","name":"filesystem_cache","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"cache_dir","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"filesystem","type":[{"name":"Filesystem","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Filesystem\\Local\\NativeLocalFilesystem::..."},{"name":"serializer","type":[{"name":"Serializer","namespace":"Flow\\Serializer","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Serializer\\NativePHPSerializer::..."}],"return_type":[{"name":"FilesystemCache","namespace":"Flow\\ETL\\Cache\\Implementation","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":364,"slug":"batched-by","name":"batched_by","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"extractor","type":[{"name":"Extractor","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"column","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"min_size","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"BatchByExtractor","namespace":"Flow\\ETL\\Extractor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBudWxsfGludDwxLCBtYXg+ICRtaW5fc2l6ZQogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":377,"slug":"batches","name":"batches","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"extractor","type":[{"name":"Extractor","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"size","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"BatchExtractor","namespace":"Flow\\ETL\\Extractor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBpbnQ8MSwgbWF4PiAkc2l6ZQogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":388,"slug":"chunks-from","name":"chunks_from","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"extractor","type":[{"name":"Extractor","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"chunk_size","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"BatchExtractor","namespace":"Flow\\ETL\\Extractor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBpbnQ8MSwgbWF4PiAkY2h1bmtfc2l6ZQogKgogKiBAZGVwcmVjYXRlZCB1c2UgYmF0Y2hlcygpIGluc3RlYWQKICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":394,"slug":"from-pipeline","name":"from_pipeline","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"pipeline","type":[{"name":"Pipeline","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"PipelineExtractor","namespace":"Flow\\ETL\\Extractor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":400,"slug":"from-data-frame","name":"from_data_frame","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"data_frame","type":[{"name":"DataFrame","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"DataFrameExtractor","namespace":"Flow\\ETL\\Extractor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":406,"slug":"from-sequence-date-period","name":"from_sequence_date_period","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"entry_name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"start","type":[{"name":"DateTimeInterface","namespace":"","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"interval","type":[{"name":"DateInterval","namespace":"","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"end","type":[{"name":"DateTimeInterface","namespace":"","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"options","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"}],"return_type":[{"name":"SequenceExtractor","namespace":"Flow\\ETL\\Extractor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":415,"slug":"from-sequence-date-period-recurrences","name":"from_sequence_date_period_recurrences","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"entry_name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"start","type":[{"name":"DateTimeInterface","namespace":"","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"interval","type":[{"name":"DateInterval","namespace":"","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"recurrences","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"options","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"}],"return_type":[{"name":"SequenceExtractor","namespace":"Flow\\ETL\\Extractor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":424,"slug":"from-sequence-number","name":"from_sequence_number","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"entry_name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"start","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"float","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"end","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"float","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"step","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"float","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"1"}],"return_type":[{"name":"SequenceExtractor","namespace":"Flow\\ETL\\Extractor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":433,"slug":"to-callable","name":"to_callable","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"callable","type":[{"name":"callable","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"CallbackLoader","namespace":"Flow\\ETL\\Loader","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":439,"slug":"to-memory","name":"to_memory","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"memory","type":[{"name":"Memory","namespace":"Flow\\ETL\\Memory","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"MemoryLoader","namespace":"Flow\\ETL\\Loader","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":453,"slug":"to-array","name":"to_array","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"array","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ArrayLoader","namespace":"Flow\\ETL\\Loader","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"LOADER"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_writing","option":"array"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENvbnZlcnQgcm93cyB0byBhbiBhcnJheSBhbmQgc3RvcmUgdGhlbSBpbiBwYXNzZWQgYXJyYXkgdmFyaWFibGUuCiAqCiAqIEBwYXJhbSBhcnJheTxhcnJheS1rZXksIG1peGVkPiAkYXJyYXkKICoKICogQHBhcmFtLW91dCBhcnJheTxhcnJheTxtaXhlZD4+ICRhcnJheQogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":460,"slug":"to-output","name":"to_output","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"truncate","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"20"},{"name":"output","type":[{"name":"Output","namespace":"Flow\\ETL\\Loader\\StreamLoader","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Loader\\StreamLoader\\Output::..."},{"name":"formatter","type":[{"name":"Formatter","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Formatter\\AsciiTableFormatter::..."},{"name":"schemaFormatter","type":[{"name":"SchemaFormatter","namespace":"Flow\\ETL\\Schema","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Row\\Formatter\\ASCIISchemaFormatter::..."}],"return_type":[{"name":"StreamLoader","namespace":"Flow\\ETL\\Loader","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":466,"slug":"to-stderr","name":"to_stderr","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"truncate","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"20"},{"name":"output","type":[{"name":"Output","namespace":"Flow\\ETL\\Loader\\StreamLoader","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Loader\\StreamLoader\\Output::..."},{"name":"formatter","type":[{"name":"Formatter","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Formatter\\AsciiTableFormatter::..."},{"name":"schemaFormatter","type":[{"name":"SchemaFormatter","namespace":"Flow\\ETL\\Schema","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Row\\Formatter\\ASCIISchemaFormatter::..."}],"return_type":[{"name":"StreamLoader","namespace":"Flow\\ETL\\Loader","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":472,"slug":"to-stdout","name":"to_stdout","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"truncate","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"20"},{"name":"output","type":[{"name":"Output","namespace":"Flow\\ETL\\Loader\\StreamLoader","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Loader\\StreamLoader\\Output::..."},{"name":"formatter","type":[{"name":"Formatter","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Formatter\\AsciiTableFormatter::..."},{"name":"schemaFormatter","type":[{"name":"SchemaFormatter","namespace":"Flow\\ETL\\Schema","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Row\\Formatter\\ASCIISchemaFormatter::..."}],"return_type":[{"name":"StreamLoader","namespace":"Flow\\ETL\\Loader","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":478,"slug":"to-stream","name":"to_stream","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"uri","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"truncate","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"20"},{"name":"output","type":[{"name":"Output","namespace":"Flow\\ETL\\Loader\\StreamLoader","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Loader\\StreamLoader\\Output::..."},{"name":"mode","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'w'"},{"name":"formatter","type":[{"name":"Formatter","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Formatter\\AsciiTableFormatter::..."},{"name":"schemaFormatter","type":[{"name":"SchemaFormatter","namespace":"Flow\\ETL\\Schema","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Row\\Formatter\\ASCIISchemaFormatter::..."}],"return_type":[{"name":"StreamLoader","namespace":"Flow\\ETL\\Loader","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":484,"slug":"to-transformation","name":"to_transformation","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"transformer","type":[{"name":"Transformer","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false},{"name":"Transformation","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"loader","type":[{"name":"Loader","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"TransformerLoader","namespace":"Flow\\ETL\\Loader","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":490,"slug":"to-branch","name":"to_branch","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"condition","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"loader","type":[{"name":"Loader","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"BranchingLoader","namespace":"Flow\\ETL\\Loader","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":496,"slug":"rename-style","name":"rename_style","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"style","type":[{"name":"StringStyles","namespace":"Flow\\ETL\\Function\\StyleConverter","is_nullable":false,"is_variadic":false},{"name":"StringStyles","namespace":"Flow\\ETL\\String","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"RenameCaseEntryStrategy","namespace":"Flow\\ETL\\Transformer\\Rename","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"TRANSFORMER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":506,"slug":"rename-replace","name":"rename_replace","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"search","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"replace","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"RenameReplaceEntryStrategy","namespace":"Flow\\ETL\\Transformer\\Rename","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"TRANSFORMER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxzdHJpbmc+fHN0cmluZyAkc2VhcmNoCiAqIEBwYXJhbSBhcnJheTxzdHJpbmc+fHN0cmluZyAkcmVwbGFjZQogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":515,"slug":"bool-entry","name":"bool_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"bool","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gRW50cnk8P2Jvb2w+CiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":524,"slug":"boolean-entry","name":"boolean_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"bool","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gRW50cnk8P2Jvb2w+CiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":533,"slug":"datetime-entry","name":"datetime_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"DateTimeInterface","namespace":"","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gRW50cnk8P1xEYXRlVGltZUludGVyZmFjZT4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":542,"slug":"time-entry","name":"time_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"DateInterval","namespace":"","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gRW50cnk8P1xEYXRlSW50ZXJ2YWw+CiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":551,"slug":"date-entry","name":"date_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"DateTimeInterface","namespace":"","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gRW50cnk8P1xEYXRlVGltZUludGVyZmFjZT4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":560,"slug":"int-entry","name":"int_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gRW50cnk8P2ludD4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":569,"slug":"integer-entry","name":"integer_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gRW50cnk8P2ludD4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":578,"slug":"enum-entry","name":"enum_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"enum","type":[{"name":"UnitEnum","namespace":"","is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gRW50cnk8P1xVbml0RW51bT4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":587,"slug":"float-entry","name":"float_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"float","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gRW50cnk8P2Zsb2F0PgogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":598,"slug":"json-entry","name":"json_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"data","type":[{"name":"Json","namespace":"Flow\\Types\\Value","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBudWxsfGFycmF5PGFycmF5LWtleSwgbWl4ZWQ+fEpzb258c3RyaW5nICRkYXRhCiAqCiAqIEByZXR1cm4gRW50cnk8P0pzb24+CiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":611,"slug":"json-object-entry","name":"json_object_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"data","type":[{"name":"Json","namespace":"Flow\\Types\\Value","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBudWxsfGFycmF5PGFycmF5LWtleSwgbWl4ZWQ+fEpzb258c3RyaW5nICRkYXRhCiAqCiAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAqCiAqIEByZXR1cm4gRW50cnk8P0pzb24+CiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":628,"slug":"str-entry","name":"str_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gRW50cnk8P3N0cmluZz4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":646,"slug":"null-entry","name":"null_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFRoaXMgZnVuY3Rpb25zIGlzIGFuIGFsaWFzIGZvciBjcmVhdGluZyBzdHJpbmcgZW50cnkgZnJvbSBudWxsLgogKiBUaGUgbWFpbiBkaWZmZXJlbmNlIGJldHdlZW4gdXNpbmcgdGhpcyBmdW5jdGlvbiBhbiBzaW1wbHkgc3RyX2VudHJ5IHdpdGggc2Vjb25kIGFyZ3VtZW50IG51bGwKICogaXMgdGhhdCB0aGlzIGZ1bmN0aW9uIHdpbGwgYWxzbyBrZWVwIGEgbm90ZSBpbiB0aGUgbWV0YWRhdGEgdGhhdCB0eXBlIG1pZ2h0IG5vdCBiZSBmaW5hbC4KICogRm9yIGV4YW1wbGUgd2hlbiB3ZSBuZWVkIHRvIGd1ZXNzIGNvbHVtbiB0eXBlIGZyb20gcm93cyBiZWNhdXNlIHNjaGVtYSB3YXMgbm90IHByb3ZpZGVkLAogKiBhbmQgZ2l2ZW4gY29sdW1uIGluIHRoZSBmaXJzdCByb3cgaXMgbnVsbCwgaXQgbWlnaHQgc3RpbGwgY2hhbmdlIG9uY2Ugd2UgZ2V0IHRvIHRoZSBzZWNvbmQgcm93LgogKiBUaGF0IG1ldGFkYXRhIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIHN0cmluZ19lbnRyeSB3YXMgY3JlYXRlZCBmcm9tIG51bGwgb3Igbm90LgogKgogKiBCeSBkZXNpZ24gZmxvdyBhc3N1bWVzIHdoZW4gZ3Vlc3NpbmcgY29sdW1uIHR5cGUgdGhhdCBudWxsIHdvdWxkIGJlIGEgc3RyaW5nICh0aGUgbW9zdCBmbGV4aWJsZSB0eXBlKS4KICoKICogQHJldHVybiBFbnRyeTw\/c3RyaW5nPgogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":655,"slug":"string-entry","name":"string_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gRW50cnk8P3N0cmluZz4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":664,"slug":"uuid-entry","name":"uuid_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"Uuid","namespace":"Flow\\Types\\Value","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gRW50cnk8P1xGbG93XFR5cGVzXFZhbHVlXFV1aWQ+CiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":673,"slug":"xml-entry","name":"xml_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"DOMDocument","namespace":"","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gRW50cnk8P1xET01Eb2N1bWVudD4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":682,"slug":"xml-element-entry","name":"xml_element_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"DOMElement","namespace":"","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gRW50cnk8P1xET01FbGVtZW50PgogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":691,"slug":"html-entry","name":"html_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"Dom\\HTMLDocument","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gRW50cnk8P0hUTUxEb2N1bWVudD4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":700,"slug":"html-element-entry","name":"html_element_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"Dom\\HTMLElement","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gRW50cnk8P0hUTUxFbGVtZW50PgogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":709,"slug":"entries","name":"entries","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"entries","type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Entries","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBFbnRyeTxtaXhlZD4gLi4uJGVudHJpZXMKICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":723,"slug":"struct-entry","name":"struct_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"array","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"type","type":[{"name":"StructureType","namespace":"Flow\\Types\\Type\\Logical","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUCiAqCiAqIEBwYXJhbSA\/YXJyYXk8c3RyaW5nLCBtaXhlZD4gJHZhbHVlCiAqIEBwYXJhbSBTdHJ1Y3R1cmVUeXBlPFQ+ICR0eXBlCiAqCiAqIEByZXR1cm4gRW50cnk8P2FycmF5PHN0cmluZywgVD4+CiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":737,"slug":"structure-entry","name":"structure_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"array","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"type","type":[{"name":"StructureType","namespace":"Flow\\Types\\Type\\Logical","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUCiAqCiAqIEBwYXJhbSA\/YXJyYXk8c3RyaW5nLCBtaXhlZD4gJHZhbHVlCiAqIEBwYXJhbSBTdHJ1Y3R1cmVUeXBlPFQ+ICR0eXBlCiAqCiAqIEByZXR1cm4gRW50cnk8P2FycmF5PHN0cmluZywgVD4+CiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":847,"slug":"list-entry","name":"list_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"array","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"type","type":[{"name":"ListType","namespace":"Flow\\Types\\Type\\Logical","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUCiAqCiAqIEBwYXJhbSBudWxsfGxpc3Q8bWl4ZWQ+ICR2YWx1ZQogKiBAcGFyYW0gTGlzdFR5cGU8VD4gJHR5cGUKICoKICogQHJldHVybiBFbnRyeTxtaXhlZD4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":893,"slug":"map-entry","name":"map_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"array","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"mapType","type":[{"name":"MapType","namespace":"Flow\\Types\\Type\\Logical","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUS2V5IG9mIGFycmF5LWtleQogKiBAdGVtcGxhdGUgVFZhbHVlCiAqCiAqIEBwYXJhbSA\/YXJyYXk8YXJyYXkta2V5LCBtaXhlZD4gJHZhbHVlCiAqIEBwYXJhbSBNYXBUeXBlPFRLZXksIFRWYWx1ZT4gJG1hcFR5cGUKICoKICogQHJldHVybiBFbnRyeTw\/YXJyYXk8VEtleSwgVFZhbHVlPj4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":926,"slug":"type-date","name":"type_date","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBkZXByZWNhdGVkIHBsZWFzZSB1c2UgXEZsb3dcVHlwZXNcRFNMXHR5cGVfZGF0ZSgpIDogRGF0ZVR5cGUKICoKICogQHJldHVybiBUeXBlPFxEYXRlVGltZUludGVyZmFjZT4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":981,"slug":"type-int","name":"type_int","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBkZXByZWNhdGVkIHBsZWFzZSB1c2UgXEZsb3dcVHlwZXNcRFNMXHR5cGVfaW50ZWdlcigpIDogSW50ZWdlclR5cGUKICoKICogQHJldHVybiBUeXBlPGludD4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1108,"slug":"row","name":"row","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"entry","type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Row","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBFbnRyeTxtaXhlZD4gLi4uJGVudHJ5CiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1114,"slug":"rows","name":"rows","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"row","type":[{"name":"Row","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Rows","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1124,"slug":"rows-partitioned","name":"rows_partitioned","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"rows","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"partitions","type":[{"name":"Partitions","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Rows","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxSb3c+ICRyb3dzCiAqIEBwYXJhbSBhcnJheTxcRmxvd1xGaWxlc3lzdGVtXFBhcnRpdGlvbnxzdHJpbmc+fFBhcnRpdGlvbnMgJHBhcnRpdGlvbnMKICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1133,"slug":"col","name":"col","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"entry","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"EntryReference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":true,"doc_comment":"LyoqCiAqIEFuIGFsaWFzIGZvciBgcmVmYC4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1143,"slug":"entry","name":"entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"entry","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"EntryReference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"columns","option":"create"}}],"scalar_function_chain":true,"doc_comment":"LyoqCiAqIEFuIGFsaWFzIGZvciBgcmVmYC4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1150,"slug":"ref","name":"ref","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"entry","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"EntryReference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"columns","option":"create"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1156,"slug":"structure-ref","name":"structure_ref","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"entry","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"StructureFunctions","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1162,"slug":"list-ref","name":"list_ref","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"entry","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ListFunctions","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1168,"slug":"refs","name":"refs","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"entries","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"References","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1174,"slug":"select","name":"select","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"entries","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Select","namespace":"Flow\\ETL\\Transformation","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"TRANSFORMER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1180,"slug":"drop","name":"drop","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"entries","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Drop","namespace":"Flow\\ETL\\Transformation","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"TRANSFORMER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1186,"slug":"add-row-index","name":"add_row_index","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"column","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'index'"},{"name":"startFrom","type":[{"name":"StartFrom","namespace":"Flow\\ETL\\Transformation\\AddRowIndex","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Transformation\\AddRowIndex\\StartFrom::..."}],"return_type":[{"name":"AddRowIndex","namespace":"Flow\\ETL\\Transformation","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"TRANSFORMER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1195,"slug":"batch-size","name":"batch_size","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"size","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"BatchSize","namespace":"Flow\\ETL\\Transformation","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"TRANSFORMER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBpbnQ8MSwgbWF4PiAkc2l6ZQogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1201,"slug":"limit","name":"limit","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"limit","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Limit","namespace":"Flow\\ETL\\Transformation","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"TRANSFORMER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1210,"slug":"mask-columns","name":"mask_columns","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"columns","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"mask","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'******'"}],"return_type":[{"name":"MaskColumns","namespace":"Flow\\ETL\\Transformation","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"TRANSFORMER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxpbnQsIHN0cmluZz4gJGNvbHVtbnMKICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1216,"slug":"optional","name":"optional","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"function","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Optional","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1223,"slug":"lit","name":"lit","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"value","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Literal","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"columns","option":"create"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1229,"slug":"exists","name":"exists","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Exists","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1235,"slug":"when","name":"when","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"condition","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"then","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"else","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"When","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1241,"slug":"array-get","name":"array_get","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"path","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ArrayGet","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1250,"slug":"array-get-collection","name":"array_get_collection","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"keys","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ArrayGetCollection","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxhcnJheS1rZXksIG1peGVkPnxTY2FsYXJGdW5jdGlvbiAka2V5cwogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1256,"slug":"array-get-collection-first","name":"array_get_collection_first","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"keys","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"ArrayGetCollection","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1265,"slug":"array-exists","name":"array_exists","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"path","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ArrayPathExists","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxhcnJheS1rZXksIG1peGVkPnxTY2FsYXJGdW5jdGlvbiAkcmVmCiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1275,"slug":"array-merge","name":"array_merge","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"left","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"right","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ArrayMerge","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxhcnJheS1rZXksIG1peGVkPnxTY2FsYXJGdW5jdGlvbiAkbGVmdAogKiBAcGFyYW0gYXJyYXk8YXJyYXkta2V5LCBtaXhlZD58U2NhbGFyRnVuY3Rpb24gJHJpZ2h0CiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1284,"slug":"array-merge-collection","name":"array_merge_collection","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"array","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ArrayMergeCollection","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxhcnJheS1rZXksIG1peGVkPnxTY2FsYXJGdW5jdGlvbiAkYXJyYXkKICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1290,"slug":"array-key-rename","name":"array_key_rename","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"path","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"newName","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ArrayKeyRename","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1296,"slug":"array-keys-style-convert","name":"array_keys_style_convert","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"style","type":[{"name":"StringStyles","namespace":"Flow\\ETL\\Function\\StyleConverter","is_nullable":false,"is_variadic":false},{"name":"StringStyles","namespace":"Flow\\ETL\\String","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\String\\StringStyles::..."}],"return_type":[{"name":"ArrayKeysStyleConvert","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1306,"slug":"array-sort","name":"array_sort","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"function","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"sort_function","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"Sort","namespace":"Flow\\ETL\\Function\\ArraySort","is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"flags","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"recursive","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"}],"return_type":[{"name":"ArraySort","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1319,"slug":"array-reverse","name":"array_reverse","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"function","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"preserveKeys","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"ArrayReverse","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxhcnJheS1rZXksIG1peGVkPnxTY2FsYXJGdW5jdGlvbiAkZnVuY3Rpb24KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1325,"slug":"now","name":"now","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"time_zone","type":[{"name":"DateTimeZone","namespace":"","is_nullable":false,"is_variadic":false},{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"DateTimeZone::..."}],"return_type":[{"name":"Now","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1331,"slug":"between","name":"between","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"value","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"lower_bound","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"upper_bound","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"boundary","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"Boundary","namespace":"Flow\\ETL\\Function\\Between","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Function\\Between\\Boundary::..."}],"return_type":[{"name":"Between","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1337,"slug":"to-date-time","name":"to_date_time","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"format","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'Y-m-d H:i:s'"},{"name":"timeZone","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"DateTimeZone","namespace":"","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"DateTimeZone::..."}],"return_type":[{"name":"ToDateTime","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1343,"slug":"to-date","name":"to_date","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"format","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'Y-m-d'"},{"name":"timeZone","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"DateTimeZone","namespace":"","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"DateTimeZone::..."}],"return_type":[{"name":"ToDate","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1349,"slug":"date-time-format","name":"date_time_format","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"format","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"DateTimeFormat","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1355,"slug":"split","name":"split","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"value","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"separator","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"limit","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"9223372036854775807"}],"return_type":[{"name":"Split","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1365,"slug":"combine","name":"combine","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"keys","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"values","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Combine","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxhcnJheS1rZXksIG1peGVkPnxTY2FsYXJGdW5jdGlvbiAka2V5cwogKiBAcGFyYW0gYXJyYXk8YXJyYXkta2V5LCBtaXhlZD58U2NhbGFyRnVuY3Rpb24gJHZhbHVlcwogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1374,"slug":"concat","name":"concat","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"functions","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Concat","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":"LyoqCiAqIENvbmNhdCBhbGwgdmFsdWVzLiBJZiB5b3Ugd2FudCB0byBjb25jYXRlbmF0ZSB2YWx1ZXMgd2l0aCBzZXBhcmF0b3IgdXNlIGNvbmNhdF93cyBmdW5jdGlvbi4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1383,"slug":"concat-ws","name":"concat_ws","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"separator","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"functions","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"ConcatWithSeparator","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":"LyoqCiAqIENvbmNhdCBhbGwgdmFsdWVzIHdpdGggc2VwYXJhdG9yLgogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1389,"slug":"hash","name":"hash","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"value","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"algorithm","type":[{"name":"Algorithm","namespace":"Flow\\ETL\\Hash","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Hash\\NativePHPHash::..."}],"return_type":[{"name":"Hash","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1398,"slug":"cast","name":"cast","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"value","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"type","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Cast","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":"LyoqCiAqIEBwYXJhbSBcRmxvd1xUeXBlc1xUeXBlPG1peGVkPnxzdHJpbmcgJHR5cGUKICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1404,"slug":"coalesce","name":"coalesce","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"values","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Coalesce","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1410,"slug":"count","name":"count","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"function","type":[{"name":"EntryReference","namespace":"Flow\\ETL\\Row","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Count","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"AGGREGATING_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1423,"slug":"call","name":"call","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"callable","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"callable","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"parameters","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"return_type","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"CallUserFunc","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":"LyoqCiAqIENhbGxzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIHdpdGggdGhlIGdpdmVuIHBhcmFtZXRlcnMuCiAqCiAqIEBwYXJhbSBjYWxsYWJsZXxTY2FsYXJGdW5jdGlvbiAkY2FsbGFibGUKICogQHBhcmFtIGFycmF5PG1peGVkPiAkcGFyYW1ldGVycwogKiBAcGFyYW0gbnVsbHxUeXBlPG1peGVkPiAkcmV0dXJuX3R5cGUKICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1452,"slug":"array-unpack","name":"array_unpack","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"array","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"skip_keys","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"entry_prefix","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"ArrayUnpack","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxhcnJheS1rZXksIG1peGVkPnxTY2FsYXJGdW5jdGlvbiAkYXJyYXkKICogQHBhcmFtIGFycmF5PGFycmF5LWtleSwgbWl4ZWQ+fFNjYWxhckZ1bmN0aW9uICRza2lwX2tleXMKICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1478,"slug":"array-expand","name":"array_expand","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"function","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"expand","type":[{"name":"ArrayExpand","namespace":"Flow\\ETL\\Function\\ArrayExpand","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Function\\ArrayExpand\\ArrayExpand::..."}],"return_type":[{"name":"ArrayExpand","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":"LyoqCiAqIEV4cGFuZHMgZWFjaCB2YWx1ZSBpbnRvIGVudHJ5LCBpZiB0aGVyZSBhcmUgbW9yZSB0aGFuIG9uZSB2YWx1ZSwgbXVsdGlwbGUgcm93cyB3aWxsIGJlIGNyZWF0ZWQuCiAqIEFycmF5IGtleXMgYXJlIGlnbm9yZWQsIG9ubHkgdmFsdWVzIGFyZSB1c2VkIHRvIGNyZWF0ZSBuZXcgcm93cy4KICoKICogQmVmb3JlOgogKiAgICstLSstLS0tLS0tLS0tLS0tLS0tLS0tKwogKiAgIHxpZHwgICAgICAgICAgICAgIGFycmF5fAogKiAgICstLSstLS0tLS0tLS0tLS0tLS0tLS0tKwogKiAgIHwgMXx7ImEiOjEsImIiOjIsImMiOjN9fAogKiAgICstLSstLS0tLS0tLS0tLS0tLS0tLS0tKwogKgogKiBBZnRlcjoKICogICArLS0rLS0tLS0tLS0rCiAqICAgfGlkfGV4cGFuZGVkfAogKiAgICstLSstLS0tLS0tLSsKICogICB8IDF8ICAgICAgIDF8CiAqICAgfCAxfCAgICAgICAyfAogKiAgIHwgMXwgICAgICAgM3wKICogICArLS0rLS0tLS0tLS0rCiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1484,"slug":"size","name":"size","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"value","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Size","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1490,"slug":"uuid-v4","name":"uuid_v4","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"Uuid","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1496,"slug":"uuid-v7","name":"uuid_v7","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"value","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"DateTimeInterface","namespace":"","is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Uuid","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1502,"slug":"ulid","name":"ulid","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"value","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Ulid","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1508,"slug":"lower","name":"lower","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"value","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ToLower","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1514,"slug":"capitalize","name":"capitalize","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"value","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Capitalize","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1520,"slug":"upper","name":"upper","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"value","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ToUpper","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1526,"slug":"all","name":"all","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"functions","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"All","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1532,"slug":"any","name":"any","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"values","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Any","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1538,"slug":"not","name":"not","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"value","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Not","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1544,"slug":"to-timezone","name":"to_timezone","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"value","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"DateTimeInterface","namespace":"","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"timeZone","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"DateTimeZone","namespace":"","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ToTimeZone","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1550,"slug":"ignore-error-handler","name":"ignore_error_handler","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"IgnoreError","namespace":"Flow\\ETL\\ErrorHandler","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1556,"slug":"skip-rows-handler","name":"skip_rows_handler","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"SkipRows","namespace":"Flow\\ETL\\ErrorHandler","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1562,"slug":"throw-error-handler","name":"throw_error_handler","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"ThrowError","namespace":"Flow\\ETL\\ErrorHandler","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1568,"slug":"regex-replace","name":"regex_replace","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"pattern","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"replacement","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"subject","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"limit","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"RegexReplace","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1574,"slug":"regex-match-all","name":"regex_match_all","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"pattern","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"subject","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"flags","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"},{"name":"offset","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"}],"return_type":[{"name":"RegexMatchAll","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1580,"slug":"regex-match","name":"regex_match","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"pattern","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"subject","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"flags","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"},{"name":"offset","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"}],"return_type":[{"name":"RegexMatch","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1586,"slug":"regex","name":"regex","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"pattern","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"subject","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"flags","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"},{"name":"offset","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"}],"return_type":[{"name":"Regex","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1592,"slug":"regex-all","name":"regex_all","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"pattern","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"subject","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"flags","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"},{"name":"offset","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"}],"return_type":[{"name":"RegexAll","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1598,"slug":"sprintf","name":"sprintf","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"format","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"args","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"float","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Sprintf","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1604,"slug":"sanitize","name":"sanitize","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"value","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"placeholder","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'*'"},{"name":"skipCharacters","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Sanitize","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1610,"slug":"round","name":"round","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"value","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"float","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"precision","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"2"},{"name":"mode","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"1"}],"return_type":[{"name":"Round","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1616,"slug":"number-format","name":"number_format","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"value","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"float","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"decimals","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"2"},{"name":"decimal_separator","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'.'"},{"name":"thousands_separator","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"','"}],"return_type":[{"name":"NumberFormat","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1627,"slug":"to-entry","name":"to_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"data","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"entryFactory","type":[{"name":"EntryFactory","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxtaXhlZD4gJGRhdGEKICoKICogQHJldHVybiBFbnRyeTxtaXhlZD4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1638,"slug":"array-to-row","name":"array_to_row","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"data","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"entryFactory","type":[{"name":"EntryFactory","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"partitions","type":[{"name":"Partitions","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"schema","type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Row","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxhcnJheTxtaXhlZD4+fGFycmF5PG1peGVkfHN0cmluZz4gJGRhdGEKICogQHBhcmFtIGFycmF5PFBhcnRpdGlvbj58UGFydGl0aW9ucyAkcGFydGl0aW9ucwogKiBAcGFyYW0gbnVsbHxTY2hlbWEgJHNjaGVtYQogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1683,"slug":"array-to-rows","name":"array_to_rows","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"data","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"entryFactory","type":[{"name":"EntryFactory","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"partitions","type":[{"name":"Partitions","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"schema","type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Rows","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxhcnJheTxtaXhlZD4+fGFycmF5PG1peGVkfHN0cmluZz4gJGRhdGEKICogQHBhcmFtIGFycmF5PFBhcnRpdGlvbj58UGFydGl0aW9ucyAkcGFydGl0aW9ucwogKiBAcGFyYW0gbnVsbHxTY2hlbWEgJHNjaGVtYQogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1712,"slug":"rank","name":"rank","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"Rank","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"WINDOW_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1718,"slug":"dens-rank","name":"dens_rank","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"DenseRank","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"WINDOW_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1724,"slug":"dense-rank","name":"dense_rank","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"DenseRank","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"WINDOW_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1730,"slug":"average","name":"average","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"EntryReference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"scale","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"2"},{"name":"rounding","type":[{"name":"Rounding","namespace":"Flow\\Calculator","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Calculator\\Rounding::..."}],"return_type":[{"name":"Average","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"AGGREGATING_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1736,"slug":"greatest","name":"greatest","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"values","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Greatest","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1742,"slug":"least","name":"least","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"values","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Least","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1748,"slug":"collect","name":"collect","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"EntryReference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Collect","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"AGGREGATING_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1754,"slug":"string-agg","name":"string_agg","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"EntryReference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"separator","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"', '"},{"name":"sort","type":[{"name":"SortOrder","namespace":"Flow\\ETL\\Row","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"StringAggregate","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"AGGREGATING_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1760,"slug":"collect-unique","name":"collect_unique","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"EntryReference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"CollectUnique","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"AGGREGATING_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1766,"slug":"window","name":"window","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"Window","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1772,"slug":"sum","name":"sum","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"EntryReference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Sum","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"AGGREGATING_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1778,"slug":"first","name":"first","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"EntryReference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"First","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"AGGREGATING_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1784,"slug":"last","name":"last","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"EntryReference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Last","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"AGGREGATING_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1790,"slug":"max","name":"max","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"EntryReference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Max","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"AGGREGATING_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1796,"slug":"min","name":"min","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"EntryReference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Min","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"AGGREGATING_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1802,"slug":"row-number","name":"row_number","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"RowNumber","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1813,"slug":"schema","name":"schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"definitions","type":[{"name":"Definition","namespace":"Flow\\ETL\\Schema","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBEZWZpbml0aW9uPG1peGVkPiAuLi4kZGVmaW5pdGlvbnMKICoKICogQHJldHVybiBTY2hlbWEKICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1822,"slug":"schema-to-json","name":"schema_to_json","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"schema","type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"pretty","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBTY2hlbWEgJHNjaGVtYQogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1831,"slug":"schema-to-php","name":"schema_to_php","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"schema","type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"valueFormatter","type":[{"name":"ValueFormatter","namespace":"Flow\\ETL\\Schema\\Formatter\\PHPFormatter","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Schema\\Formatter\\PHPFormatter\\ValueFormatter::..."},{"name":"typeFormatter","type":[{"name":"TypeFormatter","namespace":"Flow\\ETL\\Schema\\Formatter\\PHPFormatter","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Schema\\Formatter\\PHPFormatter\\TypeFormatter::..."}],"return_type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBTY2hlbWEgJHNjaGVtYQogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1840,"slug":"schema-to-ascii","name":"schema_to_ascii","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"schema","type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"formatter","type":[{"name":"SchemaFormatter","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBTY2hlbWEgJHNjaGVtYQogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1850,"slug":"schema-validate","name":"schema_validate","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"expected","type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"given","type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"validator","type":[{"name":"SchemaValidator","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Schema\\Validator\\StrictValidator::..."}],"return_type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBTY2hlbWEgJGV4cGVjdGVkCiAqIEBwYXJhbSBTY2hlbWEgJGdpdmVuCiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1856,"slug":"schema-evolving-validator","name":"schema_evolving_validator","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"EvolvingValidator","namespace":"Flow\\ETL\\Schema\\Validator","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1862,"slug":"schema-strict-validator","name":"schema_strict_validator","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"StrictValidator","namespace":"Flow\\ETL\\Schema\\Validator","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1868,"slug":"schema-selective-validator","name":"schema_selective_validator","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"SelectiveValidator","namespace":"Flow\\ETL\\Schema\\Validator","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1877,"slug":"schema-from-json","name":"schema_from_json","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"schema","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gU2NoZW1hCiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1889,"slug":"schema-metadata","name":"schema_metadata","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"metadata","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxzdHJpbmcsIGFycmF5PGJvb2x8ZmxvYXR8aW50fHN0cmluZz58Ym9vbHxmbG9hdHxpbnR8c3RyaW5nPiAkbWV0YWRhdGEKICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1898,"slug":"int-schema","name":"int_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"IntegerDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEFsaWFzIGZvciBgaW50ZWdlcl9zY2hlbWFgLgogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1904,"slug":"integer-schema","name":"integer_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"IntegerDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1913,"slug":"str-schema","name":"str_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"StringDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEFsaWFzIGZvciBgc3RyaW5nX3NjaGVtYWAuCiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1919,"slug":"string-schema","name":"string_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"StringDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1925,"slug":"bool-schema","name":"bool_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"BooleanDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1931,"slug":"float-schema","name":"float_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"FloatDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1945,"slug":"map-schema","name":"map_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"type","type":[{"name":"MapType","namespace":"Flow\\Types\\Type\\Logical","is_nullable":false,"is_variadic":false},{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"MapDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUS2V5IG9mIGFycmF5LWtleQogKiBAdGVtcGxhdGUgVFZhbHVlCiAqCiAqIEBwYXJhbSBNYXBUeXBlPFRLZXksIFRWYWx1ZT58VHlwZTxhcnJheTxUS2V5LCBUVmFsdWU+PiAkdHlwZQogKgogKiBAcmV0dXJuIE1hcERlZmluaXRpb248VEtleSwgVFZhbHVlPgogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1959,"slug":"list-schema","name":"list_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"type","type":[{"name":"ListType","namespace":"Flow\\Types\\Type\\Logical","is_nullable":false,"is_variadic":false},{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"ListDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUCiAqCiAqIEBwYXJhbSBMaXN0VHlwZTxUPnxUeXBlPGxpc3Q8VD4+ICR0eXBlCiAqCiAqIEByZXR1cm4gTGlzdERlZmluaXRpb248VD4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1973,"slug":"enum-schema","name":"enum_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"type","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"EnumDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUIG9mIFxVbml0RW51bQogKgogKiBAcGFyYW0gY2xhc3Mtc3RyaW5nPFQ+ICR0eXBlCiAqCiAqIEByZXR1cm4gRW51bURlZmluaXRpb248VD4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1979,"slug":"null-schema","name":"null_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"StringDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1985,"slug":"datetime-schema","name":"datetime_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"DateTimeDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1991,"slug":"time-schema","name":"time_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"TimeDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1997,"slug":"date-schema","name":"date_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"DateDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2003,"slug":"json-schema","name":"json_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"JsonDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2009,"slug":"html-schema","name":"html_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"HTMLDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2015,"slug":"html-element-schema","name":"html_element_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"HTMLElementDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2021,"slug":"xml-schema","name":"xml_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"XMLDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2027,"slug":"xml-element-schema","name":"xml_element_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"XMLElementDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2042,"slug":"struct-schema","name":"struct_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"type","type":[{"name":"StructureType","namespace":"Flow\\Types\\Type\\Logical","is_nullable":false,"is_variadic":false},{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"StructureDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUCiAqCiAqIEBwYXJhbSBTdHJ1Y3R1cmVUeXBlPFQ+fFR5cGU8YXJyYXk8c3RyaW5nLCBUPj4gJHR5cGUKICoKICogQHJldHVybiBTdHJ1Y3R1cmVEZWZpbml0aW9uPFQ+CiAqCiAqIEBkZXByZWNhdGVkIFVzZSBgc3RydWN0dXJlX3NjaGVtYSgpYCBpbnN0ZWFkCiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2056,"slug":"structure-schema","name":"structure_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"type","type":[{"name":"StructureType","namespace":"Flow\\Types\\Type\\Logical","is_nullable":false,"is_variadic":false},{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"StructureDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUCiAqCiAqIEBwYXJhbSBTdHJ1Y3R1cmVUeXBlPFQ+fFR5cGU8YXJyYXk8c3RyaW5nLCBUPj4gJHR5cGUKICoKICogQHJldHVybiBTdHJ1Y3R1cmVEZWZpbml0aW9uPFQ+CiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2063,"slug":"uuid-schema","name":"uuid_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"UuidDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2076,"slug":"definition-from-array","name":"definition_from_array","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"definition","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Definition","namespace":"Flow\\ETL\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIERlZmluaXRpb24gZnJvbSBhbiBhcnJheSByZXByZXNlbnRhdGlvbi4KICoKICogQHBhcmFtIGFycmF5PGFycmF5LWtleSwgbWl4ZWQ+ICRkZWZpbml0aW9uCiAqCiAqIEByZXR1cm4gRGVmaW5pdGlvbjxtaXhlZD4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2109,"slug":"definition-from-type","name":"definition_from_type","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"type","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Definition","namespace":"Flow\\ETL\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIERlZmluaXRpb24gZnJvbSBhIFR5cGUuCiAqCiAqIEBwYXJhbSBUeXBlPG1peGVkPiAkdHlwZQogKgogKiBAcmV0dXJuIERlZmluaXRpb248bWl4ZWQ+CiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2135,"slug":"execution-context","name":"execution_context","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"config","type":[{"name":"Config","namespace":"Flow\\ETL","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"FlowContext","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2141,"slug":"flow-context","name":"flow_context","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"config","type":[{"name":"Config","namespace":"Flow\\ETL","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"FlowContext","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2147,"slug":"config","name":"config","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"Config","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2153,"slug":"config-builder","name":"config_builder","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"ConfigBuilder","namespace":"Flow\\ETL\\Config","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2162,"slug":"overwrite","name":"overwrite","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"SaveMode","namespace":"Flow\\ETL\\Filesystem","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEFsaWFzIGZvciBzYXZlX21vZGVfb3ZlcndyaXRlKCkuCiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2168,"slug":"save-mode-overwrite","name":"save_mode_overwrite","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"SaveMode","namespace":"Flow\\ETL\\Filesystem","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2177,"slug":"ignore","name":"ignore","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"SaveMode","namespace":"Flow\\ETL\\Filesystem","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEFsaWFzIGZvciBzYXZlX21vZGVfaWdub3JlKCkuCiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2183,"slug":"save-mode-ignore","name":"save_mode_ignore","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"SaveMode","namespace":"Flow\\ETL\\Filesystem","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2192,"slug":"exception-if-exists","name":"exception_if_exists","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"SaveMode","namespace":"Flow\\ETL\\Filesystem","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEFsaWFzIGZvciBzYXZlX21vZGVfZXhjZXB0aW9uX2lmX2V4aXN0cygpLgogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2198,"slug":"save-mode-exception-if-exists","name":"save_mode_exception_if_exists","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"SaveMode","namespace":"Flow\\ETL\\Filesystem","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2207,"slug":"append","name":"append","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"SaveMode","namespace":"Flow\\ETL\\Filesystem","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEFsaWFzIGZvciBzYXZlX21vZGVfYXBwZW5kKCkuCiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2213,"slug":"save-mode-append","name":"save_mode_append","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"SaveMode","namespace":"Flow\\ETL\\Filesystem","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2223,"slug":"execution-strict","name":"execution_strict","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"ExecutionMode","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEluIHRoaXMgbW9kZSwgZnVuY3Rpb25zIHRocm93cyBleGNlcHRpb25zIGlmIHRoZSBnaXZlbiBlbnRyeSBpcyBub3QgZm91bmQKICogb3IgcGFzc2VkIHBhcmFtZXRlcnMgYXJlIGludmFsaWQuCiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2232,"slug":"execution-lenient","name":"execution_lenient","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"ExecutionMode","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEluIHRoaXMgbW9kZSwgZnVuY3Rpb25zIHJldHVybnMgbnVsbHMgaW5zdGVhZCBvZiB0aHJvd2luZyBleGNlcHRpb25zLgogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2243,"slug":"get-type","name":"get_type","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"value","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxtaXhlZD4KICoKICogQGRlcHJlY2F0ZWQgUGxlYXNlIHVzZSBcRmxvd1xUeXBlc1xEU0xcZ2V0X3R5cGUoJHZhbHVlKSBpbnN0ZWFkCiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2254,"slug":"print-schema","name":"print_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"schema","type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"formatter","type":[{"name":"SchemaFormatter","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBTY2hlbWEgJHNjaGVtYQogKgogKiBAZGVwcmVjYXRlZCBQbGVhc2UgdXNlIHNjaGVtYV90b19hc2NpaSgkc2NoZW1hKSBpbnN0ZWFkCiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2260,"slug":"print-rows","name":"print_rows","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"rows","type":[{"name":"Rows","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"truncate","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"formatter","type":[{"name":"Formatter","namespace":"Flow\\ETL","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2266,"slug":"identical","name":"identical","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"left","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"right","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Identical","namespace":"Flow\\ETL\\Join\\Comparison","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"COMPARISON"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2272,"slug":"equal","name":"equal","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"left","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"right","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Equal","namespace":"Flow\\ETL\\Join\\Comparison","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"COMPARISON"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2278,"slug":"compare-all","name":"compare_all","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"comparisons","type":[{"name":"Comparison","namespace":"Flow\\ETL\\Join","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"All","namespace":"Flow\\ETL\\Join\\Comparison","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"COMPARISON"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2284,"slug":"compare-any","name":"compare_any","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"comparisons","type":[{"name":"Comparison","namespace":"Flow\\ETL\\Join","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Any","namespace":"Flow\\ETL\\Join\\Comparison","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"COMPARISON"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2295,"slug":"join-on","name":"join_on","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"comparisons","type":[{"name":"Comparison","namespace":"Flow\\ETL\\Join","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"join_prefix","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"''"}],"return_type":[{"name":"Expression","namespace":"Flow\\ETL\\Join","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"join","example":"join"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"join","example":"join_each"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxcRmxvd1xFVExcSm9pblxDb21wYXJpc29ufHN0cmluZz58Q29tcGFyaXNvbiAkY29tcGFyaXNvbnMKICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2301,"slug":"compare-entries-by-name","name":"compare_entries_by_name","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"order","type":[{"name":"Order","namespace":"Flow\\ETL\\Transformer\\OrderEntries","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Transformer\\OrderEntries\\Order::..."}],"return_type":[{"name":"Comparator","namespace":"Flow\\ETL\\Transformer\\OrderEntries","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2307,"slug":"compare-entries-by-name-desc","name":"compare_entries_by_name_desc","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"Comparator","namespace":"Flow\\ETL\\Transformer\\OrderEntries","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2316,"slug":"compare-entries-by-type","name":"compare_entries_by_type","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"priorities","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[...]"},{"name":"order","type":[{"name":"Order","namespace":"Flow\\ETL\\Transformer\\OrderEntries","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Transformer\\OrderEntries\\Order::..."}],"return_type":[{"name":"Comparator","namespace":"Flow\\ETL\\Transformer\\OrderEntries","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxjbGFzcy1zdHJpbmc8RW50cnk8bWl4ZWQ+PiwgaW50PiAkcHJpb3JpdGllcwogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2325,"slug":"compare-entries-by-type-desc","name":"compare_entries_by_type_desc","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"priorities","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[...]"}],"return_type":[{"name":"Comparator","namespace":"Flow\\ETL\\Transformer\\OrderEntries","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxjbGFzcy1zdHJpbmc8RW50cnk8bWl4ZWQ+PiwgaW50PiAkcHJpb3JpdGllcwogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2334,"slug":"compare-entries-by-type-and-name","name":"compare_entries_by_type_and_name","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"priorities","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[...]"},{"name":"order","type":[{"name":"Order","namespace":"Flow\\ETL\\Transformer\\OrderEntries","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Transformer\\OrderEntries\\Order::..."}],"return_type":[{"name":"Comparator","namespace":"Flow\\ETL\\Transformer\\OrderEntries","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxjbGFzcy1zdHJpbmc8RW50cnk8bWl4ZWQ+PiwgaW50PiAkcHJpb3JpdGllcwogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2347,"slug":"is-type","name":"is_type","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"type","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxzdHJpbmd8VHlwZTxtaXhlZD4+fFR5cGU8bWl4ZWQ+ICR0eXBlCiAqIEBwYXJhbSBtaXhlZCAkdmFsdWUKICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2410,"slug":"generate-random-string","name":"generate_random_string","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"length","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"32"},{"name":"generator","type":[{"name":"NativePHPRandomValueGenerator","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\NativePHPRandomValueGenerator::..."}],"return_type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2416,"slug":"generate-random-int","name":"generate_random_int","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"start","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"-9223372036854775808"},{"name":"end","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"9223372036854775807"},{"name":"generator","type":[{"name":"NativePHPRandomValueGenerator","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\NativePHPRandomValueGenerator::..."}],"return_type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2422,"slug":"random-string","name":"random_string","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"length","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"generator","type":[{"name":"RandomValueGenerator","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\NativePHPRandomValueGenerator::..."}],"return_type":[{"name":"RandomString","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2433,"slug":"dom-element-to-string","name":"dom_element_to_string","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"element","type":[{"name":"DOMElement","namespace":"","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"format_output","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"preserver_white_space","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"false","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBkZXByZWNhdGVkIFBsZWFzZSB1c2UgXEZsb3dcVHlwZXNcRFNMXGRvbV9lbGVtZW50X3RvX3N0cmluZygpIGluc3RlYWQKICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2439,"slug":"date-interval-to-milliseconds","name":"date_interval_to_milliseconds","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"interval","type":[{"name":"DateInterval","namespace":"","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2456,"slug":"date-interval-to-seconds","name":"date_interval_to_seconds","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"interval","type":[{"name":"DateInterval","namespace":"","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2473,"slug":"date-interval-to-microseconds","name":"date_interval_to_microseconds","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"interval","type":[{"name":"DateInterval","namespace":"","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2490,"slug":"with-entry","name":"with_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"function","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"WithEntry","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2496,"slug":"constraint-unique","name":"constraint_unique","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"reference","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"references","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"UniqueConstraint","namespace":"Flow\\ETL\\Constraint","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2502,"slug":"constraint-sorted-by","name":"constraint_sorted_by","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"column","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"columns","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"SortedByConstraint","namespace":"Flow\\ETL\\Constraint","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2513,"slug":"analyze","name":"analyze","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"Analyze","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2522,"slug":"match-cases","name":"match_cases","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"cases","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"default","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"MatchCases","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxNYXRjaENvbmRpdGlvbj4gJGNhc2VzCiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2528,"slug":"match-condition","name":"match_condition","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"condition","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"then","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"MatchCondition","namespace":"Flow\\ETL\\Function\\MatchCases","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2534,"slug":"retry-any-throwable","name":"retry_any_throwable","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"limit","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"AnyThrowable","namespace":"Flow\\ETL\\Retry\\RetryStrategy","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2543,"slug":"retry-on-exception-types","name":"retry_on_exception_types","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"exception_types","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"limit","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OnExceptionTypes","namespace":"Flow\\ETL\\Retry\\RetryStrategy","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxjbGFzcy1zdHJpbmc8XFRocm93YWJsZT4+ICRleGNlcHRpb25fdHlwZXMKICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2549,"slug":"delay-linear","name":"delay_linear","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"delay","type":[{"name":"Duration","namespace":"Flow\\ETL\\Time","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"increment","type":[{"name":"Duration","namespace":"Flow\\ETL\\Time","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Linear","namespace":"Flow\\ETL\\Retry\\DelayFactory","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2555,"slug":"delay-exponential","name":"delay_exponential","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"base","type":[{"name":"Duration","namespace":"Flow\\ETL\\Time","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"multiplier","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"2"},{"name":"max_delay","type":[{"name":"Duration","namespace":"Flow\\ETL\\Time","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Exponential","namespace":"Flow\\ETL\\Retry\\DelayFactory","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2564,"slug":"delay-jitter","name":"delay_jitter","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"delay","type":[{"name":"DelayFactory","namespace":"Flow\\ETL\\Retry","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"jitter_factor","type":[{"name":"float","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Jitter","namespace":"Flow\\ETL\\Retry\\DelayFactory","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBmbG9hdCAkaml0dGVyX2ZhY3RvciBhIHZhbHVlIGJldHdlZW4gMCBhbmQgMSByZXByZXNlbnRpbmcgdGhlIG1heGltdW0gcGVyY2VudGFnZSBvZiBqaXR0ZXIgdG8gYXBwbHkKICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2570,"slug":"delay-fixed","name":"delay_fixed","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"delay","type":[{"name":"Duration","namespace":"Flow\\ETL\\Time","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Fixed","namespace":"Flow\\ETL\\Retry\\DelayFactory","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2576,"slug":"duration-seconds","name":"duration_seconds","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"seconds","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Duration","namespace":"Flow\\ETL\\Time","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2582,"slug":"duration-milliseconds","name":"duration_milliseconds","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"milliseconds","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Duration","namespace":"Flow\\ETL\\Time","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2588,"slug":"duration-microseconds","name":"duration_microseconds","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"microseconds","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Duration","namespace":"Flow\\ETL\\Time","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2594,"slug":"duration-minutes","name":"duration_minutes","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"minutes","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Duration","namespace":"Flow\\ETL\\Time","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2600,"slug":"write-with-retries","name":"write_with_retries","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"loader","type":[{"name":"Loader","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"retry_strategy","type":[{"name":"RetryStrategy","namespace":"Flow\\ETL\\Retry","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Retry\\RetryStrategy\\AnyThrowable::..."},{"name":"delay_factory","type":[{"name":"DelayFactory","namespace":"Flow\\ETL\\Retry","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Retry\\DelayFactory\\Fixed\\FixedMilliseconds::..."},{"name":"sleep","type":[{"name":"Sleep","namespace":"Flow\\ETL\\Time","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Time\\SystemSleep::..."}],"return_type":[{"name":"RetryLoader","namespace":"Flow\\ETL\\Loader","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-avro\/src\/Flow\/ETL\/Adapter\/Avro\/functions.php","start_line_in_file":13,"slug":"from-avro","name":"from_avro","namespace":"Flow\\ETL\\DSL\\Adapter\\Avro","parameters":[{"name":"path","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"AvroExtractor","namespace":"Flow\\ETL\\Adapter\\Avro\\FlixTech","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"AVRO","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-avro\/src\/Flow\/ETL\/Adapter\/Avro\/functions.php","start_line_in_file":21,"slug":"to-avro","name":"to_avro","namespace":"Flow\\ETL\\DSL\\Adapter\\Avro","parameters":[{"name":"path","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"schema","type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"AvroLoader","namespace":"Flow\\ETL\\Adapter\\Avro\\FlixTech","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"AVRO","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-chartjs\/src\/Flow\/ETL\/Adapter\/ChartJS\/functions.php","start_line_in_file":14,"slug":"bar-chart","name":"bar_chart","namespace":"Flow\\ETL\\Adapter\\ChartJS","parameters":[{"name":"label","type":[{"name":"EntryReference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"datasets","type":[{"name":"References","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"BarChart","namespace":"Flow\\ETL\\Adapter\\ChartJS\\Chart","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CHART_JS","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-chartjs\/src\/Flow\/ETL\/Adapter\/ChartJS\/functions.php","start_line_in_file":20,"slug":"line-chart","name":"line_chart","namespace":"Flow\\ETL\\Adapter\\ChartJS","parameters":[{"name":"label","type":[{"name":"EntryReference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"datasets","type":[{"name":"References","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"LineChart","namespace":"Flow\\ETL\\Adapter\\ChartJS\\Chart","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CHART_JS","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-chartjs\/src\/Flow\/ETL\/Adapter\/ChartJS\/functions.php","start_line_in_file":26,"slug":"pie-chart","name":"pie_chart","namespace":"Flow\\ETL\\Adapter\\ChartJS","parameters":[{"name":"label","type":[{"name":"EntryReference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"datasets","type":[{"name":"References","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"PieChart","namespace":"Flow\\ETL\\Adapter\\ChartJS\\Chart","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CHART_JS","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-chartjs\/src\/Flow\/ETL\/Adapter\/ChartJS\/functions.php","start_line_in_file":32,"slug":"to-chartjs","name":"to_chartjs","namespace":"Flow\\ETL\\Adapter\\ChartJS","parameters":[{"name":"type","type":[{"name":"Chart","namespace":"Flow\\ETL\\Adapter\\ChartJS","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ChartJSLoader","namespace":"Flow\\ETL\\Adapter\\ChartJS","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CHART_JS","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-chartjs\/src\/Flow\/ETL\/Adapter\/ChartJS\/functions.php","start_line_in_file":43,"slug":"to-chartjs-file","name":"to_chartjs_file","namespace":"Flow\\ETL\\Adapter\\ChartJS","parameters":[{"name":"type","type":[{"name":"Chart","namespace":"Flow\\ETL\\Adapter\\ChartJS","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"output","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"template","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"ChartJSLoader","namespace":"Flow\\ETL\\Adapter\\ChartJS","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CHART_JS","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBDaGFydCAkdHlwZQogKiBAcGFyYW0gbnVsbHxQYXRofHN0cmluZyAkb3V0cHV0IC0gQGRlcHJlY2F0ZWQgdXNlICRsb2FkZXItPndpdGhPdXRwdXRQYXRoKCkgaW5zdGVhZAogKiBAcGFyYW0gbnVsbHxQYXRofHN0cmluZyAkdGVtcGxhdGUgLSBAZGVwcmVjYXRlZCB1c2UgJGxvYWRlci0+d2l0aFRlbXBsYXRlKCkgaW5zdGVhZAogKi8="},{"repository_path":"src\/adapter\/etl-adapter-chartjs\/src\/Flow\/ETL\/Adapter\/ChartJS\/functions.php","start_line_in_file":71,"slug":"to-chartjs-var","name":"to_chartjs_var","namespace":"Flow\\ETL\\Adapter\\ChartJS","parameters":[{"name":"type","type":[{"name":"Chart","namespace":"Flow\\ETL\\Adapter\\ChartJS","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"output","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ChartJSLoader","namespace":"Flow\\ETL\\Adapter\\ChartJS","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CHART_JS","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBDaGFydCAkdHlwZQogKiBAcGFyYW0gYXJyYXk8YXJyYXkta2V5LCBtaXhlZD4gJG91dHB1dCAtIEBkZXByZWNhdGVkIHVzZSAkbG9hZGVyLT53aXRoT3V0cHV0VmFyKCkgaW5zdGVhZAogKi8="},{"repository_path":"src\/adapter\/etl-adapter-csv\/src\/Flow\/ETL\/Adapter\/CSV\/functions.php","start_line_in_file":25,"slug":"from-csv","name":"from_csv","namespace":"Flow\\ETL\\Adapter\\CSV","parameters":[{"name":"path","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"with_header","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"},{"name":"empty_to_null","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"},{"name":"separator","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"enclosure","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"escape","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"characters_read_in_line","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"1000"},{"name":"schema","type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"CSVExtractor","namespace":"Flow\\ETL\\Adapter\\CSV","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CSV","type":"EXTRACTOR"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_reading","option":"csv"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBQYXRofHN0cmluZyAkcGF0aAogKiBAcGFyYW0gYm9vbCAkZW1wdHlfdG9fbnVsbCAtIEBkZXByZWNhdGVkIHVzZSAkbG9hZGVyLT53aXRoRW1wdHlUb051bGwoKSBpbnN0ZWFkCiAqIEBwYXJhbSBib29sICR3aXRoX2hlYWRlciAtIEBkZXByZWNhdGVkIHVzZSAkbG9hZGVyLT53aXRoSGVhZGVyKCkgaW5zdGVhZAogKiBAcGFyYW0gbnVsbHxzdHJpbmcgJHNlcGFyYXRvciAtIEBkZXByZWNhdGVkIHVzZSAkbG9hZGVyLT53aXRoU2VwYXJhdG9yKCkgaW5zdGVhZAogKiBAcGFyYW0gbnVsbHxzdHJpbmcgJGVuY2xvc3VyZSAtIEBkZXByZWNhdGVkIHVzZSAkbG9hZGVyLT53aXRoRW5jbG9zdXJlKCkgaW5zdGVhZAogKiBAcGFyYW0gbnVsbHxzdHJpbmcgJGVzY2FwZSAtIEBkZXByZWNhdGVkIHVzZSAkbG9hZGVyLT53aXRoRXNjYXBlKCkgaW5zdGVhZAogKiBAcGFyYW0gaW50PDEsIG1heD4gJGNoYXJhY3RlcnNfcmVhZF9pbl9saW5lIC0gQGRlcHJlY2F0ZWQgdXNlICRsb2FkZXItPndpdGhDaGFyYWN0ZXJzUmVhZEluTGluZSgpIGluc3RlYWQKICogQHBhcmFtIG51bGx8U2NoZW1hICRzY2hlbWEgLSBAZGVwcmVjYXRlZCB1c2UgJGxvYWRlci0+d2l0aFNjaGVtYSgpIGluc3RlYWQKICov"},{"repository_path":"src\/adapter\/etl-adapter-csv\/src\/Flow\/ETL\/Adapter\/CSV\/functions.php","start_line_in_file":70,"slug":"to-csv","name":"to_csv","namespace":"Flow\\ETL\\Adapter\\CSV","parameters":[{"name":"uri","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"with_header","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"},{"name":"separator","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"','"},{"name":"enclosure","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'\\\"'"},{"name":"escape","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'\\\\'"},{"name":"new_line_separator","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'\\n'"},{"name":"datetime_format","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'Y-m-d\\\\TH:i:sP'"}],"return_type":[{"name":"CSVLoader","namespace":"Flow\\ETL\\Adapter\\CSV","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CSV","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBQYXRofHN0cmluZyAkdXJpCiAqIEBwYXJhbSBib29sICR3aXRoX2hlYWRlciAtIEBkZXByZWNhdGVkIHVzZSAkbG9hZGVyLT53aXRoSGVhZGVyKCkgaW5zdGVhZAogKiBAcGFyYW0gc3RyaW5nICRzZXBhcmF0b3IgLSBAZGVwcmVjYXRlZCB1c2UgJGxvYWRlci0+d2l0aFNlcGFyYXRvcigpIGluc3RlYWQKICogQHBhcmFtIHN0cmluZyAkZW5jbG9zdXJlIC0gQGRlcHJlY2F0ZWQgdXNlICRsb2FkZXItPndpdGhFbmNsb3N1cmUoKSBpbnN0ZWFkCiAqIEBwYXJhbSBzdHJpbmcgJGVzY2FwZSAtIEBkZXByZWNhdGVkIHVzZSAkbG9hZGVyLT53aXRoRXNjYXBlKCkgaW5zdGVhZAogKiBAcGFyYW0gc3RyaW5nICRuZXdfbGluZV9zZXBhcmF0b3IgLSBAZGVwcmVjYXRlZCB1c2UgJGxvYWRlci0+d2l0aE5ld0xpbmVTZXBhcmF0b3IoKSBpbnN0ZWFkCiAqIEBwYXJhbSBzdHJpbmcgJGRhdGV0aW1lX2Zvcm1hdCAtIEBkZXByZWNhdGVkIHVzZSAkbG9hZGVyLT53aXRoRGF0ZVRpbWVGb3JtYXQoKSBpbnN0ZWFkCiAqLw=="},{"repository_path":"src\/adapter\/etl-adapter-csv\/src\/Flow\/ETL\/Adapter\/CSV\/functions.php","start_line_in_file":95,"slug":"csv-detect-separator","name":"csv_detect_separator","namespace":"Flow\\ETL\\Adapter\\CSV","parameters":[{"name":"stream","type":[{"name":"SourceStream","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"lines","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"5"},{"name":"fallback","type":[{"name":"Option","namespace":"Flow\\ETL\\Adapter\\CSV\\Detector","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"Flow\\ETL\\Adapter\\CSV\\Detector\\Option::..."},{"name":"options","type":[{"name":"Options","namespace":"Flow\\ETL\\Adapter\\CSV\\Detector","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Option","namespace":"Flow\\ETL\\Adapter\\CSV\\Detector","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CSV","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBTb3VyY2VTdHJlYW0gJHN0cmVhbSAtIHZhbGlkIHJlc291cmNlIHRvIENTViBmaWxlCiAqIEBwYXJhbSBpbnQ8MSwgbWF4PiAkbGluZXMgLSBudW1iZXIgb2YgbGluZXMgdG8gcmVhZCBmcm9tIENTViBmaWxlLCBkZWZhdWx0IDUsIG1vcmUgbGluZXMgbWVhbnMgbW9yZSBhY2N1cmF0ZSBkZXRlY3Rpb24gYnV0IHNsb3dlciBkZXRlY3Rpb24KICogQHBhcmFtIG51bGx8T3B0aW9uICRmYWxsYmFjayAtIGZhbGxiYWNrIG9wdGlvbiB0byB1c2Ugd2hlbiBubyBiZXN0IG9wdGlvbiBjYW4gYmUgZGV0ZWN0ZWQsIGRlZmF1bHQgaXMgT3B0aW9uKCcsJywgJyInLCAnXFwnKQogKiBAcGFyYW0gbnVsbHxPcHRpb25zICRvcHRpb25zIC0gb3B0aW9ucyB0byB1c2UgZm9yIGRldGVjdGlvbiwgZGVmYXVsdCBpcyBPcHRpb25zOjphbGwoKQogKi8="},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":36,"slug":"dbal-dataframe-factory","name":"dbal_dataframe_factory","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"connection","type":[{"name":"Connection","namespace":"Doctrine\\DBAL","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"query","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"parameters","type":[{"name":"QueryParameter","namespace":"Flow\\ETL\\Adapter\\Doctrine","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"DbalDataFrameFactory","namespace":"Flow\\ETL\\Adapter\\Doctrine","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxzdHJpbmcsIG1peGVkPnxDb25uZWN0aW9uICRjb25uZWN0aW9uCiAqIEBwYXJhbSBzdHJpbmcgJHF1ZXJ5CiAqIEBwYXJhbSBRdWVyeVBhcmFtZXRlciAuLi4kcGFyYW1ldGVycwogKi8="},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":56,"slug":"from-dbal-limit-offset","name":"from_dbal_limit_offset","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"connection","type":[{"name":"Connection","namespace":"Doctrine\\DBAL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"table","type":[{"name":"Table","namespace":"Flow\\ETL\\Adapter\\Doctrine","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"order_by","type":[{"name":"OrderBy","namespace":"Flow\\ETL\\Adapter\\Doctrine","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"page_size","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"1000"},{"name":"maximum","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"DbalLimitOffsetExtractor","namespace":"Flow\\ETL\\Adapter\\Doctrine","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBDb25uZWN0aW9uICRjb25uZWN0aW9uCiAqIEBwYXJhbSBzdHJpbmd8VGFibGUgJHRhYmxlCiAqIEBwYXJhbSBhcnJheTxPcmRlckJ5PnxPcmRlckJ5ICRvcmRlcl9ieQogKiBAcGFyYW0gaW50ICRwYWdlX3NpemUKICogQHBhcmFtIG51bGx8aW50ICRtYXhpbXVtCiAqCiAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAqLw=="},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":83,"slug":"from-dbal-limit-offset-qb","name":"from_dbal_limit_offset_qb","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"connection","type":[{"name":"Connection","namespace":"Doctrine\\DBAL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"queryBuilder","type":[{"name":"QueryBuilder","namespace":"Doctrine\\DBAL\\Query","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"page_size","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"1000"},{"name":"maximum","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"offset","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"}],"return_type":[{"name":"DbalLimitOffsetExtractor","namespace":"Flow\\ETL\\Adapter\\Doctrine","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBDb25uZWN0aW9uICRjb25uZWN0aW9uCiAqIEBwYXJhbSBpbnQgJHBhZ2Vfc2l6ZQogKiBAcGFyYW0gbnVsbHxpbnQgJG1heGltdW0gLSBtYXhpbXVtIGNhbiBhbHNvIGJlIHRha2VuIGZyb20gYSBxdWVyeSBidWlsZGVyLCAkbWF4aW11bSBob3dldmVyIGlzIHVzZWQgcmVnYXJkbGVzcyBvZiB0aGUgcXVlcnkgYnVpbGRlciBpZiBpdCdzIHNldAogKiBAcGFyYW0gaW50ICRvZmZzZXQgLSBvZmZzZXQgY2FuIGFsc28gYmUgdGFrZW4gZnJvbSBhIHF1ZXJ5IGJ1aWxkZXIsICRvZmZzZXQgaG93ZXZlciBpcyB1c2VkIHJlZ2FyZGxlc3Mgb2YgdGhlIHF1ZXJ5IGJ1aWxkZXIgaWYgaXQncyBzZXQgdG8gbm9uIDAgdmFsdWUKICov"},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":104,"slug":"from-dbal-key-set-qb","name":"from_dbal_key_set_qb","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"connection","type":[{"name":"Connection","namespace":"Doctrine\\DBAL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"queryBuilder","type":[{"name":"QueryBuilder","namespace":"Doctrine\\DBAL\\Query","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"key_set","type":[{"name":"KeySet","namespace":"Flow\\ETL\\Adapter\\Doctrine\\Pagination","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"DbalKeySetExtractor","namespace":"Flow\\ETL\\Adapter\\Doctrine","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":117,"slug":"from-dbal-queries","name":"from_dbal_queries","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"connection","type":[{"name":"Connection","namespace":"Doctrine\\DBAL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"query","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"parameters_set","type":[{"name":"ParametersSet","namespace":"Flow\\ETL\\Adapter\\Doctrine","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"types","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"DbalQueryExtractor","namespace":"Flow\\ETL\\Adapter\\Doctrine","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBudWxsfFBhcmFtZXRlcnNTZXQgJHBhcmFtZXRlcnNfc2V0IC0gZWFjaCBvbmUgcGFyYW1ldGVycyBhcnJheSB3aWxsIGJlIGV2YWx1YXRlZCBhcyBuZXcgcXVlcnkKICogQHBhcmFtIGFycmF5PGludHxzdHJpbmcsIERiYWxBcnJheVR5cGV8RGJhbFBhcmFtZXRlclR5cGV8RGJhbFR5cGV8aW50fHN0cmluZz4gJHR5cGVzCiAqLw=="},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":147,"slug":"dbal-from-queries","name":"dbal_from_queries","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"connection","type":[{"name":"Connection","namespace":"Doctrine\\DBAL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"query","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"parameters_set","type":[{"name":"ParametersSet","namespace":"Flow\\ETL\\Adapter\\Doctrine","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"types","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"DbalQueryExtractor","namespace":"Flow\\ETL\\Adapter\\Doctrine","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBkZXByZWNhdGVkIHVzZSBmcm9tX2RiYWxfcXVlcmllcygpIGluc3RlYWQKICoKICogQHBhcmFtIG51bGx8UGFyYW1ldGVyc1NldCAkcGFyYW1ldGVyc19zZXQgLSBlYWNoIG9uZSBwYXJhbWV0ZXJzIGFycmF5IHdpbGwgYmUgZXZhbHVhdGVkIGFzIG5ldyBxdWVyeQogKiBAcGFyYW0gYXJyYXk8aW50fHN0cmluZywgRGJhbEFycmF5VHlwZXxEYmFsUGFyYW1ldGVyVHlwZXxEYmFsVHlwZXxpbnR8c3RyaW5nPiAkdHlwZXMKICov"},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":161,"slug":"from-dbal-query","name":"from_dbal_query","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"connection","type":[{"name":"Connection","namespace":"Doctrine\\DBAL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"query","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"parameters","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"types","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"DbalQueryExtractor","namespace":"Flow\\ETL\\Adapter\\Doctrine","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxzdHJpbmcsIG1peGVkPnxsaXN0PG1peGVkPiAkcGFyYW1ldGVycyAtIEBkZXByZWNhdGVkIHVzZSBEYmFsUXVlcnlFeHRyYWN0b3I6OndpdGhQYXJhbWV0ZXJzKCkgaW5zdGVhZAogKiBAcGFyYW0gYXJyYXk8aW50PDAsIG1heD58c3RyaW5nLCBEYmFsQXJyYXlUeXBlfERiYWxQYXJhbWV0ZXJUeXBlfERiYWxUeXBlfHN0cmluZz4gJHR5cGVzIC0gQGRlcHJlY2F0ZWQgdXNlIERiYWxRdWVyeUV4dHJhY3Rvcjo6d2l0aFR5cGVzKCkgaW5zdGVhZAogKi8="},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":182,"slug":"dbal-from-query","name":"dbal_from_query","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"connection","type":[{"name":"Connection","namespace":"Doctrine\\DBAL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"query","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"parameters","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"types","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"DbalQueryExtractor","namespace":"Flow\\ETL\\Adapter\\Doctrine","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBkZXByZWNhdGVkIHVzZSBmcm9tX2RiYWxfcXVlcnkoKSBpbnN0ZWFkCiAqCiAqIEBwYXJhbSBhcnJheTxzdHJpbmcsIG1peGVkPnxsaXN0PG1peGVkPiAkcGFyYW1ldGVycyAtIEBkZXByZWNhdGVkIHVzZSBEYmFsUXVlcnlFeHRyYWN0b3I6OndpdGhQYXJhbWV0ZXJzKCkgaW5zdGVhZAogKiBAcGFyYW0gYXJyYXk8aW50PDAsIG1heD58c3RyaW5nLCBEYmFsQXJyYXlUeXBlfERiYWxQYXJhbWV0ZXJUeXBlfERiYWxUeXBlfHN0cmluZz4gJHR5cGVzIC0gQGRlcHJlY2F0ZWQgdXNlIERiYWxRdWVyeUV4dHJhY3Rvcjo6d2l0aFR5cGVzKCkgaW5zdGVhZAogKi8="},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":208,"slug":"to-dbal-table-insert","name":"to_dbal_table_insert","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"connection","type":[{"name":"Connection","namespace":"Doctrine\\DBAL","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"table","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"options","type":[{"name":"InsertOptions","namespace":"Flow\\Doctrine\\Bulk","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"DbalLoader","namespace":"Flow\\ETL\\Adapter\\Doctrine","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"LOADER"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_writing","option":"database_upsert"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEluc2VydCBuZXcgcm93cyBpbnRvIGEgZGF0YWJhc2UgdGFibGUuCiAqIEluc2VydCBjYW4gYWxzbyBiZSB1c2VkIGFzIGFuIHVwc2VydCB3aXRoIHRoZSBoZWxwIG9mIEluc2VydE9wdGlvbnMuCiAqIEluc2VydE9wdGlvbnMgYXJlIHBsYXRmb3JtIHNwZWNpZmljLCBzbyBwbGVhc2UgY2hvb3NlIHRoZSByaWdodCBvbmUgZm9yIHlvdXIgZGF0YWJhc2UuCiAqCiAqICAtIE15U1FMSW5zZXJ0T3B0aW9ucwogKiAgLSBQb3N0Z3JlU1FMSW5zZXJ0T3B0aW9ucwogKiAgLSBTcWxpdGVJbnNlcnRPcHRpb25zCiAqCiAqIEluIG9yZGVyIHRvIGNvbnRyb2wgdGhlIHNpemUgb2YgdGhlIHNpbmdsZSBpbnNlcnQsIHVzZSBEYXRhRnJhbWU6OmNodW5rU2l6ZSgpIG1ldGhvZCBqdXN0IGJlZm9yZSBjYWxsaW5nIERhdGFGcmFtZTo6bG9hZCgpLgogKgogKiBAcGFyYW0gYXJyYXk8c3RyaW5nLCBtaXhlZD58Q29ubmVjdGlvbiAkY29ubmVjdGlvbgogKgogKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgogKi8="},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":228,"slug":"to-dbal-table-update","name":"to_dbal_table_update","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"connection","type":[{"name":"Connection","namespace":"Doctrine\\DBAL","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"table","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"options","type":[{"name":"UpdateOptions","namespace":"Flow\\Doctrine\\Bulk","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"DbalLoader","namespace":"Flow\\ETL\\Adapter\\Doctrine","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqICBVcGRhdGUgZXhpc3Rpbmcgcm93cyBpbiBkYXRhYmFzZS4KICoKICogIEluIG9yZGVyIHRvIGNvbnRyb2wgdGhlIHNpemUgb2YgdGhlIHNpbmdsZSByZXF1ZXN0LCB1c2UgRGF0YUZyYW1lOjpjaHVua1NpemUoKSBtZXRob2QganVzdCBiZWZvcmUgY2FsbGluZyBEYXRhRnJhbWU6OmxvYWQoKS4KICoKICogQHBhcmFtIGFycmF5PHN0cmluZywgbWl4ZWQ+fENvbm5lY3Rpb24gJGNvbm5lY3Rpb24KICoKICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICov"},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":248,"slug":"to-dbal-table-delete","name":"to_dbal_table_delete","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"connection","type":[{"name":"Connection","namespace":"Doctrine\\DBAL","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"table","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"DbalLoader","namespace":"Flow\\ETL\\Adapter\\Doctrine","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIERlbGV0ZSByb3dzIGZyb20gZGF0YWJhc2UgdGFibGUgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGRhdGEuCiAqCiAqIEluIG9yZGVyIHRvIGNvbnRyb2wgdGhlIHNpemUgb2YgdGhlIHNpbmdsZSByZXF1ZXN0LCB1c2UgRGF0YUZyYW1lOjpjaHVua1NpemUoKSBtZXRob2QganVzdCBiZWZvcmUgY2FsbGluZyBEYXRhRnJhbWU6OmxvYWQoKS4KICoKICogQHBhcmFtIGFycmF5PHN0cmluZywgbWl4ZWQ+fENvbm5lY3Rpb24gJGNvbm5lY3Rpb24KICoKICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICov"},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":265,"slug":"to-dbal-schema-table","name":"to_dbal_schema_table","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"schema","type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"table_name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"table_options","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"types_map","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"Table","namespace":"Doctrine\\DBAL\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENvbnZlcnRzIGEgRmxvd1xFVExcU2NoZW1hIHRvIGEgRG9jdHJpbmVcREJBTFxTY2hlbWFcVGFibGUuCiAqCiAqIEBwYXJhbSBTY2hlbWEgJHNjaGVtYQogKiBAcGFyYW0gYXJyYXk8YXJyYXkta2V5LCBtaXhlZD4gJHRhYmxlX29wdGlvbnMKICogQHBhcmFtIGFycmF5PGNsYXNzLXN0cmluZzxcRmxvd1xUeXBlc1xUeXBlPG1peGVkPj4sIGNsYXNzLXN0cmluZzxcRG9jdHJpbmVcREJBTFxUeXBlc1xUeXBlPj4gJHR5cGVzX21hcAogKi8="},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":278,"slug":"table-schema-to-flow-schema","name":"table_schema_to_flow_schema","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"table","type":[{"name":"Table","namespace":"Doctrine\\DBAL\\Schema","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"types_map","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENvbnZlcnRzIGEgRG9jdHJpbmVcREJBTFxTY2hlbWFcVGFibGUgdG8gYSBGbG93XEVUTFxTY2hlbWEuCiAqCiAqIEBwYXJhbSBhcnJheTxjbGFzcy1zdHJpbmc8XEZsb3dcVHlwZXNcVHlwZTxtaXhlZD4+LCBjbGFzcy1zdHJpbmc8XERvY3RyaW5lXERCQUxcVHlwZXNcVHlwZT4+ICR0eXBlc19tYXAKICoKICogQHJldHVybiBTY2hlbWEKICov"},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":289,"slug":"postgresql-insert-options","name":"postgresql_insert_options","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"skip_conflicts","type":[{"name":"bool","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"constraint","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"conflict_columns","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"update_columns","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"PostgreSQLInsertOptions","namespace":"Flow\\Doctrine\\Bulk\\Dialect","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"HELPER"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_writing","option":"database_upsert"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxzdHJpbmc+ICRjb25mbGljdF9jb2x1bW5zCiAqIEBwYXJhbSBhcnJheTxzdHJpbmc+ICR1cGRhdGVfY29sdW1ucwogKi8="},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":298,"slug":"mysql-insert-options","name":"mysql_insert_options","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"skip_conflicts","type":[{"name":"bool","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"upsert","type":[{"name":"bool","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"update_columns","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"MySQLInsertOptions","namespace":"Flow\\Doctrine\\Bulk\\Dialect","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxzdHJpbmc+ICR1cGRhdGVfY29sdW1ucwogKi8="},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":308,"slug":"sqlite-insert-options","name":"sqlite_insert_options","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"skip_conflicts","type":[{"name":"bool","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"conflict_columns","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"update_columns","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"SqliteInsertOptions","namespace":"Flow\\Doctrine\\Bulk\\Dialect","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxzdHJpbmc+ICRjb25mbGljdF9jb2x1bW5zCiAqIEBwYXJhbSBhcnJheTxzdHJpbmc+ICR1cGRhdGVfY29sdW1ucwogKi8="},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":318,"slug":"postgresql-update-options","name":"postgresql_update_options","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"primary_key_columns","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"update_columns","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"PostgreSQLUpdateOptions","namespace":"Flow\\Doctrine\\Bulk\\Dialect","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxzdHJpbmc+ICRwcmltYXJ5X2tleV9jb2x1bW5zCiAqIEBwYXJhbSBhcnJheTxzdHJpbmc+ICR1cGRhdGVfY29sdW1ucwogKi8="},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":339,"slug":"to-dbal-transaction","name":"to_dbal_transaction","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"connection","type":[{"name":"Connection","namespace":"Doctrine\\DBAL","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"loaders","type":[{"name":"Loader","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"TransactionalDbalLoader","namespace":"Flow\\ETL\\Adapter\\Doctrine","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEV4ZWN1dGUgbXVsdGlwbGUgbG9hZGVycyB3aXRoaW4gYSBkYXRhYmFzZSB0cmFuc2FjdGlvbi4KICogRWFjaCBiYXRjaCBvZiByb3dzIHdpbGwgYmUgcHJvY2Vzc2VkIGluIGl0cyBvd24gdHJhbnNhY3Rpb24uCiAqIElmIGFueSBsb2FkZXIgZmFpbHMsIHRoZSBlbnRpcmUgYmF0Y2ggd2lsbCBiZSByb2xsZWQgYmFjay4KICoKICogQHBhcmFtIGFycmF5PHN0cmluZywgbWl4ZWQ+fENvbm5lY3Rpb24gJGNvbm5lY3Rpb24KICogQHBhcmFtIExvYWRlciAuLi4kbG9hZGVycyAtIExvYWRlcnMgdG8gZXhlY3V0ZSB3aXRoaW4gdGhlIHRyYW5zYWN0aW9uCiAqCiAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAqLw=="},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":349,"slug":"pagination-key-asc","name":"pagination_key_asc","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"column","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"type","type":[{"name":"ParameterType","namespace":"Doctrine\\DBAL","is_nullable":false,"is_variadic":false},{"name":"Type","namespace":"Doctrine\\DBAL\\Types","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Doctrine\\DBAL\\ParameterType::..."}],"return_type":[{"name":"Key","namespace":"Flow\\ETL\\Adapter\\Doctrine\\Pagination","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":355,"slug":"pagination-key-desc","name":"pagination_key_desc","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"column","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"type","type":[{"name":"ParameterType","namespace":"Doctrine\\DBAL","is_nullable":false,"is_variadic":false},{"name":"Type","namespace":"Doctrine\\DBAL\\Types","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Doctrine\\DBAL\\ParameterType::..."}],"return_type":[{"name":"Key","namespace":"Flow\\ETL\\Adapter\\Doctrine\\Pagination","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":361,"slug":"pagination-key-set","name":"pagination_key_set","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"keys","type":[{"name":"Key","namespace":"Flow\\ETL\\Adapter\\Doctrine\\Pagination","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"KeySet","namespace":"Flow\\ETL\\Adapter\\Doctrine\\Pagination","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-excel\/src\/Flow\/ETL\/Adapter\/Excel\/DSL\/functions.php","start_line_in_file":18,"slug":"from-excel","name":"from_excel","namespace":"Flow\\ETL\\Adapter\\Excel\\DSL","parameters":[{"name":"path","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ExcelExtractor","namespace":"Flow\\ETL\\Adapter\\Excel","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"EXCEL","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-excel\/src\/Flow\/ETL\/Adapter\/Excel\/DSL\/functions.php","start_line_in_file":25,"slug":"to-excel","name":"to_excel","namespace":"Flow\\ETL\\Adapter\\Excel\\DSL","parameters":[{"name":"path","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ExcelLoader","namespace":"Flow\\ETL\\Adapter\\Excel","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"EXCEL","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-excel\/src\/Flow\/ETL\/Adapter\/Excel\/DSL\/functions.php","start_line_in_file":31,"slug":"is-valid-excel-sheet-name","name":"is_valid_excel_sheet_name","namespace":"Flow\\ETL\\Adapter\\Excel\\DSL","parameters":[{"name":"sheet_name","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"IsValidExcelSheetName","namespace":"Flow\\ETL\\Adapter\\Excel\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"EXCEL","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-elasticsearch\/src\/Flow\/ETL\/Adapter\/Elasticsearch\/functions.php","start_line_in_file":36,"slug":"to-es-bulk-index","name":"to_es_bulk_index","namespace":"Flow\\ETL\\Adapter\\Elasticsearch","parameters":[{"name":"config","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"index","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"id_factory","type":[{"name":"IdFactory","namespace":"Flow\\ETL\\Adapter\\Elasticsearch","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"parameters","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"ElasticsearchLoader","namespace":"Flow\\ETL\\Adapter\\Elasticsearch\\ElasticsearchPHP","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"ELASTIC_SEARCH","type":"LOADER"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_writing","option":"elasticsearch"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIGh0dHBzOi8vd3d3LmVsYXN0aWMuY28vZ3VpZGUvZW4vZWxhc3RpY3NlYXJjaC9yZWZlcmVuY2UvbWFzdGVyL2RvY3MtYnVsay5odG1sLgogKgogKiBJbiBvcmRlciB0byBjb250cm9sIHRoZSBzaXplIG9mIHRoZSBzaW5nbGUgcmVxdWVzdCwgdXNlIERhdGFGcmFtZTo6Y2h1bmtTaXplKCkgbWV0aG9kIGp1c3QgYmVmb3JlIGNhbGxpbmcgRGF0YUZyYW1lOjpsb2FkKCkuCiAqCiAqIEBwYXJhbSBhcnJheXsKICogIGhvc3RzPzogYXJyYXk8c3RyaW5nPiwKICogIGNvbm5lY3Rpb25QYXJhbXM\/OiBhcnJheTxtaXhlZD4sCiAqICByZXRyaWVzPzogaW50LAogKiAgc25pZmZPblN0YXJ0PzogYm9vbCwKICogIHNzbENlcnQ\/OiBhcnJheTxzdHJpbmc+LAogKiAgc3NsS2V5PzogYXJyYXk8c3RyaW5nPiwKICogIHNzbFZlcmlmaWNhdGlvbj86IGJvb2x8c3RyaW5nLAogKiAgZWxhc3RpY01ldGFIZWFkZXI\/OiBib29sLAogKiAgaW5jbHVkZVBvcnRJbkhvc3RIZWFkZXI\/OiBib29sCiAqIH0gJGNvbmZpZwogKiBAcGFyYW0gc3RyaW5nICRpbmRleAogKiBAcGFyYW0gSWRGYWN0b3J5ICRpZF9mYWN0b3J5CiAqIEBwYXJhbSBhcnJheTxtaXhlZD4gJHBhcmFtZXRlcnMgLSBodHRwczovL3d3dy5lbGFzdGljLmNvL2d1aWRlL2VuL2VsYXN0aWNzZWFyY2gvcmVmZXJlbmNlL21hc3Rlci9kb2NzLWJ1bGsuaHRtbCAtIEBkZXByZWNhdGVkIHVzZSB3aXRoUGFyYW1ldGVycyBtZXRob2QgaW5zdGVhZAogKi8="},{"repository_path":"src\/adapter\/etl-adapter-elasticsearch\/src\/Flow\/ETL\/Adapter\/Elasticsearch\/functions.php","start_line_in_file":47,"slug":"entry-id-factory","name":"entry_id_factory","namespace":"Flow\\ETL\\Adapter\\Elasticsearch","parameters":[{"name":"entry_name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"IdFactory","namespace":"Flow\\ETL\\Adapter\\Elasticsearch","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"ELASTIC_SEARCH","type":"HELPER"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_writing","option":"elasticsearch"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-elasticsearch\/src\/Flow\/ETL\/Adapter\/Elasticsearch\/functions.php","start_line_in_file":53,"slug":"hash-id-factory","name":"hash_id_factory","namespace":"Flow\\ETL\\Adapter\\Elasticsearch","parameters":[{"name":"entry_names","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"IdFactory","namespace":"Flow\\ETL\\Adapter\\Elasticsearch","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"ELASTIC_SEARCH","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-elasticsearch\/src\/Flow\/ETL\/Adapter\/Elasticsearch\/functions.php","start_line_in_file":79,"slug":"to-es-bulk-update","name":"to_es_bulk_update","namespace":"Flow\\ETL\\Adapter\\Elasticsearch","parameters":[{"name":"config","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"index","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"id_factory","type":[{"name":"IdFactory","namespace":"Flow\\ETL\\Adapter\\Elasticsearch","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"parameters","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"ElasticsearchLoader","namespace":"Flow\\ETL\\Adapter\\Elasticsearch\\ElasticsearchPHP","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"ELASTIC_SEARCH","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqICBodHRwczovL3d3dy5lbGFzdGljLmNvL2d1aWRlL2VuL2VsYXN0aWNzZWFyY2gvcmVmZXJlbmNlL21hc3Rlci9kb2NzLWJ1bGsuaHRtbC4KICoKICogSW4gb3JkZXIgdG8gY29udHJvbCB0aGUgc2l6ZSBvZiB0aGUgc2luZ2xlIHJlcXVlc3QsIHVzZSBEYXRhRnJhbWU6OmNodW5rU2l6ZSgpIG1ldGhvZCBqdXN0IGJlZm9yZSBjYWxsaW5nIERhdGFGcmFtZTo6bG9hZCgpLgogKgogKiBAcGFyYW0gYXJyYXl7CiAqICBob3N0cz86IGFycmF5PHN0cmluZz4sCiAqICBjb25uZWN0aW9uUGFyYW1zPzogYXJyYXk8bWl4ZWQ+LAogKiAgcmV0cmllcz86IGludCwKICogIHNuaWZmT25TdGFydD86IGJvb2wsCiAqICBzc2xDZXJ0PzogYXJyYXk8c3RyaW5nPiwKICogIHNzbEtleT86IGFycmF5PHN0cmluZz4sCiAqICBzc2xWZXJpZmljYXRpb24\/OiBib29sfHN0cmluZywKICogIGVsYXN0aWNNZXRhSGVhZGVyPzogYm9vbCwKICogIGluY2x1ZGVQb3J0SW5Ib3N0SGVhZGVyPzogYm9vbAogKiB9ICRjb25maWcKICogQHBhcmFtIHN0cmluZyAkaW5kZXgKICogQHBhcmFtIElkRmFjdG9yeSAkaWRfZmFjdG9yeQogKiBAcGFyYW0gYXJyYXk8bWl4ZWQ+ICRwYXJhbWV0ZXJzIC0gaHR0cHM6Ly93d3cuZWxhc3RpYy5jby9ndWlkZS9lbi9lbGFzdGljc2VhcmNoL3JlZmVyZW5jZS9tYXN0ZXIvZG9jcy1idWxrLmh0bWwgLSBAZGVwcmVjYXRlZCB1c2Ugd2l0aFBhcmFtZXRlcnMgbWV0aG9kIGluc3RlYWQKICov"},{"repository_path":"src\/adapter\/etl-adapter-elasticsearch\/src\/Flow\/ETL\/Adapter\/Elasticsearch\/functions.php","start_line_in_file":95,"slug":"es-hits-to-rows","name":"es_hits_to_rows","namespace":"Flow\\ETL\\Adapter\\Elasticsearch","parameters":[{"name":"source","type":[{"name":"DocumentDataSource","namespace":"Flow\\ETL\\Adapter\\Elasticsearch\\ElasticsearchPHP","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Adapter\\Elasticsearch\\ElasticsearchPHP\\DocumentDataSource::..."}],"return_type":[{"name":"HitsIntoRowsTransformer","namespace":"Flow\\ETL\\Adapter\\Elasticsearch\\ElasticsearchPHP","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"ELASTIC_SEARCH","type":"HELPER"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_writing","option":"elasticsearch"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFRyYW5zZm9ybXMgZWxhc3RpY3NlYXJjaCByZXN1bHRzIGludG8gY2xlYXIgRmxvdyBSb3dzIHVzaW5nIFsnaGl0cyddWydoaXRzJ11beF1bJ19zb3VyY2UnXS4KICoKICogQHJldHVybiBIaXRzSW50b1Jvd3NUcmFuc2Zvcm1lcgogKi8="},{"repository_path":"src\/adapter\/etl-adapter-elasticsearch\/src\/Flow\/ETL\/Adapter\/Elasticsearch\/functions.php","start_line_in_file":124,"slug":"from-es","name":"from_es","namespace":"Flow\\ETL\\Adapter\\Elasticsearch","parameters":[{"name":"config","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"parameters","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"pit_params","type":[{"name":"array","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"ElasticsearchExtractor","namespace":"Flow\\ETL\\Adapter\\Elasticsearch\\ElasticsearchPHP","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"ELASTIC_SEARCH","type":"EXTRACTOR"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_reading","option":"elasticsearch"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEV4dHJhY3RvciB3aWxsIGF1dG9tYXRpY2FsbHkgdHJ5IHRvIGl0ZXJhdGUgb3ZlciB3aG9sZSBpbmRleCB1c2luZyBvbmUgb2YgdGhlIHR3byBpdGVyYXRpb24gbWV0aG9kczouCiAqCiAqIC0gZnJvbS9zaXplCiAqIC0gc2VhcmNoX2FmdGVyCiAqCiAqIFNlYXJjaCBhZnRlciBpcyBzZWxlY3RlZCB3aGVuIHlvdSBwcm92aWRlIGRlZmluZSBzb3J0IHBhcmFtZXRlcnMgaW4gcXVlcnksIG90aGVyd2lzZSBpdCB3aWxsIGZhbGxiYWNrIHRvIGZyb20vc2l6ZS4KICoKICogQHBhcmFtIGFycmF5ewogKiAgaG9zdHM\/OiBhcnJheTxzdHJpbmc+LAogKiAgY29ubmVjdGlvblBhcmFtcz86IGFycmF5PG1peGVkPiwKICogIHJldHJpZXM\/OiBpbnQsCiAqICBzbmlmZk9uU3RhcnQ\/OiBib29sLAogKiAgc3NsQ2VydD86IGFycmF5PHN0cmluZz4sCiAqICBzc2xLZXk\/OiBhcnJheTxzdHJpbmc+LAogKiAgc3NsVmVyaWZpY2F0aW9uPzogYm9vbHxzdHJpbmcsCiAqICBlbGFzdGljTWV0YUhlYWRlcj86IGJvb2wsCiAqICBpbmNsdWRlUG9ydEluSG9zdEhlYWRlcj86IGJvb2wKICogfSAkY29uZmlnCiAqIEBwYXJhbSBhcnJheTxtaXhlZD4gJHBhcmFtZXRlcnMgLSBodHRwczovL3d3dy5lbGFzdGljLmNvL2d1aWRlL2VuL2VsYXN0aWNzZWFyY2gvcmVmZXJlbmNlL21hc3Rlci9zZWFyY2gtc2VhcmNoLmh0bWwKICogQHBhcmFtID9hcnJheTxtaXhlZD4gJHBpdF9wYXJhbXMgLSB3aGVuIHVzZWQgZXh0cmFjdG9yIHdpbGwgY3JlYXRlIHBvaW50IGluIHRpbWUgdG8gc3RhYmlsaXplIHNlYXJjaCByZXN1bHRzLiBQb2ludCBpbiB0aW1lIGlzIGF1dG9tYXRpY2FsbHkgY2xvc2VkIHdoZW4gbGFzdCBlbGVtZW50IGlzIGV4dHJhY3RlZC4gaHR0cHM6Ly93d3cuZWxhc3RpYy5jby9ndWlkZS9lbi9lbGFzdGljc2VhcmNoL3JlZmVyZW5jZS9tYXN0ZXIvcG9pbnQtaW4tdGltZS1hcGkuaHRtbCAtIEBkZXByZWNhdGVkIHVzZSB3aXRoUG9pbnRJblRpbWUgbWV0aG9kIGluc3RlYWQKICov"},{"repository_path":"src\/adapter\/etl-adapter-google-sheet\/src\/Flow\/ETL\/Adapter\/GoogleSheet\/functions.php","start_line_in_file":20,"slug":"from-google-sheet","name":"from_google_sheet","namespace":"Flow\\ETL\\Adapter\\GoogleSheet","parameters":[{"name":"auth_config","type":[{"name":"Sheets","namespace":"Google\\Service","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"spreadsheet_id","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"sheet_name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"with_header","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"},{"name":"rows_per_page","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"1000"},{"name":"options","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"GoogleSheetExtractor","namespace":"Flow\\ETL\\Adapter\\GoogleSheet","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"GOOGLE_SHEET","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheXt0eXBlOiBzdHJpbmcsIHByb2plY3RfaWQ6IHN0cmluZywgcHJpdmF0ZV9rZXlfaWQ6IHN0cmluZywgcHJpdmF0ZV9rZXk6IHN0cmluZywgY2xpZW50X2VtYWlsOiBzdHJpbmcsIGNsaWVudF9pZDogc3RyaW5nLCBhdXRoX3VyaTogc3RyaW5nLCB0b2tlbl91cmk6IHN0cmluZywgYXV0aF9wcm92aWRlcl94NTA5X2NlcnRfdXJsOiBzdHJpbmcsIGNsaWVudF94NTA5X2NlcnRfdXJsOiBzdHJpbmd9fFNoZWV0cyAkYXV0aF9jb25maWcKICogQHBhcmFtIHN0cmluZyAkc3ByZWFkc2hlZXRfaWQKICogQHBhcmFtIHN0cmluZyAkc2hlZXRfbmFtZQogKiBAcGFyYW0gYm9vbCAkd2l0aF9oZWFkZXIgLSBAZGVwcmVjYXRlZCB1c2Ugd2l0aEhlYWRlciBtZXRob2QgaW5zdGVhZAogKiBAcGFyYW0gaW50ICRyb3dzX3Blcl9wYWdlIC0gaG93IG1hbnkgcm93cyBwZXIgcGFnZSB0byBmZXRjaCBmcm9tIEdvb2dsZSBTaGVldHMgQVBJIC0gQGRlcHJlY2F0ZWQgdXNlIHdpdGhSb3dzUGVyUGFnZSBtZXRob2QgaW5zdGVhZAogKiBAcGFyYW0gYXJyYXl7ZGF0ZVRpbWVSZW5kZXJPcHRpb24\/OiBzdHJpbmcsIG1ham9yRGltZW5zaW9uPzogc3RyaW5nLCB2YWx1ZVJlbmRlck9wdGlvbj86IHN0cmluZ30gJG9wdGlvbnMgLSBAZGVwcmVjYXRlZCB1c2Ugd2l0aE9wdGlvbnMgbWV0aG9kIGluc3RlYWQKICov"},{"repository_path":"src\/adapter\/etl-adapter-google-sheet\/src\/Flow\/ETL\/Adapter\/GoogleSheet\/functions.php","start_line_in_file":57,"slug":"from-google-sheet-columns","name":"from_google_sheet_columns","namespace":"Flow\\ETL\\Adapter\\GoogleSheet","parameters":[{"name":"auth_config","type":[{"name":"Sheets","namespace":"Google\\Service","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"spreadsheet_id","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"sheet_name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"start_range_column","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"end_range_column","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"with_header","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"},{"name":"rows_per_page","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"1000"},{"name":"options","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"GoogleSheetExtractor","namespace":"Flow\\ETL\\Adapter\\GoogleSheet","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"GOOGLE_SHEET","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheXt0eXBlOiBzdHJpbmcsIHByb2plY3RfaWQ6IHN0cmluZywgcHJpdmF0ZV9rZXlfaWQ6IHN0cmluZywgcHJpdmF0ZV9rZXk6IHN0cmluZywgY2xpZW50X2VtYWlsOiBzdHJpbmcsIGNsaWVudF9pZDogc3RyaW5nLCBhdXRoX3VyaTogc3RyaW5nLCB0b2tlbl91cmk6IHN0cmluZywgYXV0aF9wcm92aWRlcl94NTA5X2NlcnRfdXJsOiBzdHJpbmcsIGNsaWVudF94NTA5X2NlcnRfdXJsOiBzdHJpbmd9fFNoZWV0cyAkYXV0aF9jb25maWcKICogQHBhcmFtIHN0cmluZyAkc3ByZWFkc2hlZXRfaWQKICogQHBhcmFtIHN0cmluZyAkc2hlZXRfbmFtZQogKiBAcGFyYW0gc3RyaW5nICRzdGFydF9yYW5nZV9jb2x1bW4KICogQHBhcmFtIHN0cmluZyAkZW5kX3JhbmdlX2NvbHVtbgogKiBAcGFyYW0gYm9vbCAkd2l0aF9oZWFkZXIgLSBAZGVwcmVjYXRlZCB1c2Ugd2l0aEhlYWRlciBtZXRob2QgaW5zdGVhZAogKiBAcGFyYW0gaW50ICRyb3dzX3Blcl9wYWdlIC0gaG93IG1hbnkgcm93cyBwZXIgcGFnZSB0byBmZXRjaCBmcm9tIEdvb2dsZSBTaGVldHMgQVBJLCBkZWZhdWx0IDEwMDAgLSBAZGVwcmVjYXRlZCB1c2Ugd2l0aFJvd3NQZXJQYWdlIG1ldGhvZCBpbnN0ZWFkCiAqIEBwYXJhbSBhcnJheXtkYXRlVGltZVJlbmRlck9wdGlvbj86IHN0cmluZywgbWFqb3JEaW1lbnNpb24\/OiBzdHJpbmcsIHZhbHVlUmVuZGVyT3B0aW9uPzogc3RyaW5nfSAkb3B0aW9ucyAtIEBkZXByZWNhdGVkIHVzZSB3aXRoT3B0aW9ucyBtZXRob2QgaW5zdGVhZAogKi8="},{"repository_path":"src\/adapter\/etl-adapter-http\/src\/Flow\/ETL\/Adapter\/Http\/DSL\/functions.php","start_line_in_file":15,"slug":"from-dynamic-http-requests","name":"from_dynamic_http_requests","namespace":"Flow\\ETL\\Adapter\\Http","parameters":[{"name":"client","type":[{"name":"ClientInterface","namespace":"Psr\\Http\\Client","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"requestFactory","type":[{"name":"NextRequestFactory","namespace":"Flow\\ETL\\Adapter\\Http\\DynamicExtractor","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"PsrHttpClientDynamicExtractor","namespace":"Flow\\ETL\\Adapter\\Http","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"HTTP","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-http\/src\/Flow\/ETL\/Adapter\/Http\/DSL\/functions.php","start_line_in_file":29,"slug":"from-static-http-requests","name":"from_static_http_requests","namespace":"Flow\\ETL\\Adapter\\Http","parameters":[{"name":"client","type":[{"name":"ClientInterface","namespace":"Psr\\Http\\Client","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"requests","type":[{"name":"iterable","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"PsrHttpClientStaticExtractor","namespace":"Flow\\ETL\\Adapter\\Http","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"HTTP","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBpdGVyYWJsZTxSZXF1ZXN0SW50ZXJmYWNlPiAkcmVxdWVzdHMKICov"},{"repository_path":"src\/adapter\/etl-adapter-json\/src\/Flow\/ETL\/Adapter\/JSON\/functions.php","start_line_in_file":20,"slug":"from-json","name":"from_json","namespace":"Flow\\ETL\\Adapter\\JSON","parameters":[{"name":"path","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"pointer","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"schema","type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"JsonExtractor","namespace":"Flow\\ETL\\Adapter\\JSON\\JSONMachine","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"JSON","type":"EXTRACTOR"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_reading","option":"json"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBQYXRofHN0cmluZyAkcGF0aCAtIHN0cmluZyBpcyBpbnRlcm5hbGx5IHR1cm5lZCBpbnRvIHN0cmVhbQogKiBAcGFyYW0gP3N0cmluZyAkcG9pbnRlciAtIGlmIHlvdSB3YW50IHRvIGl0ZXJhdGUgb25seSByZXN1bHRzIG9mIGEgc3VidHJlZSwgdXNlIGEgcG9pbnRlciwgcmVhZCBtb3JlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9oYWxheGEvanNvbi1tYWNoaW5lI3BhcnNpbmctYS1zdWJ0cmVlIC0gQGRlcHJlY2F0ZSB1c2Ugd2l0aFBvaW50ZXIgbWV0aG9kIGluc3RlYWQKICogQHBhcmFtIG51bGx8U2NoZW1hICRzY2hlbWEgLSBlbmZvcmNlIHNjaGVtYSBvbiB0aGUgZXh0cmFjdGVkIGRhdGEgLSBAZGVwcmVjYXRlIHVzZSB3aXRoU2NoZW1hIG1ldGhvZCBpbnN0ZWFkCiAqLw=="},{"repository_path":"src\/adapter\/etl-adapter-json\/src\/Flow\/ETL\/Adapter\/JSON\/functions.php","start_line_in_file":45,"slug":"from-json-lines","name":"from_json_lines","namespace":"Flow\\ETL\\Adapter\\JSON","parameters":[{"name":"path","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"JsonLinesExtractor","namespace":"Flow\\ETL\\Adapter\\JSON\\JSONMachine","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"JSON","type":"EXTRACTOR"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_reading","option":"jsonl"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFVzZWQgdG8gcmVhZCBmcm9tIGEgSlNPTiBsaW5lcyBodHRwczovL2pzb25saW5lcy5vcmcvIGZvcm1hdHRlZCBmaWxlLgogKgogKiBAcGFyYW0gUGF0aHxzdHJpbmcgJHBhdGggLSBzdHJpbmcgaXMgaW50ZXJuYWxseSB0dXJuZWQgaW50byBzdHJlYW0KICov"},{"repository_path":"src\/adapter\/etl-adapter-json\/src\/Flow\/ETL\/Adapter\/JSON\/functions.php","start_line_in_file":60,"slug":"to-json","name":"to_json","namespace":"Flow\\ETL\\Adapter\\JSON","parameters":[{"name":"path","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"flags","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"4194304"},{"name":"date_time_format","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'Y-m-d\\\\TH:i:sP'"},{"name":"put_rows_in_new_lines","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"JsonLoader","namespace":"Flow\\ETL\\Adapter\\JSON","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"JSON","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBQYXRofHN0cmluZyAkcGF0aAogKiBAcGFyYW0gaW50ICRmbGFncyAtIFBIUCBKU09OIEZsYWdzIC0gQGRlcHJlY2F0ZSB1c2Ugd2l0aEZsYWdzIG1ldGhvZCBpbnN0ZWFkCiAqIEBwYXJhbSBzdHJpbmcgJGRhdGVfdGltZV9mb3JtYXQgLSBmb3JtYXQgZm9yIERhdGVUaW1lSW50ZXJmYWNlOjpmb3JtYXQoKSAtIEBkZXByZWNhdGUgdXNlIHdpdGhEYXRlVGltZUZvcm1hdCBtZXRob2QgaW5zdGVhZAogKiBAcGFyYW0gYm9vbCAkcHV0X3Jvd3NfaW5fbmV3X2xpbmVzIC0gaWYgeW91IHdhbnQgdG8gcHV0IGVhY2ggcm93IGluIGEgbmV3IGxpbmUgLSBAZGVwcmVjYXRlIHVzZSB3aXRoUm93c0luTmV3TGluZXMgbWV0aG9kIGluc3RlYWQKICoKICogQHJldHVybiBKc29uTG9hZGVyCiAqLw=="},{"repository_path":"src\/adapter\/etl-adapter-json\/src\/Flow\/ETL\/Adapter\/JSON\/functions.php","start_line_in_file":80,"slug":"to-json-lines","name":"to_json_lines","namespace":"Flow\\ETL\\Adapter\\JSON","parameters":[{"name":"path","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"JsonLinesLoader","namespace":"Flow\\ETL\\Adapter\\JSON","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"JSON","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFVzZWQgdG8gd3JpdGUgdG8gYSBKU09OIGxpbmVzIGh0dHBzOi8vanNvbmxpbmVzLm9yZy8gZm9ybWF0dGVkIGZpbGUuCiAqCiAqIEBwYXJhbSBQYXRofHN0cmluZyAkcGF0aAogKgogKiBAcmV0dXJuIEpzb25MaW5lc0xvYWRlcgogKi8="},{"repository_path":"src\/adapter\/etl-adapter-meilisearch\/src\/Flow\/ETL\/Adapter\/Meilisearch\/functions.php","start_line_in_file":17,"slug":"to-meilisearch-bulk-index","name":"to_meilisearch_bulk_index","namespace":"Flow\\ETL\\Adapter\\Meilisearch","parameters":[{"name":"config","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"index","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Loader","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"MEILI_SEARCH","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheXt1cmw6IHN0cmluZywgYXBpS2V5OiBzdHJpbmcsIGh0dHBDbGllbnQ6ID9DbGllbnRJbnRlcmZhY2V9ICRjb25maWcKICov"},{"repository_path":"src\/adapter\/etl-adapter-meilisearch\/src\/Flow\/ETL\/Adapter\/Meilisearch\/functions.php","start_line_in_file":28,"slug":"to-meilisearch-bulk-update","name":"to_meilisearch_bulk_update","namespace":"Flow\\ETL\\Adapter\\Meilisearch","parameters":[{"name":"config","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"index","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Loader","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"MEILI_SEARCH","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheXt1cmw6IHN0cmluZywgYXBpS2V5OiBzdHJpbmcsIGh0dHBDbGllbnQ6ID9DbGllbnRJbnRlcmZhY2V9ICRjb25maWcKICov"},{"repository_path":"src\/adapter\/etl-adapter-meilisearch\/src\/Flow\/ETL\/Adapter\/Meilisearch\/functions.php","start_line_in_file":39,"slug":"meilisearch-hits-to-rows","name":"meilisearch_hits_to_rows","namespace":"Flow\\ETL\\Adapter\\Meilisearch","parameters":[],"return_type":[{"name":"HitsIntoRowsTransformer","namespace":"Flow\\ETL\\Adapter\\Meilisearch\\MeilisearchPHP","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"MEILI_SEARCH","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFRyYW5zZm9ybXMgTWVpbGlzZWFyY2ggcmVzdWx0cyBpbnRvIGNsZWFyIEZsb3cgUm93cy4KICov"},{"repository_path":"src\/adapter\/etl-adapter-meilisearch\/src\/Flow\/ETL\/Adapter\/Meilisearch\/functions.php","start_line_in_file":49,"slug":"from-meilisearch","name":"from_meilisearch","namespace":"Flow\\ETL\\Adapter\\Meilisearch","parameters":[{"name":"config","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"params","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"index","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"MeilisearchExtractor","namespace":"Flow\\ETL\\Adapter\\Meilisearch\\MeilisearchPHP","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"MEILI_SEARCH","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheXt1cmw6IHN0cmluZywgYXBpS2V5OiBzdHJpbmd9ICRjb25maWcKICogQHBhcmFtIGFycmF5e3E6IHN0cmluZywgbGltaXQ\/OiA\/aW50LCBvZmZzZXQ\/OiA\/aW50LCBhdHRyaWJ1dGVzVG9SZXRyaWV2ZT86ID9hcnJheTxzdHJpbmc+LCBzb3J0PzogP2FycmF5PHN0cmluZz59ICRwYXJhbXMKICov"},{"repository_path":"src\/adapter\/etl-adapter-parquet\/src\/Flow\/ETL\/Adapter\/Parquet\/functions.php","start_line_in_file":27,"slug":"from-parquet","name":"from_parquet","namespace":"Flow\\ETL\\Adapter\\Parquet","parameters":[{"name":"path","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"columns","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"options","type":[{"name":"Options","namespace":"Flow\\Parquet","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Parquet\\Options::..."},{"name":"byte_order","type":[{"name":"ByteOrder","namespace":"Flow\\Parquet","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Parquet\\ByteOrder::..."},{"name":"offset","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"ParquetExtractor","namespace":"Flow\\ETL\\Adapter\\Parquet","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PARQUET","type":"EXTRACTOR"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_reading","option":"parquet"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBQYXRofHN0cmluZyAkcGF0aAogKiBAcGFyYW0gYXJyYXk8c3RyaW5nPiAkY29sdW1ucyAtIGxpc3Qgb2YgY29sdW1ucyB0byByZWFkIGZyb20gcGFycXVldCBmaWxlIC0gQGRlcHJlY2F0ZWQgdXNlIGB3aXRoQ29sdW1uc2AgbWV0aG9kIGluc3RlYWQKICogQHBhcmFtIE9wdGlvbnMgJG9wdGlvbnMgLSBAZGVwcmVjYXRlZCB1c2UgYHdpdGhPcHRpb25zYCBtZXRob2QgaW5zdGVhZAogKiBAcGFyYW0gQnl0ZU9yZGVyICRieXRlX29yZGVyIC0gQGRlcHJlY2F0ZWQgdXNlIGB3aXRoQnl0ZU9yZGVyYCBtZXRob2QgaW5zdGVhZAogKiBAcGFyYW0gbnVsbHxpbnQgJG9mZnNldCAtIEBkZXByZWNhdGVkIHVzZSBgd2l0aE9mZnNldGAgbWV0aG9kIGluc3RlYWQKICov"},{"repository_path":"src\/adapter\/etl-adapter-parquet\/src\/Flow\/ETL\/Adapter\/Parquet\/functions.php","start_line_in_file":57,"slug":"to-parquet","name":"to_parquet","namespace":"Flow\\ETL\\Adapter\\Parquet","parameters":[{"name":"path","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"options","type":[{"name":"Options","namespace":"Flow\\Parquet","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"compressions","type":[{"name":"Compressions","namespace":"Flow\\Parquet\\ParquetFile","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Parquet\\ParquetFile\\Compressions::..."},{"name":"schema","type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"ParquetLoader","namespace":"Flow\\ETL\\Adapter\\Parquet","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PARQUET","type":"LOADER"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_writing","option":"parquet"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBQYXRofHN0cmluZyAkcGF0aAogKiBAcGFyYW0gbnVsbHxPcHRpb25zICRvcHRpb25zIC0gQGRlcHJlY2F0ZWQgdXNlIGB3aXRoT3B0aW9uc2AgbWV0aG9kIGluc3RlYWQKICogQHBhcmFtIENvbXByZXNzaW9ucyAkY29tcHJlc3Npb25zIC0gQGRlcHJlY2F0ZWQgdXNlIGB3aXRoQ29tcHJlc3Npb25zYCBtZXRob2QgaW5zdGVhZAogKiBAcGFyYW0gbnVsbHxTY2hlbWEgJHNjaGVtYSAtIEBkZXByZWNhdGVkIHVzZSBgd2l0aFNjaGVtYWAgbWV0aG9kIGluc3RlYWQKICov"},{"repository_path":"src\/adapter\/etl-adapter-parquet\/src\/Flow\/ETL\/Adapter\/Parquet\/functions.php","start_line_in_file":85,"slug":"array-to-generator","name":"array_to_generator","namespace":"Flow\\ETL\\Adapter\\Parquet","parameters":[{"name":"data","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Generator","namespace":"","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PARQUET","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUCiAqCiAqIEBwYXJhbSBhcnJheTxUPiAkZGF0YQogKgogKiBAcmV0dXJuIFxHZW5lcmF0b3I8VD4KICov"},{"repository_path":"src\/adapter\/etl-adapter-parquet\/src\/Flow\/ETL\/Adapter\/Parquet\/functions.php","start_line_in_file":93,"slug":"empty-generator","name":"empty_generator","namespace":"Flow\\ETL\\Adapter\\Parquet","parameters":[],"return_type":[{"name":"Generator","namespace":"","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PARQUET","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-parquet\/src\/Flow\/ETL\/Adapter\/Parquet\/functions.php","start_line_in_file":99,"slug":"schema-to-parquet","name":"schema_to_parquet","namespace":"Flow\\ETL\\Adapter\\Parquet","parameters":[{"name":"schema","type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Schema","namespace":"Flow\\Parquet\\ParquetFile","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PARQUET","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-parquet\/src\/Flow\/ETL\/Adapter\/Parquet\/functions.php","start_line_in_file":105,"slug":"schema-from-parquet","name":"schema_from_parquet","namespace":"Flow\\ETL\\Adapter\\Parquet","parameters":[{"name":"schema","type":[{"name":"Schema","namespace":"Flow\\Parquet\\ParquetFile","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PARQUET","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-text\/src\/Flow\/ETL\/Adapter\/Text\/functions.php","start_line_in_file":15,"slug":"from-text","name":"from_text","namespace":"Flow\\ETL\\Adapter\\Text","parameters":[{"name":"path","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"TextExtractor","namespace":"Flow\\ETL\\Adapter\\Text","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TEXT","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBQYXRofHN0cmluZyAkcGF0aAogKi8="},{"repository_path":"src\/adapter\/etl-adapter-text\/src\/Flow\/ETL\/Adapter\/Text\/functions.php","start_line_in_file":30,"slug":"to-text","name":"to_text","namespace":"Flow\\ETL\\Adapter\\Text","parameters":[{"name":"path","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"new_line_separator","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'\\n'"}],"return_type":[{"name":"Loader","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TEXT","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBQYXRofHN0cmluZyAkcGF0aAogKiBAcGFyYW0gc3RyaW5nICRuZXdfbGluZV9zZXBhcmF0b3IgLSBkZWZhdWx0IFBIUF9FT0wgLSBAZGVwcmVjYXRlZCB1c2Ugd2l0aE5ld0xpbmVTZXBhcmF0b3IgbWV0aG9kIGluc3RlYWQKICoKICogQHJldHVybiBMb2FkZXIKICov"},{"repository_path":"src\/adapter\/etl-adapter-xml\/src\/Flow\/ETL\/Adapter\/XML\/functions.php","start_line_in_file":34,"slug":"from-xml","name":"from_xml","namespace":"Flow\\ETL\\Adapter\\XML","parameters":[{"name":"path","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"xml_node_path","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"''"}],"return_type":[{"name":"XMLParserExtractor","namespace":"Flow\\ETL\\Adapter\\XML","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"XML","type":"EXTRACTOR"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_reading","option":"xml"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqICBJbiBvcmRlciB0byBpdGVyYXRlIG9ubHkgb3ZlciA8ZWxlbWVudD4gbm9kZXMgdXNlIGBmcm9tX3htbCgkZmlsZSktPndpdGhYTUxOb2RlUGF0aCgncm9vdC9lbGVtZW50cy9lbGVtZW50JylgLgogKgogKiAgPHJvb3Q+CiAqICAgIDxlbGVtZW50cz4KICogICAgICA8ZWxlbWVudD48L2VsZW1lbnQ+CiAqICAgICAgPGVsZW1lbnQ+PC9lbGVtZW50PgogKiAgICA8ZWxlbWVudHM+CiAqICA8L3Jvb3Q+CiAqCiAqICBYTUwgTm9kZSBQYXRoIGRvZXMgbm90IHN1cHBvcnQgYXR0cmlidXRlcyBhbmQgaXQncyBub3QgeHBhdGgsIGl0IGlzIGp1c3QgYSBzZXF1ZW5jZQogKiAgb2Ygbm9kZSBuYW1lcyBzZXBhcmF0ZWQgd2l0aCBzbGFzaC4KICoKICogQHBhcmFtIFBhdGh8c3RyaW5nICRwYXRoCiAqIEBwYXJhbSBzdHJpbmcgJHhtbF9ub2RlX3BhdGggLSBAZGVwcmVjYXRlZCB1c2UgYGZyb21feG1sKCRmaWxlKS0+d2l0aFhNTE5vZGVQYXRoKCR4bWxOb2RlUGF0aClgIG1ldGhvZCBpbnN0ZWFkCiAqLw=="},{"repository_path":"src\/adapter\/etl-adapter-xml\/src\/Flow\/ETL\/Adapter\/XML\/functions.php","start_line_in_file":50,"slug":"to-xml","name":"to_xml","namespace":"Flow\\ETL\\Adapter\\XML","parameters":[{"name":"path","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"root_element_name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'rows'"},{"name":"row_element_name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'row'"},{"name":"attribute_prefix","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'_'"},{"name":"date_time_format","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'Y-m-d\\\\TH:i:s.uP'"},{"name":"xml_writer","type":[{"name":"XMLWriter","namespace":"Flow\\ETL\\Adapter\\XML","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Adapter\\XML\\XMLWriter\\DOMDocumentWriter::..."}],"return_type":[{"name":"XMLLoader","namespace":"Flow\\ETL\\Adapter\\XML\\Loader","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"XML","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBQYXRofHN0cmluZyAkcGF0aAogKiBAcGFyYW0gc3RyaW5nICRyb290X2VsZW1lbnRfbmFtZSAtIEBkZXByZWNhdGVkIHVzZSBgd2l0aFJvb3RFbGVtZW50TmFtZSgpYCBtZXRob2QgaW5zdGVhZAogKiBAcGFyYW0gc3RyaW5nICRyb3dfZWxlbWVudF9uYW1lIC0gQGRlcHJlY2F0ZWQgdXNlIGB3aXRoUm93RWxlbWVudE5hbWUoKWAgbWV0aG9kIGluc3RlYWQKICogQHBhcmFtIHN0cmluZyAkYXR0cmlidXRlX3ByZWZpeCAtIEBkZXByZWNhdGVkIHVzZSBgd2l0aEF0dHJpYnV0ZVByZWZpeCgpYCBtZXRob2QgaW5zdGVhZAogKiBAcGFyYW0gc3RyaW5nICRkYXRlX3RpbWVfZm9ybWF0IC0gQGRlcHJlY2F0ZWQgdXNlIGB3aXRoRGF0ZVRpbWVGb3JtYXQoKWAgbWV0aG9kIGluc3RlYWQKICogQHBhcmFtIFhNTFdyaXRlciAkeG1sX3dyaXRlcgogKi8="},{"repository_path":"src\/lib\/filesystem\/src\/Flow\/Filesystem\/DSL\/functions.php","start_line_in_file":23,"slug":"protocol","name":"protocol","namespace":"Flow\\Filesystem\\DSL","parameters":[{"name":"protocol","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Protocol","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"FILESYSTEM","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/filesystem\/src\/Flow\/Filesystem\/DSL\/functions.php","start_line_in_file":29,"slug":"partition","name":"partition","namespace":"Flow\\Filesystem\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Partition","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"FILESYSTEM","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/filesystem\/src\/Flow\/Filesystem\/DSL\/functions.php","start_line_in_file":35,"slug":"partitions","name":"partitions","namespace":"Flow\\Filesystem\\DSL","parameters":[{"name":"partition","type":[{"name":"Partition","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Partitions","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"FILESYSTEM","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/filesystem\/src\/Flow\/Filesystem\/DSL\/functions.php","start_line_in_file":54,"slug":"path","name":"path","namespace":"Flow\\Filesystem\\DSL","parameters":[{"name":"path","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"options","type":[{"name":"Options","namespace":"Flow\\Filesystem\\Path","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"FILESYSTEM","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFBhdGggc3VwcG9ydHMgZ2xvYiBwYXR0ZXJucy4KICogRXhhbXBsZXM6CiAqICAtIHBhdGgoJyouY3N2JykgLSBhbnkgY3N2IGZpbGUgaW4gY3VycmVudCBkaXJlY3RvcnkKICogIC0gcGF0aCgnLyoqIC8gKi5jc3YnKSAtIGFueSBjc3YgZmlsZSBpbiBhbnkgc3ViZGlyZWN0b3J5IChyZW1vdmUgZW1wdHkgc3BhY2VzKQogKiAgLSBwYXRoKCcvZGlyL3BhcnRpdGlvbj0qIC8qLnBhcnF1ZXQnKSAtIGFueSBwYXJxdWV0IGZpbGUgaW4gZ2l2ZW4gcGFydGl0aW9uIGRpcmVjdG9yeS4KICoKICogR2xvYiBwYXR0ZXJuIGlzIGFsc28gc3VwcG9ydGVkIGJ5IHJlbW90ZSBmaWxlc3lzdGVtcyBsaWtlIEF6dXJlCiAqCiAqICAtIHBhdGgoJ2F6dXJlLWJsb2I6Ly9kaXJlY3RvcnkvKi5jc3YnKSAtIGFueSBjc3YgZmlsZSBpbiBnaXZlbiBkaXJlY3RvcnkKICoKICogQHBhcmFtIGFycmF5PHN0cmluZywgbnVsbHxib29sfGZsb2F0fGludHxzdHJpbmd8XFVuaXRFbnVtPnxQYXRoXE9wdGlvbnMgJG9wdGlvbnMKICov"},{"repository_path":"src\/lib\/filesystem\/src\/Flow\/Filesystem\/DSL\/functions.php","start_line_in_file":67,"slug":"path-stdout","name":"path_stdout","namespace":"Flow\\Filesystem\\DSL","parameters":[{"name":"options","type":[{"name":"array","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"FILESYSTEM","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHBhdGggdG8gcGhwIHN0ZG91dCBzdHJlYW0uCiAqCiAqIEBwYXJhbSBudWxsfGFycmF5eydzdHJlYW0nOiAnb3V0cHV0J3wnc3RkZXJyJ3wnc3Rkb3V0J30gJG9wdGlvbnMKICoKICogQHJldHVybiBQYXRoCiAqLw=="},{"repository_path":"src\/lib\/filesystem\/src\/Flow\/Filesystem\/DSL\/functions.php","start_line_in_file":81,"slug":"path-memory","name":"path_memory","namespace":"Flow\\Filesystem\\DSL","parameters":[{"name":"path","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"''"},{"name":"options","type":[{"name":"array","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"FILESYSTEM","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHBhdGggdG8gcGhwIG1lbW9yeSBzdHJlYW0uCiAqCiAqIEBwYXJhbSBzdHJpbmcgJHBhdGggLSBkZWZhdWx0ID0gJycgLSBwYXRoIGlzIHVzZWQgYXMgYW4gaWRlbnRpZmllciBpbiBtZW1vcnkgZmlsZXN5c3RlbSwgc28gd2UgY2FuIHdyaXRlIG11bHRpcGxlIGZpbGVzIHRvIG1lbW9yeSBhdCBvbmNlLCBlYWNoIHBhdGggaXMgYSBuZXcgaGFuZGxlCiAqIEBwYXJhbSBudWxsfGFycmF5eydzdHJlYW0nOiAnbWVtb3J5J3wndGVtcCd9ICRvcHRpb25zIC0gd2hlbiBub3RoaW5nIGlzIHByb3ZpZGVkLCAndGVtcCcgc3RyZWFtIGlzIHVzZWQgYnkgZGVmYXVsdAogKgogKiBAcmV0dXJuIFBhdGgKICov"},{"repository_path":"src\/lib\/filesystem\/src\/Flow\/Filesystem\/DSL\/functions.php","start_line_in_file":92,"slug":"path-real","name":"path_real","namespace":"Flow\\Filesystem\\DSL","parameters":[{"name":"path","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"options","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"FILESYSTEM","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFJlc29sdmUgcmVhbCBwYXRoIGZyb20gZ2l2ZW4gcGF0aC4KICoKICogQHBhcmFtIGFycmF5PHN0cmluZywgbnVsbHxib29sfGZsb2F0fGludHxzdHJpbmd8XFVuaXRFbnVtPiAkb3B0aW9ucwogKi8="},{"repository_path":"src\/lib\/filesystem\/src\/Flow\/Filesystem\/DSL\/functions.php","start_line_in_file":98,"slug":"native-local-filesystem","name":"native_local_filesystem","namespace":"Flow\\Filesystem\\DSL","parameters":[],"return_type":[{"name":"NativeLocalFilesystem","namespace":"Flow\\Filesystem\\Local","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"FILESYSTEM","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/filesystem\/src\/Flow\/Filesystem\/DSL\/functions.php","start_line_in_file":108,"slug":"stdout-filesystem","name":"stdout_filesystem","namespace":"Flow\\Filesystem\\DSL","parameters":[],"return_type":[{"name":"StdOutFilesystem","namespace":"Flow\\Filesystem\\Local","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"FILESYSTEM","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFdyaXRlLW9ubHkgZmlsZXN5c3RlbSB1c2VmdWwgd2hlbiB3ZSBqdXN0IHdhbnQgdG8gd3JpdGUgdGhlIG91dHB1dCB0byBzdGRvdXQuCiAqIFRoZSBtYWluIHVzZSBjYXNlIGlzIGZvciBzdHJlYW1pbmcgZGF0YXNldHMgb3ZlciBodHRwLgogKi8="},{"repository_path":"src\/lib\/filesystem\/src\/Flow\/Filesystem\/DSL\/functions.php","start_line_in_file":117,"slug":"memory-filesystem","name":"memory_filesystem","namespace":"Flow\\Filesystem\\DSL","parameters":[],"return_type":[{"name":"MemoryFilesystem","namespace":"Flow\\Filesystem\\Local","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"FILESYSTEM","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIG5ldyBtZW1vcnkgZmlsZXN5c3RlbSBhbmQgd3JpdGVzIGRhdGEgdG8gaXQgaW4gbWVtb3J5LgogKi8="},{"repository_path":"src\/lib\/filesystem\/src\/Flow\/Filesystem\/DSL\/functions.php","start_line_in_file":128,"slug":"fstab","name":"fstab","namespace":"Flow\\Filesystem\\DSL","parameters":[{"name":"filesystems","type":[{"name":"Filesystem","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"FilesystemTable","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"FILESYSTEM","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIG5ldyBmaWxlc3lzdGVtIHRhYmxlIHdpdGggZ2l2ZW4gZmlsZXN5c3RlbXMuCiAqIEZpbGVzeXN0ZW1zIGNhbiBiZSBhbHNvIG1vdW50ZWQgbGF0ZXIuCiAqIElmIG5vIGZpbGVzeXN0ZW1zIGFyZSBwcm92aWRlZCwgbG9jYWwgZmlsZXN5c3RlbSBpcyBtb3VudGVkLgogKi8="},{"repository_path":"src\/lib\/filesystem\/src\/Flow\/Filesystem\/DSL\/functions.php","start_line_in_file":144,"slug":"traceable-filesystem","name":"traceable_filesystem","namespace":"Flow\\Filesystem\\DSL","parameters":[{"name":"filesystem","type":[{"name":"Filesystem","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"telemetryConfig","type":[{"name":"FilesystemTelemetryConfig","namespace":"Flow\\Filesystem\\Telemetry","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"TraceableFilesystem","namespace":"Flow\\Filesystem\\Telemetry","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"FILESYSTEM","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFdyYXAgYSBmaWxlc3lzdGVtIHdpdGggdGVsZW1ldHJ5IHRyYWNpbmcgc3VwcG9ydC4KICogQWxsIGZpbGVzeXN0ZW0gYW5kIHN0cmVhbSBvcGVyYXRpb25zIHdpbGwgYmUgdHJhY2VkIGFjY29yZGluZyB0byB0aGUgY29uZmlndXJhdGlvbi4KICov"},{"repository_path":"src\/lib\/filesystem\/src\/Flow\/Filesystem\/DSL\/functions.php","start_line_in_file":155,"slug":"filesystem-telemetry-config","name":"filesystem_telemetry_config","namespace":"Flow\\Filesystem\\DSL","parameters":[{"name":"telemetry","type":[{"name":"Telemetry","namespace":"Flow\\Telemetry","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"clock","type":[{"name":"ClockInterface","namespace":"Psr\\Clock","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"options","type":[{"name":"FilesystemTelemetryOptions","namespace":"Flow\\Filesystem\\Telemetry","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"FilesystemTelemetryConfig","namespace":"Flow\\Filesystem\\Telemetry","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"FILESYSTEM","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHRlbGVtZXRyeSBjb25maWd1cmF0aW9uIGZvciB0aGUgZmlsZXN5c3RlbS4KICov"},{"repository_path":"src\/lib\/filesystem\/src\/Flow\/Filesystem\/DSL\/functions.php","start_line_in_file":170,"slug":"filesystem-telemetry-options","name":"filesystem_telemetry_options","namespace":"Flow\\Filesystem\\DSL","parameters":[{"name":"traceStreams","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"},{"name":"collectMetrics","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"}],"return_type":[{"name":"FilesystemTelemetryOptions","namespace":"Flow\\Filesystem\\Telemetry","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"FILESYSTEM","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBvcHRpb25zIGZvciBmaWxlc3lzdGVtIHRlbGVtZXRyeS4KICoKICogQHBhcmFtIGJvb2wgJHRyYWNlU3RyZWFtcyBDcmVhdGUgYSBzaW5nbGUgc3BhbiBwZXIgc3RyZWFtIGxpZmVjeWNsZSAoZGVmYXVsdDogT04pCiAqIEBwYXJhbSBib29sICRjb2xsZWN0TWV0cmljcyBDb2xsZWN0IG1ldHJpY3MgZm9yIGJ5dGVzL29wZXJhdGlvbiBjb3VudHMgKGRlZmF1bHQ6IE9OKQogKi8="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":56,"slug":"type-structure","name":"type_structure","namespace":"Flow\\Types\\DSL","parameters":[{"name":"elements","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"optional_elements","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"allow_extra","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"StructureType","namespace":"Flow\\Types\\Type\\Logical","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUCiAqCiAqIEBwYXJhbSBhcnJheTxzdHJpbmcsIFR5cGU8VD4+ICRlbGVtZW50cwogKiBAcGFyYW0gYXJyYXk8c3RyaW5nLCBUeXBlPFQ+PiAkb3B0aW9uYWxfZWxlbWVudHMKICoKICogQHJldHVybiBTdHJ1Y3R1cmVUeXBlPFQ+CiAqLw=="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":73,"slug":"type-union","name":"type_union","namespace":"Flow\\Types\\DSL","parameters":[{"name":"first","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"second","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"types","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUCiAqIEB0ZW1wbGF0ZSBUCiAqIEB0ZW1wbGF0ZSBUCiAqCiAqIEBwYXJhbSBUeXBlPFQ+ICRmaXJzdAogKiBAcGFyYW0gVHlwZTxUPiAkc2Vjb25kCiAqIEBwYXJhbSBUeXBlPFQ+IC4uLiR0eXBlcwogKgogKiBAcmV0dXJuIFR5cGU8VD4KICov"},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":94,"slug":"type-intersection","name":"type_intersection","namespace":"Flow\\Types\\DSL","parameters":[{"name":"first","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"second","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"types","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUCiAqCiAqIEBwYXJhbSBUeXBlPFQ+ICRmaXJzdAogKiBAcGFyYW0gVHlwZTxUPiAkc2Vjb25kCiAqIEBwYXJhbSBUeXBlPFQ+IC4uLiR0eXBlcwogKgogKiBAcmV0dXJuIFR5cGU8VD4KICov"},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":109,"slug":"type-numeric-string","name":"type_numeric_string","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxudW1lcmljLXN0cmluZz4KICov"},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":122,"slug":"type-optional","name":"type_optional","namespace":"Flow\\Types\\DSL","parameters":[{"name":"type","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUCiAqCiAqIEBwYXJhbSBUeXBlPFQ+ICR0eXBlCiAqCiAqIEByZXR1cm4gVHlwZTxUPgogKi8="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":133,"slug":"type-from-array","name":"type_from_array","namespace":"Flow\\Types\\DSL","parameters":[{"name":"data","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxzdHJpbmcsIG1peGVkPiAkZGF0YQogKgogKiBAcmV0dXJuIFR5cGU8bWl4ZWQ+CiAqLw=="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":144,"slug":"type-is-nullable","name":"type_is_nullable","namespace":"Flow\\Types\\DSL","parameters":[{"name":"type","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUCiAqCiAqIEBwYXJhbSBUeXBlPFQ+ICR0eXBlCiAqLw=="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":166,"slug":"type-equals","name":"type_equals","namespace":"Flow\\Types\\DSL","parameters":[{"name":"left","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"right","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBUeXBlPG1peGVkPiAkbGVmdAogKiBAcGFyYW0gVHlwZTxtaXhlZD4gJHJpZ2h0CiAqLw=="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":179,"slug":"types","name":"types","namespace":"Flow\\Types\\DSL","parameters":[{"name":"types","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Types","namespace":"Flow\\Types\\Type","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUCiAqCiAqIEBwYXJhbSBUeXBlPFQ+IC4uLiR0eXBlcwogKgogKiBAcmV0dXJuIFR5cGVzPFQ+CiAqLw=="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":192,"slug":"type-list","name":"type_list","namespace":"Flow\\Types\\DSL","parameters":[{"name":"element","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ListType","namespace":"Flow\\Types\\Type\\Logical","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUCiAqCiAqIEBwYXJhbSBUeXBlPFQ+ICRlbGVtZW50CiAqCiAqIEByZXR1cm4gTGlzdFR5cGU8VD4KICov"},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":207,"slug":"type-map","name":"type_map","namespace":"Flow\\Types\\DSL","parameters":[{"name":"key_type","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value_type","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"MapType","namespace":"Flow\\Types\\Type\\Logical","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUS2V5IG9mIGFycmF5LWtleQogKiBAdGVtcGxhdGUgVFZhbHVlCiAqCiAqIEBwYXJhbSBUeXBlPFRLZXk+ICRrZXlfdHlwZQogKiBAcGFyYW0gVHlwZTxUVmFsdWU+ICR2YWx1ZV90eXBlCiAqCiAqIEByZXR1cm4gTWFwVHlwZTxUS2V5LCBUVmFsdWU+CiAqLw=="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":216,"slug":"type-json","name":"type_json","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxKc29uPgogKi8="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":225,"slug":"type-datetime","name":"type_datetime","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxcRGF0ZVRpbWVJbnRlcmZhY2U+CiAqLw=="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":234,"slug":"type-date","name":"type_date","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxcRGF0ZVRpbWVJbnRlcmZhY2U+CiAqLw=="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":243,"slug":"type-time","name":"type_time","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxcRGF0ZUludGVydmFsPgogKi8="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":252,"slug":"type-time-zone","name":"type_time_zone","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxcRGF0ZVRpbWVab25lPgogKi8="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":261,"slug":"type-xml","name":"type_xml","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxcRE9NRG9jdW1lbnQ+CiAqLw=="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":270,"slug":"type-xml-element","name":"type_xml_element","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxcRE9NRWxlbWVudD4KICov"},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":279,"slug":"type-uuid","name":"type_uuid","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxVdWlkPgogKi8="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":288,"slug":"type-integer","name":"type_integer","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxpbnQ+CiAqLw=="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":297,"slug":"type-string","name":"type_string","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxzdHJpbmc+CiAqLw=="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":306,"slug":"type-float","name":"type_float","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxmbG9hdD4KICov"},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":315,"slug":"type-boolean","name":"type_boolean","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxib29sPgogKi8="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":328,"slug":"type-instance-of","name":"type_instance_of","namespace":"Flow\\Types\\DSL","parameters":[{"name":"class","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUIG9mIG9iamVjdAogKgogKiBAcGFyYW0gY2xhc3Mtc3RyaW5nPFQ+ICRjbGFzcwogKgogKiBAcmV0dXJuIFR5cGU8VD4KICov"},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":337,"slug":"type-object","name":"type_object","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxvYmplY3Q+CiAqLw=="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":346,"slug":"type-scalar","name":"type_scalar","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxib29sfGZsb2F0fGludHxzdHJpbmc+CiAqLw=="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":355,"slug":"type-resource","name":"type_resource","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxyZXNvdXJjZT4KICov"},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":364,"slug":"type-array","name":"type_array","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxhcnJheTxtaXhlZD4+CiAqLw=="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":373,"slug":"type-callable","name":"type_callable","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxjYWxsYWJsZT4KICov"},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":382,"slug":"type-null","name":"type_null","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxudWxsPgogKi8="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":391,"slug":"type-mixed","name":"type_mixed","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxtaXhlZD4KICov"},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":400,"slug":"type-positive-integer","name":"type_positive_integer","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxpbnQ8MCwgbWF4Pj4KICov"},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":409,"slug":"type-non-empty-string","name":"type_non_empty_string","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxub24tZW1wdHktc3RyaW5nPgogKi8="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":422,"slug":"type-enum","name":"type_enum","namespace":"Flow\\Types\\DSL","parameters":[{"name":"class","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUIG9mIFVuaXRFbnVtCiAqCiAqIEBwYXJhbSBjbGFzcy1zdHJpbmc8VD4gJGNsYXNzCiAqCiAqIEByZXR1cm4gVHlwZTxUPgogKi8="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":435,"slug":"type-literal","name":"type_literal","namespace":"Flow\\Types\\DSL","parameters":[{"name":"value","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"float","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"LiteralType","namespace":"Flow\\Types\\Type\\Logical","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUIG9mIGJvb2x8ZmxvYXR8aW50fHN0cmluZwogKgogKiBAcGFyYW0gVCAkdmFsdWUKICoKICogQHJldHVybiBMaXRlcmFsVHlwZTxUPgogKi8="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":444,"slug":"type-html","name":"type_html","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxIVE1MRG9jdW1lbnQ+CiAqLw=="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":453,"slug":"type-html-element","name":"type_html_element","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxIVE1MRWxlbWVudD4KICov"},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":465,"slug":"type-is","name":"type_is","namespace":"Flow\\Types\\DSL","parameters":[{"name":"type","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"typeClass","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUCiAqCiAqIEBwYXJhbSBUeXBlPFQ+ICR0eXBlCiAqIEBwYXJhbSBjbGFzcy1zdHJpbmc8VHlwZTxtaXhlZD4+ICR0eXBlQ2xhc3MKICov"},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":478,"slug":"type-is-any","name":"type_is_any","namespace":"Flow\\Types\\DSL","parameters":[{"name":"type","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"typeClass","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"typeClasses","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUCiAqCiAqIEBwYXJhbSBUeXBlPFQ+ICR0eXBlCiAqIEBwYXJhbSBjbGFzcy1zdHJpbmc8VHlwZTxtaXhlZD4+ICR0eXBlQ2xhc3MKICogQHBhcmFtIGNsYXNzLXN0cmluZzxUeXBlPG1peGVkPj4gLi4uJHR5cGVDbGFzc2VzCiAqLw=="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":487,"slug":"get-type","name":"get_type","namespace":"Flow\\Types\\DSL","parameters":[{"name":"value","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxtaXhlZD4KICov"},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":500,"slug":"type-class-string","name":"type_class_string","namespace":"Flow\\Types\\DSL","parameters":[{"name":"class","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUIG9mIG9iamVjdAogKgogKiBAcGFyYW0gbnVsbHxjbGFzcy1zdHJpbmc8VD4gJGNsYXNzCiAqCiAqIEByZXR1cm4gKCRjbGFzcyBpcyBudWxsID8gVHlwZTxjbGFzcy1zdHJpbmc+IDogVHlwZTxjbGFzcy1zdHJpbmc8VD4+KQogKi8="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":506,"slug":"dom-element-to-string","name":"dom_element_to_string","namespace":"Flow\\Types\\DSL","parameters":[{"name":"element","type":[{"name":"DOMElement","namespace":"","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"format_output","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"preserver_white_space","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"false","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":182,"slug":"sql-parser","name":"sql_parser","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"Parser","namespace":"Flow\\PostgreSql","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":188,"slug":"sql-parse","name":"sql_parse","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"sql","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ParsedQuery","namespace":"Flow\\PostgreSql","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":198,"slug":"sql-fingerprint","name":"sql_fingerprint","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"sql","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFJldHVybnMgYSBmaW5nZXJwcmludCBvZiB0aGUgZ2l2ZW4gU1FMIHF1ZXJ5LgogKiBMaXRlcmFsIHZhbHVlcyBhcmUgbm9ybWFsaXplZCBzbyB0aGV5IHdvbid0IGFmZmVjdCB0aGUgZmluZ2VycHJpbnQuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":209,"slug":"sql-normalize","name":"sql_normalize","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"sql","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIE5vcm1hbGl6ZSBTUUwgcXVlcnkgYnkgcmVwbGFjaW5nIGxpdGVyYWwgdmFsdWVzIGFuZCBuYW1lZCBwYXJhbWV0ZXJzIHdpdGggcG9zaXRpb25hbCBwYXJhbWV0ZXJzLgogKiBXSEVSRSBpZCA9IDppZCB3aWxsIGJlIGNoYW5nZWQgaW50byBXSEVSRSBpZCA9ICQxCiAqIFdIRVJFIGlkID0gMSB3aWxsIGJlIGNoYW5nZWQgaW50byBXSEVSRSBpZCA9ICQxLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":219,"slug":"sql-normalize-utility","name":"sql_normalize_utility","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"sql","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIE5vcm1hbGl6ZSB1dGlsaXR5IFNRTCBzdGF0ZW1lbnRzIChEREwgbGlrZSBDUkVBVEUsIEFMVEVSLCBEUk9QKS4KICogVGhpcyBoYW5kbGVzIERETCBzdGF0ZW1lbnRzIGRpZmZlcmVudGx5IGZyb20gcGdfbm9ybWFsaXplKCkgd2hpY2ggaXMgb3B0aW1pemVkIGZvciBETUwuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":230,"slug":"sql-split","name":"sql_split","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"sql","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFNwbGl0IHN0cmluZyB3aXRoIG11bHRpcGxlIFNRTCBzdGF0ZW1lbnRzIGludG8gYXJyYXkgb2YgaW5kaXZpZHVhbCBzdGF0ZW1lbnRzLgogKgogKiBAcmV0dXJuIGFycmF5PHN0cmluZz4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":239,"slug":"sql-deparse-options","name":"sql_deparse_options","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DeparseOptions","namespace":"Flow\\PostgreSql","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBEZXBhcnNlT3B0aW9ucyBmb3IgY29uZmlndXJpbmcgU1FMIGZvcm1hdHRpbmcuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":253,"slug":"sql-deparse","name":"sql_deparse","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"query","type":[{"name":"ParsedQuery","namespace":"Flow\\PostgreSql","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"options","type":[{"name":"DeparseOptions","namespace":"Flow\\PostgreSql","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENvbnZlcnQgYSBQYXJzZWRRdWVyeSBBU1QgYmFjayB0byBTUUwgc3RyaW5nLgogKgogKiBXaGVuIGNhbGxlZCB3aXRob3V0IG9wdGlvbnMsIHJldHVybnMgdGhlIFNRTCBhcyBhIHNpbXBsZSBzdHJpbmcuCiAqIFdoZW4gY2FsbGVkIHdpdGggRGVwYXJzZU9wdGlvbnMsIGFwcGxpZXMgZm9ybWF0dGluZyAocHJldHR5LXByaW50aW5nLCBpbmRlbnRhdGlvbiwgZXRjLikuCiAqCiAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gaWYgZGVwYXJzaW5nIGZhaWxzCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":269,"slug":"sql-format","name":"sql_format","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"sql","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"options","type":[{"name":"DeparseOptions","namespace":"Flow\\PostgreSql","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFBhcnNlIGFuZCBmb3JtYXQgU1FMIHF1ZXJ5IHdpdGggcHJldHR5IHByaW50aW5nLgogKgogKiBUaGlzIGlzIGEgY29udmVuaWVuY2UgZnVuY3Rpb24gdGhhdCBwYXJzZXMgU1FMIGFuZCByZXR1cm5zIGl0IGZvcm1hdHRlZC4KICoKICogQHBhcmFtIHN0cmluZyAkc3FsIFRoZSBTUUwgcXVlcnkgdG8gZm9ybWF0CiAqIEBwYXJhbSBudWxsfERlcGFyc2VPcHRpb25zICRvcHRpb25zIEZvcm1hdHRpbmcgb3B0aW9ucyAoZGVmYXVsdHMgdG8gcHJldHR5LXByaW50IGVuYWJsZWQpCiAqCiAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gaWYgcGFyc2luZyBvciBkZXBhcnNpbmcgZmFpbHMKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":279,"slug":"sql-summary","name":"sql_summary","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"sql","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"options","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"},{"name":"truncateLimit","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"}],"return_type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEdlbmVyYXRlIGEgc3VtbWFyeSBvZiBwYXJzZWQgcXVlcmllcyBpbiBwcm90b2J1ZiBmb3JtYXQuCiAqIFVzZWZ1bCBmb3IgcXVlcnkgbW9uaXRvcmluZyBhbmQgbG9nZ2luZyB3aXRob3V0IGZ1bGwgQVNUIG92ZXJoZWFkLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":294,"slug":"sql-to-paginated-query","name":"sql_to_paginated_query","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"sql","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"limit","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"offset","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"}],"return_type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFRyYW5zZm9ybSBhIFNRTCBxdWVyeSBpbnRvIGEgcGFnaW5hdGVkIHF1ZXJ5IHdpdGggTElNSVQgYW5kIE9GRlNFVC4KICoKICogQHBhcmFtIHN0cmluZyAkc3FsIFRoZSBTUUwgcXVlcnkgdG8gcGFnaW5hdGUKICogQHBhcmFtIGludCAkbGltaXQgTWF4aW11bSBudW1iZXIgb2Ygcm93cyB0byByZXR1cm4KICogQHBhcmFtIGludCAkb2Zmc2V0IE51bWJlciBvZiByb3dzIHRvIHNraXAgKHJlcXVpcmVzIE9SREVSIEJZIGluIHF1ZXJ5KQogKgogKiBAcmV0dXJuIHN0cmluZyBUaGUgcGFnaW5hdGVkIFNRTCBxdWVyeQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":311,"slug":"sql-to-limited-query","name":"sql_to_limited_query","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"sql","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"limit","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFRyYW5zZm9ybSBhIFNRTCBxdWVyeSB0byBsaW1pdCByZXN1bHRzIHRvIGEgc3BlY2lmaWMgbnVtYmVyIG9mIHJvd3MuCiAqCiAqIEBwYXJhbSBzdHJpbmcgJHNxbCBUaGUgU1FMIHF1ZXJ5IHRvIGxpbWl0CiAqIEBwYXJhbSBpbnQgJGxpbWl0IE1heGltdW0gbnVtYmVyIG9mIHJvd3MgdG8gcmV0dXJuCiAqCiAqIEByZXR1cm4gc3RyaW5nIFRoZSBsaW1pdGVkIFNRTCBxdWVyeQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":330,"slug":"sql-to-count-query","name":"sql_to_count_query","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"sql","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFRyYW5zZm9ybSBhIFNRTCBxdWVyeSBpbnRvIGEgQ09VTlQgcXVlcnkgZm9yIHBhZ2luYXRpb24uCiAqCiAqIFdyYXBzIHRoZSBxdWVyeSBpbjogU0VMRUNUIENPVU5UKCopIEZST00gKC4uLikgQVMgX2NvdW50X3N1YnEKICogUmVtb3ZlcyBPUkRFUiBCWSBhbmQgTElNSVQvT0ZGU0VUIGZyb20gdGhlIGlubmVyIHF1ZXJ5LgogKgogKiBAcGFyYW0gc3RyaW5nICRzcWwgVGhlIFNRTCBxdWVyeSB0byB0cmFuc2Zvcm0KICoKICogQHJldHVybiBzdHJpbmcgVGhlIENPVU5UIHF1ZXJ5CiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":352,"slug":"sql-to-keyset-query","name":"sql_to_keyset_query","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"sql","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"limit","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"columns","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"cursor","type":[{"name":"array","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFRyYW5zZm9ybSBhIFNRTCBxdWVyeSBpbnRvIGEga2V5c2V0IChjdXJzb3ItYmFzZWQpIHBhZ2luYXRlZCBxdWVyeS4KICoKICogTW9yZSBlZmZpY2llbnQgdGhhbiBPRkZTRVQgZm9yIGxhcmdlIGRhdGFzZXRzIC0gdXNlcyBpbmRleGVkIFdIRVJFIGNvbmRpdGlvbnMuCiAqIEF1dG9tYXRpY2FsbHkgZGV0ZWN0cyBleGlzdGluZyBxdWVyeSBwYXJhbWV0ZXJzIGFuZCBhcHBlbmRzIGtleXNldCBwbGFjZWhvbGRlcnMgYXQgdGhlIGVuZC4KICoKICogQHBhcmFtIHN0cmluZyAkc3FsIFRoZSBTUUwgcXVlcnkgdG8gcGFnaW5hdGUgKG11c3QgaGF2ZSBPUkRFUiBCWSkKICogQHBhcmFtIGludCAkbGltaXQgTWF4aW11bSBudW1iZXIgb2Ygcm93cyB0byByZXR1cm4KICogQHBhcmFtIGxpc3Q8S2V5c2V0Q29sdW1uPiAkY29sdW1ucyBDb2x1bW5zIGZvciBrZXlzZXQgcGFnaW5hdGlvbiAobXVzdCBtYXRjaCBPUkRFUiBCWSkKICogQHBhcmFtIG51bGx8bGlzdDxudWxsfGJvb2x8ZmxvYXR8aW50fHN0cmluZz4gJGN1cnNvciBWYWx1ZXMgZnJvbSBsYXN0IHJvdyBvZiBwcmV2aW91cyBwYWdlIChudWxsIGZvciBmaXJzdCBwYWdlKQogKgogKiBAcmV0dXJuIHN0cmluZyBUaGUgcGFnaW5hdGVkIFNRTCBxdWVyeQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":367,"slug":"sql-keyset-column","name":"sql_keyset_column","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"column","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"order","type":[{"name":"SortOrder","namespace":"Flow\\PostgreSql\\AST\\Transformers","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\PostgreSql\\AST\\Transformers\\SortOrder::..."}],"return_type":[{"name":"KeysetColumn","namespace":"Flow\\PostgreSql\\AST\\Transformers","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEtleXNldENvbHVtbiBmb3Iga2V5c2V0IHBhZ2luYXRpb24uCiAqCiAqIEBwYXJhbSBzdHJpbmcgJGNvbHVtbiBDb2x1bW4gbmFtZSAoY2FuIGluY2x1ZGUgdGFibGUgYWxpYXMgbGlrZSAidS5pZCIpCiAqIEBwYXJhbSBTb3J0T3JkZXIgJG9yZGVyIFNvcnQgb3JkZXIgKEFTQyBvciBERVNDKQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":376,"slug":"sql-query-columns","name":"sql_query_columns","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"query","type":[{"name":"ParsedQuery","namespace":"Flow\\PostgreSql","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Columns","namespace":"Flow\\PostgreSql\\Extractors","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEV4dHJhY3QgY29sdW1ucyBmcm9tIGEgcGFyc2VkIFNRTCBxdWVyeS4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":385,"slug":"sql-query-tables","name":"sql_query_tables","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"query","type":[{"name":"ParsedQuery","namespace":"Flow\\PostgreSql","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Tables","namespace":"Flow\\PostgreSql\\Extractors","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEV4dHJhY3QgdGFibGVzIGZyb20gYSBwYXJzZWQgU1FMIHF1ZXJ5LgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":394,"slug":"sql-query-functions","name":"sql_query_functions","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"query","type":[{"name":"ParsedQuery","namespace":"Flow\\PostgreSql","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Functions","namespace":"Flow\\PostgreSql\\Extractors","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEV4dHJhY3QgZnVuY3Rpb25zIGZyb20gYSBwYXJzZWQgU1FMIHF1ZXJ5LgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":403,"slug":"sql-query-order-by","name":"sql_query_order_by","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"query","type":[{"name":"ParsedQuery","namespace":"Flow\\PostgreSql","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OrderBy","namespace":"Flow\\PostgreSql\\Extractors","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEV4dHJhY3QgT1JERVIgQlkgY2xhdXNlcyBmcm9tIGEgcGFyc2VkIFNRTCBxdWVyeS4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":417,"slug":"sql-query-depth","name":"sql_query_depth","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"sql","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEdldCB0aGUgbWF4aW11bSBuZXN0aW5nIGRlcHRoIG9mIGEgU1FMIHF1ZXJ5LgogKgogKiBFeGFtcGxlOgogKiAtICJTRUxFQ1QgKiBGUk9NIHQiID0+IDEKICogLSAiU0VMRUNUICogRlJPTSAoU0VMRUNUICogRlJPTSB0KSIgPT4gMgogKiAtICJTRUxFQ1QgKiBGUk9NIChTRUxFQ1QgKiBGUk9NIChTRUxFQ1QgKiBGUk9NIHQpKSIgPT4gMwogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":434,"slug":"sql-to-explain","name":"sql_to_explain","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"sql","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"config","type":[{"name":"ExplainConfig","namespace":"Flow\\PostgreSql\\AST\\Transformers","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFRyYW5zZm9ybSBhIFNRTCBxdWVyeSBpbnRvIGFuIEVYUExBSU4gcXVlcnkuCiAqCiAqIFJldHVybnMgdGhlIG1vZGlmaWVkIFNRTCB3aXRoIEVYUExBSU4gd3JhcHBlZCBhcm91bmQgaXQuCiAqIERlZmF1bHRzIHRvIEVYUExBSU4gQU5BTFlaRSB3aXRoIEpTT04gZm9ybWF0IGZvciBlYXN5IHBhcnNpbmcuCiAqCiAqIEBwYXJhbSBzdHJpbmcgJHNxbCBUaGUgU1FMIHF1ZXJ5IHRvIGV4cGxhaW4KICogQHBhcmFtIG51bGx8RXhwbGFpbkNvbmZpZyAkY29uZmlnIEVYUExBSU4gY29uZmlndXJhdGlvbiAoZGVmYXVsdHMgdG8gZm9yQW5hbHlzaXMoKSkKICoKICogQHJldHVybiBzdHJpbmcgVGhlIEVYUExBSU4gcXVlcnkKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":454,"slug":"sql-explain-config","name":"sql_explain_config","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"analyze","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"},{"name":"verbose","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"costs","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"},{"name":"buffers","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"},{"name":"timing","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"},{"name":"format","type":[{"name":"ExplainFormat","namespace":"Flow\\PostgreSql\\QueryBuilder\\Utility","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\PostgreSql\\QueryBuilder\\Utility\\ExplainFormat::..."}],"return_type":[{"name":"ExplainConfig","namespace":"Flow\\PostgreSql\\AST\\Transformers","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBFeHBsYWluQ29uZmlnIGZvciBjdXN0b21pemluZyBFWFBMQUlOIG9wdGlvbnMuCiAqCiAqIEBwYXJhbSBib29sICRhbmFseXplIFdoZXRoZXIgdG8gYWN0dWFsbHkgZXhlY3V0ZSB0aGUgcXVlcnkgKEFOQUxZWkUpCiAqIEBwYXJhbSBib29sICR2ZXJib3NlIEluY2x1ZGUgdmVyYm9zZSBvdXRwdXQKICogQHBhcmFtIGJvb2wgJGNvc3RzIEluY2x1ZGUgY29zdCBlc3RpbWF0ZXMgKGRlZmF1bHQgdHJ1ZSkKICogQHBhcmFtIGJvb2wgJGJ1ZmZlcnMgSW5jbHVkZSBidWZmZXIgdXNhZ2Ugc3RhdGlzdGljcyAocmVxdWlyZXMgYW5hbHl6ZSkKICogQHBhcmFtIGJvb2wgJHRpbWluZyBJbmNsdWRlIHRpbWluZyBpbmZvcm1hdGlvbiAocmVxdWlyZXMgYW5hbHl6ZSkKICogQHBhcmFtIEV4cGxhaW5Gb3JtYXQgJGZvcm1hdCBPdXRwdXQgZm9ybWF0IChKU09OIHJlY29tbWVuZGVkIGZvciBwYXJzaW5nKQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":476,"slug":"sql-explain-modifier","name":"sql_explain_modifier","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"config","type":[{"name":"ExplainConfig","namespace":"Flow\\PostgreSql\\AST\\Transformers","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ExplainModifier","namespace":"Flow\\PostgreSql\\AST\\Transformers","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBFeHBsYWluTW9kaWZpZXIgZm9yIHRyYW5zZm9ybWluZyBxdWVyaWVzIGludG8gRVhQTEFJTiBxdWVyaWVzLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":489,"slug":"sql-explain-parse","name":"sql_explain_parse","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"jsonOutput","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Plan","namespace":"Flow\\PostgreSql\\Explain\\Plan","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFBhcnNlIEVYUExBSU4gSlNPTiBvdXRwdXQgaW50byBhIFBsYW4gb2JqZWN0LgogKgogKiBAcGFyYW0gc3RyaW5nICRqc29uT3V0cHV0IFRoZSBKU09OIG91dHB1dCBmcm9tIEVYUExBSU4gKEZPUk1BVCBKU09OKQogKgogKiBAcmV0dXJuIFBsYW4gVGhlIHBhcnNlZCBleGVjdXRpb24gcGxhbgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":502,"slug":"sql-analyze","name":"sql_analyze","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"plan","type":[{"name":"Plan","namespace":"Flow\\PostgreSql\\Explain\\Plan","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"PlanAnalyzer","namespace":"Flow\\PostgreSql\\Explain\\Analyzer","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHBsYW4gYW5hbHl6ZXIgZm9yIGFuYWx5emluZyBFWFBMQUlOIHBsYW5zLgogKgogKiBAcGFyYW0gUGxhbiAkcGxhbiBUaGUgZXhlY3V0aW9uIHBsYW4gdG8gYW5hbHl6ZQogKgogKiBAcmV0dXJuIFBsYW5BbmFseXplciBUaGUgYW5hbHl6ZXIgZm9yIGV4dHJhY3RpbmcgaW5zaWdodHMKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":513,"slug":"select","name":"select","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expressions","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"SelectBuilder","namespace":"Flow\\PostgreSql\\QueryBuilder\\Select","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIG5ldyBTRUxFQ1QgcXVlcnkgYnVpbGRlci4KICoKICogQHBhcmFtIEV4cHJlc3Npb24gLi4uJGV4cHJlc3Npb25zIENvbHVtbnMgdG8gc2VsZWN0LiBJZiBlbXB0eSwgcmV0dXJucyBTZWxlY3RTZWxlY3RTdGVwLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":529,"slug":"with","name":"with","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"ctes","type":[{"name":"CTE","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"WithBuilder","namespace":"Flow\\PostgreSql\\QueryBuilder\\With","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFdJVEggY2xhdXNlIGJ1aWxkZXIgZm9yIENURXMuCiAqCiAqIEV4YW1wbGU6IHdpdGgoY3RlKCd1c2VycycsICRzdWJxdWVyeSkpLT5zZWxlY3Qoc3RhcigpKS0+ZnJvbSh0YWJsZSgndXNlcnMnKSkKICogRXhhbXBsZTogd2l0aChjdGUoJ2EnLCAkcTEpLCBjdGUoJ2InLCAkcTIpKS0+cmVjdXJzaXZlKCktPnNlbGVjdCguLi4pLT5mcm9tKHRhYmxlKCdhJykpCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":542,"slug":"insert","name":"insert","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"InsertIntoStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Insert","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIG5ldyBJTlNFUlQgcXVlcnkgYnVpbGRlci4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":558,"slug":"bulk-insert","name":"bulk_insert","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"table","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"columns","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"rowCount","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"BulkInsert","namespace":"Flow\\PostgreSql\\QueryBuilder\\Insert","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBvcHRpbWl6ZWQgYnVsayBJTlNFUlQgcXVlcnkgZm9yIGhpZ2gtcGVyZm9ybWFuY2UgbXVsdGktcm93IGluc2VydHMuCiAqCiAqIFVubGlrZSBpbnNlcnQoKSB3aGljaCB1c2VzIGltbXV0YWJsZSBidWlsZGVyIHBhdHRlcm5zIChPKG7CsikgZm9yIG4gcm93cyksCiAqIHRoaXMgZnVuY3Rpb24gZ2VuZXJhdGVzIFNRTCBkaXJlY3RseSB1c2luZyBzdHJpbmcgb3BlcmF0aW9ucyAoTyhuKSBjb21wbGV4aXR5KS4KICoKICogQHBhcmFtIHN0cmluZyAkdGFibGUgVGFibGUgbmFtZQogKiBAcGFyYW0gbGlzdDxzdHJpbmc+ICRjb2x1bW5zIENvbHVtbiBuYW1lcwogKiBAcGFyYW0gaW50ICRyb3dDb3VudCBOdW1iZXIgb2Ygcm93cyB0byBpbnNlcnQKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":567,"slug":"update","name":"update","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"UpdateTableStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Update","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIG5ldyBVUERBVEUgcXVlcnkgYnVpbGRlci4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":576,"slug":"delete","name":"delete","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DeleteFromStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Delete","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIG5ldyBERUxFVEUgcXVlcnkgYnVpbGRlci4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":588,"slug":"merge","name":"merge","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"table","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"alias","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"MergeUsingStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Merge","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIG5ldyBNRVJHRSBxdWVyeSBidWlsZGVyLgogKgogKiBAcGFyYW0gc3RyaW5nICR0YWJsZSBUYXJnZXQgdGFibGUgbmFtZQogKiBAcGFyYW0gbnVsbHxzdHJpbmcgJGFsaWFzIE9wdGlvbmFsIHRhYmxlIGFsaWFzCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":602,"slug":"copy","name":"copy","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"CopyFactory","namespace":"Flow\\PostgreSql\\QueryBuilder\\Factory","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIG5ldyBDT1BZIHF1ZXJ5IGJ1aWxkZXIgZm9yIGRhdGEgaW1wb3J0L2V4cG9ydC4KICoKICogVXNhZ2U6CiAqICAgY29weSgpLT5mcm9tKCd1c2VycycpLT5maWxlKCcvdG1wL3VzZXJzLmNzdicpLT5mb3JtYXQoQ29weUZvcm1hdDo6Q1NWKQogKiAgIGNvcHkoKS0+dG8oJ3VzZXJzJyktPmZpbGUoJy90bXAvdXNlcnMuY3N2JyktPmZvcm1hdChDb3B5Rm9ybWF0OjpDU1YpCiAqICAgY29weSgpLT50b1F1ZXJ5KHNlbGVjdCguLi4pKS0+ZmlsZSgnL3RtcC9kYXRhLmNzdicpCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":623,"slug":"col","name":"col","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"column","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"table","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"schema","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Column","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGNvbHVtbiByZWZlcmVuY2UgZXhwcmVzc2lvbi4KICoKICogQ2FuIGJlIHVzZWQgaW4gdHdvIG1vZGVzOgogKiAtIFBhcnNlIG1vZGU6IGNvbCgndXNlcnMuaWQnKSBvciBjb2woJ3NjaGVtYS50YWJsZS5jb2x1bW4nKSAtIHBhcnNlcyBkb3Qtc2VwYXJhdGVkIHN0cmluZwogKiAtIEV4cGxpY2l0IG1vZGU6IGNvbCgnaWQnLCAndXNlcnMnKSBvciBjb2woJ2lkJywgJ3VzZXJzJywgJ3NjaGVtYScpIC0gc2VwYXJhdGUgYXJndW1lbnRzCiAqCiAqIFdoZW4gJHRhYmxlIG9yICRzY2hlbWEgaXMgcHJvdmlkZWQsICRjb2x1bW4gbXVzdCBiZSBhIHBsYWluIGNvbHVtbiBuYW1lIChubyBkb3RzKS4KICoKICogQHBhcmFtIHN0cmluZyAkY29sdW1uIENvbHVtbiBuYW1lLCBvciBkb3Qtc2VwYXJhdGVkIHBhdGggbGlrZSAidGFibGUuY29sdW1uIiBvciAic2NoZW1hLnRhYmxlLmNvbHVtbiIKICogQHBhcmFtIG51bGx8c3RyaW5nICR0YWJsZSBUYWJsZSBuYW1lIChvcHRpb25hbCwgdHJpZ2dlcnMgZXhwbGljaXQgbW9kZSkKICogQHBhcmFtIG51bGx8c3RyaW5nICRzY2hlbWEgU2NoZW1hIG5hbWUgKG9wdGlvbmFsLCByZXF1aXJlcyAkdGFibGUpCiAqCiAqIEB0aHJvd3MgSW52YWxpZEV4cHJlc3Npb25FeGNlcHRpb24gd2hlbiAkc2NoZW1hIGlzIHByb3ZpZGVkIHdpdGhvdXQgJHRhYmxlLCBvciB3aGVuICRjb2x1bW4gY29udGFpbnMgZG90cyBpbiBleHBsaWNpdCBtb2RlCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":652,"slug":"star","name":"star","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"table","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Star","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFNFTEVDVCAqIGV4cHJlc3Npb24uCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":668,"slug":"literal","name":"literal","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"value","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"float","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Literal","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGxpdGVyYWwgdmFsdWUgZm9yIHVzZSBpbiBxdWVyaWVzLgogKgogKiBBdXRvbWF0aWNhbGx5IGRldGVjdHMgdGhlIHR5cGUgYW5kIGNyZWF0ZXMgdGhlIGFwcHJvcHJpYXRlIGxpdGVyYWw6CiAqIC0gbGl0ZXJhbCgnaGVsbG8nKSBjcmVhdGVzIGEgc3RyaW5nIGxpdGVyYWwKICogLSBsaXRlcmFsKDQyKSBjcmVhdGVzIGFuIGludGVnZXIgbGl0ZXJhbAogKiAtIGxpdGVyYWwoMy4xNCkgY3JlYXRlcyBhIGZsb2F0IGxpdGVyYWwKICogLSBsaXRlcmFsKHRydWUpIGNyZWF0ZXMgYSBib29sZWFuIGxpdGVyYWwKICogLSBsaXRlcmFsKG51bGwpIGNyZWF0ZXMgYSBOVUxMIGxpdGVyYWwKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":683,"slug":"param","name":"param","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"position","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Parameter","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHBvc2l0aW9uYWwgcGFyYW1ldGVyICgkMSwgJDIsIGV0Yy4pLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":695,"slug":"func","name":"func","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"args","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"FunctionCall","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGZ1bmN0aW9uIGNhbGwgZXhwcmVzc2lvbi4KICoKICogQHBhcmFtIHN0cmluZyAkbmFtZSBGdW5jdGlvbiBuYW1lIChjYW4gaW5jbHVkZSBzY2hlbWEgbGlrZSAicGdfY2F0YWxvZy5ub3ciKQogKiBAcGFyYW0gbGlzdDxFeHByZXNzaW9uPiAkYXJncyBGdW5jdGlvbiBhcmd1bWVudHMKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":708,"slug":"agg","name":"agg","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"args","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"distinct","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"AggregateCall","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBhZ2dyZWdhdGUgZnVuY3Rpb24gY2FsbCAoQ09VTlQsIFNVTSwgQVZHLCBldGMuKS4KICoKICogQHBhcmFtIHN0cmluZyAkbmFtZSBBZ2dyZWdhdGUgZnVuY3Rpb24gbmFtZQogKiBAcGFyYW0gbGlzdDxFeHByZXNzaW9uPiAkYXJncyBGdW5jdGlvbiBhcmd1bWVudHMKICogQHBhcmFtIGJvb2wgJGRpc3RpbmN0IFVzZSBESVNUSU5DVCBtb2RpZmllcgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":717,"slug":"agg-count","name":"agg_count","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"distinct","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"AggregateCall","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBDT1VOVCgqKSBhZ2dyZWdhdGUuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":730,"slug":"agg-sum","name":"agg_sum","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"distinct","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"AggregateCall","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBTVU0gYWdncmVnYXRlLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":739,"slug":"agg-avg","name":"agg_avg","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"distinct","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"AggregateCall","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBBVkcgYWdncmVnYXRlLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":748,"slug":"agg-min","name":"agg_min","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"AggregateCall","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBNSU4gYWdncmVnYXRlLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":757,"slug":"agg-max","name":"agg_max","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"AggregateCall","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBNQVggYWdncmVnYXRlLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":768,"slug":"coalesce","name":"coalesce","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expressions","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Coalesce","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIENPQUxFU0NFIGV4cHJlc3Npb24uCiAqCiAqIEBwYXJhbSBFeHByZXNzaW9uIC4uLiRleHByZXNzaW9ucyBFeHByZXNzaW9ucyB0byBjb2FsZXNjZQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":777,"slug":"nullif","name":"nullif","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr1","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"expr2","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"NullIf","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIE5VTExJRiBleHByZXNzaW9uLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":788,"slug":"greatest","name":"greatest","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expressions","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Greatest","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEdSRUFURVNUIGV4cHJlc3Npb24uCiAqCiAqIEBwYXJhbSBFeHByZXNzaW9uIC4uLiRleHByZXNzaW9ucyBFeHByZXNzaW9ucyB0byBjb21wYXJlCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":799,"slug":"least","name":"least","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expressions","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Least","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIExFQVNUIGV4cHJlc3Npb24uCiAqCiAqIEBwYXJhbSBFeHByZXNzaW9uIC4uLiRleHByZXNzaW9ucyBFeHByZXNzaW9ucyB0byBjb21wYXJlCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":811,"slug":"cast","name":"cast","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"dataType","type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"TypeCast","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHR5cGUgY2FzdCBleHByZXNzaW9uLgogKgogKiBAcGFyYW0gRXhwcmVzc2lvbiAkZXhwciBFeHByZXNzaW9uIHRvIGNhc3QKICogQHBhcmFtIERhdGFUeXBlICRkYXRhVHlwZSBUYXJnZXQgZGF0YSB0eXBlICh1c2UgZGF0YV90eXBlXyogZnVuY3Rpb25zKQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":820,"slug":"data-type-integer","name":"data_type_integer","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBpbnRlZ2VyIGRhdGEgdHlwZSAoUG9zdGdyZVNRTCBpbnQ0KS4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":829,"slug":"data-type-smallint","name":"data_type_smallint","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHNtYWxsaW50IGRhdGEgdHlwZSAoUG9zdGdyZVNRTCBpbnQyKS4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":838,"slug":"data-type-bigint","name":"data_type_bigint","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGJpZ2ludCBkYXRhIHR5cGUgKFBvc3RncmVTUUwgaW50OCkuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":847,"slug":"data-type-boolean","name":"data_type_boolean","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGJvb2xlYW4gZGF0YSB0eXBlLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":856,"slug":"data-type-text","name":"data_type_text","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHRleHQgZGF0YSB0eXBlLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":865,"slug":"data-type-varchar","name":"data_type_varchar","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"length","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHZhcmNoYXIgZGF0YSB0eXBlIHdpdGggbGVuZ3RoIGNvbnN0cmFpbnQuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":874,"slug":"data-type-char","name":"data_type_char","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"length","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGNoYXIgZGF0YSB0eXBlIHdpdGggbGVuZ3RoIGNvbnN0cmFpbnQuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":883,"slug":"data-type-numeric","name":"data_type_numeric","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"precision","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"scale","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIG51bWVyaWMgZGF0YSB0eXBlIHdpdGggb3B0aW9uYWwgcHJlY2lzaW9uIGFuZCBzY2FsZS4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":892,"slug":"data-type-decimal","name":"data_type_decimal","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"precision","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"scale","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGRlY2ltYWwgZGF0YSB0eXBlIHdpdGggb3B0aW9uYWwgcHJlY2lzaW9uIGFuZCBzY2FsZS4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":901,"slug":"data-type-real","name":"data_type_real","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHJlYWwgZGF0YSB0eXBlIChQb3N0Z3JlU1FMIGZsb2F0NCkuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":910,"slug":"data-type-double-precision","name":"data_type_double_precision","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGRvdWJsZSBwcmVjaXNpb24gZGF0YSB0eXBlIChQb3N0Z3JlU1FMIGZsb2F0OCkuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":919,"slug":"data-type-date","name":"data_type_date","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGRhdGUgZGF0YSB0eXBlLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":928,"slug":"data-type-time","name":"data_type_time","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"precision","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHRpbWUgZGF0YSB0eXBlIHdpdGggb3B0aW9uYWwgcHJlY2lzaW9uLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":937,"slug":"data-type-timestamp","name":"data_type_timestamp","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"precision","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHRpbWVzdGFtcCBkYXRhIHR5cGUgd2l0aCBvcHRpb25hbCBwcmVjaXNpb24uCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":946,"slug":"data-type-timestamptz","name":"data_type_timestamptz","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"precision","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHRpbWVzdGFtcCB3aXRoIHRpbWUgem9uZSBkYXRhIHR5cGUgd2l0aCBvcHRpb25hbCBwcmVjaXNpb24uCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":955,"slug":"data-type-interval","name":"data_type_interval","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBpbnRlcnZhbCBkYXRhIHR5cGUuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":970,"slug":"current-timestamp","name":"current_timestamp","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"SQLValueFunctionExpression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFNRTCBzdGFuZGFyZCBDVVJSRU5UX1RJTUVTVEFNUCBmdW5jdGlvbi4KICoKICogUmV0dXJucyB0aGUgY3VycmVudCBkYXRlIGFuZCB0aW1lIChhdCB0aGUgc3RhcnQgb2YgdGhlIHRyYW5zYWN0aW9uKS4KICogVXNlZnVsIGFzIGEgY29sdW1uIGRlZmF1bHQgdmFsdWUgb3IgaW4gU0VMRUNUIHF1ZXJpZXMuCiAqCiAqIEV4YW1wbGU6IGNvbHVtbignY3JlYXRlZF9hdCcsIGRhdGFfdHlwZV90aW1lc3RhbXAoKSktPmRlZmF1bHQoY3VycmVudF90aW1lc3RhbXAoKSkKICogRXhhbXBsZTogc2VsZWN0KCktPnNlbGVjdChjdXJyZW50X3RpbWVzdGFtcCgpLT5hcygnbm93JykpCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":985,"slug":"current-date","name":"current_date","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"SQLValueFunctionExpression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFNRTCBzdGFuZGFyZCBDVVJSRU5UX0RBVEUgZnVuY3Rpb24uCiAqCiAqIFJldHVybnMgdGhlIGN1cnJlbnQgZGF0ZSAoYXQgdGhlIHN0YXJ0IG9mIHRoZSB0cmFuc2FjdGlvbikuCiAqIFVzZWZ1bCBhcyBhIGNvbHVtbiBkZWZhdWx0IHZhbHVlIG9yIGluIFNFTEVDVCBxdWVyaWVzLgogKgogKiBFeGFtcGxlOiBjb2x1bW4oJ2JpcnRoX2RhdGUnLCBkYXRhX3R5cGVfZGF0ZSgpKS0+ZGVmYXVsdChjdXJyZW50X2RhdGUoKSkKICogRXhhbXBsZTogc2VsZWN0KCktPnNlbGVjdChjdXJyZW50X2RhdGUoKS0+YXMoJ3RvZGF5JykpCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1000,"slug":"current-time","name":"current_time","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"SQLValueFunctionExpression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFNRTCBzdGFuZGFyZCBDVVJSRU5UX1RJTUUgZnVuY3Rpb24uCiAqCiAqIFJldHVybnMgdGhlIGN1cnJlbnQgdGltZSAoYXQgdGhlIHN0YXJ0IG9mIHRoZSB0cmFuc2FjdGlvbikuCiAqIFVzZWZ1bCBhcyBhIGNvbHVtbiBkZWZhdWx0IHZhbHVlIG9yIGluIFNFTEVDVCBxdWVyaWVzLgogKgogKiBFeGFtcGxlOiBjb2x1bW4oJ3N0YXJ0X3RpbWUnLCBkYXRhX3R5cGVfdGltZSgpKS0+ZGVmYXVsdChjdXJyZW50X3RpbWUoKSkKICogRXhhbXBsZTogc2VsZWN0KCktPnNlbGVjdChjdXJyZW50X3RpbWUoKS0+YXMoJ25vd190aW1lJykpCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1009,"slug":"data-type-uuid","name":"data_type_uuid","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFVVSUQgZGF0YSB0eXBlLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1018,"slug":"data-type-json","name":"data_type_json","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEpTT04gZGF0YSB0eXBlLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1027,"slug":"data-type-jsonb","name":"data_type_jsonb","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEpTT05CIGRhdGEgdHlwZS4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1036,"slug":"data-type-bytea","name":"data_type_bytea","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGJ5dGVhIGRhdGEgdHlwZS4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1045,"slug":"data-type-inet","name":"data_type_inet","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBpbmV0IGRhdGEgdHlwZS4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1054,"slug":"data-type-cidr","name":"data_type_cidr","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGNpZHIgZGF0YSB0eXBlLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1063,"slug":"data-type-macaddr","name":"data_type_macaddr","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIG1hY2FkZHIgZGF0YSB0eXBlLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1072,"slug":"data-type-serial","name":"data_type_serial","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHNlcmlhbCBkYXRhIHR5cGUuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1081,"slug":"data-type-smallserial","name":"data_type_smallserial","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHNtYWxsc2VyaWFsIGRhdGEgdHlwZS4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1090,"slug":"data-type-bigserial","name":"data_type_bigserial","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGJpZ3NlcmlhbCBkYXRhIHR5cGUuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1099,"slug":"data-type-array","name":"data_type_array","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"elementType","type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBhcnJheSBkYXRhIHR5cGUgZnJvbSBhbiBlbGVtZW50IHR5cGUuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1111,"slug":"data-type-custom","name":"data_type_custom","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"typeName","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"schema","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGN1c3RvbSBkYXRhIHR5cGUuCiAqCiAqIEBwYXJhbSBzdHJpbmcgJHR5cGVOYW1lIFR5cGUgbmFtZQogKiBAcGFyYW0gbnVsbHxzdHJpbmcgJHNjaGVtYSBPcHRpb25hbCBzY2hlbWEgbmFtZQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1124,"slug":"case-when","name":"case_when","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"whenClauses","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"elseResult","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"operand","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"CaseExpression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIENBU0UgZXhwcmVzc2lvbi4KICoKICogQHBhcmFtIG5vbi1lbXB0eS1saXN0PFdoZW5DbGF1c2U+ICR3aGVuQ2xhdXNlcyBXSEVOIGNsYXVzZXMKICogQHBhcmFtIG51bGx8RXhwcmVzc2lvbiAkZWxzZVJlc3VsdCBFTFNFIHJlc3VsdCAob3B0aW9uYWwpCiAqIEBwYXJhbSBudWxsfEV4cHJlc3Npb24gJG9wZXJhbmQgQ0FTRSBvcGVyYW5kIGZvciBzaW1wbGUgQ0FTRSAob3B0aW9uYWwpCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1133,"slug":"when","name":"when","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"condition","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"result","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"WhenClause","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFdIRU4gY2xhdXNlIGZvciBDQVNFIGV4cHJlc3Npb24uCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1142,"slug":"sub-select","name":"sub_select","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"query","type":[{"name":"SelectFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Select","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Subquery","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHN1YnF1ZXJ5IGV4cHJlc3Npb24uCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1156,"slug":"array-expr","name":"array_expr","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"elements","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ArrayExpression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBhcnJheSBleHByZXNzaW9uLgogKgogKiBAcGFyYW0gbGlzdDxFeHByZXNzaW9uPiAkZWxlbWVudHMgQXJyYXkgZWxlbWVudHMKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1167,"slug":"row-expr","name":"row_expr","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"elements","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"RowExpression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHJvdyBleHByZXNzaW9uLgogKgogKiBAcGFyYW0gbGlzdDxFeHByZXNzaW9uPiAkZWxlbWVudHMgUm93IGVsZW1lbnRzCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1189,"slug":"raw-expr","name":"raw_expr","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"sql","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"RawExpression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHJhdyBTUUwgZXhwcmVzc2lvbiAodXNlIHdpdGggY2F1dGlvbikuCiAqCiAqIFNFQ1VSSVRZIFdBUk5JTkc6IFRoaXMgZnVuY3Rpb24gYWNjZXB0cyByYXcgU1FMIHdpdGhvdXQgcGFyYW1ldGVyaXphdGlvbi4KICogU1FMIGluamVjdGlvbiBpcyBwb3NzaWJsZSBpZiB1c2VkIHdpdGggdW50cnVzdGVkIHVzZXIgaW5wdXQuCiAqIE9ubHkgdXNlIHdpdGggdHJ1c3RlZCwgdmFsaWRhdGVkIGlucHV0LgogKgogKiBGb3IgdXNlci1wcm92aWRlZCB2YWx1ZXMsIHVzZSBwYXJhbSgpIGluc3RlYWQ6CiAqIGBgYHBocAogKiAvLyBVTlNBRkUgLSBTUUwgaW5qZWN0aW9uIHBvc3NpYmxlOgogKiByYXdfZXhwcigiY3VzdG9tX2Z1bmMoJyIgLiAkdXNlcklucHV0IC4gIicpIikKICoKICogLy8gU0FGRSAtIHVzZSBwYXJhbWV0ZXJzOgogKiBmdW5jKCdjdXN0b21fZnVuYycsIHBhcmFtKDEpKQogKiBgYGAKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1198,"slug":"binary-expr","name":"binary_expr","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"left","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"operator","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"right","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"BinaryExpression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGJpbmFyeSBleHByZXNzaW9uIChsZWZ0IG9wIHJpZ2h0KS4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1212,"slug":"window-func","name":"window_func","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"args","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"partitionBy","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"orderBy","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"WindowFunction","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHdpbmRvdyBmdW5jdGlvbi4KICoKICogQHBhcmFtIHN0cmluZyAkbmFtZSBGdW5jdGlvbiBuYW1lCiAqIEBwYXJhbSBsaXN0PEV4cHJlc3Npb24+ICRhcmdzIEZ1bmN0aW9uIGFyZ3VtZW50cwogKiBAcGFyYW0gbGlzdDxFeHByZXNzaW9uPiAkcGFydGl0aW9uQnkgUEFSVElUSU9OIEJZIGV4cHJlc3Npb25zCiAqIEBwYXJhbSBsaXN0PE9yZGVyQnk+ICRvcmRlckJ5IE9SREVSIEJZIGl0ZW1zCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1225,"slug":"eq","name":"eq","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"left","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"right","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Comparison","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBlcXVhbGl0eSBjb21wYXJpc29uIChjb2x1bW4gPSB2YWx1ZSkuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1234,"slug":"neq","name":"neq","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"left","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"right","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Comparison","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIG5vdC1lcXVhbCBjb21wYXJpc29uIChjb2x1bW4gIT0gdmFsdWUpLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1243,"slug":"lt","name":"lt","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"left","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"right","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Comparison","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGxlc3MtdGhhbiBjb21wYXJpc29uIChjb2x1bW4gPCB2YWx1ZSkuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1252,"slug":"lte","name":"lte","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"left","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"right","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Comparison","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGxlc3MtdGhhbi1vci1lcXVhbCBjb21wYXJpc29uIChjb2x1bW4gPD0gdmFsdWUpLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1261,"slug":"gt","name":"gt","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"left","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"right","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Comparison","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGdyZWF0ZXItdGhhbiBjb21wYXJpc29uIChjb2x1bW4gPiB2YWx1ZSkuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1270,"slug":"gte","name":"gte","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"left","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"right","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Comparison","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGdyZWF0ZXItdGhhbi1vci1lcXVhbCBjb21wYXJpc29uIChjb2x1bW4gPj0gdmFsdWUpLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1279,"slug":"between","name":"between","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"low","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"high","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"not","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"Between","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEJFVFdFRU4gY29uZGl0aW9uLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1291,"slug":"is-in","name":"is_in","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"values","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"In","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBJTiBjb25kaXRpb24uCiAqCiAqIEBwYXJhbSBFeHByZXNzaW9uICRleHByIEV4cHJlc3Npb24gdG8gY2hlY2sKICogQHBhcmFtIGxpc3Q8RXhwcmVzc2lvbj4gJHZhbHVlcyBMaXN0IG9mIHZhbHVlcwogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1300,"slug":"is-null","name":"is_null","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"not","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"IsNull","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBJUyBOVUxMIGNvbmRpdGlvbi4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1309,"slug":"like","name":"like","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"pattern","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"caseInsensitive","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"Like","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIExJS0UgY29uZGl0aW9uLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1318,"slug":"similar-to","name":"similar_to","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"pattern","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"SimilarTo","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFNJTUlMQVIgVE8gY29uZGl0aW9uLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1327,"slug":"is-distinct-from","name":"is_distinct_from","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"left","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"right","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"not","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"IsDistinctFrom","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBJUyBESVNUSU5DVCBGUk9NIGNvbmRpdGlvbi4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1336,"slug":"exists","name":"exists","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"subquery","type":[{"name":"SelectFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Select","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Exists","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBFWElTVFMgY29uZGl0aW9uLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1348,"slug":"any-sub-select","name":"any_sub_select","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"left","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"operator","type":[{"name":"ComparisonOperator","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"subquery","type":[{"name":"SelectFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Select","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Any","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBBTlkgY29uZGl0aW9uLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1360,"slug":"all-sub-select","name":"all_sub_select","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"left","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"operator","type":[{"name":"ComparisonOperator","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"subquery","type":[{"name":"SelectFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Select","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"All","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBBTEwgY29uZGl0aW9uLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1386,"slug":"conditions","name":"conditions","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"ConditionBuilder","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGNvbmRpdGlvbiBidWlsZGVyIGZvciBmbHVlbnQgY29uZGl0aW9uIGNvbXBvc2l0aW9uLgogKgogKiBUaGlzIGJ1aWxkZXIgYWxsb3dzIGluY3JlbWVudGFsIGNvbmRpdGlvbiBidWlsZGluZyB3aXRoIGEgZmx1ZW50IEFQSToKICoKICogYGBgcGhwCiAqICRidWlsZGVyID0gY29uZGl0aW9ucygpOwogKgogKiBpZiAoJGhhc0ZpbHRlcikgewogKiAgICAgJGJ1aWxkZXIgPSAkYnVpbGRlci0+YW5kKGVxKGNvbCgnc3RhdHVzJyksIGxpdGVyYWwoJ2FjdGl2ZScpKSk7CiAqIH0KICoKICogaWYgKCEkYnVpbGRlci0+aXNFbXB0eSgpKSB7CiAqICAgICAkcXVlcnkgPSBzZWxlY3QoKS0+ZnJvbSh0YWJsZSgndXNlcnMnKSktPndoZXJlKCRidWlsZGVyKTsKICogfQogKiBgYGAKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1397,"slug":"cond-and","name":"cond_and","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"conditions","type":[{"name":"Condition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"AndCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENvbWJpbmUgY29uZGl0aW9ucyB3aXRoIEFORC4KICoKICogQHBhcmFtIENvbmRpdGlvbiAuLi4kY29uZGl0aW9ucyBDb25kaXRpb25zIHRvIGNvbWJpbmUKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1408,"slug":"cond-or","name":"cond_or","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"conditions","type":[{"name":"Condition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"OrCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENvbWJpbmUgY29uZGl0aW9ucyB3aXRoIE9SLgogKgogKiBAcGFyYW0gQ29uZGl0aW9uIC4uLiRjb25kaXRpb25zIENvbmRpdGlvbnMgdG8gY29tYmluZQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1417,"slug":"cond-not","name":"cond_not","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"condition","type":[{"name":"Condition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"NotCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIE5lZ2F0ZSBhIGNvbmRpdGlvbiB3aXRoIE5PVC4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1439,"slug":"raw-cond","name":"raw_cond","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"sql","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"RawCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHJhdyBTUUwgY29uZGl0aW9uICh1c2Ugd2l0aCBjYXV0aW9uKS4KICoKICogU0VDVVJJVFkgV0FSTklORzogVGhpcyBmdW5jdGlvbiBhY2NlcHRzIHJhdyBTUUwgd2l0aG91dCBwYXJhbWV0ZXJpemF0aW9uLgogKiBTUUwgaW5qZWN0aW9uIGlzIHBvc3NpYmxlIGlmIHVzZWQgd2l0aCB1bnRydXN0ZWQgdXNlciBpbnB1dC4KICogT25seSB1c2Ugd2l0aCB0cnVzdGVkLCB2YWxpZGF0ZWQgaW5wdXQuCiAqCiAqIEZvciB1c2VyLXByb3ZpZGVkIHZhbHVlcywgdXNlIHN0YW5kYXJkIGNvbmRpdGlvbiBmdW5jdGlvbnMgd2l0aCBwYXJhbSgpOgogKiBgYGBwaHAKICogLy8gVU5TQUZFIC0gU1FMIGluamVjdGlvbiBwb3NzaWJsZToKICogcmF3X2NvbmQoInN0YXR1cyA9ICciIC4gJHVzZXJJbnB1dCAuICInIikKICoKICogLy8gU0FGRSAtIHVzZSB0eXBlZCBjb25kaXRpb25zOgogKiBlcShjb2woJ3N0YXR1cycpLCBwYXJhbSgxKSkKICogYGBgCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1452,"slug":"cond-true","name":"cond_true","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"RawCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFRSVUUgY29uZGl0aW9uIGZvciBXSEVSRSBjbGF1c2VzLgogKgogKiBVc2VmdWwgd2hlbiB5b3UgbmVlZCBhIGNvbmRpdGlvbiB0aGF0IGFsd2F5cyBldmFsdWF0ZXMgdG8gdHJ1ZS4KICoKICogRXhhbXBsZTogc2VsZWN0KGxpdGVyYWwoMSkpLT53aGVyZShjb25kX3RydWUoKSkgLy8gU0VMRUNUIDEgV0hFUkUgdHJ1ZQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1466,"slug":"cond-false","name":"cond_false","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"RawCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEZBTFNFIGNvbmRpdGlvbiBmb3IgV0hFUkUgY2xhdXNlcy4KICoKICogVXNlZnVsIHdoZW4geW91IG5lZWQgYSBjb25kaXRpb24gdGhhdCBhbHdheXMgZXZhbHVhdGVzIHRvIGZhbHNlLAogKiB0eXBpY2FsbHkgZm9yIHRlc3Rpbmcgb3IgdG8gcmV0dXJuIGFuIGVtcHR5IHJlc3VsdCBzZXQuCiAqCiAqIEV4YW1wbGU6IHNlbGVjdChsaXRlcmFsKDEpKS0+d2hlcmUoY29uZF9mYWxzZSgpKSAvLyBTRUxFQ1QgMSBXSEVSRSBmYWxzZQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1478,"slug":"json-contains","name":"json_contains","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"left","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"right","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OperatorCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEpTT05CIGNvbnRhaW5zIGNvbmRpdGlvbiAoQD4pLgogKgogKiBFeGFtcGxlOiBqc29uX2NvbnRhaW5zKGNvbCgnbWV0YWRhdGEnKSwgbGl0ZXJhbF9qc29uKCd7ImNhdGVnb3J5IjogImVsZWN0cm9uaWNzIn0nKSkKICogUHJvZHVjZXM6IG1ldGFkYXRhIEA+ICd7ImNhdGVnb3J5IjogImVsZWN0cm9uaWNzIn0nCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1490,"slug":"json-contained-by","name":"json_contained_by","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"left","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"right","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OperatorCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEpTT05CIGlzIGNvbnRhaW5lZCBieSBjb25kaXRpb24gKDxAKS4KICoKICogRXhhbXBsZToganNvbl9jb250YWluZWRfYnkoY29sKCdtZXRhZGF0YScpLCBsaXRlcmFsX2pzb24oJ3siY2F0ZWdvcnkiOiAiZWxlY3Ryb25pY3MiLCAicHJpY2UiOiAxMDB9JykpCiAqIFByb2R1Y2VzOiBtZXRhZGF0YSA8QCAneyJjYXRlZ29yeSI6ICJlbGVjdHJvbmljcyIsICJwcmljZSI6IDEwMH0nCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1503,"slug":"json-get","name":"json_get","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"key","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"BinaryExpression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEpTT04gZmllbGQgYWNjZXNzIGV4cHJlc3Npb24gKC0+KS4KICogUmV0dXJucyBKU09OLgogKgogKiBFeGFtcGxlOiBqc29uX2dldChjb2woJ21ldGFkYXRhJyksIGxpdGVyYWxfc3RyaW5nKCdjYXRlZ29yeScpKQogKiBQcm9kdWNlczogbWV0YWRhdGEgLT4gJ2NhdGVnb3J5JwogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1516,"slug":"json-get-text","name":"json_get_text","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"key","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"BinaryExpression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEpTT04gZmllbGQgYWNjZXNzIGV4cHJlc3Npb24gKC0+PikuCiAqIFJldHVybnMgdGV4dC4KICoKICogRXhhbXBsZToganNvbl9nZXRfdGV4dChjb2woJ21ldGFkYXRhJyksIGxpdGVyYWxfc3RyaW5nKCduYW1lJykpCiAqIFByb2R1Y2VzOiBtZXRhZGF0YSAtPj4gJ25hbWUnCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1529,"slug":"json-path","name":"json_path","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"path","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"BinaryExpression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEpTT04gcGF0aCBhY2Nlc3MgZXhwcmVzc2lvbiAoIz4pLgogKiBSZXR1cm5zIEpTT04uCiAqCiAqIEV4YW1wbGU6IGpzb25fcGF0aChjb2woJ21ldGFkYXRhJyksIGxpdGVyYWxfc3RyaW5nKCd7Y2F0ZWdvcnksbmFtZX0nKSkKICogUHJvZHVjZXM6IG1ldGFkYXRhICM+ICd7Y2F0ZWdvcnksbmFtZX0nCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1542,"slug":"json-path-text","name":"json_path_text","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"path","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"BinaryExpression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEpTT04gcGF0aCBhY2Nlc3MgZXhwcmVzc2lvbiAoIz4+KS4KICogUmV0dXJucyB0ZXh0LgogKgogKiBFeGFtcGxlOiBqc29uX3BhdGhfdGV4dChjb2woJ21ldGFkYXRhJyksIGxpdGVyYWxfc3RyaW5nKCd7Y2F0ZWdvcnksbmFtZX0nKSkKICogUHJvZHVjZXM6IG1ldGFkYXRhICM+PiAne2NhdGVnb3J5LG5hbWV9JwogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1554,"slug":"json-exists","name":"json_exists","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"key","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OperatorCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEpTT05CIGtleSBleGlzdHMgY29uZGl0aW9uICg\/KS4KICoKICogRXhhbXBsZToganNvbl9leGlzdHMoY29sKCdtZXRhZGF0YScpLCBsaXRlcmFsX3N0cmluZygnY2F0ZWdvcnknKSkKICogUHJvZHVjZXM6IG1ldGFkYXRhID8gJ2NhdGVnb3J5JwogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1566,"slug":"json-exists-any","name":"json_exists_any","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"keys","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OperatorCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEpTT05CIGFueSBrZXkgZXhpc3RzIGNvbmRpdGlvbiAoP3wpLgogKgogKiBFeGFtcGxlOiBqc29uX2V4aXN0c19hbnkoY29sKCdtZXRhZGF0YScpLCByYXdfZXhwcigiYXJyYXlbJ2NhdGVnb3J5JywgJ25hbWUnXSIpKQogKiBQcm9kdWNlczogbWV0YWRhdGEgP3wgYXJyYXlbJ2NhdGVnb3J5JywgJ25hbWUnXQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1578,"slug":"json-exists-all","name":"json_exists_all","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"keys","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OperatorCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEpTT05CIGFsbCBrZXlzIGV4aXN0IGNvbmRpdGlvbiAoPyYpLgogKgogKiBFeGFtcGxlOiBqc29uX2V4aXN0c19hbGwoY29sKCdtZXRhZGF0YScpLCByYXdfZXhwcigiYXJyYXlbJ2NhdGVnb3J5JywgJ25hbWUnXSIpKQogKiBQcm9kdWNlczogbWV0YWRhdGEgPyYgYXJyYXlbJ2NhdGVnb3J5JywgJ25hbWUnXQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1590,"slug":"array-contains","name":"array_contains","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"left","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"right","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OperatorCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBhcnJheSBjb250YWlucyBjb25kaXRpb24gKEA+KS4KICoKICogRXhhbXBsZTogYXJyYXlfY29udGFpbnMoY29sKCd0YWdzJyksIHJhd19leHByKCJBUlJBWVsnc2FsZSddIikpCiAqIFByb2R1Y2VzOiB0YWdzIEA+IEFSUkFZWydzYWxlJ10KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1602,"slug":"array-contained-by","name":"array_contained_by","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"left","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"right","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OperatorCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBhcnJheSBpcyBjb250YWluZWQgYnkgY29uZGl0aW9uICg8QCkuCiAqCiAqIEV4YW1wbGU6IGFycmF5X2NvbnRhaW5lZF9ieShjb2woJ3RhZ3MnKSwgcmF3X2V4cHIoIkFSUkFZWydzYWxlJywgJ2ZlYXR1cmVkJywgJ25ldyddIikpCiAqIFByb2R1Y2VzOiB0YWdzIDxAIEFSUkFZWydzYWxlJywgJ2ZlYXR1cmVkJywgJ25ldyddCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1614,"slug":"array-overlap","name":"array_overlap","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"left","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"right","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OperatorCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBhcnJheSBvdmVybGFwIGNvbmRpdGlvbiAoJiYpLgogKgogKiBFeGFtcGxlOiBhcnJheV9vdmVybGFwKGNvbCgndGFncycpLCByYXdfZXhwcigiQVJSQVlbJ3NhbGUnLCAnZmVhdHVyZWQnXSIpKQogKiBQcm9kdWNlczogdGFncyAmJiBBUlJBWVsnc2FsZScsICdmZWF0dXJlZCddCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1628,"slug":"regex-match","name":"regex_match","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"pattern","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OperatorCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFBPU0lYIHJlZ2V4IG1hdGNoIGNvbmRpdGlvbiAofikuCiAqIENhc2Utc2Vuc2l0aXZlLgogKgogKiBFeGFtcGxlOiByZWdleF9tYXRjaChjb2woJ2VtYWlsJyksIGxpdGVyYWxfc3RyaW5nKCcuKkBnbWFpbFxcLmNvbScpKQogKgogKiBQcm9kdWNlczogZW1haWwgfiAnLipAZ21haWxcLmNvbScKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1642,"slug":"regex-imatch","name":"regex_imatch","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"pattern","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OperatorCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFBPU0lYIHJlZ2V4IG1hdGNoIGNvbmRpdGlvbiAofiopLgogKiBDYXNlLWluc2Vuc2l0aXZlLgogKgogKiBFeGFtcGxlOiByZWdleF9pbWF0Y2goY29sKCdlbWFpbCcpLCBsaXRlcmFsX3N0cmluZygnLipAZ21haWxcXC5jb20nKSkKICoKICogUHJvZHVjZXM6IGVtYWlsIH4qICcuKkBnbWFpbFwuY29tJwogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1656,"slug":"not-regex-match","name":"not_regex_match","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"pattern","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OperatorCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFBPU0lYIHJlZ2V4IG5vdCBtYXRjaCBjb25kaXRpb24gKCF+KS4KICogQ2FzZS1zZW5zaXRpdmUuCiAqCiAqIEV4YW1wbGU6IG5vdF9yZWdleF9tYXRjaChjb2woJ2VtYWlsJyksIGxpdGVyYWxfc3RyaW5nKCcuKkBzcGFtXFwuY29tJykpCiAqCiAqIFByb2R1Y2VzOiBlbWFpbCAhfiAnLipAc3BhbVwuY29tJwogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1670,"slug":"not-regex-imatch","name":"not_regex_imatch","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"pattern","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OperatorCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFBPU0lYIHJlZ2V4IG5vdCBtYXRjaCBjb25kaXRpb24gKCF+KikuCiAqIENhc2UtaW5zZW5zaXRpdmUuCiAqCiAqIEV4YW1wbGU6IG5vdF9yZWdleF9pbWF0Y2goY29sKCdlbWFpbCcpLCBsaXRlcmFsX3N0cmluZygnLipAc3BhbVxcLmNvbScpKQogKgogKiBQcm9kdWNlczogZW1haWwgIX4qICcuKkBzcGFtXC5jb20nCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1682,"slug":"text-search-match","name":"text_search_match","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"document","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"query","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OperatorCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGZ1bGwtdGV4dCBzZWFyY2ggbWF0Y2ggY29uZGl0aW9uIChAQCkuCiAqCiAqIEV4YW1wbGU6IHRleHRfc2VhcmNoX21hdGNoKGNvbCgnZG9jdW1lbnQnKSwgcmF3X2V4cHIoInRvX3RzcXVlcnkoJ2VuZ2xpc2gnLCAnaGVsbG8gJiB3b3JsZCcpIikpCiAqIFByb2R1Y2VzOiBkb2N1bWVudCBAQCB0b190c3F1ZXJ5KCdlbmdsaXNoJywgJ2hlbGxvICYgd29ybGQnKQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1697,"slug":"table","name":"table","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"schema","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Table","namespace":"Flow\\PostgreSql\\QueryBuilder\\Table","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHRhYmxlIHJlZmVyZW5jZS4KICoKICogU3VwcG9ydHMgZG90IG5vdGF0aW9uIGZvciBzY2hlbWEtcXVhbGlmaWVkIG5hbWVzOiAicHVibGljLnVzZXJzIiBvciBleHBsaWNpdCBzY2hlbWEgcGFyYW1ldGVyLgogKiBEb3VibGUtcXVvdGVkIGlkZW50aWZpZXJzIHByZXNlcnZlIGRvdHM6ICcibXkudGFibGUiJyBjcmVhdGVzIGEgc2luZ2xlIGlkZW50aWZpZXIuCiAqCiAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgVGFibGUgbmFtZSAobWF5IGluY2x1ZGUgc2NoZW1hIGFzICJzY2hlbWEudGFibGUiKQogKiBAcGFyYW0gbnVsbHxzdHJpbmcgJHNjaGVtYSBTY2hlbWEgbmFtZSAob3B0aW9uYWwsIG92ZXJyaWRlcyBwYXJzZWQgc2NoZW1hKQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1712,"slug":"derived","name":"derived","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"query","type":[{"name":"SelectFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Select","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"alias","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"DerivedTable","namespace":"Flow\\PostgreSql\\QueryBuilder\\Table","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGRlcml2ZWQgdGFibGUgKHN1YnF1ZXJ5IGluIEZST00gY2xhdXNlKS4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1726,"slug":"lateral","name":"lateral","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"reference","type":[{"name":"TableReference","namespace":"Flow\\PostgreSql\\QueryBuilder\\Table","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Lateral","namespace":"Flow\\PostgreSql\\QueryBuilder\\Table","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIExBVEVSQUwgc3VicXVlcnkuCiAqCiAqIEBwYXJhbSBUYWJsZVJlZmVyZW5jZSAkcmVmZXJlbmNlIFRoZSBzdWJxdWVyeSBvciB0YWJsZSBmdW5jdGlvbiByZWZlcmVuY2UKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1738,"slug":"table-func","name":"table_func","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"function","type":[{"name":"FunctionCall","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"withOrdinality","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"TableFunction","namespace":"Flow\\PostgreSql\\QueryBuilder\\Table","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHRhYmxlIGZ1bmN0aW9uIHJlZmVyZW5jZS4KICoKICogQHBhcmFtIEZ1bmN0aW9uQ2FsbCAkZnVuY3Rpb24gVGhlIHRhYmxlLXZhbHVlZCBmdW5jdGlvbgogKiBAcGFyYW0gYm9vbCAkd2l0aE9yZGluYWxpdHkgV2hldGhlciB0byBhZGQgV0lUSCBPUkRJTkFMSVRZCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1757,"slug":"values-table","name":"values_table","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"rows","type":[{"name":"RowExpression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"ValuesTable","namespace":"Flow\\PostgreSql\\QueryBuilder\\Table","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFZBTFVFUyBjbGF1c2UgYXMgYSB0YWJsZSByZWZlcmVuY2UuCiAqCiAqIFVzYWdlOgogKiAgIHNlbGVjdCgpLT5mcm9tKAogKiAgICAgICB2YWx1ZXNfdGFibGUoCiAqICAgICAgICAgICByb3dfZXhwcihbbGl0ZXJhbCgxKSwgbGl0ZXJhbCgnQWxpY2UnKV0pLAogKiAgICAgICAgICAgcm93X2V4cHIoW2xpdGVyYWwoMiksIGxpdGVyYWwoJ0JvYicpXSkKICogICAgICAgKS0+YXMoJ3QnLCBbJ2lkJywgJ25hbWUnXSkKICogICApCiAqCiAqIEdlbmVyYXRlczogU0VMRUNUICogRlJPTSAoVkFMVUVTICgxLCAnQWxpY2UnKSwgKDIsICdCb2InKSkgQVMgdChpZCwgbmFtZSkKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1766,"slug":"order-by","name":"order_by","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"direction","type":[{"name":"SortDirection","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\PostgreSql\\QueryBuilder\\Clause\\SortDirection::..."},{"name":"nulls","type":[{"name":"NullsPosition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\PostgreSql\\QueryBuilder\\Clause\\NullsPosition::..."}],"return_type":[{"name":"OrderBy","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBPUkRFUiBCWSBpdGVtLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1778,"slug":"asc","name":"asc","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nulls","type":[{"name":"NullsPosition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\PostgreSql\\QueryBuilder\\Clause\\NullsPosition::..."}],"return_type":[{"name":"OrderBy","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBPUkRFUiBCWSBpdGVtIHdpdGggQVNDIGRpcmVjdGlvbi4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1787,"slug":"desc","name":"desc","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nulls","type":[{"name":"NullsPosition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\PostgreSql\\QueryBuilder\\Clause\\NullsPosition::..."}],"return_type":[{"name":"OrderBy","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBPUkRFUiBCWSBpdGVtIHdpdGggREVTQyBkaXJlY3Rpb24uCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1801,"slug":"cte","name":"cte","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"query","type":[{"name":"SelectFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Select","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"columnNames","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"materialization","type":[{"name":"CTEMaterialization","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\PostgreSql\\QueryBuilder\\Clause\\CTEMaterialization::..."},{"name":"recursive","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"CTE","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIENURSAoQ29tbW9uIFRhYmxlIEV4cHJlc3Npb24pLgogKgogKiBAcGFyYW0gc3RyaW5nICRuYW1lIENURSBuYW1lCiAqIEBwYXJhbSBTZWxlY3RGaW5hbFN0ZXAgJHF1ZXJ5IENURSBxdWVyeQogKiBAcGFyYW0gYXJyYXk8c3RyaW5nPiAkY29sdW1uTmFtZXMgQ29sdW1uIGFsaWFzZXMgKG9wdGlvbmFsKQogKiBAcGFyYW0gQ1RFTWF0ZXJpYWxpemF0aW9uICRtYXRlcmlhbGl6YXRpb24gTWF0ZXJpYWxpemF0aW9uIGhpbnQKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1823,"slug":"window-def","name":"window_def","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"partitionBy","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"orderBy","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"frame","type":[{"name":"WindowFrame","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"WindowDefinition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHdpbmRvdyBkZWZpbml0aW9uIGZvciBXSU5ET1cgY2xhdXNlLgogKgogKiBAcGFyYW0gc3RyaW5nICRuYW1lIFdpbmRvdyBuYW1lCiAqIEBwYXJhbSBsaXN0PEV4cHJlc3Npb24+ICRwYXJ0aXRpb25CeSBQQVJUSVRJT04gQlkgZXhwcmVzc2lvbnMKICogQHBhcmFtIGxpc3Q8T3JkZXJCeT4gJG9yZGVyQnkgT1JERVIgQlkgaXRlbXMKICogQHBhcmFtIG51bGx8V2luZG93RnJhbWUgJGZyYW1lIFdpbmRvdyBmcmFtZSBzcGVjaWZpY2F0aW9uCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1836,"slug":"window-frame","name":"window_frame","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"mode","type":[{"name":"FrameMode","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"start","type":[{"name":"FrameBound","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"end","type":[{"name":"FrameBound","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"exclusion","type":[{"name":"FrameExclusion","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\PostgreSql\\QueryBuilder\\Clause\\FrameExclusion::..."}],"return_type":[{"name":"WindowFrame","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHdpbmRvdyBmcmFtZSBzcGVjaWZpY2F0aW9uLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1849,"slug":"frame-current-row","name":"frame_current_row","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"FrameBound","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGZyYW1lIGJvdW5kIGZvciBDVVJSRU5UIFJPVy4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1858,"slug":"frame-unbounded-preceding","name":"frame_unbounded_preceding","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"FrameBound","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGZyYW1lIGJvdW5kIGZvciBVTkJPVU5ERUQgUFJFQ0VESU5HLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1867,"slug":"frame-unbounded-following","name":"frame_unbounded_following","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"FrameBound","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGZyYW1lIGJvdW5kIGZvciBVTkJPVU5ERUQgRk9MTE9XSU5HLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1876,"slug":"frame-preceding","name":"frame_preceding","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"offset","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"FrameBound","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGZyYW1lIGJvdW5kIGZvciBOIFBSRUNFRElORy4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1885,"slug":"frame-following","name":"frame_following","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"offset","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"FrameBound","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGZyYW1lIGJvdW5kIGZvciBOIEZPTExPV0lORy4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1898,"slug":"lock-for","name":"lock_for","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"strength","type":[{"name":"LockStrength","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"tables","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"waitPolicy","type":[{"name":"LockWaitPolicy","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\PostgreSql\\QueryBuilder\\Clause\\LockWaitPolicy::..."}],"return_type":[{"name":"LockingClause","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGxvY2tpbmcgY2xhdXNlIChGT1IgVVBEQVRFLCBGT1IgU0hBUkUsIGV0Yy4pLgogKgogKiBAcGFyYW0gTG9ja1N0cmVuZ3RoICRzdHJlbmd0aCBMb2NrIHN0cmVuZ3RoCiAqIEBwYXJhbSBsaXN0PHN0cmluZz4gJHRhYmxlcyBUYWJsZXMgdG8gbG9jayAoZW1wdHkgZm9yIGFsbCkKICogQHBhcmFtIExvY2tXYWl0UG9saWN5ICR3YWl0UG9saWN5IFdhaXQgcG9saWN5CiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1912,"slug":"for-update","name":"for_update","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"tables","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"LockingClause","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEZPUiBVUERBVEUgbG9ja2luZyBjbGF1c2UuCiAqCiAqIEBwYXJhbSBsaXN0PHN0cmluZz4gJHRhYmxlcyBUYWJsZXMgdG8gbG9jayAoZW1wdHkgZm9yIGFsbCkKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1923,"slug":"for-share","name":"for_share","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"tables","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"LockingClause","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEZPUiBTSEFSRSBsb2NraW5nIGNsYXVzZS4KICoKICogQHBhcmFtIGxpc3Q8c3RyaW5nPiAkdGFibGVzIFRhYmxlcyB0byBsb2NrIChlbXB0eSBmb3IgYWxsKQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1932,"slug":"on-conflict-nothing","name":"on_conflict_nothing","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"target","type":[{"name":"ConflictTarget","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"OnConflictClause","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBPTiBDT05GTElDVCBETyBOT1RISU5HIGNsYXVzZS4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1944,"slug":"on-conflict-update","name":"on_conflict_update","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"target","type":[{"name":"ConflictTarget","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"updates","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OnConflictClause","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBPTiBDT05GTElDVCBETyBVUERBVEUgY2xhdXNlLgogKgogKiBAcGFyYW0gQ29uZmxpY3RUYXJnZXQgJHRhcmdldCBDb25mbGljdCB0YXJnZXQgKGNvbHVtbnMgb3IgY29uc3RyYWludCkKICogQHBhcmFtIGFycmF5PHN0cmluZywgRXhwcmVzc2lvbj4gJHVwZGF0ZXMgQ29sdW1uIHVwZGF0ZXMKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1955,"slug":"conflict-columns","name":"conflict_columns","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"columns","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ConflictTarget","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGNvbmZsaWN0IHRhcmdldCBmb3IgT04gQ09ORkxJQ1QgKGNvbHVtbnMpLgogKgogKiBAcGFyYW0gbGlzdDxzdHJpbmc+ICRjb2x1bW5zIENvbHVtbnMgdGhhdCBkZWZpbmUgdW5pcXVlbmVzcwogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1964,"slug":"conflict-constraint","name":"conflict_constraint","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ConflictTarget","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGNvbmZsaWN0IHRhcmdldCBmb3IgT04gQ09ORkxJQ1QgT04gQ09OU1RSQUlOVC4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1975,"slug":"returning","name":"returning","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expressions","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"ReturningClause","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFJFVFVSTklORyBjbGF1c2UuCiAqCiAqIEBwYXJhbSBFeHByZXNzaW9uIC4uLiRleHByZXNzaW9ucyBFeHByZXNzaW9ucyB0byByZXR1cm4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1984,"slug":"returning-all","name":"returning_all","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"ReturningClause","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFJFVFVSTklORyAqIGNsYXVzZS4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1996,"slug":"begin","name":"begin","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"BeginOptionsStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Transaction","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEJFR0lOIHRyYW5zYWN0aW9uIGJ1aWxkZXIuCiAqCiAqIEV4YW1wbGU6IGJlZ2luKCktPmlzb2xhdGlvbkxldmVsKElzb2xhdGlvbkxldmVsOjpTRVJJQUxJWkFCTEUpLT5yZWFkT25seSgpCiAqIFByb2R1Y2VzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFIFJFQUQgT05MWQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2008,"slug":"commit","name":"commit","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"CommitOptionsStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Transaction","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIENPTU1JVCB0cmFuc2FjdGlvbiBidWlsZGVyLgogKgogKiBFeGFtcGxlOiBjb21taXQoKS0+YW5kQ2hhaW4oKQogKiBQcm9kdWNlczogQ09NTUlUIEFORCBDSEFJTgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2020,"slug":"rollback","name":"rollback","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"RollbackOptionsStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Transaction","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFJPTExCQUNLIHRyYW5zYWN0aW9uIGJ1aWxkZXIuCiAqCiAqIEV4YW1wbGU6IHJvbGxiYWNrKCktPnRvU2F2ZXBvaW50KCdteV9zYXZlcG9pbnQnKQogKiBQcm9kdWNlczogUk9MTEJBQ0sgVE8gU0FWRVBPSU5UIG15X3NhdmVwb2ludAogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2032,"slug":"savepoint","name":"savepoint","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"SavepointFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Transaction","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFNBVkVQT0lOVC4KICoKICogRXhhbXBsZTogc2F2ZXBvaW50KCdteV9zYXZlcG9pbnQnKQogKiBQcm9kdWNlczogU0FWRVBPSU5UIG15X3NhdmVwb2ludAogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2044,"slug":"release-savepoint","name":"release_savepoint","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"SavepointFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Transaction","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFJlbGVhc2UgYSBTQVZFUE9JTlQuCiAqCiAqIEV4YW1wbGU6IHJlbGVhc2Vfc2F2ZXBvaW50KCdteV9zYXZlcG9pbnQnKQogKiBQcm9kdWNlczogUkVMRUFTRSBteV9zYXZlcG9pbnQKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2056,"slug":"set-transaction","name":"set_transaction","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"SetTransactionOptionsStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Transaction","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFNFVCBUUkFOU0FDVElPTiBidWlsZGVyLgogKgogKiBFeGFtcGxlOiBzZXRfdHJhbnNhY3Rpb24oKS0+aXNvbGF0aW9uTGV2ZWwoSXNvbGF0aW9uTGV2ZWw6OlNFUklBTElaQUJMRSktPnJlYWRPbmx5KCkKICogUHJvZHVjZXM6IFNFVCBUUkFOU0FDVElPTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFLCBSRUFEIE9OTFkKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2068,"slug":"set-session-transaction","name":"set_session_transaction","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"SetTransactionOptionsStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Transaction","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFNFVCBTRVNTSU9OIENIQVJBQ1RFUklTVElDUyBBUyBUUkFOU0FDVElPTiBidWlsZGVyLgogKgogKiBFeGFtcGxlOiBzZXRfc2Vzc2lvbl90cmFuc2FjdGlvbigpLT5pc29sYXRpb25MZXZlbChJc29sYXRpb25MZXZlbDo6U0VSSUFMSVpBQkxFKQogKiBQcm9kdWNlczogU0VUIFNFU1NJT04gQ0hBUkFDVEVSSVNUSUNTIEFTIFRSQU5TQUNUSU9OIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEUKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2080,"slug":"transaction-snapshot","name":"transaction_snapshot","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"snapshotId","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"SetTransactionFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Transaction","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFNFVCBUUkFOU0FDVElPTiBTTkFQU0hPVCBidWlsZGVyLgogKgogKiBFeGFtcGxlOiB0cmFuc2FjdGlvbl9zbmFwc2hvdCgnMDAwMDAwMDMtMDAwMDAwMUEtMScpCiAqIFByb2R1Y2VzOiBTRVQgVFJBTlNBQ1RJT04gU05BUFNIT1QgJzAwMDAwMDAzLTAwMDAwMDFBLTEnCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2092,"slug":"prepare-transaction","name":"prepare_transaction","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"transactionId","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"PreparedTransactionFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Transaction","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFBSRVBBUkUgVFJBTlNBQ1RJT04gYnVpbGRlci4KICoKICogRXhhbXBsZTogcHJlcGFyZV90cmFuc2FjdGlvbignbXlfdHJhbnNhY3Rpb24nKQogKiBQcm9kdWNlczogUFJFUEFSRSBUUkFOU0FDVElPTiAnbXlfdHJhbnNhY3Rpb24nCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2104,"slug":"commit-prepared","name":"commit_prepared","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"transactionId","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"PreparedTransactionFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Transaction","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIENPTU1JVCBQUkVQQVJFRCBidWlsZGVyLgogKgogKiBFeGFtcGxlOiBjb21taXRfcHJlcGFyZWQoJ215X3RyYW5zYWN0aW9uJykKICogUHJvZHVjZXM6IENPTU1JVCBQUkVQQVJFRCAnbXlfdHJhbnNhY3Rpb24nCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2116,"slug":"rollback-prepared","name":"rollback_prepared","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"transactionId","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"PreparedTransactionFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Transaction","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFJPTExCQUNLIFBSRVBBUkVEIGJ1aWxkZXIuCiAqCiAqIEV4YW1wbGU6IHJvbGxiYWNrX3ByZXBhcmVkKCdteV90cmFuc2FjdGlvbicpCiAqIFByb2R1Y2VzOiBST0xMQkFDSyBQUkVQQVJFRCAnbXlfdHJhbnNhY3Rpb24nCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2139,"slug":"declare-cursor","name":"declare_cursor","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"cursorName","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"query","type":[{"name":"SelectFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Select","is_nullable":false,"is_variadic":false},{"name":"SqlQuery","namespace":"Flow\\PostgreSql\\QueryBuilder","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"DeclareCursorOptionsStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Cursor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIERlY2xhcmUgYSBzZXJ2ZXItc2lkZSBjdXJzb3IgZm9yIGEgcXVlcnkuCiAqCiAqIEN1cnNvcnMgbXVzdCBiZSBkZWNsYXJlZCB3aXRoaW4gYSB0cmFuc2FjdGlvbiBhbmQgcHJvdmlkZSBtZW1vcnktZWZmaWNpZW50CiAqIGl0ZXJhdGlvbiBvdmVyIGxhcmdlIHJlc3VsdCBzZXRzIHZpYSBGRVRDSCBjb21tYW5kcy4KICoKICogRXhhbXBsZSB3aXRoIHF1ZXJ5IGJ1aWxkZXI6CiAqICAgZGVjbGFyZV9jdXJzb3IoJ215X2N1cnNvcicsIHNlbGVjdChzdGFyKCkpLT5mcm9tKHRhYmxlKCd1c2VycycpKSktPm5vU2Nyb2xsKCkKICogICBQcm9kdWNlczogREVDTEFSRSBteV9jdXJzb3IgTk8gU0NST0xMIENVUlNPUiBGT1IgU0VMRUNUICogRlJPTSB1c2VycwogKgogKiBFeGFtcGxlIHdpdGggcmF3IFNRTDoKICogICBkZWNsYXJlX2N1cnNvcignbXlfY3Vyc29yJywgJ1NFTEVDVCAqIEZST00gdXNlcnMgV0hFUkUgYWN0aXZlID0gdHJ1ZScpLT53aXRoSG9sZCgpCiAqICAgUHJvZHVjZXM6IERFQ0xBUkUgbXlfY3Vyc29yIE5PIFNDUk9MTCBDVVJTT1IgV0lUSCBIT0xEIEZPUiBTRUxFQ1QgKiBGUk9NIHVzZXJzIFdIRVJFIGFjdGl2ZSA9IHRydWUKICoKICogQHBhcmFtIHN0cmluZyAkY3Vyc29yTmFtZSBVbmlxdWUgY3Vyc29yIG5hbWUKICogQHBhcmFtIFNlbGVjdEZpbmFsU3RlcHxTcWxRdWVyeXxzdHJpbmcgJHF1ZXJ5IFF1ZXJ5IHRvIGl0ZXJhdGUgb3ZlcgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2160,"slug":"fetch","name":"fetch","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"cursorName","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"FetchCursorBuilder","namespace":"Flow\\PostgreSql\\QueryBuilder\\Cursor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEZldGNoIHJvd3MgZnJvbSBhIGN1cnNvci4KICoKICogRXhhbXBsZTogZmV0Y2goJ215X2N1cnNvcicpLT5mb3J3YXJkKDEwMCkKICogUHJvZHVjZXM6IEZFVENIIEZPUldBUkQgMTAwIG15X2N1cnNvcgogKgogKiBFeGFtcGxlOiBmZXRjaCgnbXlfY3Vyc29yJyktPmFsbCgpCiAqIFByb2R1Y2VzOiBGRVRDSCBBTEwgbXlfY3Vyc29yCiAqCiAqIEBwYXJhbSBzdHJpbmcgJGN1cnNvck5hbWUgQ3Vyc29yIHRvIGZldGNoIGZyb20KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2177,"slug":"close-cursor","name":"close_cursor","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"cursorName","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"CloseCursorFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Cursor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENsb3NlIGEgY3Vyc29yLgogKgogKiBFeGFtcGxlOiBjbG9zZV9jdXJzb3IoJ215X2N1cnNvcicpCiAqIFByb2R1Y2VzOiBDTE9TRSBteV9jdXJzb3IKICoKICogRXhhbXBsZTogY2xvc2VfY3Vyc29yKCkgLSBjbG9zZXMgYWxsIGN1cnNvcnMKICogUHJvZHVjZXM6IENMT1NFIEFMTAogKgogKiBAcGFyYW0gbnVsbHxzdHJpbmcgJGN1cnNvck5hbWUgQ3Vyc29yIHRvIGNsb3NlLCBvciBudWxsIHRvIGNsb3NlIGFsbAogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2193,"slug":"column","name":"column","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"type","type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ColumnDefinition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGNvbHVtbiBkZWZpbml0aW9uIGZvciBDUkVBVEUgVEFCTEUuCiAqCiAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgQ29sdW1uIG5hbWUKICogQHBhcmFtIERhdGFUeXBlICR0eXBlIENvbHVtbiBkYXRhIHR5cGUKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2204,"slug":"primary-key","name":"primary_key","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"columns","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"PrimaryKeyConstraint","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Constraint","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFBSSU1BUlkgS0VZIGNvbnN0cmFpbnQuCiAqCiAqIEBwYXJhbSBzdHJpbmcgLi4uJGNvbHVtbnMgQ29sdW1ucyB0aGF0IGZvcm0gdGhlIHByaW1hcnkga2V5CiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2215,"slug":"unique-constraint","name":"unique_constraint","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"columns","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"UniqueConstraint","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Constraint","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFVOSVFVRSBjb25zdHJhaW50LgogKgogKiBAcGFyYW0gc3RyaW5nIC4uLiRjb2x1bW5zIENvbHVtbnMgdGhhdCBtdXN0IGJlIHVuaXF1ZSB0b2dldGhlcgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2228,"slug":"foreign-key","name":"foreign_key","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"columns","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"referenceTable","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"referenceColumns","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"ForeignKeyConstraint","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Constraint","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEZPUkVJR04gS0VZIGNvbnN0cmFpbnQuCiAqCiAqIEBwYXJhbSBsaXN0PHN0cmluZz4gJGNvbHVtbnMgTG9jYWwgY29sdW1ucwogKiBAcGFyYW0gc3RyaW5nICRyZWZlcmVuY2VUYWJsZSBSZWZlcmVuY2VkIHRhYmxlCiAqIEBwYXJhbSBsaXN0PHN0cmluZz4gJHJlZmVyZW5jZUNvbHVtbnMgUmVmZXJlbmNlZCBjb2x1bW5zIChkZWZhdWx0cyB0byBzYW1lIGFzICRjb2x1bW5zIGlmIGVtcHR5KQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2239,"slug":"check-constraint","name":"check_constraint","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expression","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"CheckConstraint","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Constraint","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIENIRUNLIGNvbnN0cmFpbnQuCiAqCiAqIEBwYXJhbSBzdHJpbmcgJGV4cHJlc3Npb24gU1FMIGV4cHJlc3Npb24gdGhhdCBtdXN0IGV2YWx1YXRlIHRvIHRydWUKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2270,"slug":"create","name":"create","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"CreateFactory","namespace":"Flow\\PostgreSql\\QueryBuilder\\Factory","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGZhY3RvcnkgZm9yIGJ1aWxkaW5nIENSRUFURSBzdGF0ZW1lbnRzLgogKgogKiBQcm92aWRlcyBhIHVuaWZpZWQgZW50cnkgcG9pbnQgZm9yIGFsbCBDUkVBVEUgb3BlcmF0aW9uczoKICogLSBjcmVhdGUoKS0+dGFibGUoKSAtIENSRUFURSBUQUJMRQogKiAtIGNyZWF0ZSgpLT50YWJsZUFzKCkgLSBDUkVBVEUgVEFCTEUgQVMKICogLSBjcmVhdGUoKS0+aW5kZXgoKSAtIENSRUFURSBJTkRFWAogKiAtIGNyZWF0ZSgpLT52aWV3KCkgLSBDUkVBVEUgVklFVwogKiAtIGNyZWF0ZSgpLT5tYXRlcmlhbGl6ZWRWaWV3KCkgLSBDUkVBVEUgTUFURVJJQUxJWkVEIFZJRVcKICogLSBjcmVhdGUoKS0+c2VxdWVuY2UoKSAtIENSRUFURSBTRVFVRU5DRQogKiAtIGNyZWF0ZSgpLT5zY2hlbWEoKSAtIENSRUFURSBTQ0hFTUEKICogLSBjcmVhdGUoKS0+cm9sZSgpIC0gQ1JFQVRFIFJPTEUKICogLSBjcmVhdGUoKS0+ZnVuY3Rpb24oKSAtIENSRUFURSBGVU5DVElPTgogKiAtIGNyZWF0ZSgpLT5wcm9jZWR1cmUoKSAtIENSRUFURSBQUk9DRURVUkUKICogLSBjcmVhdGUoKS0+dHJpZ2dlcigpIC0gQ1JFQVRFIFRSSUdHRVIKICogLSBjcmVhdGUoKS0+cnVsZSgpIC0gQ1JFQVRFIFJVTEUKICogLSBjcmVhdGUoKS0+ZXh0ZW5zaW9uKCkgLSBDUkVBVEUgRVhURU5TSU9OCiAqIC0gY3JlYXRlKCktPmNvbXBvc2l0ZVR5cGUoKSAtIENSRUFURSBUWVBFIChjb21wb3NpdGUpCiAqIC0gY3JlYXRlKCktPmVudW1UeXBlKCkgLSBDUkVBVEUgVFlQRSAoZW51bSkKICogLSBjcmVhdGUoKS0+cmFuZ2VUeXBlKCkgLSBDUkVBVEUgVFlQRSAocmFuZ2UpCiAqIC0gY3JlYXRlKCktPmRvbWFpbigpIC0gQ1JFQVRFIERPTUFJTgogKgogKiBFeGFtcGxlOiBjcmVhdGUoKS0+dGFibGUoJ3VzZXJzJyktPmNvbHVtbnMoY29sX2RlZignaWQnLCBkYXRhX3R5cGVfc2VyaWFsKCkpKQogKiBFeGFtcGxlOiBjcmVhdGUoKS0+aW5kZXgoJ2lkeF9lbWFpbCcpLT5vbigndXNlcnMnKS0+Y29sdW1ucygnZW1haWwnKQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2299,"slug":"drop","name":"drop","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DropFactory","namespace":"Flow\\PostgreSql\\QueryBuilder\\Factory","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGZhY3RvcnkgZm9yIGJ1aWxkaW5nIERST1Agc3RhdGVtZW50cy4KICoKICogUHJvdmlkZXMgYSB1bmlmaWVkIGVudHJ5IHBvaW50IGZvciBhbGwgRFJPUCBvcGVyYXRpb25zOgogKiAtIGRyb3AoKS0+dGFibGUoKSAtIERST1AgVEFCTEUKICogLSBkcm9wKCktPmluZGV4KCkgLSBEUk9QIElOREVYCiAqIC0gZHJvcCgpLT52aWV3KCkgLSBEUk9QIFZJRVcKICogLSBkcm9wKCktPm1hdGVyaWFsaXplZFZpZXcoKSAtIERST1AgTUFURVJJQUxJWkVEIFZJRVcKICogLSBkcm9wKCktPnNlcXVlbmNlKCkgLSBEUk9QIFNFUVVFTkNFCiAqIC0gZHJvcCgpLT5zY2hlbWEoKSAtIERST1AgU0NIRU1BCiAqIC0gZHJvcCgpLT5yb2xlKCkgLSBEUk9QIFJPTEUKICogLSBkcm9wKCktPmZ1bmN0aW9uKCkgLSBEUk9QIEZVTkNUSU9OCiAqIC0gZHJvcCgpLT5wcm9jZWR1cmUoKSAtIERST1AgUFJPQ0VEVVJFCiAqIC0gZHJvcCgpLT50cmlnZ2VyKCkgLSBEUk9QIFRSSUdHRVIKICogLSBkcm9wKCktPnJ1bGUoKSAtIERST1AgUlVMRQogKiAtIGRyb3AoKS0+ZXh0ZW5zaW9uKCkgLSBEUk9QIEVYVEVOU0lPTgogKiAtIGRyb3AoKS0+dHlwZSgpIC0gRFJPUCBUWVBFCiAqIC0gZHJvcCgpLT5kb21haW4oKSAtIERST1AgRE9NQUlOCiAqIC0gZHJvcCgpLT5vd25lZCgpIC0gRFJPUCBPV05FRAogKgogKiBFeGFtcGxlOiBkcm9wKCktPnRhYmxlKCd1c2VycycsICdvcmRlcnMnKS0+aWZFeGlzdHMoKS0+Y2FzY2FkZSgpCiAqIEV4YW1wbGU6IGRyb3AoKS0+aW5kZXgoJ2lkeF9lbWFpbCcpLT5pZkV4aXN0cygpCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2333,"slug":"alter","name":"alter","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"AlterFactory","namespace":"Flow\\PostgreSql\\QueryBuilder\\Factory","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGZhY3RvcnkgZm9yIGJ1aWxkaW5nIEFMVEVSIHN0YXRlbWVudHMuCiAqCiAqIFByb3ZpZGVzIGEgdW5pZmllZCBlbnRyeSBwb2ludCBmb3IgYWxsIEFMVEVSIG9wZXJhdGlvbnM6CiAqIC0gYWx0ZXIoKS0+dGFibGUoKSAtIEFMVEVSIFRBQkxFCiAqIC0gYWx0ZXIoKS0+aW5kZXgoKSAtIEFMVEVSIElOREVYCiAqIC0gYWx0ZXIoKS0+dmlldygpIC0gQUxURVIgVklFVwogKiAtIGFsdGVyKCktPm1hdGVyaWFsaXplZFZpZXcoKSAtIEFMVEVSIE1BVEVSSUFMSVpFRCBWSUVXCiAqIC0gYWx0ZXIoKS0+c2VxdWVuY2UoKSAtIEFMVEVSIFNFUVVFTkNFCiAqIC0gYWx0ZXIoKS0+c2NoZW1hKCkgLSBBTFRFUiBTQ0hFTUEKICogLSBhbHRlcigpLT5yb2xlKCkgLSBBTFRFUiBST0xFCiAqIC0gYWx0ZXIoKS0+ZnVuY3Rpb24oKSAtIEFMVEVSIEZVTkNUSU9OCiAqIC0gYWx0ZXIoKS0+cHJvY2VkdXJlKCkgLSBBTFRFUiBQUk9DRURVUkUKICogLSBhbHRlcigpLT50cmlnZ2VyKCkgLSBBTFRFUiBUUklHR0VSCiAqIC0gYWx0ZXIoKS0+ZXh0ZW5zaW9uKCkgLSBBTFRFUiBFWFRFTlNJT04KICogLSBhbHRlcigpLT5lbnVtVHlwZSgpIC0gQUxURVIgVFlQRSAoZW51bSkKICogLSBhbHRlcigpLT5kb21haW4oKSAtIEFMVEVSIERPTUFJTgogKgogKiBSZW5hbWUgb3BlcmF0aW9ucyBhcmUgYWxzbyB1bmRlciBhbHRlcigpOgogKiAtIGFsdGVyKCktPmluZGV4KCdvbGQnKS0+cmVuYW1lVG8oJ25ldycpCiAqIC0gYWx0ZXIoKS0+dmlldygnb2xkJyktPnJlbmFtZVRvKCduZXcnKQogKiAtIGFsdGVyKCktPnNjaGVtYSgnb2xkJyktPnJlbmFtZVRvKCduZXcnKQogKiAtIGFsdGVyKCktPnJvbGUoJ29sZCcpLT5yZW5hbWVUbygnbmV3JykKICogLSBhbHRlcigpLT50cmlnZ2VyKCdvbGQnKS0+b24oJ3RhYmxlJyktPnJlbmFtZVRvKCduZXcnKQogKgogKiBFeGFtcGxlOiBhbHRlcigpLT50YWJsZSgndXNlcnMnKS0+YWRkQ29sdW1uKGNvbF9kZWYoJ2VtYWlsJywgZGF0YV90eXBlX3RleHQoKSkpCiAqIEV4YW1wbGU6IGFsdGVyKCktPnNlcXVlbmNlKCd1c2VyX2lkX3NlcScpLT5yZXN0YXJ0KDEwMDApCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2344,"slug":"truncate-table","name":"truncate_table","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"tables","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"TruncateFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Truncate","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFRSVU5DQVRFIFRBQkxFIGJ1aWxkZXIuCiAqCiAqIEBwYXJhbSBzdHJpbmcgLi4uJHRhYmxlcyBUYWJsZSBuYW1lcyB0byB0cnVuY2F0ZQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2362,"slug":"refresh-materialized-view","name":"refresh_materialized_view","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"schema","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"RefreshMatViewOptionsStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\View\\RefreshMaterializedView","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFJFRlJFU0ggTUFURVJJQUxJWkVEIFZJRVcgYnVpbGRlci4KICoKICogRXhhbXBsZTogcmVmcmVzaF9tYXRlcmlhbGl6ZWRfdmlldygndXNlcl9zdGF0cycpCiAqIFByb2R1Y2VzOiBSRUZSRVNIIE1BVEVSSUFMSVpFRCBWSUVXIHVzZXJfc3RhdHMKICoKICogRXhhbXBsZTogcmVmcmVzaF9tYXRlcmlhbGl6ZWRfdmlldygndXNlcl9zdGF0cycpLT5jb25jdXJyZW50bHkoKS0+d2l0aERhdGEoKQogKiBQcm9kdWNlczogUkVGUkVTSCBNQVRFUklBTElaRUQgVklFVyBDT05DVVJSRU5UTFkgdXNlcl9zdGF0cyBXSVRIIERBVEEKICoKICogQHBhcmFtIHN0cmluZyAkbmFtZSBWaWV3IG5hbWUgKG1heSBpbmNsdWRlIHNjaGVtYSBhcyAic2NoZW1hLnZpZXciKQogKiBAcGFyYW0gbnVsbHxzdHJpbmcgJHNjaGVtYSBTY2hlbWEgbmFtZSAob3B0aW9uYWwsIG92ZXJyaWRlcyBwYXJzZWQgc2NoZW1hKQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2371,"slug":"ref-action-cascade","name":"ref_action_cascade","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"ReferentialAction","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEdldCBhIENBU0NBREUgcmVmZXJlbnRpYWwgYWN0aW9uLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2380,"slug":"ref-action-restrict","name":"ref_action_restrict","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"ReferentialAction","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEdldCBhIFJFU1RSSUNUIHJlZmVyZW50aWFsIGFjdGlvbi4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2389,"slug":"ref-action-set-null","name":"ref_action_set_null","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"ReferentialAction","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEdldCBhIFNFVCBOVUxMIHJlZmVyZW50aWFsIGFjdGlvbi4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2398,"slug":"ref-action-set-default","name":"ref_action_set_default","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"ReferentialAction","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEdldCBhIFNFVCBERUZBVUxUIHJlZmVyZW50aWFsIGFjdGlvbi4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2407,"slug":"ref-action-no-action","name":"ref_action_no_action","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"ReferentialAction","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEdldCBhIE5PIEFDVElPTiByZWZlcmVudGlhbCBhY3Rpb24uCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2422,"slug":"reindex-index","name":"reindex_index","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ReindexFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Index\\Reindex","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFN0YXJ0IGJ1aWxkaW5nIGEgUkVJTkRFWCBJTkRFWCBzdGF0ZW1lbnQuCiAqCiAqIFVzZSBjaGFpbmFibGUgbWV0aG9kczogLT5jb25jdXJyZW50bHkoKSwgLT52ZXJib3NlKCksIC0+dGFibGVzcGFjZSgpCiAqCiAqIEV4YW1wbGU6IHJlaW5kZXhfaW5kZXgoJ2lkeF91c2Vyc19lbWFpbCcpLT5jb25jdXJyZW50bHkoKQogKgogKiBAcGFyYW0gc3RyaW5nICRuYW1lIFRoZSBpbmRleCBuYW1lIChtYXkgaW5jbHVkZSBzY2hlbWE6IHNjaGVtYS5pbmRleCkKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2437,"slug":"reindex-table","name":"reindex_table","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ReindexFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Index\\Reindex","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFN0YXJ0IGJ1aWxkaW5nIGEgUkVJTkRFWCBUQUJMRSBzdGF0ZW1lbnQuCiAqCiAqIFVzZSBjaGFpbmFibGUgbWV0aG9kczogLT5jb25jdXJyZW50bHkoKSwgLT52ZXJib3NlKCksIC0+dGFibGVzcGFjZSgpCiAqCiAqIEV4YW1wbGU6IHJlaW5kZXhfdGFibGUoJ3VzZXJzJyktPmNvbmN1cnJlbnRseSgpCiAqCiAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgVGhlIHRhYmxlIG5hbWUgKG1heSBpbmNsdWRlIHNjaGVtYTogc2NoZW1hLnRhYmxlKQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2452,"slug":"reindex-schema","name":"reindex_schema","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ReindexFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Index\\Reindex","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFN0YXJ0IGJ1aWxkaW5nIGEgUkVJTkRFWCBTQ0hFTUEgc3RhdGVtZW50LgogKgogKiBVc2UgY2hhaW5hYmxlIG1ldGhvZHM6IC0+Y29uY3VycmVudGx5KCksIC0+dmVyYm9zZSgpLCAtPnRhYmxlc3BhY2UoKQogKgogKiBFeGFtcGxlOiByZWluZGV4X3NjaGVtYSgncHVibGljJyktPmNvbmN1cnJlbnRseSgpCiAqCiAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgVGhlIHNjaGVtYSBuYW1lCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2467,"slug":"reindex-database","name":"reindex_database","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ReindexFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Index\\Reindex","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFN0YXJ0IGJ1aWxkaW5nIGEgUkVJTkRFWCBEQVRBQkFTRSBzdGF0ZW1lbnQuCiAqCiAqIFVzZSBjaGFpbmFibGUgbWV0aG9kczogLT5jb25jdXJyZW50bHkoKSwgLT52ZXJib3NlKCksIC0+dGFibGVzcGFjZSgpCiAqCiAqIEV4YW1wbGU6IHJlaW5kZXhfZGF0YWJhc2UoJ215ZGInKS0+Y29uY3VycmVudGx5KCkKICoKICogQHBhcmFtIHN0cmluZyAkbmFtZSBUaGUgZGF0YWJhc2UgbmFtZQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2482,"slug":"index-col","name":"index_col","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"IndexColumn","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Index","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBpbmRleCBjb2x1bW4gc3BlY2lmaWNhdGlvbi4KICoKICogVXNlIGNoYWluYWJsZSBtZXRob2RzOiAtPmFzYygpLCAtPmRlc2MoKSwgLT5udWxsc0ZpcnN0KCksIC0+bnVsbHNMYXN0KCksIC0+b3BjbGFzcygpLCAtPmNvbGxhdGUoKQogKgogKiBFeGFtcGxlOiBpbmRleF9jb2woJ2VtYWlsJyktPmRlc2MoKS0+bnVsbHNMYXN0KCkKICoKICogQHBhcmFtIHN0cmluZyAkbmFtZSBUaGUgY29sdW1uIG5hbWUKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2497,"slug":"index-expr","name":"index_expr","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expression","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"IndexColumn","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Index","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBpbmRleCBjb2x1bW4gc3BlY2lmaWNhdGlvbiBmcm9tIGFuIGV4cHJlc3Npb24uCiAqCiAqIFVzZSBjaGFpbmFibGUgbWV0aG9kczogLT5hc2MoKSwgLT5kZXNjKCksIC0+bnVsbHNGaXJzdCgpLCAtPm51bGxzTGFzdCgpLCAtPm9wY2xhc3MoKSwgLT5jb2xsYXRlKCkKICoKICogRXhhbXBsZTogaW5kZXhfZXhwcihmbl9jYWxsKCdsb3dlcicsIGNvbCgnZW1haWwnKSkpLT5kZXNjKCkKICoKICogQHBhcmFtIEV4cHJlc3Npb24gJGV4cHJlc3Npb24gVGhlIGV4cHJlc3Npb24gdG8gaW5kZXgKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2506,"slug":"index-method-btree","name":"index_method_btree","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"IndexMethod","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Index","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEdldCB0aGUgQlRSRUUgaW5kZXggbWV0aG9kLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2515,"slug":"index-method-hash","name":"index_method_hash","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"IndexMethod","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Index","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEdldCB0aGUgSEFTSCBpbmRleCBtZXRob2QuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2524,"slug":"index-method-gist","name":"index_method_gist","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"IndexMethod","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Index","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEdldCB0aGUgR0lTVCBpbmRleCBtZXRob2QuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2533,"slug":"index-method-spgist","name":"index_method_spgist","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"IndexMethod","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Index","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEdldCB0aGUgU1BHSVNUIGluZGV4IG1ldGhvZC4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2542,"slug":"index-method-gin","name":"index_method_gin","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"IndexMethod","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Index","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEdldCB0aGUgR0lOIGluZGV4IG1ldGhvZC4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2551,"slug":"index-method-brin","name":"index_method_brin","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"IndexMethod","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Index","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEdldCB0aGUgQlJJTiBpbmRleCBtZXRob2QuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2563,"slug":"vacuum","name":"vacuum","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"VacuumFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Utility","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFZBQ1VVTSBidWlsZGVyLgogKgogKiBFeGFtcGxlOiB2YWN1dW0oKS0+dGFibGUoJ3VzZXJzJykKICogUHJvZHVjZXM6IFZBQ1VVTSB1c2VycwogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2575,"slug":"analyze","name":"analyze","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"AnalyzeFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Utility","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBBTkFMWVpFIGJ1aWxkZXIuCiAqCiAqIEV4YW1wbGU6IGFuYWx5emUoKS0+dGFibGUoJ3VzZXJzJykKICogUHJvZHVjZXM6IEFOQUxZWkUgdXNlcnMKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2589,"slug":"explain","name":"explain","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"query","type":[{"name":"SelectFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Select","is_nullable":false,"is_variadic":false},{"name":"InsertBuilder","namespace":"Flow\\PostgreSql\\QueryBuilder\\Insert","is_nullable":false,"is_variadic":false},{"name":"UpdateBuilder","namespace":"Flow\\PostgreSql\\QueryBuilder\\Update","is_nullable":false,"is_variadic":false},{"name":"DeleteBuilder","namespace":"Flow\\PostgreSql\\QueryBuilder\\Delete","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ExplainFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Utility","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBFWFBMQUlOIGJ1aWxkZXIgZm9yIGEgcXVlcnkuCiAqCiAqIEV4YW1wbGU6IGV4cGxhaW4oc2VsZWN0KCktPmZyb20oJ3VzZXJzJykpCiAqIFByb2R1Y2VzOiBFWFBMQUlOIFNFTEVDVCAqIEZST00gdXNlcnMKICoKICogQHBhcmFtIERlbGV0ZUJ1aWxkZXJ8SW5zZXJ0QnVpbGRlcnxTZWxlY3RGaW5hbFN0ZXB8VXBkYXRlQnVpbGRlciAkcXVlcnkgUXVlcnkgdG8gZXhwbGFpbgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2601,"slug":"lock-table","name":"lock_table","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"tables","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"LockFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Utility","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIExPQ0sgVEFCTEUgYnVpbGRlci4KICoKICogRXhhbXBsZTogbG9ja190YWJsZSgndXNlcnMnLCAnb3JkZXJzJyktPmFjY2Vzc0V4Y2x1c2l2ZSgpCiAqIFByb2R1Y2VzOiBMT0NLIFRBQkxFIHVzZXJzLCBvcmRlcnMgSU4gQUNDRVNTIEVYQ0xVU0lWRSBNT0RFCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2616,"slug":"comment","name":"comment","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"target","type":[{"name":"CommentTarget","namespace":"Flow\\PostgreSql\\QueryBuilder\\Utility","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"CommentFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Utility","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIENPTU1FTlQgT04gYnVpbGRlci4KICoKICogRXhhbXBsZTogY29tbWVudChDb21tZW50VGFyZ2V0OjpUQUJMRSwgJ3VzZXJzJyktPmlzKCdVc2VyIGFjY291bnRzIHRhYmxlJykKICogUHJvZHVjZXM6IENPTU1FTlQgT04gVEFCTEUgdXNlcnMgSVMgJ1VzZXIgYWNjb3VudHMgdGFibGUnCiAqCiAqIEBwYXJhbSBDb21tZW50VGFyZ2V0ICR0YXJnZXQgVGFyZ2V0IHR5cGUgKFRBQkxFLCBDT0xVTU4sIElOREVYLCBldGMuKQogKiBAcGFyYW0gc3RyaW5nICRuYW1lIFRhcmdldCBuYW1lICh1c2UgJ3RhYmxlLmNvbHVtbicgZm9yIENPTFVNTiB0YXJnZXRzKQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2628,"slug":"cluster","name":"cluster","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"ClusterFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Utility","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIENMVVNURVIgYnVpbGRlci4KICoKICogRXhhbXBsZTogY2x1c3RlcigpLT50YWJsZSgndXNlcnMnKS0+dXNpbmcoJ2lkeF91c2Vyc19wa2V5JykKICogUHJvZHVjZXM6IENMVVNURVIgdXNlcnMgVVNJTkcgaWR4X3VzZXJzX3BrZXkKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2642,"slug":"discard","name":"discard","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"type","type":[{"name":"DiscardType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Utility","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"DiscardFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Utility","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIERJU0NBUkQgYnVpbGRlci4KICoKICogRXhhbXBsZTogZGlzY2FyZChEaXNjYXJkVHlwZTo6QUxMKQogKiBQcm9kdWNlczogRElTQ0FSRCBBTEwKICoKICogQHBhcmFtIERpc2NhcmRUeXBlICR0eXBlIFR5cGUgb2YgcmVzb3VyY2VzIHRvIGRpc2NhcmQgKEFMTCwgUExBTlMsIFNFUVVFTkNFUywgVEVNUCkKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2661,"slug":"grant","name":"grant","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"privileges","type":[{"name":"TablePrivilege","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Grant","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"GrantOnStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Grant","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEdSQU5UIHByaXZpbGVnZXMgYnVpbGRlci4KICoKICogRXhhbXBsZTogZ3JhbnQoVGFibGVQcml2aWxlZ2U6OlNFTEVDVCktPm9uVGFibGUoJ3VzZXJzJyktPnRvKCdhcHBfdXNlcicpCiAqIFByb2R1Y2VzOiBHUkFOVCBTRUxFQ1QgT04gdXNlcnMgVE8gYXBwX3VzZXIKICoKICogRXhhbXBsZTogZ3JhbnQoVGFibGVQcml2aWxlZ2U6OkFMTCktPm9uQWxsVGFibGVzSW5TY2hlbWEoJ3B1YmxpYycpLT50bygnYWRtaW4nKQogKiBQcm9kdWNlczogR1JBTlQgQUxMIE9OIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1YmxpYyBUTyBhZG1pbgogKgogKiBAcGFyYW0gc3RyaW5nfFRhYmxlUHJpdmlsZWdlIC4uLiRwcml2aWxlZ2VzIFRoZSBwcml2aWxlZ2VzIHRvIGdyYW50CiAqCiAqIEByZXR1cm4gR3JhbnRPblN0ZXAgQnVpbGRlciBmb3IgZ3JhbnQgb3B0aW9ucwogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2680,"slug":"grant-role","name":"grant_role","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"roles","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"GrantRoleToStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Grant","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEdSQU5UIHJvbGUgYnVpbGRlci4KICoKICogRXhhbXBsZTogZ3JhbnRfcm9sZSgnYWRtaW4nKS0+dG8oJ3VzZXIxJykKICogUHJvZHVjZXM6IEdSQU5UIGFkbWluIFRPIHVzZXIxCiAqCiAqIEV4YW1wbGU6IGdyYW50X3JvbGUoJ2FkbWluJywgJ2RldmVsb3BlcicpLT50bygndXNlcjEnKS0+d2l0aEFkbWluT3B0aW9uKCkKICogUHJvZHVjZXM6IEdSQU5UIGFkbWluLCBkZXZlbG9wZXIgVE8gdXNlcjEgV0lUSCBBRE1JTiBPUFRJT04KICoKICogQHBhcmFtIHN0cmluZyAuLi4kcm9sZXMgVGhlIHJvbGVzIHRvIGdyYW50CiAqCiAqIEByZXR1cm4gR3JhbnRSb2xlVG9TdGVwIEJ1aWxkZXIgZm9yIGdyYW50IHJvbGUgb3B0aW9ucwogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2699,"slug":"revoke","name":"revoke","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"privileges","type":[{"name":"TablePrivilege","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Grant","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"RevokeOnStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Grant","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFJFVk9LRSBwcml2aWxlZ2VzIGJ1aWxkZXIuCiAqCiAqIEV4YW1wbGU6IHJldm9rZShUYWJsZVByaXZpbGVnZTo6U0VMRUNUKS0+b25UYWJsZSgndXNlcnMnKS0+ZnJvbSgnYXBwX3VzZXInKQogKiBQcm9kdWNlczogUkVWT0tFIFNFTEVDVCBPTiB1c2VycyBGUk9NIGFwcF91c2VyCiAqCiAqIEV4YW1wbGU6IHJldm9rZShUYWJsZVByaXZpbGVnZTo6QUxMKS0+b25UYWJsZSgndXNlcnMnKS0+ZnJvbSgnYXBwX3VzZXInKS0+Y2FzY2FkZSgpCiAqIFByb2R1Y2VzOiBSRVZPS0UgQUxMIE9OIHVzZXJzIEZST00gYXBwX3VzZXIgQ0FTQ0FERQogKgogKiBAcGFyYW0gc3RyaW5nfFRhYmxlUHJpdmlsZWdlIC4uLiRwcml2aWxlZ2VzIFRoZSBwcml2aWxlZ2VzIHRvIHJldm9rZQogKgogKiBAcmV0dXJuIFJldm9rZU9uU3RlcCBCdWlsZGVyIGZvciByZXZva2Ugb3B0aW9ucwogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2718,"slug":"revoke-role","name":"revoke_role","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"roles","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"RevokeRoleFromStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Grant","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFJFVk9LRSByb2xlIGJ1aWxkZXIuCiAqCiAqIEV4YW1wbGU6IHJldm9rZV9yb2xlKCdhZG1pbicpLT5mcm9tKCd1c2VyMScpCiAqIFByb2R1Y2VzOiBSRVZPS0UgYWRtaW4gRlJPTSB1c2VyMQogKgogKiBFeGFtcGxlOiByZXZva2Vfcm9sZSgnYWRtaW4nKS0+ZnJvbSgndXNlcjEnKS0+Y2FzY2FkZSgpCiAqIFByb2R1Y2VzOiBSRVZPS0UgYWRtaW4gRlJPTSB1c2VyMSBDQVNDQURFCiAqCiAqIEBwYXJhbSBzdHJpbmcgLi4uJHJvbGVzIFRoZSByb2xlcyB0byByZXZva2UKICoKICogQHJldHVybiBSZXZva2VSb2xlRnJvbVN0ZXAgQnVpbGRlciBmb3IgcmV2b2tlIHJvbGUgb3B0aW9ucwogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2734,"slug":"set-role","name":"set_role","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"role","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"SetRoleFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Session","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFNFVCBST0xFIGJ1aWxkZXIuCiAqCiAqIEV4YW1wbGU6IHNldF9yb2xlKCdhZG1pbicpCiAqIFByb2R1Y2VzOiBTRVQgUk9MRSBhZG1pbgogKgogKiBAcGFyYW0gc3RyaW5nICRyb2xlIFRoZSByb2xlIHRvIHNldAogKgogKiBAcmV0dXJuIFNldFJvbGVGaW5hbFN0ZXAgQnVpbGRlciBmb3Igc2V0IHJvbGUKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2748,"slug":"reset-role","name":"reset_role","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"ResetRoleFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Session","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFJFU0VUIFJPTEUgYnVpbGRlci4KICoKICogRXhhbXBsZTogcmVzZXRfcm9sZSgpCiAqIFByb2R1Y2VzOiBSRVNFVCBST0xFCiAqCiAqIEByZXR1cm4gUmVzZXRSb2xlRmluYWxTdGVwIEJ1aWxkZXIgZm9yIHJlc2V0IHJvbGUKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2764,"slug":"reassign-owned","name":"reassign_owned","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"roles","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"ReassignOwnedToStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Ownership","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFJFQVNTSUdOIE9XTkVEIGJ1aWxkZXIuCiAqCiAqIEV4YW1wbGU6IHJlYXNzaWduX293bmVkKCdvbGRfcm9sZScpLT50bygnbmV3X3JvbGUnKQogKiBQcm9kdWNlczogUkVBU1NJR04gT1dORUQgQlkgb2xkX3JvbGUgVE8gbmV3X3JvbGUKICoKICogQHBhcmFtIHN0cmluZyAuLi4kcm9sZXMgVGhlIHJvbGVzIHdob3NlIG93bmVkIG9iamVjdHMgc2hvdWxkIGJlIHJlYXNzaWduZWQKICoKICogQHJldHVybiBSZWFzc2lnbk93bmVkVG9TdGVwIEJ1aWxkZXIgZm9yIHJlYXNzaWduIG93bmVkIG9wdGlvbnMKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2783,"slug":"drop-owned","name":"drop_owned","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"roles","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"DropOwnedFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Ownership","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIERST1AgT1dORUQgYnVpbGRlci4KICoKICogRXhhbXBsZTogZHJvcF9vd25lZCgncm9sZTEnKQogKiBQcm9kdWNlczogRFJPUCBPV05FRCBCWSByb2xlMQogKgogKiBFeGFtcGxlOiBkcm9wX293bmVkKCdyb2xlMScsICdyb2xlMicpLT5jYXNjYWRlKCkKICogUHJvZHVjZXM6IERST1AgT1dORUQgQlkgcm9sZTEsIHJvbGUyIENBU0NBREUKICoKICogQHBhcmFtIHN0cmluZyAuLi4kcm9sZXMgVGhlIHJvbGVzIHdob3NlIG93bmVkIG9iamVjdHMgc2hvdWxkIGJlIGRyb3BwZWQKICoKICogQHJldHVybiBEcm9wT3duZWRGaW5hbFN0ZXAgQnVpbGRlciBmb3IgZHJvcCBvd25lZCBvcHRpb25zCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2801,"slug":"func-arg","name":"func_arg","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"type","type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"FunctionArgument","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZXMgYSBuZXcgZnVuY3Rpb24gYXJndW1lbnQgZm9yIHVzZSBpbiBmdW5jdGlvbi9wcm9jZWR1cmUgZGVmaW5pdGlvbnMuCiAqCiAqIEV4YW1wbGU6IGZ1bmNfYXJnKGRhdGFfdHlwZV9pbnRlZ2VyKCkpCiAqIEV4YW1wbGU6IGZ1bmNfYXJnKGRhdGFfdHlwZV90ZXh0KCkpLT5uYW1lZCgndXNlcm5hbWUnKQogKiBFeGFtcGxlOiBmdW5jX2FyZyhkYXRhX3R5cGVfaW50ZWdlcigpKS0+bmFtZWQoJ2NvdW50JyktPmRlZmF1bHQoJzAnKQogKiBFeGFtcGxlOiBmdW5jX2FyZyhkYXRhX3R5cGVfdGV4dCgpKS0+b3V0KCkKICoKICogQHBhcmFtIERhdGFUeXBlICR0eXBlIFRoZSBQb3N0Z3JlU1FMIGRhdGEgdHlwZSBmb3IgdGhlIGFyZ3VtZW50CiAqCiAqIEByZXR1cm4gRnVuY3Rpb25Bcmd1bWVudCBCdWlsZGVyIGZvciBmdW5jdGlvbiBhcmd1bWVudCBvcHRpb25zCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2820,"slug":"call","name":"call","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"procedure","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"CallFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZXMgYSBDQUxMIHN0YXRlbWVudCBidWlsZGVyIGZvciBpbnZva2luZyBhIHByb2NlZHVyZS4KICoKICogRXhhbXBsZTogY2FsbCgndXBkYXRlX3N0YXRzJyktPndpdGgoMTIzKQogKiBQcm9kdWNlczogQ0FMTCB1cGRhdGVfc3RhdHMoMTIzKQogKgogKiBFeGFtcGxlOiBjYWxsKCdwcm9jZXNzX2RhdGEnKS0+d2l0aCgndGVzdCcsIDQyLCB0cnVlKQogKiBQcm9kdWNlczogQ0FMTCBwcm9jZXNzX2RhdGEoJ3Rlc3QnLCA0MiwgdHJ1ZSkKICoKICogQHBhcmFtIHN0cmluZyAkcHJvY2VkdXJlIFRoZSBuYW1lIG9mIHRoZSBwcm9jZWR1cmUgdG8gY2FsbAogKgogKiBAcmV0dXJuIENhbGxGaW5hbFN0ZXAgQnVpbGRlciBmb3IgY2FsbCBzdGF0ZW1lbnQgb3B0aW9ucwogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2839,"slug":"do-block","name":"do_block","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"code","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"DoFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZXMgYSBETyBzdGF0ZW1lbnQgYnVpbGRlciBmb3IgZXhlY3V0aW5nIGFuIGFub255bW91cyBjb2RlIGJsb2NrLgogKgogKiBFeGFtcGxlOiBkb19ibG9jaygnQkVHSU4gUkFJU0UgTk9USUNFICQkSGVsbG8gV29ybGQkJDsgRU5EOycpCiAqIFByb2R1Y2VzOiBETyAkJCBCRUdJTiBSQUlTRSBOT1RJQ0UgJCRIZWxsbyBXb3JsZCQkOyBFTkQ7ICQkIExBTkdVQUdFIHBscGdzcWwKICoKICogRXhhbXBsZTogZG9fYmxvY2soJ1NFTEVDVCAxJyktPmxhbmd1YWdlKCdzcWwnKQogKiBQcm9kdWNlczogRE8gJCQgU0VMRUNUIDEgJCQgTEFOR1VBR0Ugc3FsCiAqCiAqIEBwYXJhbSBzdHJpbmcgJGNvZGUgVGhlIGFub255bW91cyBjb2RlIGJsb2NrIHRvIGV4ZWN1dGUKICoKICogQHJldHVybiBEb0ZpbmFsU3RlcCBCdWlsZGVyIGZvciBETyBzdGF0ZW1lbnQgb3B0aW9ucwogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2859,"slug":"type-attr","name":"type_attr","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"type","type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"TypeAttribute","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Type","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZXMgYSB0eXBlIGF0dHJpYnV0ZSBmb3IgY29tcG9zaXRlIHR5cGVzLgogKgogKiBFeGFtcGxlOiB0eXBlX2F0dHIoJ25hbWUnLCBkYXRhX3R5cGVfdGV4dCgpKQogKiBQcm9kdWNlczogbmFtZSB0ZXh0CiAqCiAqIEV4YW1wbGU6IHR5cGVfYXR0cignZGVzY3JpcHRpb24nLCBkYXRhX3R5cGVfdGV4dCgpKS0+Y29sbGF0ZSgnZW5fVVMnKQogKiBQcm9kdWNlczogZGVzY3JpcHRpb24gdGV4dCBDT0xMQVRFICJlbl9VUyIKICoKICogQHBhcmFtIHN0cmluZyAkbmFtZSBUaGUgYXR0cmlidXRlIG5hbWUKICogQHBhcmFtIERhdGFUeXBlICR0eXBlIFRoZSBhdHRyaWJ1dGUgdHlwZQogKgogKiBAcmV0dXJuIFR5cGVBdHRyaWJ1dGUgVHlwZSBhdHRyaWJ1dGUgdmFsdWUgb2JqZWN0CiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2876,"slug":"pgsql-connection","name":"pgsql_connection","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"connectionString","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ConnectionParameters","namespace":"Flow\\PostgreSql\\Client","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBjb25uZWN0aW9uIHBhcmFtZXRlcnMgZnJvbSBhIGNvbm5lY3Rpb24gc3RyaW5nLgogKgogKiBBY2NlcHRzIGxpYnBxLXN0eWxlIGNvbm5lY3Rpb24gc3RyaW5nczoKICogLSBLZXktdmFsdWUgZm9ybWF0OiAiaG9zdD1sb2NhbGhvc3QgcG9ydD01NDMyIGRibmFtZT1teWRiIHVzZXI9bXl1c2VyIHBhc3N3b3JkPXNlY3JldCIKICogLSBVUkkgZm9ybWF0OiAicG9zdGdyZXNxbDovL3VzZXI6cGFzc3dvcmRAbG9jYWxob3N0OjU0MzIvZGJuYW1lIgogKgogKiBAZXhhbXBsZQogKiAkcGFyYW1zID0gcGdzcWxfY29ubmVjdGlvbignaG9zdD1sb2NhbGhvc3QgZGJuYW1lPW15ZGInKTsKICogJHBhcmFtcyA9IHBnc3FsX2Nvbm5lY3Rpb24oJ3Bvc3RncmVzcWw6Ly91c2VyOnBhc3NAbG9jYWxob3N0L215ZGInKTsKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2898,"slug":"pgsql-connection-dsn","name":"pgsql_connection_dsn","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"dsn","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ConnectionParameters","namespace":"Flow\\PostgreSql\\Client","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBjb25uZWN0aW9uIHBhcmFtZXRlcnMgZnJvbSBhIERTTiBzdHJpbmcuCiAqCiAqIFBhcnNlcyBzdGFuZGFyZCBQb3N0Z3JlU1FMIERTTiBmb3JtYXQgY29tbW9ubHkgdXNlZCBpbiBlbnZpcm9ubWVudCB2YXJpYWJsZXMKICogKGUuZy4sIERBVEFCQVNFX1VSTCkuIFN1cHBvcnRzIHBvc3RncmVzOi8vLCBwb3N0Z3Jlc3FsOi8vLCBhbmQgcGdzcWw6Ly8gc2NoZW1lcy4KICoKICogQHBhcmFtIHN0cmluZyAkZHNuIERTTiBzdHJpbmcgaW4gZm9ybWF0OiBwb3N0Z3JlczovL3VzZXI6cGFzc3dvcmRAaG9zdDpwb3J0L2RhdGFiYXNlP29wdGlvbnMKICoKICogQHRocm93cyBDbGllbnRcRHNuUGFyc2VyRXhjZXB0aW9uIElmIHRoZSBEU04gY2Fubm90IGJlIHBhcnNlZAogKgogKiBAZXhhbXBsZQogKiAkcGFyYW1zID0gcGdzcWxfY29ubmVjdGlvbl9kc24oJ3Bvc3RncmVzOi8vbXl1c2VyOnNlY3JldEBsb2NhbGhvc3Q6NTQzMi9teWRiJyk7CiAqICRwYXJhbXMgPSBwZ3NxbF9jb25uZWN0aW9uX2RzbigncG9zdGdyZXNxbDovL3VzZXI6cGFzc0BkYi5leGFtcGxlLmNvbS9hcHA\/c3NsbW9kZT1yZXF1aXJlJyk7CiAqICRwYXJhbXMgPSBwZ3NxbF9jb25uZWN0aW9uX2RzbigncGdzcWw6Ly91c2VyOnBhc3NAbG9jYWxob3N0L215ZGInKTsgLy8gU3ltZm9ueS9Eb2N0cmluZSBmb3JtYXQKICogJHBhcmFtcyA9IHBnc3FsX2Nvbm5lY3Rpb25fZHNuKGdldGVudignREFUQUJBU0VfVVJMJykpOwogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2925,"slug":"pgsql-connection-params","name":"pgsql_connection_params","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"database","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"host","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'localhost'"},{"name":"port","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"5432"},{"name":"user","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"password","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"options","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"ConnectionParameters","namespace":"Flow\\PostgreSql\\Client","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBjb25uZWN0aW9uIHBhcmFtZXRlcnMgZnJvbSBpbmRpdmlkdWFsIHZhbHVlcy4KICoKICogQWxsb3dzIHNwZWNpZnlpbmcgY29ubmVjdGlvbiBwYXJhbWV0ZXJzIGluZGl2aWR1YWxseSBmb3IgYmV0dGVyIHR5cGUgc2FmZXR5CiAqIGFuZCBJREUgc3VwcG9ydC4KICoKICogQHBhcmFtIHN0cmluZyAkZGF0YWJhc2UgRGF0YWJhc2UgbmFtZSAocmVxdWlyZWQpCiAqIEBwYXJhbSBzdHJpbmcgJGhvc3QgSG9zdG5hbWUgKGRlZmF1bHQ6IGxvY2FsaG9zdCkKICogQHBhcmFtIGludCAkcG9ydCBQb3J0IG51bWJlciAoZGVmYXVsdDogNTQzMikKICogQHBhcmFtIG51bGx8c3RyaW5nICR1c2VyIFVzZXJuYW1lIChvcHRpb25hbCkKICogQHBhcmFtIG51bGx8c3RyaW5nICRwYXNzd29yZCBQYXNzd29yZCAob3B0aW9uYWwpCiAqIEBwYXJhbSBhcnJheTxzdHJpbmcsIHN0cmluZz4gJG9wdGlvbnMgQWRkaXRpb25hbCBsaWJwcSBvcHRpb25zCiAqCiAqIEBleGFtcGxlCiAqICRwYXJhbXMgPSBwZ3NxbF9jb25uZWN0aW9uX3BhcmFtcygKICogICAgIGRhdGFiYXNlOiAnbXlkYicsCiAqICAgICBob3N0OiAnbG9jYWxob3N0JywKICogICAgIHVzZXI6ICdteXVzZXInLAogKiAgICAgcGFzc3dvcmQ6ICdzZWNyZXQnLAogKiApOwogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2966,"slug":"pgsql-client","name":"pgsql_client","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"params","type":[{"name":"ConnectionParameters","namespace":"Flow\\PostgreSql\\Client","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"valueConverters","type":[{"name":"ValueConverters","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"mapper","type":[{"name":"RowMapper","namespace":"Flow\\PostgreSql\\Client","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Client","namespace":"Flow\\PostgreSql\\Client","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFBvc3RncmVTUUwgY2xpZW50IHVzaW5nIGV4dC1wZ3NxbC4KICoKICogVGhlIGNsaWVudCBjb25uZWN0cyBpbW1lZGlhdGVseSBhbmQgaXMgcmVhZHkgdG8gZXhlY3V0ZSBxdWVyaWVzLgogKiBGb3Igb2JqZWN0IG1hcHBpbmcsIHByb3ZpZGUgYSBSb3dNYXBwZXIgKHVzZSBwZ3NxbF9tYXBwZXIoKSBmb3IgdGhlIGRlZmF1bHQpLgogKgogKiBAcGFyYW0gQ2xpZW50XENvbm5lY3Rpb25QYXJhbWV0ZXJzICRwYXJhbXMgQ29ubmVjdGlvbiBwYXJhbWV0ZXJzCiAqIEBwYXJhbSBudWxsfFZhbHVlQ29udmVydGVycyAkdmFsdWVDb252ZXJ0ZXJzIEN1c3RvbSB0eXBlIGNvbnZlcnRlcnMgKG9wdGlvbmFsKQogKiBAcGFyYW0gbnVsbHxDbGllbnRcUm93TWFwcGVyICRtYXBwZXIgUm93IG1hcHBlciBmb3Igb2JqZWN0IGh5ZHJhdGlvbiAob3B0aW9uYWwpCiAqCiAqIEB0aHJvd3MgQ29ubmVjdGlvbkV4Y2VwdGlvbiBJZiBjb25uZWN0aW9uIGZhaWxzCiAqCiAqIEBleGFtcGxlCiAqIC8vIEJhc2ljIGNsaWVudAogKiAkY2xpZW50ID0gcGdzcWxfY2xpZW50KHBnc3FsX2Nvbm5lY3Rpb24oJ2hvc3Q9bG9jYWxob3N0IGRibmFtZT1teWRiJykpOwogKgogKiAvLyBXaXRoIG9iamVjdCBtYXBwaW5nCiAqICRjbGllbnQgPSBwZ3NxbF9jbGllbnQoCiAqICAgICBwZ3NxbF9jb25uZWN0aW9uKCdob3N0PWxvY2FsaG9zdCBkYm5hbWU9bXlkYicpLAogKiAgICAgbWFwcGVyOiBwZ3NxbF9tYXBwZXIoKSwKICogKTsKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3002,"slug":"pgsql-mapper","name":"pgsql_mapper","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"ConstructorMapper","namespace":"Flow\\PostgreSql\\Client\\RowMapper","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGRlZmF1bHQgY29uc3RydWN0b3ItYmFzZWQgcm93IG1hcHBlci4KICoKICogTWFwcyBkYXRhYmFzZSByb3dzIGRpcmVjdGx5IHRvIGNvbnN0cnVjdG9yIHBhcmFtZXRlcnMuCiAqIENvbHVtbiBuYW1lcyBtdXN0IG1hdGNoIHBhcmFtZXRlciBuYW1lcyBleGFjdGx5ICgxOjEpLgogKiBVc2UgU1FMIGFsaWFzZXMgaWYgY29sdW1uIG5hbWVzIGRpZmZlciBmcm9tIHBhcmFtZXRlciBuYW1lcy4KICoKICogQGV4YW1wbGUKICogLy8gRFRPIHdoZXJlIGNvbHVtbiBuYW1lcyBtYXRjaCBwYXJhbWV0ZXIgbmFtZXMKICogcmVhZG9ubHkgY2xhc3MgVXNlciB7CiAqICAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoCiAqICAgICAgICAgcHVibGljIGludCAkaWQsCiAqICAgICAgICAgcHVibGljIHN0cmluZyAkbmFtZSwKICogICAgICAgICBwdWJsaWMgc3RyaW5nICRlbWFpbCwKICogICAgICkge30KICogfQogKgogKiAvLyBVc2FnZQogKiAkY2xpZW50ID0gcGdzcWxfY2xpZW50KHBnc3FsX2Nvbm5lY3Rpb24oJy4uLicpLCBtYXBwZXI6IHBnc3FsX21hcHBlcigpKTsKICoKICogLy8gRm9yIHNuYWtlX2Nhc2UgY29sdW1ucywgdXNlIFNRTCBhbGlhc2VzCiAqICR1c2VyID0gJGNsaWVudC0+ZmV0Y2hJbnRvKAogKiAgICAgVXNlcjo6Y2xhc3MsCiAqICAgICAnU0VMRUNUIGlkLCB1c2VyX25hbWUgQVMgbmFtZSwgdXNlcl9lbWFpbCBBUyBlbWFpbCBGUk9NIHVzZXJzIFdIRVJFIGlkID0gJDEnLAogKiAgICAgWzFdCiAqICk7CiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3031,"slug":"typed","name":"typed","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"value","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"targetType","type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"TypedValue","namespace":"Flow\\PostgreSql\\Client","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFdyYXAgYSB2YWx1ZSB3aXRoIGV4cGxpY2l0IFBvc3RncmVTUUwgdHlwZSBpbmZvcm1hdGlvbiBmb3IgcGFyYW1ldGVyIGJpbmRpbmcuCiAqCiAqIFVzZSB3aGVuIGF1dG8tZGV0ZWN0aW9uIGlzbid0IHN1ZmZpY2llbnQgb3Igd2hlbiB5b3UgbmVlZCB0byBzcGVjaWZ5CiAqIHRoZSBleGFjdCBQb3N0Z3JlU1FMIHR5cGUgKHNpbmNlIG9uZSBQSFAgdHlwZSBjYW4gbWFwIHRvIG11bHRpcGxlIFBvc3RncmVTUUwgdHlwZXMpOgogKiAtIGludCBjb3VsZCBiZSBJTlQyLCBJTlQ0LCBvciBJTlQ4CiAqIC0gc3RyaW5nIGNvdWxkIGJlIFRFWFQsIFZBUkNIQVIsIG9yIENIQVIKICogLSBhcnJheSBtdXN0IGFsd2F5cyB1c2UgdHlwZWQoKSBzaW5jZSBhdXRvLWRldGVjdGlvbiBjYW5ub3QgZGV0ZXJtaW5lIGVsZW1lbnQgdHlwZQogKiAtIERhdGVUaW1lSW50ZXJmYWNlIGNvdWxkIGJlIFRJTUVTVEFNUCBvciBUSU1FU1RBTVBUWgogKiAtIEpzb24gY291bGQgYmUgSlNPTiBvciBKU09OQgogKgogKiBAcGFyYW0gbWl4ZWQgJHZhbHVlIFRoZSB2YWx1ZSB0byBiaW5kCiAqIEBwYXJhbSBQb3N0Z3JlU3FsVHlwZSAkdGFyZ2V0VHlwZSBUaGUgUG9zdGdyZVNRTCB0eXBlIHRvIGNvbnZlcnQgdGhlIHZhbHVlIHRvCiAqCiAqIEBleGFtcGxlCiAqICRjbGllbnQtPmZldGNoKAogKiAgICAgJ1NFTEVDVCAqIEZST00gdXNlcnMgV0hFUkUgaWQgPSAkMSBBTkQgdGFncyA9ICQyJywKICogICAgIFsKICogICAgICAgICB0eXBlZCgnNTUwZTg0MDAtZTI5Yi00MWQ0LWE3MTYtNDQ2NjU1NDQwMDAwJywgUG9zdGdyZVNxbFR5cGU6OlVVSUQpLAogKiAgICAgICAgIHR5cGVkKFsndGFnMScsICd0YWcyJ10sIFBvc3RncmVTcWxUeXBlOjpURVhUX0FSUkFZKSwKICogICAgIF0KICogKTsKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3039,"slug":"pgsql-type-text","name":"pgsql_type_text","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3045,"slug":"pgsql-type-varchar","name":"pgsql_type_varchar","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3051,"slug":"pgsql-type-char","name":"pgsql_type_char","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3057,"slug":"pgsql-type-bpchar","name":"pgsql_type_bpchar","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3063,"slug":"pgsql-type-int2","name":"pgsql_type_int2","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3069,"slug":"pgsql-type-smallint","name":"pgsql_type_smallint","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3075,"slug":"pgsql-type-int4","name":"pgsql_type_int4","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3081,"slug":"pgsql-type-integer","name":"pgsql_type_integer","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3087,"slug":"pgsql-type-int8","name":"pgsql_type_int8","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3093,"slug":"pgsql-type-bigint","name":"pgsql_type_bigint","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3099,"slug":"pgsql-type-float4","name":"pgsql_type_float4","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3105,"slug":"pgsql-type-real","name":"pgsql_type_real","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3111,"slug":"pgsql-type-float8","name":"pgsql_type_float8","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3117,"slug":"pgsql-type-double","name":"pgsql_type_double","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3123,"slug":"pgsql-type-numeric","name":"pgsql_type_numeric","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3129,"slug":"pgsql-type-money","name":"pgsql_type_money","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3135,"slug":"pgsql-type-bool","name":"pgsql_type_bool","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3141,"slug":"pgsql-type-boolean","name":"pgsql_type_boolean","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3147,"slug":"pgsql-type-bytea","name":"pgsql_type_bytea","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3153,"slug":"pgsql-type-bit","name":"pgsql_type_bit","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3159,"slug":"pgsql-type-varbit","name":"pgsql_type_varbit","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3165,"slug":"pgsql-type-date","name":"pgsql_type_date","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3171,"slug":"pgsql-type-time","name":"pgsql_type_time","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3177,"slug":"pgsql-type-timetz","name":"pgsql_type_timetz","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3183,"slug":"pgsql-type-timestamp","name":"pgsql_type_timestamp","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3189,"slug":"pgsql-type-timestamptz","name":"pgsql_type_timestamptz","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3195,"slug":"pgsql-type-interval","name":"pgsql_type_interval","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3201,"slug":"pgsql-type-json","name":"pgsql_type_json","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3207,"slug":"pgsql-type-jsonb","name":"pgsql_type_jsonb","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3213,"slug":"pgsql-type-uuid","name":"pgsql_type_uuid","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3219,"slug":"pgsql-type-inet","name":"pgsql_type_inet","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3225,"slug":"pgsql-type-cidr","name":"pgsql_type_cidr","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3231,"slug":"pgsql-type-macaddr","name":"pgsql_type_macaddr","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3237,"slug":"pgsql-type-macaddr8","name":"pgsql_type_macaddr8","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3243,"slug":"pgsql-type-xml","name":"pgsql_type_xml","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3249,"slug":"pgsql-type-oid","name":"pgsql_type_oid","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3255,"slug":"pgsql-type-text-array","name":"pgsql_type_text_array","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3261,"slug":"pgsql-type-varchar-array","name":"pgsql_type_varchar_array","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3267,"slug":"pgsql-type-int2-array","name":"pgsql_type_int2_array","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3273,"slug":"pgsql-type-int4-array","name":"pgsql_type_int4_array","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3279,"slug":"pgsql-type-int8-array","name":"pgsql_type_int8_array","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3285,"slug":"pgsql-type-float4-array","name":"pgsql_type_float4_array","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3291,"slug":"pgsql-type-float8-array","name":"pgsql_type_float8_array","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3297,"slug":"pgsql-type-bool-array","name":"pgsql_type_bool_array","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3303,"slug":"pgsql-type-uuid-array","name":"pgsql_type_uuid_array","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3309,"slug":"pgsql-type-json-array","name":"pgsql_type_json_array","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3315,"slug":"pgsql-type-jsonb-array","name":"pgsql_type_jsonb_array","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":39,"slug":"trace-id","name":"trace_id","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"hex","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"TraceId","namespace":"Flow\\Telemetry\\Context","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFRyYWNlSWQuCiAqCiAqIElmIGEgaGV4IHN0cmluZyBpcyBwcm92aWRlZCwgY3JlYXRlcyBhIFRyYWNlSWQgZnJvbSBpdC4KICogT3RoZXJ3aXNlLCBnZW5lcmF0ZXMgYSBuZXcgcmFuZG9tIFRyYWNlSWQuCiAqCiAqIEBwYXJhbSBudWxsfHN0cmluZyAkaGV4IE9wdGlvbmFsIDMyLWNoYXJhY3RlciBoZXhhZGVjaW1hbCBzdHJpbmcKICoKICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBoZXggc3RyaW5nIGlzIGludmFsaWQKICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":59,"slug":"span-id","name":"span_id","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"hex","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"SpanId","namespace":"Flow\\Telemetry\\Context","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFNwYW5JZC4KICoKICogSWYgYSBoZXggc3RyaW5nIGlzIHByb3ZpZGVkLCBjcmVhdGVzIGEgU3BhbklkIGZyb20gaXQuCiAqIE90aGVyd2lzZSwgZ2VuZXJhdGVzIGEgbmV3IHJhbmRvbSBTcGFuSWQuCiAqCiAqIEBwYXJhbSBudWxsfHN0cmluZyAkaGV4IE9wdGlvbmFsIDE2LWNoYXJhY3RlciBoZXhhZGVjaW1hbCBzdHJpbmcKICoKICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBoZXggc3RyaW5nIGlzIGludmFsaWQKICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":74,"slug":"baggage","name":"baggage","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"entries","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"Baggage","namespace":"Flow\\Telemetry\\Context","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEJhZ2dhZ2UuCiAqCiAqIEBwYXJhbSBhcnJheTxzdHJpbmcsIHN0cmluZz4gJGVudHJpZXMgSW5pdGlhbCBrZXktdmFsdWUgZW50cmllcwogKi8="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":89,"slug":"context","name":"context","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"traceId","type":[{"name":"TraceId","namespace":"Flow\\Telemetry\\Context","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"baggage","type":[{"name":"Baggage","namespace":"Flow\\Telemetry\\Context","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Context","namespace":"Flow\\Telemetry\\Context","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIENvbnRleHQuCiAqCiAqIElmIG5vIFRyYWNlSWQgaXMgcHJvdmlkZWQsIGdlbmVyYXRlcyBhIG5ldyBvbmUuCiAqIElmIG5vIEJhZ2dhZ2UgaXMgcHJvdmlkZWQsIGNyZWF0ZXMgYW4gZW1wdHkgb25lLgogKgogKiBAcGFyYW0gbnVsbHxUcmFjZUlkICR0cmFjZUlkIE9wdGlvbmFsIFRyYWNlSWQgdG8gdXNlCiAqIEBwYXJhbSBudWxsfEJhZ2dhZ2UgJGJhZ2dhZ2UgT3B0aW9uYWwgQmFnZ2FnZSB0byB1c2UKICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":106,"slug":"memory-context-storage","name":"memory_context_storage","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"context","type":[{"name":"Context","namespace":"Flow\\Telemetry\\Context","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"MemoryContextStorage","namespace":"Flow\\Telemetry\\Context","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIE1lbW9yeUNvbnRleHRTdG9yYWdlLgogKgogKiBJbi1tZW1vcnkgY29udGV4dCBzdG9yYWdlIGZvciBzdG9yaW5nIGFuZCByZXRyaWV2aW5nIHRoZSBjdXJyZW50IGNvbnRleHQuCiAqIEEgc2luZ2xlIGluc3RhbmNlIHNob3VsZCBiZSBzaGFyZWQgYWNyb3NzIGFsbCBwcm92aWRlcnMgd2l0aGluIGEgcmVxdWVzdCBsaWZlY3ljbGUuCiAqCiAqIEBwYXJhbSBudWxsfENvbnRleHQgJGNvbnRleHQgT3B0aW9uYWwgaW5pdGlhbCBjb250ZXh0CiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":117,"slug":"resource","name":"resource","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"attributes","type":[{"name":"Attributes","namespace":"Flow\\Telemetry","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"Resource","namespace":"Flow\\Telemetry","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFJlc291cmNlLgogKgogKiBAcGFyYW0gYXJyYXk8c3RyaW5nLCBhcnJheTxib29sfGZsb2F0fGludHxzdHJpbmc+fGJvb2x8ZmxvYXR8aW50fHN0cmluZz58QXR0cmlidXRlcyAkYXR0cmlidXRlcyBSZXNvdXJjZSBhdHRyaWJ1dGVzCiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":130,"slug":"span-context","name":"span_context","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"traceId","type":[{"name":"TraceId","namespace":"Flow\\Telemetry\\Context","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"spanId","type":[{"name":"SpanId","namespace":"Flow\\Telemetry\\Context","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"parentSpanId","type":[{"name":"SpanId","namespace":"Flow\\Telemetry\\Context","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"SpanContext","namespace":"Flow\\Telemetry\\Tracer","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFNwYW5Db250ZXh0LgogKgogKiBAcGFyYW0gVHJhY2VJZCAkdHJhY2VJZCBUaGUgdHJhY2UgSUQKICogQHBhcmFtIFNwYW5JZCAkc3BhbklkIFRoZSBzcGFuIElECiAqIEBwYXJhbSBudWxsfFNwYW5JZCAkcGFyZW50U3BhbklkIE9wdGlvbmFsIHBhcmVudCBzcGFuIElECiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":143,"slug":"span-event","name":"span_event","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"timestamp","type":[{"name":"DateTimeImmutable","namespace":"","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"attributes","type":[{"name":"Attributes","namespace":"Flow\\Telemetry","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"GenericEvent","namespace":"Flow\\Telemetry\\Tracer","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFNwYW5FdmVudCAoR2VuZXJpY0V2ZW50KSB3aXRoIGFuIGV4cGxpY2l0IHRpbWVzdGFtcC4KICoKICogQHBhcmFtIHN0cmluZyAkbmFtZSBFdmVudCBuYW1lCiAqIEBwYXJhbSBcRGF0ZVRpbWVJbW11dGFibGUgJHRpbWVzdGFtcCBFdmVudCB0aW1lc3RhbXAKICogQHBhcmFtIGFycmF5PHN0cmluZywgYXJyYXk8Ym9vbHxmbG9hdHxpbnR8c3RyaW5nPnxib29sfGZsb2F0fGludHxzdHJpbmc+fEF0dHJpYnV0ZXMgJGF0dHJpYnV0ZXMgRXZlbnQgYXR0cmlidXRlcwogKi8="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":155,"slug":"span-link","name":"span_link","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"context","type":[{"name":"SpanContext","namespace":"Flow\\Telemetry\\Tracer","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"attributes","type":[{"name":"Attributes","namespace":"Flow\\Telemetry","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"SpanLink","namespace":"Flow\\Telemetry\\Tracer","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFNwYW5MaW5rLgogKgogKiBAcGFyYW0gU3BhbkNvbnRleHQgJGNvbnRleHQgVGhlIGxpbmtlZCBzcGFuIGNvbnRleHQKICogQHBhcmFtIGFycmF5PHN0cmluZywgYXJyYXk8Ym9vbHxmbG9hdHxpbnR8c3RyaW5nPnxib29sfGZsb2F0fGludHxzdHJpbmc+fEF0dHJpYnV0ZXMgJGF0dHJpYnV0ZXMgTGluayBhdHRyaWJ1dGVzCiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":167,"slug":"void-span-processor","name":"void_span_processor","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"VoidSpanProcessor","namespace":"Flow\\Telemetry\\Provider\\Void","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFZvaWRTcGFuUHJvY2Vzc29yLgogKgogKiBOby1vcCBzcGFuIHByb2Nlc3NvciB0aGF0IGRpc2NhcmRzIGFsbCBkYXRhLgogKiBVc2UgdGhpcyB3aGVuIHRyYWNpbmcgaXMgZGlzYWJsZWQgdG8gbWluaW1pemUgb3ZlcmhlYWQuCiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":179,"slug":"void-metric-processor","name":"void_metric_processor","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"VoidMetricProcessor","namespace":"Flow\\Telemetry\\Provider\\Void","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFZvaWRNZXRyaWNQcm9jZXNzb3IuCiAqCiAqIE5vLW9wIG1ldHJpYyBwcm9jZXNzb3IgdGhhdCBkaXNjYXJkcyBhbGwgZGF0YS4KICogVXNlIHRoaXMgd2hlbiBtZXRyaWNzIGNvbGxlY3Rpb24gaXMgZGlzYWJsZWQgdG8gbWluaW1pemUgb3ZlcmhlYWQuCiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":191,"slug":"void-log-processor","name":"void_log_processor","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"VoidLogProcessor","namespace":"Flow\\Telemetry\\Provider\\Void","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFZvaWRMb2dQcm9jZXNzb3IuCiAqCiAqIE5vLW9wIGxvZyBwcm9jZXNzb3IgdGhhdCBkaXNjYXJkcyBhbGwgZGF0YS4KICogVXNlIHRoaXMgd2hlbiBsb2dnaW5nIGlzIGRpc2FibGVkIHRvIG1pbmltaXplIG92ZXJoZWFkLgogKi8="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":203,"slug":"void-span-exporter","name":"void_span_exporter","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"VoidSpanExporter","namespace":"Flow\\Telemetry\\Provider\\Void","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFZvaWRTcGFuRXhwb3J0ZXIuCiAqCiAqIE5vLW9wIHNwYW4gZXhwb3J0ZXIgdGhhdCBkaXNjYXJkcyBhbGwgZGF0YS4KICogVXNlIHRoaXMgd2hlbiB0ZWxlbWV0cnkgZXhwb3J0IGlzIGRpc2FibGVkIHRvIG1pbmltaXplIG92ZXJoZWFkLgogKi8="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":215,"slug":"void-metric-exporter","name":"void_metric_exporter","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"VoidMetricExporter","namespace":"Flow\\Telemetry\\Provider\\Void","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFZvaWRNZXRyaWNFeHBvcnRlci4KICoKICogTm8tb3AgbWV0cmljIGV4cG9ydGVyIHRoYXQgZGlzY2FyZHMgYWxsIGRhdGEuCiAqIFVzZSB0aGlzIHdoZW4gdGVsZW1ldHJ5IGV4cG9ydCBpcyBkaXNhYmxlZCB0byBtaW5pbWl6ZSBvdmVyaGVhZC4KICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":227,"slug":"void-log-exporter","name":"void_log_exporter","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"VoidLogExporter","namespace":"Flow\\Telemetry\\Provider\\Void","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFZvaWRMb2dFeHBvcnRlci4KICoKICogTm8tb3AgbG9nIGV4cG9ydGVyIHRoYXQgZGlzY2FyZHMgYWxsIGRhdGEuCiAqIFVzZSB0aGlzIHdoZW4gdGVsZW1ldHJ5IGV4cG9ydCBpcyBkaXNhYmxlZCB0byBtaW5pbWl6ZSBvdmVyaGVhZC4KICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":240,"slug":"memory-span-exporter","name":"memory_span_exporter","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"MemorySpanExporter","namespace":"Flow\\Telemetry\\Provider\\Memory","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIE1lbW9yeVNwYW5FeHBvcnRlci4KICoKICogU3BhbiBleHBvcnRlciB0aGF0IHN0b3JlcyBkYXRhIGluIG1lbW9yeS4KICogUHJvdmlkZXMgZGlyZWN0IGdldHRlciBhY2Nlc3MgdG8gZXhwb3J0ZWQgc3BhbnMuCiAqIFVzZWZ1bCBmb3IgdGVzdGluZyBhbmQgaW5zcGVjdGlvbiB3aXRob3V0IHNlcmlhbGl6YXRpb24uCiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":253,"slug":"memory-metric-exporter","name":"memory_metric_exporter","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"MemoryMetricExporter","namespace":"Flow\\Telemetry\\Provider\\Memory","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIE1lbW9yeU1ldHJpY0V4cG9ydGVyLgogKgogKiBNZXRyaWMgZXhwb3J0ZXIgdGhhdCBzdG9yZXMgZGF0YSBpbiBtZW1vcnkuCiAqIFByb3ZpZGVzIGRpcmVjdCBnZXR0ZXIgYWNjZXNzIHRvIGV4cG9ydGVkIG1ldHJpY3MuCiAqIFVzZWZ1bCBmb3IgdGVzdGluZyBhbmQgaW5zcGVjdGlvbiB3aXRob3V0IHNlcmlhbGl6YXRpb24uCiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":266,"slug":"memory-log-exporter","name":"memory_log_exporter","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"MemoryLogExporter","namespace":"Flow\\Telemetry\\Provider\\Memory","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIE1lbW9yeUxvZ0V4cG9ydGVyLgogKgogKiBMb2cgZXhwb3J0ZXIgdGhhdCBzdG9yZXMgZGF0YSBpbiBtZW1vcnkuCiAqIFByb3ZpZGVzIGRpcmVjdCBnZXR0ZXIgYWNjZXNzIHRvIGV4cG9ydGVkIGxvZyBlbnRyaWVzLgogKiBVc2VmdWwgZm9yIHRlc3RpbmcgYW5kIGluc3BlY3Rpb24gd2l0aG91dCBzZXJpYWxpemF0aW9uLgogKi8="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":280,"slug":"memory-span-processor","name":"memory_span_processor","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"exporter","type":[{"name":"SpanExporter","namespace":"Flow\\Telemetry\\Tracer","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"MemorySpanProcessor","namespace":"Flow\\Telemetry\\Provider\\Memory","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIE1lbW9yeVNwYW5Qcm9jZXNzb3IuCiAqCiAqIFNwYW4gcHJvY2Vzc29yIHRoYXQgc3RvcmVzIHNwYW5zIGluIG1lbW9yeSBhbmQgZXhwb3J0cyB2aWEgY29uZmlndXJlZCBleHBvcnRlci4KICogVXNlZnVsIGZvciB0ZXN0aW5nLgogKgogKiBAcGFyYW0gU3BhbkV4cG9ydGVyICRleHBvcnRlciBUaGUgZXhwb3J0ZXIgdG8gc2VuZCBzcGFucyB0bwogKi8="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":294,"slug":"memory-metric-processor","name":"memory_metric_processor","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"exporter","type":[{"name":"MetricExporter","namespace":"Flow\\Telemetry\\Meter","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"MemoryMetricProcessor","namespace":"Flow\\Telemetry\\Provider\\Memory","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIE1lbW9yeU1ldHJpY1Byb2Nlc3Nvci4KICoKICogTWV0cmljIHByb2Nlc3NvciB0aGF0IHN0b3JlcyBtZXRyaWNzIGluIG1lbW9yeSBhbmQgZXhwb3J0cyB2aWEgY29uZmlndXJlZCBleHBvcnRlci4KICogVXNlZnVsIGZvciB0ZXN0aW5nLgogKgogKiBAcGFyYW0gTWV0cmljRXhwb3J0ZXIgJGV4cG9ydGVyIFRoZSBleHBvcnRlciB0byBzZW5kIG1ldHJpY3MgdG8KICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":308,"slug":"memory-log-processor","name":"memory_log_processor","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"exporter","type":[{"name":"LogExporter","namespace":"Flow\\Telemetry\\Logger","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"MemoryLogProcessor","namespace":"Flow\\Telemetry\\Provider\\Memory","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIE1lbW9yeUxvZ1Byb2Nlc3Nvci4KICoKICogTG9nIHByb2Nlc3NvciB0aGF0IHN0b3JlcyBsb2cgcmVjb3JkcyBpbiBtZW1vcnkgYW5kIGV4cG9ydHMgdmlhIGNvbmZpZ3VyZWQgZXhwb3J0ZXIuCiAqIFVzZWZ1bCBmb3IgdGVzdGluZy4KICoKICogQHBhcmFtIExvZ0V4cG9ydGVyICRleHBvcnRlciBUaGUgZXhwb3J0ZXIgdG8gc2VuZCBsb2dzIHRvCiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":326,"slug":"tracer-provider","name":"tracer_provider","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"processor","type":[{"name":"SpanProcessor","namespace":"Flow\\Telemetry\\Tracer","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"clock","type":[{"name":"ClockInterface","namespace":"Psr\\Clock","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"contextStorage","type":[{"name":"ContextStorage","namespace":"Flow\\Telemetry\\Context","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"sampler","type":[{"name":"Sampler","namespace":"Flow\\Telemetry\\Tracer\\Sampler","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Telemetry\\Tracer\\Sampler\\AlwaysOnSampler::..."}],"return_type":[{"name":"TracerProvider","namespace":"Flow\\Telemetry\\Tracer","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFRyYWNlclByb3ZpZGVyLgogKgogKiBDcmVhdGVzIGEgcHJvdmlkZXIgdGhhdCB1c2VzIGEgU3BhblByb2Nlc3NvciBmb3IgcHJvY2Vzc2luZyBzcGFucy4KICogRm9yIHZvaWQvZGlzYWJsZWQgdHJhY2luZywgcGFzcyB2b2lkX3Byb2Nlc3NvcigpLgogKiBGb3IgbWVtb3J5LWJhc2VkIHRlc3RpbmcsIHBhc3MgbWVtb3J5X3Byb2Nlc3NvcigpIHdpdGggZXhwb3J0ZXJzLgogKgogKiBAcGFyYW0gU3BhblByb2Nlc3NvciAkcHJvY2Vzc29yIFRoZSBwcm9jZXNzb3IgZm9yIHNwYW5zCiAqIEBwYXJhbSBDbG9ja0ludGVyZmFjZSAkY2xvY2sgVGhlIGNsb2NrIGZvciB0aW1lc3RhbXBzCiAqIEBwYXJhbSBDb250ZXh0U3RvcmFnZSAkY29udGV4dFN0b3JhZ2UgU3RvcmFnZSBmb3IgY29udGV4dCBwcm9wYWdhdGlvbgogKiBAcGFyYW0gU2FtcGxlciAkc2FtcGxlciBTYW1wbGluZyBzdHJhdGVneSBmb3Igc3BhbnMKICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":352,"slug":"logger-provider","name":"logger_provider","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"processor","type":[{"name":"LogProcessor","namespace":"Flow\\Telemetry\\Logger","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"clock","type":[{"name":"ClockInterface","namespace":"Psr\\Clock","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"contextStorage","type":[{"name":"ContextStorage","namespace":"Flow\\Telemetry\\Context","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"LoggerProvider","namespace":"Flow\\Telemetry\\Logger","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIExvZ2dlclByb3ZpZGVyLgogKgogKiBDcmVhdGVzIGEgcHJvdmlkZXIgdGhhdCB1c2VzIGEgTG9nUHJvY2Vzc29yIGZvciBwcm9jZXNzaW5nIGxvZ3MuCiAqIEZvciB2b2lkL2Rpc2FibGVkIGxvZ2dpbmcsIHBhc3Mgdm9pZF9wcm9jZXNzb3IoKS4KICogRm9yIG1lbW9yeS1iYXNlZCB0ZXN0aW5nLCBwYXNzIG1lbW9yeV9wcm9jZXNzb3IoKSB3aXRoIGV4cG9ydGVycy4KICoKICogQHBhcmFtIExvZ1Byb2Nlc3NvciAkcHJvY2Vzc29yIFRoZSBwcm9jZXNzb3IgZm9yIGxvZ3MKICogQHBhcmFtIENsb2NrSW50ZXJmYWNlICRjbG9jayBUaGUgY2xvY2sgZm9yIHRpbWVzdGFtcHMKICogQHBhcmFtIENvbnRleHRTdG9yYWdlICRjb250ZXh0U3RvcmFnZSBTdG9yYWdlIGZvciBzcGFuIGNvcnJlbGF0aW9uCiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":377,"slug":"meter-provider","name":"meter_provider","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"processor","type":[{"name":"MetricProcessor","namespace":"Flow\\Telemetry\\Meter","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"clock","type":[{"name":"ClockInterface","namespace":"Psr\\Clock","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"temporality","type":[{"name":"AggregationTemporality","namespace":"Flow\\Telemetry\\Meter","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Telemetry\\Meter\\AggregationTemporality::..."},{"name":"exemplarFilter","type":[{"name":"ExemplarFilter","namespace":"Flow\\Telemetry\\Meter\\Exemplar","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Telemetry\\Meter\\Exemplar\\TraceBasedExemplarFilter::..."}],"return_type":[{"name":"MeterProvider","namespace":"Flow\\Telemetry\\Meter","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIE1ldGVyUHJvdmlkZXIuCiAqCiAqIENyZWF0ZXMgYSBwcm92aWRlciB0aGF0IHVzZXMgYSBNZXRyaWNQcm9jZXNzb3IgZm9yIHByb2Nlc3NpbmcgbWV0cmljcy4KICogRm9yIHZvaWQvZGlzYWJsZWQgbWV0cmljcywgcGFzcyB2b2lkX3Byb2Nlc3NvcigpLgogKiBGb3IgbWVtb3J5LWJhc2VkIHRlc3RpbmcsIHBhc3MgbWVtb3J5X3Byb2Nlc3NvcigpIHdpdGggZXhwb3J0ZXJzLgogKgogKiBAcGFyYW0gTWV0cmljUHJvY2Vzc29yICRwcm9jZXNzb3IgVGhlIHByb2Nlc3NvciBmb3IgbWV0cmljcwogKiBAcGFyYW0gQ2xvY2tJbnRlcmZhY2UgJGNsb2NrIFRoZSBjbG9jayBmb3IgdGltZXN0YW1wcwogKiBAcGFyYW0gQWdncmVnYXRpb25UZW1wb3JhbGl0eSAkdGVtcG9yYWxpdHkgQWdncmVnYXRpb24gdGVtcG9yYWxpdHkgZm9yIG1ldHJpY3MKICogQHBhcmFtIEV4ZW1wbGFyRmlsdGVyICRleGVtcGxhckZpbHRlciBGaWx0ZXIgZm9yIGV4ZW1wbGFyIHNhbXBsaW5nIChkZWZhdWx0OiBUcmFjZUJhc2VkRXhlbXBsYXJGaWx0ZXIpCiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":402,"slug":"telemetry","name":"telemetry","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"resource","type":[{"name":"Resource","namespace":"Flow\\Telemetry","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"tracerProvider","type":[{"name":"TracerProvider","namespace":"Flow\\Telemetry\\Tracer","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"meterProvider","type":[{"name":"MeterProvider","namespace":"Flow\\Telemetry\\Meter","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"loggerProvider","type":[{"name":"LoggerProvider","namespace":"Flow\\Telemetry\\Logger","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Telemetry","namespace":"Flow\\Telemetry","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIG5ldyBUZWxlbWV0cnkgaW5zdGFuY2Ugd2l0aCB0aGUgZ2l2ZW4gcHJvdmlkZXJzLgogKgogKiBJZiBwcm92aWRlcnMgYXJlIG5vdCBzcGVjaWZpZWQsIHZvaWQgcHJvdmlkZXJzIChuby1vcCkgYXJlIHVzZWQuCiAqCiAqIEBwYXJhbSByZXNvdXJjZSAkcmVzb3VyY2UgVGhlIHJlc291cmNlIGRlc2NyaWJpbmcgdGhlIGVudGl0eSBwcm9kdWNpbmcgdGVsZW1ldHJ5CiAqIEBwYXJhbSBudWxsfFRyYWNlclByb3ZpZGVyICR0cmFjZXJQcm92aWRlciBUaGUgdHJhY2VyIHByb3ZpZGVyIChudWxsIGZvciB2b2lkL2Rpc2FibGVkKQogKiBAcGFyYW0gbnVsbHxNZXRlclByb3ZpZGVyICRtZXRlclByb3ZpZGVyIFRoZSBtZXRlciBwcm92aWRlciAobnVsbCBmb3Igdm9pZC9kaXNhYmxlZCkKICogQHBhcmFtIG51bGx8TG9nZ2VyUHJvdmlkZXIgJGxvZ2dlclByb3ZpZGVyIFRoZSBsb2dnZXIgcHJvdmlkZXIgKG51bGwgZm9yIHZvaWQvZGlzYWJsZWQpCiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":427,"slug":"instrumentation-scope","name":"instrumentation_scope","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"version","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'unknown'"},{"name":"schemaUrl","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"attributes","type":[{"name":"Attributes","namespace":"Flow\\Telemetry","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Telemetry\\Attributes::..."}],"return_type":[{"name":"InstrumentationScope","namespace":"Flow\\Telemetry","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBJbnN0cnVtZW50YXRpb25TY29wZS4KICoKICogQHBhcmFtIHN0cmluZyAkbmFtZSBUaGUgaW5zdHJ1bWVudGF0aW9uIHNjb3BlIG5hbWUKICogQHBhcmFtIHN0cmluZyAkdmVyc2lvbiBUaGUgaW5zdHJ1bWVudGF0aW9uIHNjb3BlIHZlcnNpb24KICogQHBhcmFtIG51bGx8c3RyaW5nICRzY2hlbWFVcmwgT3B0aW9uYWwgc2NoZW1hIFVSTAogKi8="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":446,"slug":"batching-span-processor","name":"batching_span_processor","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"exporter","type":[{"name":"SpanExporter","namespace":"Flow\\Telemetry\\Tracer","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"batchSize","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"512"}],"return_type":[{"name":"BatchingSpanProcessor","namespace":"Flow\\Telemetry\\Tracer\\Processor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEJhdGNoaW5nU3BhblByb2Nlc3Nvci4KICoKICogQ29sbGVjdHMgc3BhbnMgaW4gbWVtb3J5IGFuZCBleHBvcnRzIHRoZW0gaW4gYmF0Y2hlcyBmb3IgZWZmaWNpZW5jeS4KICogU3BhbnMgYXJlIGV4cG9ydGVkIHdoZW4gYmF0Y2ggc2l6ZSBpcyByZWFjaGVkLCBmbHVzaCgpIGlzIGNhbGxlZCwgb3Igc2h1dGRvd24oKS4KICoKICogQHBhcmFtIFNwYW5FeHBvcnRlciAkZXhwb3J0ZXIgVGhlIGV4cG9ydGVyIHRvIHNlbmQgc3BhbnMgdG8KICogQHBhcmFtIGludCAkYmF0Y2hTaXplIE51bWJlciBvZiBzcGFucyB0byBjb2xsZWN0IGJlZm9yZSBleHBvcnRpbmcgKGRlZmF1bHQgNTEyKQogKi8="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":460,"slug":"pass-through-span-processor","name":"pass_through_span_processor","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"exporter","type":[{"name":"SpanExporter","namespace":"Flow\\Telemetry\\Tracer","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"PassThroughSpanProcessor","namespace":"Flow\\Telemetry\\Tracer\\Processor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFBhc3NUaHJvdWdoU3BhblByb2Nlc3Nvci4KICoKICogRXhwb3J0cyBlYWNoIHNwYW4gaW1tZWRpYXRlbHkgd2hlbiBpdCBlbmRzLgogKiBVc2VmdWwgZm9yIGRlYnVnZ2luZyB3aGVyZSBpbW1lZGlhdGUgdmlzaWJpbGl0eSBpcyBtb3JlIGltcG9ydGFudCB0aGFuIHBlcmZvcm1hbmNlLgogKgogKiBAcGFyYW0gU3BhbkV4cG9ydGVyICRleHBvcnRlciBUaGUgZXhwb3J0ZXIgdG8gc2VuZCBzcGFucyB0bwogKi8="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":475,"slug":"batching-metric-processor","name":"batching_metric_processor","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"exporter","type":[{"name":"MetricExporter","namespace":"Flow\\Telemetry\\Meter","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"batchSize","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"512"}],"return_type":[{"name":"BatchingMetricProcessor","namespace":"Flow\\Telemetry\\Meter\\Processor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEJhdGNoaW5nTWV0cmljUHJvY2Vzc29yLgogKgogKiBDb2xsZWN0cyBtZXRyaWNzIGluIG1lbW9yeSBhbmQgZXhwb3J0cyB0aGVtIGluIGJhdGNoZXMgZm9yIGVmZmljaWVuY3kuCiAqIE1ldHJpY3MgYXJlIGV4cG9ydGVkIHdoZW4gYmF0Y2ggc2l6ZSBpcyByZWFjaGVkLCBmbHVzaCgpIGlzIGNhbGxlZCwgb3Igc2h1dGRvd24oKS4KICoKICogQHBhcmFtIE1ldHJpY0V4cG9ydGVyICRleHBvcnRlciBUaGUgZXhwb3J0ZXIgdG8gc2VuZCBtZXRyaWNzIHRvCiAqIEBwYXJhbSBpbnQgJGJhdGNoU2l6ZSBOdW1iZXIgb2YgbWV0cmljcyB0byBjb2xsZWN0IGJlZm9yZSBleHBvcnRpbmcgKGRlZmF1bHQgNTEyKQogKi8="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":489,"slug":"pass-through-metric-processor","name":"pass_through_metric_processor","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"exporter","type":[{"name":"MetricExporter","namespace":"Flow\\Telemetry\\Meter","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"PassThroughMetricProcessor","namespace":"Flow\\Telemetry\\Meter\\Processor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFBhc3NUaHJvdWdoTWV0cmljUHJvY2Vzc29yLgogKgogKiBFeHBvcnRzIGVhY2ggbWV0cmljIGltbWVkaWF0ZWx5IHdoZW4gcHJvY2Vzc2VkLgogKiBVc2VmdWwgZm9yIGRlYnVnZ2luZyB3aGVyZSBpbW1lZGlhdGUgdmlzaWJpbGl0eSBpcyBtb3JlIGltcG9ydGFudCB0aGFuIHBlcmZvcm1hbmNlLgogKgogKiBAcGFyYW0gTWV0cmljRXhwb3J0ZXIgJGV4cG9ydGVyIFRoZSBleHBvcnRlciB0byBzZW5kIG1ldHJpY3MgdG8KICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":504,"slug":"batching-log-processor","name":"batching_log_processor","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"exporter","type":[{"name":"LogExporter","namespace":"Flow\\Telemetry\\Logger","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"batchSize","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"512"}],"return_type":[{"name":"BatchingLogProcessor","namespace":"Flow\\Telemetry\\Logger\\Processor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEJhdGNoaW5nTG9nUHJvY2Vzc29yLgogKgogKiBDb2xsZWN0cyBsb2cgcmVjb3JkcyBpbiBtZW1vcnkgYW5kIGV4cG9ydHMgdGhlbSBpbiBiYXRjaGVzIGZvciBlZmZpY2llbmN5LgogKiBMb2dzIGFyZSBleHBvcnRlZCB3aGVuIGJhdGNoIHNpemUgaXMgcmVhY2hlZCwgZmx1c2goKSBpcyBjYWxsZWQsIG9yIHNodXRkb3duKCkuCiAqCiAqIEBwYXJhbSBMb2dFeHBvcnRlciAkZXhwb3J0ZXIgVGhlIGV4cG9ydGVyIHRvIHNlbmQgbG9ncyB0bwogKiBAcGFyYW0gaW50ICRiYXRjaFNpemUgTnVtYmVyIG9mIGxvZ3MgdG8gY29sbGVjdCBiZWZvcmUgZXhwb3J0aW5nIChkZWZhdWx0IDUxMikKICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":518,"slug":"pass-through-log-processor","name":"pass_through_log_processor","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"exporter","type":[{"name":"LogExporter","namespace":"Flow\\Telemetry\\Logger","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"PassThroughLogProcessor","namespace":"Flow\\Telemetry\\Logger\\Processor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFBhc3NUaHJvdWdoTG9nUHJvY2Vzc29yLgogKgogKiBFeHBvcnRzIGVhY2ggbG9nIHJlY29yZCBpbW1lZGlhdGVseSB3aGVuIHByb2Nlc3NlZC4KICogVXNlZnVsIGZvciBkZWJ1Z2dpbmcgd2hlcmUgaW1tZWRpYXRlIHZpc2liaWxpdHkgaXMgbW9yZSBpbXBvcnRhbnQgdGhhbiBwZXJmb3JtYW5jZS4KICoKICogQHBhcmFtIExvZ0V4cG9ydGVyICRleHBvcnRlciBUaGUgZXhwb3J0ZXIgdG8gc2VuZCBsb2dzIHRvCiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":533,"slug":"severity-filtering-log-processor","name":"severity_filtering_log_processor","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"processor","type":[{"name":"LogProcessor","namespace":"Flow\\Telemetry\\Logger","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"minimumSeverity","type":[{"name":"Severity","namespace":"Flow\\Telemetry\\Logger","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Telemetry\\Logger\\Severity::..."}],"return_type":[{"name":"SeverityFilteringLogProcessor","namespace":"Flow\\Telemetry\\Logger\\Processor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFNldmVyaXR5RmlsdGVyaW5nTG9nUHJvY2Vzc29yLgogKgogKiBGaWx0ZXJzIGxvZyBlbnRyaWVzIGJhc2VkIG9uIG1pbmltdW0gc2V2ZXJpdHkgbGV2ZWwuIE9ubHkgZW50cmllcyBhdCBvciBhYm92ZQogKiB0aGUgY29uZmlndXJlZCB0aHJlc2hvbGQgYXJlIHBhc3NlZCB0byB0aGUgd3JhcHBlZCBwcm9jZXNzb3IuCiAqCiAqIEBwYXJhbSBMb2dQcm9jZXNzb3IgJHByb2Nlc3NvciBUaGUgcHJvY2Vzc29yIHRvIHdyYXAKICogQHBhcmFtIFNldmVyaXR5ICRtaW5pbXVtU2V2ZXJpdHkgTWluaW11bSBzZXZlcml0eSBsZXZlbCAoZGVmYXVsdDogSU5GTykKICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":549,"slug":"console-span-exporter","name":"console_span_exporter","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"colors","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"}],"return_type":[{"name":"ConsoleSpanExporter","namespace":"Flow\\Telemetry\\Provider\\Console","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIENvbnNvbGVTcGFuRXhwb3J0ZXIuCiAqCiAqIE91dHB1dHMgc3BhbnMgdG8gdGhlIGNvbnNvbGUgd2l0aCBBU0NJSSB0YWJsZSBmb3JtYXR0aW5nLgogKiBVc2VmdWwgZm9yIGRlYnVnZ2luZyBhbmQgZGV2ZWxvcG1lbnQuCiAqCiAqIEBwYXJhbSBib29sICRjb2xvcnMgV2hldGhlciB0byB1c2UgQU5TSSBjb2xvcnMgKGRlZmF1bHQ6IHRydWUpCiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":563,"slug":"console-metric-exporter","name":"console_metric_exporter","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"colors","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"}],"return_type":[{"name":"ConsoleMetricExporter","namespace":"Flow\\Telemetry\\Provider\\Console","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIENvbnNvbGVNZXRyaWNFeHBvcnRlci4KICoKICogT3V0cHV0cyBtZXRyaWNzIHRvIHRoZSBjb25zb2xlIHdpdGggQVNDSUkgdGFibGUgZm9ybWF0dGluZy4KICogVXNlZnVsIGZvciBkZWJ1Z2dpbmcgYW5kIGRldmVsb3BtZW50LgogKgogKiBAcGFyYW0gYm9vbCAkY29sb3JzIFdoZXRoZXIgdG8gdXNlIEFOU0kgY29sb3JzIChkZWZhdWx0OiB0cnVlKQogKi8="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":578,"slug":"console-log-exporter","name":"console_log_exporter","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"colors","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"},{"name":"maxBodyLength","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"100"}],"return_type":[{"name":"ConsoleLogExporter","namespace":"Flow\\Telemetry\\Provider\\Console","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIENvbnNvbGVMb2dFeHBvcnRlci4KICoKICogT3V0cHV0cyBsb2cgcmVjb3JkcyB0byB0aGUgY29uc29sZSB3aXRoIHNldmVyaXR5LWJhc2VkIGNvbG9yaW5nLgogKiBVc2VmdWwgZm9yIGRlYnVnZ2luZyBhbmQgZGV2ZWxvcG1lbnQuCiAqCiAqIEBwYXJhbSBib29sICRjb2xvcnMgV2hldGhlciB0byB1c2UgQU5TSSBjb2xvcnMgKGRlZmF1bHQ6IHRydWUpCiAqIEBwYXJhbSBudWxsfGludCAkbWF4Qm9keUxlbmd0aCBNYXhpbXVtIGxlbmd0aCBmb3IgYm9keSthdHRyaWJ1dGVzIGNvbHVtbiAobnVsbCA9IG5vIGxpbWl0LCBkZWZhdWx0OiAxMDApCiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":590,"slug":"always-on-exemplar-filter","name":"always_on_exemplar_filter","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"AlwaysOnExemplarFilter","namespace":"Flow\\Telemetry\\Meter\\Exemplar","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBBbHdheXNPbkV4ZW1wbGFyRmlsdGVyLgogKgogKiBSZWNvcmRzIGV4ZW1wbGFycyB3aGVuZXZlciBhIHNwYW4gY29udGV4dCBpcyBwcmVzZW50LgogKiBVc2UgdGhpcyBmaWx0ZXIgZm9yIGRlYnVnZ2luZyBvciB3aGVuIGNvbXBsZXRlIHRyYWNlIGNvbnRleHQgaXMgaW1wb3J0YW50LgogKi8="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":602,"slug":"always-off-exemplar-filter","name":"always_off_exemplar_filter","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"AlwaysOffExemplarFilter","namespace":"Flow\\Telemetry\\Meter\\Exemplar","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBBbHdheXNPZmZFeGVtcGxhckZpbHRlci4KICoKICogTmV2ZXIgcmVjb3JkcyBleGVtcGxhcnMuIFVzZSB0aGlzIGZpbHRlciB0byBkaXNhYmxlIGV4ZW1wbGFyIGNvbGxlY3Rpb24KICogZW50aXJlbHkgZm9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbi4KICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":614,"slug":"trace-based-exemplar-filter","name":"trace_based_exemplar_filter","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"TraceBasedExemplarFilter","namespace":"Flow\\Telemetry\\Meter\\Exemplar","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFRyYWNlQmFzZWRFeGVtcGxhckZpbHRlci4KICoKICogUmVjb3JkcyBleGVtcGxhcnMgb25seSB3aGVuIHRoZSBzcGFuIGlzIHNhbXBsZWQgKGhhcyBTQU1QTEVEIHRyYWNlIGZsYWcpLgogKiBUaGlzIGlzIHRoZSBkZWZhdWx0IGZpbHRlciwgYmFsYW5jaW5nIGV4ZW1wbGFyIGNvbGxlY3Rpb24gd2l0aCBwZXJmb3JtYW5jZS4KICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":629,"slug":"propagation-context","name":"propagation_context","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"spanContext","type":[{"name":"SpanContext","namespace":"Flow\\Telemetry\\Tracer","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"baggage","type":[{"name":"Baggage","namespace":"Flow\\Telemetry\\Context","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"PropagationContext","namespace":"Flow\\Telemetry\\Propagation","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFByb3BhZ2F0aW9uQ29udGV4dC4KICoKICogVmFsdWUgb2JqZWN0IGNvbnRhaW5pbmcgYm90aCB0cmFjZSBjb250ZXh0IChTcGFuQ29udGV4dCkgYW5kIGFwcGxpY2F0aW9uCiAqIGRhdGEgKEJhZ2dhZ2UpIHRoYXQgY2FuIGJlIHByb3BhZ2F0ZWQgYWNyb3NzIHByb2Nlc3MgYm91bmRhcmllcy4KICoKICogQHBhcmFtIG51bGx8U3BhbkNvbnRleHQgJHNwYW5Db250ZXh0IE9wdGlvbmFsIHNwYW4gY29udGV4dAogKiBAcGFyYW0gbnVsbHxCYWdnYWdlICRiYWdnYWdlIE9wdGlvbmFsIGJhZ2dhZ2UKICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":642,"slug":"array-carrier","name":"array_carrier","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"data","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"ArrayCarrier","namespace":"Flow\\Telemetry\\Propagation","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBBcnJheUNhcnJpZXIuCiAqCiAqIENhcnJpZXIgYmFja2VkIGJ5IGFuIGFzc29jaWF0aXZlIGFycmF5IHdpdGggY2FzZS1pbnNlbnNpdGl2ZSBrZXkgbG9va3VwLgogKgogKiBAcGFyYW0gYXJyYXk8c3RyaW5nLCBzdHJpbmc+ICRkYXRhIEluaXRpYWwgY2FycmllciBkYXRhCiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":654,"slug":"superglobal-carrier","name":"superglobal_carrier","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"SuperglobalCarrier","namespace":"Flow\\Telemetry\\Propagation","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFN1cGVyZ2xvYmFsQ2Fycmllci4KICoKICogUmVhZC1vbmx5IGNhcnJpZXIgdGhhdCBleHRyYWN0cyBjb250ZXh0IGZyb20gUEhQIHN1cGVyZ2xvYmFscwogKiAoJF9TRVJWRVIsICRfR0VULCAkX1BPU1QsICRfQ09PS0lFKS4KICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":666,"slug":"w3c-trace-context","name":"w3c_trace_context","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"W3CTraceContext","namespace":"Flow\\Telemetry\\Propagation","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFczQ1RyYWNlQ29udGV4dCBwcm9wYWdhdG9yLgogKgogKiBJbXBsZW1lbnRzIFczQyBUcmFjZSBDb250ZXh0IHNwZWNpZmljYXRpb24gZm9yIHByb3BhZ2F0aW5nIHRyYWNlIGNvbnRleHQKICogdXNpbmcgdHJhY2VwYXJlbnQgYW5kIHRyYWNlc3RhdGUgaGVhZGVycy4KICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":678,"slug":"w3c-baggage","name":"w3c_baggage","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"W3CBaggage","namespace":"Flow\\Telemetry\\Propagation","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFczQ0JhZ2dhZ2UgcHJvcGFnYXRvci4KICoKICogSW1wbGVtZW50cyBXM0MgQmFnZ2FnZSBzcGVjaWZpY2F0aW9uIGZvciBwcm9wYWdhdGluZyBhcHBsaWNhdGlvbi1zcGVjaWZpYwogKiBrZXktdmFsdWUgcGFpcnMgdXNpbmcgdGhlIGJhZ2dhZ2UgaGVhZGVyLgogKi8="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":692,"slug":"composite-propagator","name":"composite_propagator","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"propagators","type":[{"name":"Propagator","namespace":"Flow\\Telemetry\\Propagation","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"CompositePropagator","namespace":"Flow\\Telemetry\\Propagation","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIENvbXBvc2l0ZVByb3BhZ2F0b3IuCiAqCiAqIENvbWJpbmVzIG11bHRpcGxlIHByb3BhZ2F0b3JzIGludG8gb25lLiBPbiBleHRyYWN0LCBhbGwgcHJvcGFnYXRvcnMgYXJlCiAqIGludm9rZWQgYW5kIHRoZWlyIGNvbnRleHRzIGFyZSBtZXJnZWQuIE9uIGluamVjdCwgYWxsIHByb3BhZ2F0b3JzIGFyZSBpbnZva2VkLgogKgogKiBAcGFyYW0gUHJvcGFnYXRvciAuLi4kcHJvcGFnYXRvcnMgVGhlIHByb3BhZ2F0b3JzIHRvIGNvbWJpbmUKICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":707,"slug":"chain-detector","name":"chain_detector","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"detectors","type":[{"name":"ResourceDetector","namespace":"Flow\\Telemetry\\Resource","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"ChainDetector","namespace":"Flow\\Telemetry\\Resource\\Detector","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIENoYWluRGV0ZWN0b3IuCiAqCiAqIENvbWJpbmVzIG11bHRpcGxlIHJlc291cmNlIGRldGVjdG9ycyBpbnRvIGEgY2hhaW4uIERldGVjdG9ycyBhcmUgZXhlY3V0ZWQKICogaW4gb3JkZXIgYW5kIHRoZWlyIHJlc3VsdHMgYXJlIG1lcmdlZC4gTGF0ZXIgZGV0ZWN0b3JzIHRha2UgcHJlY2VkZW5jZQogKiBvdmVyIGVhcmxpZXIgb25lcyB3aGVuIHRoZXJlIGFyZSBjb25mbGljdGluZyBhdHRyaWJ1dGUga2V5cy4KICoKICogQHBhcmFtIFJlc291cmNlRGV0ZWN0b3IgLi4uJGRldGVjdG9ycyBUaGUgZGV0ZWN0b3JzIHRvIGNoYWluCiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":719,"slug":"os-detector","name":"os_detector","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"OsDetector","namespace":"Flow\\Telemetry\\Resource\\Detector","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBPc0RldGVjdG9yLgogKgogKiBEZXRlY3RzIG9wZXJhdGluZyBzeXN0ZW0gaW5mb3JtYXRpb24gaW5jbHVkaW5nIG9zLnR5cGUsIG9zLm5hbWUsIG9zLnZlcnNpb24sCiAqIGFuZCBvcy5kZXNjcmlwdGlvbiB1c2luZyBQSFAncyBwaHBfdW5hbWUoKSBmdW5jdGlvbi4KICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":731,"slug":"host-detector","name":"host_detector","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"HostDetector","namespace":"Flow\\Telemetry\\Resource\\Detector","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEhvc3REZXRlY3Rvci4KICoKICogRGV0ZWN0cyBob3N0IGluZm9ybWF0aW9uIGluY2x1ZGluZyBob3N0Lm5hbWUsIGhvc3QuYXJjaCwgYW5kIGhvc3QuaWQKICogKGZyb20gL2V0Yy9tYWNoaW5lLWlkIG9uIExpbnV4IG9yIElPUGxhdGZvcm1VVUlEIG9uIG1hY09TKS4KICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":744,"slug":"process-detector","name":"process_detector","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"ProcessDetector","namespace":"Flow\\Telemetry\\Resource\\Detector","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFByb2Nlc3NEZXRlY3Rvci4KICoKICogRGV0ZWN0cyBwcm9jZXNzIGluZm9ybWF0aW9uIGluY2x1ZGluZyBwcm9jZXNzLnBpZCwgcHJvY2Vzcy5leGVjdXRhYmxlLnBhdGgsCiAqIHByb2Nlc3MucnVudGltZS5uYW1lIChQSFApLCBwcm9jZXNzLnJ1bnRpbWUudmVyc2lvbiwgcHJvY2Vzcy5jb21tYW5kLAogKiBhbmQgcHJvY2Vzcy5vd25lciAob24gUE9TSVggc3lzdGVtcykuCiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":757,"slug":"environment-detector","name":"environment_detector","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"EnvironmentDetector","namespace":"Flow\\Telemetry\\Resource\\Detector","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBFbnZpcm9ubWVudERldGVjdG9yLgogKgogKiBEZXRlY3RzIHJlc291cmNlIGF0dHJpYnV0ZXMgZnJvbSBPcGVuVGVsZW1ldHJ5IHN0YW5kYXJkIGVudmlyb25tZW50IHZhcmlhYmxlczoKICogLSBPVEVMX1NFUlZJQ0VfTkFNRTogU2V0cyBzZXJ2aWNlLm5hbWUgYXR0cmlidXRlCiAqIC0gT1RFTF9SRVNPVVJDRV9BVFRSSUJVVEVTOiBTZXRzIGFkZGl0aW9uYWwgYXR0cmlidXRlcyBpbiBrZXk9dmFsdWUsa2V5Mj12YWx1ZTIgZm9ybWF0CiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":769,"slug":"composer-detector","name":"composer_detector","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"ComposerDetector","namespace":"Flow\\Telemetry\\Resource\\Detector","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIENvbXBvc2VyRGV0ZWN0b3IuCiAqCiAqIERldGVjdHMgc2VydmljZS5uYW1lIGFuZCBzZXJ2aWNlLnZlcnNpb24gZnJvbSBDb21wb3NlcidzIEluc3RhbGxlZFZlcnNpb25zCiAqIHVzaW5nIHRoZSByb290IHBhY2thZ2UgaW5mb3JtYXRpb24uCiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":783,"slug":"manual-detector","name":"manual_detector","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"attributes","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ManualDetector","namespace":"Flow\\Telemetry\\Resource\\Detector","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIE1hbnVhbERldGVjdG9yLgogKgogKiBSZXR1cm5zIG1hbnVhbGx5IHNwZWNpZmllZCByZXNvdXJjZSBhdHRyaWJ1dGVzLiBVc2UgdGhpcyB3aGVuIHlvdSBuZWVkCiAqIHRvIHNldCBhdHRyaWJ1dGVzIGV4cGxpY2l0bHkgcmF0aGVyIHRoYW4gZGV0ZWN0aW5nIHRoZW0gYXV0b21hdGljYWxseS4KICoKICogQHBhcmFtIGFycmF5PHN0cmluZywgYXJyYXk8Ym9vbHxmbG9hdHxpbnR8c3RyaW5nPnxib29sfGZsb2F0fGludHxzdHJpbmc+ICRhdHRyaWJ1dGVzIFJlc291cmNlIGF0dHJpYnV0ZXMKICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":798,"slug":"caching-detector","name":"caching_detector","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"detector","type":[{"name":"ResourceDetector","namespace":"Flow\\Telemetry\\Resource","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"cachePath","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"CachingDetector","namespace":"Flow\\Telemetry\\Resource\\Detector","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIENhY2hpbmdEZXRlY3Rvci4KICoKICogV3JhcHMgYW5vdGhlciBkZXRlY3RvciBhbmQgY2FjaGVzIGl0cyByZXN1bHRzIHRvIGEgZmlsZS4gT24gc3Vic2VxdWVudAogKiBjYWxscywgcmV0dXJucyB0aGUgY2FjaGVkIHJlc291cmNlIGluc3RlYWQgb2YgcnVubmluZyBkZXRlY3Rpb24gYWdhaW4uCiAqCiAqIEBwYXJhbSBSZXNvdXJjZURldGVjdG9yICRkZXRlY3RvciBUaGUgZGV0ZWN0b3IgdG8gd3JhcAogKiBAcGFyYW0gbnVsbHxzdHJpbmcgJGNhY2hlUGF0aCBDYWNoZSBmaWxlIHBhdGggKGRlZmF1bHQ6IHN5c19nZXRfdGVtcF9kaXIoKS9mbG93X3RlbGVtZXRyeV9yZXNvdXJjZS5jYWNoZSkKICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":818,"slug":"resource-detector","name":"resource_detector","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"detectors","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"ChainDetector","namespace":"Flow\\Telemetry\\Resource\\Detector","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHJlc291cmNlIGRldGVjdG9yIGNoYWluLgogKgogKiBXaGVuIG5vIGRldGVjdG9ycyBhcmUgcHJvdmlkZWQsIHVzZXMgdGhlIGRlZmF1bHQgZGV0ZWN0b3IgY2hhaW46CiAqIDEuIE9zRGV0ZWN0b3IgLSBPcGVyYXRpbmcgc3lzdGVtIGluZm9ybWF0aW9uCiAqIDIuIEhvc3REZXRlY3RvciAtIEhvc3QgaW5mb3JtYXRpb24KICogMy4gUHJvY2Vzc0RldGVjdG9yIC0gUHJvY2VzcyBpbmZvcm1hdGlvbgogKiA0LiBDb21wb3NlckRldGVjdG9yIC0gU2VydmljZSBpbmZvcm1hdGlvbiBmcm9tIENvbXBvc2VyCiAqIDUuIEVudmlyb25tZW50RGV0ZWN0b3IgLSBFbnZpcm9ubWVudCB2YXJpYWJsZSBvdmVycmlkZXMgKGhpZ2hlc3QgcHJlY2VkZW5jZSkKICoKICogV2hlbiBkZXRlY3RvcnMgYXJlIHByb3ZpZGVkLCB1c2VzIG9ubHkgdGhvc2UgZGV0ZWN0b3JzLgogKgogKiBAcGFyYW0gYXJyYXk8UmVzb3VyY2VEZXRlY3Rvcj4gJGRldGVjdG9ycyBPcHRpb25hbCBjdXN0b20gZGV0ZWN0b3JzIChlbXB0eSA9IHVzZSBkZWZhdWx0cykKICov"},{"repository_path":"src\/lib\/azure-sdk\/src\/Flow\/Azure\/SDK\/DSL\/functions.php","start_line_in_file":18,"slug":"azurite-url-factory","name":"azurite_url_factory","namespace":"Flow\\Azure\\SDK\\DSL","parameters":[{"name":"host","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'localhost'"},{"name":"port","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'10000'"},{"name":"secure","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"AzuriteURLFactory","namespace":"Flow\\Azure\\SDK\\BlobService\\URLFactory","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"AZURE_SDK","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/azure-sdk\/src\/Flow\/Azure\/SDK\/DSL\/functions.php","start_line_in_file":24,"slug":"azure-shared-key-authorization-factory","name":"azure_shared_key_authorization_factory","namespace":"Flow\\Azure\\SDK\\DSL","parameters":[{"name":"account","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"key","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"SharedKeyFactory","namespace":"Flow\\Azure\\SDK\\AuthorizationFactory","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"AZURE_SDK","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/azure-sdk\/src\/Flow\/Azure\/SDK\/DSL\/functions.php","start_line_in_file":30,"slug":"azure-blob-service-config","name":"azure_blob_service_config","namespace":"Flow\\Azure\\SDK\\DSL","parameters":[{"name":"account","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"container","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Configuration","namespace":"Flow\\Azure\\SDK\\BlobService","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"AZURE_SDK","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/azure-sdk\/src\/Flow\/Azure\/SDK\/DSL\/functions.php","start_line_in_file":36,"slug":"azure-url-factory","name":"azure_url_factory","namespace":"Flow\\Azure\\SDK\\DSL","parameters":[{"name":"host","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'blob.core.windows.net'"}],"return_type":[{"name":"AzureURLFactory","namespace":"Flow\\Azure\\SDK\\BlobService\\URLFactory","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"AZURE_SDK","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/azure-sdk\/src\/Flow\/Azure\/SDK\/DSL\/functions.php","start_line_in_file":42,"slug":"azure-http-factory","name":"azure_http_factory","namespace":"Flow\\Azure\\SDK\\DSL","parameters":[{"name":"request_factory","type":[{"name":"RequestFactoryInterface","namespace":"Psr\\Http\\Message","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"stream_factory","type":[{"name":"StreamFactoryInterface","namespace":"Psr\\Http\\Message","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"HttpFactory","namespace":"Flow\\Azure\\SDK","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"AZURE_SDK","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/azure-sdk\/src\/Flow\/Azure\/SDK\/DSL\/functions.php","start_line_in_file":48,"slug":"azure-blob-service","name":"azure_blob_service","namespace":"Flow\\Azure\\SDK\\DSL","parameters":[{"name":"configuration","type":[{"name":"Configuration","namespace":"Flow\\Azure\\SDK\\BlobService","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"azure_authorization_factory","type":[{"name":"AuthorizationFactory","namespace":"Flow\\Azure\\SDK","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"client","type":[{"name":"ClientInterface","namespace":"Psr\\Http\\Client","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"azure_http_factory","type":[{"name":"HttpFactory","namespace":"Flow\\Azure\\SDK","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"azure_url_factory","type":[{"name":"URLFactory","namespace":"Flow\\Azure\\SDK","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"logger","type":[{"name":"LoggerInterface","namespace":"Psr\\Log","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"BlobServiceInterface","namespace":"Flow\\Azure\\SDK","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"AZURE_SDK","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/bridge\/filesystem\/azure\/src\/Flow\/Filesystem\/Bridge\/Azure\/DSL\/functions.php","start_line_in_file":12,"slug":"azure-filesystem-options","name":"azure_filesystem_options","namespace":"Flow\\Filesystem\\Bridge\\Azure\\DSL","parameters":[],"return_type":[{"name":"Options","namespace":"Flow\\Filesystem\\Bridge\\Azure","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"AZURE_FILESYSTEM","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/bridge\/filesystem\/azure\/src\/Flow\/Filesystem\/Bridge\/Azure\/DSL\/functions.php","start_line_in_file":18,"slug":"azure-filesystem","name":"azure_filesystem","namespace":"Flow\\Filesystem\\Bridge\\Azure\\DSL","parameters":[{"name":"blob_service","type":[{"name":"BlobServiceInterface","namespace":"Flow\\Azure\\SDK","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"options","type":[{"name":"Options","namespace":"Flow\\Filesystem\\Bridge\\Azure","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Filesystem\\Bridge\\Azure\\Options::..."}],"return_type":[{"name":"AzureBlobFilesystem","namespace":"Flow\\Filesystem\\Bridge\\Azure","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"AZURE_FILESYSTEM","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/bridge\/filesystem\/async-aws\/src\/Flow\/Filesystem\/Bridge\/AsyncAWS\/DSL\/functions.php","start_line_in_file":15,"slug":"aws-s3-client","name":"aws_s3_client","namespace":"Flow\\Filesystem\\Bridge\\AsyncAWS\\DSL","parameters":[{"name":"configuration","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"S3Client","namespace":"AsyncAws\\S3","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"S3_FILESYSTEM","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxzdHJpbmcsIG1peGVkPiAkY29uZmlndXJhdGlvbiAtIGZvciBkZXRhaWxzIHBsZWFzZSBzZWUgaHR0cHM6Ly9hc3luYy1hd3MuY29tL2NsaWVudHMvczMuaHRtbAogKi8="},{"repository_path":"src\/bridge\/filesystem\/async-aws\/src\/Flow\/Filesystem\/Bridge\/AsyncAWS\/DSL\/functions.php","start_line_in_file":22,"slug":"aws-s3-filesystem","name":"aws_s3_filesystem","namespace":"Flow\\Filesystem\\Bridge\\AsyncAWS\\DSL","parameters":[{"name":"bucket","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"s3Client","type":[{"name":"S3Client","namespace":"AsyncAws\\S3","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"options","type":[{"name":"Options","namespace":"Flow\\Filesystem\\Bridge\\AsyncAWS","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Filesystem\\Bridge\\AsyncAWS\\Options::..."}],"return_type":[{"name":"AsyncAWSS3Filesystem","namespace":"Flow\\Filesystem\\Bridge\\AsyncAWS","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"S3_FILESYSTEM","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/bridge\/monolog\/telemetry\/src\/Flow\/Bridge\/Monolog\/Telemetry\/DSL\/functions.php","start_line_in_file":32,"slug":"value-normalizer","name":"value_normalizer","namespace":"Flow\\Bridge\\Monolog\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"ValueNormalizer","namespace":"Flow\\Bridge\\Monolog\\Telemetry","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"MONOLOG_TELEMETRY_BRIDGE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFZhbHVlTm9ybWFsaXplciBmb3IgY29udmVydGluZyBhcmJpdHJhcnkgUEhQIHZhbHVlcyB0byBUZWxlbWV0cnkgYXR0cmlidXRlIHR5cGVzLgogKgogKiBUaGUgbm9ybWFsaXplciBoYW5kbGVzOgogKiAtIG51bGwg4oaSICdudWxsJyBzdHJpbmcKICogLSBzY2FsYXJzIChzdHJpbmcsIGludCwgZmxvYXQsIGJvb2wpIOKGkiB1bmNoYW5nZWQKICogLSBEYXRlVGltZUludGVyZmFjZSDihpIgdW5jaGFuZ2VkCiAqIC0gVGhyb3dhYmxlIOKGkiB1bmNoYW5nZWQKICogLSBhcnJheXMg4oaSIHJlY3Vyc2l2ZWx5IG5vcm1hbGl6ZWQKICogLSBvYmplY3RzIHdpdGggX190b1N0cmluZygpIOKGkiBzdHJpbmcgY2FzdAogKiAtIG9iamVjdHMgd2l0aG91dCBfX3RvU3RyaW5nKCkg4oaSIGNsYXNzIG5hbWUKICogLSBvdGhlciB0eXBlcyDihpIgZ2V0X2RlYnVnX3R5cGUoKSByZXN1bHQKICoKICogRXhhbXBsZSB1c2FnZToKICogYGBgcGhwCiAqICRub3JtYWxpemVyID0gdmFsdWVfbm9ybWFsaXplcigpOwogKiAkbm9ybWFsaXplZCA9ICRub3JtYWxpemVyLT5ub3JtYWxpemUoJHZhbHVlKTsKICogYGBgCiAqLw=="},{"repository_path":"src\/bridge\/monolog\/telemetry\/src\/Flow\/Bridge\/Monolog\/Telemetry\/DSL\/functions.php","start_line_in_file":65,"slug":"severity-mapper","name":"severity_mapper","namespace":"Flow\\Bridge\\Monolog\\Telemetry\\DSL","parameters":[{"name":"customMapping","type":[{"name":"array","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"SeverityMapper","namespace":"Flow\\Bridge\\Monolog\\Telemetry","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"MONOLOG_TELEMETRY_BRIDGE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFNldmVyaXR5TWFwcGVyIGZvciBtYXBwaW5nIE1vbm9sb2cgbGV2ZWxzIHRvIFRlbGVtZXRyeSBzZXZlcml0aWVzLgogKgogKiBAcGFyYW0gbnVsbHxhcnJheTxpbnQsIFNldmVyaXR5PiAkY3VzdG9tTWFwcGluZyBPcHRpb25hbCBjdXN0b20gbWFwcGluZyAoTW9ub2xvZyBMZXZlbCB2YWx1ZSA9PiBUZWxlbWV0cnkgU2V2ZXJpdHkpCiAqCiAqIEV4YW1wbGUgd2l0aCBkZWZhdWx0IG1hcHBpbmc6CiAqIGBgYHBocAogKiAkbWFwcGVyID0gc2V2ZXJpdHlfbWFwcGVyKCk7CiAqIGBgYAogKgogKiBFeGFtcGxlIHdpdGggY3VzdG9tIG1hcHBpbmc6CiAqIGBgYHBocAogKiB1c2UgTW9ub2xvZ1xMZXZlbDsKICogdXNlIEZsb3dcVGVsZW1ldHJ5XExvZ2dlclxTZXZlcml0eTsKICoKICogJG1hcHBlciA9IHNldmVyaXR5X21hcHBlcihbCiAqICAgICBMZXZlbDo6RGVidWctPnZhbHVlID0+IFNldmVyaXR5OjpERUJVRywKICogICAgIExldmVsOjpJbmZvLT52YWx1ZSA9PiBTZXZlcml0eTo6SU5GTywKICogICAgIExldmVsOjpOb3RpY2UtPnZhbHVlID0+IFNldmVyaXR5OjpXQVJOLCAgLy8gQ3VzdG9tOiBOT1RJQ0Ug4oaSIFdBUk4gaW5zdGVhZCBvZiBJTkZPCiAqICAgICBMZXZlbDo6V2FybmluZy0+dmFsdWUgPT4gU2V2ZXJpdHk6OldBUk4sCiAqICAgICBMZXZlbDo6RXJyb3ItPnZhbHVlID0+IFNldmVyaXR5OjpFUlJPUiwKICogICAgIExldmVsOjpDcml0aWNhbC0+dmFsdWUgPT4gU2V2ZXJpdHk6OkZBVEFMLAogKiAgICAgTGV2ZWw6OkFsZXJ0LT52YWx1ZSA9PiBTZXZlcml0eTo6RkFUQUwsCiAqICAgICBMZXZlbDo6RW1lcmdlbmN5LT52YWx1ZSA9PiBTZXZlcml0eTo6RkFUQUwsCiAqIF0pOwogKiBgYGAKICov"},{"repository_path":"src\/bridge\/monolog\/telemetry\/src\/Flow\/Bridge\/Monolog\/Telemetry\/DSL\/functions.php","start_line_in_file":99,"slug":"log-record-converter","name":"log_record_converter","namespace":"Flow\\Bridge\\Monolog\\Telemetry\\DSL","parameters":[{"name":"severityMapper","type":[{"name":"SeverityMapper","namespace":"Flow\\Bridge\\Monolog\\Telemetry","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"valueNormalizer","type":[{"name":"ValueNormalizer","namespace":"Flow\\Bridge\\Monolog\\Telemetry","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"LogRecordConverter","namespace":"Flow\\Bridge\\Monolog\\Telemetry","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"MONOLOG_TELEMETRY_BRIDGE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIExvZ1JlY29yZENvbnZlcnRlciBmb3IgY29udmVydGluZyBNb25vbG9nIExvZ1JlY29yZCB0byBUZWxlbWV0cnkgTG9nUmVjb3JkLgogKgogKiBUaGUgY29udmVydGVyIGhhbmRsZXM6CiAqIC0gU2V2ZXJpdHkgbWFwcGluZyBmcm9tIE1vbm9sb2cgTGV2ZWwgdG8gVGVsZW1ldHJ5IFNldmVyaXR5CiAqIC0gTWVzc2FnZSBib2R5IGNvbnZlcnNpb24KICogLSBDaGFubmVsIGFuZCBsZXZlbCBuYW1lIGFzIG1vbm9sb2cuKiBhdHRyaWJ1dGVzCiAqIC0gQ29udGV4dCB2YWx1ZXMgYXMgY29udGV4dC4qIGF0dHJpYnV0ZXMgKFRocm93YWJsZXMgdXNlIHNldEV4Y2VwdGlvbigpKQogKiAtIEV4dHJhIHZhbHVlcyBhcyBleHRyYS4qIGF0dHJpYnV0ZXMKICoKICogQHBhcmFtIG51bGx8U2V2ZXJpdHlNYXBwZXIgJHNldmVyaXR5TWFwcGVyIEN1c3RvbSBzZXZlcml0eSBtYXBwZXIgKGRlZmF1bHRzIHRvIHN0YW5kYXJkIG1hcHBpbmcpCiAqIEBwYXJhbSBudWxsfFZhbHVlTm9ybWFsaXplciAkdmFsdWVOb3JtYWxpemVyIEN1c3RvbSB2YWx1ZSBub3JtYWxpemVyIChkZWZhdWx0cyB0byBzdGFuZGFyZCBub3JtYWxpemVyKQogKgogKiBFeGFtcGxlIHVzYWdlOgogKiBgYGBwaHAKICogJGNvbnZlcnRlciA9IGxvZ19yZWNvcmRfY29udmVydGVyKCk7CiAqICR0ZWxlbWV0cnlSZWNvcmQgPSAkY29udmVydGVyLT5jb252ZXJ0KCRtb25vbG9nUmVjb3JkKTsKICogYGBgCiAqCiAqIEV4YW1wbGUgd2l0aCBjdXN0b20gbWFwcGVyOgogKiBgYGBwaHAKICogJGNvbnZlcnRlciA9IGxvZ19yZWNvcmRfY29udmVydGVyKAogKiAgICAgc2V2ZXJpdHlNYXBwZXI6IHNldmVyaXR5X21hcHBlcihbCiAqICAgICAgICAgTGV2ZWw6OkRlYnVnLT52YWx1ZSA9PiBTZXZlcml0eTo6VFJBQ0UsCiAqICAgICBdKQogKiApOwogKiBgYGAKICov"},{"repository_path":"src\/bridge\/monolog\/telemetry\/src\/Flow\/Bridge\/Monolog\/Telemetry\/DSL\/functions.php","start_line_in_file":144,"slug":"telemetry-handler","name":"telemetry_handler","namespace":"Flow\\Bridge\\Monolog\\Telemetry\\DSL","parameters":[{"name":"logger","type":[{"name":"Logger","namespace":"Flow\\Telemetry\\Logger","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"converter","type":[{"name":"LogRecordConverter","namespace":"Flow\\Bridge\\Monolog\\Telemetry","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Bridge\\Monolog\\Telemetry\\LogRecordConverter::..."},{"name":"level","type":[{"name":"Level","namespace":"Monolog","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Monolog\\Level::..."},{"name":"bubble","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"}],"return_type":[{"name":"TelemetryHandler","namespace":"Flow\\Bridge\\Monolog\\Telemetry","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"MONOLOG_TELEMETRY_BRIDGE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFRlbGVtZXRyeUhhbmRsZXIgZm9yIGZvcndhcmRpbmcgTW9ub2xvZyBsb2dzIHRvIEZsb3cgVGVsZW1ldHJ5LgogKgogKiBAcGFyYW0gTG9nZ2VyICRsb2dnZXIgVGhlIEZsb3cgVGVsZW1ldHJ5IGxvZ2dlciB0byBmb3J3YXJkIGxvZ3MgdG8KICogQHBhcmFtIExvZ1JlY29yZENvbnZlcnRlciAkY29udmVydGVyIENvbnZlcnRlciB0byB0cmFuc2Zvcm0gTW9ub2xvZyBMb2dSZWNvcmQgdG8gVGVsZW1ldHJ5IExvZ1JlY29yZAogKiBAcGFyYW0gTGV2ZWwgJGxldmVsIFRoZSBtaW5pbXVtIGxvZ2dpbmcgbGV2ZWwgYXQgd2hpY2ggdGhpcyBoYW5kbGVyIHdpbGwgYmUgdHJpZ2dlcmVkCiAqIEBwYXJhbSBib29sICRidWJibGUgV2hldGhlciBtZXNzYWdlcyBoYW5kbGVkIGJ5IHRoaXMgaGFuZGxlciBzaG91bGQgYnViYmxlIHVwIHRvIG90aGVyIGhhbmRsZXJzCiAqCiAqIEV4YW1wbGUgdXNhZ2U6CiAqIGBgYHBocAogKiB1c2UgTW9ub2xvZ1xMb2dnZXIgYXMgTW9ub2xvZ0xvZ2dlcjsKICogdXNlIGZ1bmN0aW9uIEZsb3dcQnJpZGdlXE1vbm9sb2dcVGVsZW1ldHJ5XERTTFx0ZWxlbWV0cnlfaGFuZGxlcjsKICogdXNlIGZ1bmN0aW9uIEZsb3dcVGVsZW1ldHJ5XERTTFx0ZWxlbWV0cnk7CiAqCiAqICR0ZWxlbWV0cnkgPSB0ZWxlbWV0cnkoKTsKICogJGxvZ2dlciA9ICR0ZWxlbWV0cnktPmxvZ2dlcignbXktYXBwJyk7CiAqCiAqICRtb25vbG9nID0gbmV3IE1vbm9sb2dMb2dnZXIoJ2NoYW5uZWwnKTsKICogJG1vbm9sb2ctPnB1c2hIYW5kbGVyKHRlbGVtZXRyeV9oYW5kbGVyKCRsb2dnZXIpKTsKICoKICogJG1vbm9sb2ctPmluZm8oJ1VzZXIgbG9nZ2VkIGluJywgWyd1c2VyX2lkJyA9PiAxMjNdKTsKICogLy8g4oaSIEZvcndhcmRlZCB0byBGbG93IFRlbGVtZXRyeSB3aXRoIElORk8gc2V2ZXJpdHkKICogYGBgCiAqCiAqIEV4YW1wbGUgd2l0aCBjdXN0b20gY29udmVydGVyOgogKiBgYGBwaHAKICogJGNvbnZlcnRlciA9IGxvZ19yZWNvcmRfY29udmVydGVyKAogKiAgICAgc2V2ZXJpdHlNYXBwZXI6IHNldmVyaXR5X21hcHBlcihbCiAqICAgICAgICAgTGV2ZWw6OkRlYnVnLT52YWx1ZSA9PiBTZXZlcml0eTo6VFJBQ0UsCiAqICAgICBdKQogKiApOwogKiAkbW9ub2xvZy0+cHVzaEhhbmRsZXIodGVsZW1ldHJ5X2hhbmRsZXIoJGxvZ2dlciwgJGNvbnZlcnRlcikpOwogKiBgYGAKICov"},{"repository_path":"src\/bridge\/symfony\/http-foundation-telemetry\/src\/Flow\/Bridge\/Symfony\/HttpFoundationTelemetry\/DSL\/functions.php","start_line_in_file":12,"slug":"symfony-request-carrier","name":"symfony_request_carrier","namespace":"Flow\\Bridge\\Symfony\\HttpFoundationTelemetry\\DSL","parameters":[{"name":"request","type":[{"name":"Request","namespace":"Symfony\\Component\\HttpFoundation","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"RequestCarrier","namespace":"Flow\\Bridge\\Symfony\\HttpFoundationTelemetry","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"SYMFONY_HTTP_FOUNDATION_TELEMETRY_BRIDGE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/bridge\/symfony\/http-foundation-telemetry\/src\/Flow\/Bridge\/Symfony\/HttpFoundationTelemetry\/DSL\/functions.php","start_line_in_file":18,"slug":"symfony-response-carrier","name":"symfony_response_carrier","namespace":"Flow\\Bridge\\Symfony\\HttpFoundationTelemetry\\DSL","parameters":[{"name":"response","type":[{"name":"Response","namespace":"Symfony\\Component\\HttpFoundation","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ResponseCarrier","namespace":"Flow\\Bridge\\Symfony\\HttpFoundationTelemetry","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"SYMFONY_HTTP_FOUNDATION_TELEMETRY_BRIDGE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/bridge\/psr7\/telemetry\/src\/Flow\/Bridge\/Psr7\/Telemetry\/DSL\/functions.php","start_line_in_file":12,"slug":"psr7-request-carrier","name":"psr7_request_carrier","namespace":"Flow\\Bridge\\Psr7\\Telemetry\\DSL","parameters":[{"name":"request","type":[{"name":"ServerRequestInterface","namespace":"Psr\\Http\\Message","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"RequestCarrier","namespace":"Flow\\Bridge\\Psr7\\Telemetry","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PSR7_TELEMETRY_BRIDGE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/bridge\/psr7\/telemetry\/src\/Flow\/Bridge\/Psr7\/Telemetry\/DSL\/functions.php","start_line_in_file":18,"slug":"psr7-response-carrier","name":"psr7_response_carrier","namespace":"Flow\\Bridge\\Psr7\\Telemetry\\DSL","parameters":[{"name":"response","type":[{"name":"ResponseInterface","namespace":"Psr\\Http\\Message","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ResponseCarrier","namespace":"Flow\\Bridge\\Psr7\\Telemetry","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PSR7_TELEMETRY_BRIDGE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/bridge\/psr18\/telemetry\/src\/Flow\/Bridge\/Psr18\/Telemetry\/DSL\/functions.php","start_line_in_file":13,"slug":"psr18-traceable-client","name":"psr18_traceable_client","namespace":"Flow\\Bridge\\Psr18\\Telemetry\\DSL","parameters":[{"name":"client","type":[{"name":"ClientInterface","namespace":"Psr\\Http\\Client","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"telemetry","type":[{"name":"Telemetry","namespace":"Flow\\Telemetry","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"PSR18TraceableClient","namespace":"Flow\\Bridge\\Psr18\\Telemetry","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PSR18_TELEMETRY_BRIDGE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/bridge\/telemetry\/otlp\/src\/Flow\/Bridge\/Telemetry\/OTLP\/DSL\/functions.php","start_line_in_file":36,"slug":"otlp-json-serializer","name":"otlp_json_serializer","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\DSL","parameters":[],"return_type":[{"name":"JsonSerializer","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\Serializer","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY_OTLP","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEpTT04gc2VyaWFsaXplciBmb3IgT1RMUC4KICoKICogUmV0dXJucyBhIEpzb25TZXJpYWxpemVyIHRoYXQgY29udmVydHMgdGVsZW1ldHJ5IGRhdGEgdG8gT1RMUCBKU09OIHdpcmUgZm9ybWF0LgogKiBVc2UgdGhpcyB3aXRoIEh0dHBUcmFuc3BvcnQgZm9yIEpTT04gb3ZlciBIVFRQLgogKgogKiBFeGFtcGxlIHVzYWdlOgogKiBgYGBwaHAKICogJHNlcmlhbGl6ZXIgPSBvdGxwX2pzb25fc2VyaWFsaXplcigpOwogKiAkdHJhbnNwb3J0ID0gb3RscF9odHRwX3RyYW5zcG9ydCgkY2xpZW50LCAkcmVxRmFjdG9yeSwgJHN0cmVhbUZhY3RvcnksICRlbmRwb2ludCwgJHNlcmlhbGl6ZXIpOwogKiBgYGAKICov"},{"repository_path":"src\/bridge\/telemetry\/otlp\/src\/Flow\/Bridge\/Telemetry\/OTLP\/DSL\/functions.php","start_line_in_file":58,"slug":"otlp-protobuf-serializer","name":"otlp_protobuf_serializer","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\DSL","parameters":[],"return_type":[{"name":"ProtobufSerializer","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\Serializer","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY_OTLP","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFByb3RvYnVmIHNlcmlhbGl6ZXIgZm9yIE9UTFAuCiAqCiAqIFJldHVybnMgYSBQcm90b2J1ZlNlcmlhbGl6ZXIgdGhhdCBjb252ZXJ0cyB0ZWxlbWV0cnkgZGF0YSB0byBPVExQIFByb3RvYnVmIGJpbmFyeSBmb3JtYXQuCiAqIFVzZSB0aGlzIHdpdGggSHR0cFRyYW5zcG9ydCBmb3IgUHJvdG9idWYgb3ZlciBIVFRQLCBvciB3aXRoIEdycGNUcmFuc3BvcnQuCiAqCiAqIFJlcXVpcmVzOgogKiAtIGdvb2dsZS9wcm90b2J1ZiBwYWNrYWdlCiAqIC0gb3Blbi10ZWxlbWV0cnkvZ2VuLW90bHAtcHJvdG9idWYgcGFja2FnZQogKgogKiBFeGFtcGxlIHVzYWdlOgogKiBgYGBwaHAKICogJHNlcmlhbGl6ZXIgPSBvdGxwX3Byb3RvYnVmX3NlcmlhbGl6ZXIoKTsKICogJHRyYW5zcG9ydCA9IG90bHBfaHR0cF90cmFuc3BvcnQoJGNsaWVudCwgJHJlcUZhY3RvcnksICRzdHJlYW1GYWN0b3J5LCAkZW5kcG9pbnQsICRzZXJpYWxpemVyKTsKICogYGBgCiAqLw=="},{"repository_path":"src\/bridge\/telemetry\/otlp\/src\/Flow\/Bridge\/Telemetry\/OTLP\/DSL\/functions.php","start_line_in_file":98,"slug":"otlp-http-transport","name":"otlp_http_transport","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\DSL","parameters":[{"name":"client","type":[{"name":"ClientInterface","namespace":"Psr\\Http\\Client","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"requestFactory","type":[{"name":"RequestFactoryInterface","namespace":"Psr\\Http\\Message","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"streamFactory","type":[{"name":"StreamFactoryInterface","namespace":"Psr\\Http\\Message","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"endpoint","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"serializer","type":[{"name":"Serializer","namespace":"Flow\\Telemetry\\Serializer","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"headers","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"HttpTransport","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\Transport","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY_OTLP","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBIVFRQIHRyYW5zcG9ydCBmb3IgT1RMUCBlbmRwb2ludHMuCiAqCiAqIENyZWF0ZXMgYW4gSHR0cFRyYW5zcG9ydCBjb25maWd1cmVkIHRvIHNlbmQgdGVsZW1ldHJ5IGRhdGEgdG8gYW4gT1RMUC1jb21wYXRpYmxlCiAqIGVuZHBvaW50IHVzaW5nIFBTUi0xOCBIVFRQIGNsaWVudC4gU3VwcG9ydHMgYm90aCBKU09OIGFuZCBQcm90b2J1ZiBmb3JtYXRzLgogKgogKiBFeGFtcGxlIHVzYWdlOgogKiBgYGBwaHAKICogLy8gSlNPTiBvdmVyIEhUVFAKICogJHRyYW5zcG9ydCA9IG90bHBfaHR0cF90cmFuc3BvcnQoCiAqICAgICBjbGllbnQ6ICRjbGllbnQsCiAqICAgICByZXF1ZXN0RmFjdG9yeTogJHBzcjE3RmFjdG9yeSwKICogICAgIHN0cmVhbUZhY3Rvcnk6ICRwc3IxN0ZhY3RvcnksCiAqICAgICBlbmRwb2ludDogJ2h0dHA6Ly9sb2NhbGhvc3Q6NDMxOCcsCiAqICAgICBzZXJpYWxpemVyOiBvdGxwX2pzb25fc2VyaWFsaXplcigpLAogKiApOwogKgogKiAvLyBQcm90b2J1ZiBvdmVyIEhUVFAKICogJHRyYW5zcG9ydCA9IG90bHBfaHR0cF90cmFuc3BvcnQoCiAqICAgICBjbGllbnQ6ICRjbGllbnQsCiAqICAgICByZXF1ZXN0RmFjdG9yeTogJHBzcjE3RmFjdG9yeSwKICogICAgIHN0cmVhbUZhY3Rvcnk6ICRwc3IxN0ZhY3RvcnksCiAqICAgICBlbmRwb2ludDogJ2h0dHA6Ly9sb2NhbGhvc3Q6NDMxOCcsCiAqICAgICBzZXJpYWxpemVyOiBvdGxwX3Byb3RvYnVmX3NlcmlhbGl6ZXIoKSwKICogKTsKICogYGBgCiAqCiAqIEBwYXJhbSBDbGllbnRJbnRlcmZhY2UgJGNsaWVudCBQU1ItMTggSFRUUCBjbGllbnQKICogQHBhcmFtIFJlcXVlc3RGYWN0b3J5SW50ZXJmYWNlICRyZXF1ZXN0RmFjdG9yeSBQU1ItMTcgcmVxdWVzdCBmYWN0b3J5CiAqIEBwYXJhbSBTdHJlYW1GYWN0b3J5SW50ZXJmYWNlICRzdHJlYW1GYWN0b3J5IFBTUi0xNyBzdHJlYW0gZmFjdG9yeQogKiBAcGFyYW0gc3RyaW5nICRlbmRwb2ludCBPVExQIGVuZHBvaW50IFVSTCAoZS5nLiwgJ2h0dHA6Ly9sb2NhbGhvc3Q6NDMxOCcpCiAqIEBwYXJhbSBTZXJpYWxpemVyICRzZXJpYWxpemVyIFNlcmlhbGl6ZXIgZm9yIGVuY29kaW5nIHRlbGVtZXRyeSBkYXRhIChKU09OIG9yIFByb3RvYnVmKQogKiBAcGFyYW0gYXJyYXk8c3RyaW5nLCBzdHJpbmc+ICRoZWFkZXJzIEFkZGl0aW9uYWwgaGVhZGVycyB0byBpbmNsdWRlIGluIHJlcXVlc3RzCiAqLw=="},{"repository_path":"src\/bridge\/telemetry\/otlp\/src\/Flow\/Bridge\/Telemetry\/OTLP\/DSL\/functions.php","start_line_in_file":134,"slug":"otlp-grpc-transport","name":"otlp_grpc_transport","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\DSL","parameters":[{"name":"endpoint","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"serializer","type":[{"name":"ProtobufSerializer","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\Serializer","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"headers","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"insecure","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"}],"return_type":[{"name":"GrpcTransport","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\Transport","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY_OTLP","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGdSUEMgdHJhbnNwb3J0IGZvciBPVExQIGVuZHBvaW50cy4KICoKICogQ3JlYXRlcyBhIEdycGNUcmFuc3BvcnQgY29uZmlndXJlZCB0byBzZW5kIHRlbGVtZXRyeSBkYXRhIHRvIGFuIE9UTFAtY29tcGF0aWJsZQogKiBlbmRwb2ludCB1c2luZyBnUlBDIHByb3RvY29sIHdpdGggUHJvdG9idWYgc2VyaWFsaXphdGlvbi4KICoKICogUmVxdWlyZXM6CiAqIC0gZXh0LWdycGMgUEhQIGV4dGVuc2lvbgogKiAtIGdvb2dsZS9wcm90b2J1ZiBwYWNrYWdlCiAqIC0gb3Blbi10ZWxlbWV0cnkvZ2VuLW90bHAtcHJvdG9idWYgcGFja2FnZQogKgogKiBFeGFtcGxlIHVzYWdlOgogKiBgYGBwaHAKICogJHRyYW5zcG9ydCA9IG90bHBfZ3JwY190cmFuc3BvcnQoCiAqICAgICBlbmRwb2ludDogJ2xvY2FsaG9zdDo0MzE3JywKICogICAgIHNlcmlhbGl6ZXI6IG90bHBfcHJvdG9idWZfc2VyaWFsaXplcigpLAogKiApOwogKiBgYGAKICoKICogQHBhcmFtIHN0cmluZyAkZW5kcG9pbnQgZ1JQQyBlbmRwb2ludCAoZS5nLiwgJ2xvY2FsaG9zdDo0MzE3JykKICogQHBhcmFtIFByb3RvYnVmU2VyaWFsaXplciAkc2VyaWFsaXplciBQcm90b2J1ZiBzZXJpYWxpemVyIGZvciBlbmNvZGluZyB0ZWxlbWV0cnkgZGF0YQogKiBAcGFyYW0gYXJyYXk8c3RyaW5nLCBzdHJpbmc+ICRoZWFkZXJzIEFkZGl0aW9uYWwgaGVhZGVycyAobWV0YWRhdGEpIHRvIGluY2x1ZGUgaW4gcmVxdWVzdHMKICogQHBhcmFtIGJvb2wgJGluc2VjdXJlIFdoZXRoZXIgdG8gdXNlIGluc2VjdXJlIGNoYW5uZWwgY3JlZGVudGlhbHMgKGRlZmF1bHQgdHJ1ZSBmb3IgbG9jYWwgZGV2KQogKi8="},{"repository_path":"src\/bridge\/telemetry\/otlp\/src\/Flow\/Bridge\/Telemetry\/OTLP\/DSL\/functions.php","start_line_in_file":162,"slug":"otlp-curl-options","name":"otlp_curl_options","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\DSL","parameters":[],"return_type":[{"name":"CurlTransportOptions","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\Transport","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY_OTLP","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBjdXJsIHRyYW5zcG9ydCBvcHRpb25zIGZvciBPVExQLgogKgogKiBSZXR1cm5zIGEgQ3VybFRyYW5zcG9ydE9wdGlvbnMgYnVpbGRlciBmb3IgY29uZmlndXJpbmcgY3VybCB0cmFuc3BvcnQgc2V0dGluZ3MKICogdXNpbmcgYSBmbHVlbnQgaW50ZXJmYWNlLgogKgogKiBFeGFtcGxlIHVzYWdlOgogKiBgYGBwaHAKICogJG9wdGlvbnMgPSBvdGxwX2N1cmxfb3B0aW9ucygpCiAqICAgICAtPndpdGhUaW1lb3V0KDYwKQogKiAgICAgLT53aXRoQ29ubmVjdFRpbWVvdXQoMTUpCiAqICAgICAtPndpdGhIZWFkZXIoJ0F1dGhvcml6YXRpb24nLCAnQmVhcmVyIHRva2VuJykKICogICAgIC0+d2l0aENvbXByZXNzaW9uKCkKICogICAgIC0+d2l0aFNzbFZlcmlmaWNhdGlvbih2ZXJpZnlQZWVyOiB0cnVlKTsKICoKICogJHRyYW5zcG9ydCA9IG90bHBfY3VybF90cmFuc3BvcnQoJGVuZHBvaW50LCAkc2VyaWFsaXplciwgJG9wdGlvbnMpOwogKiBgYGAKICov"},{"repository_path":"src\/bridge\/telemetry\/otlp\/src\/Flow\/Bridge\/Telemetry\/OTLP\/DSL\/functions.php","start_line_in_file":201,"slug":"otlp-curl-transport","name":"otlp_curl_transport","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\DSL","parameters":[{"name":"endpoint","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"serializer","type":[{"name":"Serializer","namespace":"Flow\\Telemetry\\Serializer","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"options","type":[{"name":"CurlTransportOptions","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\Transport","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Bridge\\Telemetry\\OTLP\\Transport\\CurlTransportOptions::..."}],"return_type":[{"name":"CurlTransport","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\Transport","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY_OTLP","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBhc3luYyBjdXJsIHRyYW5zcG9ydCBmb3IgT1RMUCBlbmRwb2ludHMuCiAqCiAqIENyZWF0ZXMgYSBDdXJsVHJhbnNwb3J0IHRoYXQgdXNlcyBjdXJsX211bHRpIGZvciBub24tYmxvY2tpbmcgSS9PLgogKiBVbmxpa2UgSHR0cFRyYW5zcG9ydCAoUFNSLTE4KSwgdGhpcyB0cmFuc3BvcnQgcXVldWVzIHJlcXVlc3RzIGFuZCBleGVjdXRlcwogKiB0aGVtIGFzeW5jaHJvbm91c2x5LiBDb21wbGV0ZWQgcmVxdWVzdHMgYXJlIHByb2Nlc3NlZCBvbiBzdWJzZXF1ZW50IHNlbmQoKQogKiBjYWxscyBvciBvbiBzaHV0ZG93bigpLgogKgogKiBSZXF1aXJlczogZXh0LWN1cmwgUEhQIGV4dGVuc2lvbgogKgogKiBFeGFtcGxlIHVzYWdlOgogKiBgYGBwaHAKICogLy8gSlNPTiBvdmVyIEhUVFAgKGFzeW5jKSB3aXRoIGRlZmF1bHQgb3B0aW9ucwogKiAkdHJhbnNwb3J0ID0gb3RscF9jdXJsX3RyYW5zcG9ydCgKICogICAgIGVuZHBvaW50OiAnaHR0cDovL2xvY2FsaG9zdDo0MzE4JywKICogICAgIHNlcmlhbGl6ZXI6IG90bHBfanNvbl9zZXJpYWxpemVyKCksCiAqICk7CiAqCiAqIC8vIFByb3RvYnVmIG92ZXIgSFRUUCAoYXN5bmMpIHdpdGggY3VzdG9tIG9wdGlvbnMKICogJHRyYW5zcG9ydCA9IG90bHBfY3VybF90cmFuc3BvcnQoCiAqICAgICBlbmRwb2ludDogJ2h0dHA6Ly9sb2NhbGhvc3Q6NDMxOCcsCiAqICAgICBzZXJpYWxpemVyOiBvdGxwX3Byb3RvYnVmX3NlcmlhbGl6ZXIoKSwKICogICAgIG9wdGlvbnM6IG90bHBfY3VybF9vcHRpb25zKCkKICogICAgICAgICAtPndpdGhUaW1lb3V0KDYwKQogKiAgICAgICAgIC0+d2l0aEhlYWRlcignQXV0aG9yaXphdGlvbicsICdCZWFyZXIgdG9rZW4nKQogKiAgICAgICAgIC0+d2l0aENvbXByZXNzaW9uKCksCiAqICk7CiAqIGBgYAogKgogKiBAcGFyYW0gc3RyaW5nICRlbmRwb2ludCBPVExQIGVuZHBvaW50IFVSTCAoZS5nLiwgJ2h0dHA6Ly9sb2NhbGhvc3Q6NDMxOCcpCiAqIEBwYXJhbSBTZXJpYWxpemVyICRzZXJpYWxpemVyIFNlcmlhbGl6ZXIgZm9yIGVuY29kaW5nIHRlbGVtZXRyeSBkYXRhIChKU09OIG9yIFByb3RvYnVmKQogKiBAcGFyYW0gQ3VybFRyYW5zcG9ydE9wdGlvbnMgJG9wdGlvbnMgVHJhbnNwb3J0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucwogKi8="},{"repository_path":"src\/bridge\/telemetry\/otlp\/src\/Flow\/Bridge\/Telemetry\/OTLP\/DSL\/functions.php","start_line_in_file":221,"slug":"otlp-span-exporter","name":"otlp_span_exporter","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\DSL","parameters":[{"name":"transport","type":[{"name":"Transport","namespace":"Flow\\Telemetry\\Transport","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OTLPSpanExporter","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\Exporter","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY_OTLP","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBPVExQIHNwYW4gZXhwb3J0ZXIuCiAqCiAqIEV4YW1wbGUgdXNhZ2U6CiAqIGBgYHBocAogKiAkZXhwb3J0ZXIgPSBvdGxwX3NwYW5fZXhwb3J0ZXIoJHRyYW5zcG9ydCk7CiAqICRwcm9jZXNzb3IgPSBiYXRjaGluZ19zcGFuX3Byb2Nlc3NvcigkZXhwb3J0ZXIpOwogKiBgYGAKICoKICogQHBhcmFtIFRyYW5zcG9ydCAkdHJhbnNwb3J0IFRoZSB0cmFuc3BvcnQgZm9yIHNlbmRpbmcgc3BhbiBkYXRhCiAqLw=="},{"repository_path":"src\/bridge\/telemetry\/otlp\/src\/Flow\/Bridge\/Telemetry\/OTLP\/DSL\/functions.php","start_line_in_file":238,"slug":"otlp-metric-exporter","name":"otlp_metric_exporter","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\DSL","parameters":[{"name":"transport","type":[{"name":"Transport","namespace":"Flow\\Telemetry\\Transport","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OTLPMetricExporter","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\Exporter","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY_OTLP","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBPVExQIG1ldHJpYyBleHBvcnRlci4KICoKICogRXhhbXBsZSB1c2FnZToKICogYGBgcGhwCiAqICRleHBvcnRlciA9IG90bHBfbWV0cmljX2V4cG9ydGVyKCR0cmFuc3BvcnQpOwogKiAkcHJvY2Vzc29yID0gYmF0Y2hpbmdfbWV0cmljX3Byb2Nlc3NvcigkZXhwb3J0ZXIpOwogKiBgYGAKICoKICogQHBhcmFtIFRyYW5zcG9ydCAkdHJhbnNwb3J0IFRoZSB0cmFuc3BvcnQgZm9yIHNlbmRpbmcgbWV0cmljIGRhdGEKICov"},{"repository_path":"src\/bridge\/telemetry\/otlp\/src\/Flow\/Bridge\/Telemetry\/OTLP\/DSL\/functions.php","start_line_in_file":255,"slug":"otlp-log-exporter","name":"otlp_log_exporter","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\DSL","parameters":[{"name":"transport","type":[{"name":"Transport","namespace":"Flow\\Telemetry\\Transport","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OTLPLogExporter","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\Exporter","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY_OTLP","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBPVExQIGxvZyBleHBvcnRlci4KICoKICogRXhhbXBsZSB1c2FnZToKICogYGBgcGhwCiAqICRleHBvcnRlciA9IG90bHBfbG9nX2V4cG9ydGVyKCR0cmFuc3BvcnQpOwogKiAkcHJvY2Vzc29yID0gYmF0Y2hpbmdfbG9nX3Byb2Nlc3NvcigkZXhwb3J0ZXIpOwogKiBgYGAKICoKICogQHBhcmFtIFRyYW5zcG9ydCAkdHJhbnNwb3J0IFRoZSB0cmFuc3BvcnQgZm9yIHNlbmRpbmcgbG9nIGRhdGEKICov"},{"repository_path":"src\/bridge\/telemetry\/otlp\/src\/Flow\/Bridge\/Telemetry\/OTLP\/DSL\/functions.php","start_line_in_file":276,"slug":"otlp-tracer-provider","name":"otlp_tracer_provider","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\DSL","parameters":[{"name":"processor","type":[{"name":"SpanProcessor","namespace":"Flow\\Telemetry\\Tracer","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"clock","type":[{"name":"ClockInterface","namespace":"Psr\\Clock","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"sampler","type":[{"name":"Sampler","namespace":"Flow\\Telemetry\\Tracer\\Sampler","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Telemetry\\Tracer\\Sampler\\AlwaysOnSampler::..."},{"name":"contextStorage","type":[{"name":"ContextStorage","namespace":"Flow\\Telemetry\\Context","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Telemetry\\Context\\MemoryContextStorage::..."}],"return_type":[{"name":"TracerProvider","namespace":"Flow\\Telemetry\\Tracer","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY_OTLP","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHRyYWNlciBwcm92aWRlciBjb25maWd1cmVkIGZvciBPVExQIGV4cG9ydC4KICoKICogRXhhbXBsZSB1c2FnZToKICogYGBgcGhwCiAqICRwcm9jZXNzb3IgPSBiYXRjaGluZ19zcGFuX3Byb2Nlc3NvcihvdGxwX3NwYW5fZXhwb3J0ZXIoJHRyYW5zcG9ydCkpOwogKiAkcHJvdmlkZXIgPSBvdGxwX3RyYWNlcl9wcm92aWRlcigkcHJvY2Vzc29yLCAkY2xvY2spOwogKiAkdHJhY2VyID0gJHByb3ZpZGVyLT50cmFjZXIoJHJlc291cmNlLCAnbXktc2VydmljZScsICcxLjAuMCcpOwogKiBgYGAKICoKICogQHBhcmFtIFNwYW5Qcm9jZXNzb3IgJHByb2Nlc3NvciBUaGUgcHJvY2Vzc29yIGZvciBoYW5kbGluZyBzcGFucwogKiBAcGFyYW0gQ2xvY2tJbnRlcmZhY2UgJGNsb2NrIFRoZSBjbG9jayBmb3IgdGltZXN0YW1wcwogKiBAcGFyYW0gU2FtcGxlciAkc2FtcGxlciBUaGUgc2FtcGxlciBmb3IgZGVjaWRpbmcgd2hldGhlciB0byByZWNvcmQgc3BhbnMKICogQHBhcmFtIENvbnRleHRTdG9yYWdlICRjb250ZXh0U3RvcmFnZSBUaGUgY29udGV4dCBzdG9yYWdlIGZvciBwcm9wYWdhdGluZyB0cmFjZSBjb250ZXh0CiAqLw=="},{"repository_path":"src\/bridge\/telemetry\/otlp\/src\/Flow\/Bridge\/Telemetry\/OTLP\/DSL\/functions.php","start_line_in_file":300,"slug":"otlp-meter-provider","name":"otlp_meter_provider","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\DSL","parameters":[{"name":"processor","type":[{"name":"MetricProcessor","namespace":"Flow\\Telemetry\\Meter","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"clock","type":[{"name":"ClockInterface","namespace":"Psr\\Clock","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"temporality","type":[{"name":"AggregationTemporality","namespace":"Flow\\Telemetry\\Meter","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Telemetry\\Meter\\AggregationTemporality::..."}],"return_type":[{"name":"MeterProvider","namespace":"Flow\\Telemetry\\Meter","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY_OTLP","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIG1ldGVyIHByb3ZpZGVyIGNvbmZpZ3VyZWQgZm9yIE9UTFAgZXhwb3J0LgogKgogKiBFeGFtcGxlIHVzYWdlOgogKiBgYGBwaHAKICogJHByb2Nlc3NvciA9IGJhdGNoaW5nX21ldHJpY19wcm9jZXNzb3Iob3RscF9tZXRyaWNfZXhwb3J0ZXIoJHRyYW5zcG9ydCkpOwogKiAkcHJvdmlkZXIgPSBvdGxwX21ldGVyX3Byb3ZpZGVyKCRwcm9jZXNzb3IsICRjbG9jayk7CiAqICRtZXRlciA9ICRwcm92aWRlci0+bWV0ZXIoJHJlc291cmNlLCAnbXktc2VydmljZScsICcxLjAuMCcpOwogKiBgYGAKICoKICogQHBhcmFtIE1ldHJpY1Byb2Nlc3NvciAkcHJvY2Vzc29yIFRoZSBwcm9jZXNzb3IgZm9yIGhhbmRsaW5nIG1ldHJpY3MKICogQHBhcmFtIENsb2NrSW50ZXJmYWNlICRjbG9jayBUaGUgY2xvY2sgZm9yIHRpbWVzdGFtcHMKICogQHBhcmFtIEFnZ3JlZ2F0aW9uVGVtcG9yYWxpdHkgJHRlbXBvcmFsaXR5IFRoZSBhZ2dyZWdhdGlvbiB0ZW1wb3JhbGl0eSBmb3IgbWV0cmljcwogKi8="},{"repository_path":"src\/bridge\/telemetry\/otlp\/src\/Flow\/Bridge\/Telemetry\/OTLP\/DSL\/functions.php","start_line_in_file":323,"slug":"otlp-logger-provider","name":"otlp_logger_provider","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\DSL","parameters":[{"name":"processor","type":[{"name":"LogProcessor","namespace":"Flow\\Telemetry\\Logger","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"clock","type":[{"name":"ClockInterface","namespace":"Psr\\Clock","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"contextStorage","type":[{"name":"ContextStorage","namespace":"Flow\\Telemetry\\Context","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Telemetry\\Context\\MemoryContextStorage::..."}],"return_type":[{"name":"LoggerProvider","namespace":"Flow\\Telemetry\\Logger","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY_OTLP","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGxvZ2dlciBwcm92aWRlciBjb25maWd1cmVkIGZvciBPVExQIGV4cG9ydC4KICoKICogRXhhbXBsZSB1c2FnZToKICogYGBgcGhwCiAqICRwcm9jZXNzb3IgPSBiYXRjaGluZ19sb2dfcHJvY2Vzc29yKG90bHBfbG9nX2V4cG9ydGVyKCR0cmFuc3BvcnQpKTsKICogJHByb3ZpZGVyID0gb3RscF9sb2dnZXJfcHJvdmlkZXIoJHByb2Nlc3NvciwgJGNsb2NrKTsKICogJGxvZ2dlciA9ICRwcm92aWRlci0+bG9nZ2VyKCRyZXNvdXJjZSwgJ215LXNlcnZpY2UnLCAnMS4wLjAnKTsKICogYGBgCiAqCiAqIEBwYXJhbSBMb2dQcm9jZXNzb3IgJHByb2Nlc3NvciBUaGUgcHJvY2Vzc29yIGZvciBoYW5kbGluZyBsb2cgcmVjb3JkcwogKiBAcGFyYW0gQ2xvY2tJbnRlcmZhY2UgJGNsb2NrIFRoZSBjbG9jayBmb3IgdGltZXN0YW1wcwogKiBAcGFyYW0gQ29udGV4dFN0b3JhZ2UgJGNvbnRleHRTdG9yYWdlIFRoZSBjb250ZXh0IHN0b3JhZ2UgZm9yIHByb3BhZ2F0aW5nIGNvbnRleHQKICov"}] \ No newline at end of file +[{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":254,"slug":"df","name":"df","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"config","type":[{"name":"Config","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false},{"name":"ConfigBuilder","namespace":"Flow\\ETL\\Config","is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Flow","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_reading","option":"data_frame"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_writing","option":"overwrite"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEFsaWFzIGZvciBkYXRhX2ZyYW1lKCkgOiBGbG93LgogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":262,"slug":"data-frame","name":"data_frame","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"config","type":[{"name":"Config","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false},{"name":"ConfigBuilder","namespace":"Flow\\ETL\\Config","is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Flow","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_reading","option":"data_frame"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_writing","option":"overwrite"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":268,"slug":"telemetry-options","name":"telemetry_options","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"trace_loading","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"trace_transformations","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"trace_cache","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"collect_metrics","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"filesystem","type":[{"name":"FilesystemTelemetryOptions","namespace":"Flow\\Filesystem\\Telemetry","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"TelemetryOptions","namespace":"Flow\\ETL\\Config\\Telemetry","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":287,"slug":"from-rows","name":"from_rows","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"rows","type":[{"name":"Rows","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"RowsExtractor","namespace":"Flow\\ETL\\Extractor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"EXTRACTOR"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_reading","option":"data_frame"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_writing","option":"overwrite"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":294,"slug":"from-path-partitions","name":"from_path_partitions","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"path","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"PathPartitionsExtractor","namespace":"Flow\\ETL\\Extractor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"EXTRACTOR"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"partitioning","example":"path_partitions"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":306,"slug":"from-array","name":"from_array","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"array","type":[{"name":"iterable","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"schema","type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"ArrayExtractor","namespace":"Flow\\ETL\\Extractor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"EXTRACTOR"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_reading","option":"array"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_reading","option":"data_frame"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBpdGVyYWJsZTxhcnJheTxtaXhlZD4+ICRhcnJheQogKiBAcGFyYW0gbnVsbHxTY2hlbWEgJHNjaGVtYSAtIEBkZXByZWNhdGVkIHVzZSB3aXRoU2NoZW1hKCkgbWV0aG9kIGluc3RlYWQKICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":323,"slug":"from-cache","name":"from_cache","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"id","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"fallback_extractor","type":[{"name":"Extractor","namespace":"Flow\\ETL","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"clear","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"CacheExtractor","namespace":"Flow\\ETL\\Extractor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBzdHJpbmcgJGlkIC0gY2FjaGUgaWQgZnJvbSB3aGljaCBkYXRhIHdpbGwgYmUgZXh0cmFjdGVkCiAqIEBwYXJhbSBudWxsfEV4dHJhY3RvciAkZmFsbGJhY2tfZXh0cmFjdG9yIC0gZXh0cmFjdG9yIHRoYXQgd2lsbCBiZSB1c2VkIHdoZW4gY2FjaGUgaXMgZW1wdHkgLSBAZGVwcmVjYXRlZCB1c2Ugd2l0aEZhbGxiYWNrRXh0cmFjdG9yKCkgbWV0aG9kIGluc3RlYWQKICogQHBhcmFtIGJvb2wgJGNsZWFyIC0gY2xlYXIgY2FjaGUgYWZ0ZXIgZXh0cmFjdGlvbiAtIEBkZXByZWNhdGVkIHVzZSB3aXRoQ2xlYXJPbkZpbmlzaCgpIG1ldGhvZCBpbnN0ZWFkCiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":339,"slug":"from-all","name":"from_all","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"extractors","type":[{"name":"Extractor","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"ChainExtractor","namespace":"Flow\\ETL\\Extractor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":345,"slug":"from-memory","name":"from_memory","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"memory","type":[{"name":"Memory","namespace":"Flow\\ETL\\Memory","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"MemoryExtractor","namespace":"Flow\\ETL\\Extractor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":351,"slug":"files","name":"files","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"directory","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"FilesExtractor","namespace":"Flow\\ETL\\Extractor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":357,"slug":"filesystem-cache","name":"filesystem_cache","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"cache_dir","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"filesystem","type":[{"name":"Filesystem","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Filesystem\\Local\\NativeLocalFilesystem::..."},{"name":"serializer","type":[{"name":"Serializer","namespace":"Flow\\Serializer","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Serializer\\NativePHPSerializer::..."}],"return_type":[{"name":"FilesystemCache","namespace":"Flow\\ETL\\Cache\\Implementation","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":366,"slug":"batched-by","name":"batched_by","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"extractor","type":[{"name":"Extractor","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"column","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"min_size","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"BatchByExtractor","namespace":"Flow\\ETL\\Extractor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBudWxsfGludDwxLCBtYXg+ICRtaW5fc2l6ZQogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":379,"slug":"batches","name":"batches","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"extractor","type":[{"name":"Extractor","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"size","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"BatchExtractor","namespace":"Flow\\ETL\\Extractor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBpbnQ8MSwgbWF4PiAkc2l6ZQogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":390,"slug":"chunks-from","name":"chunks_from","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"extractor","type":[{"name":"Extractor","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"chunk_size","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"BatchExtractor","namespace":"Flow\\ETL\\Extractor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBpbnQ8MSwgbWF4PiAkY2h1bmtfc2l6ZQogKgogKiBAZGVwcmVjYXRlZCB1c2UgYmF0Y2hlcygpIGluc3RlYWQKICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":396,"slug":"from-pipeline","name":"from_pipeline","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"pipeline","type":[{"name":"Pipeline","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"PipelineExtractor","namespace":"Flow\\ETL\\Extractor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":402,"slug":"from-data-frame","name":"from_data_frame","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"data_frame","type":[{"name":"DataFrame","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"DataFrameExtractor","namespace":"Flow\\ETL\\Extractor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":408,"slug":"from-sequence-date-period","name":"from_sequence_date_period","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"entry_name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"start","type":[{"name":"DateTimeInterface","namespace":"","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"interval","type":[{"name":"DateInterval","namespace":"","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"end","type":[{"name":"DateTimeInterface","namespace":"","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"options","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"}],"return_type":[{"name":"SequenceExtractor","namespace":"Flow\\ETL\\Extractor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":417,"slug":"from-sequence-date-period-recurrences","name":"from_sequence_date_period_recurrences","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"entry_name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"start","type":[{"name":"DateTimeInterface","namespace":"","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"interval","type":[{"name":"DateInterval","namespace":"","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"recurrences","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"options","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"}],"return_type":[{"name":"SequenceExtractor","namespace":"Flow\\ETL\\Extractor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":426,"slug":"from-sequence-number","name":"from_sequence_number","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"entry_name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"start","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"float","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"end","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"float","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"step","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"float","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"1"}],"return_type":[{"name":"SequenceExtractor","namespace":"Flow\\ETL\\Extractor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":435,"slug":"to-callable","name":"to_callable","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"callable","type":[{"name":"callable","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"CallbackLoader","namespace":"Flow\\ETL\\Loader","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":441,"slug":"to-memory","name":"to_memory","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"memory","type":[{"name":"Memory","namespace":"Flow\\ETL\\Memory","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"MemoryLoader","namespace":"Flow\\ETL\\Loader","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":455,"slug":"to-array","name":"to_array","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"array","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ArrayLoader","namespace":"Flow\\ETL\\Loader","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"LOADER"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_writing","option":"array"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENvbnZlcnQgcm93cyB0byBhbiBhcnJheSBhbmQgc3RvcmUgdGhlbSBpbiBwYXNzZWQgYXJyYXkgdmFyaWFibGUuCiAqCiAqIEBwYXJhbSBhcnJheTxhcnJheS1rZXksIG1peGVkPiAkYXJyYXkKICoKICogQHBhcmFtLW91dCBhcnJheTxhcnJheTxtaXhlZD4+ICRhcnJheQogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":462,"slug":"to-output","name":"to_output","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"truncate","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"20"},{"name":"output","type":[{"name":"Output","namespace":"Flow\\ETL\\Loader\\StreamLoader","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Loader\\StreamLoader\\Output::..."},{"name":"formatter","type":[{"name":"Formatter","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Formatter\\AsciiTableFormatter::..."},{"name":"schemaFormatter","type":[{"name":"SchemaFormatter","namespace":"Flow\\ETL\\Schema","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Row\\Formatter\\ASCIISchemaFormatter::..."}],"return_type":[{"name":"StreamLoader","namespace":"Flow\\ETL\\Loader","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":468,"slug":"to-stderr","name":"to_stderr","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"truncate","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"20"},{"name":"output","type":[{"name":"Output","namespace":"Flow\\ETL\\Loader\\StreamLoader","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Loader\\StreamLoader\\Output::..."},{"name":"formatter","type":[{"name":"Formatter","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Formatter\\AsciiTableFormatter::..."},{"name":"schemaFormatter","type":[{"name":"SchemaFormatter","namespace":"Flow\\ETL\\Schema","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Row\\Formatter\\ASCIISchemaFormatter::..."}],"return_type":[{"name":"StreamLoader","namespace":"Flow\\ETL\\Loader","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":474,"slug":"to-stdout","name":"to_stdout","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"truncate","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"20"},{"name":"output","type":[{"name":"Output","namespace":"Flow\\ETL\\Loader\\StreamLoader","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Loader\\StreamLoader\\Output::..."},{"name":"formatter","type":[{"name":"Formatter","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Formatter\\AsciiTableFormatter::..."},{"name":"schemaFormatter","type":[{"name":"SchemaFormatter","namespace":"Flow\\ETL\\Schema","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Row\\Formatter\\ASCIISchemaFormatter::..."}],"return_type":[{"name":"StreamLoader","namespace":"Flow\\ETL\\Loader","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":480,"slug":"to-stream","name":"to_stream","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"uri","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"truncate","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"20"},{"name":"output","type":[{"name":"Output","namespace":"Flow\\ETL\\Loader\\StreamLoader","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Loader\\StreamLoader\\Output::..."},{"name":"mode","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'w'"},{"name":"formatter","type":[{"name":"Formatter","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Formatter\\AsciiTableFormatter::..."},{"name":"schemaFormatter","type":[{"name":"SchemaFormatter","namespace":"Flow\\ETL\\Schema","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Row\\Formatter\\ASCIISchemaFormatter::..."}],"return_type":[{"name":"StreamLoader","namespace":"Flow\\ETL\\Loader","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":486,"slug":"to-transformation","name":"to_transformation","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"transformer","type":[{"name":"Transformer","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false},{"name":"Transformation","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"loader","type":[{"name":"Loader","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"TransformerLoader","namespace":"Flow\\ETL\\Loader","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":492,"slug":"to-branch","name":"to_branch","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"condition","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"loader","type":[{"name":"Loader","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"BranchingLoader","namespace":"Flow\\ETL\\Loader","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":498,"slug":"rename-style","name":"rename_style","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"style","type":[{"name":"StringStyles","namespace":"Flow\\ETL\\Function\\StyleConverter","is_nullable":false,"is_variadic":false},{"name":"StringStyles","namespace":"Flow\\ETL\\String","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"RenameCaseEntryStrategy","namespace":"Flow\\ETL\\Transformer\\Rename","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"TRANSFORMER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":508,"slug":"rename-replace","name":"rename_replace","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"search","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"replace","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"RenameReplaceEntryStrategy","namespace":"Flow\\ETL\\Transformer\\Rename","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"TRANSFORMER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxzdHJpbmc+fHN0cmluZyAkc2VhcmNoCiAqIEBwYXJhbSBhcnJheTxzdHJpbmc+fHN0cmluZyAkcmVwbGFjZQogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":517,"slug":"bool-entry","name":"bool_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"bool","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gRW50cnk8P2Jvb2w+CiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":526,"slug":"boolean-entry","name":"boolean_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"bool","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gRW50cnk8P2Jvb2w+CiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":535,"slug":"datetime-entry","name":"datetime_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"DateTimeInterface","namespace":"","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gRW50cnk8P1xEYXRlVGltZUludGVyZmFjZT4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":544,"slug":"time-entry","name":"time_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"DateInterval","namespace":"","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gRW50cnk8P1xEYXRlSW50ZXJ2YWw+CiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":553,"slug":"date-entry","name":"date_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"DateTimeInterface","namespace":"","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gRW50cnk8P1xEYXRlVGltZUludGVyZmFjZT4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":562,"slug":"int-entry","name":"int_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gRW50cnk8P2ludD4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":571,"slug":"integer-entry","name":"integer_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gRW50cnk8P2ludD4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":580,"slug":"enum-entry","name":"enum_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"enum","type":[{"name":"UnitEnum","namespace":"","is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gRW50cnk8P1xVbml0RW51bT4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":589,"slug":"float-entry","name":"float_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"float","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gRW50cnk8P2Zsb2F0PgogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":600,"slug":"json-entry","name":"json_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"data","type":[{"name":"Json","namespace":"Flow\\Types\\Value","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBudWxsfGFycmF5PGFycmF5LWtleSwgbWl4ZWQ+fEpzb258c3RyaW5nICRkYXRhCiAqCiAqIEByZXR1cm4gRW50cnk8P0pzb24+CiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":613,"slug":"json-object-entry","name":"json_object_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"data","type":[{"name":"Json","namespace":"Flow\\Types\\Value","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBudWxsfGFycmF5PGFycmF5LWtleSwgbWl4ZWQ+fEpzb258c3RyaW5nICRkYXRhCiAqCiAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAqCiAqIEByZXR1cm4gRW50cnk8P0pzb24+CiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":630,"slug":"str-entry","name":"str_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gRW50cnk8P3N0cmluZz4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":648,"slug":"null-entry","name":"null_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFRoaXMgZnVuY3Rpb25zIGlzIGFuIGFsaWFzIGZvciBjcmVhdGluZyBzdHJpbmcgZW50cnkgZnJvbSBudWxsLgogKiBUaGUgbWFpbiBkaWZmZXJlbmNlIGJldHdlZW4gdXNpbmcgdGhpcyBmdW5jdGlvbiBhbiBzaW1wbHkgc3RyX2VudHJ5IHdpdGggc2Vjb25kIGFyZ3VtZW50IG51bGwKICogaXMgdGhhdCB0aGlzIGZ1bmN0aW9uIHdpbGwgYWxzbyBrZWVwIGEgbm90ZSBpbiB0aGUgbWV0YWRhdGEgdGhhdCB0eXBlIG1pZ2h0IG5vdCBiZSBmaW5hbC4KICogRm9yIGV4YW1wbGUgd2hlbiB3ZSBuZWVkIHRvIGd1ZXNzIGNvbHVtbiB0eXBlIGZyb20gcm93cyBiZWNhdXNlIHNjaGVtYSB3YXMgbm90IHByb3ZpZGVkLAogKiBhbmQgZ2l2ZW4gY29sdW1uIGluIHRoZSBmaXJzdCByb3cgaXMgbnVsbCwgaXQgbWlnaHQgc3RpbGwgY2hhbmdlIG9uY2Ugd2UgZ2V0IHRvIHRoZSBzZWNvbmQgcm93LgogKiBUaGF0IG1ldGFkYXRhIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIHN0cmluZ19lbnRyeSB3YXMgY3JlYXRlZCBmcm9tIG51bGwgb3Igbm90LgogKgogKiBCeSBkZXNpZ24gZmxvdyBhc3N1bWVzIHdoZW4gZ3Vlc3NpbmcgY29sdW1uIHR5cGUgdGhhdCBudWxsIHdvdWxkIGJlIGEgc3RyaW5nICh0aGUgbW9zdCBmbGV4aWJsZSB0eXBlKS4KICoKICogQHJldHVybiBFbnRyeTw\/c3RyaW5nPgogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":657,"slug":"string-entry","name":"string_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gRW50cnk8P3N0cmluZz4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":666,"slug":"uuid-entry","name":"uuid_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"Uuid","namespace":"Flow\\Types\\Value","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gRW50cnk8P1xGbG93XFR5cGVzXFZhbHVlXFV1aWQ+CiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":675,"slug":"xml-entry","name":"xml_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"DOMDocument","namespace":"","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gRW50cnk8P1xET01Eb2N1bWVudD4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":684,"slug":"xml-element-entry","name":"xml_element_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"DOMElement","namespace":"","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gRW50cnk8P1xET01FbGVtZW50PgogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":693,"slug":"html-entry","name":"html_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"Dom\\HTMLDocument","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gRW50cnk8P0hUTUxEb2N1bWVudD4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":702,"slug":"html-element-entry","name":"html_element_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"Dom\\HTMLElement","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gRW50cnk8P0hUTUxFbGVtZW50PgogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":711,"slug":"entries","name":"entries","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"entries","type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Entries","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBFbnRyeTxtaXhlZD4gLi4uJGVudHJpZXMKICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":725,"slug":"struct-entry","name":"struct_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"array","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"type","type":[{"name":"StructureType","namespace":"Flow\\Types\\Type\\Logical","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUCiAqCiAqIEBwYXJhbSA\/YXJyYXk8c3RyaW5nLCBtaXhlZD4gJHZhbHVlCiAqIEBwYXJhbSBTdHJ1Y3R1cmVUeXBlPFQ+ICR0eXBlCiAqCiAqIEByZXR1cm4gRW50cnk8P2FycmF5PHN0cmluZywgVD4+CiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":739,"slug":"structure-entry","name":"structure_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"array","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"type","type":[{"name":"StructureType","namespace":"Flow\\Types\\Type\\Logical","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUCiAqCiAqIEBwYXJhbSA\/YXJyYXk8c3RyaW5nLCBtaXhlZD4gJHZhbHVlCiAqIEBwYXJhbSBTdHJ1Y3R1cmVUeXBlPFQ+ICR0eXBlCiAqCiAqIEByZXR1cm4gRW50cnk8P2FycmF5PHN0cmluZywgVD4+CiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":849,"slug":"list-entry","name":"list_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"array","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"type","type":[{"name":"ListType","namespace":"Flow\\Types\\Type\\Logical","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUCiAqCiAqIEBwYXJhbSBudWxsfGxpc3Q8bWl4ZWQ+ICR2YWx1ZQogKiBAcGFyYW0gTGlzdFR5cGU8VD4gJHR5cGUKICoKICogQHJldHVybiBFbnRyeTxtaXhlZD4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":895,"slug":"map-entry","name":"map_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"array","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"mapType","type":[{"name":"MapType","namespace":"Flow\\Types\\Type\\Logical","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"ENTRY"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUS2V5IG9mIGFycmF5LWtleQogKiBAdGVtcGxhdGUgVFZhbHVlCiAqCiAqIEBwYXJhbSA\/YXJyYXk8YXJyYXkta2V5LCBtaXhlZD4gJHZhbHVlCiAqIEBwYXJhbSBNYXBUeXBlPFRLZXksIFRWYWx1ZT4gJG1hcFR5cGUKICoKICogQHJldHVybiBFbnRyeTw\/YXJyYXk8VEtleSwgVFZhbHVlPj4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":928,"slug":"type-date","name":"type_date","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBkZXByZWNhdGVkIHBsZWFzZSB1c2UgXEZsb3dcVHlwZXNcRFNMXHR5cGVfZGF0ZSgpIDogRGF0ZVR5cGUKICoKICogQHJldHVybiBUeXBlPFxEYXRlVGltZUludGVyZmFjZT4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":983,"slug":"type-int","name":"type_int","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBkZXByZWNhdGVkIHBsZWFzZSB1c2UgXEZsb3dcVHlwZXNcRFNMXHR5cGVfaW50ZWdlcigpIDogSW50ZWdlclR5cGUKICoKICogQHJldHVybiBUeXBlPGludD4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1110,"slug":"row","name":"row","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"entry","type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Row","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBFbnRyeTxtaXhlZD4gLi4uJGVudHJ5CiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1116,"slug":"rows","name":"rows","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"row","type":[{"name":"Row","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Rows","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1126,"slug":"rows-partitioned","name":"rows_partitioned","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"rows","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"partitions","type":[{"name":"Partitions","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Rows","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxSb3c+ICRyb3dzCiAqIEBwYXJhbSBhcnJheTxcRmxvd1xGaWxlc3lzdGVtXFBhcnRpdGlvbnxzdHJpbmc+fFBhcnRpdGlvbnMgJHBhcnRpdGlvbnMKICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1135,"slug":"col","name":"col","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"entry","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"EntryReference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":true,"doc_comment":"LyoqCiAqIEFuIGFsaWFzIGZvciBgcmVmYC4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1145,"slug":"entry","name":"entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"entry","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"EntryReference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"columns","option":"create"}}],"scalar_function_chain":true,"doc_comment":"LyoqCiAqIEFuIGFsaWFzIGZvciBgcmVmYC4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1152,"slug":"ref","name":"ref","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"entry","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"EntryReference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"columns","option":"create"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1158,"slug":"structure-ref","name":"structure_ref","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"entry","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"StructureFunctions","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1164,"slug":"list-ref","name":"list_ref","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"entry","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ListFunctions","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1170,"slug":"refs","name":"refs","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"entries","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"References","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1176,"slug":"select","name":"select","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"entries","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Select","namespace":"Flow\\ETL\\Transformation","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"TRANSFORMER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1182,"slug":"drop","name":"drop","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"entries","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Drop","namespace":"Flow\\ETL\\Transformation","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"TRANSFORMER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1188,"slug":"add-row-index","name":"add_row_index","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"column","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'index'"},{"name":"startFrom","type":[{"name":"StartFrom","namespace":"Flow\\ETL\\Transformation\\AddRowIndex","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Transformation\\AddRowIndex\\StartFrom::..."}],"return_type":[{"name":"AddRowIndex","namespace":"Flow\\ETL\\Transformation","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"TRANSFORMER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1197,"slug":"batch-size","name":"batch_size","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"size","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"BatchSize","namespace":"Flow\\ETL\\Transformation","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"TRANSFORMER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBpbnQ8MSwgbWF4PiAkc2l6ZQogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1203,"slug":"limit","name":"limit","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"limit","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Limit","namespace":"Flow\\ETL\\Transformation","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"TRANSFORMER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1212,"slug":"mask-columns","name":"mask_columns","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"columns","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"mask","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'******'"}],"return_type":[{"name":"MaskColumns","namespace":"Flow\\ETL\\Transformation","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"TRANSFORMER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxpbnQsIHN0cmluZz4gJGNvbHVtbnMKICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1218,"slug":"optional","name":"optional","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"function","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Optional","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1225,"slug":"lit","name":"lit","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"value","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Literal","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"columns","option":"create"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1231,"slug":"exists","name":"exists","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Exists","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1237,"slug":"when","name":"when","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"condition","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"then","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"else","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"When","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1243,"slug":"array-get","name":"array_get","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"path","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ArrayGet","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1252,"slug":"array-get-collection","name":"array_get_collection","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"keys","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ArrayGetCollection","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxhcnJheS1rZXksIG1peGVkPnxTY2FsYXJGdW5jdGlvbiAka2V5cwogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1258,"slug":"array-get-collection-first","name":"array_get_collection_first","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"keys","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"ArrayGetCollection","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1267,"slug":"array-exists","name":"array_exists","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"path","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ArrayPathExists","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxhcnJheS1rZXksIG1peGVkPnxTY2FsYXJGdW5jdGlvbiAkcmVmCiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1277,"slug":"array-merge","name":"array_merge","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"left","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"right","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ArrayMerge","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxhcnJheS1rZXksIG1peGVkPnxTY2FsYXJGdW5jdGlvbiAkbGVmdAogKiBAcGFyYW0gYXJyYXk8YXJyYXkta2V5LCBtaXhlZD58U2NhbGFyRnVuY3Rpb24gJHJpZ2h0CiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1286,"slug":"array-merge-collection","name":"array_merge_collection","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"array","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ArrayMergeCollection","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxhcnJheS1rZXksIG1peGVkPnxTY2FsYXJGdW5jdGlvbiAkYXJyYXkKICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1292,"slug":"array-key-rename","name":"array_key_rename","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"path","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"newName","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ArrayKeyRename","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1298,"slug":"array-keys-style-convert","name":"array_keys_style_convert","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"style","type":[{"name":"StringStyles","namespace":"Flow\\ETL\\Function\\StyleConverter","is_nullable":false,"is_variadic":false},{"name":"StringStyles","namespace":"Flow\\ETL\\String","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\String\\StringStyles::..."}],"return_type":[{"name":"ArrayKeysStyleConvert","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1308,"slug":"array-sort","name":"array_sort","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"function","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"sort_function","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"Sort","namespace":"Flow\\ETL\\Function\\ArraySort","is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"flags","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"recursive","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"}],"return_type":[{"name":"ArraySort","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1321,"slug":"array-reverse","name":"array_reverse","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"function","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"preserveKeys","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"ArrayReverse","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxhcnJheS1rZXksIG1peGVkPnxTY2FsYXJGdW5jdGlvbiAkZnVuY3Rpb24KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1327,"slug":"now","name":"now","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"time_zone","type":[{"name":"DateTimeZone","namespace":"","is_nullable":false,"is_variadic":false},{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"DateTimeZone::..."}],"return_type":[{"name":"Now","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1333,"slug":"between","name":"between","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"value","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"lower_bound","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"upper_bound","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"boundary","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"Boundary","namespace":"Flow\\ETL\\Function\\Between","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Function\\Between\\Boundary::..."}],"return_type":[{"name":"Between","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1339,"slug":"to-date-time","name":"to_date_time","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"format","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'Y-m-d H:i:s'"},{"name":"timeZone","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"DateTimeZone","namespace":"","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"DateTimeZone::..."}],"return_type":[{"name":"ToDateTime","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1345,"slug":"to-date","name":"to_date","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"format","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'Y-m-d'"},{"name":"timeZone","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"DateTimeZone","namespace":"","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"DateTimeZone::..."}],"return_type":[{"name":"ToDate","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1351,"slug":"date-time-format","name":"date_time_format","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"format","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"DateTimeFormat","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1357,"slug":"split","name":"split","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"value","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"separator","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"limit","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"9223372036854775807"}],"return_type":[{"name":"Split","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1367,"slug":"combine","name":"combine","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"keys","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"values","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Combine","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxhcnJheS1rZXksIG1peGVkPnxTY2FsYXJGdW5jdGlvbiAka2V5cwogKiBAcGFyYW0gYXJyYXk8YXJyYXkta2V5LCBtaXhlZD58U2NhbGFyRnVuY3Rpb24gJHZhbHVlcwogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1376,"slug":"concat","name":"concat","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"functions","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Concat","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":"LyoqCiAqIENvbmNhdCBhbGwgdmFsdWVzLiBJZiB5b3Ugd2FudCB0byBjb25jYXRlbmF0ZSB2YWx1ZXMgd2l0aCBzZXBhcmF0b3IgdXNlIGNvbmNhdF93cyBmdW5jdGlvbi4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1385,"slug":"concat-ws","name":"concat_ws","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"separator","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"functions","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"ConcatWithSeparator","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":"LyoqCiAqIENvbmNhdCBhbGwgdmFsdWVzIHdpdGggc2VwYXJhdG9yLgogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1391,"slug":"hash","name":"hash","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"value","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"algorithm","type":[{"name":"Algorithm","namespace":"Flow\\ETL\\Hash","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Hash\\NativePHPHash::..."}],"return_type":[{"name":"Hash","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1400,"slug":"cast","name":"cast","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"value","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"type","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Cast","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":"LyoqCiAqIEBwYXJhbSBcRmxvd1xUeXBlc1xUeXBlPG1peGVkPnxzdHJpbmcgJHR5cGUKICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1406,"slug":"coalesce","name":"coalesce","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"values","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Coalesce","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1412,"slug":"count","name":"count","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"function","type":[{"name":"EntryReference","namespace":"Flow\\ETL\\Row","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Count","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"AGGREGATING_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1425,"slug":"call","name":"call","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"callable","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"callable","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"parameters","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"return_type","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"CallUserFunc","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":"LyoqCiAqIENhbGxzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIHdpdGggdGhlIGdpdmVuIHBhcmFtZXRlcnMuCiAqCiAqIEBwYXJhbSBjYWxsYWJsZXxTY2FsYXJGdW5jdGlvbiAkY2FsbGFibGUKICogQHBhcmFtIGFycmF5PG1peGVkPiAkcGFyYW1ldGVycwogKiBAcGFyYW0gbnVsbHxUeXBlPG1peGVkPiAkcmV0dXJuX3R5cGUKICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1454,"slug":"array-unpack","name":"array_unpack","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"array","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"skip_keys","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"entry_prefix","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"ArrayUnpack","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxhcnJheS1rZXksIG1peGVkPnxTY2FsYXJGdW5jdGlvbiAkYXJyYXkKICogQHBhcmFtIGFycmF5PGFycmF5LWtleSwgbWl4ZWQ+fFNjYWxhckZ1bmN0aW9uICRza2lwX2tleXMKICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1480,"slug":"array-expand","name":"array_expand","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"function","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"expand","type":[{"name":"ArrayExpand","namespace":"Flow\\ETL\\Function\\ArrayExpand","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Function\\ArrayExpand\\ArrayExpand::..."}],"return_type":[{"name":"ArrayExpand","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":"LyoqCiAqIEV4cGFuZHMgZWFjaCB2YWx1ZSBpbnRvIGVudHJ5LCBpZiB0aGVyZSBhcmUgbW9yZSB0aGFuIG9uZSB2YWx1ZSwgbXVsdGlwbGUgcm93cyB3aWxsIGJlIGNyZWF0ZWQuCiAqIEFycmF5IGtleXMgYXJlIGlnbm9yZWQsIG9ubHkgdmFsdWVzIGFyZSB1c2VkIHRvIGNyZWF0ZSBuZXcgcm93cy4KICoKICogQmVmb3JlOgogKiAgICstLSstLS0tLS0tLS0tLS0tLS0tLS0tKwogKiAgIHxpZHwgICAgICAgICAgICAgIGFycmF5fAogKiAgICstLSstLS0tLS0tLS0tLS0tLS0tLS0tKwogKiAgIHwgMXx7ImEiOjEsImIiOjIsImMiOjN9fAogKiAgICstLSstLS0tLS0tLS0tLS0tLS0tLS0tKwogKgogKiBBZnRlcjoKICogICArLS0rLS0tLS0tLS0rCiAqICAgfGlkfGV4cGFuZGVkfAogKiAgICstLSstLS0tLS0tLSsKICogICB8IDF8ICAgICAgIDF8CiAqICAgfCAxfCAgICAgICAyfAogKiAgIHwgMXwgICAgICAgM3wKICogICArLS0rLS0tLS0tLS0rCiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1486,"slug":"size","name":"size","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"value","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Size","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1492,"slug":"uuid-v4","name":"uuid_v4","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"Uuid","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1498,"slug":"uuid-v7","name":"uuid_v7","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"value","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"DateTimeInterface","namespace":"","is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Uuid","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1504,"slug":"ulid","name":"ulid","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"value","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Ulid","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1510,"slug":"lower","name":"lower","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"value","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ToLower","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1516,"slug":"capitalize","name":"capitalize","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"value","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Capitalize","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1522,"slug":"upper","name":"upper","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"value","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ToUpper","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1528,"slug":"all","name":"all","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"functions","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"All","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1534,"slug":"any","name":"any","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"values","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Any","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1540,"slug":"not","name":"not","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"value","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Not","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1546,"slug":"to-timezone","name":"to_timezone","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"value","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"DateTimeInterface","namespace":"","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"timeZone","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"DateTimeZone","namespace":"","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ToTimeZone","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1552,"slug":"ignore-error-handler","name":"ignore_error_handler","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"IgnoreError","namespace":"Flow\\ETL\\ErrorHandler","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1558,"slug":"skip-rows-handler","name":"skip_rows_handler","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"SkipRows","namespace":"Flow\\ETL\\ErrorHandler","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1564,"slug":"throw-error-handler","name":"throw_error_handler","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"ThrowError","namespace":"Flow\\ETL\\ErrorHandler","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1570,"slug":"regex-replace","name":"regex_replace","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"pattern","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"replacement","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"subject","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"limit","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"RegexReplace","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1576,"slug":"regex-match-all","name":"regex_match_all","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"pattern","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"subject","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"flags","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"},{"name":"offset","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"}],"return_type":[{"name":"RegexMatchAll","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1582,"slug":"regex-match","name":"regex_match","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"pattern","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"subject","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"flags","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"},{"name":"offset","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"}],"return_type":[{"name":"RegexMatch","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1588,"slug":"regex","name":"regex","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"pattern","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"subject","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"flags","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"},{"name":"offset","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"}],"return_type":[{"name":"Regex","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1594,"slug":"regex-all","name":"regex_all","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"pattern","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"subject","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"flags","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"},{"name":"offset","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"}],"return_type":[{"name":"RegexAll","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1600,"slug":"sprintf","name":"sprintf","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"format","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"args","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"float","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Sprintf","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1606,"slug":"sanitize","name":"sanitize","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"value","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"placeholder","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'*'"},{"name":"skipCharacters","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Sanitize","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1612,"slug":"round","name":"round","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"value","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"float","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"precision","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"2"},{"name":"mode","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"1"}],"return_type":[{"name":"Round","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1618,"slug":"number-format","name":"number_format","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"value","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"float","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"decimals","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"2"},{"name":"decimal_separator","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'.'"},{"name":"thousands_separator","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"','"}],"return_type":[{"name":"NumberFormat","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1629,"slug":"to-entry","name":"to_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"data","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"entryFactory","type":[{"name":"EntryFactory","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Entry","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxtaXhlZD4gJGRhdGEKICoKICogQHJldHVybiBFbnRyeTxtaXhlZD4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1640,"slug":"array-to-row","name":"array_to_row","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"data","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"entryFactory","type":[{"name":"EntryFactory","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"partitions","type":[{"name":"Partitions","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"schema","type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Row","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxhcnJheTxtaXhlZD4+fGFycmF5PG1peGVkfHN0cmluZz4gJGRhdGEKICogQHBhcmFtIGFycmF5PFBhcnRpdGlvbj58UGFydGl0aW9ucyAkcGFydGl0aW9ucwogKiBAcGFyYW0gbnVsbHxTY2hlbWEgJHNjaGVtYQogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1685,"slug":"array-to-rows","name":"array_to_rows","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"data","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"entryFactory","type":[{"name":"EntryFactory","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"partitions","type":[{"name":"Partitions","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"schema","type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Rows","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxhcnJheTxtaXhlZD4+fGFycmF5PG1peGVkfHN0cmluZz4gJGRhdGEKICogQHBhcmFtIGFycmF5PFBhcnRpdGlvbj58UGFydGl0aW9ucyAkcGFydGl0aW9ucwogKiBAcGFyYW0gbnVsbHxTY2hlbWEgJHNjaGVtYQogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1714,"slug":"rank","name":"rank","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"Rank","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"WINDOW_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1720,"slug":"dens-rank","name":"dens_rank","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"DenseRank","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"WINDOW_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1726,"slug":"dense-rank","name":"dense_rank","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"DenseRank","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"WINDOW_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1732,"slug":"average","name":"average","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"EntryReference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"scale","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"2"},{"name":"rounding","type":[{"name":"Rounding","namespace":"Flow\\Calculator","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Calculator\\Rounding::..."}],"return_type":[{"name":"Average","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"AGGREGATING_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1738,"slug":"greatest","name":"greatest","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"values","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Greatest","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1744,"slug":"least","name":"least","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"values","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Least","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1750,"slug":"collect","name":"collect","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"EntryReference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Collect","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"AGGREGATING_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1756,"slug":"string-agg","name":"string_agg","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"EntryReference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"separator","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"', '"},{"name":"sort","type":[{"name":"SortOrder","namespace":"Flow\\ETL\\Row","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"StringAggregate","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"AGGREGATING_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1762,"slug":"collect-unique","name":"collect_unique","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"EntryReference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"CollectUnique","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"AGGREGATING_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1768,"slug":"window","name":"window","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"Window","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1774,"slug":"sum","name":"sum","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"EntryReference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Sum","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"AGGREGATING_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1780,"slug":"first","name":"first","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"EntryReference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"First","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"AGGREGATING_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1786,"slug":"last","name":"last","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"EntryReference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Last","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"AGGREGATING_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1792,"slug":"max","name":"max","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"EntryReference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Max","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"AGGREGATING_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1798,"slug":"min","name":"min","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"EntryReference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Min","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"AGGREGATING_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1804,"slug":"row-number","name":"row_number","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"RowNumber","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1815,"slug":"schema","name":"schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"definitions","type":[{"name":"Definition","namespace":"Flow\\ETL\\Schema","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBEZWZpbml0aW9uPG1peGVkPiAuLi4kZGVmaW5pdGlvbnMKICoKICogQHJldHVybiBTY2hlbWEKICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1824,"slug":"schema-to-json","name":"schema_to_json","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"schema","type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"pretty","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBTY2hlbWEgJHNjaGVtYQogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1833,"slug":"schema-to-php","name":"schema_to_php","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"schema","type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"valueFormatter","type":[{"name":"ValueFormatter","namespace":"Flow\\ETL\\Schema\\Formatter\\PHPFormatter","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Schema\\Formatter\\PHPFormatter\\ValueFormatter::..."},{"name":"typeFormatter","type":[{"name":"TypeFormatter","namespace":"Flow\\ETL\\Schema\\Formatter\\PHPFormatter","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Schema\\Formatter\\PHPFormatter\\TypeFormatter::..."}],"return_type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBTY2hlbWEgJHNjaGVtYQogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1842,"slug":"schema-to-ascii","name":"schema_to_ascii","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"schema","type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"formatter","type":[{"name":"SchemaFormatter","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBTY2hlbWEgJHNjaGVtYQogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1852,"slug":"schema-validate","name":"schema_validate","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"expected","type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"given","type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"validator","type":[{"name":"SchemaValidator","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Schema\\Validator\\StrictValidator::..."}],"return_type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBTY2hlbWEgJGV4cGVjdGVkCiAqIEBwYXJhbSBTY2hlbWEgJGdpdmVuCiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1858,"slug":"schema-evolving-validator","name":"schema_evolving_validator","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"EvolvingValidator","namespace":"Flow\\ETL\\Schema\\Validator","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1864,"slug":"schema-strict-validator","name":"schema_strict_validator","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"StrictValidator","namespace":"Flow\\ETL\\Schema\\Validator","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1870,"slug":"schema-selective-validator","name":"schema_selective_validator","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"SelectiveValidator","namespace":"Flow\\ETL\\Schema\\Validator","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1879,"slug":"schema-from-json","name":"schema_from_json","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"schema","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gU2NoZW1hCiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1891,"slug":"schema-metadata","name":"schema_metadata","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"metadata","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxzdHJpbmcsIGFycmF5PGJvb2x8ZmxvYXR8aW50fHN0cmluZz58Ym9vbHxmbG9hdHxpbnR8c3RyaW5nPiAkbWV0YWRhdGEKICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1900,"slug":"int-schema","name":"int_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"IntegerDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEFsaWFzIGZvciBgaW50ZWdlcl9zY2hlbWFgLgogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1906,"slug":"integer-schema","name":"integer_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"IntegerDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1915,"slug":"str-schema","name":"str_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"StringDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEFsaWFzIGZvciBgc3RyaW5nX3NjaGVtYWAuCiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1921,"slug":"string-schema","name":"string_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"StringDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1927,"slug":"bool-schema","name":"bool_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"BooleanDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1933,"slug":"float-schema","name":"float_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"FloatDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1947,"slug":"map-schema","name":"map_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"type","type":[{"name":"MapType","namespace":"Flow\\Types\\Type\\Logical","is_nullable":false,"is_variadic":false},{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"MapDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUS2V5IG9mIGFycmF5LWtleQogKiBAdGVtcGxhdGUgVFZhbHVlCiAqCiAqIEBwYXJhbSBNYXBUeXBlPFRLZXksIFRWYWx1ZT58VHlwZTxhcnJheTxUS2V5LCBUVmFsdWU+PiAkdHlwZQogKgogKiBAcmV0dXJuIE1hcERlZmluaXRpb248VEtleSwgVFZhbHVlPgogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1961,"slug":"list-schema","name":"list_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"type","type":[{"name":"ListType","namespace":"Flow\\Types\\Type\\Logical","is_nullable":false,"is_variadic":false},{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"ListDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUCiAqCiAqIEBwYXJhbSBMaXN0VHlwZTxUPnxUeXBlPGxpc3Q8VD4+ICR0eXBlCiAqCiAqIEByZXR1cm4gTGlzdERlZmluaXRpb248VD4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1975,"slug":"enum-schema","name":"enum_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"type","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"EnumDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUIG9mIFxVbml0RW51bQogKgogKiBAcGFyYW0gY2xhc3Mtc3RyaW5nPFQ+ICR0eXBlCiAqCiAqIEByZXR1cm4gRW51bURlZmluaXRpb248VD4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1981,"slug":"null-schema","name":"null_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"StringDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1987,"slug":"datetime-schema","name":"datetime_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"DateTimeDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1993,"slug":"time-schema","name":"time_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"TimeDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":1999,"slug":"date-schema","name":"date_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"DateDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2005,"slug":"json-schema","name":"json_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"JsonDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2011,"slug":"html-schema","name":"html_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"HTMLDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2017,"slug":"html-element-schema","name":"html_element_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"HTMLElementDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2023,"slug":"xml-schema","name":"xml_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"XMLDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2029,"slug":"xml-element-schema","name":"xml_element_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"XMLElementDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2044,"slug":"struct-schema","name":"struct_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"type","type":[{"name":"StructureType","namespace":"Flow\\Types\\Type\\Logical","is_nullable":false,"is_variadic":false},{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"StructureDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUCiAqCiAqIEBwYXJhbSBTdHJ1Y3R1cmVUeXBlPFQ+fFR5cGU8YXJyYXk8c3RyaW5nLCBUPj4gJHR5cGUKICoKICogQHJldHVybiBTdHJ1Y3R1cmVEZWZpbml0aW9uPFQ+CiAqCiAqIEBkZXByZWNhdGVkIFVzZSBgc3RydWN0dXJlX3NjaGVtYSgpYCBpbnN0ZWFkCiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2058,"slug":"structure-schema","name":"structure_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"type","type":[{"name":"StructureType","namespace":"Flow\\Types\\Type\\Logical","is_nullable":false,"is_variadic":false},{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"StructureDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUCiAqCiAqIEBwYXJhbSBTdHJ1Y3R1cmVUeXBlPFQ+fFR5cGU8YXJyYXk8c3RyaW5nLCBUPj4gJHR5cGUKICoKICogQHJldHVybiBTdHJ1Y3R1cmVEZWZpbml0aW9uPFQ+CiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2065,"slug":"uuid-schema","name":"uuid_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"UuidDefinition","namespace":"Flow\\ETL\\Schema\\Definition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2078,"slug":"definition-from-array","name":"definition_from_array","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"definition","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Definition","namespace":"Flow\\ETL\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIERlZmluaXRpb24gZnJvbSBhbiBhcnJheSByZXByZXNlbnRhdGlvbi4KICoKICogQHBhcmFtIGFycmF5PGFycmF5LWtleSwgbWl4ZWQ+ICRkZWZpbml0aW9uCiAqCiAqIEByZXR1cm4gRGVmaW5pdGlvbjxtaXhlZD4KICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2111,"slug":"definition-from-type","name":"definition_from_type","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"ref","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"type","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nullable","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"metadata","type":[{"name":"Metadata","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Definition","namespace":"Flow\\ETL\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIERlZmluaXRpb24gZnJvbSBhIFR5cGUuCiAqCiAqIEBwYXJhbSBUeXBlPG1peGVkPiAkdHlwZQogKgogKiBAcmV0dXJuIERlZmluaXRpb248bWl4ZWQ+CiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2137,"slug":"execution-context","name":"execution_context","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"config","type":[{"name":"Config","namespace":"Flow\\ETL","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"FlowContext","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2143,"slug":"flow-context","name":"flow_context","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"config","type":[{"name":"Config","namespace":"Flow\\ETL","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"FlowContext","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2149,"slug":"config","name":"config","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"Config","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2155,"slug":"config-builder","name":"config_builder","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"ConfigBuilder","namespace":"Flow\\ETL\\Config","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2164,"slug":"overwrite","name":"overwrite","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"SaveMode","namespace":"Flow\\ETL\\Filesystem","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEFsaWFzIGZvciBzYXZlX21vZGVfb3ZlcndyaXRlKCkuCiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2170,"slug":"save-mode-overwrite","name":"save_mode_overwrite","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"SaveMode","namespace":"Flow\\ETL\\Filesystem","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2179,"slug":"ignore","name":"ignore","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"SaveMode","namespace":"Flow\\ETL\\Filesystem","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEFsaWFzIGZvciBzYXZlX21vZGVfaWdub3JlKCkuCiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2185,"slug":"save-mode-ignore","name":"save_mode_ignore","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"SaveMode","namespace":"Flow\\ETL\\Filesystem","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2194,"slug":"exception-if-exists","name":"exception_if_exists","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"SaveMode","namespace":"Flow\\ETL\\Filesystem","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEFsaWFzIGZvciBzYXZlX21vZGVfZXhjZXB0aW9uX2lmX2V4aXN0cygpLgogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2200,"slug":"save-mode-exception-if-exists","name":"save_mode_exception_if_exists","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"SaveMode","namespace":"Flow\\ETL\\Filesystem","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2209,"slug":"append","name":"append","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"SaveMode","namespace":"Flow\\ETL\\Filesystem","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEFsaWFzIGZvciBzYXZlX21vZGVfYXBwZW5kKCkuCiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2215,"slug":"save-mode-append","name":"save_mode_append","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"SaveMode","namespace":"Flow\\ETL\\Filesystem","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2225,"slug":"execution-strict","name":"execution_strict","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"ExecutionMode","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEluIHRoaXMgbW9kZSwgZnVuY3Rpb25zIHRocm93cyBleGNlcHRpb25zIGlmIHRoZSBnaXZlbiBlbnRyeSBpcyBub3QgZm91bmQKICogb3IgcGFzc2VkIHBhcmFtZXRlcnMgYXJlIGludmFsaWQuCiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2234,"slug":"execution-lenient","name":"execution_lenient","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"ExecutionMode","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEluIHRoaXMgbW9kZSwgZnVuY3Rpb25zIHJldHVybnMgbnVsbHMgaW5zdGVhZCBvZiB0aHJvd2luZyBleGNlcHRpb25zLgogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2245,"slug":"get-type","name":"get_type","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"value","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxtaXhlZD4KICoKICogQGRlcHJlY2F0ZWQgUGxlYXNlIHVzZSBcRmxvd1xUeXBlc1xEU0xcZ2V0X3R5cGUoJHZhbHVlKSBpbnN0ZWFkCiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2256,"slug":"print-schema","name":"print_schema","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"schema","type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"formatter","type":[{"name":"SchemaFormatter","namespace":"Flow\\ETL\\Schema","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBTY2hlbWEgJHNjaGVtYQogKgogKiBAZGVwcmVjYXRlZCBQbGVhc2UgdXNlIHNjaGVtYV90b19hc2NpaSgkc2NoZW1hKSBpbnN0ZWFkCiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2262,"slug":"print-rows","name":"print_rows","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"rows","type":[{"name":"Rows","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"truncate","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"formatter","type":[{"name":"Formatter","namespace":"Flow\\ETL","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2268,"slug":"identical","name":"identical","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"left","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"right","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Identical","namespace":"Flow\\ETL\\Join\\Comparison","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"COMPARISON"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2274,"slug":"equal","name":"equal","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"left","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"right","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Equal","namespace":"Flow\\ETL\\Join\\Comparison","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"COMPARISON"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2280,"slug":"compare-all","name":"compare_all","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"comparisons","type":[{"name":"Comparison","namespace":"Flow\\ETL\\Join","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"All","namespace":"Flow\\ETL\\Join\\Comparison","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"COMPARISON"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2286,"slug":"compare-any","name":"compare_any","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"comparisons","type":[{"name":"Comparison","namespace":"Flow\\ETL\\Join","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Any","namespace":"Flow\\ETL\\Join\\Comparison","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"COMPARISON"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2297,"slug":"join-on","name":"join_on","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"comparisons","type":[{"name":"Comparison","namespace":"Flow\\ETL\\Join","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"join_prefix","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"''"}],"return_type":[{"name":"Expression","namespace":"Flow\\ETL\\Join","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"join","example":"join"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"join","example":"join_each"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxcRmxvd1xFVExcSm9pblxDb21wYXJpc29ufHN0cmluZz58Q29tcGFyaXNvbiAkY29tcGFyaXNvbnMKICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2303,"slug":"compare-entries-by-name","name":"compare_entries_by_name","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"order","type":[{"name":"Order","namespace":"Flow\\ETL\\Transformer\\OrderEntries","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Transformer\\OrderEntries\\Order::..."}],"return_type":[{"name":"Comparator","namespace":"Flow\\ETL\\Transformer\\OrderEntries","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2309,"slug":"compare-entries-by-name-desc","name":"compare_entries_by_name_desc","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"Comparator","namespace":"Flow\\ETL\\Transformer\\OrderEntries","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2318,"slug":"compare-entries-by-type","name":"compare_entries_by_type","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"priorities","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[...]"},{"name":"order","type":[{"name":"Order","namespace":"Flow\\ETL\\Transformer\\OrderEntries","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Transformer\\OrderEntries\\Order::..."}],"return_type":[{"name":"Comparator","namespace":"Flow\\ETL\\Transformer\\OrderEntries","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxjbGFzcy1zdHJpbmc8RW50cnk8bWl4ZWQ+PiwgaW50PiAkcHJpb3JpdGllcwogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2327,"slug":"compare-entries-by-type-desc","name":"compare_entries_by_type_desc","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"priorities","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[...]"}],"return_type":[{"name":"Comparator","namespace":"Flow\\ETL\\Transformer\\OrderEntries","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxjbGFzcy1zdHJpbmc8RW50cnk8bWl4ZWQ+PiwgaW50PiAkcHJpb3JpdGllcwogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2336,"slug":"compare-entries-by-type-and-name","name":"compare_entries_by_type_and_name","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"priorities","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[...]"},{"name":"order","type":[{"name":"Order","namespace":"Flow\\ETL\\Transformer\\OrderEntries","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Transformer\\OrderEntries\\Order::..."}],"return_type":[{"name":"Comparator","namespace":"Flow\\ETL\\Transformer\\OrderEntries","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxjbGFzcy1zdHJpbmc8RW50cnk8bWl4ZWQ+PiwgaW50PiAkcHJpb3JpdGllcwogKi8="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2349,"slug":"is-type","name":"is_type","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"type","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxzdHJpbmd8VHlwZTxtaXhlZD4+fFR5cGU8bWl4ZWQ+ICR0eXBlCiAqIEBwYXJhbSBtaXhlZCAkdmFsdWUKICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2412,"slug":"generate-random-string","name":"generate_random_string","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"length","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"32"},{"name":"generator","type":[{"name":"NativePHPRandomValueGenerator","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\NativePHPRandomValueGenerator::..."}],"return_type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2418,"slug":"generate-random-int","name":"generate_random_int","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"start","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"-9223372036854775808"},{"name":"end","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"9223372036854775807"},{"name":"generator","type":[{"name":"NativePHPRandomValueGenerator","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\NativePHPRandomValueGenerator::..."}],"return_type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2424,"slug":"random-string","name":"random_string","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"length","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"generator","type":[{"name":"RandomValueGenerator","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\NativePHPRandomValueGenerator::..."}],"return_type":[{"name":"RandomString","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2435,"slug":"dom-element-to-string","name":"dom_element_to_string","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"element","type":[{"name":"DOMElement","namespace":"","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"format_output","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"preserver_white_space","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"false","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"DATA_FRAME"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBkZXByZWNhdGVkIFBsZWFzZSB1c2UgXEZsb3dcVHlwZXNcRFNMXGRvbV9lbGVtZW50X3RvX3N0cmluZygpIGluc3RlYWQKICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2441,"slug":"date-interval-to-milliseconds","name":"date_interval_to_milliseconds","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"interval","type":[{"name":"DateInterval","namespace":"","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2458,"slug":"date-interval-to-seconds","name":"date_interval_to_seconds","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"interval","type":[{"name":"DateInterval","namespace":"","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2475,"slug":"date-interval-to-microseconds","name":"date_interval_to_microseconds","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"interval","type":[{"name":"DateInterval","namespace":"","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2492,"slug":"with-entry","name":"with_entry","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"function","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"WithEntry","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2498,"slug":"constraint-unique","name":"constraint_unique","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"reference","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"references","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"UniqueConstraint","namespace":"Flow\\ETL\\Constraint","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2504,"slug":"constraint-sorted-by","name":"constraint_sorted_by","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"column","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"columns","type":[{"name":"Reference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"SortedByConstraint","namespace":"Flow\\ETL\\Constraint","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2515,"slug":"analyze","name":"analyze","namespace":"Flow\\ETL\\DSL","parameters":[],"return_type":[{"name":"Analyze","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2524,"slug":"match-cases","name":"match_cases","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"cases","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"default","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"MatchCases","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":true,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxNYXRjaENvbmRpdGlvbj4gJGNhc2VzCiAqLw=="},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2530,"slug":"match-condition","name":"match_condition","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"condition","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"then","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"MatchCondition","namespace":"Flow\\ETL\\Function\\MatchCases","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"SCALAR_FUNCTION"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2536,"slug":"retry-any-throwable","name":"retry_any_throwable","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"limit","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"AnyThrowable","namespace":"Flow\\ETL\\Retry\\RetryStrategy","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2545,"slug":"retry-on-exception-types","name":"retry_on_exception_types","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"exception_types","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"limit","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OnExceptionTypes","namespace":"Flow\\ETL\\Retry\\RetryStrategy","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxjbGFzcy1zdHJpbmc8XFRocm93YWJsZT4+ICRleGNlcHRpb25fdHlwZXMKICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2551,"slug":"delay-linear","name":"delay_linear","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"delay","type":[{"name":"Duration","namespace":"Flow\\ETL\\Time","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"increment","type":[{"name":"Duration","namespace":"Flow\\ETL\\Time","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Linear","namespace":"Flow\\ETL\\Retry\\DelayFactory","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2557,"slug":"delay-exponential","name":"delay_exponential","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"base","type":[{"name":"Duration","namespace":"Flow\\ETL\\Time","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"multiplier","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"2"},{"name":"max_delay","type":[{"name":"Duration","namespace":"Flow\\ETL\\Time","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Exponential","namespace":"Flow\\ETL\\Retry\\DelayFactory","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2566,"slug":"delay-jitter","name":"delay_jitter","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"delay","type":[{"name":"DelayFactory","namespace":"Flow\\ETL\\Retry","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"jitter_factor","type":[{"name":"float","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Jitter","namespace":"Flow\\ETL\\Retry\\DelayFactory","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBmbG9hdCAkaml0dGVyX2ZhY3RvciBhIHZhbHVlIGJldHdlZW4gMCBhbmQgMSByZXByZXNlbnRpbmcgdGhlIG1heGltdW0gcGVyY2VudGFnZSBvZiBqaXR0ZXIgdG8gYXBwbHkKICov"},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2572,"slug":"delay-fixed","name":"delay_fixed","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"delay","type":[{"name":"Duration","namespace":"Flow\\ETL\\Time","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Fixed","namespace":"Flow\\ETL\\Retry\\DelayFactory","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2578,"slug":"duration-seconds","name":"duration_seconds","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"seconds","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Duration","namespace":"Flow\\ETL\\Time","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2584,"slug":"duration-milliseconds","name":"duration_milliseconds","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"milliseconds","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Duration","namespace":"Flow\\ETL\\Time","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2590,"slug":"duration-microseconds","name":"duration_microseconds","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"microseconds","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Duration","namespace":"Flow\\ETL\\Time","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2596,"slug":"duration-minutes","name":"duration_minutes","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"minutes","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Duration","namespace":"Flow\\ETL\\Time","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/core\/etl\/src\/Flow\/ETL\/DSL\/functions.php","start_line_in_file":2602,"slug":"write-with-retries","name":"write_with_retries","namespace":"Flow\\ETL\\DSL","parameters":[{"name":"loader","type":[{"name":"Loader","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"retry_strategy","type":[{"name":"RetryStrategy","namespace":"Flow\\ETL\\Retry","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Retry\\RetryStrategy\\AnyThrowable::..."},{"name":"delay_factory","type":[{"name":"DelayFactory","namespace":"Flow\\ETL\\Retry","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Retry\\DelayFactory\\Fixed\\FixedMilliseconds::..."},{"name":"sleep","type":[{"name":"Sleep","namespace":"Flow\\ETL\\Time","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Time\\SystemSleep::..."}],"return_type":[{"name":"RetryLoader","namespace":"Flow\\ETL\\Loader","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CORE","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-avro\/src\/Flow\/ETL\/Adapter\/Avro\/functions.php","start_line_in_file":13,"slug":"from-avro","name":"from_avro","namespace":"Flow\\ETL\\DSL\\Adapter\\Avro","parameters":[{"name":"path","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"AvroExtractor","namespace":"Flow\\ETL\\Adapter\\Avro\\FlixTech","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"AVRO","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-avro\/src\/Flow\/ETL\/Adapter\/Avro\/functions.php","start_line_in_file":21,"slug":"to-avro","name":"to_avro","namespace":"Flow\\ETL\\DSL\\Adapter\\Avro","parameters":[{"name":"path","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"schema","type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"AvroLoader","namespace":"Flow\\ETL\\Adapter\\Avro\\FlixTech","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"AVRO","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-chartjs\/src\/Flow\/ETL\/Adapter\/ChartJS\/functions.php","start_line_in_file":14,"slug":"bar-chart","name":"bar_chart","namespace":"Flow\\ETL\\Adapter\\ChartJS","parameters":[{"name":"label","type":[{"name":"EntryReference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"datasets","type":[{"name":"References","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"BarChart","namespace":"Flow\\ETL\\Adapter\\ChartJS\\Chart","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CHART_JS","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-chartjs\/src\/Flow\/ETL\/Adapter\/ChartJS\/functions.php","start_line_in_file":20,"slug":"line-chart","name":"line_chart","namespace":"Flow\\ETL\\Adapter\\ChartJS","parameters":[{"name":"label","type":[{"name":"EntryReference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"datasets","type":[{"name":"References","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"LineChart","namespace":"Flow\\ETL\\Adapter\\ChartJS\\Chart","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CHART_JS","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-chartjs\/src\/Flow\/ETL\/Adapter\/ChartJS\/functions.php","start_line_in_file":26,"slug":"pie-chart","name":"pie_chart","namespace":"Flow\\ETL\\Adapter\\ChartJS","parameters":[{"name":"label","type":[{"name":"EntryReference","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"datasets","type":[{"name":"References","namespace":"Flow\\ETL\\Row","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"PieChart","namespace":"Flow\\ETL\\Adapter\\ChartJS\\Chart","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CHART_JS","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-chartjs\/src\/Flow\/ETL\/Adapter\/ChartJS\/functions.php","start_line_in_file":32,"slug":"to-chartjs","name":"to_chartjs","namespace":"Flow\\ETL\\Adapter\\ChartJS","parameters":[{"name":"type","type":[{"name":"Chart","namespace":"Flow\\ETL\\Adapter\\ChartJS","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ChartJSLoader","namespace":"Flow\\ETL\\Adapter\\ChartJS","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CHART_JS","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-chartjs\/src\/Flow\/ETL\/Adapter\/ChartJS\/functions.php","start_line_in_file":43,"slug":"to-chartjs-file","name":"to_chartjs_file","namespace":"Flow\\ETL\\Adapter\\ChartJS","parameters":[{"name":"type","type":[{"name":"Chart","namespace":"Flow\\ETL\\Adapter\\ChartJS","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"output","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"template","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"ChartJSLoader","namespace":"Flow\\ETL\\Adapter\\ChartJS","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CHART_JS","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBDaGFydCAkdHlwZQogKiBAcGFyYW0gbnVsbHxQYXRofHN0cmluZyAkb3V0cHV0IC0gQGRlcHJlY2F0ZWQgdXNlICRsb2FkZXItPndpdGhPdXRwdXRQYXRoKCkgaW5zdGVhZAogKiBAcGFyYW0gbnVsbHxQYXRofHN0cmluZyAkdGVtcGxhdGUgLSBAZGVwcmVjYXRlZCB1c2UgJGxvYWRlci0+d2l0aFRlbXBsYXRlKCkgaW5zdGVhZAogKi8="},{"repository_path":"src\/adapter\/etl-adapter-chartjs\/src\/Flow\/ETL\/Adapter\/ChartJS\/functions.php","start_line_in_file":71,"slug":"to-chartjs-var","name":"to_chartjs_var","namespace":"Flow\\ETL\\Adapter\\ChartJS","parameters":[{"name":"type","type":[{"name":"Chart","namespace":"Flow\\ETL\\Adapter\\ChartJS","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"output","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ChartJSLoader","namespace":"Flow\\ETL\\Adapter\\ChartJS","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CHART_JS","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBDaGFydCAkdHlwZQogKiBAcGFyYW0gYXJyYXk8YXJyYXkta2V5LCBtaXhlZD4gJG91dHB1dCAtIEBkZXByZWNhdGVkIHVzZSAkbG9hZGVyLT53aXRoT3V0cHV0VmFyKCkgaW5zdGVhZAogKi8="},{"repository_path":"src\/adapter\/etl-adapter-csv\/src\/Flow\/ETL\/Adapter\/CSV\/functions.php","start_line_in_file":25,"slug":"from-csv","name":"from_csv","namespace":"Flow\\ETL\\Adapter\\CSV","parameters":[{"name":"path","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"with_header","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"},{"name":"empty_to_null","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"},{"name":"separator","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"enclosure","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"escape","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"characters_read_in_line","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"1000"},{"name":"schema","type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"CSVExtractor","namespace":"Flow\\ETL\\Adapter\\CSV","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CSV","type":"EXTRACTOR"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_reading","option":"csv"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBQYXRofHN0cmluZyAkcGF0aAogKiBAcGFyYW0gYm9vbCAkZW1wdHlfdG9fbnVsbCAtIEBkZXByZWNhdGVkIHVzZSAkbG9hZGVyLT53aXRoRW1wdHlUb051bGwoKSBpbnN0ZWFkCiAqIEBwYXJhbSBib29sICR3aXRoX2hlYWRlciAtIEBkZXByZWNhdGVkIHVzZSAkbG9hZGVyLT53aXRoSGVhZGVyKCkgaW5zdGVhZAogKiBAcGFyYW0gbnVsbHxzdHJpbmcgJHNlcGFyYXRvciAtIEBkZXByZWNhdGVkIHVzZSAkbG9hZGVyLT53aXRoU2VwYXJhdG9yKCkgaW5zdGVhZAogKiBAcGFyYW0gbnVsbHxzdHJpbmcgJGVuY2xvc3VyZSAtIEBkZXByZWNhdGVkIHVzZSAkbG9hZGVyLT53aXRoRW5jbG9zdXJlKCkgaW5zdGVhZAogKiBAcGFyYW0gbnVsbHxzdHJpbmcgJGVzY2FwZSAtIEBkZXByZWNhdGVkIHVzZSAkbG9hZGVyLT53aXRoRXNjYXBlKCkgaW5zdGVhZAogKiBAcGFyYW0gaW50PDEsIG1heD4gJGNoYXJhY3RlcnNfcmVhZF9pbl9saW5lIC0gQGRlcHJlY2F0ZWQgdXNlICRsb2FkZXItPndpdGhDaGFyYWN0ZXJzUmVhZEluTGluZSgpIGluc3RlYWQKICogQHBhcmFtIG51bGx8U2NoZW1hICRzY2hlbWEgLSBAZGVwcmVjYXRlZCB1c2UgJGxvYWRlci0+d2l0aFNjaGVtYSgpIGluc3RlYWQKICov"},{"repository_path":"src\/adapter\/etl-adapter-csv\/src\/Flow\/ETL\/Adapter\/CSV\/functions.php","start_line_in_file":70,"slug":"to-csv","name":"to_csv","namespace":"Flow\\ETL\\Adapter\\CSV","parameters":[{"name":"uri","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"with_header","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"},{"name":"separator","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"','"},{"name":"enclosure","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'\\\"'"},{"name":"escape","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'\\\\'"},{"name":"new_line_separator","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'\\n'"},{"name":"datetime_format","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'Y-m-d\\\\TH:i:sP'"}],"return_type":[{"name":"CSVLoader","namespace":"Flow\\ETL\\Adapter\\CSV","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CSV","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBQYXRofHN0cmluZyAkdXJpCiAqIEBwYXJhbSBib29sICR3aXRoX2hlYWRlciAtIEBkZXByZWNhdGVkIHVzZSAkbG9hZGVyLT53aXRoSGVhZGVyKCkgaW5zdGVhZAogKiBAcGFyYW0gc3RyaW5nICRzZXBhcmF0b3IgLSBAZGVwcmVjYXRlZCB1c2UgJGxvYWRlci0+d2l0aFNlcGFyYXRvcigpIGluc3RlYWQKICogQHBhcmFtIHN0cmluZyAkZW5jbG9zdXJlIC0gQGRlcHJlY2F0ZWQgdXNlICRsb2FkZXItPndpdGhFbmNsb3N1cmUoKSBpbnN0ZWFkCiAqIEBwYXJhbSBzdHJpbmcgJGVzY2FwZSAtIEBkZXByZWNhdGVkIHVzZSAkbG9hZGVyLT53aXRoRXNjYXBlKCkgaW5zdGVhZAogKiBAcGFyYW0gc3RyaW5nICRuZXdfbGluZV9zZXBhcmF0b3IgLSBAZGVwcmVjYXRlZCB1c2UgJGxvYWRlci0+d2l0aE5ld0xpbmVTZXBhcmF0b3IoKSBpbnN0ZWFkCiAqIEBwYXJhbSBzdHJpbmcgJGRhdGV0aW1lX2Zvcm1hdCAtIEBkZXByZWNhdGVkIHVzZSAkbG9hZGVyLT53aXRoRGF0ZVRpbWVGb3JtYXQoKSBpbnN0ZWFkCiAqLw=="},{"repository_path":"src\/adapter\/etl-adapter-csv\/src\/Flow\/ETL\/Adapter\/CSV\/functions.php","start_line_in_file":95,"slug":"csv-detect-separator","name":"csv_detect_separator","namespace":"Flow\\ETL\\Adapter\\CSV","parameters":[{"name":"stream","type":[{"name":"SourceStream","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"lines","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"5"},{"name":"fallback","type":[{"name":"Option","namespace":"Flow\\ETL\\Adapter\\CSV\\Detector","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"Flow\\ETL\\Adapter\\CSV\\Detector\\Option::..."},{"name":"options","type":[{"name":"Options","namespace":"Flow\\ETL\\Adapter\\CSV\\Detector","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Option","namespace":"Flow\\ETL\\Adapter\\CSV\\Detector","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"CSV","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBTb3VyY2VTdHJlYW0gJHN0cmVhbSAtIHZhbGlkIHJlc291cmNlIHRvIENTViBmaWxlCiAqIEBwYXJhbSBpbnQ8MSwgbWF4PiAkbGluZXMgLSBudW1iZXIgb2YgbGluZXMgdG8gcmVhZCBmcm9tIENTViBmaWxlLCBkZWZhdWx0IDUsIG1vcmUgbGluZXMgbWVhbnMgbW9yZSBhY2N1cmF0ZSBkZXRlY3Rpb24gYnV0IHNsb3dlciBkZXRlY3Rpb24KICogQHBhcmFtIG51bGx8T3B0aW9uICRmYWxsYmFjayAtIGZhbGxiYWNrIG9wdGlvbiB0byB1c2Ugd2hlbiBubyBiZXN0IG9wdGlvbiBjYW4gYmUgZGV0ZWN0ZWQsIGRlZmF1bHQgaXMgT3B0aW9uKCcsJywgJyInLCAnXFwnKQogKiBAcGFyYW0gbnVsbHxPcHRpb25zICRvcHRpb25zIC0gb3B0aW9ucyB0byB1c2UgZm9yIGRldGVjdGlvbiwgZGVmYXVsdCBpcyBPcHRpb25zOjphbGwoKQogKi8="},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":36,"slug":"dbal-dataframe-factory","name":"dbal_dataframe_factory","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"connection","type":[{"name":"Connection","namespace":"Doctrine\\DBAL","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"query","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"parameters","type":[{"name":"QueryParameter","namespace":"Flow\\ETL\\Adapter\\Doctrine","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"DbalDataFrameFactory","namespace":"Flow\\ETL\\Adapter\\Doctrine","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxzdHJpbmcsIG1peGVkPnxDb25uZWN0aW9uICRjb25uZWN0aW9uCiAqIEBwYXJhbSBzdHJpbmcgJHF1ZXJ5CiAqIEBwYXJhbSBRdWVyeVBhcmFtZXRlciAuLi4kcGFyYW1ldGVycwogKi8="},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":56,"slug":"from-dbal-limit-offset","name":"from_dbal_limit_offset","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"connection","type":[{"name":"Connection","namespace":"Doctrine\\DBAL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"table","type":[{"name":"Table","namespace":"Flow\\ETL\\Adapter\\Doctrine","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"order_by","type":[{"name":"OrderBy","namespace":"Flow\\ETL\\Adapter\\Doctrine","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"page_size","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"1000"},{"name":"maximum","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"DbalLimitOffsetExtractor","namespace":"Flow\\ETL\\Adapter\\Doctrine","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBDb25uZWN0aW9uICRjb25uZWN0aW9uCiAqIEBwYXJhbSBzdHJpbmd8VGFibGUgJHRhYmxlCiAqIEBwYXJhbSBhcnJheTxPcmRlckJ5PnxPcmRlckJ5ICRvcmRlcl9ieQogKiBAcGFyYW0gaW50ICRwYWdlX3NpemUKICogQHBhcmFtIG51bGx8aW50ICRtYXhpbXVtCiAqCiAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAqLw=="},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":83,"slug":"from-dbal-limit-offset-qb","name":"from_dbal_limit_offset_qb","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"connection","type":[{"name":"Connection","namespace":"Doctrine\\DBAL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"queryBuilder","type":[{"name":"QueryBuilder","namespace":"Doctrine\\DBAL\\Query","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"page_size","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"1000"},{"name":"maximum","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"offset","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"}],"return_type":[{"name":"DbalLimitOffsetExtractor","namespace":"Flow\\ETL\\Adapter\\Doctrine","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBDb25uZWN0aW9uICRjb25uZWN0aW9uCiAqIEBwYXJhbSBpbnQgJHBhZ2Vfc2l6ZQogKiBAcGFyYW0gbnVsbHxpbnQgJG1heGltdW0gLSBtYXhpbXVtIGNhbiBhbHNvIGJlIHRha2VuIGZyb20gYSBxdWVyeSBidWlsZGVyLCAkbWF4aW11bSBob3dldmVyIGlzIHVzZWQgcmVnYXJkbGVzcyBvZiB0aGUgcXVlcnkgYnVpbGRlciBpZiBpdCdzIHNldAogKiBAcGFyYW0gaW50ICRvZmZzZXQgLSBvZmZzZXQgY2FuIGFsc28gYmUgdGFrZW4gZnJvbSBhIHF1ZXJ5IGJ1aWxkZXIsICRvZmZzZXQgaG93ZXZlciBpcyB1c2VkIHJlZ2FyZGxlc3Mgb2YgdGhlIHF1ZXJ5IGJ1aWxkZXIgaWYgaXQncyBzZXQgdG8gbm9uIDAgdmFsdWUKICov"},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":104,"slug":"from-dbal-key-set-qb","name":"from_dbal_key_set_qb","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"connection","type":[{"name":"Connection","namespace":"Doctrine\\DBAL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"queryBuilder","type":[{"name":"QueryBuilder","namespace":"Doctrine\\DBAL\\Query","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"key_set","type":[{"name":"KeySet","namespace":"Flow\\ETL\\Adapter\\Doctrine\\Pagination","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"DbalKeySetExtractor","namespace":"Flow\\ETL\\Adapter\\Doctrine","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":117,"slug":"from-dbal-queries","name":"from_dbal_queries","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"connection","type":[{"name":"Connection","namespace":"Doctrine\\DBAL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"query","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"parameters_set","type":[{"name":"ParametersSet","namespace":"Flow\\ETL\\Adapter\\Doctrine","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"types","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"DbalQueryExtractor","namespace":"Flow\\ETL\\Adapter\\Doctrine","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBudWxsfFBhcmFtZXRlcnNTZXQgJHBhcmFtZXRlcnNfc2V0IC0gZWFjaCBvbmUgcGFyYW1ldGVycyBhcnJheSB3aWxsIGJlIGV2YWx1YXRlZCBhcyBuZXcgcXVlcnkKICogQHBhcmFtIGFycmF5PGludHxzdHJpbmcsIERiYWxBcnJheVR5cGV8RGJhbFBhcmFtZXRlclR5cGV8RGJhbFR5cGV8aW50fHN0cmluZz4gJHR5cGVzCiAqLw=="},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":147,"slug":"dbal-from-queries","name":"dbal_from_queries","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"connection","type":[{"name":"Connection","namespace":"Doctrine\\DBAL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"query","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"parameters_set","type":[{"name":"ParametersSet","namespace":"Flow\\ETL\\Adapter\\Doctrine","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"types","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"DbalQueryExtractor","namespace":"Flow\\ETL\\Adapter\\Doctrine","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBkZXByZWNhdGVkIHVzZSBmcm9tX2RiYWxfcXVlcmllcygpIGluc3RlYWQKICoKICogQHBhcmFtIG51bGx8UGFyYW1ldGVyc1NldCAkcGFyYW1ldGVyc19zZXQgLSBlYWNoIG9uZSBwYXJhbWV0ZXJzIGFycmF5IHdpbGwgYmUgZXZhbHVhdGVkIGFzIG5ldyBxdWVyeQogKiBAcGFyYW0gYXJyYXk8aW50fHN0cmluZywgRGJhbEFycmF5VHlwZXxEYmFsUGFyYW1ldGVyVHlwZXxEYmFsVHlwZXxpbnR8c3RyaW5nPiAkdHlwZXMKICov"},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":161,"slug":"from-dbal-query","name":"from_dbal_query","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"connection","type":[{"name":"Connection","namespace":"Doctrine\\DBAL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"query","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"parameters","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"types","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"DbalQueryExtractor","namespace":"Flow\\ETL\\Adapter\\Doctrine","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxzdHJpbmcsIG1peGVkPnxsaXN0PG1peGVkPiAkcGFyYW1ldGVycyAtIEBkZXByZWNhdGVkIHVzZSBEYmFsUXVlcnlFeHRyYWN0b3I6OndpdGhQYXJhbWV0ZXJzKCkgaW5zdGVhZAogKiBAcGFyYW0gYXJyYXk8aW50PDAsIG1heD58c3RyaW5nLCBEYmFsQXJyYXlUeXBlfERiYWxQYXJhbWV0ZXJUeXBlfERiYWxUeXBlfHN0cmluZz4gJHR5cGVzIC0gQGRlcHJlY2F0ZWQgdXNlIERiYWxRdWVyeUV4dHJhY3Rvcjo6d2l0aFR5cGVzKCkgaW5zdGVhZAogKi8="},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":182,"slug":"dbal-from-query","name":"dbal_from_query","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"connection","type":[{"name":"Connection","namespace":"Doctrine\\DBAL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"query","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"parameters","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"types","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"DbalQueryExtractor","namespace":"Flow\\ETL\\Adapter\\Doctrine","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBkZXByZWNhdGVkIHVzZSBmcm9tX2RiYWxfcXVlcnkoKSBpbnN0ZWFkCiAqCiAqIEBwYXJhbSBhcnJheTxzdHJpbmcsIG1peGVkPnxsaXN0PG1peGVkPiAkcGFyYW1ldGVycyAtIEBkZXByZWNhdGVkIHVzZSBEYmFsUXVlcnlFeHRyYWN0b3I6OndpdGhQYXJhbWV0ZXJzKCkgaW5zdGVhZAogKiBAcGFyYW0gYXJyYXk8aW50PDAsIG1heD58c3RyaW5nLCBEYmFsQXJyYXlUeXBlfERiYWxQYXJhbWV0ZXJUeXBlfERiYWxUeXBlfHN0cmluZz4gJHR5cGVzIC0gQGRlcHJlY2F0ZWQgdXNlIERiYWxRdWVyeUV4dHJhY3Rvcjo6d2l0aFR5cGVzKCkgaW5zdGVhZAogKi8="},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":208,"slug":"to-dbal-table-insert","name":"to_dbal_table_insert","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"connection","type":[{"name":"Connection","namespace":"Doctrine\\DBAL","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"table","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"options","type":[{"name":"InsertOptions","namespace":"Flow\\Doctrine\\Bulk","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"DbalLoader","namespace":"Flow\\ETL\\Adapter\\Doctrine","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"LOADER"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_writing","option":"database_upsert"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEluc2VydCBuZXcgcm93cyBpbnRvIGEgZGF0YWJhc2UgdGFibGUuCiAqIEluc2VydCBjYW4gYWxzbyBiZSB1c2VkIGFzIGFuIHVwc2VydCB3aXRoIHRoZSBoZWxwIG9mIEluc2VydE9wdGlvbnMuCiAqIEluc2VydE9wdGlvbnMgYXJlIHBsYXRmb3JtIHNwZWNpZmljLCBzbyBwbGVhc2UgY2hvb3NlIHRoZSByaWdodCBvbmUgZm9yIHlvdXIgZGF0YWJhc2UuCiAqCiAqICAtIE15U1FMSW5zZXJ0T3B0aW9ucwogKiAgLSBQb3N0Z3JlU1FMSW5zZXJ0T3B0aW9ucwogKiAgLSBTcWxpdGVJbnNlcnRPcHRpb25zCiAqCiAqIEluIG9yZGVyIHRvIGNvbnRyb2wgdGhlIHNpemUgb2YgdGhlIHNpbmdsZSBpbnNlcnQsIHVzZSBEYXRhRnJhbWU6OmNodW5rU2l6ZSgpIG1ldGhvZCBqdXN0IGJlZm9yZSBjYWxsaW5nIERhdGFGcmFtZTo6bG9hZCgpLgogKgogKiBAcGFyYW0gYXJyYXk8c3RyaW5nLCBtaXhlZD58Q29ubmVjdGlvbiAkY29ubmVjdGlvbgogKgogKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgogKi8="},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":228,"slug":"to-dbal-table-update","name":"to_dbal_table_update","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"connection","type":[{"name":"Connection","namespace":"Doctrine\\DBAL","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"table","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"options","type":[{"name":"UpdateOptions","namespace":"Flow\\Doctrine\\Bulk","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"DbalLoader","namespace":"Flow\\ETL\\Adapter\\Doctrine","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqICBVcGRhdGUgZXhpc3Rpbmcgcm93cyBpbiBkYXRhYmFzZS4KICoKICogIEluIG9yZGVyIHRvIGNvbnRyb2wgdGhlIHNpemUgb2YgdGhlIHNpbmdsZSByZXF1ZXN0LCB1c2UgRGF0YUZyYW1lOjpjaHVua1NpemUoKSBtZXRob2QganVzdCBiZWZvcmUgY2FsbGluZyBEYXRhRnJhbWU6OmxvYWQoKS4KICoKICogQHBhcmFtIGFycmF5PHN0cmluZywgbWl4ZWQ+fENvbm5lY3Rpb24gJGNvbm5lY3Rpb24KICoKICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICov"},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":248,"slug":"to-dbal-table-delete","name":"to_dbal_table_delete","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"connection","type":[{"name":"Connection","namespace":"Doctrine\\DBAL","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"table","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"DbalLoader","namespace":"Flow\\ETL\\Adapter\\Doctrine","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIERlbGV0ZSByb3dzIGZyb20gZGF0YWJhc2UgdGFibGUgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGRhdGEuCiAqCiAqIEluIG9yZGVyIHRvIGNvbnRyb2wgdGhlIHNpemUgb2YgdGhlIHNpbmdsZSByZXF1ZXN0LCB1c2UgRGF0YUZyYW1lOjpjaHVua1NpemUoKSBtZXRob2QganVzdCBiZWZvcmUgY2FsbGluZyBEYXRhRnJhbWU6OmxvYWQoKS4KICoKICogQHBhcmFtIGFycmF5PHN0cmluZywgbWl4ZWQ+fENvbm5lY3Rpb24gJGNvbm5lY3Rpb24KICoKICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICov"},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":265,"slug":"to-dbal-schema-table","name":"to_dbal_schema_table","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"schema","type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"table_name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"table_options","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"types_map","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"Table","namespace":"Doctrine\\DBAL\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENvbnZlcnRzIGEgRmxvd1xFVExcU2NoZW1hIHRvIGEgRG9jdHJpbmVcREJBTFxTY2hlbWFcVGFibGUuCiAqCiAqIEBwYXJhbSBTY2hlbWEgJHNjaGVtYQogKiBAcGFyYW0gYXJyYXk8YXJyYXkta2V5LCBtaXhlZD4gJHRhYmxlX29wdGlvbnMKICogQHBhcmFtIGFycmF5PGNsYXNzLXN0cmluZzxcRmxvd1xUeXBlc1xUeXBlPG1peGVkPj4sIGNsYXNzLXN0cmluZzxcRG9jdHJpbmVcREJBTFxUeXBlc1xUeXBlPj4gJHR5cGVzX21hcAogKi8="},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":278,"slug":"table-schema-to-flow-schema","name":"table_schema_to_flow_schema","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"table","type":[{"name":"Table","namespace":"Doctrine\\DBAL\\Schema","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"types_map","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENvbnZlcnRzIGEgRG9jdHJpbmVcREJBTFxTY2hlbWFcVGFibGUgdG8gYSBGbG93XEVUTFxTY2hlbWEuCiAqCiAqIEBwYXJhbSBhcnJheTxjbGFzcy1zdHJpbmc8XEZsb3dcVHlwZXNcVHlwZTxtaXhlZD4+LCBjbGFzcy1zdHJpbmc8XERvY3RyaW5lXERCQUxcVHlwZXNcVHlwZT4+ICR0eXBlc19tYXAKICoKICogQHJldHVybiBTY2hlbWEKICov"},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":289,"slug":"postgresql-insert-options","name":"postgresql_insert_options","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"skip_conflicts","type":[{"name":"bool","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"constraint","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"conflict_columns","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"update_columns","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"PostgreSQLInsertOptions","namespace":"Flow\\Doctrine\\Bulk\\Dialect","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"HELPER"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_writing","option":"database_upsert"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxzdHJpbmc+ICRjb25mbGljdF9jb2x1bW5zCiAqIEBwYXJhbSBhcnJheTxzdHJpbmc+ICR1cGRhdGVfY29sdW1ucwogKi8="},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":298,"slug":"mysql-insert-options","name":"mysql_insert_options","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"skip_conflicts","type":[{"name":"bool","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"upsert","type":[{"name":"bool","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"update_columns","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"MySQLInsertOptions","namespace":"Flow\\Doctrine\\Bulk\\Dialect","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxzdHJpbmc+ICR1cGRhdGVfY29sdW1ucwogKi8="},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":308,"slug":"sqlite-insert-options","name":"sqlite_insert_options","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"skip_conflicts","type":[{"name":"bool","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"conflict_columns","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"update_columns","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"SqliteInsertOptions","namespace":"Flow\\Doctrine\\Bulk\\Dialect","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxzdHJpbmc+ICRjb25mbGljdF9jb2x1bW5zCiAqIEBwYXJhbSBhcnJheTxzdHJpbmc+ICR1cGRhdGVfY29sdW1ucwogKi8="},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":318,"slug":"postgresql-update-options","name":"postgresql_update_options","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"primary_key_columns","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"update_columns","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"PostgreSQLUpdateOptions","namespace":"Flow\\Doctrine\\Bulk\\Dialect","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxzdHJpbmc+ICRwcmltYXJ5X2tleV9jb2x1bW5zCiAqIEBwYXJhbSBhcnJheTxzdHJpbmc+ICR1cGRhdGVfY29sdW1ucwogKi8="},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":339,"slug":"to-dbal-transaction","name":"to_dbal_transaction","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"connection","type":[{"name":"Connection","namespace":"Doctrine\\DBAL","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"loaders","type":[{"name":"Loader","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"TransactionalDbalLoader","namespace":"Flow\\ETL\\Adapter\\Doctrine","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEV4ZWN1dGUgbXVsdGlwbGUgbG9hZGVycyB3aXRoaW4gYSBkYXRhYmFzZSB0cmFuc2FjdGlvbi4KICogRWFjaCBiYXRjaCBvZiByb3dzIHdpbGwgYmUgcHJvY2Vzc2VkIGluIGl0cyBvd24gdHJhbnNhY3Rpb24uCiAqIElmIGFueSBsb2FkZXIgZmFpbHMsIHRoZSBlbnRpcmUgYmF0Y2ggd2lsbCBiZSByb2xsZWQgYmFjay4KICoKICogQHBhcmFtIGFycmF5PHN0cmluZywgbWl4ZWQ+fENvbm5lY3Rpb24gJGNvbm5lY3Rpb24KICogQHBhcmFtIExvYWRlciAuLi4kbG9hZGVycyAtIExvYWRlcnMgdG8gZXhlY3V0ZSB3aXRoaW4gdGhlIHRyYW5zYWN0aW9uCiAqCiAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAqLw=="},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":349,"slug":"pagination-key-asc","name":"pagination_key_asc","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"column","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"type","type":[{"name":"ParameterType","namespace":"Doctrine\\DBAL","is_nullable":false,"is_variadic":false},{"name":"Type","namespace":"Doctrine\\DBAL\\Types","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Doctrine\\DBAL\\ParameterType::..."}],"return_type":[{"name":"Key","namespace":"Flow\\ETL\\Adapter\\Doctrine\\Pagination","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":355,"slug":"pagination-key-desc","name":"pagination_key_desc","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"column","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"type","type":[{"name":"ParameterType","namespace":"Doctrine\\DBAL","is_nullable":false,"is_variadic":false},{"name":"Type","namespace":"Doctrine\\DBAL\\Types","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Doctrine\\DBAL\\ParameterType::..."}],"return_type":[{"name":"Key","namespace":"Flow\\ETL\\Adapter\\Doctrine\\Pagination","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-doctrine\/src\/Flow\/ETL\/Adapter\/Doctrine\/functions.php","start_line_in_file":361,"slug":"pagination-key-set","name":"pagination_key_set","namespace":"Flow\\ETL\\Adapter\\Doctrine","parameters":[{"name":"keys","type":[{"name":"Key","namespace":"Flow\\ETL\\Adapter\\Doctrine\\Pagination","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"KeySet","namespace":"Flow\\ETL\\Adapter\\Doctrine\\Pagination","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"DOCTRINE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-excel\/src\/Flow\/ETL\/Adapter\/Excel\/DSL\/functions.php","start_line_in_file":18,"slug":"from-excel","name":"from_excel","namespace":"Flow\\ETL\\Adapter\\Excel\\DSL","parameters":[{"name":"path","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ExcelExtractor","namespace":"Flow\\ETL\\Adapter\\Excel","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"EXCEL","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-excel\/src\/Flow\/ETL\/Adapter\/Excel\/DSL\/functions.php","start_line_in_file":25,"slug":"to-excel","name":"to_excel","namespace":"Flow\\ETL\\Adapter\\Excel\\DSL","parameters":[{"name":"path","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ExcelLoader","namespace":"Flow\\ETL\\Adapter\\Excel","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"EXCEL","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-excel\/src\/Flow\/ETL\/Adapter\/Excel\/DSL\/functions.php","start_line_in_file":31,"slug":"is-valid-excel-sheet-name","name":"is_valid_excel_sheet_name","namespace":"Flow\\ETL\\Adapter\\Excel\\DSL","parameters":[{"name":"sheet_name","type":[{"name":"ScalarFunction","namespace":"Flow\\ETL\\Function","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"IsValidExcelSheetName","namespace":"Flow\\ETL\\Adapter\\Excel\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"EXCEL","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-elasticsearch\/src\/Flow\/ETL\/Adapter\/Elasticsearch\/functions.php","start_line_in_file":36,"slug":"to-es-bulk-index","name":"to_es_bulk_index","namespace":"Flow\\ETL\\Adapter\\Elasticsearch","parameters":[{"name":"config","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"index","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"id_factory","type":[{"name":"IdFactory","namespace":"Flow\\ETL\\Adapter\\Elasticsearch","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"parameters","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"ElasticsearchLoader","namespace":"Flow\\ETL\\Adapter\\Elasticsearch\\ElasticsearchPHP","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"ELASTIC_SEARCH","type":"LOADER"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_writing","option":"elasticsearch"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIGh0dHBzOi8vd3d3LmVsYXN0aWMuY28vZ3VpZGUvZW4vZWxhc3RpY3NlYXJjaC9yZWZlcmVuY2UvbWFzdGVyL2RvY3MtYnVsay5odG1sLgogKgogKiBJbiBvcmRlciB0byBjb250cm9sIHRoZSBzaXplIG9mIHRoZSBzaW5nbGUgcmVxdWVzdCwgdXNlIERhdGFGcmFtZTo6Y2h1bmtTaXplKCkgbWV0aG9kIGp1c3QgYmVmb3JlIGNhbGxpbmcgRGF0YUZyYW1lOjpsb2FkKCkuCiAqCiAqIEBwYXJhbSBhcnJheXsKICogIGhvc3RzPzogYXJyYXk8c3RyaW5nPiwKICogIGNvbm5lY3Rpb25QYXJhbXM\/OiBhcnJheTxtaXhlZD4sCiAqICByZXRyaWVzPzogaW50LAogKiAgc25pZmZPblN0YXJ0PzogYm9vbCwKICogIHNzbENlcnQ\/OiBhcnJheTxzdHJpbmc+LAogKiAgc3NsS2V5PzogYXJyYXk8c3RyaW5nPiwKICogIHNzbFZlcmlmaWNhdGlvbj86IGJvb2x8c3RyaW5nLAogKiAgZWxhc3RpY01ldGFIZWFkZXI\/OiBib29sLAogKiAgaW5jbHVkZVBvcnRJbkhvc3RIZWFkZXI\/OiBib29sCiAqIH0gJGNvbmZpZwogKiBAcGFyYW0gc3RyaW5nICRpbmRleAogKiBAcGFyYW0gSWRGYWN0b3J5ICRpZF9mYWN0b3J5CiAqIEBwYXJhbSBhcnJheTxtaXhlZD4gJHBhcmFtZXRlcnMgLSBodHRwczovL3d3dy5lbGFzdGljLmNvL2d1aWRlL2VuL2VsYXN0aWNzZWFyY2gvcmVmZXJlbmNlL21hc3Rlci9kb2NzLWJ1bGsuaHRtbCAtIEBkZXByZWNhdGVkIHVzZSB3aXRoUGFyYW1ldGVycyBtZXRob2QgaW5zdGVhZAogKi8="},{"repository_path":"src\/adapter\/etl-adapter-elasticsearch\/src\/Flow\/ETL\/Adapter\/Elasticsearch\/functions.php","start_line_in_file":47,"slug":"entry-id-factory","name":"entry_id_factory","namespace":"Flow\\ETL\\Adapter\\Elasticsearch","parameters":[{"name":"entry_name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"IdFactory","namespace":"Flow\\ETL\\Adapter\\Elasticsearch","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"ELASTIC_SEARCH","type":"HELPER"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_writing","option":"elasticsearch"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-elasticsearch\/src\/Flow\/ETL\/Adapter\/Elasticsearch\/functions.php","start_line_in_file":53,"slug":"hash-id-factory","name":"hash_id_factory","namespace":"Flow\\ETL\\Adapter\\Elasticsearch","parameters":[{"name":"entry_names","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"IdFactory","namespace":"Flow\\ETL\\Adapter\\Elasticsearch","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"ELASTIC_SEARCH","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-elasticsearch\/src\/Flow\/ETL\/Adapter\/Elasticsearch\/functions.php","start_line_in_file":79,"slug":"to-es-bulk-update","name":"to_es_bulk_update","namespace":"Flow\\ETL\\Adapter\\Elasticsearch","parameters":[{"name":"config","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"index","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"id_factory","type":[{"name":"IdFactory","namespace":"Flow\\ETL\\Adapter\\Elasticsearch","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"parameters","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"ElasticsearchLoader","namespace":"Flow\\ETL\\Adapter\\Elasticsearch\\ElasticsearchPHP","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"ELASTIC_SEARCH","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqICBodHRwczovL3d3dy5lbGFzdGljLmNvL2d1aWRlL2VuL2VsYXN0aWNzZWFyY2gvcmVmZXJlbmNlL21hc3Rlci9kb2NzLWJ1bGsuaHRtbC4KICoKICogSW4gb3JkZXIgdG8gY29udHJvbCB0aGUgc2l6ZSBvZiB0aGUgc2luZ2xlIHJlcXVlc3QsIHVzZSBEYXRhRnJhbWU6OmNodW5rU2l6ZSgpIG1ldGhvZCBqdXN0IGJlZm9yZSBjYWxsaW5nIERhdGFGcmFtZTo6bG9hZCgpLgogKgogKiBAcGFyYW0gYXJyYXl7CiAqICBob3N0cz86IGFycmF5PHN0cmluZz4sCiAqICBjb25uZWN0aW9uUGFyYW1zPzogYXJyYXk8bWl4ZWQ+LAogKiAgcmV0cmllcz86IGludCwKICogIHNuaWZmT25TdGFydD86IGJvb2wsCiAqICBzc2xDZXJ0PzogYXJyYXk8c3RyaW5nPiwKICogIHNzbEtleT86IGFycmF5PHN0cmluZz4sCiAqICBzc2xWZXJpZmljYXRpb24\/OiBib29sfHN0cmluZywKICogIGVsYXN0aWNNZXRhSGVhZGVyPzogYm9vbCwKICogIGluY2x1ZGVQb3J0SW5Ib3N0SGVhZGVyPzogYm9vbAogKiB9ICRjb25maWcKICogQHBhcmFtIHN0cmluZyAkaW5kZXgKICogQHBhcmFtIElkRmFjdG9yeSAkaWRfZmFjdG9yeQogKiBAcGFyYW0gYXJyYXk8bWl4ZWQ+ICRwYXJhbWV0ZXJzIC0gaHR0cHM6Ly93d3cuZWxhc3RpYy5jby9ndWlkZS9lbi9lbGFzdGljc2VhcmNoL3JlZmVyZW5jZS9tYXN0ZXIvZG9jcy1idWxrLmh0bWwgLSBAZGVwcmVjYXRlZCB1c2Ugd2l0aFBhcmFtZXRlcnMgbWV0aG9kIGluc3RlYWQKICov"},{"repository_path":"src\/adapter\/etl-adapter-elasticsearch\/src\/Flow\/ETL\/Adapter\/Elasticsearch\/functions.php","start_line_in_file":95,"slug":"es-hits-to-rows","name":"es_hits_to_rows","namespace":"Flow\\ETL\\Adapter\\Elasticsearch","parameters":[{"name":"source","type":[{"name":"DocumentDataSource","namespace":"Flow\\ETL\\Adapter\\Elasticsearch\\ElasticsearchPHP","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Adapter\\Elasticsearch\\ElasticsearchPHP\\DocumentDataSource::..."}],"return_type":[{"name":"HitsIntoRowsTransformer","namespace":"Flow\\ETL\\Adapter\\Elasticsearch\\ElasticsearchPHP","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"ELASTIC_SEARCH","type":"HELPER"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_writing","option":"elasticsearch"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFRyYW5zZm9ybXMgZWxhc3RpY3NlYXJjaCByZXN1bHRzIGludG8gY2xlYXIgRmxvdyBSb3dzIHVzaW5nIFsnaGl0cyddWydoaXRzJ11beF1bJ19zb3VyY2UnXS4KICoKICogQHJldHVybiBIaXRzSW50b1Jvd3NUcmFuc2Zvcm1lcgogKi8="},{"repository_path":"src\/adapter\/etl-adapter-elasticsearch\/src\/Flow\/ETL\/Adapter\/Elasticsearch\/functions.php","start_line_in_file":124,"slug":"from-es","name":"from_es","namespace":"Flow\\ETL\\Adapter\\Elasticsearch","parameters":[{"name":"config","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"parameters","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"pit_params","type":[{"name":"array","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"ElasticsearchExtractor","namespace":"Flow\\ETL\\Adapter\\Elasticsearch\\ElasticsearchPHP","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"ELASTIC_SEARCH","type":"EXTRACTOR"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_reading","option":"elasticsearch"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEV4dHJhY3RvciB3aWxsIGF1dG9tYXRpY2FsbHkgdHJ5IHRvIGl0ZXJhdGUgb3ZlciB3aG9sZSBpbmRleCB1c2luZyBvbmUgb2YgdGhlIHR3byBpdGVyYXRpb24gbWV0aG9kczouCiAqCiAqIC0gZnJvbS9zaXplCiAqIC0gc2VhcmNoX2FmdGVyCiAqCiAqIFNlYXJjaCBhZnRlciBpcyBzZWxlY3RlZCB3aGVuIHlvdSBwcm92aWRlIGRlZmluZSBzb3J0IHBhcmFtZXRlcnMgaW4gcXVlcnksIG90aGVyd2lzZSBpdCB3aWxsIGZhbGxiYWNrIHRvIGZyb20vc2l6ZS4KICoKICogQHBhcmFtIGFycmF5ewogKiAgaG9zdHM\/OiBhcnJheTxzdHJpbmc+LAogKiAgY29ubmVjdGlvblBhcmFtcz86IGFycmF5PG1peGVkPiwKICogIHJldHJpZXM\/OiBpbnQsCiAqICBzbmlmZk9uU3RhcnQ\/OiBib29sLAogKiAgc3NsQ2VydD86IGFycmF5PHN0cmluZz4sCiAqICBzc2xLZXk\/OiBhcnJheTxzdHJpbmc+LAogKiAgc3NsVmVyaWZpY2F0aW9uPzogYm9vbHxzdHJpbmcsCiAqICBlbGFzdGljTWV0YUhlYWRlcj86IGJvb2wsCiAqICBpbmNsdWRlUG9ydEluSG9zdEhlYWRlcj86IGJvb2wKICogfSAkY29uZmlnCiAqIEBwYXJhbSBhcnJheTxtaXhlZD4gJHBhcmFtZXRlcnMgLSBodHRwczovL3d3dy5lbGFzdGljLmNvL2d1aWRlL2VuL2VsYXN0aWNzZWFyY2gvcmVmZXJlbmNlL21hc3Rlci9zZWFyY2gtc2VhcmNoLmh0bWwKICogQHBhcmFtID9hcnJheTxtaXhlZD4gJHBpdF9wYXJhbXMgLSB3aGVuIHVzZWQgZXh0cmFjdG9yIHdpbGwgY3JlYXRlIHBvaW50IGluIHRpbWUgdG8gc3RhYmlsaXplIHNlYXJjaCByZXN1bHRzLiBQb2ludCBpbiB0aW1lIGlzIGF1dG9tYXRpY2FsbHkgY2xvc2VkIHdoZW4gbGFzdCBlbGVtZW50IGlzIGV4dHJhY3RlZC4gaHR0cHM6Ly93d3cuZWxhc3RpYy5jby9ndWlkZS9lbi9lbGFzdGljc2VhcmNoL3JlZmVyZW5jZS9tYXN0ZXIvcG9pbnQtaW4tdGltZS1hcGkuaHRtbCAtIEBkZXByZWNhdGVkIHVzZSB3aXRoUG9pbnRJblRpbWUgbWV0aG9kIGluc3RlYWQKICov"},{"repository_path":"src\/adapter\/etl-adapter-google-sheet\/src\/Flow\/ETL\/Adapter\/GoogleSheet\/functions.php","start_line_in_file":20,"slug":"from-google-sheet","name":"from_google_sheet","namespace":"Flow\\ETL\\Adapter\\GoogleSheet","parameters":[{"name":"auth_config","type":[{"name":"Sheets","namespace":"Google\\Service","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"spreadsheet_id","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"sheet_name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"with_header","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"},{"name":"rows_per_page","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"1000"},{"name":"options","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"GoogleSheetExtractor","namespace":"Flow\\ETL\\Adapter\\GoogleSheet","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"GOOGLE_SHEET","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheXt0eXBlOiBzdHJpbmcsIHByb2plY3RfaWQ6IHN0cmluZywgcHJpdmF0ZV9rZXlfaWQ6IHN0cmluZywgcHJpdmF0ZV9rZXk6IHN0cmluZywgY2xpZW50X2VtYWlsOiBzdHJpbmcsIGNsaWVudF9pZDogc3RyaW5nLCBhdXRoX3VyaTogc3RyaW5nLCB0b2tlbl91cmk6IHN0cmluZywgYXV0aF9wcm92aWRlcl94NTA5X2NlcnRfdXJsOiBzdHJpbmcsIGNsaWVudF94NTA5X2NlcnRfdXJsOiBzdHJpbmd9fFNoZWV0cyAkYXV0aF9jb25maWcKICogQHBhcmFtIHN0cmluZyAkc3ByZWFkc2hlZXRfaWQKICogQHBhcmFtIHN0cmluZyAkc2hlZXRfbmFtZQogKiBAcGFyYW0gYm9vbCAkd2l0aF9oZWFkZXIgLSBAZGVwcmVjYXRlZCB1c2Ugd2l0aEhlYWRlciBtZXRob2QgaW5zdGVhZAogKiBAcGFyYW0gaW50ICRyb3dzX3Blcl9wYWdlIC0gaG93IG1hbnkgcm93cyBwZXIgcGFnZSB0byBmZXRjaCBmcm9tIEdvb2dsZSBTaGVldHMgQVBJIC0gQGRlcHJlY2F0ZWQgdXNlIHdpdGhSb3dzUGVyUGFnZSBtZXRob2QgaW5zdGVhZAogKiBAcGFyYW0gYXJyYXl7ZGF0ZVRpbWVSZW5kZXJPcHRpb24\/OiBzdHJpbmcsIG1ham9yRGltZW5zaW9uPzogc3RyaW5nLCB2YWx1ZVJlbmRlck9wdGlvbj86IHN0cmluZ30gJG9wdGlvbnMgLSBAZGVwcmVjYXRlZCB1c2Ugd2l0aE9wdGlvbnMgbWV0aG9kIGluc3RlYWQKICov"},{"repository_path":"src\/adapter\/etl-adapter-google-sheet\/src\/Flow\/ETL\/Adapter\/GoogleSheet\/functions.php","start_line_in_file":57,"slug":"from-google-sheet-columns","name":"from_google_sheet_columns","namespace":"Flow\\ETL\\Adapter\\GoogleSheet","parameters":[{"name":"auth_config","type":[{"name":"Sheets","namespace":"Google\\Service","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"spreadsheet_id","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"sheet_name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"start_range_column","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"end_range_column","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"with_header","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"},{"name":"rows_per_page","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"1000"},{"name":"options","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"GoogleSheetExtractor","namespace":"Flow\\ETL\\Adapter\\GoogleSheet","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"GOOGLE_SHEET","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheXt0eXBlOiBzdHJpbmcsIHByb2plY3RfaWQ6IHN0cmluZywgcHJpdmF0ZV9rZXlfaWQ6IHN0cmluZywgcHJpdmF0ZV9rZXk6IHN0cmluZywgY2xpZW50X2VtYWlsOiBzdHJpbmcsIGNsaWVudF9pZDogc3RyaW5nLCBhdXRoX3VyaTogc3RyaW5nLCB0b2tlbl91cmk6IHN0cmluZywgYXV0aF9wcm92aWRlcl94NTA5X2NlcnRfdXJsOiBzdHJpbmcsIGNsaWVudF94NTA5X2NlcnRfdXJsOiBzdHJpbmd9fFNoZWV0cyAkYXV0aF9jb25maWcKICogQHBhcmFtIHN0cmluZyAkc3ByZWFkc2hlZXRfaWQKICogQHBhcmFtIHN0cmluZyAkc2hlZXRfbmFtZQogKiBAcGFyYW0gc3RyaW5nICRzdGFydF9yYW5nZV9jb2x1bW4KICogQHBhcmFtIHN0cmluZyAkZW5kX3JhbmdlX2NvbHVtbgogKiBAcGFyYW0gYm9vbCAkd2l0aF9oZWFkZXIgLSBAZGVwcmVjYXRlZCB1c2Ugd2l0aEhlYWRlciBtZXRob2QgaW5zdGVhZAogKiBAcGFyYW0gaW50ICRyb3dzX3Blcl9wYWdlIC0gaG93IG1hbnkgcm93cyBwZXIgcGFnZSB0byBmZXRjaCBmcm9tIEdvb2dsZSBTaGVldHMgQVBJLCBkZWZhdWx0IDEwMDAgLSBAZGVwcmVjYXRlZCB1c2Ugd2l0aFJvd3NQZXJQYWdlIG1ldGhvZCBpbnN0ZWFkCiAqIEBwYXJhbSBhcnJheXtkYXRlVGltZVJlbmRlck9wdGlvbj86IHN0cmluZywgbWFqb3JEaW1lbnNpb24\/OiBzdHJpbmcsIHZhbHVlUmVuZGVyT3B0aW9uPzogc3RyaW5nfSAkb3B0aW9ucyAtIEBkZXByZWNhdGVkIHVzZSB3aXRoT3B0aW9ucyBtZXRob2QgaW5zdGVhZAogKi8="},{"repository_path":"src\/adapter\/etl-adapter-http\/src\/Flow\/ETL\/Adapter\/Http\/DSL\/functions.php","start_line_in_file":15,"slug":"from-dynamic-http-requests","name":"from_dynamic_http_requests","namespace":"Flow\\ETL\\Adapter\\Http","parameters":[{"name":"client","type":[{"name":"ClientInterface","namespace":"Psr\\Http\\Client","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"requestFactory","type":[{"name":"NextRequestFactory","namespace":"Flow\\ETL\\Adapter\\Http\\DynamicExtractor","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"PsrHttpClientDynamicExtractor","namespace":"Flow\\ETL\\Adapter\\Http","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"HTTP","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-http\/src\/Flow\/ETL\/Adapter\/Http\/DSL\/functions.php","start_line_in_file":29,"slug":"from-static-http-requests","name":"from_static_http_requests","namespace":"Flow\\ETL\\Adapter\\Http","parameters":[{"name":"client","type":[{"name":"ClientInterface","namespace":"Psr\\Http\\Client","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"requests","type":[{"name":"iterable","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"PsrHttpClientStaticExtractor","namespace":"Flow\\ETL\\Adapter\\Http","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"HTTP","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBpdGVyYWJsZTxSZXF1ZXN0SW50ZXJmYWNlPiAkcmVxdWVzdHMKICov"},{"repository_path":"src\/adapter\/etl-adapter-json\/src\/Flow\/ETL\/Adapter\/JSON\/functions.php","start_line_in_file":20,"slug":"from-json","name":"from_json","namespace":"Flow\\ETL\\Adapter\\JSON","parameters":[{"name":"path","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"pointer","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"schema","type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"JsonExtractor","namespace":"Flow\\ETL\\Adapter\\JSON\\JSONMachine","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"JSON","type":"EXTRACTOR"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_reading","option":"json"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBQYXRofHN0cmluZyAkcGF0aCAtIHN0cmluZyBpcyBpbnRlcm5hbGx5IHR1cm5lZCBpbnRvIHN0cmVhbQogKiBAcGFyYW0gP3N0cmluZyAkcG9pbnRlciAtIGlmIHlvdSB3YW50IHRvIGl0ZXJhdGUgb25seSByZXN1bHRzIG9mIGEgc3VidHJlZSwgdXNlIGEgcG9pbnRlciwgcmVhZCBtb3JlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9oYWxheGEvanNvbi1tYWNoaW5lI3BhcnNpbmctYS1zdWJ0cmVlIC0gQGRlcHJlY2F0ZSB1c2Ugd2l0aFBvaW50ZXIgbWV0aG9kIGluc3RlYWQKICogQHBhcmFtIG51bGx8U2NoZW1hICRzY2hlbWEgLSBlbmZvcmNlIHNjaGVtYSBvbiB0aGUgZXh0cmFjdGVkIGRhdGEgLSBAZGVwcmVjYXRlIHVzZSB3aXRoU2NoZW1hIG1ldGhvZCBpbnN0ZWFkCiAqLw=="},{"repository_path":"src\/adapter\/etl-adapter-json\/src\/Flow\/ETL\/Adapter\/JSON\/functions.php","start_line_in_file":45,"slug":"from-json-lines","name":"from_json_lines","namespace":"Flow\\ETL\\Adapter\\JSON","parameters":[{"name":"path","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"JsonLinesExtractor","namespace":"Flow\\ETL\\Adapter\\JSON\\JSONMachine","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"JSON","type":"EXTRACTOR"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_reading","option":"jsonl"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFVzZWQgdG8gcmVhZCBmcm9tIGEgSlNPTiBsaW5lcyBodHRwczovL2pzb25saW5lcy5vcmcvIGZvcm1hdHRlZCBmaWxlLgogKgogKiBAcGFyYW0gUGF0aHxzdHJpbmcgJHBhdGggLSBzdHJpbmcgaXMgaW50ZXJuYWxseSB0dXJuZWQgaW50byBzdHJlYW0KICov"},{"repository_path":"src\/adapter\/etl-adapter-json\/src\/Flow\/ETL\/Adapter\/JSON\/functions.php","start_line_in_file":60,"slug":"to-json","name":"to_json","namespace":"Flow\\ETL\\Adapter\\JSON","parameters":[{"name":"path","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"flags","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"4194304"},{"name":"date_time_format","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'Y-m-d\\\\TH:i:sP'"},{"name":"put_rows_in_new_lines","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"JsonLoader","namespace":"Flow\\ETL\\Adapter\\JSON","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"JSON","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBQYXRofHN0cmluZyAkcGF0aAogKiBAcGFyYW0gaW50ICRmbGFncyAtIFBIUCBKU09OIEZsYWdzIC0gQGRlcHJlY2F0ZSB1c2Ugd2l0aEZsYWdzIG1ldGhvZCBpbnN0ZWFkCiAqIEBwYXJhbSBzdHJpbmcgJGRhdGVfdGltZV9mb3JtYXQgLSBmb3JtYXQgZm9yIERhdGVUaW1lSW50ZXJmYWNlOjpmb3JtYXQoKSAtIEBkZXByZWNhdGUgdXNlIHdpdGhEYXRlVGltZUZvcm1hdCBtZXRob2QgaW5zdGVhZAogKiBAcGFyYW0gYm9vbCAkcHV0X3Jvd3NfaW5fbmV3X2xpbmVzIC0gaWYgeW91IHdhbnQgdG8gcHV0IGVhY2ggcm93IGluIGEgbmV3IGxpbmUgLSBAZGVwcmVjYXRlIHVzZSB3aXRoUm93c0luTmV3TGluZXMgbWV0aG9kIGluc3RlYWQKICoKICogQHJldHVybiBKc29uTG9hZGVyCiAqLw=="},{"repository_path":"src\/adapter\/etl-adapter-json\/src\/Flow\/ETL\/Adapter\/JSON\/functions.php","start_line_in_file":80,"slug":"to-json-lines","name":"to_json_lines","namespace":"Flow\\ETL\\Adapter\\JSON","parameters":[{"name":"path","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"JsonLinesLoader","namespace":"Flow\\ETL\\Adapter\\JSON","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"JSON","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFVzZWQgdG8gd3JpdGUgdG8gYSBKU09OIGxpbmVzIGh0dHBzOi8vanNvbmxpbmVzLm9yZy8gZm9ybWF0dGVkIGZpbGUuCiAqCiAqIEBwYXJhbSBQYXRofHN0cmluZyAkcGF0aAogKgogKiBAcmV0dXJuIEpzb25MaW5lc0xvYWRlcgogKi8="},{"repository_path":"src\/adapter\/etl-adapter-meilisearch\/src\/Flow\/ETL\/Adapter\/Meilisearch\/functions.php","start_line_in_file":17,"slug":"to-meilisearch-bulk-index","name":"to_meilisearch_bulk_index","namespace":"Flow\\ETL\\Adapter\\Meilisearch","parameters":[{"name":"config","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"index","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Loader","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"MEILI_SEARCH","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheXt1cmw6IHN0cmluZywgYXBpS2V5OiBzdHJpbmcsIGh0dHBDbGllbnQ6ID9DbGllbnRJbnRlcmZhY2V9ICRjb25maWcKICov"},{"repository_path":"src\/adapter\/etl-adapter-meilisearch\/src\/Flow\/ETL\/Adapter\/Meilisearch\/functions.php","start_line_in_file":28,"slug":"to-meilisearch-bulk-update","name":"to_meilisearch_bulk_update","namespace":"Flow\\ETL\\Adapter\\Meilisearch","parameters":[{"name":"config","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"index","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Loader","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"MEILI_SEARCH","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheXt1cmw6IHN0cmluZywgYXBpS2V5OiBzdHJpbmcsIGh0dHBDbGllbnQ6ID9DbGllbnRJbnRlcmZhY2V9ICRjb25maWcKICov"},{"repository_path":"src\/adapter\/etl-adapter-meilisearch\/src\/Flow\/ETL\/Adapter\/Meilisearch\/functions.php","start_line_in_file":39,"slug":"meilisearch-hits-to-rows","name":"meilisearch_hits_to_rows","namespace":"Flow\\ETL\\Adapter\\Meilisearch","parameters":[],"return_type":[{"name":"HitsIntoRowsTransformer","namespace":"Flow\\ETL\\Adapter\\Meilisearch\\MeilisearchPHP","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"MEILI_SEARCH","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFRyYW5zZm9ybXMgTWVpbGlzZWFyY2ggcmVzdWx0cyBpbnRvIGNsZWFyIEZsb3cgUm93cy4KICov"},{"repository_path":"src\/adapter\/etl-adapter-meilisearch\/src\/Flow\/ETL\/Adapter\/Meilisearch\/functions.php","start_line_in_file":49,"slug":"from-meilisearch","name":"from_meilisearch","namespace":"Flow\\ETL\\Adapter\\Meilisearch","parameters":[{"name":"config","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"params","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"index","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"MeilisearchExtractor","namespace":"Flow\\ETL\\Adapter\\Meilisearch\\MeilisearchPHP","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"MEILI_SEARCH","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheXt1cmw6IHN0cmluZywgYXBpS2V5OiBzdHJpbmd9ICRjb25maWcKICogQHBhcmFtIGFycmF5e3E6IHN0cmluZywgbGltaXQ\/OiA\/aW50LCBvZmZzZXQ\/OiA\/aW50LCBhdHRyaWJ1dGVzVG9SZXRyaWV2ZT86ID9hcnJheTxzdHJpbmc+LCBzb3J0PzogP2FycmF5PHN0cmluZz59ICRwYXJhbXMKICov"},{"repository_path":"src\/adapter\/etl-adapter-parquet\/src\/Flow\/ETL\/Adapter\/Parquet\/functions.php","start_line_in_file":27,"slug":"from-parquet","name":"from_parquet","namespace":"Flow\\ETL\\Adapter\\Parquet","parameters":[{"name":"path","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"columns","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"options","type":[{"name":"Options","namespace":"Flow\\Parquet","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Parquet\\Options::..."},{"name":"byte_order","type":[{"name":"ByteOrder","namespace":"Flow\\Parquet","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Parquet\\ByteOrder::..."},{"name":"offset","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"ParquetExtractor","namespace":"Flow\\ETL\\Adapter\\Parquet","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PARQUET","type":"EXTRACTOR"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_reading","option":"parquet"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBQYXRofHN0cmluZyAkcGF0aAogKiBAcGFyYW0gYXJyYXk8c3RyaW5nPiAkY29sdW1ucyAtIGxpc3Qgb2YgY29sdW1ucyB0byByZWFkIGZyb20gcGFycXVldCBmaWxlIC0gQGRlcHJlY2F0ZWQgdXNlIGB3aXRoQ29sdW1uc2AgbWV0aG9kIGluc3RlYWQKICogQHBhcmFtIE9wdGlvbnMgJG9wdGlvbnMgLSBAZGVwcmVjYXRlZCB1c2UgYHdpdGhPcHRpb25zYCBtZXRob2QgaW5zdGVhZAogKiBAcGFyYW0gQnl0ZU9yZGVyICRieXRlX29yZGVyIC0gQGRlcHJlY2F0ZWQgdXNlIGB3aXRoQnl0ZU9yZGVyYCBtZXRob2QgaW5zdGVhZAogKiBAcGFyYW0gbnVsbHxpbnQgJG9mZnNldCAtIEBkZXByZWNhdGVkIHVzZSBgd2l0aE9mZnNldGAgbWV0aG9kIGluc3RlYWQKICov"},{"repository_path":"src\/adapter\/etl-adapter-parquet\/src\/Flow\/ETL\/Adapter\/Parquet\/functions.php","start_line_in_file":57,"slug":"to-parquet","name":"to_parquet","namespace":"Flow\\ETL\\Adapter\\Parquet","parameters":[{"name":"path","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"options","type":[{"name":"Options","namespace":"Flow\\Parquet","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"compressions","type":[{"name":"Compressions","namespace":"Flow\\Parquet\\ParquetFile","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Parquet\\ParquetFile\\Compressions::..."},{"name":"schema","type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"ParquetLoader","namespace":"Flow\\ETL\\Adapter\\Parquet","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PARQUET","type":"LOADER"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_writing","option":"parquet"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBQYXRofHN0cmluZyAkcGF0aAogKiBAcGFyYW0gbnVsbHxPcHRpb25zICRvcHRpb25zIC0gQGRlcHJlY2F0ZWQgdXNlIGB3aXRoT3B0aW9uc2AgbWV0aG9kIGluc3RlYWQKICogQHBhcmFtIENvbXByZXNzaW9ucyAkY29tcHJlc3Npb25zIC0gQGRlcHJlY2F0ZWQgdXNlIGB3aXRoQ29tcHJlc3Npb25zYCBtZXRob2QgaW5zdGVhZAogKiBAcGFyYW0gbnVsbHxTY2hlbWEgJHNjaGVtYSAtIEBkZXByZWNhdGVkIHVzZSBgd2l0aFNjaGVtYWAgbWV0aG9kIGluc3RlYWQKICov"},{"repository_path":"src\/adapter\/etl-adapter-parquet\/src\/Flow\/ETL\/Adapter\/Parquet\/functions.php","start_line_in_file":85,"slug":"array-to-generator","name":"array_to_generator","namespace":"Flow\\ETL\\Adapter\\Parquet","parameters":[{"name":"data","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Generator","namespace":"","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PARQUET","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUCiAqCiAqIEBwYXJhbSBhcnJheTxUPiAkZGF0YQogKgogKiBAcmV0dXJuIFxHZW5lcmF0b3I8VD4KICov"},{"repository_path":"src\/adapter\/etl-adapter-parquet\/src\/Flow\/ETL\/Adapter\/Parquet\/functions.php","start_line_in_file":93,"slug":"empty-generator","name":"empty_generator","namespace":"Flow\\ETL\\Adapter\\Parquet","parameters":[],"return_type":[{"name":"Generator","namespace":"","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PARQUET","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-parquet\/src\/Flow\/ETL\/Adapter\/Parquet\/functions.php","start_line_in_file":99,"slug":"schema-to-parquet","name":"schema_to_parquet","namespace":"Flow\\ETL\\Adapter\\Parquet","parameters":[{"name":"schema","type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Schema","namespace":"Flow\\Parquet\\ParquetFile","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PARQUET","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-parquet\/src\/Flow\/ETL\/Adapter\/Parquet\/functions.php","start_line_in_file":105,"slug":"schema-from-parquet","name":"schema_from_parquet","namespace":"Flow\\ETL\\Adapter\\Parquet","parameters":[{"name":"schema","type":[{"name":"Schema","namespace":"Flow\\Parquet\\ParquetFile","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Schema","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PARQUET","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/adapter\/etl-adapter-text\/src\/Flow\/ETL\/Adapter\/Text\/functions.php","start_line_in_file":15,"slug":"from-text","name":"from_text","namespace":"Flow\\ETL\\Adapter\\Text","parameters":[{"name":"path","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"TextExtractor","namespace":"Flow\\ETL\\Adapter\\Text","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TEXT","type":"EXTRACTOR"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBQYXRofHN0cmluZyAkcGF0aAogKi8="},{"repository_path":"src\/adapter\/etl-adapter-text\/src\/Flow\/ETL\/Adapter\/Text\/functions.php","start_line_in_file":30,"slug":"to-text","name":"to_text","namespace":"Flow\\ETL\\Adapter\\Text","parameters":[{"name":"path","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"new_line_separator","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'\\n'"}],"return_type":[{"name":"Loader","namespace":"Flow\\ETL","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TEXT","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBQYXRofHN0cmluZyAkcGF0aAogKiBAcGFyYW0gc3RyaW5nICRuZXdfbGluZV9zZXBhcmF0b3IgLSBkZWZhdWx0IFBIUF9FT0wgLSBAZGVwcmVjYXRlZCB1c2Ugd2l0aE5ld0xpbmVTZXBhcmF0b3IgbWV0aG9kIGluc3RlYWQKICoKICogQHJldHVybiBMb2FkZXIKICov"},{"repository_path":"src\/adapter\/etl-adapter-xml\/src\/Flow\/ETL\/Adapter\/XML\/functions.php","start_line_in_file":34,"slug":"from-xml","name":"from_xml","namespace":"Flow\\ETL\\Adapter\\XML","parameters":[{"name":"path","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"xml_node_path","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"''"}],"return_type":[{"name":"XMLParserExtractor","namespace":"Flow\\ETL\\Adapter\\XML","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"XML","type":"EXTRACTOR"}},{"name":"DocumentationExample","namespace":"Flow\\ETL\\Attribute","arguments":{"topic":"data_frame","example":"data_reading","option":"xml"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqICBJbiBvcmRlciB0byBpdGVyYXRlIG9ubHkgb3ZlciA8ZWxlbWVudD4gbm9kZXMgdXNlIGBmcm9tX3htbCgkZmlsZSktPndpdGhYTUxOb2RlUGF0aCgncm9vdC9lbGVtZW50cy9lbGVtZW50JylgLgogKgogKiAgPHJvb3Q+CiAqICAgIDxlbGVtZW50cz4KICogICAgICA8ZWxlbWVudD48L2VsZW1lbnQ+CiAqICAgICAgPGVsZW1lbnQ+PC9lbGVtZW50PgogKiAgICA8ZWxlbWVudHM+CiAqICA8L3Jvb3Q+CiAqCiAqICBYTUwgTm9kZSBQYXRoIGRvZXMgbm90IHN1cHBvcnQgYXR0cmlidXRlcyBhbmQgaXQncyBub3QgeHBhdGgsIGl0IGlzIGp1c3QgYSBzZXF1ZW5jZQogKiAgb2Ygbm9kZSBuYW1lcyBzZXBhcmF0ZWQgd2l0aCBzbGFzaC4KICoKICogQHBhcmFtIFBhdGh8c3RyaW5nICRwYXRoCiAqIEBwYXJhbSBzdHJpbmcgJHhtbF9ub2RlX3BhdGggLSBAZGVwcmVjYXRlZCB1c2UgYGZyb21feG1sKCRmaWxlKS0+d2l0aFhNTE5vZGVQYXRoKCR4bWxOb2RlUGF0aClgIG1ldGhvZCBpbnN0ZWFkCiAqLw=="},{"repository_path":"src\/adapter\/etl-adapter-xml\/src\/Flow\/ETL\/Adapter\/XML\/functions.php","start_line_in_file":50,"slug":"to-xml","name":"to_xml","namespace":"Flow\\ETL\\Adapter\\XML","parameters":[{"name":"path","type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"root_element_name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'rows'"},{"name":"row_element_name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'row'"},{"name":"attribute_prefix","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'_'"},{"name":"date_time_format","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'Y-m-d\\\\TH:i:s.uP'"},{"name":"xml_writer","type":[{"name":"XMLWriter","namespace":"Flow\\ETL\\Adapter\\XML","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\ETL\\Adapter\\XML\\XMLWriter\\DOMDocumentWriter::..."}],"return_type":[{"name":"XMLLoader","namespace":"Flow\\ETL\\Adapter\\XML\\Loader","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"XML","type":"LOADER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBQYXRofHN0cmluZyAkcGF0aAogKiBAcGFyYW0gc3RyaW5nICRyb290X2VsZW1lbnRfbmFtZSAtIEBkZXByZWNhdGVkIHVzZSBgd2l0aFJvb3RFbGVtZW50TmFtZSgpYCBtZXRob2QgaW5zdGVhZAogKiBAcGFyYW0gc3RyaW5nICRyb3dfZWxlbWVudF9uYW1lIC0gQGRlcHJlY2F0ZWQgdXNlIGB3aXRoUm93RWxlbWVudE5hbWUoKWAgbWV0aG9kIGluc3RlYWQKICogQHBhcmFtIHN0cmluZyAkYXR0cmlidXRlX3ByZWZpeCAtIEBkZXByZWNhdGVkIHVzZSBgd2l0aEF0dHJpYnV0ZVByZWZpeCgpYCBtZXRob2QgaW5zdGVhZAogKiBAcGFyYW0gc3RyaW5nICRkYXRlX3RpbWVfZm9ybWF0IC0gQGRlcHJlY2F0ZWQgdXNlIGB3aXRoRGF0ZVRpbWVGb3JtYXQoKWAgbWV0aG9kIGluc3RlYWQKICogQHBhcmFtIFhNTFdyaXRlciAkeG1sX3dyaXRlcgogKi8="},{"repository_path":"src\/lib\/filesystem\/src\/Flow\/Filesystem\/DSL\/functions.php","start_line_in_file":23,"slug":"protocol","name":"protocol","namespace":"Flow\\Filesystem\\DSL","parameters":[{"name":"protocol","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Protocol","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"FILESYSTEM","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/filesystem\/src\/Flow\/Filesystem\/DSL\/functions.php","start_line_in_file":29,"slug":"partition","name":"partition","namespace":"Flow\\Filesystem\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Partition","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"FILESYSTEM","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/filesystem\/src\/Flow\/Filesystem\/DSL\/functions.php","start_line_in_file":35,"slug":"partitions","name":"partitions","namespace":"Flow\\Filesystem\\DSL","parameters":[{"name":"partition","type":[{"name":"Partition","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Partitions","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"FILESYSTEM","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/filesystem\/src\/Flow\/Filesystem\/DSL\/functions.php","start_line_in_file":54,"slug":"path","name":"path","namespace":"Flow\\Filesystem\\DSL","parameters":[{"name":"path","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"options","type":[{"name":"Options","namespace":"Flow\\Filesystem\\Path","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"FILESYSTEM","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFBhdGggc3VwcG9ydHMgZ2xvYiBwYXR0ZXJucy4KICogRXhhbXBsZXM6CiAqICAtIHBhdGgoJyouY3N2JykgLSBhbnkgY3N2IGZpbGUgaW4gY3VycmVudCBkaXJlY3RvcnkKICogIC0gcGF0aCgnLyoqIC8gKi5jc3YnKSAtIGFueSBjc3YgZmlsZSBpbiBhbnkgc3ViZGlyZWN0b3J5IChyZW1vdmUgZW1wdHkgc3BhY2VzKQogKiAgLSBwYXRoKCcvZGlyL3BhcnRpdGlvbj0qIC8qLnBhcnF1ZXQnKSAtIGFueSBwYXJxdWV0IGZpbGUgaW4gZ2l2ZW4gcGFydGl0aW9uIGRpcmVjdG9yeS4KICoKICogR2xvYiBwYXR0ZXJuIGlzIGFsc28gc3VwcG9ydGVkIGJ5IHJlbW90ZSBmaWxlc3lzdGVtcyBsaWtlIEF6dXJlCiAqCiAqICAtIHBhdGgoJ2F6dXJlLWJsb2I6Ly9kaXJlY3RvcnkvKi5jc3YnKSAtIGFueSBjc3YgZmlsZSBpbiBnaXZlbiBkaXJlY3RvcnkKICoKICogQHBhcmFtIGFycmF5PHN0cmluZywgbnVsbHxib29sfGZsb2F0fGludHxzdHJpbmd8XFVuaXRFbnVtPnxQYXRoXE9wdGlvbnMgJG9wdGlvbnMKICov"},{"repository_path":"src\/lib\/filesystem\/src\/Flow\/Filesystem\/DSL\/functions.php","start_line_in_file":67,"slug":"path-stdout","name":"path_stdout","namespace":"Flow\\Filesystem\\DSL","parameters":[{"name":"options","type":[{"name":"array","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"FILESYSTEM","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHBhdGggdG8gcGhwIHN0ZG91dCBzdHJlYW0uCiAqCiAqIEBwYXJhbSBudWxsfGFycmF5eydzdHJlYW0nOiAnb3V0cHV0J3wnc3RkZXJyJ3wnc3Rkb3V0J30gJG9wdGlvbnMKICoKICogQHJldHVybiBQYXRoCiAqLw=="},{"repository_path":"src\/lib\/filesystem\/src\/Flow\/Filesystem\/DSL\/functions.php","start_line_in_file":81,"slug":"path-memory","name":"path_memory","namespace":"Flow\\Filesystem\\DSL","parameters":[{"name":"path","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"''"},{"name":"options","type":[{"name":"array","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"FILESYSTEM","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHBhdGggdG8gcGhwIG1lbW9yeSBzdHJlYW0uCiAqCiAqIEBwYXJhbSBzdHJpbmcgJHBhdGggLSBkZWZhdWx0ID0gJycgLSBwYXRoIGlzIHVzZWQgYXMgYW4gaWRlbnRpZmllciBpbiBtZW1vcnkgZmlsZXN5c3RlbSwgc28gd2UgY2FuIHdyaXRlIG11bHRpcGxlIGZpbGVzIHRvIG1lbW9yeSBhdCBvbmNlLCBlYWNoIHBhdGggaXMgYSBuZXcgaGFuZGxlCiAqIEBwYXJhbSBudWxsfGFycmF5eydzdHJlYW0nOiAnbWVtb3J5J3wndGVtcCd9ICRvcHRpb25zIC0gd2hlbiBub3RoaW5nIGlzIHByb3ZpZGVkLCAndGVtcCcgc3RyZWFtIGlzIHVzZWQgYnkgZGVmYXVsdAogKgogKiBAcmV0dXJuIFBhdGgKICov"},{"repository_path":"src\/lib\/filesystem\/src\/Flow\/Filesystem\/DSL\/functions.php","start_line_in_file":92,"slug":"path-real","name":"path_real","namespace":"Flow\\Filesystem\\DSL","parameters":[{"name":"path","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"options","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"Path","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"FILESYSTEM","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFJlc29sdmUgcmVhbCBwYXRoIGZyb20gZ2l2ZW4gcGF0aC4KICoKICogQHBhcmFtIGFycmF5PHN0cmluZywgbnVsbHxib29sfGZsb2F0fGludHxzdHJpbmd8XFVuaXRFbnVtPiAkb3B0aW9ucwogKi8="},{"repository_path":"src\/lib\/filesystem\/src\/Flow\/Filesystem\/DSL\/functions.php","start_line_in_file":98,"slug":"native-local-filesystem","name":"native_local_filesystem","namespace":"Flow\\Filesystem\\DSL","parameters":[],"return_type":[{"name":"NativeLocalFilesystem","namespace":"Flow\\Filesystem\\Local","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"FILESYSTEM","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/filesystem\/src\/Flow\/Filesystem\/DSL\/functions.php","start_line_in_file":108,"slug":"stdout-filesystem","name":"stdout_filesystem","namespace":"Flow\\Filesystem\\DSL","parameters":[],"return_type":[{"name":"StdOutFilesystem","namespace":"Flow\\Filesystem\\Local","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"FILESYSTEM","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFdyaXRlLW9ubHkgZmlsZXN5c3RlbSB1c2VmdWwgd2hlbiB3ZSBqdXN0IHdhbnQgdG8gd3JpdGUgdGhlIG91dHB1dCB0byBzdGRvdXQuCiAqIFRoZSBtYWluIHVzZSBjYXNlIGlzIGZvciBzdHJlYW1pbmcgZGF0YXNldHMgb3ZlciBodHRwLgogKi8="},{"repository_path":"src\/lib\/filesystem\/src\/Flow\/Filesystem\/DSL\/functions.php","start_line_in_file":117,"slug":"memory-filesystem","name":"memory_filesystem","namespace":"Flow\\Filesystem\\DSL","parameters":[],"return_type":[{"name":"MemoryFilesystem","namespace":"Flow\\Filesystem\\Local","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"FILESYSTEM","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIG5ldyBtZW1vcnkgZmlsZXN5c3RlbSBhbmQgd3JpdGVzIGRhdGEgdG8gaXQgaW4gbWVtb3J5LgogKi8="},{"repository_path":"src\/lib\/filesystem\/src\/Flow\/Filesystem\/DSL\/functions.php","start_line_in_file":128,"slug":"fstab","name":"fstab","namespace":"Flow\\Filesystem\\DSL","parameters":[{"name":"filesystems","type":[{"name":"Filesystem","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"FilesystemTable","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"FILESYSTEM","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIG5ldyBmaWxlc3lzdGVtIHRhYmxlIHdpdGggZ2l2ZW4gZmlsZXN5c3RlbXMuCiAqIEZpbGVzeXN0ZW1zIGNhbiBiZSBhbHNvIG1vdW50ZWQgbGF0ZXIuCiAqIElmIG5vIGZpbGVzeXN0ZW1zIGFyZSBwcm92aWRlZCwgbG9jYWwgZmlsZXN5c3RlbSBpcyBtb3VudGVkLgogKi8="},{"repository_path":"src\/lib\/filesystem\/src\/Flow\/Filesystem\/DSL\/functions.php","start_line_in_file":144,"slug":"traceable-filesystem","name":"traceable_filesystem","namespace":"Flow\\Filesystem\\DSL","parameters":[{"name":"filesystem","type":[{"name":"Filesystem","namespace":"Flow\\Filesystem","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"telemetryConfig","type":[{"name":"FilesystemTelemetryConfig","namespace":"Flow\\Filesystem\\Telemetry","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"TraceableFilesystem","namespace":"Flow\\Filesystem\\Telemetry","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"FILESYSTEM","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFdyYXAgYSBmaWxlc3lzdGVtIHdpdGggdGVsZW1ldHJ5IHRyYWNpbmcgc3VwcG9ydC4KICogQWxsIGZpbGVzeXN0ZW0gYW5kIHN0cmVhbSBvcGVyYXRpb25zIHdpbGwgYmUgdHJhY2VkIGFjY29yZGluZyB0byB0aGUgY29uZmlndXJhdGlvbi4KICov"},{"repository_path":"src\/lib\/filesystem\/src\/Flow\/Filesystem\/DSL\/functions.php","start_line_in_file":155,"slug":"filesystem-telemetry-config","name":"filesystem_telemetry_config","namespace":"Flow\\Filesystem\\DSL","parameters":[{"name":"telemetry","type":[{"name":"Telemetry","namespace":"Flow\\Telemetry","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"clock","type":[{"name":"ClockInterface","namespace":"Psr\\Clock","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"options","type":[{"name":"FilesystemTelemetryOptions","namespace":"Flow\\Filesystem\\Telemetry","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"FilesystemTelemetryConfig","namespace":"Flow\\Filesystem\\Telemetry","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"FILESYSTEM","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHRlbGVtZXRyeSBjb25maWd1cmF0aW9uIGZvciB0aGUgZmlsZXN5c3RlbS4KICov"},{"repository_path":"src\/lib\/filesystem\/src\/Flow\/Filesystem\/DSL\/functions.php","start_line_in_file":170,"slug":"filesystem-telemetry-options","name":"filesystem_telemetry_options","namespace":"Flow\\Filesystem\\DSL","parameters":[{"name":"traceStreams","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"},{"name":"collectMetrics","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"}],"return_type":[{"name":"FilesystemTelemetryOptions","namespace":"Flow\\Filesystem\\Telemetry","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"FILESYSTEM","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBvcHRpb25zIGZvciBmaWxlc3lzdGVtIHRlbGVtZXRyeS4KICoKICogQHBhcmFtIGJvb2wgJHRyYWNlU3RyZWFtcyBDcmVhdGUgYSBzaW5nbGUgc3BhbiBwZXIgc3RyZWFtIGxpZmVjeWNsZSAoZGVmYXVsdDogT04pCiAqIEBwYXJhbSBib29sICRjb2xsZWN0TWV0cmljcyBDb2xsZWN0IG1ldHJpY3MgZm9yIGJ5dGVzL29wZXJhdGlvbiBjb3VudHMgKGRlZmF1bHQ6IE9OKQogKi8="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":56,"slug":"type-structure","name":"type_structure","namespace":"Flow\\Types\\DSL","parameters":[{"name":"elements","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"optional_elements","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"allow_extra","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"StructureType","namespace":"Flow\\Types\\Type\\Logical","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUCiAqCiAqIEBwYXJhbSBhcnJheTxzdHJpbmcsIFR5cGU8VD4+ICRlbGVtZW50cwogKiBAcGFyYW0gYXJyYXk8c3RyaW5nLCBUeXBlPFQ+PiAkb3B0aW9uYWxfZWxlbWVudHMKICoKICogQHJldHVybiBTdHJ1Y3R1cmVUeXBlPFQ+CiAqLw=="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":73,"slug":"type-union","name":"type_union","namespace":"Flow\\Types\\DSL","parameters":[{"name":"first","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"second","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"types","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUCiAqIEB0ZW1wbGF0ZSBUCiAqIEB0ZW1wbGF0ZSBUCiAqCiAqIEBwYXJhbSBUeXBlPFQ+ICRmaXJzdAogKiBAcGFyYW0gVHlwZTxUPiAkc2Vjb25kCiAqIEBwYXJhbSBUeXBlPFQ+IC4uLiR0eXBlcwogKgogKiBAcmV0dXJuIFR5cGU8VD4KICov"},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":94,"slug":"type-intersection","name":"type_intersection","namespace":"Flow\\Types\\DSL","parameters":[{"name":"first","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"second","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"types","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUCiAqCiAqIEBwYXJhbSBUeXBlPFQ+ICRmaXJzdAogKiBAcGFyYW0gVHlwZTxUPiAkc2Vjb25kCiAqIEBwYXJhbSBUeXBlPFQ+IC4uLiR0eXBlcwogKgogKiBAcmV0dXJuIFR5cGU8VD4KICov"},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":109,"slug":"type-numeric-string","name":"type_numeric_string","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxudW1lcmljLXN0cmluZz4KICov"},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":122,"slug":"type-optional","name":"type_optional","namespace":"Flow\\Types\\DSL","parameters":[{"name":"type","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUCiAqCiAqIEBwYXJhbSBUeXBlPFQ+ICR0eXBlCiAqCiAqIEByZXR1cm4gVHlwZTxUPgogKi8="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":133,"slug":"type-from-array","name":"type_from_array","namespace":"Flow\\Types\\DSL","parameters":[{"name":"data","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxzdHJpbmcsIG1peGVkPiAkZGF0YQogKgogKiBAcmV0dXJuIFR5cGU8bWl4ZWQ+CiAqLw=="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":144,"slug":"type-is-nullable","name":"type_is_nullable","namespace":"Flow\\Types\\DSL","parameters":[{"name":"type","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUCiAqCiAqIEBwYXJhbSBUeXBlPFQ+ICR0eXBlCiAqLw=="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":166,"slug":"type-equals","name":"type_equals","namespace":"Flow\\Types\\DSL","parameters":[{"name":"left","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"right","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBUeXBlPG1peGVkPiAkbGVmdAogKiBAcGFyYW0gVHlwZTxtaXhlZD4gJHJpZ2h0CiAqLw=="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":179,"slug":"types","name":"types","namespace":"Flow\\Types\\DSL","parameters":[{"name":"types","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Types","namespace":"Flow\\Types\\Type","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUCiAqCiAqIEBwYXJhbSBUeXBlPFQ+IC4uLiR0eXBlcwogKgogKiBAcmV0dXJuIFR5cGVzPFQ+CiAqLw=="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":192,"slug":"type-list","name":"type_list","namespace":"Flow\\Types\\DSL","parameters":[{"name":"element","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ListType","namespace":"Flow\\Types\\Type\\Logical","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUCiAqCiAqIEBwYXJhbSBUeXBlPFQ+ICRlbGVtZW50CiAqCiAqIEByZXR1cm4gTGlzdFR5cGU8VD4KICov"},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":207,"slug":"type-map","name":"type_map","namespace":"Flow\\Types\\DSL","parameters":[{"name":"key_type","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"value_type","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"MapType","namespace":"Flow\\Types\\Type\\Logical","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUS2V5IG9mIGFycmF5LWtleQogKiBAdGVtcGxhdGUgVFZhbHVlCiAqCiAqIEBwYXJhbSBUeXBlPFRLZXk+ICRrZXlfdHlwZQogKiBAcGFyYW0gVHlwZTxUVmFsdWU+ICR2YWx1ZV90eXBlCiAqCiAqIEByZXR1cm4gTWFwVHlwZTxUS2V5LCBUVmFsdWU+CiAqLw=="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":216,"slug":"type-json","name":"type_json","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxKc29uPgogKi8="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":225,"slug":"type-datetime","name":"type_datetime","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxcRGF0ZVRpbWVJbnRlcmZhY2U+CiAqLw=="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":234,"slug":"type-date","name":"type_date","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxcRGF0ZVRpbWVJbnRlcmZhY2U+CiAqLw=="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":243,"slug":"type-time","name":"type_time","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxcRGF0ZUludGVydmFsPgogKi8="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":252,"slug":"type-time-zone","name":"type_time_zone","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxcRGF0ZVRpbWVab25lPgogKi8="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":261,"slug":"type-xml","name":"type_xml","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxcRE9NRG9jdW1lbnQ+CiAqLw=="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":270,"slug":"type-xml-element","name":"type_xml_element","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxcRE9NRWxlbWVudD4KICov"},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":279,"slug":"type-uuid","name":"type_uuid","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxVdWlkPgogKi8="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":288,"slug":"type-integer","name":"type_integer","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxpbnQ+CiAqLw=="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":297,"slug":"type-string","name":"type_string","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxzdHJpbmc+CiAqLw=="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":306,"slug":"type-float","name":"type_float","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxmbG9hdD4KICov"},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":315,"slug":"type-boolean","name":"type_boolean","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxib29sPgogKi8="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":328,"slug":"type-instance-of","name":"type_instance_of","namespace":"Flow\\Types\\DSL","parameters":[{"name":"class","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUIG9mIG9iamVjdAogKgogKiBAcGFyYW0gY2xhc3Mtc3RyaW5nPFQ+ICRjbGFzcwogKgogKiBAcmV0dXJuIFR5cGU8VD4KICov"},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":337,"slug":"type-object","name":"type_object","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxvYmplY3Q+CiAqLw=="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":346,"slug":"type-scalar","name":"type_scalar","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxib29sfGZsb2F0fGludHxzdHJpbmc+CiAqLw=="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":355,"slug":"type-resource","name":"type_resource","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxyZXNvdXJjZT4KICov"},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":364,"slug":"type-array","name":"type_array","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxhcnJheTxtaXhlZD4+CiAqLw=="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":373,"slug":"type-callable","name":"type_callable","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxjYWxsYWJsZT4KICov"},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":382,"slug":"type-null","name":"type_null","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxudWxsPgogKi8="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":391,"slug":"type-mixed","name":"type_mixed","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxtaXhlZD4KICov"},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":400,"slug":"type-positive-integer","name":"type_positive_integer","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxpbnQ8MCwgbWF4Pj4KICov"},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":409,"slug":"type-non-empty-string","name":"type_non_empty_string","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxub24tZW1wdHktc3RyaW5nPgogKi8="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":422,"slug":"type-enum","name":"type_enum","namespace":"Flow\\Types\\DSL","parameters":[{"name":"class","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUIG9mIFVuaXRFbnVtCiAqCiAqIEBwYXJhbSBjbGFzcy1zdHJpbmc8VD4gJGNsYXNzCiAqCiAqIEByZXR1cm4gVHlwZTxUPgogKi8="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":435,"slug":"type-literal","name":"type_literal","namespace":"Flow\\Types\\DSL","parameters":[{"name":"value","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"float","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"LiteralType","namespace":"Flow\\Types\\Type\\Logical","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUIG9mIGJvb2x8ZmxvYXR8aW50fHN0cmluZwogKgogKiBAcGFyYW0gVCAkdmFsdWUKICoKICogQHJldHVybiBMaXRlcmFsVHlwZTxUPgogKi8="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":444,"slug":"type-html","name":"type_html","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxIVE1MRG9jdW1lbnQ+CiAqLw=="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":453,"slug":"type-html-element","name":"type_html_element","namespace":"Flow\\Types\\DSL","parameters":[],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxIVE1MRWxlbWVudD4KICov"},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":465,"slug":"type-is","name":"type_is","namespace":"Flow\\Types\\DSL","parameters":[{"name":"type","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"typeClass","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUCiAqCiAqIEBwYXJhbSBUeXBlPFQ+ICR0eXBlCiAqIEBwYXJhbSBjbGFzcy1zdHJpbmc8VHlwZTxtaXhlZD4+ICR0eXBlQ2xhc3MKICov"},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":478,"slug":"type-is-any","name":"type_is_any","namespace":"Flow\\Types\\DSL","parameters":[{"name":"type","type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"typeClass","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"typeClasses","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUCiAqCiAqIEBwYXJhbSBUeXBlPFQ+ICR0eXBlCiAqIEBwYXJhbSBjbGFzcy1zdHJpbmc8VHlwZTxtaXhlZD4+ICR0eXBlQ2xhc3MKICogQHBhcmFtIGNsYXNzLXN0cmluZzxUeXBlPG1peGVkPj4gLi4uJHR5cGVDbGFzc2VzCiAqLw=="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":487,"slug":"get-type","name":"get_type","namespace":"Flow\\Types\\DSL","parameters":[{"name":"value","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEByZXR1cm4gVHlwZTxtaXhlZD4KICov"},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":500,"slug":"type-class-string","name":"type_class_string","namespace":"Flow\\Types\\DSL","parameters":[{"name":"class","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Type","namespace":"Flow\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEB0ZW1wbGF0ZSBUIG9mIG9iamVjdAogKgogKiBAcGFyYW0gbnVsbHxjbGFzcy1zdHJpbmc8VD4gJGNsYXNzCiAqCiAqIEByZXR1cm4gKCRjbGFzcyBpcyBudWxsID8gVHlwZTxjbGFzcy1zdHJpbmc+IDogVHlwZTxjbGFzcy1zdHJpbmc8VD4+KQogKi8="},{"repository_path":"src\/lib\/types\/src\/Flow\/Types\/DSL\/functions.php","start_line_in_file":506,"slug":"dom-element-to-string","name":"dom_element_to_string","namespace":"Flow\\Types\\DSL","parameters":[{"name":"element","type":[{"name":"DOMElement","namespace":"","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"format_output","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"preserver_white_space","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"false","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TYPES","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":185,"slug":"sql-parser","name":"sql_parser","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"Parser","namespace":"Flow\\PostgreSql","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":191,"slug":"sql-parse","name":"sql_parse","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"sql","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ParsedQuery","namespace":"Flow\\PostgreSql","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":201,"slug":"sql-fingerprint","name":"sql_fingerprint","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"sql","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFJldHVybnMgYSBmaW5nZXJwcmludCBvZiB0aGUgZ2l2ZW4gU1FMIHF1ZXJ5LgogKiBMaXRlcmFsIHZhbHVlcyBhcmUgbm9ybWFsaXplZCBzbyB0aGV5IHdvbid0IGFmZmVjdCB0aGUgZmluZ2VycHJpbnQuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":212,"slug":"sql-normalize","name":"sql_normalize","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"sql","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIE5vcm1hbGl6ZSBTUUwgcXVlcnkgYnkgcmVwbGFjaW5nIGxpdGVyYWwgdmFsdWVzIGFuZCBuYW1lZCBwYXJhbWV0ZXJzIHdpdGggcG9zaXRpb25hbCBwYXJhbWV0ZXJzLgogKiBXSEVSRSBpZCA9IDppZCB3aWxsIGJlIGNoYW5nZWQgaW50byBXSEVSRSBpZCA9ICQxCiAqIFdIRVJFIGlkID0gMSB3aWxsIGJlIGNoYW5nZWQgaW50byBXSEVSRSBpZCA9ICQxLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":222,"slug":"sql-normalize-utility","name":"sql_normalize_utility","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"sql","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIE5vcm1hbGl6ZSB1dGlsaXR5IFNRTCBzdGF0ZW1lbnRzIChEREwgbGlrZSBDUkVBVEUsIEFMVEVSLCBEUk9QKS4KICogVGhpcyBoYW5kbGVzIERETCBzdGF0ZW1lbnRzIGRpZmZlcmVudGx5IGZyb20gcGdfbm9ybWFsaXplKCkgd2hpY2ggaXMgb3B0aW1pemVkIGZvciBETUwuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":233,"slug":"sql-split","name":"sql_split","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"sql","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFNwbGl0IHN0cmluZyB3aXRoIG11bHRpcGxlIFNRTCBzdGF0ZW1lbnRzIGludG8gYXJyYXkgb2YgaW5kaXZpZHVhbCBzdGF0ZW1lbnRzLgogKgogKiBAcmV0dXJuIGFycmF5PHN0cmluZz4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":242,"slug":"sql-deparse-options","name":"sql_deparse_options","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DeparseOptions","namespace":"Flow\\PostgreSql","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBEZXBhcnNlT3B0aW9ucyBmb3IgY29uZmlndXJpbmcgU1FMIGZvcm1hdHRpbmcuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":256,"slug":"sql-deparse","name":"sql_deparse","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"query","type":[{"name":"ParsedQuery","namespace":"Flow\\PostgreSql","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"options","type":[{"name":"DeparseOptions","namespace":"Flow\\PostgreSql","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENvbnZlcnQgYSBQYXJzZWRRdWVyeSBBU1QgYmFjayB0byBTUUwgc3RyaW5nLgogKgogKiBXaGVuIGNhbGxlZCB3aXRob3V0IG9wdGlvbnMsIHJldHVybnMgdGhlIFNRTCBhcyBhIHNpbXBsZSBzdHJpbmcuCiAqIFdoZW4gY2FsbGVkIHdpdGggRGVwYXJzZU9wdGlvbnMsIGFwcGxpZXMgZm9ybWF0dGluZyAocHJldHR5LXByaW50aW5nLCBpbmRlbnRhdGlvbiwgZXRjLikuCiAqCiAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gaWYgZGVwYXJzaW5nIGZhaWxzCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":272,"slug":"sql-format","name":"sql_format","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"sql","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"options","type":[{"name":"DeparseOptions","namespace":"Flow\\PostgreSql","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFBhcnNlIGFuZCBmb3JtYXQgU1FMIHF1ZXJ5IHdpdGggcHJldHR5IHByaW50aW5nLgogKgogKiBUaGlzIGlzIGEgY29udmVuaWVuY2UgZnVuY3Rpb24gdGhhdCBwYXJzZXMgU1FMIGFuZCByZXR1cm5zIGl0IGZvcm1hdHRlZC4KICoKICogQHBhcmFtIHN0cmluZyAkc3FsIFRoZSBTUUwgcXVlcnkgdG8gZm9ybWF0CiAqIEBwYXJhbSBudWxsfERlcGFyc2VPcHRpb25zICRvcHRpb25zIEZvcm1hdHRpbmcgb3B0aW9ucyAoZGVmYXVsdHMgdG8gcHJldHR5LXByaW50IGVuYWJsZWQpCiAqCiAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gaWYgcGFyc2luZyBvciBkZXBhcnNpbmcgZmFpbHMKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":282,"slug":"sql-summary","name":"sql_summary","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"sql","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"options","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"},{"name":"truncateLimit","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"}],"return_type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEdlbmVyYXRlIGEgc3VtbWFyeSBvZiBwYXJzZWQgcXVlcmllcyBpbiBwcm90b2J1ZiBmb3JtYXQuCiAqIFVzZWZ1bCBmb3IgcXVlcnkgbW9uaXRvcmluZyBhbmQgbG9nZ2luZyB3aXRob3V0IGZ1bGwgQVNUIG92ZXJoZWFkLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":297,"slug":"sql-to-paginated-query","name":"sql_to_paginated_query","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"sql","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"limit","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"offset","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"0"}],"return_type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFRyYW5zZm9ybSBhIFNRTCBxdWVyeSBpbnRvIGEgcGFnaW5hdGVkIHF1ZXJ5IHdpdGggTElNSVQgYW5kIE9GRlNFVC4KICoKICogQHBhcmFtIHN0cmluZyAkc3FsIFRoZSBTUUwgcXVlcnkgdG8gcGFnaW5hdGUKICogQHBhcmFtIGludCAkbGltaXQgTWF4aW11bSBudW1iZXIgb2Ygcm93cyB0byByZXR1cm4KICogQHBhcmFtIGludCAkb2Zmc2V0IE51bWJlciBvZiByb3dzIHRvIHNraXAgKHJlcXVpcmVzIE9SREVSIEJZIGluIHF1ZXJ5KQogKgogKiBAcmV0dXJuIHN0cmluZyBUaGUgcGFnaW5hdGVkIFNRTCBxdWVyeQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":314,"slug":"sql-to-limited-query","name":"sql_to_limited_query","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"sql","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"limit","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFRyYW5zZm9ybSBhIFNRTCBxdWVyeSB0byBsaW1pdCByZXN1bHRzIHRvIGEgc3BlY2lmaWMgbnVtYmVyIG9mIHJvd3MuCiAqCiAqIEBwYXJhbSBzdHJpbmcgJHNxbCBUaGUgU1FMIHF1ZXJ5IHRvIGxpbWl0CiAqIEBwYXJhbSBpbnQgJGxpbWl0IE1heGltdW0gbnVtYmVyIG9mIHJvd3MgdG8gcmV0dXJuCiAqCiAqIEByZXR1cm4gc3RyaW5nIFRoZSBsaW1pdGVkIFNRTCBxdWVyeQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":333,"slug":"sql-to-count-query","name":"sql_to_count_query","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"sql","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFRyYW5zZm9ybSBhIFNRTCBxdWVyeSBpbnRvIGEgQ09VTlQgcXVlcnkgZm9yIHBhZ2luYXRpb24uCiAqCiAqIFdyYXBzIHRoZSBxdWVyeSBpbjogU0VMRUNUIENPVU5UKCopIEZST00gKC4uLikgQVMgX2NvdW50X3N1YnEKICogUmVtb3ZlcyBPUkRFUiBCWSBhbmQgTElNSVQvT0ZGU0VUIGZyb20gdGhlIGlubmVyIHF1ZXJ5LgogKgogKiBAcGFyYW0gc3RyaW5nICRzcWwgVGhlIFNRTCBxdWVyeSB0byB0cmFuc2Zvcm0KICoKICogQHJldHVybiBzdHJpbmcgVGhlIENPVU5UIHF1ZXJ5CiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":355,"slug":"sql-to-keyset-query","name":"sql_to_keyset_query","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"sql","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"limit","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"columns","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"cursor","type":[{"name":"array","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFRyYW5zZm9ybSBhIFNRTCBxdWVyeSBpbnRvIGEga2V5c2V0IChjdXJzb3ItYmFzZWQpIHBhZ2luYXRlZCBxdWVyeS4KICoKICogTW9yZSBlZmZpY2llbnQgdGhhbiBPRkZTRVQgZm9yIGxhcmdlIGRhdGFzZXRzIC0gdXNlcyBpbmRleGVkIFdIRVJFIGNvbmRpdGlvbnMuCiAqIEF1dG9tYXRpY2FsbHkgZGV0ZWN0cyBleGlzdGluZyBxdWVyeSBwYXJhbWV0ZXJzIGFuZCBhcHBlbmRzIGtleXNldCBwbGFjZWhvbGRlcnMgYXQgdGhlIGVuZC4KICoKICogQHBhcmFtIHN0cmluZyAkc3FsIFRoZSBTUUwgcXVlcnkgdG8gcGFnaW5hdGUgKG11c3QgaGF2ZSBPUkRFUiBCWSkKICogQHBhcmFtIGludCAkbGltaXQgTWF4aW11bSBudW1iZXIgb2Ygcm93cyB0byByZXR1cm4KICogQHBhcmFtIGxpc3Q8S2V5c2V0Q29sdW1uPiAkY29sdW1ucyBDb2x1bW5zIGZvciBrZXlzZXQgcGFnaW5hdGlvbiAobXVzdCBtYXRjaCBPUkRFUiBCWSkKICogQHBhcmFtIG51bGx8bGlzdDxudWxsfGJvb2x8ZmxvYXR8aW50fHN0cmluZz4gJGN1cnNvciBWYWx1ZXMgZnJvbSBsYXN0IHJvdyBvZiBwcmV2aW91cyBwYWdlIChudWxsIGZvciBmaXJzdCBwYWdlKQogKgogKiBAcmV0dXJuIHN0cmluZyBUaGUgcGFnaW5hdGVkIFNRTCBxdWVyeQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":370,"slug":"sql-keyset-column","name":"sql_keyset_column","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"column","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"order","type":[{"name":"SortOrder","namespace":"Flow\\PostgreSql\\AST\\Transformers","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\PostgreSql\\AST\\Transformers\\SortOrder::..."}],"return_type":[{"name":"KeysetColumn","namespace":"Flow\\PostgreSql\\AST\\Transformers","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEtleXNldENvbHVtbiBmb3Iga2V5c2V0IHBhZ2luYXRpb24uCiAqCiAqIEBwYXJhbSBzdHJpbmcgJGNvbHVtbiBDb2x1bW4gbmFtZSAoY2FuIGluY2x1ZGUgdGFibGUgYWxpYXMgbGlrZSAidS5pZCIpCiAqIEBwYXJhbSBTb3J0T3JkZXIgJG9yZGVyIFNvcnQgb3JkZXIgKEFTQyBvciBERVNDKQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":379,"slug":"sql-query-columns","name":"sql_query_columns","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"query","type":[{"name":"ParsedQuery","namespace":"Flow\\PostgreSql","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Columns","namespace":"Flow\\PostgreSql\\Extractors","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEV4dHJhY3QgY29sdW1ucyBmcm9tIGEgcGFyc2VkIFNRTCBxdWVyeS4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":388,"slug":"sql-query-tables","name":"sql_query_tables","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"query","type":[{"name":"ParsedQuery","namespace":"Flow\\PostgreSql","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Tables","namespace":"Flow\\PostgreSql\\Extractors","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEV4dHJhY3QgdGFibGVzIGZyb20gYSBwYXJzZWQgU1FMIHF1ZXJ5LgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":397,"slug":"sql-query-functions","name":"sql_query_functions","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"query","type":[{"name":"ParsedQuery","namespace":"Flow\\PostgreSql","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Functions","namespace":"Flow\\PostgreSql\\Extractors","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEV4dHJhY3QgZnVuY3Rpb25zIGZyb20gYSBwYXJzZWQgU1FMIHF1ZXJ5LgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":406,"slug":"sql-query-order-by","name":"sql_query_order_by","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"query","type":[{"name":"ParsedQuery","namespace":"Flow\\PostgreSql","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OrderBy","namespace":"Flow\\PostgreSql\\Extractors","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEV4dHJhY3QgT1JERVIgQlkgY2xhdXNlcyBmcm9tIGEgcGFyc2VkIFNRTCBxdWVyeS4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":420,"slug":"sql-query-depth","name":"sql_query_depth","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"sql","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEdldCB0aGUgbWF4aW11bSBuZXN0aW5nIGRlcHRoIG9mIGEgU1FMIHF1ZXJ5LgogKgogKiBFeGFtcGxlOgogKiAtICJTRUxFQ1QgKiBGUk9NIHQiID0+IDEKICogLSAiU0VMRUNUICogRlJPTSAoU0VMRUNUICogRlJPTSB0KSIgPT4gMgogKiAtICJTRUxFQ1QgKiBGUk9NIChTRUxFQ1QgKiBGUk9NIChTRUxFQ1QgKiBGUk9NIHQpKSIgPT4gMwogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":437,"slug":"sql-to-explain","name":"sql_to_explain","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"sql","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"config","type":[{"name":"ExplainConfig","namespace":"Flow\\PostgreSql\\AST\\Transformers","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFRyYW5zZm9ybSBhIFNRTCBxdWVyeSBpbnRvIGFuIEVYUExBSU4gcXVlcnkuCiAqCiAqIFJldHVybnMgdGhlIG1vZGlmaWVkIFNRTCB3aXRoIEVYUExBSU4gd3JhcHBlZCBhcm91bmQgaXQuCiAqIERlZmF1bHRzIHRvIEVYUExBSU4gQU5BTFlaRSB3aXRoIEpTT04gZm9ybWF0IGZvciBlYXN5IHBhcnNpbmcuCiAqCiAqIEBwYXJhbSBzdHJpbmcgJHNxbCBUaGUgU1FMIHF1ZXJ5IHRvIGV4cGxhaW4KICogQHBhcmFtIG51bGx8RXhwbGFpbkNvbmZpZyAkY29uZmlnIEVYUExBSU4gY29uZmlndXJhdGlvbiAoZGVmYXVsdHMgdG8gZm9yQW5hbHlzaXMoKSkKICoKICogQHJldHVybiBzdHJpbmcgVGhlIEVYUExBSU4gcXVlcnkKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":457,"slug":"sql-explain-config","name":"sql_explain_config","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"analyze","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"},{"name":"verbose","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"costs","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"},{"name":"buffers","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"},{"name":"timing","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"},{"name":"format","type":[{"name":"ExplainFormat","namespace":"Flow\\PostgreSql\\QueryBuilder\\Utility","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\PostgreSql\\QueryBuilder\\Utility\\ExplainFormat::..."}],"return_type":[{"name":"ExplainConfig","namespace":"Flow\\PostgreSql\\AST\\Transformers","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBFeHBsYWluQ29uZmlnIGZvciBjdXN0b21pemluZyBFWFBMQUlOIG9wdGlvbnMuCiAqCiAqIEBwYXJhbSBib29sICRhbmFseXplIFdoZXRoZXIgdG8gYWN0dWFsbHkgZXhlY3V0ZSB0aGUgcXVlcnkgKEFOQUxZWkUpCiAqIEBwYXJhbSBib29sICR2ZXJib3NlIEluY2x1ZGUgdmVyYm9zZSBvdXRwdXQKICogQHBhcmFtIGJvb2wgJGNvc3RzIEluY2x1ZGUgY29zdCBlc3RpbWF0ZXMgKGRlZmF1bHQgdHJ1ZSkKICogQHBhcmFtIGJvb2wgJGJ1ZmZlcnMgSW5jbHVkZSBidWZmZXIgdXNhZ2Ugc3RhdGlzdGljcyAocmVxdWlyZXMgYW5hbHl6ZSkKICogQHBhcmFtIGJvb2wgJHRpbWluZyBJbmNsdWRlIHRpbWluZyBpbmZvcm1hdGlvbiAocmVxdWlyZXMgYW5hbHl6ZSkKICogQHBhcmFtIEV4cGxhaW5Gb3JtYXQgJGZvcm1hdCBPdXRwdXQgZm9ybWF0IChKU09OIHJlY29tbWVuZGVkIGZvciBwYXJzaW5nKQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":479,"slug":"sql-explain-modifier","name":"sql_explain_modifier","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"config","type":[{"name":"ExplainConfig","namespace":"Flow\\PostgreSql\\AST\\Transformers","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ExplainModifier","namespace":"Flow\\PostgreSql\\AST\\Transformers","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBFeHBsYWluTW9kaWZpZXIgZm9yIHRyYW5zZm9ybWluZyBxdWVyaWVzIGludG8gRVhQTEFJTiBxdWVyaWVzLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":492,"slug":"sql-explain-parse","name":"sql_explain_parse","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"jsonOutput","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Plan","namespace":"Flow\\PostgreSql\\Explain\\Plan","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFBhcnNlIEVYUExBSU4gSlNPTiBvdXRwdXQgaW50byBhIFBsYW4gb2JqZWN0LgogKgogKiBAcGFyYW0gc3RyaW5nICRqc29uT3V0cHV0IFRoZSBKU09OIG91dHB1dCBmcm9tIEVYUExBSU4gKEZPUk1BVCBKU09OKQogKgogKiBAcmV0dXJuIFBsYW4gVGhlIHBhcnNlZCBleGVjdXRpb24gcGxhbgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":505,"slug":"sql-analyze","name":"sql_analyze","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"plan","type":[{"name":"Plan","namespace":"Flow\\PostgreSql\\Explain\\Plan","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"PlanAnalyzer","namespace":"Flow\\PostgreSql\\Explain\\Analyzer","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHBsYW4gYW5hbHl6ZXIgZm9yIGFuYWx5emluZyBFWFBMQUlOIHBsYW5zLgogKgogKiBAcGFyYW0gUGxhbiAkcGxhbiBUaGUgZXhlY3V0aW9uIHBsYW4gdG8gYW5hbHl6ZQogKgogKiBAcmV0dXJuIFBsYW5BbmFseXplciBUaGUgYW5hbHl6ZXIgZm9yIGV4dHJhY3RpbmcgaW5zaWdodHMKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":516,"slug":"select","name":"select","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expressions","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"SelectBuilder","namespace":"Flow\\PostgreSql\\QueryBuilder\\Select","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIG5ldyBTRUxFQ1QgcXVlcnkgYnVpbGRlci4KICoKICogQHBhcmFtIEV4cHJlc3Npb24gLi4uJGV4cHJlc3Npb25zIENvbHVtbnMgdG8gc2VsZWN0LiBJZiBlbXB0eSwgcmV0dXJucyBTZWxlY3RTZWxlY3RTdGVwLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":532,"slug":"with","name":"with","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"ctes","type":[{"name":"CTE","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"WithBuilder","namespace":"Flow\\PostgreSql\\QueryBuilder\\With","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFdJVEggY2xhdXNlIGJ1aWxkZXIgZm9yIENURXMuCiAqCiAqIEV4YW1wbGU6IHdpdGgoY3RlKCd1c2VycycsICRzdWJxdWVyeSkpLT5zZWxlY3Qoc3RhcigpKS0+ZnJvbSh0YWJsZSgndXNlcnMnKSkKICogRXhhbXBsZTogd2l0aChjdGUoJ2EnLCAkcTEpLCBjdGUoJ2InLCAkcTIpKS0+cmVjdXJzaXZlKCktPnNlbGVjdCguLi4pLT5mcm9tKHRhYmxlKCdhJykpCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":545,"slug":"insert","name":"insert","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"InsertIntoStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Insert","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIG5ldyBJTlNFUlQgcXVlcnkgYnVpbGRlci4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":561,"slug":"bulk-insert","name":"bulk_insert","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"table","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"columns","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"rowCount","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"BulkInsert","namespace":"Flow\\PostgreSql\\QueryBuilder\\Insert","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBvcHRpbWl6ZWQgYnVsayBJTlNFUlQgcXVlcnkgZm9yIGhpZ2gtcGVyZm9ybWFuY2UgbXVsdGktcm93IGluc2VydHMuCiAqCiAqIFVubGlrZSBpbnNlcnQoKSB3aGljaCB1c2VzIGltbXV0YWJsZSBidWlsZGVyIHBhdHRlcm5zIChPKG7CsikgZm9yIG4gcm93cyksCiAqIHRoaXMgZnVuY3Rpb24gZ2VuZXJhdGVzIFNRTCBkaXJlY3RseSB1c2luZyBzdHJpbmcgb3BlcmF0aW9ucyAoTyhuKSBjb21wbGV4aXR5KS4KICoKICogQHBhcmFtIHN0cmluZyAkdGFibGUgVGFibGUgbmFtZQogKiBAcGFyYW0gbGlzdDxzdHJpbmc+ICRjb2x1bW5zIENvbHVtbiBuYW1lcwogKiBAcGFyYW0gaW50ICRyb3dDb3VudCBOdW1iZXIgb2Ygcm93cyB0byBpbnNlcnQKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":570,"slug":"update","name":"update","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"UpdateTableStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Update","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIG5ldyBVUERBVEUgcXVlcnkgYnVpbGRlci4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":579,"slug":"delete","name":"delete","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DeleteFromStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Delete","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIG5ldyBERUxFVEUgcXVlcnkgYnVpbGRlci4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":591,"slug":"merge","name":"merge","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"table","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"alias","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"MergeUsingStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Merge","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIG5ldyBNRVJHRSBxdWVyeSBidWlsZGVyLgogKgogKiBAcGFyYW0gc3RyaW5nICR0YWJsZSBUYXJnZXQgdGFibGUgbmFtZQogKiBAcGFyYW0gbnVsbHxzdHJpbmcgJGFsaWFzIE9wdGlvbmFsIHRhYmxlIGFsaWFzCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":605,"slug":"copy","name":"copy","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"CopyFactory","namespace":"Flow\\PostgreSql\\QueryBuilder\\Factory","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIG5ldyBDT1BZIHF1ZXJ5IGJ1aWxkZXIgZm9yIGRhdGEgaW1wb3J0L2V4cG9ydC4KICoKICogVXNhZ2U6CiAqICAgY29weSgpLT5mcm9tKCd1c2VycycpLT5maWxlKCcvdG1wL3VzZXJzLmNzdicpLT5mb3JtYXQoQ29weUZvcm1hdDo6Q1NWKQogKiAgIGNvcHkoKS0+dG8oJ3VzZXJzJyktPmZpbGUoJy90bXAvdXNlcnMuY3N2JyktPmZvcm1hdChDb3B5Rm9ybWF0OjpDU1YpCiAqICAgY29weSgpLT50b1F1ZXJ5KHNlbGVjdCguLi4pKS0+ZmlsZSgnL3RtcC9kYXRhLmNzdicpCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":626,"slug":"col","name":"col","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"column","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"table","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"schema","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Column","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGNvbHVtbiByZWZlcmVuY2UgZXhwcmVzc2lvbi4KICoKICogQ2FuIGJlIHVzZWQgaW4gdHdvIG1vZGVzOgogKiAtIFBhcnNlIG1vZGU6IGNvbCgndXNlcnMuaWQnKSBvciBjb2woJ3NjaGVtYS50YWJsZS5jb2x1bW4nKSAtIHBhcnNlcyBkb3Qtc2VwYXJhdGVkIHN0cmluZwogKiAtIEV4cGxpY2l0IG1vZGU6IGNvbCgnaWQnLCAndXNlcnMnKSBvciBjb2woJ2lkJywgJ3VzZXJzJywgJ3NjaGVtYScpIC0gc2VwYXJhdGUgYXJndW1lbnRzCiAqCiAqIFdoZW4gJHRhYmxlIG9yICRzY2hlbWEgaXMgcHJvdmlkZWQsICRjb2x1bW4gbXVzdCBiZSBhIHBsYWluIGNvbHVtbiBuYW1lIChubyBkb3RzKS4KICoKICogQHBhcmFtIHN0cmluZyAkY29sdW1uIENvbHVtbiBuYW1lLCBvciBkb3Qtc2VwYXJhdGVkIHBhdGggbGlrZSAidGFibGUuY29sdW1uIiBvciAic2NoZW1hLnRhYmxlLmNvbHVtbiIKICogQHBhcmFtIG51bGx8c3RyaW5nICR0YWJsZSBUYWJsZSBuYW1lIChvcHRpb25hbCwgdHJpZ2dlcnMgZXhwbGljaXQgbW9kZSkKICogQHBhcmFtIG51bGx8c3RyaW5nICRzY2hlbWEgU2NoZW1hIG5hbWUgKG9wdGlvbmFsLCByZXF1aXJlcyAkdGFibGUpCiAqCiAqIEB0aHJvd3MgSW52YWxpZEV4cHJlc3Npb25FeGNlcHRpb24gd2hlbiAkc2NoZW1hIGlzIHByb3ZpZGVkIHdpdGhvdXQgJHRhYmxlLCBvciB3aGVuICRjb2x1bW4gY29udGFpbnMgZG90cyBpbiBleHBsaWNpdCBtb2RlCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":655,"slug":"star","name":"star","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"table","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Star","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFNFTEVDVCAqIGV4cHJlc3Npb24uCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":671,"slug":"literal","name":"literal","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"value","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"float","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false},{"name":"null","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Literal","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGxpdGVyYWwgdmFsdWUgZm9yIHVzZSBpbiBxdWVyaWVzLgogKgogKiBBdXRvbWF0aWNhbGx5IGRldGVjdHMgdGhlIHR5cGUgYW5kIGNyZWF0ZXMgdGhlIGFwcHJvcHJpYXRlIGxpdGVyYWw6CiAqIC0gbGl0ZXJhbCgnaGVsbG8nKSBjcmVhdGVzIGEgc3RyaW5nIGxpdGVyYWwKICogLSBsaXRlcmFsKDQyKSBjcmVhdGVzIGFuIGludGVnZXIgbGl0ZXJhbAogKiAtIGxpdGVyYWwoMy4xNCkgY3JlYXRlcyBhIGZsb2F0IGxpdGVyYWwKICogLSBsaXRlcmFsKHRydWUpIGNyZWF0ZXMgYSBib29sZWFuIGxpdGVyYWwKICogLSBsaXRlcmFsKG51bGwpIGNyZWF0ZXMgYSBOVUxMIGxpdGVyYWwKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":686,"slug":"param","name":"param","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"position","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Parameter","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHBvc2l0aW9uYWwgcGFyYW1ldGVyICgkMSwgJDIsIGV0Yy4pLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":698,"slug":"func","name":"func","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"args","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"FunctionCall","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGZ1bmN0aW9uIGNhbGwgZXhwcmVzc2lvbi4KICoKICogQHBhcmFtIHN0cmluZyAkbmFtZSBGdW5jdGlvbiBuYW1lIChjYW4gaW5jbHVkZSBzY2hlbWEgbGlrZSAicGdfY2F0YWxvZy5ub3ciKQogKiBAcGFyYW0gbGlzdDxFeHByZXNzaW9uPiAkYXJncyBGdW5jdGlvbiBhcmd1bWVudHMKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":711,"slug":"agg","name":"agg","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"args","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"distinct","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"AggregateCall","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBhZ2dyZWdhdGUgZnVuY3Rpb24gY2FsbCAoQ09VTlQsIFNVTSwgQVZHLCBldGMuKS4KICoKICogQHBhcmFtIHN0cmluZyAkbmFtZSBBZ2dyZWdhdGUgZnVuY3Rpb24gbmFtZQogKiBAcGFyYW0gbGlzdDxFeHByZXNzaW9uPiAkYXJncyBGdW5jdGlvbiBhcmd1bWVudHMKICogQHBhcmFtIGJvb2wgJGRpc3RpbmN0IFVzZSBESVNUSU5DVCBtb2RpZmllcgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":720,"slug":"agg-count","name":"agg_count","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"distinct","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"AggregateCall","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBDT1VOVCgqKSBhZ2dyZWdhdGUuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":733,"slug":"agg-sum","name":"agg_sum","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"distinct","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"AggregateCall","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBTVU0gYWdncmVnYXRlLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":742,"slug":"agg-avg","name":"agg_avg","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"distinct","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"AggregateCall","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBBVkcgYWdncmVnYXRlLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":751,"slug":"agg-min","name":"agg_min","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"AggregateCall","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBNSU4gYWdncmVnYXRlLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":760,"slug":"agg-max","name":"agg_max","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"AggregateCall","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBNQVggYWdncmVnYXRlLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":771,"slug":"coalesce","name":"coalesce","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expressions","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Coalesce","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIENPQUxFU0NFIGV4cHJlc3Npb24uCiAqCiAqIEBwYXJhbSBFeHByZXNzaW9uIC4uLiRleHByZXNzaW9ucyBFeHByZXNzaW9ucyB0byBjb2FsZXNjZQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":780,"slug":"nullif","name":"nullif","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr1","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"expr2","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"NullIf","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIE5VTExJRiBleHByZXNzaW9uLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":791,"slug":"greatest","name":"greatest","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expressions","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Greatest","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEdSRUFURVNUIGV4cHJlc3Npb24uCiAqCiAqIEBwYXJhbSBFeHByZXNzaW9uIC4uLiRleHByZXNzaW9ucyBFeHByZXNzaW9ucyB0byBjb21wYXJlCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":802,"slug":"least","name":"least","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expressions","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"Least","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIExFQVNUIGV4cHJlc3Npb24uCiAqCiAqIEBwYXJhbSBFeHByZXNzaW9uIC4uLiRleHByZXNzaW9ucyBFeHByZXNzaW9ucyB0byBjb21wYXJlCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":814,"slug":"cast","name":"cast","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"dataType","type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"TypeCast","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHR5cGUgY2FzdCBleHByZXNzaW9uLgogKgogKiBAcGFyYW0gRXhwcmVzc2lvbiAkZXhwciBFeHByZXNzaW9uIHRvIGNhc3QKICogQHBhcmFtIERhdGFUeXBlICRkYXRhVHlwZSBUYXJnZXQgZGF0YSB0eXBlICh1c2UgZGF0YV90eXBlXyogZnVuY3Rpb25zKQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":823,"slug":"data-type-integer","name":"data_type_integer","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBpbnRlZ2VyIGRhdGEgdHlwZSAoUG9zdGdyZVNRTCBpbnQ0KS4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":832,"slug":"data-type-smallint","name":"data_type_smallint","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHNtYWxsaW50IGRhdGEgdHlwZSAoUG9zdGdyZVNRTCBpbnQyKS4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":841,"slug":"data-type-bigint","name":"data_type_bigint","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGJpZ2ludCBkYXRhIHR5cGUgKFBvc3RncmVTUUwgaW50OCkuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":850,"slug":"data-type-boolean","name":"data_type_boolean","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGJvb2xlYW4gZGF0YSB0eXBlLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":859,"slug":"data-type-text","name":"data_type_text","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHRleHQgZGF0YSB0eXBlLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":868,"slug":"data-type-varchar","name":"data_type_varchar","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"length","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHZhcmNoYXIgZGF0YSB0eXBlIHdpdGggbGVuZ3RoIGNvbnN0cmFpbnQuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":877,"slug":"data-type-char","name":"data_type_char","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"length","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGNoYXIgZGF0YSB0eXBlIHdpdGggbGVuZ3RoIGNvbnN0cmFpbnQuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":886,"slug":"data-type-numeric","name":"data_type_numeric","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"precision","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"scale","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIG51bWVyaWMgZGF0YSB0eXBlIHdpdGggb3B0aW9uYWwgcHJlY2lzaW9uIGFuZCBzY2FsZS4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":895,"slug":"data-type-decimal","name":"data_type_decimal","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"precision","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"scale","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGRlY2ltYWwgZGF0YSB0eXBlIHdpdGggb3B0aW9uYWwgcHJlY2lzaW9uIGFuZCBzY2FsZS4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":904,"slug":"data-type-real","name":"data_type_real","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHJlYWwgZGF0YSB0eXBlIChQb3N0Z3JlU1FMIGZsb2F0NCkuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":913,"slug":"data-type-double-precision","name":"data_type_double_precision","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGRvdWJsZSBwcmVjaXNpb24gZGF0YSB0eXBlIChQb3N0Z3JlU1FMIGZsb2F0OCkuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":922,"slug":"data-type-date","name":"data_type_date","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGRhdGUgZGF0YSB0eXBlLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":931,"slug":"data-type-time","name":"data_type_time","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"precision","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHRpbWUgZGF0YSB0eXBlIHdpdGggb3B0aW9uYWwgcHJlY2lzaW9uLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":940,"slug":"data-type-timestamp","name":"data_type_timestamp","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"precision","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHRpbWVzdGFtcCBkYXRhIHR5cGUgd2l0aCBvcHRpb25hbCBwcmVjaXNpb24uCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":949,"slug":"data-type-timestamptz","name":"data_type_timestamptz","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"precision","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHRpbWVzdGFtcCB3aXRoIHRpbWUgem9uZSBkYXRhIHR5cGUgd2l0aCBvcHRpb25hbCBwcmVjaXNpb24uCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":958,"slug":"data-type-interval","name":"data_type_interval","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBpbnRlcnZhbCBkYXRhIHR5cGUuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":973,"slug":"current-timestamp","name":"current_timestamp","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"SQLValueFunctionExpression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFNRTCBzdGFuZGFyZCBDVVJSRU5UX1RJTUVTVEFNUCBmdW5jdGlvbi4KICoKICogUmV0dXJucyB0aGUgY3VycmVudCBkYXRlIGFuZCB0aW1lIChhdCB0aGUgc3RhcnQgb2YgdGhlIHRyYW5zYWN0aW9uKS4KICogVXNlZnVsIGFzIGEgY29sdW1uIGRlZmF1bHQgdmFsdWUgb3IgaW4gU0VMRUNUIHF1ZXJpZXMuCiAqCiAqIEV4YW1wbGU6IGNvbHVtbignY3JlYXRlZF9hdCcsIGRhdGFfdHlwZV90aW1lc3RhbXAoKSktPmRlZmF1bHQoY3VycmVudF90aW1lc3RhbXAoKSkKICogRXhhbXBsZTogc2VsZWN0KCktPnNlbGVjdChjdXJyZW50X3RpbWVzdGFtcCgpLT5hcygnbm93JykpCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":988,"slug":"current-date","name":"current_date","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"SQLValueFunctionExpression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFNRTCBzdGFuZGFyZCBDVVJSRU5UX0RBVEUgZnVuY3Rpb24uCiAqCiAqIFJldHVybnMgdGhlIGN1cnJlbnQgZGF0ZSAoYXQgdGhlIHN0YXJ0IG9mIHRoZSB0cmFuc2FjdGlvbikuCiAqIFVzZWZ1bCBhcyBhIGNvbHVtbiBkZWZhdWx0IHZhbHVlIG9yIGluIFNFTEVDVCBxdWVyaWVzLgogKgogKiBFeGFtcGxlOiBjb2x1bW4oJ2JpcnRoX2RhdGUnLCBkYXRhX3R5cGVfZGF0ZSgpKS0+ZGVmYXVsdChjdXJyZW50X2RhdGUoKSkKICogRXhhbXBsZTogc2VsZWN0KCktPnNlbGVjdChjdXJyZW50X2RhdGUoKS0+YXMoJ3RvZGF5JykpCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1003,"slug":"current-time","name":"current_time","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"SQLValueFunctionExpression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFNRTCBzdGFuZGFyZCBDVVJSRU5UX1RJTUUgZnVuY3Rpb24uCiAqCiAqIFJldHVybnMgdGhlIGN1cnJlbnQgdGltZSAoYXQgdGhlIHN0YXJ0IG9mIHRoZSB0cmFuc2FjdGlvbikuCiAqIFVzZWZ1bCBhcyBhIGNvbHVtbiBkZWZhdWx0IHZhbHVlIG9yIGluIFNFTEVDVCBxdWVyaWVzLgogKgogKiBFeGFtcGxlOiBjb2x1bW4oJ3N0YXJ0X3RpbWUnLCBkYXRhX3R5cGVfdGltZSgpKS0+ZGVmYXVsdChjdXJyZW50X3RpbWUoKSkKICogRXhhbXBsZTogc2VsZWN0KCktPnNlbGVjdChjdXJyZW50X3RpbWUoKS0+YXMoJ25vd190aW1lJykpCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1012,"slug":"data-type-uuid","name":"data_type_uuid","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFVVSUQgZGF0YSB0eXBlLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1021,"slug":"data-type-json","name":"data_type_json","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEpTT04gZGF0YSB0eXBlLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1030,"slug":"data-type-jsonb","name":"data_type_jsonb","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEpTT05CIGRhdGEgdHlwZS4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1039,"slug":"data-type-bytea","name":"data_type_bytea","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGJ5dGVhIGRhdGEgdHlwZS4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1048,"slug":"data-type-inet","name":"data_type_inet","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBpbmV0IGRhdGEgdHlwZS4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1057,"slug":"data-type-cidr","name":"data_type_cidr","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGNpZHIgZGF0YSB0eXBlLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1066,"slug":"data-type-macaddr","name":"data_type_macaddr","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIG1hY2FkZHIgZGF0YSB0eXBlLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1075,"slug":"data-type-serial","name":"data_type_serial","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHNlcmlhbCBkYXRhIHR5cGUuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1084,"slug":"data-type-smallserial","name":"data_type_smallserial","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHNtYWxsc2VyaWFsIGRhdGEgdHlwZS4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1093,"slug":"data-type-bigserial","name":"data_type_bigserial","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGJpZ3NlcmlhbCBkYXRhIHR5cGUuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1102,"slug":"data-type-array","name":"data_type_array","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"elementType","type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBhcnJheSBkYXRhIHR5cGUgZnJvbSBhbiBlbGVtZW50IHR5cGUuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1114,"slug":"data-type-custom","name":"data_type_custom","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"typeName","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"schema","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGN1c3RvbSBkYXRhIHR5cGUuCiAqCiAqIEBwYXJhbSBzdHJpbmcgJHR5cGVOYW1lIFR5cGUgbmFtZQogKiBAcGFyYW0gbnVsbHxzdHJpbmcgJHNjaGVtYSBPcHRpb25hbCBzY2hlbWEgbmFtZQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1127,"slug":"case-when","name":"case_when","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"whenClauses","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"elseResult","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"operand","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"CaseExpression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIENBU0UgZXhwcmVzc2lvbi4KICoKICogQHBhcmFtIG5vbi1lbXB0eS1saXN0PFdoZW5DbGF1c2U+ICR3aGVuQ2xhdXNlcyBXSEVOIGNsYXVzZXMKICogQHBhcmFtIG51bGx8RXhwcmVzc2lvbiAkZWxzZVJlc3VsdCBFTFNFIHJlc3VsdCAob3B0aW9uYWwpCiAqIEBwYXJhbSBudWxsfEV4cHJlc3Npb24gJG9wZXJhbmQgQ0FTRSBvcGVyYW5kIGZvciBzaW1wbGUgQ0FTRSAob3B0aW9uYWwpCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1136,"slug":"when","name":"when","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"condition","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"result","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"WhenClause","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFdIRU4gY2xhdXNlIGZvciBDQVNFIGV4cHJlc3Npb24uCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1145,"slug":"sub-select","name":"sub_select","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"query","type":[{"name":"SelectFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Select","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Subquery","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHN1YnF1ZXJ5IGV4cHJlc3Npb24uCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1159,"slug":"array-expr","name":"array_expr","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"elements","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ArrayExpression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBhcnJheSBleHByZXNzaW9uLgogKgogKiBAcGFyYW0gbGlzdDxFeHByZXNzaW9uPiAkZWxlbWVudHMgQXJyYXkgZWxlbWVudHMKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1170,"slug":"row-expr","name":"row_expr","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"elements","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"RowExpression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHJvdyBleHByZXNzaW9uLgogKgogKiBAcGFyYW0gbGlzdDxFeHByZXNzaW9uPiAkZWxlbWVudHMgUm93IGVsZW1lbnRzCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1192,"slug":"raw-expr","name":"raw_expr","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"sql","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"RawExpression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHJhdyBTUUwgZXhwcmVzc2lvbiAodXNlIHdpdGggY2F1dGlvbikuCiAqCiAqIFNFQ1VSSVRZIFdBUk5JTkc6IFRoaXMgZnVuY3Rpb24gYWNjZXB0cyByYXcgU1FMIHdpdGhvdXQgcGFyYW1ldGVyaXphdGlvbi4KICogU1FMIGluamVjdGlvbiBpcyBwb3NzaWJsZSBpZiB1c2VkIHdpdGggdW50cnVzdGVkIHVzZXIgaW5wdXQuCiAqIE9ubHkgdXNlIHdpdGggdHJ1c3RlZCwgdmFsaWRhdGVkIGlucHV0LgogKgogKiBGb3IgdXNlci1wcm92aWRlZCB2YWx1ZXMsIHVzZSBwYXJhbSgpIGluc3RlYWQ6CiAqIGBgYHBocAogKiAvLyBVTlNBRkUgLSBTUUwgaW5qZWN0aW9uIHBvc3NpYmxlOgogKiByYXdfZXhwcigiY3VzdG9tX2Z1bmMoJyIgLiAkdXNlcklucHV0IC4gIicpIikKICoKICogLy8gU0FGRSAtIHVzZSBwYXJhbWV0ZXJzOgogKiBmdW5jKCdjdXN0b21fZnVuYycsIHBhcmFtKDEpKQogKiBgYGAKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1201,"slug":"binary-expr","name":"binary_expr","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"left","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"operator","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"right","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"BinaryExpression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGJpbmFyeSBleHByZXNzaW9uIChsZWZ0IG9wIHJpZ2h0KS4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1215,"slug":"window-func","name":"window_func","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"args","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"partitionBy","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"orderBy","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"WindowFunction","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHdpbmRvdyBmdW5jdGlvbi4KICoKICogQHBhcmFtIHN0cmluZyAkbmFtZSBGdW5jdGlvbiBuYW1lCiAqIEBwYXJhbSBsaXN0PEV4cHJlc3Npb24+ICRhcmdzIEZ1bmN0aW9uIGFyZ3VtZW50cwogKiBAcGFyYW0gbGlzdDxFeHByZXNzaW9uPiAkcGFydGl0aW9uQnkgUEFSVElUSU9OIEJZIGV4cHJlc3Npb25zCiAqIEBwYXJhbSBsaXN0PE9yZGVyQnk+ICRvcmRlckJ5IE9SREVSIEJZIGl0ZW1zCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1228,"slug":"eq","name":"eq","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"left","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"right","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Comparison","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBlcXVhbGl0eSBjb21wYXJpc29uIChjb2x1bW4gPSB2YWx1ZSkuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1237,"slug":"neq","name":"neq","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"left","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"right","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Comparison","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIG5vdC1lcXVhbCBjb21wYXJpc29uIChjb2x1bW4gIT0gdmFsdWUpLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1246,"slug":"lt","name":"lt","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"left","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"right","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Comparison","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGxlc3MtdGhhbiBjb21wYXJpc29uIChjb2x1bW4gPCB2YWx1ZSkuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1255,"slug":"lte","name":"lte","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"left","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"right","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Comparison","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGxlc3MtdGhhbi1vci1lcXVhbCBjb21wYXJpc29uIChjb2x1bW4gPD0gdmFsdWUpLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1264,"slug":"gt","name":"gt","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"left","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"right","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Comparison","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGdyZWF0ZXItdGhhbiBjb21wYXJpc29uIChjb2x1bW4gPiB2YWx1ZSkuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1273,"slug":"gte","name":"gte","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"left","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"right","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Comparison","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGdyZWF0ZXItdGhhbi1vci1lcXVhbCBjb21wYXJpc29uIChjb2x1bW4gPj0gdmFsdWUpLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1282,"slug":"between","name":"between","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"low","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"high","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"not","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"Between","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEJFVFdFRU4gY29uZGl0aW9uLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1294,"slug":"is-in","name":"is_in","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"values","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"In","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBJTiBjb25kaXRpb24uCiAqCiAqIEBwYXJhbSBFeHByZXNzaW9uICRleHByIEV4cHJlc3Npb24gdG8gY2hlY2sKICogQHBhcmFtIGxpc3Q8RXhwcmVzc2lvbj4gJHZhbHVlcyBMaXN0IG9mIHZhbHVlcwogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1303,"slug":"is-null","name":"is_null","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"not","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"IsNull","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBJUyBOVUxMIGNvbmRpdGlvbi4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1312,"slug":"like","name":"like","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"pattern","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"caseInsensitive","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"Like","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIExJS0UgY29uZGl0aW9uLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1321,"slug":"similar-to","name":"similar_to","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"pattern","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"SimilarTo","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFNJTUlMQVIgVE8gY29uZGl0aW9uLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1330,"slug":"is-distinct-from","name":"is_distinct_from","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"left","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"right","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"not","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"IsDistinctFrom","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBJUyBESVNUSU5DVCBGUk9NIGNvbmRpdGlvbi4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1339,"slug":"exists","name":"exists","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"subquery","type":[{"name":"SelectFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Select","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Exists","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBFWElTVFMgY29uZGl0aW9uLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1351,"slug":"any-sub-select","name":"any_sub_select","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"left","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"operator","type":[{"name":"ComparisonOperator","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"subquery","type":[{"name":"SelectFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Select","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Any","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBBTlkgY29uZGl0aW9uLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1363,"slug":"all-sub-select","name":"all_sub_select","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"left","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"operator","type":[{"name":"ComparisonOperator","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"subquery","type":[{"name":"SelectFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Select","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"All","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBBTEwgY29uZGl0aW9uLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1389,"slug":"conditions","name":"conditions","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"ConditionBuilder","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGNvbmRpdGlvbiBidWlsZGVyIGZvciBmbHVlbnQgY29uZGl0aW9uIGNvbXBvc2l0aW9uLgogKgogKiBUaGlzIGJ1aWxkZXIgYWxsb3dzIGluY3JlbWVudGFsIGNvbmRpdGlvbiBidWlsZGluZyB3aXRoIGEgZmx1ZW50IEFQSToKICoKICogYGBgcGhwCiAqICRidWlsZGVyID0gY29uZGl0aW9ucygpOwogKgogKiBpZiAoJGhhc0ZpbHRlcikgewogKiAgICAgJGJ1aWxkZXIgPSAkYnVpbGRlci0+YW5kKGVxKGNvbCgnc3RhdHVzJyksIGxpdGVyYWwoJ2FjdGl2ZScpKSk7CiAqIH0KICoKICogaWYgKCEkYnVpbGRlci0+aXNFbXB0eSgpKSB7CiAqICAgICAkcXVlcnkgPSBzZWxlY3QoKS0+ZnJvbSh0YWJsZSgndXNlcnMnKSktPndoZXJlKCRidWlsZGVyKTsKICogfQogKiBgYGAKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1400,"slug":"cond-and","name":"cond_and","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"conditions","type":[{"name":"Condition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"AndCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENvbWJpbmUgY29uZGl0aW9ucyB3aXRoIEFORC4KICoKICogQHBhcmFtIENvbmRpdGlvbiAuLi4kY29uZGl0aW9ucyBDb25kaXRpb25zIHRvIGNvbWJpbmUKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1411,"slug":"cond-or","name":"cond_or","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"conditions","type":[{"name":"Condition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"OrCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENvbWJpbmUgY29uZGl0aW9ucyB3aXRoIE9SLgogKgogKiBAcGFyYW0gQ29uZGl0aW9uIC4uLiRjb25kaXRpb25zIENvbmRpdGlvbnMgdG8gY29tYmluZQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1420,"slug":"cond-not","name":"cond_not","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"condition","type":[{"name":"Condition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"NotCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIE5lZ2F0ZSBhIGNvbmRpdGlvbiB3aXRoIE5PVC4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1442,"slug":"raw-cond","name":"raw_cond","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"sql","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"RawCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHJhdyBTUUwgY29uZGl0aW9uICh1c2Ugd2l0aCBjYXV0aW9uKS4KICoKICogU0VDVVJJVFkgV0FSTklORzogVGhpcyBmdW5jdGlvbiBhY2NlcHRzIHJhdyBTUUwgd2l0aG91dCBwYXJhbWV0ZXJpemF0aW9uLgogKiBTUUwgaW5qZWN0aW9uIGlzIHBvc3NpYmxlIGlmIHVzZWQgd2l0aCB1bnRydXN0ZWQgdXNlciBpbnB1dC4KICogT25seSB1c2Ugd2l0aCB0cnVzdGVkLCB2YWxpZGF0ZWQgaW5wdXQuCiAqCiAqIEZvciB1c2VyLXByb3ZpZGVkIHZhbHVlcywgdXNlIHN0YW5kYXJkIGNvbmRpdGlvbiBmdW5jdGlvbnMgd2l0aCBwYXJhbSgpOgogKiBgYGBwaHAKICogLy8gVU5TQUZFIC0gU1FMIGluamVjdGlvbiBwb3NzaWJsZToKICogcmF3X2NvbmQoInN0YXR1cyA9ICciIC4gJHVzZXJJbnB1dCAuICInIikKICoKICogLy8gU0FGRSAtIHVzZSB0eXBlZCBjb25kaXRpb25zOgogKiBlcShjb2woJ3N0YXR1cycpLCBwYXJhbSgxKSkKICogYGBgCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1455,"slug":"cond-true","name":"cond_true","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"RawCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFRSVUUgY29uZGl0aW9uIGZvciBXSEVSRSBjbGF1c2VzLgogKgogKiBVc2VmdWwgd2hlbiB5b3UgbmVlZCBhIGNvbmRpdGlvbiB0aGF0IGFsd2F5cyBldmFsdWF0ZXMgdG8gdHJ1ZS4KICoKICogRXhhbXBsZTogc2VsZWN0KGxpdGVyYWwoMSkpLT53aGVyZShjb25kX3RydWUoKSkgLy8gU0VMRUNUIDEgV0hFUkUgdHJ1ZQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1469,"slug":"cond-false","name":"cond_false","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"RawCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEZBTFNFIGNvbmRpdGlvbiBmb3IgV0hFUkUgY2xhdXNlcy4KICoKICogVXNlZnVsIHdoZW4geW91IG5lZWQgYSBjb25kaXRpb24gdGhhdCBhbHdheXMgZXZhbHVhdGVzIHRvIGZhbHNlLAogKiB0eXBpY2FsbHkgZm9yIHRlc3Rpbmcgb3IgdG8gcmV0dXJuIGFuIGVtcHR5IHJlc3VsdCBzZXQuCiAqCiAqIEV4YW1wbGU6IHNlbGVjdChsaXRlcmFsKDEpKS0+d2hlcmUoY29uZF9mYWxzZSgpKSAvLyBTRUxFQ1QgMSBXSEVSRSBmYWxzZQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1481,"slug":"json-contains","name":"json_contains","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"left","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"right","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OperatorCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEpTT05CIGNvbnRhaW5zIGNvbmRpdGlvbiAoQD4pLgogKgogKiBFeGFtcGxlOiBqc29uX2NvbnRhaW5zKGNvbCgnbWV0YWRhdGEnKSwgbGl0ZXJhbF9qc29uKCd7ImNhdGVnb3J5IjogImVsZWN0cm9uaWNzIn0nKSkKICogUHJvZHVjZXM6IG1ldGFkYXRhIEA+ICd7ImNhdGVnb3J5IjogImVsZWN0cm9uaWNzIn0nCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1493,"slug":"json-contained-by","name":"json_contained_by","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"left","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"right","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OperatorCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEpTT05CIGlzIGNvbnRhaW5lZCBieSBjb25kaXRpb24gKDxAKS4KICoKICogRXhhbXBsZToganNvbl9jb250YWluZWRfYnkoY29sKCdtZXRhZGF0YScpLCBsaXRlcmFsX2pzb24oJ3siY2F0ZWdvcnkiOiAiZWxlY3Ryb25pY3MiLCAicHJpY2UiOiAxMDB9JykpCiAqIFByb2R1Y2VzOiBtZXRhZGF0YSA8QCAneyJjYXRlZ29yeSI6ICJlbGVjdHJvbmljcyIsICJwcmljZSI6IDEwMH0nCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1506,"slug":"json-get","name":"json_get","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"key","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"BinaryExpression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEpTT04gZmllbGQgYWNjZXNzIGV4cHJlc3Npb24gKC0+KS4KICogUmV0dXJucyBKU09OLgogKgogKiBFeGFtcGxlOiBqc29uX2dldChjb2woJ21ldGFkYXRhJyksIGxpdGVyYWxfc3RyaW5nKCdjYXRlZ29yeScpKQogKiBQcm9kdWNlczogbWV0YWRhdGEgLT4gJ2NhdGVnb3J5JwogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1519,"slug":"json-get-text","name":"json_get_text","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"key","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"BinaryExpression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEpTT04gZmllbGQgYWNjZXNzIGV4cHJlc3Npb24gKC0+PikuCiAqIFJldHVybnMgdGV4dC4KICoKICogRXhhbXBsZToganNvbl9nZXRfdGV4dChjb2woJ21ldGFkYXRhJyksIGxpdGVyYWxfc3RyaW5nKCduYW1lJykpCiAqIFByb2R1Y2VzOiBtZXRhZGF0YSAtPj4gJ25hbWUnCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1532,"slug":"json-path","name":"json_path","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"path","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"BinaryExpression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEpTT04gcGF0aCBhY2Nlc3MgZXhwcmVzc2lvbiAoIz4pLgogKiBSZXR1cm5zIEpTT04uCiAqCiAqIEV4YW1wbGU6IGpzb25fcGF0aChjb2woJ21ldGFkYXRhJyksIGxpdGVyYWxfc3RyaW5nKCd7Y2F0ZWdvcnksbmFtZX0nKSkKICogUHJvZHVjZXM6IG1ldGFkYXRhICM+ICd7Y2F0ZWdvcnksbmFtZX0nCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1545,"slug":"json-path-text","name":"json_path_text","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"path","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"BinaryExpression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEpTT04gcGF0aCBhY2Nlc3MgZXhwcmVzc2lvbiAoIz4+KS4KICogUmV0dXJucyB0ZXh0LgogKgogKiBFeGFtcGxlOiBqc29uX3BhdGhfdGV4dChjb2woJ21ldGFkYXRhJyksIGxpdGVyYWxfc3RyaW5nKCd7Y2F0ZWdvcnksbmFtZX0nKSkKICogUHJvZHVjZXM6IG1ldGFkYXRhICM+PiAne2NhdGVnb3J5LG5hbWV9JwogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1557,"slug":"json-exists","name":"json_exists","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"key","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OperatorCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEpTT05CIGtleSBleGlzdHMgY29uZGl0aW9uICg\/KS4KICoKICogRXhhbXBsZToganNvbl9leGlzdHMoY29sKCdtZXRhZGF0YScpLCBsaXRlcmFsX3N0cmluZygnY2F0ZWdvcnknKSkKICogUHJvZHVjZXM6IG1ldGFkYXRhID8gJ2NhdGVnb3J5JwogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1569,"slug":"json-exists-any","name":"json_exists_any","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"keys","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OperatorCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEpTT05CIGFueSBrZXkgZXhpc3RzIGNvbmRpdGlvbiAoP3wpLgogKgogKiBFeGFtcGxlOiBqc29uX2V4aXN0c19hbnkoY29sKCdtZXRhZGF0YScpLCByYXdfZXhwcigiYXJyYXlbJ2NhdGVnb3J5JywgJ25hbWUnXSIpKQogKiBQcm9kdWNlczogbWV0YWRhdGEgP3wgYXJyYXlbJ2NhdGVnb3J5JywgJ25hbWUnXQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1581,"slug":"json-exists-all","name":"json_exists_all","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"keys","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OperatorCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEpTT05CIGFsbCBrZXlzIGV4aXN0IGNvbmRpdGlvbiAoPyYpLgogKgogKiBFeGFtcGxlOiBqc29uX2V4aXN0c19hbGwoY29sKCdtZXRhZGF0YScpLCByYXdfZXhwcigiYXJyYXlbJ2NhdGVnb3J5JywgJ25hbWUnXSIpKQogKiBQcm9kdWNlczogbWV0YWRhdGEgPyYgYXJyYXlbJ2NhdGVnb3J5JywgJ25hbWUnXQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1593,"slug":"array-contains","name":"array_contains","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"left","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"right","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OperatorCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBhcnJheSBjb250YWlucyBjb25kaXRpb24gKEA+KS4KICoKICogRXhhbXBsZTogYXJyYXlfY29udGFpbnMoY29sKCd0YWdzJyksIHJhd19leHByKCJBUlJBWVsnc2FsZSddIikpCiAqIFByb2R1Y2VzOiB0YWdzIEA+IEFSUkFZWydzYWxlJ10KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1605,"slug":"array-contained-by","name":"array_contained_by","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"left","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"right","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OperatorCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBhcnJheSBpcyBjb250YWluZWQgYnkgY29uZGl0aW9uICg8QCkuCiAqCiAqIEV4YW1wbGU6IGFycmF5X2NvbnRhaW5lZF9ieShjb2woJ3RhZ3MnKSwgcmF3X2V4cHIoIkFSUkFZWydzYWxlJywgJ2ZlYXR1cmVkJywgJ25ldyddIikpCiAqIFByb2R1Y2VzOiB0YWdzIDxAIEFSUkFZWydzYWxlJywgJ2ZlYXR1cmVkJywgJ25ldyddCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1617,"slug":"array-overlap","name":"array_overlap","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"left","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"right","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OperatorCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBhcnJheSBvdmVybGFwIGNvbmRpdGlvbiAoJiYpLgogKgogKiBFeGFtcGxlOiBhcnJheV9vdmVybGFwKGNvbCgndGFncycpLCByYXdfZXhwcigiQVJSQVlbJ3NhbGUnLCAnZmVhdHVyZWQnXSIpKQogKiBQcm9kdWNlczogdGFncyAmJiBBUlJBWVsnc2FsZScsICdmZWF0dXJlZCddCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1631,"slug":"regex-match","name":"regex_match","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"pattern","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OperatorCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFBPU0lYIHJlZ2V4IG1hdGNoIGNvbmRpdGlvbiAofikuCiAqIENhc2Utc2Vuc2l0aXZlLgogKgogKiBFeGFtcGxlOiByZWdleF9tYXRjaChjb2woJ2VtYWlsJyksIGxpdGVyYWxfc3RyaW5nKCcuKkBnbWFpbFxcLmNvbScpKQogKgogKiBQcm9kdWNlczogZW1haWwgfiAnLipAZ21haWxcLmNvbScKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1645,"slug":"regex-imatch","name":"regex_imatch","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"pattern","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OperatorCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFBPU0lYIHJlZ2V4IG1hdGNoIGNvbmRpdGlvbiAofiopLgogKiBDYXNlLWluc2Vuc2l0aXZlLgogKgogKiBFeGFtcGxlOiByZWdleF9pbWF0Y2goY29sKCdlbWFpbCcpLCBsaXRlcmFsX3N0cmluZygnLipAZ21haWxcXC5jb20nKSkKICoKICogUHJvZHVjZXM6IGVtYWlsIH4qICcuKkBnbWFpbFwuY29tJwogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1659,"slug":"not-regex-match","name":"not_regex_match","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"pattern","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OperatorCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFBPU0lYIHJlZ2V4IG5vdCBtYXRjaCBjb25kaXRpb24gKCF+KS4KICogQ2FzZS1zZW5zaXRpdmUuCiAqCiAqIEV4YW1wbGU6IG5vdF9yZWdleF9tYXRjaChjb2woJ2VtYWlsJyksIGxpdGVyYWxfc3RyaW5nKCcuKkBzcGFtXFwuY29tJykpCiAqCiAqIFByb2R1Y2VzOiBlbWFpbCAhfiAnLipAc3BhbVwuY29tJwogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1673,"slug":"not-regex-imatch","name":"not_regex_imatch","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"pattern","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OperatorCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFBPU0lYIHJlZ2V4IG5vdCBtYXRjaCBjb25kaXRpb24gKCF+KikuCiAqIENhc2UtaW5zZW5zaXRpdmUuCiAqCiAqIEV4YW1wbGU6IG5vdF9yZWdleF9pbWF0Y2goY29sKCdlbWFpbCcpLCBsaXRlcmFsX3N0cmluZygnLipAc3BhbVxcLmNvbScpKQogKgogKiBQcm9kdWNlczogZW1haWwgIX4qICcuKkBzcGFtXC5jb20nCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1685,"slug":"text-search-match","name":"text_search_match","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"document","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"query","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OperatorCondition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Condition","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGZ1bGwtdGV4dCBzZWFyY2ggbWF0Y2ggY29uZGl0aW9uIChAQCkuCiAqCiAqIEV4YW1wbGU6IHRleHRfc2VhcmNoX21hdGNoKGNvbCgnZG9jdW1lbnQnKSwgcmF3X2V4cHIoInRvX3RzcXVlcnkoJ2VuZ2xpc2gnLCAnaGVsbG8gJiB3b3JsZCcpIikpCiAqIFByb2R1Y2VzOiBkb2N1bWVudCBAQCB0b190c3F1ZXJ5KCdlbmdsaXNoJywgJ2hlbGxvICYgd29ybGQnKQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1700,"slug":"table","name":"table","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"schema","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Table","namespace":"Flow\\PostgreSql\\QueryBuilder\\Table","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHRhYmxlIHJlZmVyZW5jZS4KICoKICogU3VwcG9ydHMgZG90IG5vdGF0aW9uIGZvciBzY2hlbWEtcXVhbGlmaWVkIG5hbWVzOiAicHVibGljLnVzZXJzIiBvciBleHBsaWNpdCBzY2hlbWEgcGFyYW1ldGVyLgogKiBEb3VibGUtcXVvdGVkIGlkZW50aWZpZXJzIHByZXNlcnZlIGRvdHM6ICcibXkudGFibGUiJyBjcmVhdGVzIGEgc2luZ2xlIGlkZW50aWZpZXIuCiAqCiAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgVGFibGUgbmFtZSAobWF5IGluY2x1ZGUgc2NoZW1hIGFzICJzY2hlbWEudGFibGUiKQogKiBAcGFyYW0gbnVsbHxzdHJpbmcgJHNjaGVtYSBTY2hlbWEgbmFtZSAob3B0aW9uYWwsIG92ZXJyaWRlcyBwYXJzZWQgc2NoZW1hKQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1715,"slug":"derived","name":"derived","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"query","type":[{"name":"SelectFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Select","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"alias","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"DerivedTable","namespace":"Flow\\PostgreSql\\QueryBuilder\\Table","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGRlcml2ZWQgdGFibGUgKHN1YnF1ZXJ5IGluIEZST00gY2xhdXNlKS4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1729,"slug":"lateral","name":"lateral","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"reference","type":[{"name":"TableReference","namespace":"Flow\\PostgreSql\\QueryBuilder\\Table","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Lateral","namespace":"Flow\\PostgreSql\\QueryBuilder\\Table","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIExBVEVSQUwgc3VicXVlcnkuCiAqCiAqIEBwYXJhbSBUYWJsZVJlZmVyZW5jZSAkcmVmZXJlbmNlIFRoZSBzdWJxdWVyeSBvciB0YWJsZSBmdW5jdGlvbiByZWZlcmVuY2UKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1741,"slug":"table-func","name":"table_func","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"function","type":[{"name":"FunctionCall","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"withOrdinality","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"TableFunction","namespace":"Flow\\PostgreSql\\QueryBuilder\\Table","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHRhYmxlIGZ1bmN0aW9uIHJlZmVyZW5jZS4KICoKICogQHBhcmFtIEZ1bmN0aW9uQ2FsbCAkZnVuY3Rpb24gVGhlIHRhYmxlLXZhbHVlZCBmdW5jdGlvbgogKiBAcGFyYW0gYm9vbCAkd2l0aE9yZGluYWxpdHkgV2hldGhlciB0byBhZGQgV0lUSCBPUkRJTkFMSVRZCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1760,"slug":"values-table","name":"values_table","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"rows","type":[{"name":"RowExpression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"ValuesTable","namespace":"Flow\\PostgreSql\\QueryBuilder\\Table","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFZBTFVFUyBjbGF1c2UgYXMgYSB0YWJsZSByZWZlcmVuY2UuCiAqCiAqIFVzYWdlOgogKiAgIHNlbGVjdCgpLT5mcm9tKAogKiAgICAgICB2YWx1ZXNfdGFibGUoCiAqICAgICAgICAgICByb3dfZXhwcihbbGl0ZXJhbCgxKSwgbGl0ZXJhbCgnQWxpY2UnKV0pLAogKiAgICAgICAgICAgcm93X2V4cHIoW2xpdGVyYWwoMiksIGxpdGVyYWwoJ0JvYicpXSkKICogICAgICAgKS0+YXMoJ3QnLCBbJ2lkJywgJ25hbWUnXSkKICogICApCiAqCiAqIEdlbmVyYXRlczogU0VMRUNUICogRlJPTSAoVkFMVUVTICgxLCAnQWxpY2UnKSwgKDIsICdCb2InKSkgQVMgdChpZCwgbmFtZSkKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1769,"slug":"order-by","name":"order_by","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"direction","type":[{"name":"SortDirection","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\PostgreSql\\QueryBuilder\\Clause\\SortDirection::..."},{"name":"nulls","type":[{"name":"NullsPosition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\PostgreSql\\QueryBuilder\\Clause\\NullsPosition::..."}],"return_type":[{"name":"OrderBy","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBPUkRFUiBCWSBpdGVtLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1781,"slug":"asc","name":"asc","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nulls","type":[{"name":"NullsPosition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\PostgreSql\\QueryBuilder\\Clause\\NullsPosition::..."}],"return_type":[{"name":"OrderBy","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBPUkRFUiBCWSBpdGVtIHdpdGggQVNDIGRpcmVjdGlvbi4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1790,"slug":"desc","name":"desc","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expr","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"nulls","type":[{"name":"NullsPosition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\PostgreSql\\QueryBuilder\\Clause\\NullsPosition::..."}],"return_type":[{"name":"OrderBy","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBPUkRFUiBCWSBpdGVtIHdpdGggREVTQyBkaXJlY3Rpb24uCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1804,"slug":"cte","name":"cte","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"query","type":[{"name":"SelectFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Select","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"columnNames","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"materialization","type":[{"name":"CTEMaterialization","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\PostgreSql\\QueryBuilder\\Clause\\CTEMaterialization::..."},{"name":"recursive","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"CTE","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIENURSAoQ29tbW9uIFRhYmxlIEV4cHJlc3Npb24pLgogKgogKiBAcGFyYW0gc3RyaW5nICRuYW1lIENURSBuYW1lCiAqIEBwYXJhbSBTZWxlY3RGaW5hbFN0ZXAgJHF1ZXJ5IENURSBxdWVyeQogKiBAcGFyYW0gYXJyYXk8c3RyaW5nPiAkY29sdW1uTmFtZXMgQ29sdW1uIGFsaWFzZXMgKG9wdGlvbmFsKQogKiBAcGFyYW0gQ1RFTWF0ZXJpYWxpemF0aW9uICRtYXRlcmlhbGl6YXRpb24gTWF0ZXJpYWxpemF0aW9uIGhpbnQKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1826,"slug":"window-def","name":"window_def","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"partitionBy","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"orderBy","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"frame","type":[{"name":"WindowFrame","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"WindowDefinition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHdpbmRvdyBkZWZpbml0aW9uIGZvciBXSU5ET1cgY2xhdXNlLgogKgogKiBAcGFyYW0gc3RyaW5nICRuYW1lIFdpbmRvdyBuYW1lCiAqIEBwYXJhbSBsaXN0PEV4cHJlc3Npb24+ICRwYXJ0aXRpb25CeSBQQVJUSVRJT04gQlkgZXhwcmVzc2lvbnMKICogQHBhcmFtIGxpc3Q8T3JkZXJCeT4gJG9yZGVyQnkgT1JERVIgQlkgaXRlbXMKICogQHBhcmFtIG51bGx8V2luZG93RnJhbWUgJGZyYW1lIFdpbmRvdyBmcmFtZSBzcGVjaWZpY2F0aW9uCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1839,"slug":"window-frame","name":"window_frame","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"mode","type":[{"name":"FrameMode","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"start","type":[{"name":"FrameBound","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"end","type":[{"name":"FrameBound","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"exclusion","type":[{"name":"FrameExclusion","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\PostgreSql\\QueryBuilder\\Clause\\FrameExclusion::..."}],"return_type":[{"name":"WindowFrame","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHdpbmRvdyBmcmFtZSBzcGVjaWZpY2F0aW9uLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1852,"slug":"frame-current-row","name":"frame_current_row","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"FrameBound","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGZyYW1lIGJvdW5kIGZvciBDVVJSRU5UIFJPVy4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1861,"slug":"frame-unbounded-preceding","name":"frame_unbounded_preceding","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"FrameBound","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGZyYW1lIGJvdW5kIGZvciBVTkJPVU5ERUQgUFJFQ0VESU5HLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1870,"slug":"frame-unbounded-following","name":"frame_unbounded_following","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"FrameBound","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGZyYW1lIGJvdW5kIGZvciBVTkJPVU5ERUQgRk9MTE9XSU5HLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1879,"slug":"frame-preceding","name":"frame_preceding","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"offset","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"FrameBound","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGZyYW1lIGJvdW5kIGZvciBOIFBSRUNFRElORy4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1888,"slug":"frame-following","name":"frame_following","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"offset","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"FrameBound","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGZyYW1lIGJvdW5kIGZvciBOIEZPTExPV0lORy4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1901,"slug":"lock-for","name":"lock_for","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"strength","type":[{"name":"LockStrength","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"tables","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"waitPolicy","type":[{"name":"LockWaitPolicy","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\PostgreSql\\QueryBuilder\\Clause\\LockWaitPolicy::..."}],"return_type":[{"name":"LockingClause","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGxvY2tpbmcgY2xhdXNlIChGT1IgVVBEQVRFLCBGT1IgU0hBUkUsIGV0Yy4pLgogKgogKiBAcGFyYW0gTG9ja1N0cmVuZ3RoICRzdHJlbmd0aCBMb2NrIHN0cmVuZ3RoCiAqIEBwYXJhbSBsaXN0PHN0cmluZz4gJHRhYmxlcyBUYWJsZXMgdG8gbG9jayAoZW1wdHkgZm9yIGFsbCkKICogQHBhcmFtIExvY2tXYWl0UG9saWN5ICR3YWl0UG9saWN5IFdhaXQgcG9saWN5CiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1915,"slug":"for-update","name":"for_update","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"tables","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"LockingClause","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEZPUiBVUERBVEUgbG9ja2luZyBjbGF1c2UuCiAqCiAqIEBwYXJhbSBsaXN0PHN0cmluZz4gJHRhYmxlcyBUYWJsZXMgdG8gbG9jayAoZW1wdHkgZm9yIGFsbCkKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1926,"slug":"for-share","name":"for_share","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"tables","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"LockingClause","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEZPUiBTSEFSRSBsb2NraW5nIGNsYXVzZS4KICoKICogQHBhcmFtIGxpc3Q8c3RyaW5nPiAkdGFibGVzIFRhYmxlcyB0byBsb2NrIChlbXB0eSBmb3IgYWxsKQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1935,"slug":"on-conflict-nothing","name":"on_conflict_nothing","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"target","type":[{"name":"ConflictTarget","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"OnConflictClause","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBPTiBDT05GTElDVCBETyBOT1RISU5HIGNsYXVzZS4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1947,"slug":"on-conflict-update","name":"on_conflict_update","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"target","type":[{"name":"ConflictTarget","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"updates","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OnConflictClause","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBPTiBDT05GTElDVCBETyBVUERBVEUgY2xhdXNlLgogKgogKiBAcGFyYW0gQ29uZmxpY3RUYXJnZXQgJHRhcmdldCBDb25mbGljdCB0YXJnZXQgKGNvbHVtbnMgb3IgY29uc3RyYWludCkKICogQHBhcmFtIGFycmF5PHN0cmluZywgRXhwcmVzc2lvbj4gJHVwZGF0ZXMgQ29sdW1uIHVwZGF0ZXMKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1958,"slug":"conflict-columns","name":"conflict_columns","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"columns","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ConflictTarget","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGNvbmZsaWN0IHRhcmdldCBmb3IgT04gQ09ORkxJQ1QgKGNvbHVtbnMpLgogKgogKiBAcGFyYW0gbGlzdDxzdHJpbmc+ICRjb2x1bW5zIENvbHVtbnMgdGhhdCBkZWZpbmUgdW5pcXVlbmVzcwogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1967,"slug":"conflict-constraint","name":"conflict_constraint","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ConflictTarget","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGNvbmZsaWN0IHRhcmdldCBmb3IgT04gQ09ORkxJQ1QgT04gQ09OU1RSQUlOVC4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1978,"slug":"returning","name":"returning","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expressions","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"ReturningClause","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFJFVFVSTklORyBjbGF1c2UuCiAqCiAqIEBwYXJhbSBFeHByZXNzaW9uIC4uLiRleHByZXNzaW9ucyBFeHByZXNzaW9ucyB0byByZXR1cm4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1987,"slug":"returning-all","name":"returning_all","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"ReturningClause","namespace":"Flow\\PostgreSql\\QueryBuilder\\Clause","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFJFVFVSTklORyAqIGNsYXVzZS4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":1999,"slug":"begin","name":"begin","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"BeginOptionsStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Transaction","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEJFR0lOIHRyYW5zYWN0aW9uIGJ1aWxkZXIuCiAqCiAqIEV4YW1wbGU6IGJlZ2luKCktPmlzb2xhdGlvbkxldmVsKElzb2xhdGlvbkxldmVsOjpTRVJJQUxJWkFCTEUpLT5yZWFkT25seSgpCiAqIFByb2R1Y2VzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFIFJFQUQgT05MWQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2011,"slug":"commit","name":"commit","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"CommitOptionsStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Transaction","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIENPTU1JVCB0cmFuc2FjdGlvbiBidWlsZGVyLgogKgogKiBFeGFtcGxlOiBjb21taXQoKS0+YW5kQ2hhaW4oKQogKiBQcm9kdWNlczogQ09NTUlUIEFORCBDSEFJTgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2023,"slug":"rollback","name":"rollback","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"RollbackOptionsStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Transaction","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFJPTExCQUNLIHRyYW5zYWN0aW9uIGJ1aWxkZXIuCiAqCiAqIEV4YW1wbGU6IHJvbGxiYWNrKCktPnRvU2F2ZXBvaW50KCdteV9zYXZlcG9pbnQnKQogKiBQcm9kdWNlczogUk9MTEJBQ0sgVE8gU0FWRVBPSU5UIG15X3NhdmVwb2ludAogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2035,"slug":"savepoint","name":"savepoint","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"SavepointFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Transaction","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFNBVkVQT0lOVC4KICoKICogRXhhbXBsZTogc2F2ZXBvaW50KCdteV9zYXZlcG9pbnQnKQogKiBQcm9kdWNlczogU0FWRVBPSU5UIG15X3NhdmVwb2ludAogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2047,"slug":"release-savepoint","name":"release_savepoint","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"SavepointFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Transaction","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFJlbGVhc2UgYSBTQVZFUE9JTlQuCiAqCiAqIEV4YW1wbGU6IHJlbGVhc2Vfc2F2ZXBvaW50KCdteV9zYXZlcG9pbnQnKQogKiBQcm9kdWNlczogUkVMRUFTRSBteV9zYXZlcG9pbnQKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2059,"slug":"set-transaction","name":"set_transaction","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"SetTransactionOptionsStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Transaction","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFNFVCBUUkFOU0FDVElPTiBidWlsZGVyLgogKgogKiBFeGFtcGxlOiBzZXRfdHJhbnNhY3Rpb24oKS0+aXNvbGF0aW9uTGV2ZWwoSXNvbGF0aW9uTGV2ZWw6OlNFUklBTElaQUJMRSktPnJlYWRPbmx5KCkKICogUHJvZHVjZXM6IFNFVCBUUkFOU0FDVElPTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFLCBSRUFEIE9OTFkKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2071,"slug":"set-session-transaction","name":"set_session_transaction","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"SetTransactionOptionsStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Transaction","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFNFVCBTRVNTSU9OIENIQVJBQ1RFUklTVElDUyBBUyBUUkFOU0FDVElPTiBidWlsZGVyLgogKgogKiBFeGFtcGxlOiBzZXRfc2Vzc2lvbl90cmFuc2FjdGlvbigpLT5pc29sYXRpb25MZXZlbChJc29sYXRpb25MZXZlbDo6U0VSSUFMSVpBQkxFKQogKiBQcm9kdWNlczogU0VUIFNFU1NJT04gQ0hBUkFDVEVSSVNUSUNTIEFTIFRSQU5TQUNUSU9OIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEUKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2083,"slug":"transaction-snapshot","name":"transaction_snapshot","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"snapshotId","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"SetTransactionFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Transaction","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFNFVCBUUkFOU0FDVElPTiBTTkFQU0hPVCBidWlsZGVyLgogKgogKiBFeGFtcGxlOiB0cmFuc2FjdGlvbl9zbmFwc2hvdCgnMDAwMDAwMDMtMDAwMDAwMUEtMScpCiAqIFByb2R1Y2VzOiBTRVQgVFJBTlNBQ1RJT04gU05BUFNIT1QgJzAwMDAwMDAzLTAwMDAwMDFBLTEnCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2095,"slug":"prepare-transaction","name":"prepare_transaction","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"transactionId","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"PreparedTransactionFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Transaction","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFBSRVBBUkUgVFJBTlNBQ1RJT04gYnVpbGRlci4KICoKICogRXhhbXBsZTogcHJlcGFyZV90cmFuc2FjdGlvbignbXlfdHJhbnNhY3Rpb24nKQogKiBQcm9kdWNlczogUFJFUEFSRSBUUkFOU0FDVElPTiAnbXlfdHJhbnNhY3Rpb24nCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2107,"slug":"commit-prepared","name":"commit_prepared","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"transactionId","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"PreparedTransactionFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Transaction","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIENPTU1JVCBQUkVQQVJFRCBidWlsZGVyLgogKgogKiBFeGFtcGxlOiBjb21taXRfcHJlcGFyZWQoJ215X3RyYW5zYWN0aW9uJykKICogUHJvZHVjZXM6IENPTU1JVCBQUkVQQVJFRCAnbXlfdHJhbnNhY3Rpb24nCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2119,"slug":"rollback-prepared","name":"rollback_prepared","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"transactionId","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"PreparedTransactionFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Transaction","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFJPTExCQUNLIFBSRVBBUkVEIGJ1aWxkZXIuCiAqCiAqIEV4YW1wbGU6IHJvbGxiYWNrX3ByZXBhcmVkKCdteV90cmFuc2FjdGlvbicpCiAqIFByb2R1Y2VzOiBST0xMQkFDSyBQUkVQQVJFRCAnbXlfdHJhbnNhY3Rpb24nCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2142,"slug":"declare-cursor","name":"declare_cursor","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"cursorName","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"query","type":[{"name":"SelectFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Select","is_nullable":false,"is_variadic":false},{"name":"SqlQuery","namespace":"Flow\\PostgreSql\\QueryBuilder","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"DeclareCursorOptionsStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Cursor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIERlY2xhcmUgYSBzZXJ2ZXItc2lkZSBjdXJzb3IgZm9yIGEgcXVlcnkuCiAqCiAqIEN1cnNvcnMgbXVzdCBiZSBkZWNsYXJlZCB3aXRoaW4gYSB0cmFuc2FjdGlvbiBhbmQgcHJvdmlkZSBtZW1vcnktZWZmaWNpZW50CiAqIGl0ZXJhdGlvbiBvdmVyIGxhcmdlIHJlc3VsdCBzZXRzIHZpYSBGRVRDSCBjb21tYW5kcy4KICoKICogRXhhbXBsZSB3aXRoIHF1ZXJ5IGJ1aWxkZXI6CiAqICAgZGVjbGFyZV9jdXJzb3IoJ215X2N1cnNvcicsIHNlbGVjdChzdGFyKCkpLT5mcm9tKHRhYmxlKCd1c2VycycpKSktPm5vU2Nyb2xsKCkKICogICBQcm9kdWNlczogREVDTEFSRSBteV9jdXJzb3IgTk8gU0NST0xMIENVUlNPUiBGT1IgU0VMRUNUICogRlJPTSB1c2VycwogKgogKiBFeGFtcGxlIHdpdGggcmF3IFNRTDoKICogICBkZWNsYXJlX2N1cnNvcignbXlfY3Vyc29yJywgJ1NFTEVDVCAqIEZST00gdXNlcnMgV0hFUkUgYWN0aXZlID0gdHJ1ZScpLT53aXRoSG9sZCgpCiAqICAgUHJvZHVjZXM6IERFQ0xBUkUgbXlfY3Vyc29yIE5PIFNDUk9MTCBDVVJTT1IgV0lUSCBIT0xEIEZPUiBTRUxFQ1QgKiBGUk9NIHVzZXJzIFdIRVJFIGFjdGl2ZSA9IHRydWUKICoKICogQHBhcmFtIHN0cmluZyAkY3Vyc29yTmFtZSBVbmlxdWUgY3Vyc29yIG5hbWUKICogQHBhcmFtIFNlbGVjdEZpbmFsU3RlcHxTcWxRdWVyeXxzdHJpbmcgJHF1ZXJ5IFF1ZXJ5IHRvIGl0ZXJhdGUgb3ZlcgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2163,"slug":"fetch","name":"fetch","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"cursorName","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"FetchCursorBuilder","namespace":"Flow\\PostgreSql\\QueryBuilder\\Cursor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEZldGNoIHJvd3MgZnJvbSBhIGN1cnNvci4KICoKICogRXhhbXBsZTogZmV0Y2goJ215X2N1cnNvcicpLT5mb3J3YXJkKDEwMCkKICogUHJvZHVjZXM6IEZFVENIIEZPUldBUkQgMTAwIG15X2N1cnNvcgogKgogKiBFeGFtcGxlOiBmZXRjaCgnbXlfY3Vyc29yJyktPmFsbCgpCiAqIFByb2R1Y2VzOiBGRVRDSCBBTEwgbXlfY3Vyc29yCiAqCiAqIEBwYXJhbSBzdHJpbmcgJGN1cnNvck5hbWUgQ3Vyc29yIHRvIGZldGNoIGZyb20KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2180,"slug":"close-cursor","name":"close_cursor","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"cursorName","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"CloseCursorFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Cursor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENsb3NlIGEgY3Vyc29yLgogKgogKiBFeGFtcGxlOiBjbG9zZV9jdXJzb3IoJ215X2N1cnNvcicpCiAqIFByb2R1Y2VzOiBDTE9TRSBteV9jdXJzb3IKICoKICogRXhhbXBsZTogY2xvc2VfY3Vyc29yKCkgLSBjbG9zZXMgYWxsIGN1cnNvcnMKICogUHJvZHVjZXM6IENMT1NFIEFMTAogKgogKiBAcGFyYW0gbnVsbHxzdHJpbmcgJGN1cnNvck5hbWUgQ3Vyc29yIHRvIGNsb3NlLCBvciBudWxsIHRvIGNsb3NlIGFsbAogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2196,"slug":"column","name":"column","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"type","type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ColumnDefinition","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGNvbHVtbiBkZWZpbml0aW9uIGZvciBDUkVBVEUgVEFCTEUuCiAqCiAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgQ29sdW1uIG5hbWUKICogQHBhcmFtIERhdGFUeXBlICR0eXBlIENvbHVtbiBkYXRhIHR5cGUKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2207,"slug":"primary-key","name":"primary_key","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"columns","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"PrimaryKeyConstraint","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Constraint","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFBSSU1BUlkgS0VZIGNvbnN0cmFpbnQuCiAqCiAqIEBwYXJhbSBzdHJpbmcgLi4uJGNvbHVtbnMgQ29sdW1ucyB0aGF0IGZvcm0gdGhlIHByaW1hcnkga2V5CiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2218,"slug":"unique-constraint","name":"unique_constraint","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"columns","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"UniqueConstraint","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Constraint","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFVOSVFVRSBjb25zdHJhaW50LgogKgogKiBAcGFyYW0gc3RyaW5nIC4uLiRjb2x1bW5zIENvbHVtbnMgdGhhdCBtdXN0IGJlIHVuaXF1ZSB0b2dldGhlcgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2231,"slug":"foreign-key","name":"foreign_key","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"columns","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"referenceTable","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"referenceColumns","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"ForeignKeyConstraint","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Constraint","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEZPUkVJR04gS0VZIGNvbnN0cmFpbnQuCiAqCiAqIEBwYXJhbSBsaXN0PHN0cmluZz4gJGNvbHVtbnMgTG9jYWwgY29sdW1ucwogKiBAcGFyYW0gc3RyaW5nICRyZWZlcmVuY2VUYWJsZSBSZWZlcmVuY2VkIHRhYmxlCiAqIEBwYXJhbSBsaXN0PHN0cmluZz4gJHJlZmVyZW5jZUNvbHVtbnMgUmVmZXJlbmNlZCBjb2x1bW5zIChkZWZhdWx0cyB0byBzYW1lIGFzICRjb2x1bW5zIGlmIGVtcHR5KQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2242,"slug":"check-constraint","name":"check_constraint","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expression","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"CheckConstraint","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Constraint","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIENIRUNLIGNvbnN0cmFpbnQuCiAqCiAqIEBwYXJhbSBzdHJpbmcgJGV4cHJlc3Npb24gU1FMIGV4cHJlc3Npb24gdGhhdCBtdXN0IGV2YWx1YXRlIHRvIHRydWUKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2273,"slug":"create","name":"create","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"CreateFactory","namespace":"Flow\\PostgreSql\\QueryBuilder\\Factory","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGZhY3RvcnkgZm9yIGJ1aWxkaW5nIENSRUFURSBzdGF0ZW1lbnRzLgogKgogKiBQcm92aWRlcyBhIHVuaWZpZWQgZW50cnkgcG9pbnQgZm9yIGFsbCBDUkVBVEUgb3BlcmF0aW9uczoKICogLSBjcmVhdGUoKS0+dGFibGUoKSAtIENSRUFURSBUQUJMRQogKiAtIGNyZWF0ZSgpLT50YWJsZUFzKCkgLSBDUkVBVEUgVEFCTEUgQVMKICogLSBjcmVhdGUoKS0+aW5kZXgoKSAtIENSRUFURSBJTkRFWAogKiAtIGNyZWF0ZSgpLT52aWV3KCkgLSBDUkVBVEUgVklFVwogKiAtIGNyZWF0ZSgpLT5tYXRlcmlhbGl6ZWRWaWV3KCkgLSBDUkVBVEUgTUFURVJJQUxJWkVEIFZJRVcKICogLSBjcmVhdGUoKS0+c2VxdWVuY2UoKSAtIENSRUFURSBTRVFVRU5DRQogKiAtIGNyZWF0ZSgpLT5zY2hlbWEoKSAtIENSRUFURSBTQ0hFTUEKICogLSBjcmVhdGUoKS0+cm9sZSgpIC0gQ1JFQVRFIFJPTEUKICogLSBjcmVhdGUoKS0+ZnVuY3Rpb24oKSAtIENSRUFURSBGVU5DVElPTgogKiAtIGNyZWF0ZSgpLT5wcm9jZWR1cmUoKSAtIENSRUFURSBQUk9DRURVUkUKICogLSBjcmVhdGUoKS0+dHJpZ2dlcigpIC0gQ1JFQVRFIFRSSUdHRVIKICogLSBjcmVhdGUoKS0+cnVsZSgpIC0gQ1JFQVRFIFJVTEUKICogLSBjcmVhdGUoKS0+ZXh0ZW5zaW9uKCkgLSBDUkVBVEUgRVhURU5TSU9OCiAqIC0gY3JlYXRlKCktPmNvbXBvc2l0ZVR5cGUoKSAtIENSRUFURSBUWVBFIChjb21wb3NpdGUpCiAqIC0gY3JlYXRlKCktPmVudW1UeXBlKCkgLSBDUkVBVEUgVFlQRSAoZW51bSkKICogLSBjcmVhdGUoKS0+cmFuZ2VUeXBlKCkgLSBDUkVBVEUgVFlQRSAocmFuZ2UpCiAqIC0gY3JlYXRlKCktPmRvbWFpbigpIC0gQ1JFQVRFIERPTUFJTgogKgogKiBFeGFtcGxlOiBjcmVhdGUoKS0+dGFibGUoJ3VzZXJzJyktPmNvbHVtbnMoY29sX2RlZignaWQnLCBkYXRhX3R5cGVfc2VyaWFsKCkpKQogKiBFeGFtcGxlOiBjcmVhdGUoKS0+aW5kZXgoJ2lkeF9lbWFpbCcpLT5vbigndXNlcnMnKS0+Y29sdW1ucygnZW1haWwnKQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2302,"slug":"drop","name":"drop","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"DropFactory","namespace":"Flow\\PostgreSql\\QueryBuilder\\Factory","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGZhY3RvcnkgZm9yIGJ1aWxkaW5nIERST1Agc3RhdGVtZW50cy4KICoKICogUHJvdmlkZXMgYSB1bmlmaWVkIGVudHJ5IHBvaW50IGZvciBhbGwgRFJPUCBvcGVyYXRpb25zOgogKiAtIGRyb3AoKS0+dGFibGUoKSAtIERST1AgVEFCTEUKICogLSBkcm9wKCktPmluZGV4KCkgLSBEUk9QIElOREVYCiAqIC0gZHJvcCgpLT52aWV3KCkgLSBEUk9QIFZJRVcKICogLSBkcm9wKCktPm1hdGVyaWFsaXplZFZpZXcoKSAtIERST1AgTUFURVJJQUxJWkVEIFZJRVcKICogLSBkcm9wKCktPnNlcXVlbmNlKCkgLSBEUk9QIFNFUVVFTkNFCiAqIC0gZHJvcCgpLT5zY2hlbWEoKSAtIERST1AgU0NIRU1BCiAqIC0gZHJvcCgpLT5yb2xlKCkgLSBEUk9QIFJPTEUKICogLSBkcm9wKCktPmZ1bmN0aW9uKCkgLSBEUk9QIEZVTkNUSU9OCiAqIC0gZHJvcCgpLT5wcm9jZWR1cmUoKSAtIERST1AgUFJPQ0VEVVJFCiAqIC0gZHJvcCgpLT50cmlnZ2VyKCkgLSBEUk9QIFRSSUdHRVIKICogLSBkcm9wKCktPnJ1bGUoKSAtIERST1AgUlVMRQogKiAtIGRyb3AoKS0+ZXh0ZW5zaW9uKCkgLSBEUk9QIEVYVEVOU0lPTgogKiAtIGRyb3AoKS0+dHlwZSgpIC0gRFJPUCBUWVBFCiAqIC0gZHJvcCgpLT5kb21haW4oKSAtIERST1AgRE9NQUlOCiAqIC0gZHJvcCgpLT5vd25lZCgpIC0gRFJPUCBPV05FRAogKgogKiBFeGFtcGxlOiBkcm9wKCktPnRhYmxlKCd1c2VycycsICdvcmRlcnMnKS0+aWZFeGlzdHMoKS0+Y2FzY2FkZSgpCiAqIEV4YW1wbGU6IGRyb3AoKS0+aW5kZXgoJ2lkeF9lbWFpbCcpLT5pZkV4aXN0cygpCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2336,"slug":"alter","name":"alter","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"AlterFactory","namespace":"Flow\\PostgreSql\\QueryBuilder\\Factory","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGZhY3RvcnkgZm9yIGJ1aWxkaW5nIEFMVEVSIHN0YXRlbWVudHMuCiAqCiAqIFByb3ZpZGVzIGEgdW5pZmllZCBlbnRyeSBwb2ludCBmb3IgYWxsIEFMVEVSIG9wZXJhdGlvbnM6CiAqIC0gYWx0ZXIoKS0+dGFibGUoKSAtIEFMVEVSIFRBQkxFCiAqIC0gYWx0ZXIoKS0+aW5kZXgoKSAtIEFMVEVSIElOREVYCiAqIC0gYWx0ZXIoKS0+dmlldygpIC0gQUxURVIgVklFVwogKiAtIGFsdGVyKCktPm1hdGVyaWFsaXplZFZpZXcoKSAtIEFMVEVSIE1BVEVSSUFMSVpFRCBWSUVXCiAqIC0gYWx0ZXIoKS0+c2VxdWVuY2UoKSAtIEFMVEVSIFNFUVVFTkNFCiAqIC0gYWx0ZXIoKS0+c2NoZW1hKCkgLSBBTFRFUiBTQ0hFTUEKICogLSBhbHRlcigpLT5yb2xlKCkgLSBBTFRFUiBST0xFCiAqIC0gYWx0ZXIoKS0+ZnVuY3Rpb24oKSAtIEFMVEVSIEZVTkNUSU9OCiAqIC0gYWx0ZXIoKS0+cHJvY2VkdXJlKCkgLSBBTFRFUiBQUk9DRURVUkUKICogLSBhbHRlcigpLT50cmlnZ2VyKCkgLSBBTFRFUiBUUklHR0VSCiAqIC0gYWx0ZXIoKS0+ZXh0ZW5zaW9uKCkgLSBBTFRFUiBFWFRFTlNJT04KICogLSBhbHRlcigpLT5lbnVtVHlwZSgpIC0gQUxURVIgVFlQRSAoZW51bSkKICogLSBhbHRlcigpLT5kb21haW4oKSAtIEFMVEVSIERPTUFJTgogKgogKiBSZW5hbWUgb3BlcmF0aW9ucyBhcmUgYWxzbyB1bmRlciBhbHRlcigpOgogKiAtIGFsdGVyKCktPmluZGV4KCdvbGQnKS0+cmVuYW1lVG8oJ25ldycpCiAqIC0gYWx0ZXIoKS0+dmlldygnb2xkJyktPnJlbmFtZVRvKCduZXcnKQogKiAtIGFsdGVyKCktPnNjaGVtYSgnb2xkJyktPnJlbmFtZVRvKCduZXcnKQogKiAtIGFsdGVyKCktPnJvbGUoJ29sZCcpLT5yZW5hbWVUbygnbmV3JykKICogLSBhbHRlcigpLT50cmlnZ2VyKCdvbGQnKS0+b24oJ3RhYmxlJyktPnJlbmFtZVRvKCduZXcnKQogKgogKiBFeGFtcGxlOiBhbHRlcigpLT50YWJsZSgndXNlcnMnKS0+YWRkQ29sdW1uKGNvbF9kZWYoJ2VtYWlsJywgZGF0YV90eXBlX3RleHQoKSkpCiAqIEV4YW1wbGU6IGFsdGVyKCktPnNlcXVlbmNlKCd1c2VyX2lkX3NlcScpLT5yZXN0YXJ0KDEwMDApCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2347,"slug":"truncate-table","name":"truncate_table","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"tables","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"TruncateFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Truncate","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFRSVU5DQVRFIFRBQkxFIGJ1aWxkZXIuCiAqCiAqIEBwYXJhbSBzdHJpbmcgLi4uJHRhYmxlcyBUYWJsZSBuYW1lcyB0byB0cnVuY2F0ZQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2365,"slug":"refresh-materialized-view","name":"refresh_materialized_view","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"schema","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"RefreshMatViewOptionsStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\View\\RefreshMaterializedView","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFJFRlJFU0ggTUFURVJJQUxJWkVEIFZJRVcgYnVpbGRlci4KICoKICogRXhhbXBsZTogcmVmcmVzaF9tYXRlcmlhbGl6ZWRfdmlldygndXNlcl9zdGF0cycpCiAqIFByb2R1Y2VzOiBSRUZSRVNIIE1BVEVSSUFMSVpFRCBWSUVXIHVzZXJfc3RhdHMKICoKICogRXhhbXBsZTogcmVmcmVzaF9tYXRlcmlhbGl6ZWRfdmlldygndXNlcl9zdGF0cycpLT5jb25jdXJyZW50bHkoKS0+d2l0aERhdGEoKQogKiBQcm9kdWNlczogUkVGUkVTSCBNQVRFUklBTElaRUQgVklFVyBDT05DVVJSRU5UTFkgdXNlcl9zdGF0cyBXSVRIIERBVEEKICoKICogQHBhcmFtIHN0cmluZyAkbmFtZSBWaWV3IG5hbWUgKG1heSBpbmNsdWRlIHNjaGVtYSBhcyAic2NoZW1hLnZpZXciKQogKiBAcGFyYW0gbnVsbHxzdHJpbmcgJHNjaGVtYSBTY2hlbWEgbmFtZSAob3B0aW9uYWwsIG92ZXJyaWRlcyBwYXJzZWQgc2NoZW1hKQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2374,"slug":"ref-action-cascade","name":"ref_action_cascade","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"ReferentialAction","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEdldCBhIENBU0NBREUgcmVmZXJlbnRpYWwgYWN0aW9uLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2383,"slug":"ref-action-restrict","name":"ref_action_restrict","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"ReferentialAction","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEdldCBhIFJFU1RSSUNUIHJlZmVyZW50aWFsIGFjdGlvbi4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2392,"slug":"ref-action-set-null","name":"ref_action_set_null","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"ReferentialAction","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEdldCBhIFNFVCBOVUxMIHJlZmVyZW50aWFsIGFjdGlvbi4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2401,"slug":"ref-action-set-default","name":"ref_action_set_default","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"ReferentialAction","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEdldCBhIFNFVCBERUZBVUxUIHJlZmVyZW50aWFsIGFjdGlvbi4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2410,"slug":"ref-action-no-action","name":"ref_action_no_action","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"ReferentialAction","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEdldCBhIE5PIEFDVElPTiByZWZlcmVudGlhbCBhY3Rpb24uCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2425,"slug":"reindex-index","name":"reindex_index","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ReindexFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Index\\Reindex","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFN0YXJ0IGJ1aWxkaW5nIGEgUkVJTkRFWCBJTkRFWCBzdGF0ZW1lbnQuCiAqCiAqIFVzZSBjaGFpbmFibGUgbWV0aG9kczogLT5jb25jdXJyZW50bHkoKSwgLT52ZXJib3NlKCksIC0+dGFibGVzcGFjZSgpCiAqCiAqIEV4YW1wbGU6IHJlaW5kZXhfaW5kZXgoJ2lkeF91c2Vyc19lbWFpbCcpLT5jb25jdXJyZW50bHkoKQogKgogKiBAcGFyYW0gc3RyaW5nICRuYW1lIFRoZSBpbmRleCBuYW1lIChtYXkgaW5jbHVkZSBzY2hlbWE6IHNjaGVtYS5pbmRleCkKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2440,"slug":"reindex-table","name":"reindex_table","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ReindexFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Index\\Reindex","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFN0YXJ0IGJ1aWxkaW5nIGEgUkVJTkRFWCBUQUJMRSBzdGF0ZW1lbnQuCiAqCiAqIFVzZSBjaGFpbmFibGUgbWV0aG9kczogLT5jb25jdXJyZW50bHkoKSwgLT52ZXJib3NlKCksIC0+dGFibGVzcGFjZSgpCiAqCiAqIEV4YW1wbGU6IHJlaW5kZXhfdGFibGUoJ3VzZXJzJyktPmNvbmN1cnJlbnRseSgpCiAqCiAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgVGhlIHRhYmxlIG5hbWUgKG1heSBpbmNsdWRlIHNjaGVtYTogc2NoZW1hLnRhYmxlKQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2455,"slug":"reindex-schema","name":"reindex_schema","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ReindexFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Index\\Reindex","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFN0YXJ0IGJ1aWxkaW5nIGEgUkVJTkRFWCBTQ0hFTUEgc3RhdGVtZW50LgogKgogKiBVc2UgY2hhaW5hYmxlIG1ldGhvZHM6IC0+Y29uY3VycmVudGx5KCksIC0+dmVyYm9zZSgpLCAtPnRhYmxlc3BhY2UoKQogKgogKiBFeGFtcGxlOiByZWluZGV4X3NjaGVtYSgncHVibGljJyktPmNvbmN1cnJlbnRseSgpCiAqCiAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgVGhlIHNjaGVtYSBuYW1lCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2470,"slug":"reindex-database","name":"reindex_database","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ReindexFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Index\\Reindex","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFN0YXJ0IGJ1aWxkaW5nIGEgUkVJTkRFWCBEQVRBQkFTRSBzdGF0ZW1lbnQuCiAqCiAqIFVzZSBjaGFpbmFibGUgbWV0aG9kczogLT5jb25jdXJyZW50bHkoKSwgLT52ZXJib3NlKCksIC0+dGFibGVzcGFjZSgpCiAqCiAqIEV4YW1wbGU6IHJlaW5kZXhfZGF0YWJhc2UoJ215ZGInKS0+Y29uY3VycmVudGx5KCkKICoKICogQHBhcmFtIHN0cmluZyAkbmFtZSBUaGUgZGF0YWJhc2UgbmFtZQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2485,"slug":"index-col","name":"index_col","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"IndexColumn","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Index","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBpbmRleCBjb2x1bW4gc3BlY2lmaWNhdGlvbi4KICoKICogVXNlIGNoYWluYWJsZSBtZXRob2RzOiAtPmFzYygpLCAtPmRlc2MoKSwgLT5udWxsc0ZpcnN0KCksIC0+bnVsbHNMYXN0KCksIC0+b3BjbGFzcygpLCAtPmNvbGxhdGUoKQogKgogKiBFeGFtcGxlOiBpbmRleF9jb2woJ2VtYWlsJyktPmRlc2MoKS0+bnVsbHNMYXN0KCkKICoKICogQHBhcmFtIHN0cmluZyAkbmFtZSBUaGUgY29sdW1uIG5hbWUKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2500,"slug":"index-expr","name":"index_expr","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"expression","type":[{"name":"Expression","namespace":"Flow\\PostgreSql\\QueryBuilder\\Expression","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"IndexColumn","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Index","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"SCHEMA"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBpbmRleCBjb2x1bW4gc3BlY2lmaWNhdGlvbiBmcm9tIGFuIGV4cHJlc3Npb24uCiAqCiAqIFVzZSBjaGFpbmFibGUgbWV0aG9kczogLT5hc2MoKSwgLT5kZXNjKCksIC0+bnVsbHNGaXJzdCgpLCAtPm51bGxzTGFzdCgpLCAtPm9wY2xhc3MoKSwgLT5jb2xsYXRlKCkKICoKICogRXhhbXBsZTogaW5kZXhfZXhwcihmbl9jYWxsKCdsb3dlcicsIGNvbCgnZW1haWwnKSkpLT5kZXNjKCkKICoKICogQHBhcmFtIEV4cHJlc3Npb24gJGV4cHJlc3Npb24gVGhlIGV4cHJlc3Npb24gdG8gaW5kZXgKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2509,"slug":"index-method-btree","name":"index_method_btree","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"IndexMethod","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Index","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEdldCB0aGUgQlRSRUUgaW5kZXggbWV0aG9kLgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2518,"slug":"index-method-hash","name":"index_method_hash","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"IndexMethod","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Index","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEdldCB0aGUgSEFTSCBpbmRleCBtZXRob2QuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2527,"slug":"index-method-gist","name":"index_method_gist","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"IndexMethod","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Index","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEdldCB0aGUgR0lTVCBpbmRleCBtZXRob2QuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2536,"slug":"index-method-spgist","name":"index_method_spgist","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"IndexMethod","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Index","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEdldCB0aGUgU1BHSVNUIGluZGV4IG1ldGhvZC4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2545,"slug":"index-method-gin","name":"index_method_gin","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"IndexMethod","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Index","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEdldCB0aGUgR0lOIGluZGV4IG1ldGhvZC4KICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2554,"slug":"index-method-brin","name":"index_method_brin","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"IndexMethod","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Index","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEdldCB0aGUgQlJJTiBpbmRleCBtZXRob2QuCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2566,"slug":"vacuum","name":"vacuum","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"VacuumFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Utility","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFZBQ1VVTSBidWlsZGVyLgogKgogKiBFeGFtcGxlOiB2YWN1dW0oKS0+dGFibGUoJ3VzZXJzJykKICogUHJvZHVjZXM6IFZBQ1VVTSB1c2VycwogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2578,"slug":"analyze","name":"analyze","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"AnalyzeFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Utility","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBBTkFMWVpFIGJ1aWxkZXIuCiAqCiAqIEV4YW1wbGU6IGFuYWx5emUoKS0+dGFibGUoJ3VzZXJzJykKICogUHJvZHVjZXM6IEFOQUxZWkUgdXNlcnMKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2592,"slug":"explain","name":"explain","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"query","type":[{"name":"SelectFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Select","is_nullable":false,"is_variadic":false},{"name":"InsertBuilder","namespace":"Flow\\PostgreSql\\QueryBuilder\\Insert","is_nullable":false,"is_variadic":false},{"name":"UpdateBuilder","namespace":"Flow\\PostgreSql\\QueryBuilder\\Update","is_nullable":false,"is_variadic":false},{"name":"DeleteBuilder","namespace":"Flow\\PostgreSql\\QueryBuilder\\Delete","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ExplainFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Utility","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBFWFBMQUlOIGJ1aWxkZXIgZm9yIGEgcXVlcnkuCiAqCiAqIEV4YW1wbGU6IGV4cGxhaW4oc2VsZWN0KCktPmZyb20oJ3VzZXJzJykpCiAqIFByb2R1Y2VzOiBFWFBMQUlOIFNFTEVDVCAqIEZST00gdXNlcnMKICoKICogQHBhcmFtIERlbGV0ZUJ1aWxkZXJ8SW5zZXJ0QnVpbGRlcnxTZWxlY3RGaW5hbFN0ZXB8VXBkYXRlQnVpbGRlciAkcXVlcnkgUXVlcnkgdG8gZXhwbGFpbgogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2604,"slug":"lock-table","name":"lock_table","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"tables","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"LockFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Utility","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIExPQ0sgVEFCTEUgYnVpbGRlci4KICoKICogRXhhbXBsZTogbG9ja190YWJsZSgndXNlcnMnLCAnb3JkZXJzJyktPmFjY2Vzc0V4Y2x1c2l2ZSgpCiAqIFByb2R1Y2VzOiBMT0NLIFRBQkxFIHVzZXJzLCBvcmRlcnMgSU4gQUNDRVNTIEVYQ0xVU0lWRSBNT0RFCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2619,"slug":"comment","name":"comment","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"target","type":[{"name":"CommentTarget","namespace":"Flow\\PostgreSql\\QueryBuilder\\Utility","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"CommentFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Utility","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIENPTU1FTlQgT04gYnVpbGRlci4KICoKICogRXhhbXBsZTogY29tbWVudChDb21tZW50VGFyZ2V0OjpUQUJMRSwgJ3VzZXJzJyktPmlzKCdVc2VyIGFjY291bnRzIHRhYmxlJykKICogUHJvZHVjZXM6IENPTU1FTlQgT04gVEFCTEUgdXNlcnMgSVMgJ1VzZXIgYWNjb3VudHMgdGFibGUnCiAqCiAqIEBwYXJhbSBDb21tZW50VGFyZ2V0ICR0YXJnZXQgVGFyZ2V0IHR5cGUgKFRBQkxFLCBDT0xVTU4sIElOREVYLCBldGMuKQogKiBAcGFyYW0gc3RyaW5nICRuYW1lIFRhcmdldCBuYW1lICh1c2UgJ3RhYmxlLmNvbHVtbicgZm9yIENPTFVNTiB0YXJnZXRzKQogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2631,"slug":"cluster","name":"cluster","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"ClusterFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Utility","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIENMVVNURVIgYnVpbGRlci4KICoKICogRXhhbXBsZTogY2x1c3RlcigpLT50YWJsZSgndXNlcnMnKS0+dXNpbmcoJ2lkeF91c2Vyc19wa2V5JykKICogUHJvZHVjZXM6IENMVVNURVIgdXNlcnMgVVNJTkcgaWR4X3VzZXJzX3BrZXkKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2645,"slug":"discard","name":"discard","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"type","type":[{"name":"DiscardType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Utility","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"DiscardFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Utility","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIERJU0NBUkQgYnVpbGRlci4KICoKICogRXhhbXBsZTogZGlzY2FyZChEaXNjYXJkVHlwZTo6QUxMKQogKiBQcm9kdWNlczogRElTQ0FSRCBBTEwKICoKICogQHBhcmFtIERpc2NhcmRUeXBlICR0eXBlIFR5cGUgb2YgcmVzb3VyY2VzIHRvIGRpc2NhcmQgKEFMTCwgUExBTlMsIFNFUVVFTkNFUywgVEVNUCkKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2664,"slug":"grant","name":"grant","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"privileges","type":[{"name":"TablePrivilege","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Grant","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"GrantOnStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Grant","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEdSQU5UIHByaXZpbGVnZXMgYnVpbGRlci4KICoKICogRXhhbXBsZTogZ3JhbnQoVGFibGVQcml2aWxlZ2U6OlNFTEVDVCktPm9uVGFibGUoJ3VzZXJzJyktPnRvKCdhcHBfdXNlcicpCiAqIFByb2R1Y2VzOiBHUkFOVCBTRUxFQ1QgT04gdXNlcnMgVE8gYXBwX3VzZXIKICoKICogRXhhbXBsZTogZ3JhbnQoVGFibGVQcml2aWxlZ2U6OkFMTCktPm9uQWxsVGFibGVzSW5TY2hlbWEoJ3B1YmxpYycpLT50bygnYWRtaW4nKQogKiBQcm9kdWNlczogR1JBTlQgQUxMIE9OIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1YmxpYyBUTyBhZG1pbgogKgogKiBAcGFyYW0gc3RyaW5nfFRhYmxlUHJpdmlsZWdlIC4uLiRwcml2aWxlZ2VzIFRoZSBwcml2aWxlZ2VzIHRvIGdyYW50CiAqCiAqIEByZXR1cm4gR3JhbnRPblN0ZXAgQnVpbGRlciBmb3IgZ3JhbnQgb3B0aW9ucwogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2683,"slug":"grant-role","name":"grant_role","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"roles","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"GrantRoleToStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Grant","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEdSQU5UIHJvbGUgYnVpbGRlci4KICoKICogRXhhbXBsZTogZ3JhbnRfcm9sZSgnYWRtaW4nKS0+dG8oJ3VzZXIxJykKICogUHJvZHVjZXM6IEdSQU5UIGFkbWluIFRPIHVzZXIxCiAqCiAqIEV4YW1wbGU6IGdyYW50X3JvbGUoJ2FkbWluJywgJ2RldmVsb3BlcicpLT50bygndXNlcjEnKS0+d2l0aEFkbWluT3B0aW9uKCkKICogUHJvZHVjZXM6IEdSQU5UIGFkbWluLCBkZXZlbG9wZXIgVE8gdXNlcjEgV0lUSCBBRE1JTiBPUFRJT04KICoKICogQHBhcmFtIHN0cmluZyAuLi4kcm9sZXMgVGhlIHJvbGVzIHRvIGdyYW50CiAqCiAqIEByZXR1cm4gR3JhbnRSb2xlVG9TdGVwIEJ1aWxkZXIgZm9yIGdyYW50IHJvbGUgb3B0aW9ucwogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2702,"slug":"revoke","name":"revoke","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"privileges","type":[{"name":"TablePrivilege","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Grant","is_nullable":false,"is_variadic":false},{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"RevokeOnStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Grant","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFJFVk9LRSBwcml2aWxlZ2VzIGJ1aWxkZXIuCiAqCiAqIEV4YW1wbGU6IHJldm9rZShUYWJsZVByaXZpbGVnZTo6U0VMRUNUKS0+b25UYWJsZSgndXNlcnMnKS0+ZnJvbSgnYXBwX3VzZXInKQogKiBQcm9kdWNlczogUkVWT0tFIFNFTEVDVCBPTiB1c2VycyBGUk9NIGFwcF91c2VyCiAqCiAqIEV4YW1wbGU6IHJldm9rZShUYWJsZVByaXZpbGVnZTo6QUxMKS0+b25UYWJsZSgndXNlcnMnKS0+ZnJvbSgnYXBwX3VzZXInKS0+Y2FzY2FkZSgpCiAqIFByb2R1Y2VzOiBSRVZPS0UgQUxMIE9OIHVzZXJzIEZST00gYXBwX3VzZXIgQ0FTQ0FERQogKgogKiBAcGFyYW0gc3RyaW5nfFRhYmxlUHJpdmlsZWdlIC4uLiRwcml2aWxlZ2VzIFRoZSBwcml2aWxlZ2VzIHRvIHJldm9rZQogKgogKiBAcmV0dXJuIFJldm9rZU9uU3RlcCBCdWlsZGVyIGZvciByZXZva2Ugb3B0aW9ucwogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2721,"slug":"revoke-role","name":"revoke_role","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"roles","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"RevokeRoleFromStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Grant","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFJFVk9LRSByb2xlIGJ1aWxkZXIuCiAqCiAqIEV4YW1wbGU6IHJldm9rZV9yb2xlKCdhZG1pbicpLT5mcm9tKCd1c2VyMScpCiAqIFByb2R1Y2VzOiBSRVZPS0UgYWRtaW4gRlJPTSB1c2VyMQogKgogKiBFeGFtcGxlOiByZXZva2Vfcm9sZSgnYWRtaW4nKS0+ZnJvbSgndXNlcjEnKS0+Y2FzY2FkZSgpCiAqIFByb2R1Y2VzOiBSRVZPS0UgYWRtaW4gRlJPTSB1c2VyMSBDQVNDQURFCiAqCiAqIEBwYXJhbSBzdHJpbmcgLi4uJHJvbGVzIFRoZSByb2xlcyB0byByZXZva2UKICoKICogQHJldHVybiBSZXZva2VSb2xlRnJvbVN0ZXAgQnVpbGRlciBmb3IgcmV2b2tlIHJvbGUgb3B0aW9ucwogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2737,"slug":"set-role","name":"set_role","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"role","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"SetRoleFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Session","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFNFVCBST0xFIGJ1aWxkZXIuCiAqCiAqIEV4YW1wbGU6IHNldF9yb2xlKCdhZG1pbicpCiAqIFByb2R1Y2VzOiBTRVQgUk9MRSBhZG1pbgogKgogKiBAcGFyYW0gc3RyaW5nICRyb2xlIFRoZSByb2xlIHRvIHNldAogKgogKiBAcmV0dXJuIFNldFJvbGVGaW5hbFN0ZXAgQnVpbGRlciBmb3Igc2V0IHJvbGUKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2751,"slug":"reset-role","name":"reset_role","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"ResetRoleFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Session","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFJFU0VUIFJPTEUgYnVpbGRlci4KICoKICogRXhhbXBsZTogcmVzZXRfcm9sZSgpCiAqIFByb2R1Y2VzOiBSRVNFVCBST0xFCiAqCiAqIEByZXR1cm4gUmVzZXRSb2xlRmluYWxTdGVwIEJ1aWxkZXIgZm9yIHJlc2V0IHJvbGUKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2767,"slug":"reassign-owned","name":"reassign_owned","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"roles","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"ReassignOwnedToStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Ownership","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFJFQVNTSUdOIE9XTkVEIGJ1aWxkZXIuCiAqCiAqIEV4YW1wbGU6IHJlYXNzaWduX293bmVkKCdvbGRfcm9sZScpLT50bygnbmV3X3JvbGUnKQogKiBQcm9kdWNlczogUkVBU1NJR04gT1dORUQgQlkgb2xkX3JvbGUgVE8gbmV3X3JvbGUKICoKICogQHBhcmFtIHN0cmluZyAuLi4kcm9sZXMgVGhlIHJvbGVzIHdob3NlIG93bmVkIG9iamVjdHMgc2hvdWxkIGJlIHJlYXNzaWduZWQKICoKICogQHJldHVybiBSZWFzc2lnbk93bmVkVG9TdGVwIEJ1aWxkZXIgZm9yIHJlYXNzaWduIG93bmVkIG9wdGlvbnMKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2786,"slug":"drop-owned","name":"drop_owned","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"roles","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"DropOwnedFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Ownership","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIERST1AgT1dORUQgYnVpbGRlci4KICoKICogRXhhbXBsZTogZHJvcF9vd25lZCgncm9sZTEnKQogKiBQcm9kdWNlczogRFJPUCBPV05FRCBCWSByb2xlMQogKgogKiBFeGFtcGxlOiBkcm9wX293bmVkKCdyb2xlMScsICdyb2xlMicpLT5jYXNjYWRlKCkKICogUHJvZHVjZXM6IERST1AgT1dORUQgQlkgcm9sZTEsIHJvbGUyIENBU0NBREUKICoKICogQHBhcmFtIHN0cmluZyAuLi4kcm9sZXMgVGhlIHJvbGVzIHdob3NlIG93bmVkIG9iamVjdHMgc2hvdWxkIGJlIGRyb3BwZWQKICoKICogQHJldHVybiBEcm9wT3duZWRGaW5hbFN0ZXAgQnVpbGRlciBmb3IgZHJvcCBvd25lZCBvcHRpb25zCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2804,"slug":"func-arg","name":"func_arg","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"type","type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"FunctionArgument","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZXMgYSBuZXcgZnVuY3Rpb24gYXJndW1lbnQgZm9yIHVzZSBpbiBmdW5jdGlvbi9wcm9jZWR1cmUgZGVmaW5pdGlvbnMuCiAqCiAqIEV4YW1wbGU6IGZ1bmNfYXJnKGRhdGFfdHlwZV9pbnRlZ2VyKCkpCiAqIEV4YW1wbGU6IGZ1bmNfYXJnKGRhdGFfdHlwZV90ZXh0KCkpLT5uYW1lZCgndXNlcm5hbWUnKQogKiBFeGFtcGxlOiBmdW5jX2FyZyhkYXRhX3R5cGVfaW50ZWdlcigpKS0+bmFtZWQoJ2NvdW50JyktPmRlZmF1bHQoJzAnKQogKiBFeGFtcGxlOiBmdW5jX2FyZyhkYXRhX3R5cGVfdGV4dCgpKS0+b3V0KCkKICoKICogQHBhcmFtIERhdGFUeXBlICR0eXBlIFRoZSBQb3N0Z3JlU1FMIGRhdGEgdHlwZSBmb3IgdGhlIGFyZ3VtZW50CiAqCiAqIEByZXR1cm4gRnVuY3Rpb25Bcmd1bWVudCBCdWlsZGVyIGZvciBmdW5jdGlvbiBhcmd1bWVudCBvcHRpb25zCiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2823,"slug":"call","name":"call","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"procedure","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"CallFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZXMgYSBDQUxMIHN0YXRlbWVudCBidWlsZGVyIGZvciBpbnZva2luZyBhIHByb2NlZHVyZS4KICoKICogRXhhbXBsZTogY2FsbCgndXBkYXRlX3N0YXRzJyktPndpdGgoMTIzKQogKiBQcm9kdWNlczogQ0FMTCB1cGRhdGVfc3RhdHMoMTIzKQogKgogKiBFeGFtcGxlOiBjYWxsKCdwcm9jZXNzX2RhdGEnKS0+d2l0aCgndGVzdCcsIDQyLCB0cnVlKQogKiBQcm9kdWNlczogQ0FMTCBwcm9jZXNzX2RhdGEoJ3Rlc3QnLCA0MiwgdHJ1ZSkKICoKICogQHBhcmFtIHN0cmluZyAkcHJvY2VkdXJlIFRoZSBuYW1lIG9mIHRoZSBwcm9jZWR1cmUgdG8gY2FsbAogKgogKiBAcmV0dXJuIENhbGxGaW5hbFN0ZXAgQnVpbGRlciBmb3IgY2FsbCBzdGF0ZW1lbnQgb3B0aW9ucwogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2842,"slug":"do-block","name":"do_block","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"code","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"DoFinalStep","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Function","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZXMgYSBETyBzdGF0ZW1lbnQgYnVpbGRlciBmb3IgZXhlY3V0aW5nIGFuIGFub255bW91cyBjb2RlIGJsb2NrLgogKgogKiBFeGFtcGxlOiBkb19ibG9jaygnQkVHSU4gUkFJU0UgTk9USUNFICQkSGVsbG8gV29ybGQkJDsgRU5EOycpCiAqIFByb2R1Y2VzOiBETyAkJCBCRUdJTiBSQUlTRSBOT1RJQ0UgJCRIZWxsbyBXb3JsZCQkOyBFTkQ7ICQkIExBTkdVQUdFIHBscGdzcWwKICoKICogRXhhbXBsZTogZG9fYmxvY2soJ1NFTEVDVCAxJyktPmxhbmd1YWdlKCdzcWwnKQogKiBQcm9kdWNlczogRE8gJCQgU0VMRUNUIDEgJCQgTEFOR1VBR0Ugc3FsCiAqCiAqIEBwYXJhbSBzdHJpbmcgJGNvZGUgVGhlIGFub255bW91cyBjb2RlIGJsb2NrIHRvIGV4ZWN1dGUKICoKICogQHJldHVybiBEb0ZpbmFsU3RlcCBCdWlsZGVyIGZvciBETyBzdGF0ZW1lbnQgb3B0aW9ucwogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2862,"slug":"type-attr","name":"type_attr","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"type","type":[{"name":"DataType","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"TypeAttribute","namespace":"Flow\\PostgreSql\\QueryBuilder\\Schema\\Type","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZXMgYSB0eXBlIGF0dHJpYnV0ZSBmb3IgY29tcG9zaXRlIHR5cGVzLgogKgogKiBFeGFtcGxlOiB0eXBlX2F0dHIoJ25hbWUnLCBkYXRhX3R5cGVfdGV4dCgpKQogKiBQcm9kdWNlczogbmFtZSB0ZXh0CiAqCiAqIEV4YW1wbGU6IHR5cGVfYXR0cignZGVzY3JpcHRpb24nLCBkYXRhX3R5cGVfdGV4dCgpKS0+Y29sbGF0ZSgnZW5fVVMnKQogKiBQcm9kdWNlczogZGVzY3JpcHRpb24gdGV4dCBDT0xMQVRFICJlbl9VUyIKICoKICogQHBhcmFtIHN0cmluZyAkbmFtZSBUaGUgYXR0cmlidXRlIG5hbWUKICogQHBhcmFtIERhdGFUeXBlICR0eXBlIFRoZSBhdHRyaWJ1dGUgdHlwZQogKgogKiBAcmV0dXJuIFR5cGVBdHRyaWJ1dGUgVHlwZSBhdHRyaWJ1dGUgdmFsdWUgb2JqZWN0CiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2879,"slug":"pgsql-connection","name":"pgsql_connection","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"connectionString","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ConnectionParameters","namespace":"Flow\\PostgreSql\\Client","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBjb25uZWN0aW9uIHBhcmFtZXRlcnMgZnJvbSBhIGNvbm5lY3Rpb24gc3RyaW5nLgogKgogKiBBY2NlcHRzIGxpYnBxLXN0eWxlIGNvbm5lY3Rpb24gc3RyaW5nczoKICogLSBLZXktdmFsdWUgZm9ybWF0OiAiaG9zdD1sb2NhbGhvc3QgcG9ydD01NDMyIGRibmFtZT1teWRiIHVzZXI9bXl1c2VyIHBhc3N3b3JkPXNlY3JldCIKICogLSBVUkkgZm9ybWF0OiAicG9zdGdyZXNxbDovL3VzZXI6cGFzc3dvcmRAbG9jYWxob3N0OjU0MzIvZGJuYW1lIgogKgogKiBAZXhhbXBsZQogKiAkcGFyYW1zID0gcGdzcWxfY29ubmVjdGlvbignaG9zdD1sb2NhbGhvc3QgZGJuYW1lPW15ZGInKTsKICogJHBhcmFtcyA9IHBnc3FsX2Nvbm5lY3Rpb24oJ3Bvc3RncmVzcWw6Ly91c2VyOnBhc3NAbG9jYWxob3N0L215ZGInKTsKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2901,"slug":"pgsql-connection-dsn","name":"pgsql_connection_dsn","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"dsn","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ConnectionParameters","namespace":"Flow\\PostgreSql\\Client","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBjb25uZWN0aW9uIHBhcmFtZXRlcnMgZnJvbSBhIERTTiBzdHJpbmcuCiAqCiAqIFBhcnNlcyBzdGFuZGFyZCBQb3N0Z3JlU1FMIERTTiBmb3JtYXQgY29tbW9ubHkgdXNlZCBpbiBlbnZpcm9ubWVudCB2YXJpYWJsZXMKICogKGUuZy4sIERBVEFCQVNFX1VSTCkuIFN1cHBvcnRzIHBvc3RncmVzOi8vLCBwb3N0Z3Jlc3FsOi8vLCBhbmQgcGdzcWw6Ly8gc2NoZW1lcy4KICoKICogQHBhcmFtIHN0cmluZyAkZHNuIERTTiBzdHJpbmcgaW4gZm9ybWF0OiBwb3N0Z3JlczovL3VzZXI6cGFzc3dvcmRAaG9zdDpwb3J0L2RhdGFiYXNlP29wdGlvbnMKICoKICogQHRocm93cyBDbGllbnRcRHNuUGFyc2VyRXhjZXB0aW9uIElmIHRoZSBEU04gY2Fubm90IGJlIHBhcnNlZAogKgogKiBAZXhhbXBsZQogKiAkcGFyYW1zID0gcGdzcWxfY29ubmVjdGlvbl9kc24oJ3Bvc3RncmVzOi8vbXl1c2VyOnNlY3JldEBsb2NhbGhvc3Q6NTQzMi9teWRiJyk7CiAqICRwYXJhbXMgPSBwZ3NxbF9jb25uZWN0aW9uX2RzbigncG9zdGdyZXNxbDovL3VzZXI6cGFzc0BkYi5leGFtcGxlLmNvbS9hcHA\/c3NsbW9kZT1yZXF1aXJlJyk7CiAqICRwYXJhbXMgPSBwZ3NxbF9jb25uZWN0aW9uX2RzbigncGdzcWw6Ly91c2VyOnBhc3NAbG9jYWxob3N0L215ZGInKTsgLy8gU3ltZm9ueS9Eb2N0cmluZSBmb3JtYXQKICogJHBhcmFtcyA9IHBnc3FsX2Nvbm5lY3Rpb25fZHNuKGdldGVudignREFUQUJBU0VfVVJMJykpOwogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2928,"slug":"pgsql-connection-params","name":"pgsql_connection_params","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"database","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"host","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'localhost'"},{"name":"port","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"5432"},{"name":"user","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"password","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"options","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"ConnectionParameters","namespace":"Flow\\PostgreSql\\Client","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBjb25uZWN0aW9uIHBhcmFtZXRlcnMgZnJvbSBpbmRpdmlkdWFsIHZhbHVlcy4KICoKICogQWxsb3dzIHNwZWNpZnlpbmcgY29ubmVjdGlvbiBwYXJhbWV0ZXJzIGluZGl2aWR1YWxseSBmb3IgYmV0dGVyIHR5cGUgc2FmZXR5CiAqIGFuZCBJREUgc3VwcG9ydC4KICoKICogQHBhcmFtIHN0cmluZyAkZGF0YWJhc2UgRGF0YWJhc2UgbmFtZSAocmVxdWlyZWQpCiAqIEBwYXJhbSBzdHJpbmcgJGhvc3QgSG9zdG5hbWUgKGRlZmF1bHQ6IGxvY2FsaG9zdCkKICogQHBhcmFtIGludCAkcG9ydCBQb3J0IG51bWJlciAoZGVmYXVsdDogNTQzMikKICogQHBhcmFtIG51bGx8c3RyaW5nICR1c2VyIFVzZXJuYW1lIChvcHRpb25hbCkKICogQHBhcmFtIG51bGx8c3RyaW5nICRwYXNzd29yZCBQYXNzd29yZCAob3B0aW9uYWwpCiAqIEBwYXJhbSBhcnJheTxzdHJpbmcsIHN0cmluZz4gJG9wdGlvbnMgQWRkaXRpb25hbCBsaWJwcSBvcHRpb25zCiAqCiAqIEBleGFtcGxlCiAqICRwYXJhbXMgPSBwZ3NxbF9jb25uZWN0aW9uX3BhcmFtcygKICogICAgIGRhdGFiYXNlOiAnbXlkYicsCiAqICAgICBob3N0OiAnbG9jYWxob3N0JywKICogICAgIHVzZXI6ICdteXVzZXInLAogKiAgICAgcGFzc3dvcmQ6ICdzZWNyZXQnLAogKiApOwogKi8="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":2969,"slug":"pgsql-client","name":"pgsql_client","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"params","type":[{"name":"ConnectionParameters","namespace":"Flow\\PostgreSql\\Client","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"valueConverters","type":[{"name":"ValueConverters","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"mapper","type":[{"name":"RowMapper","namespace":"Flow\\PostgreSql\\Client","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Client","namespace":"Flow\\PostgreSql\\Client","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFBvc3RncmVTUUwgY2xpZW50IHVzaW5nIGV4dC1wZ3NxbC4KICoKICogVGhlIGNsaWVudCBjb25uZWN0cyBpbW1lZGlhdGVseSBhbmQgaXMgcmVhZHkgdG8gZXhlY3V0ZSBxdWVyaWVzLgogKiBGb3Igb2JqZWN0IG1hcHBpbmcsIHByb3ZpZGUgYSBSb3dNYXBwZXIgKHVzZSBwZ3NxbF9tYXBwZXIoKSBmb3IgdGhlIGRlZmF1bHQpLgogKgogKiBAcGFyYW0gQ2xpZW50XENvbm5lY3Rpb25QYXJhbWV0ZXJzICRwYXJhbXMgQ29ubmVjdGlvbiBwYXJhbWV0ZXJzCiAqIEBwYXJhbSBudWxsfFZhbHVlQ29udmVydGVycyAkdmFsdWVDb252ZXJ0ZXJzIEN1c3RvbSB0eXBlIGNvbnZlcnRlcnMgKG9wdGlvbmFsKQogKiBAcGFyYW0gbnVsbHxDbGllbnRcUm93TWFwcGVyICRtYXBwZXIgUm93IG1hcHBlciBmb3Igb2JqZWN0IGh5ZHJhdGlvbiAob3B0aW9uYWwpCiAqCiAqIEB0aHJvd3MgQ29ubmVjdGlvbkV4Y2VwdGlvbiBJZiBjb25uZWN0aW9uIGZhaWxzCiAqCiAqIEBleGFtcGxlCiAqIC8vIEJhc2ljIGNsaWVudAogKiAkY2xpZW50ID0gcGdzcWxfY2xpZW50KHBnc3FsX2Nvbm5lY3Rpb24oJ2hvc3Q9bG9jYWxob3N0IGRibmFtZT1teWRiJykpOwogKgogKiAvLyBXaXRoIG9iamVjdCBtYXBwaW5nCiAqICRjbGllbnQgPSBwZ3NxbF9jbGllbnQoCiAqICAgICBwZ3NxbF9jb25uZWN0aW9uKCdob3N0PWxvY2FsaG9zdCBkYm5hbWU9bXlkYicpLAogKiAgICAgbWFwcGVyOiBwZ3NxbF9tYXBwZXIoKSwKICogKTsKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3005,"slug":"postgresql-telemetry-options","name":"postgresql_telemetry_options","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"traceQueries","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"},{"name":"traceTransactions","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"},{"name":"collectMetrics","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"},{"name":"logQueries","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"maxQueryLength","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"1000"},{"name":"includeParameters","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"},{"name":"maxParameters","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"10"},{"name":"maxParameterLength","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"100"}],"return_type":[{"name":"PostgreSqlTelemetryOptions","namespace":"Flow\\PostgreSql\\Client\\Telemetry","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSB0ZWxlbWV0cnkgb3B0aW9ucyBmb3IgUG9zdGdyZVNRTCBjbGllbnQgaW5zdHJ1bWVudGF0aW9uLgogKgogKiBDb250cm9scyB3aGljaCB0ZWxlbWV0cnkgc2lnbmFscyAodHJhY2VzLCBtZXRyaWNzLCBsb2dzKSBhcmUgZW5hYmxlZAogKiBhbmQgaG93IHF1ZXJ5IGluZm9ybWF0aW9uIGlzIGNhcHR1cmVkLgogKgogKiBAcGFyYW0gYm9vbCAkdHJhY2VRdWVyaWVzIENyZWF0ZSBzcGFucyBmb3IgcXVlcnkgZXhlY3V0aW9uIChkZWZhdWx0OiB0cnVlKQogKiBAcGFyYW0gYm9vbCAkdHJhY2VUcmFuc2FjdGlvbnMgQ3JlYXRlIHNwYW5zIGZvciB0cmFuc2FjdGlvbnMgKGRlZmF1bHQ6IHRydWUpCiAqIEBwYXJhbSBib29sICRjb2xsZWN0TWV0cmljcyBDb2xsZWN0IGR1cmF0aW9uIGFuZCByb3cgY291bnQgbWV0cmljcyAoZGVmYXVsdDogdHJ1ZSkKICogQHBhcmFtIGJvb2wgJGxvZ1F1ZXJpZXMgTG9nIGV4ZWN1dGVkIHF1ZXJpZXMgKGRlZmF1bHQ6IGZhbHNlKQogKiBAcGFyYW0gbnVsbHxpbnQgJG1heFF1ZXJ5TGVuZ3RoIE1heGltdW0gcXVlcnkgdGV4dCBsZW5ndGggaW4gdGVsZW1ldHJ5IChkZWZhdWx0OiAxMDAwLCBudWxsID0gdW5saW1pdGVkKQogKiBAcGFyYW0gYm9vbCAkaW5jbHVkZVBhcmFtZXRlcnMgSW5jbHVkZSBxdWVyeSBwYXJhbWV0ZXJzIGluIHRlbGVtZXRyeSAoZGVmYXVsdDogZmFsc2UsIHNlY3VyaXR5IGNvbnNpZGVyYXRpb24pCiAqCiAqIEBleGFtcGxlCiAqIC8vIERlZmF1bHQgb3B0aW9ucyAodHJhY2VzIGFuZCBtZXRyaWNzIGVuYWJsZWQpCiAqICRvcHRpb25zID0gcG9zdGdyZXNxbF90ZWxlbWV0cnlfb3B0aW9ucygpOwogKgogKiAvLyBFbmFibGUgcXVlcnkgbG9nZ2luZwogKiAkb3B0aW9ucyA9IHBvc3RncmVzcWxfdGVsZW1ldHJ5X29wdGlvbnMobG9nUXVlcmllczogdHJ1ZSk7CiAqCiAqIC8vIERpc2FibGUgYWxsIGJ1dCBtZXRyaWNzCiAqICRvcHRpb25zID0gcG9zdGdyZXNxbF90ZWxlbWV0cnlfb3B0aW9ucygKICogICAgIHRyYWNlUXVlcmllczogZmFsc2UsCiAqICAgICB0cmFjZVRyYW5zYWN0aW9uczogZmFsc2UsCiAqICAgICBjb2xsZWN0TWV0cmljczogdHJ1ZSwKICogKTsKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3043,"slug":"postgresql-telemetry-config","name":"postgresql_telemetry_config","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"telemetry","type":[{"name":"Telemetry","namespace":"Flow\\Telemetry","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"clock","type":[{"name":"ClockInterface","namespace":"Psr\\Clock","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"options","type":[{"name":"PostgreSqlTelemetryOptions","namespace":"Flow\\PostgreSql\\Client\\Telemetry","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"PostgreSqlTelemetryConfig","namespace":"Flow\\PostgreSql\\Client\\Telemetry","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSB0ZWxlbWV0cnkgY29uZmlndXJhdGlvbiBmb3IgUG9zdGdyZVNRTCBjbGllbnQuCiAqCiAqIEJ1bmRsZXMgdGVsZW1ldHJ5IGluc3RhbmNlLCBjbG9jaywgYW5kIG9wdGlvbnMgbmVlZGVkIHRvIGluc3RydW1lbnQgYSBQb3N0Z3JlU1FMIGNsaWVudC4KICoKICogQHBhcmFtIFRlbGVtZXRyeSAkdGVsZW1ldHJ5IFRoZSB0ZWxlbWV0cnkgaW5zdGFuY2UKICogQHBhcmFtIENsb2NrSW50ZXJmYWNlICRjbG9jayBDbG9jayBmb3IgdGltZXN0YW1wcwogKiBAcGFyYW0gbnVsbHxQb3N0Z3JlU3FsVGVsZW1ldHJ5T3B0aW9ucyAkb3B0aW9ucyBUZWxlbWV0cnkgb3B0aW9ucyAoZGVmYXVsdDogYWxsIGVuYWJsZWQpCiAqCiAqIEBleGFtcGxlCiAqICRjb25maWcgPSBwb3N0Z3Jlc3FsX3RlbGVtZXRyeV9jb25maWcoCiAqICAgICB0ZWxlbWV0cnkocmVzb3VyY2UoWydzZXJ2aWNlLm5hbWUnID0+ICdteS1hcHAnXSkpLAogKiAgICAgbmV3IFN5c3RlbUNsb2NrKCksCiAqICk7CiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3089,"slug":"traceable-postgresql-client","name":"traceable_postgresql_client","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"client","type":[{"name":"Client","namespace":"Flow\\PostgreSql\\Client","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"telemetryConfig","type":[{"name":"PostgreSqlTelemetryConfig","namespace":"Flow\\PostgreSql\\Client\\Telemetry","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"TraceableClient","namespace":"Flow\\PostgreSql\\Client\\Telemetry","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFdyYXAgYSBQb3N0Z3JlU1FMIGNsaWVudCB3aXRoIHRlbGVtZXRyeSBpbnN0cnVtZW50YXRpb24uCiAqCiAqIFJldHVybnMgYSBkZWNvcmF0b3IgdGhhdCBhZGRzIHNwYW5zLCBtZXRyaWNzLCBhbmQgbG9ncyB0byBhbGwKICogcXVlcnkgYW5kIHRyYW5zYWN0aW9uIG9wZXJhdGlvbnMgZm9sbG93aW5nIE9wZW5UZWxlbWV0cnkgY29udmVudGlvbnMuCiAqCiAqIEBwYXJhbSBDbGllbnRcQ2xpZW50ICRjbGllbnQgVGhlIFBvc3RncmVTUUwgY2xpZW50IHRvIGluc3RydW1lbnQKICogQHBhcmFtIFBvc3RncmVTcWxUZWxlbWV0cnlDb25maWcgJHRlbGVtZXRyeUNvbmZpZyBUZWxlbWV0cnkgY29uZmlndXJhdGlvbgogKgogKiBAZXhhbXBsZQogKiAkY2xpZW50ID0gcGdzcWxfY2xpZW50KHBnc3FsX2Nvbm5lY3Rpb24oJ2hvc3Q9bG9jYWxob3N0IGRibmFtZT1teWRiJykpOwogKgogKiAkdHJhY2VhYmxlQ2xpZW50ID0gdHJhY2VhYmxlX3Bvc3RncmVzcWxfY2xpZW50KAogKiAgICAgJGNsaWVudCwKICogICAgIHBvc3RncmVzcWxfdGVsZW1ldHJ5X2NvbmZpZygKICogICAgICAgICB0ZWxlbWV0cnkocmVzb3VyY2UoWydzZXJ2aWNlLm5hbWUnID0+ICdteS1hcHAnXSkpLAogKiAgICAgICAgIG5ldyBTeXN0ZW1DbG9jaygpLAogKiAgICAgICAgIHBvc3RncmVzcWxfdGVsZW1ldHJ5X29wdGlvbnMoCiAqICAgICAgICAgICAgIHRyYWNlUXVlcmllczogdHJ1ZSwKICogICAgICAgICAgICAgdHJhY2VUcmFuc2FjdGlvbnM6IHRydWUsCiAqICAgICAgICAgICAgIGNvbGxlY3RNZXRyaWNzOiB0cnVlLAogKiAgICAgICAgICAgICBsb2dRdWVyaWVzOiB0cnVlLAogKiAgICAgICAgICAgICBtYXhRdWVyeUxlbmd0aDogNTAwLAogKiAgICAgICAgICksCiAqICAgICApLAogKiApOwogKgogKiAvLyBBbGwgb3BlcmF0aW9ucyBub3cgdHJhY2VkCiAqICR0cmFjZWFibGVDbGllbnQtPnRyYW5zYWN0aW9uKGZ1bmN0aW9uIChDbGllbnQgJGNsaWVudCkgewogKiAgICAgJHVzZXIgPSAkY2xpZW50LT5mZXRjaE9uZSgnU0VMRUNUICogRlJPTSB1c2VycyBXSEVSRSBpZCA9ICQxJywgWzEyM10pOwogKiAgICAgJGNsaWVudC0+ZXhlY3V0ZSgnVVBEQVRFIHVzZXJzIFNFVCBsYXN0X2xvZ2luID0gTk9XKCkgV0hFUkUgaWQgPSAkMScsIFsxMjNdKTsKICogfSk7CiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3124,"slug":"pgsql-mapper","name":"pgsql_mapper","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"ConstructorMapper","namespace":"Flow\\PostgreSql\\Client\\RowMapper","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGRlZmF1bHQgY29uc3RydWN0b3ItYmFzZWQgcm93IG1hcHBlci4KICoKICogTWFwcyBkYXRhYmFzZSByb3dzIGRpcmVjdGx5IHRvIGNvbnN0cnVjdG9yIHBhcmFtZXRlcnMuCiAqIENvbHVtbiBuYW1lcyBtdXN0IG1hdGNoIHBhcmFtZXRlciBuYW1lcyBleGFjdGx5ICgxOjEpLgogKiBVc2UgU1FMIGFsaWFzZXMgaWYgY29sdW1uIG5hbWVzIGRpZmZlciBmcm9tIHBhcmFtZXRlciBuYW1lcy4KICoKICogQGV4YW1wbGUKICogLy8gRFRPIHdoZXJlIGNvbHVtbiBuYW1lcyBtYXRjaCBwYXJhbWV0ZXIgbmFtZXMKICogcmVhZG9ubHkgY2xhc3MgVXNlciB7CiAqICAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoCiAqICAgICAgICAgcHVibGljIGludCAkaWQsCiAqICAgICAgICAgcHVibGljIHN0cmluZyAkbmFtZSwKICogICAgICAgICBwdWJsaWMgc3RyaW5nICRlbWFpbCwKICogICAgICkge30KICogfQogKgogKiAvLyBVc2FnZQogKiAkY2xpZW50ID0gcGdzcWxfY2xpZW50KHBnc3FsX2Nvbm5lY3Rpb24oJy4uLicpLCBtYXBwZXI6IHBnc3FsX21hcHBlcigpKTsKICoKICogLy8gRm9yIHNuYWtlX2Nhc2UgY29sdW1ucywgdXNlIFNRTCBhbGlhc2VzCiAqICR1c2VyID0gJGNsaWVudC0+ZmV0Y2hJbnRvKAogKiAgICAgVXNlcjo6Y2xhc3MsCiAqICAgICAnU0VMRUNUIGlkLCB1c2VyX25hbWUgQVMgbmFtZSwgdXNlcl9lbWFpbCBBUyBlbWFpbCBGUk9NIHVzZXJzIFdIRVJFIGlkID0gJDEnLAogKiAgICAgWzFdCiAqICk7CiAqLw=="},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3153,"slug":"typed","name":"typed","namespace":"Flow\\PostgreSql\\DSL","parameters":[{"name":"value","type":[{"name":"mixed","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":false,"is_nullable":true,"is_variadic":false,"default_value":null},{"name":"targetType","type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"TypedValue","namespace":"Flow\\PostgreSql\\Client","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIFdyYXAgYSB2YWx1ZSB3aXRoIGV4cGxpY2l0IFBvc3RncmVTUUwgdHlwZSBpbmZvcm1hdGlvbiBmb3IgcGFyYW1ldGVyIGJpbmRpbmcuCiAqCiAqIFVzZSB3aGVuIGF1dG8tZGV0ZWN0aW9uIGlzbid0IHN1ZmZpY2llbnQgb3Igd2hlbiB5b3UgbmVlZCB0byBzcGVjaWZ5CiAqIHRoZSBleGFjdCBQb3N0Z3JlU1FMIHR5cGUgKHNpbmNlIG9uZSBQSFAgdHlwZSBjYW4gbWFwIHRvIG11bHRpcGxlIFBvc3RncmVTUUwgdHlwZXMpOgogKiAtIGludCBjb3VsZCBiZSBJTlQyLCBJTlQ0LCBvciBJTlQ4CiAqIC0gc3RyaW5nIGNvdWxkIGJlIFRFWFQsIFZBUkNIQVIsIG9yIENIQVIKICogLSBhcnJheSBtdXN0IGFsd2F5cyB1c2UgdHlwZWQoKSBzaW5jZSBhdXRvLWRldGVjdGlvbiBjYW5ub3QgZGV0ZXJtaW5lIGVsZW1lbnQgdHlwZQogKiAtIERhdGVUaW1lSW50ZXJmYWNlIGNvdWxkIGJlIFRJTUVTVEFNUCBvciBUSU1FU1RBTVBUWgogKiAtIEpzb24gY291bGQgYmUgSlNPTiBvciBKU09OQgogKgogKiBAcGFyYW0gbWl4ZWQgJHZhbHVlIFRoZSB2YWx1ZSB0byBiaW5kCiAqIEBwYXJhbSBQb3N0Z3JlU3FsVHlwZSAkdGFyZ2V0VHlwZSBUaGUgUG9zdGdyZVNRTCB0eXBlIHRvIGNvbnZlcnQgdGhlIHZhbHVlIHRvCiAqCiAqIEBleGFtcGxlCiAqICRjbGllbnQtPmZldGNoKAogKiAgICAgJ1NFTEVDVCAqIEZST00gdXNlcnMgV0hFUkUgaWQgPSAkMSBBTkQgdGFncyA9ICQyJywKICogICAgIFsKICogICAgICAgICB0eXBlZCgnNTUwZTg0MDAtZTI5Yi00MWQ0LWE3MTYtNDQ2NjU1NDQwMDAwJywgUG9zdGdyZVNxbFR5cGU6OlVVSUQpLAogKiAgICAgICAgIHR5cGVkKFsndGFnMScsICd0YWcyJ10sIFBvc3RncmVTcWxUeXBlOjpURVhUX0FSUkFZKSwKICogICAgIF0KICogKTsKICov"},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3161,"slug":"pgsql-type-text","name":"pgsql_type_text","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3167,"slug":"pgsql-type-varchar","name":"pgsql_type_varchar","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3173,"slug":"pgsql-type-char","name":"pgsql_type_char","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3179,"slug":"pgsql-type-bpchar","name":"pgsql_type_bpchar","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3185,"slug":"pgsql-type-int2","name":"pgsql_type_int2","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3191,"slug":"pgsql-type-smallint","name":"pgsql_type_smallint","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3197,"slug":"pgsql-type-int4","name":"pgsql_type_int4","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3203,"slug":"pgsql-type-integer","name":"pgsql_type_integer","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3209,"slug":"pgsql-type-int8","name":"pgsql_type_int8","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3215,"slug":"pgsql-type-bigint","name":"pgsql_type_bigint","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3221,"slug":"pgsql-type-float4","name":"pgsql_type_float4","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3227,"slug":"pgsql-type-real","name":"pgsql_type_real","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3233,"slug":"pgsql-type-float8","name":"pgsql_type_float8","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3239,"slug":"pgsql-type-double","name":"pgsql_type_double","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3245,"slug":"pgsql-type-numeric","name":"pgsql_type_numeric","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3251,"slug":"pgsql-type-money","name":"pgsql_type_money","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3257,"slug":"pgsql-type-bool","name":"pgsql_type_bool","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3263,"slug":"pgsql-type-boolean","name":"pgsql_type_boolean","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3269,"slug":"pgsql-type-bytea","name":"pgsql_type_bytea","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3275,"slug":"pgsql-type-bit","name":"pgsql_type_bit","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3281,"slug":"pgsql-type-varbit","name":"pgsql_type_varbit","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3287,"slug":"pgsql-type-date","name":"pgsql_type_date","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3293,"slug":"pgsql-type-time","name":"pgsql_type_time","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3299,"slug":"pgsql-type-timetz","name":"pgsql_type_timetz","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3305,"slug":"pgsql-type-timestamp","name":"pgsql_type_timestamp","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3311,"slug":"pgsql-type-timestamptz","name":"pgsql_type_timestamptz","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3317,"slug":"pgsql-type-interval","name":"pgsql_type_interval","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3323,"slug":"pgsql-type-json","name":"pgsql_type_json","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3329,"slug":"pgsql-type-jsonb","name":"pgsql_type_jsonb","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3335,"slug":"pgsql-type-uuid","name":"pgsql_type_uuid","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3341,"slug":"pgsql-type-inet","name":"pgsql_type_inet","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3347,"slug":"pgsql-type-cidr","name":"pgsql_type_cidr","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3353,"slug":"pgsql-type-macaddr","name":"pgsql_type_macaddr","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3359,"slug":"pgsql-type-macaddr8","name":"pgsql_type_macaddr8","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3365,"slug":"pgsql-type-xml","name":"pgsql_type_xml","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3371,"slug":"pgsql-type-oid","name":"pgsql_type_oid","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3377,"slug":"pgsql-type-text-array","name":"pgsql_type_text_array","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3383,"slug":"pgsql-type-varchar-array","name":"pgsql_type_varchar_array","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3389,"slug":"pgsql-type-int2-array","name":"pgsql_type_int2_array","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3395,"slug":"pgsql-type-int4-array","name":"pgsql_type_int4_array","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3401,"slug":"pgsql-type-int8-array","name":"pgsql_type_int8_array","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3407,"slug":"pgsql-type-float4-array","name":"pgsql_type_float4_array","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3413,"slug":"pgsql-type-float8-array","name":"pgsql_type_float8_array","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3419,"slug":"pgsql-type-bool-array","name":"pgsql_type_bool_array","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3425,"slug":"pgsql-type-uuid-array","name":"pgsql_type_uuid_array","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3431,"slug":"pgsql-type-json-array","name":"pgsql_type_json_array","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/postgresql\/src\/Flow\/PostgreSql\/DSL\/functions.php","start_line_in_file":3437,"slug":"pgsql-type-jsonb-array","name":"pgsql_type_jsonb_array","namespace":"Flow\\PostgreSql\\DSL","parameters":[],"return_type":[{"name":"PostgreSqlType","namespace":"Flow\\PostgreSql\\Client\\Types","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PG_QUERY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":39,"slug":"trace-id","name":"trace_id","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"hex","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"TraceId","namespace":"Flow\\Telemetry\\Context","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFRyYWNlSWQuCiAqCiAqIElmIGEgaGV4IHN0cmluZyBpcyBwcm92aWRlZCwgY3JlYXRlcyBhIFRyYWNlSWQgZnJvbSBpdC4KICogT3RoZXJ3aXNlLCBnZW5lcmF0ZXMgYSBuZXcgcmFuZG9tIFRyYWNlSWQuCiAqCiAqIEBwYXJhbSBudWxsfHN0cmluZyAkaGV4IE9wdGlvbmFsIDMyLWNoYXJhY3RlciBoZXhhZGVjaW1hbCBzdHJpbmcKICoKICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBoZXggc3RyaW5nIGlzIGludmFsaWQKICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":59,"slug":"span-id","name":"span_id","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"hex","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"SpanId","namespace":"Flow\\Telemetry\\Context","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFNwYW5JZC4KICoKICogSWYgYSBoZXggc3RyaW5nIGlzIHByb3ZpZGVkLCBjcmVhdGVzIGEgU3BhbklkIGZyb20gaXQuCiAqIE90aGVyd2lzZSwgZ2VuZXJhdGVzIGEgbmV3IHJhbmRvbSBTcGFuSWQuCiAqCiAqIEBwYXJhbSBudWxsfHN0cmluZyAkaGV4IE9wdGlvbmFsIDE2LWNoYXJhY3RlciBoZXhhZGVjaW1hbCBzdHJpbmcKICoKICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBoZXggc3RyaW5nIGlzIGludmFsaWQKICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":74,"slug":"baggage","name":"baggage","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"entries","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"Baggage","namespace":"Flow\\Telemetry\\Context","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEJhZ2dhZ2UuCiAqCiAqIEBwYXJhbSBhcnJheTxzdHJpbmcsIHN0cmluZz4gJGVudHJpZXMgSW5pdGlhbCBrZXktdmFsdWUgZW50cmllcwogKi8="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":89,"slug":"context","name":"context","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"traceId","type":[{"name":"TraceId","namespace":"Flow\\Telemetry\\Context","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"baggage","type":[{"name":"Baggage","namespace":"Flow\\Telemetry\\Context","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Context","namespace":"Flow\\Telemetry\\Context","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIENvbnRleHQuCiAqCiAqIElmIG5vIFRyYWNlSWQgaXMgcHJvdmlkZWQsIGdlbmVyYXRlcyBhIG5ldyBvbmUuCiAqIElmIG5vIEJhZ2dhZ2UgaXMgcHJvdmlkZWQsIGNyZWF0ZXMgYW4gZW1wdHkgb25lLgogKgogKiBAcGFyYW0gbnVsbHxUcmFjZUlkICR0cmFjZUlkIE9wdGlvbmFsIFRyYWNlSWQgdG8gdXNlCiAqIEBwYXJhbSBudWxsfEJhZ2dhZ2UgJGJhZ2dhZ2UgT3B0aW9uYWwgQmFnZ2FnZSB0byB1c2UKICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":106,"slug":"memory-context-storage","name":"memory_context_storage","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"context","type":[{"name":"Context","namespace":"Flow\\Telemetry\\Context","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"MemoryContextStorage","namespace":"Flow\\Telemetry\\Context","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIE1lbW9yeUNvbnRleHRTdG9yYWdlLgogKgogKiBJbi1tZW1vcnkgY29udGV4dCBzdG9yYWdlIGZvciBzdG9yaW5nIGFuZCByZXRyaWV2aW5nIHRoZSBjdXJyZW50IGNvbnRleHQuCiAqIEEgc2luZ2xlIGluc3RhbmNlIHNob3VsZCBiZSBzaGFyZWQgYWNyb3NzIGFsbCBwcm92aWRlcnMgd2l0aGluIGEgcmVxdWVzdCBsaWZlY3ljbGUuCiAqCiAqIEBwYXJhbSBudWxsfENvbnRleHQgJGNvbnRleHQgT3B0aW9uYWwgaW5pdGlhbCBjb250ZXh0CiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":117,"slug":"resource","name":"resource","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"attributes","type":[{"name":"Attributes","namespace":"Flow\\Telemetry","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"Resource","namespace":"Flow\\Telemetry","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFJlc291cmNlLgogKgogKiBAcGFyYW0gYXJyYXk8c3RyaW5nLCBhcnJheTxib29sfGZsb2F0fGludHxzdHJpbmc+fGJvb2x8ZmxvYXR8aW50fHN0cmluZz58QXR0cmlidXRlcyAkYXR0cmlidXRlcyBSZXNvdXJjZSBhdHRyaWJ1dGVzCiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":130,"slug":"span-context","name":"span_context","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"traceId","type":[{"name":"TraceId","namespace":"Flow\\Telemetry\\Context","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"spanId","type":[{"name":"SpanId","namespace":"Flow\\Telemetry\\Context","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"parentSpanId","type":[{"name":"SpanId","namespace":"Flow\\Telemetry\\Context","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"SpanContext","namespace":"Flow\\Telemetry\\Tracer","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFNwYW5Db250ZXh0LgogKgogKiBAcGFyYW0gVHJhY2VJZCAkdHJhY2VJZCBUaGUgdHJhY2UgSUQKICogQHBhcmFtIFNwYW5JZCAkc3BhbklkIFRoZSBzcGFuIElECiAqIEBwYXJhbSBudWxsfFNwYW5JZCAkcGFyZW50U3BhbklkIE9wdGlvbmFsIHBhcmVudCBzcGFuIElECiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":143,"slug":"span-event","name":"span_event","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"timestamp","type":[{"name":"DateTimeImmutable","namespace":"","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"attributes","type":[{"name":"Attributes","namespace":"Flow\\Telemetry","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"GenericEvent","namespace":"Flow\\Telemetry\\Tracer","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFNwYW5FdmVudCAoR2VuZXJpY0V2ZW50KSB3aXRoIGFuIGV4cGxpY2l0IHRpbWVzdGFtcC4KICoKICogQHBhcmFtIHN0cmluZyAkbmFtZSBFdmVudCBuYW1lCiAqIEBwYXJhbSBcRGF0ZVRpbWVJbW11dGFibGUgJHRpbWVzdGFtcCBFdmVudCB0aW1lc3RhbXAKICogQHBhcmFtIGFycmF5PHN0cmluZywgYXJyYXk8Ym9vbHxmbG9hdHxpbnR8c3RyaW5nPnxib29sfGZsb2F0fGludHxzdHJpbmc+fEF0dHJpYnV0ZXMgJGF0dHJpYnV0ZXMgRXZlbnQgYXR0cmlidXRlcwogKi8="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":155,"slug":"span-link","name":"span_link","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"context","type":[{"name":"SpanContext","namespace":"Flow\\Telemetry\\Tracer","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"attributes","type":[{"name":"Attributes","namespace":"Flow\\Telemetry","is_nullable":false,"is_variadic":false},{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"SpanLink","namespace":"Flow\\Telemetry\\Tracer","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFNwYW5MaW5rLgogKgogKiBAcGFyYW0gU3BhbkNvbnRleHQgJGNvbnRleHQgVGhlIGxpbmtlZCBzcGFuIGNvbnRleHQKICogQHBhcmFtIGFycmF5PHN0cmluZywgYXJyYXk8Ym9vbHxmbG9hdHxpbnR8c3RyaW5nPnxib29sfGZsb2F0fGludHxzdHJpbmc+fEF0dHJpYnV0ZXMgJGF0dHJpYnV0ZXMgTGluayBhdHRyaWJ1dGVzCiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":174,"slug":"span-limits","name":"span_limits","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"attributeCountLimit","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"128"},{"name":"eventCountLimit","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"128"},{"name":"linkCountLimit","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"128"},{"name":"attributePerEventCountLimit","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"128"},{"name":"attributePerLinkCountLimit","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"128"},{"name":"attributeValueLengthLimit","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"SpanLimits","namespace":"Flow\\Telemetry\\Tracer","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBTcGFuTGltaXRzIGNvbmZpZ3VyYXRpb24uCiAqCiAqIFNwYW5MaW1pdHMgY29udHJvbHMgdGhlIG1heGltdW0gYW1vdW50IG9mIGRhdGEgYSBzcGFuIGNhbiBjb2xsZWN0LAogKiBwcmV2ZW50aW5nIHVuYm91bmRlZCBtZW1vcnkgZ3Jvd3RoIGFuZCBlbnN1cmluZyByZWFzb25hYmxlIHNwYW4gc2l6ZXMuCiAqCiAqIEBwYXJhbSBpbnQgJGF0dHJpYnV0ZUNvdW50TGltaXQgTWF4aW11bSBudW1iZXIgb2YgYXR0cmlidXRlcyBwZXIgc3BhbgogKiBAcGFyYW0gaW50ICRldmVudENvdW50TGltaXQgTWF4aW11bSBudW1iZXIgb2YgZXZlbnRzIHBlciBzcGFuCiAqIEBwYXJhbSBpbnQgJGxpbmtDb3VudExpbWl0IE1heGltdW0gbnVtYmVyIG9mIGxpbmtzIHBlciBzcGFuCiAqIEBwYXJhbSBpbnQgJGF0dHJpYnV0ZVBlckV2ZW50Q291bnRMaW1pdCBNYXhpbXVtIG51bWJlciBvZiBhdHRyaWJ1dGVzIHBlciBldmVudAogKiBAcGFyYW0gaW50ICRhdHRyaWJ1dGVQZXJMaW5rQ291bnRMaW1pdCBNYXhpbXVtIG51bWJlciBvZiBhdHRyaWJ1dGVzIHBlciBsaW5rCiAqIEBwYXJhbSBudWxsfGludCAkYXR0cmlidXRlVmFsdWVMZW5ndGhMaW1pdCBNYXhpbXVtIGxlbmd0aCBmb3Igc3RyaW5nIGF0dHJpYnV0ZSB2YWx1ZXMgKG51bGwgPSB1bmxpbWl0ZWQpCiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":202,"slug":"log-record-limits","name":"log_record_limits","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"attributeCountLimit","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"128"},{"name":"attributeValueLengthLimit","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"LogRecordLimits","namespace":"Flow\\Telemetry\\Logger","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBMb2dSZWNvcmRMaW1pdHMgY29uZmlndXJhdGlvbi4KICoKICogTG9nUmVjb3JkTGltaXRzIGNvbnRyb2xzIHRoZSBtYXhpbXVtIGFtb3VudCBvZiBkYXRhIGEgbG9nIHJlY29yZCBjYW4gY29sbGVjdCwKICogcHJldmVudGluZyB1bmJvdW5kZWQgbWVtb3J5IGdyb3d0aCBhbmQgZW5zdXJpbmcgcmVhc29uYWJsZSBsb2cgcmVjb3JkIHNpemVzLgogKgogKiBAcGFyYW0gaW50ICRhdHRyaWJ1dGVDb3VudExpbWl0IE1heGltdW0gbnVtYmVyIG9mIGF0dHJpYnV0ZXMgcGVyIGxvZyByZWNvcmQKICogQHBhcmFtIG51bGx8aW50ICRhdHRyaWJ1dGVWYWx1ZUxlbmd0aExpbWl0IE1heGltdW0gbGVuZ3RoIGZvciBzdHJpbmcgYXR0cmlidXRlIHZhbHVlcyAobnVsbCA9IHVubGltaXRlZCkKICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":227,"slug":"metric-limits","name":"metric_limits","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"cardinalityLimit","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"2000"}],"return_type":[{"name":"MetricLimits","namespace":"Flow\\Telemetry\\Meter","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBNZXRyaWNMaW1pdHMgY29uZmlndXJhdGlvbi4KICoKICogTWV0cmljTGltaXRzIGNvbnRyb2xzIHRoZSBtYXhpbXVtIGNhcmRpbmFsaXR5ICh1bmlxdWUgYXR0cmlidXRlIGNvbWJpbmF0aW9ucykKICogcGVyIG1ldHJpYyBpbnN0cnVtZW50LCBwcmV2ZW50aW5nIG1lbW9yeSBleGhhdXN0aW9uIGZyb20gaGlnaC1jYXJkaW5hbGl0eSBhdHRyaWJ1dGVzLgogKgogKiBXaGVuIHRoZSBjYXJkaW5hbGl0eSBsaW1pdCBpcyBleGNlZWRlZCwgbmV3IGF0dHJpYnV0ZSBjb21iaW5hdGlvbnMgYXJlIGFnZ3JlZ2F0ZWQKICogaW50byBhbiBvdmVyZmxvdyBkYXRhIHBvaW50IHdpdGggYG90ZWwubWV0cmljLm92ZXJmbG93OiB0cnVlYCBhdHRyaWJ1dGUuCiAqCiAqIE5vdGU6IFVubGlrZSBzcGFucyBhbmQgbG9ncywgbWV0cmljcyBhcmUgRVhFTVBUIGZyb20gYXR0cmlidXRlIGNvdW50IGFuZCB2YWx1ZQogKiBsZW5ndGggbGltaXRzIHBlciB0aGUgT3BlblRlbGVtZXRyeSBzcGVjaWZpY2F0aW9uLiBPbmx5IGNhcmRpbmFsaXR5IGlzIGxpbWl0ZWQuCiAqCiAqIEBwYXJhbSBpbnQgJGNhcmRpbmFsaXR5TGltaXQgTWF4aW11bSBudW1iZXIgb2YgdW5pcXVlIGF0dHJpYnV0ZSBjb21iaW5hdGlvbnMgcGVyIGluc3RydW1lbnQKICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":242,"slug":"void-span-processor","name":"void_span_processor","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"VoidSpanProcessor","namespace":"Flow\\Telemetry\\Provider\\Void","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFZvaWRTcGFuUHJvY2Vzc29yLgogKgogKiBOby1vcCBzcGFuIHByb2Nlc3NvciB0aGF0IGRpc2NhcmRzIGFsbCBkYXRhLgogKiBVc2UgdGhpcyB3aGVuIHRyYWNpbmcgaXMgZGlzYWJsZWQgdG8gbWluaW1pemUgb3ZlcmhlYWQuCiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":254,"slug":"void-metric-processor","name":"void_metric_processor","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"VoidMetricProcessor","namespace":"Flow\\Telemetry\\Provider\\Void","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFZvaWRNZXRyaWNQcm9jZXNzb3IuCiAqCiAqIE5vLW9wIG1ldHJpYyBwcm9jZXNzb3IgdGhhdCBkaXNjYXJkcyBhbGwgZGF0YS4KICogVXNlIHRoaXMgd2hlbiBtZXRyaWNzIGNvbGxlY3Rpb24gaXMgZGlzYWJsZWQgdG8gbWluaW1pemUgb3ZlcmhlYWQuCiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":266,"slug":"void-log-processor","name":"void_log_processor","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"VoidLogProcessor","namespace":"Flow\\Telemetry\\Provider\\Void","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFZvaWRMb2dQcm9jZXNzb3IuCiAqCiAqIE5vLW9wIGxvZyBwcm9jZXNzb3IgdGhhdCBkaXNjYXJkcyBhbGwgZGF0YS4KICogVXNlIHRoaXMgd2hlbiBsb2dnaW5nIGlzIGRpc2FibGVkIHRvIG1pbmltaXplIG92ZXJoZWFkLgogKi8="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":278,"slug":"void-span-exporter","name":"void_span_exporter","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"VoidSpanExporter","namespace":"Flow\\Telemetry\\Provider\\Void","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFZvaWRTcGFuRXhwb3J0ZXIuCiAqCiAqIE5vLW9wIHNwYW4gZXhwb3J0ZXIgdGhhdCBkaXNjYXJkcyBhbGwgZGF0YS4KICogVXNlIHRoaXMgd2hlbiB0ZWxlbWV0cnkgZXhwb3J0IGlzIGRpc2FibGVkIHRvIG1pbmltaXplIG92ZXJoZWFkLgogKi8="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":290,"slug":"void-metric-exporter","name":"void_metric_exporter","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"VoidMetricExporter","namespace":"Flow\\Telemetry\\Provider\\Void","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFZvaWRNZXRyaWNFeHBvcnRlci4KICoKICogTm8tb3AgbWV0cmljIGV4cG9ydGVyIHRoYXQgZGlzY2FyZHMgYWxsIGRhdGEuCiAqIFVzZSB0aGlzIHdoZW4gdGVsZW1ldHJ5IGV4cG9ydCBpcyBkaXNhYmxlZCB0byBtaW5pbWl6ZSBvdmVyaGVhZC4KICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":302,"slug":"void-log-exporter","name":"void_log_exporter","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"VoidLogExporter","namespace":"Flow\\Telemetry\\Provider\\Void","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFZvaWRMb2dFeHBvcnRlci4KICoKICogTm8tb3AgbG9nIGV4cG9ydGVyIHRoYXQgZGlzY2FyZHMgYWxsIGRhdGEuCiAqIFVzZSB0aGlzIHdoZW4gdGVsZW1ldHJ5IGV4cG9ydCBpcyBkaXNhYmxlZCB0byBtaW5pbWl6ZSBvdmVyaGVhZC4KICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":315,"slug":"memory-span-exporter","name":"memory_span_exporter","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"MemorySpanExporter","namespace":"Flow\\Telemetry\\Provider\\Memory","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIE1lbW9yeVNwYW5FeHBvcnRlci4KICoKICogU3BhbiBleHBvcnRlciB0aGF0IHN0b3JlcyBkYXRhIGluIG1lbW9yeS4KICogUHJvdmlkZXMgZGlyZWN0IGdldHRlciBhY2Nlc3MgdG8gZXhwb3J0ZWQgc3BhbnMuCiAqIFVzZWZ1bCBmb3IgdGVzdGluZyBhbmQgaW5zcGVjdGlvbiB3aXRob3V0IHNlcmlhbGl6YXRpb24uCiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":328,"slug":"memory-metric-exporter","name":"memory_metric_exporter","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"MemoryMetricExporter","namespace":"Flow\\Telemetry\\Provider\\Memory","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIE1lbW9yeU1ldHJpY0V4cG9ydGVyLgogKgogKiBNZXRyaWMgZXhwb3J0ZXIgdGhhdCBzdG9yZXMgZGF0YSBpbiBtZW1vcnkuCiAqIFByb3ZpZGVzIGRpcmVjdCBnZXR0ZXIgYWNjZXNzIHRvIGV4cG9ydGVkIG1ldHJpY3MuCiAqIFVzZWZ1bCBmb3IgdGVzdGluZyBhbmQgaW5zcGVjdGlvbiB3aXRob3V0IHNlcmlhbGl6YXRpb24uCiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":341,"slug":"memory-log-exporter","name":"memory_log_exporter","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"MemoryLogExporter","namespace":"Flow\\Telemetry\\Provider\\Memory","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIE1lbW9yeUxvZ0V4cG9ydGVyLgogKgogKiBMb2cgZXhwb3J0ZXIgdGhhdCBzdG9yZXMgZGF0YSBpbiBtZW1vcnkuCiAqIFByb3ZpZGVzIGRpcmVjdCBnZXR0ZXIgYWNjZXNzIHRvIGV4cG9ydGVkIGxvZyBlbnRyaWVzLgogKiBVc2VmdWwgZm9yIHRlc3RpbmcgYW5kIGluc3BlY3Rpb24gd2l0aG91dCBzZXJpYWxpemF0aW9uLgogKi8="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":355,"slug":"memory-span-processor","name":"memory_span_processor","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"exporter","type":[{"name":"SpanExporter","namespace":"Flow\\Telemetry\\Tracer","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"MemorySpanProcessor","namespace":"Flow\\Telemetry\\Provider\\Memory","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIE1lbW9yeVNwYW5Qcm9jZXNzb3IuCiAqCiAqIFNwYW4gcHJvY2Vzc29yIHRoYXQgc3RvcmVzIHNwYW5zIGluIG1lbW9yeSBhbmQgZXhwb3J0cyB2aWEgY29uZmlndXJlZCBleHBvcnRlci4KICogVXNlZnVsIGZvciB0ZXN0aW5nLgogKgogKiBAcGFyYW0gU3BhbkV4cG9ydGVyICRleHBvcnRlciBUaGUgZXhwb3J0ZXIgdG8gc2VuZCBzcGFucyB0bwogKi8="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":369,"slug":"memory-metric-processor","name":"memory_metric_processor","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"exporter","type":[{"name":"MetricExporter","namespace":"Flow\\Telemetry\\Meter","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"MemoryMetricProcessor","namespace":"Flow\\Telemetry\\Provider\\Memory","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIE1lbW9yeU1ldHJpY1Byb2Nlc3Nvci4KICoKICogTWV0cmljIHByb2Nlc3NvciB0aGF0IHN0b3JlcyBtZXRyaWNzIGluIG1lbW9yeSBhbmQgZXhwb3J0cyB2aWEgY29uZmlndXJlZCBleHBvcnRlci4KICogVXNlZnVsIGZvciB0ZXN0aW5nLgogKgogKiBAcGFyYW0gTWV0cmljRXhwb3J0ZXIgJGV4cG9ydGVyIFRoZSBleHBvcnRlciB0byBzZW5kIG1ldHJpY3MgdG8KICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":383,"slug":"memory-log-processor","name":"memory_log_processor","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"exporter","type":[{"name":"LogExporter","namespace":"Flow\\Telemetry\\Logger","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"MemoryLogProcessor","namespace":"Flow\\Telemetry\\Provider\\Memory","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIE1lbW9yeUxvZ1Byb2Nlc3Nvci4KICoKICogTG9nIHByb2Nlc3NvciB0aGF0IHN0b3JlcyBsb2cgcmVjb3JkcyBpbiBtZW1vcnkgYW5kIGV4cG9ydHMgdmlhIGNvbmZpZ3VyZWQgZXhwb3J0ZXIuCiAqIFVzZWZ1bCBmb3IgdGVzdGluZy4KICoKICogQHBhcmFtIExvZ0V4cG9ydGVyICRleHBvcnRlciBUaGUgZXhwb3J0ZXIgdG8gc2VuZCBsb2dzIHRvCiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":402,"slug":"tracer-provider","name":"tracer_provider","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"processor","type":[{"name":"SpanProcessor","namespace":"Flow\\Telemetry\\Tracer","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"clock","type":[{"name":"ClockInterface","namespace":"Psr\\Clock","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"contextStorage","type":[{"name":"ContextStorage","namespace":"Flow\\Telemetry\\Context","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"sampler","type":[{"name":"Sampler","namespace":"Flow\\Telemetry\\Tracer\\Sampler","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Telemetry\\Tracer\\Sampler\\AlwaysOnSampler::..."},{"name":"limits","type":[{"name":"SpanLimits","namespace":"Flow\\Telemetry\\Tracer","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Telemetry\\Tracer\\SpanLimits::..."}],"return_type":[{"name":"TracerProvider","namespace":"Flow\\Telemetry\\Tracer","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFRyYWNlclByb3ZpZGVyLgogKgogKiBDcmVhdGVzIGEgcHJvdmlkZXIgdGhhdCB1c2VzIGEgU3BhblByb2Nlc3NvciBmb3IgcHJvY2Vzc2luZyBzcGFucy4KICogRm9yIHZvaWQvZGlzYWJsZWQgdHJhY2luZywgcGFzcyB2b2lkX3Byb2Nlc3NvcigpLgogKiBGb3IgbWVtb3J5LWJhc2VkIHRlc3RpbmcsIHBhc3MgbWVtb3J5X3Byb2Nlc3NvcigpIHdpdGggZXhwb3J0ZXJzLgogKgogKiBAcGFyYW0gU3BhblByb2Nlc3NvciAkcHJvY2Vzc29yIFRoZSBwcm9jZXNzb3IgZm9yIHNwYW5zCiAqIEBwYXJhbSBDbG9ja0ludGVyZmFjZSAkY2xvY2sgVGhlIGNsb2NrIGZvciB0aW1lc3RhbXBzCiAqIEBwYXJhbSBDb250ZXh0U3RvcmFnZSAkY29udGV4dFN0b3JhZ2UgU3RvcmFnZSBmb3IgY29udGV4dCBwcm9wYWdhdGlvbgogKiBAcGFyYW0gU2FtcGxlciAkc2FtcGxlciBTYW1wbGluZyBzdHJhdGVneSBmb3Igc3BhbnMKICogQHBhcmFtIFNwYW5MaW1pdHMgJGxpbWl0cyBMaW1pdHMgZm9yIHNwYW4gYXR0cmlidXRlcywgZXZlbnRzLCBhbmQgbGlua3MKICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":431,"slug":"logger-provider","name":"logger_provider","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"processor","type":[{"name":"LogProcessor","namespace":"Flow\\Telemetry\\Logger","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"clock","type":[{"name":"ClockInterface","namespace":"Psr\\Clock","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"contextStorage","type":[{"name":"ContextStorage","namespace":"Flow\\Telemetry\\Context","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"limits","type":[{"name":"LogRecordLimits","namespace":"Flow\\Telemetry\\Logger","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Telemetry\\Logger\\LogRecordLimits::..."}],"return_type":[{"name":"LoggerProvider","namespace":"Flow\\Telemetry\\Logger","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIExvZ2dlclByb3ZpZGVyLgogKgogKiBDcmVhdGVzIGEgcHJvdmlkZXIgdGhhdCB1c2VzIGEgTG9nUHJvY2Vzc29yIGZvciBwcm9jZXNzaW5nIGxvZ3MuCiAqIEZvciB2b2lkL2Rpc2FibGVkIGxvZ2dpbmcsIHBhc3Mgdm9pZF9wcm9jZXNzb3IoKS4KICogRm9yIG1lbW9yeS1iYXNlZCB0ZXN0aW5nLCBwYXNzIG1lbW9yeV9wcm9jZXNzb3IoKSB3aXRoIGV4cG9ydGVycy4KICoKICogQHBhcmFtIExvZ1Byb2Nlc3NvciAkcHJvY2Vzc29yIFRoZSBwcm9jZXNzb3IgZm9yIGxvZ3MKICogQHBhcmFtIENsb2NrSW50ZXJmYWNlICRjbG9jayBUaGUgY2xvY2sgZm9yIHRpbWVzdGFtcHMKICogQHBhcmFtIENvbnRleHRTdG9yYWdlICRjb250ZXh0U3RvcmFnZSBTdG9yYWdlIGZvciBzcGFuIGNvcnJlbGF0aW9uCiAqIEBwYXJhbSBMb2dSZWNvcmRMaW1pdHMgJGxpbWl0cyBMaW1pdHMgZm9yIGxvZyByZWNvcmQgYXR0cmlidXRlcwogKi8="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":459,"slug":"meter-provider","name":"meter_provider","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"processor","type":[{"name":"MetricProcessor","namespace":"Flow\\Telemetry\\Meter","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"clock","type":[{"name":"ClockInterface","namespace":"Psr\\Clock","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"temporality","type":[{"name":"AggregationTemporality","namespace":"Flow\\Telemetry\\Meter","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Telemetry\\Meter\\AggregationTemporality::..."},{"name":"exemplarFilter","type":[{"name":"ExemplarFilter","namespace":"Flow\\Telemetry\\Meter\\Exemplar","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Telemetry\\Meter\\Exemplar\\TraceBasedExemplarFilter::..."},{"name":"limits","type":[{"name":"MetricLimits","namespace":"Flow\\Telemetry\\Meter","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Telemetry\\Meter\\MetricLimits::..."}],"return_type":[{"name":"MeterProvider","namespace":"Flow\\Telemetry\\Meter","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIE1ldGVyUHJvdmlkZXIuCiAqCiAqIENyZWF0ZXMgYSBwcm92aWRlciB0aGF0IHVzZXMgYSBNZXRyaWNQcm9jZXNzb3IgZm9yIHByb2Nlc3NpbmcgbWV0cmljcy4KICogRm9yIHZvaWQvZGlzYWJsZWQgbWV0cmljcywgcGFzcyB2b2lkX3Byb2Nlc3NvcigpLgogKiBGb3IgbWVtb3J5LWJhc2VkIHRlc3RpbmcsIHBhc3MgbWVtb3J5X3Byb2Nlc3NvcigpIHdpdGggZXhwb3J0ZXJzLgogKgogKiBAcGFyYW0gTWV0cmljUHJvY2Vzc29yICRwcm9jZXNzb3IgVGhlIHByb2Nlc3NvciBmb3IgbWV0cmljcwogKiBAcGFyYW0gQ2xvY2tJbnRlcmZhY2UgJGNsb2NrIFRoZSBjbG9jayBmb3IgdGltZXN0YW1wcwogKiBAcGFyYW0gQWdncmVnYXRpb25UZW1wb3JhbGl0eSAkdGVtcG9yYWxpdHkgQWdncmVnYXRpb24gdGVtcG9yYWxpdHkgZm9yIG1ldHJpY3MKICogQHBhcmFtIEV4ZW1wbGFyRmlsdGVyICRleGVtcGxhckZpbHRlciBGaWx0ZXIgZm9yIGV4ZW1wbGFyIHNhbXBsaW5nIChkZWZhdWx0OiBUcmFjZUJhc2VkRXhlbXBsYXJGaWx0ZXIpCiAqIEBwYXJhbSBNZXRyaWNMaW1pdHMgJGxpbWl0cyBDYXJkaW5hbGl0eSBsaW1pdHMgZm9yIG1ldHJpYyBpbnN0cnVtZW50cwogKi8="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":486,"slug":"telemetry","name":"telemetry","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"resource","type":[{"name":"Resource","namespace":"Flow\\Telemetry","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"tracerProvider","type":[{"name":"TracerProvider","namespace":"Flow\\Telemetry\\Tracer","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"meterProvider","type":[{"name":"MeterProvider","namespace":"Flow\\Telemetry\\Meter","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"loggerProvider","type":[{"name":"LoggerProvider","namespace":"Flow\\Telemetry\\Logger","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"Telemetry","namespace":"Flow\\Telemetry","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIG5ldyBUZWxlbWV0cnkgaW5zdGFuY2Ugd2l0aCB0aGUgZ2l2ZW4gcHJvdmlkZXJzLgogKgogKiBJZiBwcm92aWRlcnMgYXJlIG5vdCBzcGVjaWZpZWQsIHZvaWQgcHJvdmlkZXJzIChuby1vcCkgYXJlIHVzZWQuCiAqCiAqIEBwYXJhbSByZXNvdXJjZSAkcmVzb3VyY2UgVGhlIHJlc291cmNlIGRlc2NyaWJpbmcgdGhlIGVudGl0eSBwcm9kdWNpbmcgdGVsZW1ldHJ5CiAqIEBwYXJhbSBudWxsfFRyYWNlclByb3ZpZGVyICR0cmFjZXJQcm92aWRlciBUaGUgdHJhY2VyIHByb3ZpZGVyIChudWxsIGZvciB2b2lkL2Rpc2FibGVkKQogKiBAcGFyYW0gbnVsbHxNZXRlclByb3ZpZGVyICRtZXRlclByb3ZpZGVyIFRoZSBtZXRlciBwcm92aWRlciAobnVsbCBmb3Igdm9pZC9kaXNhYmxlZCkKICogQHBhcmFtIG51bGx8TG9nZ2VyUHJvdmlkZXIgJGxvZ2dlclByb3ZpZGVyIFRoZSBsb2dnZXIgcHJvdmlkZXIgKG51bGwgZm9yIHZvaWQvZGlzYWJsZWQpCiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":511,"slug":"instrumentation-scope","name":"instrumentation_scope","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"name","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"version","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'unknown'"},{"name":"schemaUrl","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"attributes","type":[{"name":"Attributes","namespace":"Flow\\Telemetry","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Telemetry\\Attributes::..."}],"return_type":[{"name":"InstrumentationScope","namespace":"Flow\\Telemetry","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBJbnN0cnVtZW50YXRpb25TY29wZS4KICoKICogQHBhcmFtIHN0cmluZyAkbmFtZSBUaGUgaW5zdHJ1bWVudGF0aW9uIHNjb3BlIG5hbWUKICogQHBhcmFtIHN0cmluZyAkdmVyc2lvbiBUaGUgaW5zdHJ1bWVudGF0aW9uIHNjb3BlIHZlcnNpb24KICogQHBhcmFtIG51bGx8c3RyaW5nICRzY2hlbWFVcmwgT3B0aW9uYWwgc2NoZW1hIFVSTAogKi8="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":530,"slug":"batching-span-processor","name":"batching_span_processor","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"exporter","type":[{"name":"SpanExporter","namespace":"Flow\\Telemetry\\Tracer","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"batchSize","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"512"}],"return_type":[{"name":"BatchingSpanProcessor","namespace":"Flow\\Telemetry\\Tracer\\Processor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEJhdGNoaW5nU3BhblByb2Nlc3Nvci4KICoKICogQ29sbGVjdHMgc3BhbnMgaW4gbWVtb3J5IGFuZCBleHBvcnRzIHRoZW0gaW4gYmF0Y2hlcyBmb3IgZWZmaWNpZW5jeS4KICogU3BhbnMgYXJlIGV4cG9ydGVkIHdoZW4gYmF0Y2ggc2l6ZSBpcyByZWFjaGVkLCBmbHVzaCgpIGlzIGNhbGxlZCwgb3Igc2h1dGRvd24oKS4KICoKICogQHBhcmFtIFNwYW5FeHBvcnRlciAkZXhwb3J0ZXIgVGhlIGV4cG9ydGVyIHRvIHNlbmQgc3BhbnMgdG8KICogQHBhcmFtIGludCAkYmF0Y2hTaXplIE51bWJlciBvZiBzcGFucyB0byBjb2xsZWN0IGJlZm9yZSBleHBvcnRpbmcgKGRlZmF1bHQgNTEyKQogKi8="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":544,"slug":"pass-through-span-processor","name":"pass_through_span_processor","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"exporter","type":[{"name":"SpanExporter","namespace":"Flow\\Telemetry\\Tracer","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"PassThroughSpanProcessor","namespace":"Flow\\Telemetry\\Tracer\\Processor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFBhc3NUaHJvdWdoU3BhblByb2Nlc3Nvci4KICoKICogRXhwb3J0cyBlYWNoIHNwYW4gaW1tZWRpYXRlbHkgd2hlbiBpdCBlbmRzLgogKiBVc2VmdWwgZm9yIGRlYnVnZ2luZyB3aGVyZSBpbW1lZGlhdGUgdmlzaWJpbGl0eSBpcyBtb3JlIGltcG9ydGFudCB0aGFuIHBlcmZvcm1hbmNlLgogKgogKiBAcGFyYW0gU3BhbkV4cG9ydGVyICRleHBvcnRlciBUaGUgZXhwb3J0ZXIgdG8gc2VuZCBzcGFucyB0bwogKi8="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":559,"slug":"batching-metric-processor","name":"batching_metric_processor","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"exporter","type":[{"name":"MetricExporter","namespace":"Flow\\Telemetry\\Meter","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"batchSize","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"512"}],"return_type":[{"name":"BatchingMetricProcessor","namespace":"Flow\\Telemetry\\Meter\\Processor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEJhdGNoaW5nTWV0cmljUHJvY2Vzc29yLgogKgogKiBDb2xsZWN0cyBtZXRyaWNzIGluIG1lbW9yeSBhbmQgZXhwb3J0cyB0aGVtIGluIGJhdGNoZXMgZm9yIGVmZmljaWVuY3kuCiAqIE1ldHJpY3MgYXJlIGV4cG9ydGVkIHdoZW4gYmF0Y2ggc2l6ZSBpcyByZWFjaGVkLCBmbHVzaCgpIGlzIGNhbGxlZCwgb3Igc2h1dGRvd24oKS4KICoKICogQHBhcmFtIE1ldHJpY0V4cG9ydGVyICRleHBvcnRlciBUaGUgZXhwb3J0ZXIgdG8gc2VuZCBtZXRyaWNzIHRvCiAqIEBwYXJhbSBpbnQgJGJhdGNoU2l6ZSBOdW1iZXIgb2YgbWV0cmljcyB0byBjb2xsZWN0IGJlZm9yZSBleHBvcnRpbmcgKGRlZmF1bHQgNTEyKQogKi8="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":573,"slug":"pass-through-metric-processor","name":"pass_through_metric_processor","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"exporter","type":[{"name":"MetricExporter","namespace":"Flow\\Telemetry\\Meter","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"PassThroughMetricProcessor","namespace":"Flow\\Telemetry\\Meter\\Processor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFBhc3NUaHJvdWdoTWV0cmljUHJvY2Vzc29yLgogKgogKiBFeHBvcnRzIGVhY2ggbWV0cmljIGltbWVkaWF0ZWx5IHdoZW4gcHJvY2Vzc2VkLgogKiBVc2VmdWwgZm9yIGRlYnVnZ2luZyB3aGVyZSBpbW1lZGlhdGUgdmlzaWJpbGl0eSBpcyBtb3JlIGltcG9ydGFudCB0aGFuIHBlcmZvcm1hbmNlLgogKgogKiBAcGFyYW0gTWV0cmljRXhwb3J0ZXIgJGV4cG9ydGVyIFRoZSBleHBvcnRlciB0byBzZW5kIG1ldHJpY3MgdG8KICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":588,"slug":"batching-log-processor","name":"batching_log_processor","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"exporter","type":[{"name":"LogExporter","namespace":"Flow\\Telemetry\\Logger","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"batchSize","type":[{"name":"int","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"512"}],"return_type":[{"name":"BatchingLogProcessor","namespace":"Flow\\Telemetry\\Logger\\Processor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEJhdGNoaW5nTG9nUHJvY2Vzc29yLgogKgogKiBDb2xsZWN0cyBsb2cgcmVjb3JkcyBpbiBtZW1vcnkgYW5kIGV4cG9ydHMgdGhlbSBpbiBiYXRjaGVzIGZvciBlZmZpY2llbmN5LgogKiBMb2dzIGFyZSBleHBvcnRlZCB3aGVuIGJhdGNoIHNpemUgaXMgcmVhY2hlZCwgZmx1c2goKSBpcyBjYWxsZWQsIG9yIHNodXRkb3duKCkuCiAqCiAqIEBwYXJhbSBMb2dFeHBvcnRlciAkZXhwb3J0ZXIgVGhlIGV4cG9ydGVyIHRvIHNlbmQgbG9ncyB0bwogKiBAcGFyYW0gaW50ICRiYXRjaFNpemUgTnVtYmVyIG9mIGxvZ3MgdG8gY29sbGVjdCBiZWZvcmUgZXhwb3J0aW5nIChkZWZhdWx0IDUxMikKICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":602,"slug":"pass-through-log-processor","name":"pass_through_log_processor","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"exporter","type":[{"name":"LogExporter","namespace":"Flow\\Telemetry\\Logger","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"PassThroughLogProcessor","namespace":"Flow\\Telemetry\\Logger\\Processor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFBhc3NUaHJvdWdoTG9nUHJvY2Vzc29yLgogKgogKiBFeHBvcnRzIGVhY2ggbG9nIHJlY29yZCBpbW1lZGlhdGVseSB3aGVuIHByb2Nlc3NlZC4KICogVXNlZnVsIGZvciBkZWJ1Z2dpbmcgd2hlcmUgaW1tZWRpYXRlIHZpc2liaWxpdHkgaXMgbW9yZSBpbXBvcnRhbnQgdGhhbiBwZXJmb3JtYW5jZS4KICoKICogQHBhcmFtIExvZ0V4cG9ydGVyICRleHBvcnRlciBUaGUgZXhwb3J0ZXIgdG8gc2VuZCBsb2dzIHRvCiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":617,"slug":"severity-filtering-log-processor","name":"severity_filtering_log_processor","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"processor","type":[{"name":"LogProcessor","namespace":"Flow\\Telemetry\\Logger","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"minimumSeverity","type":[{"name":"Severity","namespace":"Flow\\Telemetry\\Logger","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Telemetry\\Logger\\Severity::..."}],"return_type":[{"name":"SeverityFilteringLogProcessor","namespace":"Flow\\Telemetry\\Logger\\Processor","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFNldmVyaXR5RmlsdGVyaW5nTG9nUHJvY2Vzc29yLgogKgogKiBGaWx0ZXJzIGxvZyBlbnRyaWVzIGJhc2VkIG9uIG1pbmltdW0gc2V2ZXJpdHkgbGV2ZWwuIE9ubHkgZW50cmllcyBhdCBvciBhYm92ZQogKiB0aGUgY29uZmlndXJlZCB0aHJlc2hvbGQgYXJlIHBhc3NlZCB0byB0aGUgd3JhcHBlZCBwcm9jZXNzb3IuCiAqCiAqIEBwYXJhbSBMb2dQcm9jZXNzb3IgJHByb2Nlc3NvciBUaGUgcHJvY2Vzc29yIHRvIHdyYXAKICogQHBhcmFtIFNldmVyaXR5ICRtaW5pbXVtU2V2ZXJpdHkgTWluaW11bSBzZXZlcml0eSBsZXZlbCAoZGVmYXVsdDogSU5GTykKICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":633,"slug":"console-span-exporter","name":"console_span_exporter","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"colors","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"}],"return_type":[{"name":"ConsoleSpanExporter","namespace":"Flow\\Telemetry\\Provider\\Console","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIENvbnNvbGVTcGFuRXhwb3J0ZXIuCiAqCiAqIE91dHB1dHMgc3BhbnMgdG8gdGhlIGNvbnNvbGUgd2l0aCBBU0NJSSB0YWJsZSBmb3JtYXR0aW5nLgogKiBVc2VmdWwgZm9yIGRlYnVnZ2luZyBhbmQgZGV2ZWxvcG1lbnQuCiAqCiAqIEBwYXJhbSBib29sICRjb2xvcnMgV2hldGhlciB0byB1c2UgQU5TSSBjb2xvcnMgKGRlZmF1bHQ6IHRydWUpCiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":647,"slug":"console-metric-exporter","name":"console_metric_exporter","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"colors","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"}],"return_type":[{"name":"ConsoleMetricExporter","namespace":"Flow\\Telemetry\\Provider\\Console","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIENvbnNvbGVNZXRyaWNFeHBvcnRlci4KICoKICogT3V0cHV0cyBtZXRyaWNzIHRvIHRoZSBjb25zb2xlIHdpdGggQVNDSUkgdGFibGUgZm9ybWF0dGluZy4KICogVXNlZnVsIGZvciBkZWJ1Z2dpbmcgYW5kIGRldmVsb3BtZW50LgogKgogKiBAcGFyYW0gYm9vbCAkY29sb3JzIFdoZXRoZXIgdG8gdXNlIEFOU0kgY29sb3JzIChkZWZhdWx0OiB0cnVlKQogKi8="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":662,"slug":"console-log-exporter","name":"console_log_exporter","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"colors","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"},{"name":"maxBodyLength","type":[{"name":"int","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"100"}],"return_type":[{"name":"ConsoleLogExporter","namespace":"Flow\\Telemetry\\Provider\\Console","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIENvbnNvbGVMb2dFeHBvcnRlci4KICoKICogT3V0cHV0cyBsb2cgcmVjb3JkcyB0byB0aGUgY29uc29sZSB3aXRoIHNldmVyaXR5LWJhc2VkIGNvbG9yaW5nLgogKiBVc2VmdWwgZm9yIGRlYnVnZ2luZyBhbmQgZGV2ZWxvcG1lbnQuCiAqCiAqIEBwYXJhbSBib29sICRjb2xvcnMgV2hldGhlciB0byB1c2UgQU5TSSBjb2xvcnMgKGRlZmF1bHQ6IHRydWUpCiAqIEBwYXJhbSBudWxsfGludCAkbWF4Qm9keUxlbmd0aCBNYXhpbXVtIGxlbmd0aCBmb3IgYm9keSthdHRyaWJ1dGVzIGNvbHVtbiAobnVsbCA9IG5vIGxpbWl0LCBkZWZhdWx0OiAxMDApCiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":674,"slug":"always-on-exemplar-filter","name":"always_on_exemplar_filter","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"AlwaysOnExemplarFilter","namespace":"Flow\\Telemetry\\Meter\\Exemplar","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBBbHdheXNPbkV4ZW1wbGFyRmlsdGVyLgogKgogKiBSZWNvcmRzIGV4ZW1wbGFycyB3aGVuZXZlciBhIHNwYW4gY29udGV4dCBpcyBwcmVzZW50LgogKiBVc2UgdGhpcyBmaWx0ZXIgZm9yIGRlYnVnZ2luZyBvciB3aGVuIGNvbXBsZXRlIHRyYWNlIGNvbnRleHQgaXMgaW1wb3J0YW50LgogKi8="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":686,"slug":"always-off-exemplar-filter","name":"always_off_exemplar_filter","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"AlwaysOffExemplarFilter","namespace":"Flow\\Telemetry\\Meter\\Exemplar","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBBbHdheXNPZmZFeGVtcGxhckZpbHRlci4KICoKICogTmV2ZXIgcmVjb3JkcyBleGVtcGxhcnMuIFVzZSB0aGlzIGZpbHRlciB0byBkaXNhYmxlIGV4ZW1wbGFyIGNvbGxlY3Rpb24KICogZW50aXJlbHkgZm9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbi4KICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":698,"slug":"trace-based-exemplar-filter","name":"trace_based_exemplar_filter","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"TraceBasedExemplarFilter","namespace":"Flow\\Telemetry\\Meter\\Exemplar","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFRyYWNlQmFzZWRFeGVtcGxhckZpbHRlci4KICoKICogUmVjb3JkcyBleGVtcGxhcnMgb25seSB3aGVuIHRoZSBzcGFuIGlzIHNhbXBsZWQgKGhhcyBTQU1QTEVEIHRyYWNlIGZsYWcpLgogKiBUaGlzIGlzIHRoZSBkZWZhdWx0IGZpbHRlciwgYmFsYW5jaW5nIGV4ZW1wbGFyIGNvbGxlY3Rpb24gd2l0aCBwZXJmb3JtYW5jZS4KICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":713,"slug":"propagation-context","name":"propagation_context","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"spanContext","type":[{"name":"SpanContext","namespace":"Flow\\Telemetry\\Tracer","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"baggage","type":[{"name":"Baggage","namespace":"Flow\\Telemetry\\Context","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"PropagationContext","namespace":"Flow\\Telemetry\\Propagation","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"TYPE"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFByb3BhZ2F0aW9uQ29udGV4dC4KICoKICogVmFsdWUgb2JqZWN0IGNvbnRhaW5pbmcgYm90aCB0cmFjZSBjb250ZXh0IChTcGFuQ29udGV4dCkgYW5kIGFwcGxpY2F0aW9uCiAqIGRhdGEgKEJhZ2dhZ2UpIHRoYXQgY2FuIGJlIHByb3BhZ2F0ZWQgYWNyb3NzIHByb2Nlc3MgYm91bmRhcmllcy4KICoKICogQHBhcmFtIG51bGx8U3BhbkNvbnRleHQgJHNwYW5Db250ZXh0IE9wdGlvbmFsIHNwYW4gY29udGV4dAogKiBAcGFyYW0gbnVsbHxCYWdnYWdlICRiYWdnYWdlIE9wdGlvbmFsIGJhZ2dhZ2UKICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":726,"slug":"array-carrier","name":"array_carrier","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"data","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"ArrayCarrier","namespace":"Flow\\Telemetry\\Propagation","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBBcnJheUNhcnJpZXIuCiAqCiAqIENhcnJpZXIgYmFja2VkIGJ5IGFuIGFzc29jaWF0aXZlIGFycmF5IHdpdGggY2FzZS1pbnNlbnNpdGl2ZSBrZXkgbG9va3VwLgogKgogKiBAcGFyYW0gYXJyYXk8c3RyaW5nLCBzdHJpbmc+ICRkYXRhIEluaXRpYWwgY2FycmllciBkYXRhCiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":738,"slug":"superglobal-carrier","name":"superglobal_carrier","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"SuperglobalCarrier","namespace":"Flow\\Telemetry\\Propagation","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFN1cGVyZ2xvYmFsQ2Fycmllci4KICoKICogUmVhZC1vbmx5IGNhcnJpZXIgdGhhdCBleHRyYWN0cyBjb250ZXh0IGZyb20gUEhQIHN1cGVyZ2xvYmFscwogKiAoJF9TRVJWRVIsICRfR0VULCAkX1BPU1QsICRfQ09PS0lFKS4KICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":750,"slug":"w3c-trace-context","name":"w3c_trace_context","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"W3CTraceContext","namespace":"Flow\\Telemetry\\Propagation","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFczQ1RyYWNlQ29udGV4dCBwcm9wYWdhdG9yLgogKgogKiBJbXBsZW1lbnRzIFczQyBUcmFjZSBDb250ZXh0IHNwZWNpZmljYXRpb24gZm9yIHByb3BhZ2F0aW5nIHRyYWNlIGNvbnRleHQKICogdXNpbmcgdHJhY2VwYXJlbnQgYW5kIHRyYWNlc3RhdGUgaGVhZGVycy4KICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":762,"slug":"w3c-baggage","name":"w3c_baggage","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"W3CBaggage","namespace":"Flow\\Telemetry\\Propagation","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFczQ0JhZ2dhZ2UgcHJvcGFnYXRvci4KICoKICogSW1wbGVtZW50cyBXM0MgQmFnZ2FnZSBzcGVjaWZpY2F0aW9uIGZvciBwcm9wYWdhdGluZyBhcHBsaWNhdGlvbi1zcGVjaWZpYwogKiBrZXktdmFsdWUgcGFpcnMgdXNpbmcgdGhlIGJhZ2dhZ2UgaGVhZGVyLgogKi8="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":776,"slug":"composite-propagator","name":"composite_propagator","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"propagators","type":[{"name":"Propagator","namespace":"Flow\\Telemetry\\Propagation","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"CompositePropagator","namespace":"Flow\\Telemetry\\Propagation","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIENvbXBvc2l0ZVByb3BhZ2F0b3IuCiAqCiAqIENvbWJpbmVzIG11bHRpcGxlIHByb3BhZ2F0b3JzIGludG8gb25lLiBPbiBleHRyYWN0LCBhbGwgcHJvcGFnYXRvcnMgYXJlCiAqIGludm9rZWQgYW5kIHRoZWlyIGNvbnRleHRzIGFyZSBtZXJnZWQuIE9uIGluamVjdCwgYWxsIHByb3BhZ2F0b3JzIGFyZSBpbnZva2VkLgogKgogKiBAcGFyYW0gUHJvcGFnYXRvciAuLi4kcHJvcGFnYXRvcnMgVGhlIHByb3BhZ2F0b3JzIHRvIGNvbWJpbmUKICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":791,"slug":"chain-detector","name":"chain_detector","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"detectors","type":[{"name":"ResourceDetector","namespace":"Flow\\Telemetry\\Resource","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":true,"default_value":null}],"return_type":[{"name":"ChainDetector","namespace":"Flow\\Telemetry\\Resource\\Detector","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIENoYWluRGV0ZWN0b3IuCiAqCiAqIENvbWJpbmVzIG11bHRpcGxlIHJlc291cmNlIGRldGVjdG9ycyBpbnRvIGEgY2hhaW4uIERldGVjdG9ycyBhcmUgZXhlY3V0ZWQKICogaW4gb3JkZXIgYW5kIHRoZWlyIHJlc3VsdHMgYXJlIG1lcmdlZC4gTGF0ZXIgZGV0ZWN0b3JzIHRha2UgcHJlY2VkZW5jZQogKiBvdmVyIGVhcmxpZXIgb25lcyB3aGVuIHRoZXJlIGFyZSBjb25mbGljdGluZyBhdHRyaWJ1dGUga2V5cy4KICoKICogQHBhcmFtIFJlc291cmNlRGV0ZWN0b3IgLi4uJGRldGVjdG9ycyBUaGUgZGV0ZWN0b3JzIHRvIGNoYWluCiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":803,"slug":"os-detector","name":"os_detector","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"OsDetector","namespace":"Flow\\Telemetry\\Resource\\Detector","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBPc0RldGVjdG9yLgogKgogKiBEZXRlY3RzIG9wZXJhdGluZyBzeXN0ZW0gaW5mb3JtYXRpb24gaW5jbHVkaW5nIG9zLnR5cGUsIG9zLm5hbWUsIG9zLnZlcnNpb24sCiAqIGFuZCBvcy5kZXNjcmlwdGlvbiB1c2luZyBQSFAncyBwaHBfdW5hbWUoKSBmdW5jdGlvbi4KICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":815,"slug":"host-detector","name":"host_detector","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"HostDetector","namespace":"Flow\\Telemetry\\Resource\\Detector","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEhvc3REZXRlY3Rvci4KICoKICogRGV0ZWN0cyBob3N0IGluZm9ybWF0aW9uIGluY2x1ZGluZyBob3N0Lm5hbWUsIGhvc3QuYXJjaCwgYW5kIGhvc3QuaWQKICogKGZyb20gL2V0Yy9tYWNoaW5lLWlkIG9uIExpbnV4IG9yIElPUGxhdGZvcm1VVUlEIG9uIG1hY09TKS4KICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":828,"slug":"process-detector","name":"process_detector","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"ProcessDetector","namespace":"Flow\\Telemetry\\Resource\\Detector","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFByb2Nlc3NEZXRlY3Rvci4KICoKICogRGV0ZWN0cyBwcm9jZXNzIGluZm9ybWF0aW9uIGluY2x1ZGluZyBwcm9jZXNzLnBpZCwgcHJvY2Vzcy5leGVjdXRhYmxlLnBhdGgsCiAqIHByb2Nlc3MucnVudGltZS5uYW1lIChQSFApLCBwcm9jZXNzLnJ1bnRpbWUudmVyc2lvbiwgcHJvY2Vzcy5jb21tYW5kLAogKiBhbmQgcHJvY2Vzcy5vd25lciAob24gUE9TSVggc3lzdGVtcykuCiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":841,"slug":"environment-detector","name":"environment_detector","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"EnvironmentDetector","namespace":"Flow\\Telemetry\\Resource\\Detector","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBFbnZpcm9ubWVudERldGVjdG9yLgogKgogKiBEZXRlY3RzIHJlc291cmNlIGF0dHJpYnV0ZXMgZnJvbSBPcGVuVGVsZW1ldHJ5IHN0YW5kYXJkIGVudmlyb25tZW50IHZhcmlhYmxlczoKICogLSBPVEVMX1NFUlZJQ0VfTkFNRTogU2V0cyBzZXJ2aWNlLm5hbWUgYXR0cmlidXRlCiAqIC0gT1RFTF9SRVNPVVJDRV9BVFRSSUJVVEVTOiBTZXRzIGFkZGl0aW9uYWwgYXR0cmlidXRlcyBpbiBrZXk9dmFsdWUsa2V5Mj12YWx1ZTIgZm9ybWF0CiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":853,"slug":"composer-detector","name":"composer_detector","namespace":"Flow\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"ComposerDetector","namespace":"Flow\\Telemetry\\Resource\\Detector","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIENvbXBvc2VyRGV0ZWN0b3IuCiAqCiAqIERldGVjdHMgc2VydmljZS5uYW1lIGFuZCBzZXJ2aWNlLnZlcnNpb24gZnJvbSBDb21wb3NlcidzIEluc3RhbGxlZFZlcnNpb25zCiAqIHVzaW5nIHRoZSByb290IHBhY2thZ2UgaW5mb3JtYXRpb24uCiAqLw=="},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":867,"slug":"manual-detector","name":"manual_detector","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"attributes","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ManualDetector","namespace":"Flow\\Telemetry\\Resource\\Detector","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIE1hbnVhbERldGVjdG9yLgogKgogKiBSZXR1cm5zIG1hbnVhbGx5IHNwZWNpZmllZCByZXNvdXJjZSBhdHRyaWJ1dGVzLiBVc2UgdGhpcyB3aGVuIHlvdSBuZWVkCiAqIHRvIHNldCBhdHRyaWJ1dGVzIGV4cGxpY2l0bHkgcmF0aGVyIHRoYW4gZGV0ZWN0aW5nIHRoZW0gYXV0b21hdGljYWxseS4KICoKICogQHBhcmFtIGFycmF5PHN0cmluZywgYXJyYXk8Ym9vbHxmbG9hdHxpbnR8c3RyaW5nPnxib29sfGZsb2F0fGludHxzdHJpbmc+ICRhdHRyaWJ1dGVzIFJlc291cmNlIGF0dHJpYnV0ZXMKICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":882,"slug":"caching-detector","name":"caching_detector","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"detector","type":[{"name":"ResourceDetector","namespace":"Flow\\Telemetry\\Resource","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"cachePath","type":[{"name":"string","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"CachingDetector","namespace":"Flow\\Telemetry\\Resource\\Detector","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIENhY2hpbmdEZXRlY3Rvci4KICoKICogV3JhcHMgYW5vdGhlciBkZXRlY3RvciBhbmQgY2FjaGVzIGl0cyByZXN1bHRzIHRvIGEgZmlsZS4gT24gc3Vic2VxdWVudAogKiBjYWxscywgcmV0dXJucyB0aGUgY2FjaGVkIHJlc291cmNlIGluc3RlYWQgb2YgcnVubmluZyBkZXRlY3Rpb24gYWdhaW4uCiAqCiAqIEBwYXJhbSBSZXNvdXJjZURldGVjdG9yICRkZXRlY3RvciBUaGUgZGV0ZWN0b3IgdG8gd3JhcAogKiBAcGFyYW0gbnVsbHxzdHJpbmcgJGNhY2hlUGF0aCBDYWNoZSBmaWxlIHBhdGggKGRlZmF1bHQ6IHN5c19nZXRfdGVtcF9kaXIoKS9mbG93X3RlbGVtZXRyeV9yZXNvdXJjZS5jYWNoZSkKICov"},{"repository_path":"src\/lib\/telemetry\/src\/Flow\/Telemetry\/DSL\/functions.php","start_line_in_file":902,"slug":"resource-detector","name":"resource_detector","namespace":"Flow\\Telemetry\\DSL","parameters":[{"name":"detectors","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"ChainDetector","namespace":"Flow\\Telemetry\\Resource\\Detector","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHJlc291cmNlIGRldGVjdG9yIGNoYWluLgogKgogKiBXaGVuIG5vIGRldGVjdG9ycyBhcmUgcHJvdmlkZWQsIHVzZXMgdGhlIGRlZmF1bHQgZGV0ZWN0b3IgY2hhaW46CiAqIDEuIE9zRGV0ZWN0b3IgLSBPcGVyYXRpbmcgc3lzdGVtIGluZm9ybWF0aW9uCiAqIDIuIEhvc3REZXRlY3RvciAtIEhvc3QgaW5mb3JtYXRpb24KICogMy4gUHJvY2Vzc0RldGVjdG9yIC0gUHJvY2VzcyBpbmZvcm1hdGlvbgogKiA0LiBDb21wb3NlckRldGVjdG9yIC0gU2VydmljZSBpbmZvcm1hdGlvbiBmcm9tIENvbXBvc2VyCiAqIDUuIEVudmlyb25tZW50RGV0ZWN0b3IgLSBFbnZpcm9ubWVudCB2YXJpYWJsZSBvdmVycmlkZXMgKGhpZ2hlc3QgcHJlY2VkZW5jZSkKICoKICogV2hlbiBkZXRlY3RvcnMgYXJlIHByb3ZpZGVkLCB1c2VzIG9ubHkgdGhvc2UgZGV0ZWN0b3JzLgogKgogKiBAcGFyYW0gYXJyYXk8UmVzb3VyY2VEZXRlY3Rvcj4gJGRldGVjdG9ycyBPcHRpb25hbCBjdXN0b20gZGV0ZWN0b3JzIChlbXB0eSA9IHVzZSBkZWZhdWx0cykKICov"},{"repository_path":"src\/lib\/azure-sdk\/src\/Flow\/Azure\/SDK\/DSL\/functions.php","start_line_in_file":18,"slug":"azurite-url-factory","name":"azurite_url_factory","namespace":"Flow\\Azure\\SDK\\DSL","parameters":[{"name":"host","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'localhost'"},{"name":"port","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'10000'"},{"name":"secure","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"false"}],"return_type":[{"name":"AzuriteURLFactory","namespace":"Flow\\Azure\\SDK\\BlobService\\URLFactory","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"AZURE_SDK","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/azure-sdk\/src\/Flow\/Azure\/SDK\/DSL\/functions.php","start_line_in_file":24,"slug":"azure-shared-key-authorization-factory","name":"azure_shared_key_authorization_factory","namespace":"Flow\\Azure\\SDK\\DSL","parameters":[{"name":"account","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"key","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"SharedKeyFactory","namespace":"Flow\\Azure\\SDK\\AuthorizationFactory","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"AZURE_SDK","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/azure-sdk\/src\/Flow\/Azure\/SDK\/DSL\/functions.php","start_line_in_file":30,"slug":"azure-blob-service-config","name":"azure_blob_service_config","namespace":"Flow\\Azure\\SDK\\DSL","parameters":[{"name":"account","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"container","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"Configuration","namespace":"Flow\\Azure\\SDK\\BlobService","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"AZURE_SDK","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/azure-sdk\/src\/Flow\/Azure\/SDK\/DSL\/functions.php","start_line_in_file":36,"slug":"azure-url-factory","name":"azure_url_factory","namespace":"Flow\\Azure\\SDK\\DSL","parameters":[{"name":"host","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"'blob.core.windows.net'"}],"return_type":[{"name":"AzureURLFactory","namespace":"Flow\\Azure\\SDK\\BlobService\\URLFactory","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"AZURE_SDK","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/azure-sdk\/src\/Flow\/Azure\/SDK\/DSL\/functions.php","start_line_in_file":42,"slug":"azure-http-factory","name":"azure_http_factory","namespace":"Flow\\Azure\\SDK\\DSL","parameters":[{"name":"request_factory","type":[{"name":"RequestFactoryInterface","namespace":"Psr\\Http\\Message","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"stream_factory","type":[{"name":"StreamFactoryInterface","namespace":"Psr\\Http\\Message","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"HttpFactory","namespace":"Flow\\Azure\\SDK","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"AZURE_SDK","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/lib\/azure-sdk\/src\/Flow\/Azure\/SDK\/DSL\/functions.php","start_line_in_file":48,"slug":"azure-blob-service","name":"azure_blob_service","namespace":"Flow\\Azure\\SDK\\DSL","parameters":[{"name":"configuration","type":[{"name":"Configuration","namespace":"Flow\\Azure\\SDK\\BlobService","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"azure_authorization_factory","type":[{"name":"AuthorizationFactory","namespace":"Flow\\Azure\\SDK","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"client","type":[{"name":"ClientInterface","namespace":"Psr\\Http\\Client","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"azure_http_factory","type":[{"name":"HttpFactory","namespace":"Flow\\Azure\\SDK","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"azure_url_factory","type":[{"name":"URLFactory","namespace":"Flow\\Azure\\SDK","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"logger","type":[{"name":"LoggerInterface","namespace":"Psr\\Log","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"BlobServiceInterface","namespace":"Flow\\Azure\\SDK","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"AZURE_SDK","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/bridge\/filesystem\/azure\/src\/Flow\/Filesystem\/Bridge\/Azure\/DSL\/functions.php","start_line_in_file":12,"slug":"azure-filesystem-options","name":"azure_filesystem_options","namespace":"Flow\\Filesystem\\Bridge\\Azure\\DSL","parameters":[],"return_type":[{"name":"Options","namespace":"Flow\\Filesystem\\Bridge\\Azure","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"AZURE_FILESYSTEM","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/bridge\/filesystem\/azure\/src\/Flow\/Filesystem\/Bridge\/Azure\/DSL\/functions.php","start_line_in_file":18,"slug":"azure-filesystem","name":"azure_filesystem","namespace":"Flow\\Filesystem\\Bridge\\Azure\\DSL","parameters":[{"name":"blob_service","type":[{"name":"BlobServiceInterface","namespace":"Flow\\Azure\\SDK","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"options","type":[{"name":"Options","namespace":"Flow\\Filesystem\\Bridge\\Azure","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Filesystem\\Bridge\\Azure\\Options::..."}],"return_type":[{"name":"AzureBlobFilesystem","namespace":"Flow\\Filesystem\\Bridge\\Azure","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"AZURE_FILESYSTEM","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/bridge\/filesystem\/async-aws\/src\/Flow\/Filesystem\/Bridge\/AsyncAWS\/DSL\/functions.php","start_line_in_file":15,"slug":"aws-s3-client","name":"aws_s3_client","namespace":"Flow\\Filesystem\\Bridge\\AsyncAWS\\DSL","parameters":[{"name":"configuration","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"S3Client","namespace":"AsyncAws\\S3","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"S3_FILESYSTEM","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIEBwYXJhbSBhcnJheTxzdHJpbmcsIG1peGVkPiAkY29uZmlndXJhdGlvbiAtIGZvciBkZXRhaWxzIHBsZWFzZSBzZWUgaHR0cHM6Ly9hc3luYy1hd3MuY29tL2NsaWVudHMvczMuaHRtbAogKi8="},{"repository_path":"src\/bridge\/filesystem\/async-aws\/src\/Flow\/Filesystem\/Bridge\/AsyncAWS\/DSL\/functions.php","start_line_in_file":22,"slug":"aws-s3-filesystem","name":"aws_s3_filesystem","namespace":"Flow\\Filesystem\\Bridge\\AsyncAWS\\DSL","parameters":[{"name":"bucket","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"s3Client","type":[{"name":"S3Client","namespace":"AsyncAws\\S3","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"options","type":[{"name":"Options","namespace":"Flow\\Filesystem\\Bridge\\AsyncAWS","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Filesystem\\Bridge\\AsyncAWS\\Options::..."}],"return_type":[{"name":"AsyncAWSS3Filesystem","namespace":"Flow\\Filesystem\\Bridge\\AsyncAWS","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"S3_FILESYSTEM","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/bridge\/monolog\/telemetry\/src\/Flow\/Bridge\/Monolog\/Telemetry\/DSL\/functions.php","start_line_in_file":32,"slug":"value-normalizer","name":"value_normalizer","namespace":"Flow\\Bridge\\Monolog\\Telemetry\\DSL","parameters":[],"return_type":[{"name":"ValueNormalizer","namespace":"Flow\\Bridge\\Monolog\\Telemetry","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"MONOLOG_TELEMETRY_BRIDGE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFZhbHVlTm9ybWFsaXplciBmb3IgY29udmVydGluZyBhcmJpdHJhcnkgUEhQIHZhbHVlcyB0byBUZWxlbWV0cnkgYXR0cmlidXRlIHR5cGVzLgogKgogKiBUaGUgbm9ybWFsaXplciBoYW5kbGVzOgogKiAtIG51bGwg4oaSICdudWxsJyBzdHJpbmcKICogLSBzY2FsYXJzIChzdHJpbmcsIGludCwgZmxvYXQsIGJvb2wpIOKGkiB1bmNoYW5nZWQKICogLSBEYXRlVGltZUludGVyZmFjZSDihpIgdW5jaGFuZ2VkCiAqIC0gVGhyb3dhYmxlIOKGkiB1bmNoYW5nZWQKICogLSBhcnJheXMg4oaSIHJlY3Vyc2l2ZWx5IG5vcm1hbGl6ZWQKICogLSBvYmplY3RzIHdpdGggX190b1N0cmluZygpIOKGkiBzdHJpbmcgY2FzdAogKiAtIG9iamVjdHMgd2l0aG91dCBfX3RvU3RyaW5nKCkg4oaSIGNsYXNzIG5hbWUKICogLSBvdGhlciB0eXBlcyDihpIgZ2V0X2RlYnVnX3R5cGUoKSByZXN1bHQKICoKICogRXhhbXBsZSB1c2FnZToKICogYGBgcGhwCiAqICRub3JtYWxpemVyID0gdmFsdWVfbm9ybWFsaXplcigpOwogKiAkbm9ybWFsaXplZCA9ICRub3JtYWxpemVyLT5ub3JtYWxpemUoJHZhbHVlKTsKICogYGBgCiAqLw=="},{"repository_path":"src\/bridge\/monolog\/telemetry\/src\/Flow\/Bridge\/Monolog\/Telemetry\/DSL\/functions.php","start_line_in_file":65,"slug":"severity-mapper","name":"severity_mapper","namespace":"Flow\\Bridge\\Monolog\\Telemetry\\DSL","parameters":[{"name":"customMapping","type":[{"name":"array","namespace":null,"is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"SeverityMapper","namespace":"Flow\\Bridge\\Monolog\\Telemetry","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"MONOLOG_TELEMETRY_BRIDGE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFNldmVyaXR5TWFwcGVyIGZvciBtYXBwaW5nIE1vbm9sb2cgbGV2ZWxzIHRvIFRlbGVtZXRyeSBzZXZlcml0aWVzLgogKgogKiBAcGFyYW0gbnVsbHxhcnJheTxpbnQsIFNldmVyaXR5PiAkY3VzdG9tTWFwcGluZyBPcHRpb25hbCBjdXN0b20gbWFwcGluZyAoTW9ub2xvZyBMZXZlbCB2YWx1ZSA9PiBUZWxlbWV0cnkgU2V2ZXJpdHkpCiAqCiAqIEV4YW1wbGUgd2l0aCBkZWZhdWx0IG1hcHBpbmc6CiAqIGBgYHBocAogKiAkbWFwcGVyID0gc2V2ZXJpdHlfbWFwcGVyKCk7CiAqIGBgYAogKgogKiBFeGFtcGxlIHdpdGggY3VzdG9tIG1hcHBpbmc6CiAqIGBgYHBocAogKiB1c2UgTW9ub2xvZ1xMZXZlbDsKICogdXNlIEZsb3dcVGVsZW1ldHJ5XExvZ2dlclxTZXZlcml0eTsKICoKICogJG1hcHBlciA9IHNldmVyaXR5X21hcHBlcihbCiAqICAgICBMZXZlbDo6RGVidWctPnZhbHVlID0+IFNldmVyaXR5OjpERUJVRywKICogICAgIExldmVsOjpJbmZvLT52YWx1ZSA9PiBTZXZlcml0eTo6SU5GTywKICogICAgIExldmVsOjpOb3RpY2UtPnZhbHVlID0+IFNldmVyaXR5OjpXQVJOLCAgLy8gQ3VzdG9tOiBOT1RJQ0Ug4oaSIFdBUk4gaW5zdGVhZCBvZiBJTkZPCiAqICAgICBMZXZlbDo6V2FybmluZy0+dmFsdWUgPT4gU2V2ZXJpdHk6OldBUk4sCiAqICAgICBMZXZlbDo6RXJyb3ItPnZhbHVlID0+IFNldmVyaXR5OjpFUlJPUiwKICogICAgIExldmVsOjpDcml0aWNhbC0+dmFsdWUgPT4gU2V2ZXJpdHk6OkZBVEFMLAogKiAgICAgTGV2ZWw6OkFsZXJ0LT52YWx1ZSA9PiBTZXZlcml0eTo6RkFUQUwsCiAqICAgICBMZXZlbDo6RW1lcmdlbmN5LT52YWx1ZSA9PiBTZXZlcml0eTo6RkFUQUwsCiAqIF0pOwogKiBgYGAKICov"},{"repository_path":"src\/bridge\/monolog\/telemetry\/src\/Flow\/Bridge\/Monolog\/Telemetry\/DSL\/functions.php","start_line_in_file":99,"slug":"log-record-converter","name":"log_record_converter","namespace":"Flow\\Bridge\\Monolog\\Telemetry\\DSL","parameters":[{"name":"severityMapper","type":[{"name":"SeverityMapper","namespace":"Flow\\Bridge\\Monolog\\Telemetry","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"},{"name":"valueNormalizer","type":[{"name":"ValueNormalizer","namespace":"Flow\\Bridge\\Monolog\\Telemetry","is_nullable":true,"is_variadic":false}],"has_default_value":true,"is_nullable":true,"is_variadic":false,"default_value":"null"}],"return_type":[{"name":"LogRecordConverter","namespace":"Flow\\Bridge\\Monolog\\Telemetry","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"MONOLOG_TELEMETRY_BRIDGE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIExvZ1JlY29yZENvbnZlcnRlciBmb3IgY29udmVydGluZyBNb25vbG9nIExvZ1JlY29yZCB0byBUZWxlbWV0cnkgTG9nUmVjb3JkLgogKgogKiBUaGUgY29udmVydGVyIGhhbmRsZXM6CiAqIC0gU2V2ZXJpdHkgbWFwcGluZyBmcm9tIE1vbm9sb2cgTGV2ZWwgdG8gVGVsZW1ldHJ5IFNldmVyaXR5CiAqIC0gTWVzc2FnZSBib2R5IGNvbnZlcnNpb24KICogLSBDaGFubmVsIGFuZCBsZXZlbCBuYW1lIGFzIG1vbm9sb2cuKiBhdHRyaWJ1dGVzCiAqIC0gQ29udGV4dCB2YWx1ZXMgYXMgY29udGV4dC4qIGF0dHJpYnV0ZXMgKFRocm93YWJsZXMgdXNlIHNldEV4Y2VwdGlvbigpKQogKiAtIEV4dHJhIHZhbHVlcyBhcyBleHRyYS4qIGF0dHJpYnV0ZXMKICoKICogQHBhcmFtIG51bGx8U2V2ZXJpdHlNYXBwZXIgJHNldmVyaXR5TWFwcGVyIEN1c3RvbSBzZXZlcml0eSBtYXBwZXIgKGRlZmF1bHRzIHRvIHN0YW5kYXJkIG1hcHBpbmcpCiAqIEBwYXJhbSBudWxsfFZhbHVlTm9ybWFsaXplciAkdmFsdWVOb3JtYWxpemVyIEN1c3RvbSB2YWx1ZSBub3JtYWxpemVyIChkZWZhdWx0cyB0byBzdGFuZGFyZCBub3JtYWxpemVyKQogKgogKiBFeGFtcGxlIHVzYWdlOgogKiBgYGBwaHAKICogJGNvbnZlcnRlciA9IGxvZ19yZWNvcmRfY29udmVydGVyKCk7CiAqICR0ZWxlbWV0cnlSZWNvcmQgPSAkY29udmVydGVyLT5jb252ZXJ0KCRtb25vbG9nUmVjb3JkKTsKICogYGBgCiAqCiAqIEV4YW1wbGUgd2l0aCBjdXN0b20gbWFwcGVyOgogKiBgYGBwaHAKICogJGNvbnZlcnRlciA9IGxvZ19yZWNvcmRfY29udmVydGVyKAogKiAgICAgc2V2ZXJpdHlNYXBwZXI6IHNldmVyaXR5X21hcHBlcihbCiAqICAgICAgICAgTGV2ZWw6OkRlYnVnLT52YWx1ZSA9PiBTZXZlcml0eTo6VFJBQ0UsCiAqICAgICBdKQogKiApOwogKiBgYGAKICov"},{"repository_path":"src\/bridge\/monolog\/telemetry\/src\/Flow\/Bridge\/Monolog\/Telemetry\/DSL\/functions.php","start_line_in_file":144,"slug":"telemetry-handler","name":"telemetry_handler","namespace":"Flow\\Bridge\\Monolog\\Telemetry\\DSL","parameters":[{"name":"logger","type":[{"name":"Logger","namespace":"Flow\\Telemetry\\Logger","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"converter","type":[{"name":"LogRecordConverter","namespace":"Flow\\Bridge\\Monolog\\Telemetry","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Bridge\\Monolog\\Telemetry\\LogRecordConverter::..."},{"name":"level","type":[{"name":"Level","namespace":"Monolog","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Monolog\\Level::..."},{"name":"bubble","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"}],"return_type":[{"name":"TelemetryHandler","namespace":"Flow\\Bridge\\Monolog\\Telemetry","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"MONOLOG_TELEMETRY_BRIDGE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFRlbGVtZXRyeUhhbmRsZXIgZm9yIGZvcndhcmRpbmcgTW9ub2xvZyBsb2dzIHRvIEZsb3cgVGVsZW1ldHJ5LgogKgogKiBAcGFyYW0gTG9nZ2VyICRsb2dnZXIgVGhlIEZsb3cgVGVsZW1ldHJ5IGxvZ2dlciB0byBmb3J3YXJkIGxvZ3MgdG8KICogQHBhcmFtIExvZ1JlY29yZENvbnZlcnRlciAkY29udmVydGVyIENvbnZlcnRlciB0byB0cmFuc2Zvcm0gTW9ub2xvZyBMb2dSZWNvcmQgdG8gVGVsZW1ldHJ5IExvZ1JlY29yZAogKiBAcGFyYW0gTGV2ZWwgJGxldmVsIFRoZSBtaW5pbXVtIGxvZ2dpbmcgbGV2ZWwgYXQgd2hpY2ggdGhpcyBoYW5kbGVyIHdpbGwgYmUgdHJpZ2dlcmVkCiAqIEBwYXJhbSBib29sICRidWJibGUgV2hldGhlciBtZXNzYWdlcyBoYW5kbGVkIGJ5IHRoaXMgaGFuZGxlciBzaG91bGQgYnViYmxlIHVwIHRvIG90aGVyIGhhbmRsZXJzCiAqCiAqIEV4YW1wbGUgdXNhZ2U6CiAqIGBgYHBocAogKiB1c2UgTW9ub2xvZ1xMb2dnZXIgYXMgTW9ub2xvZ0xvZ2dlcjsKICogdXNlIGZ1bmN0aW9uIEZsb3dcQnJpZGdlXE1vbm9sb2dcVGVsZW1ldHJ5XERTTFx0ZWxlbWV0cnlfaGFuZGxlcjsKICogdXNlIGZ1bmN0aW9uIEZsb3dcVGVsZW1ldHJ5XERTTFx0ZWxlbWV0cnk7CiAqCiAqICR0ZWxlbWV0cnkgPSB0ZWxlbWV0cnkoKTsKICogJGxvZ2dlciA9ICR0ZWxlbWV0cnktPmxvZ2dlcignbXktYXBwJyk7CiAqCiAqICRtb25vbG9nID0gbmV3IE1vbm9sb2dMb2dnZXIoJ2NoYW5uZWwnKTsKICogJG1vbm9sb2ctPnB1c2hIYW5kbGVyKHRlbGVtZXRyeV9oYW5kbGVyKCRsb2dnZXIpKTsKICoKICogJG1vbm9sb2ctPmluZm8oJ1VzZXIgbG9nZ2VkIGluJywgWyd1c2VyX2lkJyA9PiAxMjNdKTsKICogLy8g4oaSIEZvcndhcmRlZCB0byBGbG93IFRlbGVtZXRyeSB3aXRoIElORk8gc2V2ZXJpdHkKICogYGBgCiAqCiAqIEV4YW1wbGUgd2l0aCBjdXN0b20gY29udmVydGVyOgogKiBgYGBwaHAKICogJGNvbnZlcnRlciA9IGxvZ19yZWNvcmRfY29udmVydGVyKAogKiAgICAgc2V2ZXJpdHlNYXBwZXI6IHNldmVyaXR5X21hcHBlcihbCiAqICAgICAgICAgTGV2ZWw6OkRlYnVnLT52YWx1ZSA9PiBTZXZlcml0eTo6VFJBQ0UsCiAqICAgICBdKQogKiApOwogKiAkbW9ub2xvZy0+cHVzaEhhbmRsZXIodGVsZW1ldHJ5X2hhbmRsZXIoJGxvZ2dlciwgJGNvbnZlcnRlcikpOwogKiBgYGAKICov"},{"repository_path":"src\/bridge\/symfony\/http-foundation-telemetry\/src\/Flow\/Bridge\/Symfony\/HttpFoundationTelemetry\/DSL\/functions.php","start_line_in_file":12,"slug":"symfony-request-carrier","name":"symfony_request_carrier","namespace":"Flow\\Bridge\\Symfony\\HttpFoundationTelemetry\\DSL","parameters":[{"name":"request","type":[{"name":"Request","namespace":"Symfony\\Component\\HttpFoundation","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"RequestCarrier","namespace":"Flow\\Bridge\\Symfony\\HttpFoundationTelemetry","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"SYMFONY_HTTP_FOUNDATION_TELEMETRY_BRIDGE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/bridge\/symfony\/http-foundation-telemetry\/src\/Flow\/Bridge\/Symfony\/HttpFoundationTelemetry\/DSL\/functions.php","start_line_in_file":18,"slug":"symfony-response-carrier","name":"symfony_response_carrier","namespace":"Flow\\Bridge\\Symfony\\HttpFoundationTelemetry\\DSL","parameters":[{"name":"response","type":[{"name":"Response","namespace":"Symfony\\Component\\HttpFoundation","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ResponseCarrier","namespace":"Flow\\Bridge\\Symfony\\HttpFoundationTelemetry","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"SYMFONY_HTTP_FOUNDATION_TELEMETRY_BRIDGE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/bridge\/psr7\/telemetry\/src\/Flow\/Bridge\/Psr7\/Telemetry\/DSL\/functions.php","start_line_in_file":12,"slug":"psr7-request-carrier","name":"psr7_request_carrier","namespace":"Flow\\Bridge\\Psr7\\Telemetry\\DSL","parameters":[{"name":"request","type":[{"name":"ServerRequestInterface","namespace":"Psr\\Http\\Message","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"RequestCarrier","namespace":"Flow\\Bridge\\Psr7\\Telemetry","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PSR7_TELEMETRY_BRIDGE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/bridge\/psr7\/telemetry\/src\/Flow\/Bridge\/Psr7\/Telemetry\/DSL\/functions.php","start_line_in_file":18,"slug":"psr7-response-carrier","name":"psr7_response_carrier","namespace":"Flow\\Bridge\\Psr7\\Telemetry\\DSL","parameters":[{"name":"response","type":[{"name":"ResponseInterface","namespace":"Psr\\Http\\Message","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"ResponseCarrier","namespace":"Flow\\Bridge\\Psr7\\Telemetry","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PSR7_TELEMETRY_BRIDGE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/bridge\/psr18\/telemetry\/src\/Flow\/Bridge\/Psr18\/Telemetry\/DSL\/functions.php","start_line_in_file":13,"slug":"psr18-traceable-client","name":"psr18_traceable_client","namespace":"Flow\\Bridge\\Psr18\\Telemetry\\DSL","parameters":[{"name":"client","type":[{"name":"ClientInterface","namespace":"Psr\\Http\\Client","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"telemetry","type":[{"name":"Telemetry","namespace":"Flow\\Telemetry","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"PSR18TraceableClient","namespace":"Flow\\Bridge\\Psr18\\Telemetry","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"PSR18_TELEMETRY_BRIDGE","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":null},{"repository_path":"src\/bridge\/telemetry\/otlp\/src\/Flow\/Bridge\/Telemetry\/OTLP\/DSL\/functions.php","start_line_in_file":36,"slug":"otlp-json-serializer","name":"otlp_json_serializer","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\DSL","parameters":[],"return_type":[{"name":"JsonSerializer","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\Serializer","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY_OTLP","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIEpTT04gc2VyaWFsaXplciBmb3IgT1RMUC4KICoKICogUmV0dXJucyBhIEpzb25TZXJpYWxpemVyIHRoYXQgY29udmVydHMgdGVsZW1ldHJ5IGRhdGEgdG8gT1RMUCBKU09OIHdpcmUgZm9ybWF0LgogKiBVc2UgdGhpcyB3aXRoIEh0dHBUcmFuc3BvcnQgZm9yIEpTT04gb3ZlciBIVFRQLgogKgogKiBFeGFtcGxlIHVzYWdlOgogKiBgYGBwaHAKICogJHNlcmlhbGl6ZXIgPSBvdGxwX2pzb25fc2VyaWFsaXplcigpOwogKiAkdHJhbnNwb3J0ID0gb3RscF9odHRwX3RyYW5zcG9ydCgkY2xpZW50LCAkcmVxRmFjdG9yeSwgJHN0cmVhbUZhY3RvcnksICRlbmRwb2ludCwgJHNlcmlhbGl6ZXIpOwogKiBgYGAKICov"},{"repository_path":"src\/bridge\/telemetry\/otlp\/src\/Flow\/Bridge\/Telemetry\/OTLP\/DSL\/functions.php","start_line_in_file":58,"slug":"otlp-protobuf-serializer","name":"otlp_protobuf_serializer","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\DSL","parameters":[],"return_type":[{"name":"ProtobufSerializer","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\Serializer","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY_OTLP","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIFByb3RvYnVmIHNlcmlhbGl6ZXIgZm9yIE9UTFAuCiAqCiAqIFJldHVybnMgYSBQcm90b2J1ZlNlcmlhbGl6ZXIgdGhhdCBjb252ZXJ0cyB0ZWxlbWV0cnkgZGF0YSB0byBPVExQIFByb3RvYnVmIGJpbmFyeSBmb3JtYXQuCiAqIFVzZSB0aGlzIHdpdGggSHR0cFRyYW5zcG9ydCBmb3IgUHJvdG9idWYgb3ZlciBIVFRQLCBvciB3aXRoIEdycGNUcmFuc3BvcnQuCiAqCiAqIFJlcXVpcmVzOgogKiAtIGdvb2dsZS9wcm90b2J1ZiBwYWNrYWdlCiAqIC0gb3Blbi10ZWxlbWV0cnkvZ2VuLW90bHAtcHJvdG9idWYgcGFja2FnZQogKgogKiBFeGFtcGxlIHVzYWdlOgogKiBgYGBwaHAKICogJHNlcmlhbGl6ZXIgPSBvdGxwX3Byb3RvYnVmX3NlcmlhbGl6ZXIoKTsKICogJHRyYW5zcG9ydCA9IG90bHBfaHR0cF90cmFuc3BvcnQoJGNsaWVudCwgJHJlcUZhY3RvcnksICRzdHJlYW1GYWN0b3J5LCAkZW5kcG9pbnQsICRzZXJpYWxpemVyKTsKICogYGBgCiAqLw=="},{"repository_path":"src\/bridge\/telemetry\/otlp\/src\/Flow\/Bridge\/Telemetry\/OTLP\/DSL\/functions.php","start_line_in_file":98,"slug":"otlp-http-transport","name":"otlp_http_transport","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\DSL","parameters":[{"name":"client","type":[{"name":"ClientInterface","namespace":"Psr\\Http\\Client","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"requestFactory","type":[{"name":"RequestFactoryInterface","namespace":"Psr\\Http\\Message","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"streamFactory","type":[{"name":"StreamFactoryInterface","namespace":"Psr\\Http\\Message","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"endpoint","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"serializer","type":[{"name":"Serializer","namespace":"Flow\\Telemetry\\Serializer","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"headers","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"}],"return_type":[{"name":"HttpTransport","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\Transport","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY_OTLP","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBIVFRQIHRyYW5zcG9ydCBmb3IgT1RMUCBlbmRwb2ludHMuCiAqCiAqIENyZWF0ZXMgYW4gSHR0cFRyYW5zcG9ydCBjb25maWd1cmVkIHRvIHNlbmQgdGVsZW1ldHJ5IGRhdGEgdG8gYW4gT1RMUC1jb21wYXRpYmxlCiAqIGVuZHBvaW50IHVzaW5nIFBTUi0xOCBIVFRQIGNsaWVudC4gU3VwcG9ydHMgYm90aCBKU09OIGFuZCBQcm90b2J1ZiBmb3JtYXRzLgogKgogKiBFeGFtcGxlIHVzYWdlOgogKiBgYGBwaHAKICogLy8gSlNPTiBvdmVyIEhUVFAKICogJHRyYW5zcG9ydCA9IG90bHBfaHR0cF90cmFuc3BvcnQoCiAqICAgICBjbGllbnQ6ICRjbGllbnQsCiAqICAgICByZXF1ZXN0RmFjdG9yeTogJHBzcjE3RmFjdG9yeSwKICogICAgIHN0cmVhbUZhY3Rvcnk6ICRwc3IxN0ZhY3RvcnksCiAqICAgICBlbmRwb2ludDogJ2h0dHA6Ly9sb2NhbGhvc3Q6NDMxOCcsCiAqICAgICBzZXJpYWxpemVyOiBvdGxwX2pzb25fc2VyaWFsaXplcigpLAogKiApOwogKgogKiAvLyBQcm90b2J1ZiBvdmVyIEhUVFAKICogJHRyYW5zcG9ydCA9IG90bHBfaHR0cF90cmFuc3BvcnQoCiAqICAgICBjbGllbnQ6ICRjbGllbnQsCiAqICAgICByZXF1ZXN0RmFjdG9yeTogJHBzcjE3RmFjdG9yeSwKICogICAgIHN0cmVhbUZhY3Rvcnk6ICRwc3IxN0ZhY3RvcnksCiAqICAgICBlbmRwb2ludDogJ2h0dHA6Ly9sb2NhbGhvc3Q6NDMxOCcsCiAqICAgICBzZXJpYWxpemVyOiBvdGxwX3Byb3RvYnVmX3NlcmlhbGl6ZXIoKSwKICogKTsKICogYGBgCiAqCiAqIEBwYXJhbSBDbGllbnRJbnRlcmZhY2UgJGNsaWVudCBQU1ItMTggSFRUUCBjbGllbnQKICogQHBhcmFtIFJlcXVlc3RGYWN0b3J5SW50ZXJmYWNlICRyZXF1ZXN0RmFjdG9yeSBQU1ItMTcgcmVxdWVzdCBmYWN0b3J5CiAqIEBwYXJhbSBTdHJlYW1GYWN0b3J5SW50ZXJmYWNlICRzdHJlYW1GYWN0b3J5IFBTUi0xNyBzdHJlYW0gZmFjdG9yeQogKiBAcGFyYW0gc3RyaW5nICRlbmRwb2ludCBPVExQIGVuZHBvaW50IFVSTCAoZS5nLiwgJ2h0dHA6Ly9sb2NhbGhvc3Q6NDMxOCcpCiAqIEBwYXJhbSBTZXJpYWxpemVyICRzZXJpYWxpemVyIFNlcmlhbGl6ZXIgZm9yIGVuY29kaW5nIHRlbGVtZXRyeSBkYXRhIChKU09OIG9yIFByb3RvYnVmKQogKiBAcGFyYW0gYXJyYXk8c3RyaW5nLCBzdHJpbmc+ICRoZWFkZXJzIEFkZGl0aW9uYWwgaGVhZGVycyB0byBpbmNsdWRlIGluIHJlcXVlc3RzCiAqLw=="},{"repository_path":"src\/bridge\/telemetry\/otlp\/src\/Flow\/Bridge\/Telemetry\/OTLP\/DSL\/functions.php","start_line_in_file":134,"slug":"otlp-grpc-transport","name":"otlp_grpc_transport","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\DSL","parameters":[{"name":"endpoint","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"serializer","type":[{"name":"ProtobufSerializer","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\Serializer","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"headers","type":[{"name":"array","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"[]"},{"name":"insecure","type":[{"name":"bool","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"true"}],"return_type":[{"name":"GrpcTransport","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\Transport","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY_OTLP","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGdSUEMgdHJhbnNwb3J0IGZvciBPVExQIGVuZHBvaW50cy4KICoKICogQ3JlYXRlcyBhIEdycGNUcmFuc3BvcnQgY29uZmlndXJlZCB0byBzZW5kIHRlbGVtZXRyeSBkYXRhIHRvIGFuIE9UTFAtY29tcGF0aWJsZQogKiBlbmRwb2ludCB1c2luZyBnUlBDIHByb3RvY29sIHdpdGggUHJvdG9idWYgc2VyaWFsaXphdGlvbi4KICoKICogUmVxdWlyZXM6CiAqIC0gZXh0LWdycGMgUEhQIGV4dGVuc2lvbgogKiAtIGdvb2dsZS9wcm90b2J1ZiBwYWNrYWdlCiAqIC0gb3Blbi10ZWxlbWV0cnkvZ2VuLW90bHAtcHJvdG9idWYgcGFja2FnZQogKgogKiBFeGFtcGxlIHVzYWdlOgogKiBgYGBwaHAKICogJHRyYW5zcG9ydCA9IG90bHBfZ3JwY190cmFuc3BvcnQoCiAqICAgICBlbmRwb2ludDogJ2xvY2FsaG9zdDo0MzE3JywKICogICAgIHNlcmlhbGl6ZXI6IG90bHBfcHJvdG9idWZfc2VyaWFsaXplcigpLAogKiApOwogKiBgYGAKICoKICogQHBhcmFtIHN0cmluZyAkZW5kcG9pbnQgZ1JQQyBlbmRwb2ludCAoZS5nLiwgJ2xvY2FsaG9zdDo0MzE3JykKICogQHBhcmFtIFByb3RvYnVmU2VyaWFsaXplciAkc2VyaWFsaXplciBQcm90b2J1ZiBzZXJpYWxpemVyIGZvciBlbmNvZGluZyB0ZWxlbWV0cnkgZGF0YQogKiBAcGFyYW0gYXJyYXk8c3RyaW5nLCBzdHJpbmc+ICRoZWFkZXJzIEFkZGl0aW9uYWwgaGVhZGVycyAobWV0YWRhdGEpIHRvIGluY2x1ZGUgaW4gcmVxdWVzdHMKICogQHBhcmFtIGJvb2wgJGluc2VjdXJlIFdoZXRoZXIgdG8gdXNlIGluc2VjdXJlIGNoYW5uZWwgY3JlZGVudGlhbHMgKGRlZmF1bHQgdHJ1ZSBmb3IgbG9jYWwgZGV2KQogKi8="},{"repository_path":"src\/bridge\/telemetry\/otlp\/src\/Flow\/Bridge\/Telemetry\/OTLP\/DSL\/functions.php","start_line_in_file":162,"slug":"otlp-curl-options","name":"otlp_curl_options","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\DSL","parameters":[],"return_type":[{"name":"CurlTransportOptions","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\Transport","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY_OTLP","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBjdXJsIHRyYW5zcG9ydCBvcHRpb25zIGZvciBPVExQLgogKgogKiBSZXR1cm5zIGEgQ3VybFRyYW5zcG9ydE9wdGlvbnMgYnVpbGRlciBmb3IgY29uZmlndXJpbmcgY3VybCB0cmFuc3BvcnQgc2V0dGluZ3MKICogdXNpbmcgYSBmbHVlbnQgaW50ZXJmYWNlLgogKgogKiBFeGFtcGxlIHVzYWdlOgogKiBgYGBwaHAKICogJG9wdGlvbnMgPSBvdGxwX2N1cmxfb3B0aW9ucygpCiAqICAgICAtPndpdGhUaW1lb3V0KDYwKQogKiAgICAgLT53aXRoQ29ubmVjdFRpbWVvdXQoMTUpCiAqICAgICAtPndpdGhIZWFkZXIoJ0F1dGhvcml6YXRpb24nLCAnQmVhcmVyIHRva2VuJykKICogICAgIC0+d2l0aENvbXByZXNzaW9uKCkKICogICAgIC0+d2l0aFNzbFZlcmlmaWNhdGlvbih2ZXJpZnlQZWVyOiB0cnVlKTsKICoKICogJHRyYW5zcG9ydCA9IG90bHBfY3VybF90cmFuc3BvcnQoJGVuZHBvaW50LCAkc2VyaWFsaXplciwgJG9wdGlvbnMpOwogKiBgYGAKICov"},{"repository_path":"src\/bridge\/telemetry\/otlp\/src\/Flow\/Bridge\/Telemetry\/OTLP\/DSL\/functions.php","start_line_in_file":201,"slug":"otlp-curl-transport","name":"otlp_curl_transport","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\DSL","parameters":[{"name":"endpoint","type":[{"name":"string","namespace":null,"is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"serializer","type":[{"name":"Serializer","namespace":"Flow\\Telemetry\\Serializer","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"options","type":[{"name":"CurlTransportOptions","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\Transport","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Bridge\\Telemetry\\OTLP\\Transport\\CurlTransportOptions::..."}],"return_type":[{"name":"CurlTransport","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\Transport","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY_OTLP","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBhc3luYyBjdXJsIHRyYW5zcG9ydCBmb3IgT1RMUCBlbmRwb2ludHMuCiAqCiAqIENyZWF0ZXMgYSBDdXJsVHJhbnNwb3J0IHRoYXQgdXNlcyBjdXJsX211bHRpIGZvciBub24tYmxvY2tpbmcgSS9PLgogKiBVbmxpa2UgSHR0cFRyYW5zcG9ydCAoUFNSLTE4KSwgdGhpcyB0cmFuc3BvcnQgcXVldWVzIHJlcXVlc3RzIGFuZCBleGVjdXRlcwogKiB0aGVtIGFzeW5jaHJvbm91c2x5LiBDb21wbGV0ZWQgcmVxdWVzdHMgYXJlIHByb2Nlc3NlZCBvbiBzdWJzZXF1ZW50IHNlbmQoKQogKiBjYWxscyBvciBvbiBzaHV0ZG93bigpLgogKgogKiBSZXF1aXJlczogZXh0LWN1cmwgUEhQIGV4dGVuc2lvbgogKgogKiBFeGFtcGxlIHVzYWdlOgogKiBgYGBwaHAKICogLy8gSlNPTiBvdmVyIEhUVFAgKGFzeW5jKSB3aXRoIGRlZmF1bHQgb3B0aW9ucwogKiAkdHJhbnNwb3J0ID0gb3RscF9jdXJsX3RyYW5zcG9ydCgKICogICAgIGVuZHBvaW50OiAnaHR0cDovL2xvY2FsaG9zdDo0MzE4JywKICogICAgIHNlcmlhbGl6ZXI6IG90bHBfanNvbl9zZXJpYWxpemVyKCksCiAqICk7CiAqCiAqIC8vIFByb3RvYnVmIG92ZXIgSFRUUCAoYXN5bmMpIHdpdGggY3VzdG9tIG9wdGlvbnMKICogJHRyYW5zcG9ydCA9IG90bHBfY3VybF90cmFuc3BvcnQoCiAqICAgICBlbmRwb2ludDogJ2h0dHA6Ly9sb2NhbGhvc3Q6NDMxOCcsCiAqICAgICBzZXJpYWxpemVyOiBvdGxwX3Byb3RvYnVmX3NlcmlhbGl6ZXIoKSwKICogICAgIG9wdGlvbnM6IG90bHBfY3VybF9vcHRpb25zKCkKICogICAgICAgICAtPndpdGhUaW1lb3V0KDYwKQogKiAgICAgICAgIC0+d2l0aEhlYWRlcignQXV0aG9yaXphdGlvbicsICdCZWFyZXIgdG9rZW4nKQogKiAgICAgICAgIC0+d2l0aENvbXByZXNzaW9uKCksCiAqICk7CiAqIGBgYAogKgogKiBAcGFyYW0gc3RyaW5nICRlbmRwb2ludCBPVExQIGVuZHBvaW50IFVSTCAoZS5nLiwgJ2h0dHA6Ly9sb2NhbGhvc3Q6NDMxOCcpCiAqIEBwYXJhbSBTZXJpYWxpemVyICRzZXJpYWxpemVyIFNlcmlhbGl6ZXIgZm9yIGVuY29kaW5nIHRlbGVtZXRyeSBkYXRhIChKU09OIG9yIFByb3RvYnVmKQogKiBAcGFyYW0gQ3VybFRyYW5zcG9ydE9wdGlvbnMgJG9wdGlvbnMgVHJhbnNwb3J0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucwogKi8="},{"repository_path":"src\/bridge\/telemetry\/otlp\/src\/Flow\/Bridge\/Telemetry\/OTLP\/DSL\/functions.php","start_line_in_file":221,"slug":"otlp-span-exporter","name":"otlp_span_exporter","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\DSL","parameters":[{"name":"transport","type":[{"name":"Transport","namespace":"Flow\\Telemetry\\Transport","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OTLPSpanExporter","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\Exporter","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY_OTLP","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBPVExQIHNwYW4gZXhwb3J0ZXIuCiAqCiAqIEV4YW1wbGUgdXNhZ2U6CiAqIGBgYHBocAogKiAkZXhwb3J0ZXIgPSBvdGxwX3NwYW5fZXhwb3J0ZXIoJHRyYW5zcG9ydCk7CiAqICRwcm9jZXNzb3IgPSBiYXRjaGluZ19zcGFuX3Byb2Nlc3NvcigkZXhwb3J0ZXIpOwogKiBgYGAKICoKICogQHBhcmFtIFRyYW5zcG9ydCAkdHJhbnNwb3J0IFRoZSB0cmFuc3BvcnQgZm9yIHNlbmRpbmcgc3BhbiBkYXRhCiAqLw=="},{"repository_path":"src\/bridge\/telemetry\/otlp\/src\/Flow\/Bridge\/Telemetry\/OTLP\/DSL\/functions.php","start_line_in_file":238,"slug":"otlp-metric-exporter","name":"otlp_metric_exporter","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\DSL","parameters":[{"name":"transport","type":[{"name":"Transport","namespace":"Flow\\Telemetry\\Transport","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OTLPMetricExporter","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\Exporter","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY_OTLP","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBPVExQIG1ldHJpYyBleHBvcnRlci4KICoKICogRXhhbXBsZSB1c2FnZToKICogYGBgcGhwCiAqICRleHBvcnRlciA9IG90bHBfbWV0cmljX2V4cG9ydGVyKCR0cmFuc3BvcnQpOwogKiAkcHJvY2Vzc29yID0gYmF0Y2hpbmdfbWV0cmljX3Byb2Nlc3NvcigkZXhwb3J0ZXIpOwogKiBgYGAKICoKICogQHBhcmFtIFRyYW5zcG9ydCAkdHJhbnNwb3J0IFRoZSB0cmFuc3BvcnQgZm9yIHNlbmRpbmcgbWV0cmljIGRhdGEKICov"},{"repository_path":"src\/bridge\/telemetry\/otlp\/src\/Flow\/Bridge\/Telemetry\/OTLP\/DSL\/functions.php","start_line_in_file":255,"slug":"otlp-log-exporter","name":"otlp_log_exporter","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\DSL","parameters":[{"name":"transport","type":[{"name":"Transport","namespace":"Flow\\Telemetry\\Transport","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null}],"return_type":[{"name":"OTLPLogExporter","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\Exporter","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY_OTLP","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhbiBPVExQIGxvZyBleHBvcnRlci4KICoKICogRXhhbXBsZSB1c2FnZToKICogYGBgcGhwCiAqICRleHBvcnRlciA9IG90bHBfbG9nX2V4cG9ydGVyKCR0cmFuc3BvcnQpOwogKiAkcHJvY2Vzc29yID0gYmF0Y2hpbmdfbG9nX3Byb2Nlc3NvcigkZXhwb3J0ZXIpOwogKiBgYGAKICoKICogQHBhcmFtIFRyYW5zcG9ydCAkdHJhbnNwb3J0IFRoZSB0cmFuc3BvcnQgZm9yIHNlbmRpbmcgbG9nIGRhdGEKICov"},{"repository_path":"src\/bridge\/telemetry\/otlp\/src\/Flow\/Bridge\/Telemetry\/OTLP\/DSL\/functions.php","start_line_in_file":276,"slug":"otlp-tracer-provider","name":"otlp_tracer_provider","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\DSL","parameters":[{"name":"processor","type":[{"name":"SpanProcessor","namespace":"Flow\\Telemetry\\Tracer","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"clock","type":[{"name":"ClockInterface","namespace":"Psr\\Clock","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"sampler","type":[{"name":"Sampler","namespace":"Flow\\Telemetry\\Tracer\\Sampler","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Telemetry\\Tracer\\Sampler\\AlwaysOnSampler::..."},{"name":"contextStorage","type":[{"name":"ContextStorage","namespace":"Flow\\Telemetry\\Context","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Telemetry\\Context\\MemoryContextStorage::..."}],"return_type":[{"name":"TracerProvider","namespace":"Flow\\Telemetry\\Tracer","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY_OTLP","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIHRyYWNlciBwcm92aWRlciBjb25maWd1cmVkIGZvciBPVExQIGV4cG9ydC4KICoKICogRXhhbXBsZSB1c2FnZToKICogYGBgcGhwCiAqICRwcm9jZXNzb3IgPSBiYXRjaGluZ19zcGFuX3Byb2Nlc3NvcihvdGxwX3NwYW5fZXhwb3J0ZXIoJHRyYW5zcG9ydCkpOwogKiAkcHJvdmlkZXIgPSBvdGxwX3RyYWNlcl9wcm92aWRlcigkcHJvY2Vzc29yLCAkY2xvY2spOwogKiAkdHJhY2VyID0gJHByb3ZpZGVyLT50cmFjZXIoJHJlc291cmNlLCAnbXktc2VydmljZScsICcxLjAuMCcpOwogKiBgYGAKICoKICogQHBhcmFtIFNwYW5Qcm9jZXNzb3IgJHByb2Nlc3NvciBUaGUgcHJvY2Vzc29yIGZvciBoYW5kbGluZyBzcGFucwogKiBAcGFyYW0gQ2xvY2tJbnRlcmZhY2UgJGNsb2NrIFRoZSBjbG9jayBmb3IgdGltZXN0YW1wcwogKiBAcGFyYW0gU2FtcGxlciAkc2FtcGxlciBUaGUgc2FtcGxlciBmb3IgZGVjaWRpbmcgd2hldGhlciB0byByZWNvcmQgc3BhbnMKICogQHBhcmFtIENvbnRleHRTdG9yYWdlICRjb250ZXh0U3RvcmFnZSBUaGUgY29udGV4dCBzdG9yYWdlIGZvciBwcm9wYWdhdGluZyB0cmFjZSBjb250ZXh0CiAqLw=="},{"repository_path":"src\/bridge\/telemetry\/otlp\/src\/Flow\/Bridge\/Telemetry\/OTLP\/DSL\/functions.php","start_line_in_file":300,"slug":"otlp-meter-provider","name":"otlp_meter_provider","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\DSL","parameters":[{"name":"processor","type":[{"name":"MetricProcessor","namespace":"Flow\\Telemetry\\Meter","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"clock","type":[{"name":"ClockInterface","namespace":"Psr\\Clock","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"temporality","type":[{"name":"AggregationTemporality","namespace":"Flow\\Telemetry\\Meter","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Telemetry\\Meter\\AggregationTemporality::..."}],"return_type":[{"name":"MeterProvider","namespace":"Flow\\Telemetry\\Meter","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY_OTLP","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIG1ldGVyIHByb3ZpZGVyIGNvbmZpZ3VyZWQgZm9yIE9UTFAgZXhwb3J0LgogKgogKiBFeGFtcGxlIHVzYWdlOgogKiBgYGBwaHAKICogJHByb2Nlc3NvciA9IGJhdGNoaW5nX21ldHJpY19wcm9jZXNzb3Iob3RscF9tZXRyaWNfZXhwb3J0ZXIoJHRyYW5zcG9ydCkpOwogKiAkcHJvdmlkZXIgPSBvdGxwX21ldGVyX3Byb3ZpZGVyKCRwcm9jZXNzb3IsICRjbG9jayk7CiAqICRtZXRlciA9ICRwcm92aWRlci0+bWV0ZXIoJHJlc291cmNlLCAnbXktc2VydmljZScsICcxLjAuMCcpOwogKiBgYGAKICoKICogQHBhcmFtIE1ldHJpY1Byb2Nlc3NvciAkcHJvY2Vzc29yIFRoZSBwcm9jZXNzb3IgZm9yIGhhbmRsaW5nIG1ldHJpY3MKICogQHBhcmFtIENsb2NrSW50ZXJmYWNlICRjbG9jayBUaGUgY2xvY2sgZm9yIHRpbWVzdGFtcHMKICogQHBhcmFtIEFnZ3JlZ2F0aW9uVGVtcG9yYWxpdHkgJHRlbXBvcmFsaXR5IFRoZSBhZ2dyZWdhdGlvbiB0ZW1wb3JhbGl0eSBmb3IgbWV0cmljcwogKi8="},{"repository_path":"src\/bridge\/telemetry\/otlp\/src\/Flow\/Bridge\/Telemetry\/OTLP\/DSL\/functions.php","start_line_in_file":323,"slug":"otlp-logger-provider","name":"otlp_logger_provider","namespace":"Flow\\Bridge\\Telemetry\\OTLP\\DSL","parameters":[{"name":"processor","type":[{"name":"LogProcessor","namespace":"Flow\\Telemetry\\Logger","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"clock","type":[{"name":"ClockInterface","namespace":"Psr\\Clock","is_nullable":false,"is_variadic":false}],"has_default_value":false,"is_nullable":false,"is_variadic":false,"default_value":null},{"name":"contextStorage","type":[{"name":"ContextStorage","namespace":"Flow\\Telemetry\\Context","is_nullable":false,"is_variadic":false}],"has_default_value":true,"is_nullable":false,"is_variadic":false,"default_value":"Flow\\Telemetry\\Context\\MemoryContextStorage::..."}],"return_type":[{"name":"LoggerProvider","namespace":"Flow\\Telemetry\\Logger","is_nullable":false,"is_variadic":false}],"attributes":[{"name":"DocumentationDSL","namespace":"Flow\\ETL\\Attribute","arguments":{"module":"TELEMETRY_OTLP","type":"HELPER"}}],"scalar_function_chain":false,"doc_comment":"LyoqCiAqIENyZWF0ZSBhIGxvZ2dlciBwcm92aWRlciBjb25maWd1cmVkIGZvciBPVExQIGV4cG9ydC4KICoKICogRXhhbXBsZSB1c2FnZToKICogYGBgcGhwCiAqICRwcm9jZXNzb3IgPSBiYXRjaGluZ19sb2dfcHJvY2Vzc29yKG90bHBfbG9nX2V4cG9ydGVyKCR0cmFuc3BvcnQpKTsKICogJHByb3ZpZGVyID0gb3RscF9sb2dnZXJfcHJvdmlkZXIoJHByb2Nlc3NvciwgJGNsb2NrKTsKICogJGxvZ2dlciA9ICRwcm92aWRlci0+bG9nZ2VyKCRyZXNvdXJjZSwgJ215LXNlcnZpY2UnLCAnMS4wLjAnKTsKICogYGBgCiAqCiAqIEBwYXJhbSBMb2dQcm9jZXNzb3IgJHByb2Nlc3NvciBUaGUgcHJvY2Vzc29yIGZvciBoYW5kbGluZyBsb2cgcmVjb3JkcwogKiBAcGFyYW0gQ2xvY2tJbnRlcmZhY2UgJGNsb2NrIFRoZSBjbG9jayBmb3IgdGltZXN0YW1wcwogKiBAcGFyYW0gQ29udGV4dFN0b3JhZ2UgJGNvbnRleHRTdG9yYWdlIFRoZSBjb250ZXh0IHN0b3JhZ2UgZm9yIHByb3BhZ2F0aW5nIGNvbnRleHQKICov"}] \ No newline at end of file diff --git a/web/landing/src/Flow/Website/Command/GenerateDSLCompleterCommand.php b/web/landing/src/Flow/Website/Command/GenerateDSLCompleterCommand.php index b91460c75f..c6b5e04548 100644 --- a/web/landing/src/Flow/Website/Command/GenerateDSLCompleterCommand.php +++ b/web/landing/src/Flow/Website/Command/GenerateDSLCompleterCommand.php @@ -4,8 +4,11 @@ namespace Flow\Website\Command; +use function Flow\Filesystem\DSL\path; + use Flow\Website\Model\Documentation\DSLDefinition; use Flow\Website\Service\Documentation\DSLDefinitions; +use Flow\Website\Service\FlowConfigFactory; use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; @@ -23,6 +26,7 @@ public function __construct( private readonly Environment $twig, private readonly DSLDefinitions $dslDefinitions, private readonly string $projectDir, + private readonly FlowConfigFactory $configFactory, ) { parent::__construct(); } @@ -44,11 +48,10 @@ protected function execute(InputInterface $input, OutputInterface $output) : int fn (DSLDefinition $definition) : array => [ 'name' => $definition->name(), 'fullName' => '\\' . $definition->data()['namespace'] . '\\' . $definition->name(), - 'snippet' => $this->buildSnippet($definition), - 'docComment' => $this->formatDocComment($definition), - 'highlightedSignature' => $this->buildHighlightedSignature($definition), + 'doc_comment' => $definition->data()['doc_comment'], 'meta' => 'flow-dsl-' . $this->getTypeName($definition), 'parameters' => $definition->data()['parameters'], + 'return_type' => $definition->data()['return_type'] ?? [], ], $dslFunctions ); @@ -60,14 +63,8 @@ protected function execute(InputInterface $input, OutputInterface $output) : int ]); $outputFile = $this->projectDir . '/assets/codemirror/completions/dsl.js'; - $outputDir = \dirname($outputFile); - - if (!\is_dir($outputDir)) { - \mkdir($outputDir, 0755, true); - $io->info("Created directory: {$outputDir}"); - } - \file_put_contents($outputFile, $content); + $this->configFactory->filesystem()->writeTo(path($outputFile))->append($content)->close(); $io->success("Generated DSL completer: {$outputFile}"); $io->info('Functions included: ' . \count($functionsData)); @@ -75,92 +72,6 @@ protected function execute(InputInterface $input, OutputInterface $output) : int return Command::SUCCESS; } - /** - * @param array{name: string, type?: array, has_default_value: bool, default_value?: ?string} $param - */ - private function buildHighlightedParam(array $param) : string - { - $paramStr = ''; - - if (!empty($param['type'])) { - $paramStr .= '' . $this->formatType($param['type']) . ' '; - } - - $paramStr .= '$' . $param['name'] . ''; - - if ($param['has_default_value'] && isset($param['default_value'])) { - $paramStr .= ' = ' . \htmlspecialchars($param['default_value']) . ''; - } - - return $paramStr; - } - - private function buildHighlightedSignature(DSLDefinition $definition) : string - { - $params = \array_map( - fn (array $param) : string => $this->buildHighlightedParam($param), - $definition->data()['parameters'] - ); - - $signature = '' . $definition->name() . '' - . '(' - . \implode(', ', $params) - . ')'; - - if (!empty($definition->data()['return_type'])) { - $signature .= ' : ' - . '' . $this->formatType($definition->data()['return_type']) . ''; - } - - return $signature; - } - - private function buildSnippet(DSLDefinition $definition) : string - { - $params = $definition->data()['parameters']; - $fullFunctionName = '\\' . $definition->data()['namespace'] . '\\' . $definition->name(); - - if (empty($params)) { - return $fullFunctionName . '()'; - } - - $snippetParams = []; - $tabstop = 1; - - foreach ($params as $param) { - $typeHint = !empty($param['type']) - ? $this->formatType($param['type']) . ' ' - : ''; - - $snippetParams[] = '${' . $tabstop . ':' . $typeHint . '$' . $param['name'] . '}'; - $tabstop++; - } - - return $fullFunctionName . '(' . \implode(', ', $snippetParams) . ')'; - } - - private function formatDocComment(DSLDefinition $definition) : string - { - if (!$definition->hasDocComment()) { - return ''; - } - - $docComment = \preg_replace('/^\/\*\*|\*\/$/', '', $definition->docComment()); - $lines = \explode("\n", (string) $docComment); - $lines = \array_map(static fn (string $line) : string => \preg_replace('/^\s*\*\s?/', '', $line), $lines); - $lines = \array_filter($lines, static fn (string $line) : bool => \trim($line) !== ''); - - return \implode('
', $lines); - } - - /** - * @param array $types - */ - private function formatType(array $types) : string - { - return \implode('|', \array_map(static fn (array $t) : string => $t['name'], $types)); - } - private function getTypeName(DSLDefinition $definition) : string { $type = $definition->type(); diff --git a/web/landing/src/Flow/Website/Command/GenerateDataFrameCompleterCommand.php b/web/landing/src/Flow/Website/Command/GenerateDataFrameCompleterCommand.php index d24cead605..286186fe6a 100644 --- a/web/landing/src/Flow/Website/Command/GenerateDataFrameCompleterCommand.php +++ b/web/landing/src/Flow/Website/Command/GenerateDataFrameCompleterCommand.php @@ -4,6 +4,10 @@ namespace Flow\Website\Command; +use function Flow\ETL\Adapter\JSON\from_json; +use function Flow\ETL\DSL\{collect, df, lit, ref}; +use function Flow\Filesystem\DSL\path; +use Flow\Website\Service\FlowConfigFactory; use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; @@ -20,6 +24,7 @@ final class GenerateDataFrameCompleterCommand extends Command public function __construct( private readonly Environment $twig, private readonly string $projectDir, + private readonly FlowConfigFactory $configFactory, ) { parent::__construct(); } @@ -33,55 +38,79 @@ protected function execute(InputInterface $input, OutputInterface $output) : int $apiJsonPath = $this->projectDir . '/../../web/landing/resources/api.json'; $dslJsonPath = $this->projectDir . '/../../web/landing/resources/dsl.json'; - if (!\file_exists($apiJsonPath)) { + $fs = $this->configFactory->filesystem(); + + if ($fs->status(path($apiJsonPath)) === null) { $io->error("API JSON file not found: {$apiJsonPath}"); return Command::FAILURE; } - if (!\file_exists($dslJsonPath)) { + if ($fs->status(path($dslJsonPath)) === null) { $io->error("DSL JSON file not found: {$dslJsonPath}"); return Command::FAILURE; } - $apiMethods = \json_decode(\file_get_contents($apiJsonPath), true, 512, JSON_THROW_ON_ERROR); - $dslFunctions = \json_decode(\file_get_contents($dslJsonPath), true, 512, JSON_THROW_ON_ERROR); - - if (!\is_array($apiMethods)) { - $io->error('Invalid API JSON structure'); - - return Command::FAILURE; - } - - if (!\is_array($dslFunctions)) { - $io->error('Invalid DSL JSON structure'); + $flowReturningFunctions = df($this->configFactory->configBuilder('dataframe_completer')) + ->read(from_json($dslJsonPath)) + ->collect() + ->filter(ref('return_type')->isNotNull()) + ->withEntry('has_flow_return', ref('return_type')->onEach( + ref('element')->arrayGet('name')->equals(lit('Flow')) + ->and(ref('element')->arrayGet('namespace')->equals(lit('Flow\\ETL'))) + )->arrayKeep(true)->size()->greaterThan(lit(0))) + ->filter(ref('has_flow_return')->equals(lit(true))) + ->fetch() + ->reduceToArray('name'); - return Command::FAILURE; - } - - // Extract DSL functions that return Flow (df, data_frame) - $flowReturningFunctions = $this->extractFlowReturningFunctions($dslFunctions); $io->info(\sprintf('Found %d DSL functions returning Flow', \count($flowReturningFunctions))); - // Extract methods that return DataFrame - $dataFrameReturningMethods = $this->extractDataFrameReturningMethods($apiMethods); - $io->info(\sprintf('Found %d methods returning DataFrame', \count($dataFrameReturningMethods))); + $dataFrameReturningMethodsArray = df($this->configFactory->configBuilder('dataframe_completer')) + ->read(from_json($apiJsonPath)) + ->collect() + ->filter(ref('return_type')->isNotNull()) + ->withEntry( + 'returns_dataframe', + ref('return_type') + ->onEach( + ref('element') + ->arrayGet('name') + ->equals(lit('DataFrame')) + ->and(ref('element')->arrayGet('namespace')->equals(lit('Flow\\ETL'))) + )->arrayKeep(true) + ->size() + ->greaterThan(lit(0)) + ->or( + ref('return_type') + ->onEach( + ref('element')->arrayGet('name')->equals(lit('self')) + ) + ->arrayKeep(true)->size()->greaterThan(lit(0)) + ->and(ref('class_slug')->equals(lit('dataframe'))) + ) + ) + ->filter(ref('returns_dataframe')->equals(lit(true))) + ->select('class_slug', 'name') + ->groupBy(ref('class_slug')) + ->aggregate(collect('name')) + ->fetch() + ->toArray(); + + $dataFrameReturningMethods = \array_column($dataFrameReturningMethodsArray, 'name_collection', 'class_slug'); - // Filter only DataFrame methods - $dataFrameMethods = \array_filter( - $apiMethods, - static fn (array $method) : bool => $method['class_slug'] === 'dataframe' - ); - - $io->info(\sprintf('Found %d DataFrame methods', \count($dataFrameMethods))); + $io->info(\sprintf('Found %d methods returning DataFrame', \count($dataFrameReturningMethods))); - // No fallback needed - DataFrame completer only shows DataFrame methods + // Pass raw data to template - Twig handles formatting + $methodsData = df($this->configFactory->configBuilder('dataframe_completer')) + ->read(from_json($apiJsonPath)) + ->collect() + ->filter(ref('class_slug')->equals(lit('dataframe'))) + ->select('name', 'class', 'class_slug', 'parameters', 'return_type', 'doc_comment') + ->fetch() + ->toArray(); - $methodsData = \array_map( - fn (array $method) : array => $this->buildMethodData($method), - $dataFrameMethods - ); + $io->info(\sprintf('Found %d DataFrame methods', \count($methodsData))); $content = $this->twig->render('completers/dataframe-codemirror.js.twig', [ 'dataframe_methods' => $methodsData, @@ -91,14 +120,8 @@ protected function execute(InputInterface $input, OutputInterface $output) : int ]); $outputFile = $this->projectDir . '/assets/codemirror/completions/dataframe.js'; - $outputDir = \dirname($outputFile); - if (!\is_dir($outputDir)) { - \mkdir($outputDir, 0755, true); - $io->info("Created directory: {$outputDir}"); - } - - \file_put_contents($outputFile, $content); + $fs->writeTo(path($outputFile))->append($content)->close(); $io->success("Generated DataFrame completer: {$outputFile}"); $io->info('DataFrame methods: ' . \count($methodsData)); @@ -106,187 +129,4 @@ protected function execute(InputInterface $input, OutputInterface $output) : int return Command::SUCCESS; } - - /** - * @param array{name: string, type?: array, has_default_value: bool, default_value?: ?string} $param - */ - private function buildHighlightedParam(array $param) : string - { - $paramStr = ''; - - if (!empty($param['type'])) { - $paramStr .= '' . $this->formatType($param['type']) . ' '; - } - - $paramStr .= '$' . $param['name'] . ''; - - if ($param['has_default_value'] && isset($param['default_value'])) { - $paramStr .= ' = ' . \htmlspecialchars($param['default_value']) . ''; - } - - return $paramStr; - } - - /** - * @param array $method - */ - private function buildHighlightedSignature(array $method) : string - { - $params = \array_map( - fn (array $param) : string => $this->buildHighlightedParam($param), - $method['parameters'] - ); - - $signature = '' . $method['name'] . '' - . '(' - . \implode(', ', $params) - . ')'; - - if (!empty($method['return_type'])) { - $signature .= ' : ' - . '' . $this->formatType($method['return_type']) . ''; - } - - return $signature; - } - - /** - * @param array $method - * - * @return array - */ - private function buildMethodData(array $method) : array - { - return [ - 'name' => $method['name'], - 'snippet' => $this->buildSnippet($method), - 'docComment' => $this->formatDocComment($method['doc_comment'] ?? null), - 'highlightedSignature' => $this->buildHighlightedSignature($method), - 'meta' => $method['class_slug'], - 'className' => $method['class'], - 'parameters' => $method['parameters'], - ]; - } - - /** - * @param array $method - */ - private function buildSnippet(array $method) : string - { - $params = $method['parameters']; - $methodName = $method['name']; - - if (empty($params)) { - return $methodName . '()'; - } - - $snippetParams = []; - $tabstop = 1; - - foreach ($params as $param) { - $typeHint = !empty($param['type']) - ? $this->formatType($param['type']) . ' ' - : ''; - - $snippetParams[] = '${' . $tabstop . ':' . $typeHint . '$' . $param['name'] . '}'; - $tabstop++; - } - - return $methodName . '(' . \implode(', ', $snippetParams) . ')'; - } - - /** - * Extract methods that return DataFrame from API methods. - * Returns array grouped by class: ['flow' => ['extract', 'read'], 'dataframe' => ['filter', 'select']]. - * - * @param array> $apiMethods - * - * @return array> - */ - private function extractDataFrameReturningMethods(array $apiMethods) : array - { - $methodsByClass = []; - - foreach ($apiMethods as $method) { - if (empty($method['return_type'])) { - continue; - } - - foreach ($method['return_type'] as $returnType) { - // Check if return type is DataFrame or self (from DataFrame class) - $isDataFrame = $returnType['name'] === 'DataFrame' && $returnType['namespace'] === 'Flow\\ETL'; - $isSelfFromDataFrame = $returnType['name'] === 'self' && $method['class_slug'] === 'dataframe'; - - if ($isDataFrame || $isSelfFromDataFrame) { - $classSlug = $method['class_slug']; - - if (!isset($methodsByClass[$classSlug])) { - $methodsByClass[$classSlug] = []; - } - $methodsByClass[$classSlug][] = $method['name']; - - break; - } - } - } - - return $methodsByClass; - } - - /** - * Extract function names that return Flow from DSL functions. - * - * @param array> $dslFunctions - * - * @return array - */ - private function extractFlowReturningFunctions(array $dslFunctions) : array - { - $flowFunctions = []; - - foreach ($dslFunctions as $function) { - if (empty($function['return_type'])) { - continue; - } - - foreach ($function['return_type'] as $returnType) { - // Check if return type is Flow (Flow\ETL\Flow) - if ($returnType['name'] === 'Flow' && $returnType['namespace'] === 'Flow\\ETL') { - $flowFunctions[] = $function['name']; - - break; - } - } - } - - return $flowFunctions; - } - - private function formatDocComment(?string $docComment) : string - { - if ($docComment === null) { - return ''; - } - - $decoded = \base64_decode($docComment, true); - - if ($decoded === false) { - return ''; - } - - $docComment = \preg_replace('/^\/\*\*|\*\/$/', '', $decoded); - $lines = \explode("\n", (string) $docComment); - $lines = \array_map(static fn (string $line) : string => \preg_replace('/^\s*\*\s?/', '', $line), $lines); - $lines = \array_filter($lines, static fn (string $line) : bool => \trim($line) !== ''); - - return \implode('
', $lines); - } - - /** - * @param array $types - */ - private function formatType(array $types) : string - { - return \implode('|', \array_map(static fn (array $t) : string => $t['name'], $types)); - } } diff --git a/web/landing/src/Flow/Website/Command/GenerateFlowCompleterCommand.php b/web/landing/src/Flow/Website/Command/GenerateFlowCompleterCommand.php index f58f0d085f..57d6c266a4 100644 --- a/web/landing/src/Flow/Website/Command/GenerateFlowCompleterCommand.php +++ b/web/landing/src/Flow/Website/Command/GenerateFlowCompleterCommand.php @@ -4,6 +4,10 @@ namespace Flow\Website\Command; +use function Flow\ETL\Adapter\JSON\from_json; +use function Flow\ETL\DSL\{df, lit, ref}; +use function Flow\Filesystem\DSL\path; +use Flow\Website\Service\FlowConfigFactory; use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; @@ -20,6 +24,7 @@ final class GenerateFlowCompleterCommand extends Command public function __construct( private readonly Environment $twig, private readonly string $projectDir, + private readonly FlowConfigFactory $configFactory, ) { parent::__construct(); } @@ -33,51 +38,44 @@ protected function execute(InputInterface $input, OutputInterface $output) : int $apiJsonPath = $this->projectDir . '/../../web/landing/resources/api.json'; $dslJsonPath = $this->projectDir . '/../../web/landing/resources/dsl.json'; - if (!\file_exists($apiJsonPath)) { + $fs = $this->configFactory->filesystem(); + + if ($fs->status(path($apiJsonPath)) === null) { $io->error("API JSON file not found: {$apiJsonPath}"); return Command::FAILURE; } - if (!\file_exists($dslJsonPath)) { + if ($fs->status(path($dslJsonPath)) === null) { $io->error("DSL JSON file not found: {$dslJsonPath}"); return Command::FAILURE; } - $apiMethods = \json_decode(\file_get_contents($apiJsonPath), true, 512, JSON_THROW_ON_ERROR); - $dslFunctions = \json_decode(\file_get_contents($dslJsonPath), true, 512, JSON_THROW_ON_ERROR); - - if (!\is_array($apiMethods)) { - $io->error('Invalid API JSON structure'); - - return Command::FAILURE; - } - - if (!\is_array($dslFunctions)) { - $io->error('Invalid DSL JSON structure'); + $flowReturningFunctions = df($this->configFactory->configBuilder('flow_completer')) + ->read(from_json($dslJsonPath)) + ->collect() + ->filter(ref('return_type')->isNotNull()) + ->withEntry('has_flow_return', ref('return_type')->onEach( + ref('element')->arrayGet('name')->equals(lit('Flow')) + ->and(ref('element')->arrayGet('namespace')->equals(lit('Flow\\ETL'))) + )->arrayKeep(true)->size()->greaterThan(lit(0))) + ->filter(ref('has_flow_return')->equals(lit(true))) + ->fetch() + ->reduceToArray('name'); - return Command::FAILURE; - } - - // Extract DSL functions that return Flow (df, data_frame) - $flowReturningFunctions = $this->extractFlowReturningFunctions($dslFunctions); $io->info(\sprintf('Found %d DSL functions returning Flow', \count($flowReturningFunctions))); - // Filter only Flow methods - $flowMethods = \array_filter( - $apiMethods, - static fn (array $method) : bool => $method['class_slug'] === 'flow' - ); - - $io->info(\sprintf('Found %d Flow methods', \count($flowMethods))); + $methodsData = df($this->configFactory->configBuilder('flow_completer')) + ->read(from_json($apiJsonPath)) + ->collect() + ->filter(ref('class_slug')->equals(lit('flow'))) + ->select('name', 'class', 'class_slug', 'parameters', 'return_type', 'doc_comment') + ->fetch() + ->toArray(); - $methodsData = \array_map( - fn (array $method) : array => $this->buildMethodData($method), - $flowMethods - ); + $io->info(\sprintf('Found %d Flow methods', \count($methodsData))); - // Generate CodeMirror completer $codeMirrorContent = $this->twig->render('completers/flow-codemirror.js.twig', [ 'flow_methods' => $methodsData, 'flow_functions' => $flowReturningFunctions, @@ -86,14 +84,8 @@ protected function execute(InputInterface $input, OutputInterface $output) : int ]); $codeMirrorOutputFile = $this->projectDir . '/assets/codemirror/completions/flow.js'; - $codeMirrorOutputDir = \dirname($codeMirrorOutputFile); - - if (!\is_dir($codeMirrorOutputDir)) { - \mkdir($codeMirrorOutputDir, 0755, true); - $io->info("Created directory: {$codeMirrorOutputDir}"); - } - \file_put_contents($codeMirrorOutputFile, $codeMirrorContent); + $fs->writeTo(path($codeMirrorOutputFile))->append($codeMirrorContent)->close(); $io->success("Generated Flow completer: {$codeMirrorOutputFile}"); $io->info('Flow methods: ' . \count($methodsData)); @@ -101,150 +93,4 @@ protected function execute(InputInterface $input, OutputInterface $output) : int return Command::SUCCESS; } - - /** - * @param array{name: string, type?: array, has_default_value: bool, default_value?: ?string} $param - */ - private function buildHighlightedParam(array $param) : string - { - $paramStr = ''; - - if (!empty($param['type'])) { - $paramStr .= '' . $this->formatType($param['type']) . ' '; - } - - $paramStr .= '$' . $param['name'] . ''; - - if ($param['has_default_value'] && isset($param['default_value'])) { - $paramStr .= ' = ' . \htmlspecialchars($param['default_value']) . ''; - } - - return $paramStr; - } - - /** - * @param array $method - */ - private function buildHighlightedSignature(array $method) : string - { - $params = \array_map( - fn (array $param) : string => $this->buildHighlightedParam($param), - $method['parameters'] - ); - - $signature = '' . $method['name'] . '' - . '(' - . \implode(', ', $params) - . ')'; - - if (!empty($method['return_type'])) { - $signature .= ' : ' - . '' . $this->formatType($method['return_type']) . ''; - } - - return $signature; - } - - /** - * @param array $method - * - * @return array - */ - private function buildMethodData(array $method) : array - { - return [ - 'name' => $method['name'], - 'snippet' => $this->buildSnippet($method), - 'docComment' => $this->formatDocComment($method['doc_comment'] ?? null), - 'highlightedSignature' => $this->buildHighlightedSignature($method), - 'meta' => $method['class_slug'], - 'className' => $method['class'], - 'parameters' => $method['parameters'], - 'hasParameters' => !empty($method['parameters']), - ]; - } - - /** - * @param array $method - */ - private function buildSnippet(array $method) : string - { - $params = $method['parameters']; - $methodName = $method['name']; - - if (empty($params)) { - return $methodName . '()'; - } - - $snippetParams = []; - $tabstop = 1; - - foreach ($params as $param) { - $typeHint = !empty($param['type']) - ? $this->formatType($param['type']) . ' ' - : ''; - - $snippetParams[] = '${' . $tabstop . ':' . $typeHint . '$' . $param['name'] . '}'; - $tabstop++; - } - - return $methodName . '(' . \implode(', ', $snippetParams) . ')'; - } - - /** - * Extract function names that return Flow from DSL functions. - * - * @param array> $dslFunctions - * - * @return array - */ - private function extractFlowReturningFunctions(array $dslFunctions) : array - { - $flowFunctions = []; - - foreach ($dslFunctions as $function) { - if (empty($function['return_type'])) { - continue; - } - - foreach ($function['return_type'] as $returnType) { - // Check if return type is Flow (Flow\ETL\Flow) - if ($returnType['name'] === 'Flow' && $returnType['namespace'] === 'Flow\\ETL') { - $flowFunctions[] = $function['name']; - - break; - } - } - } - - return $flowFunctions; - } - - private function formatDocComment(?string $docComment) : string - { - if ($docComment === null) { - return ''; - } - - $decoded = \base64_decode($docComment, true); - - if ($decoded === false) { - return ''; - } - - $docComment = \preg_replace('/^\/\*\*|\*\/$/', '', $decoded); - $lines = \explode("\n", (string) $docComment); - $lines = \array_map(static fn (string $line) : string => \preg_replace('/^\s*\*\s?/', '', $line), $lines); - $lines = \array_filter($lines, static fn (string $line) : bool => \trim($line) !== ''); - - return \implode('
', $lines); - } - - /** - * @param array $types - */ - private function formatType(array $types) : string - { - return \implode('|', \array_map(static fn (array $t) : string => $t['name'], $types)); - } } diff --git a/web/landing/src/Flow/Website/Command/GenerateScalarFunctionChainCompleterCommand.php b/web/landing/src/Flow/Website/Command/GenerateScalarFunctionChainCompleterCommand.php index 6c09b53e0c..04e01ebd19 100644 --- a/web/landing/src/Flow/Website/Command/GenerateScalarFunctionChainCompleterCommand.php +++ b/web/landing/src/Flow/Website/Command/GenerateScalarFunctionChainCompleterCommand.php @@ -4,6 +4,10 @@ namespace Flow\Website\Command; +use function Flow\ETL\Adapter\JSON\from_json; +use function Flow\ETL\DSL\{df, lit, ref}; +use function Flow\Filesystem\DSL\path; +use Flow\Website\Service\FlowConfigFactory; use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; @@ -20,6 +24,7 @@ final class GenerateScalarFunctionChainCompleterCommand extends Command public function __construct( private readonly Environment $twig, private readonly string $projectDir, + private readonly FlowConfigFactory $configFactory, ) { parent::__construct(); } @@ -33,49 +38,38 @@ protected function execute(InputInterface $input, OutputInterface $output) : int $apiJsonPath = $this->projectDir . '/../../web/landing/resources/api.json'; $dslJsonPath = $this->projectDir . '/../../web/landing/resources/dsl.json'; - if (!\file_exists($apiJsonPath)) { + $fs = $this->configFactory->filesystem(); + + if ($fs->status(path($apiJsonPath)) === null) { $io->error("API JSON file not found: {$apiJsonPath}"); return Command::FAILURE; } - if (!\file_exists($dslJsonPath)) { + if ($fs->status(path($dslJsonPath)) === null) { $io->error("DSL JSON file not found: {$dslJsonPath}"); return Command::FAILURE; } - $apiMethods = \json_decode(\file_get_contents($apiJsonPath), true, 512, JSON_THROW_ON_ERROR); - $dslFunctions = \json_decode(\file_get_contents($dslJsonPath), true, 512, JSON_THROW_ON_ERROR); - - if (!\is_array($apiMethods)) { - $io->error('Invalid API JSON structure'); - - return Command::FAILURE; - } - - if (!\is_array($dslFunctions)) { - $io->error('Invalid DSL JSON structure'); + $scalarFunctionChainFunctions = df($this->configFactory->configBuilder('scalar_function_chain_completer')) + ->read(from_json($dslJsonPath)) + ->collect() + ->filter(ref('scalar_function_chain')->equals(lit(true))) + ->fetch() + ->reduceToArray('name'); - return Command::FAILURE; - } - - // Extract DSL functions that return ScalarFunctionChain - $scalarFunctionChainFunctions = $this->extractScalarFunctionChainFunctions($dslFunctions); $io->info(\sprintf('Found %d DSL functions with scalar_function_chain flag', \count($scalarFunctionChainFunctions))); - // Extract ScalarFunctionChain methods from API - $scalarFunctionChainMethods = \array_filter( - $apiMethods, - static fn (array $method) : bool => $method['class_slug'] === 'scalarfunctionchain' - ); - - $io->info(\sprintf('Found %d ScalarFunctionChain methods', \count($scalarFunctionChainMethods))); + $methodsData = df($this->configFactory->configBuilder('scalar_function_chain_completer')) + ->read(from_json($apiJsonPath)) + ->collect() + ->filter(ref('class_slug')->equals(lit('scalarfunctionchain'))) + ->select('name', 'class', 'class_slug', 'parameters', 'return_type', 'doc_comment') + ->fetch() + ->toArray(); - $methodsData = \array_map( - fn (array $method) : array => $this->buildMethodData($method), - $scalarFunctionChainMethods - ); + $io->info(\sprintf('Found %d ScalarFunctionChain methods', \count($methodsData))); $content = $this->twig->render('completers/scalarfunctionchain-codemirror.js.twig', [ 'scalarfunctionchain_methods' => $methodsData, @@ -85,14 +79,8 @@ protected function execute(InputInterface $input, OutputInterface $output) : int ]); $outputFile = $this->projectDir . '/assets/codemirror/completions/scalarfunctionchain.js'; - $outputDir = \dirname($outputFile); - - if (!\is_dir($outputDir)) { - \mkdir($outputDir, 0755, true); - $io->info("Created directory: {$outputDir}"); - } - \file_put_contents($outputFile, $content); + $fs->writeTo(path($outputFile))->append($content)->close(); $io->success("Generated ScalarFunctionChain completer: {$outputFile}"); $io->info('ScalarFunctionChain methods: ' . \count($methodsData)); @@ -100,140 +88,4 @@ protected function execute(InputInterface $input, OutputInterface $output) : int return Command::SUCCESS; } - - /** - * @param array{name: string, type?: array, has_default_value: bool, default_value?: ?string} $param - */ - private function buildHighlightedParam(array $param) : string - { - $paramStr = ''; - - if (!empty($param['type'])) { - $paramStr .= '' . $this->formatType($param['type']) . ' '; - } - - $paramStr .= '$' . $param['name'] . ''; - - if ($param['has_default_value'] && isset($param['default_value'])) { - $paramStr .= ' = ' . \htmlspecialchars($param['default_value']) . ''; - } - - return $paramStr; - } - - /** - * @param array $method - */ - private function buildHighlightedSignature(array $method) : string - { - $params = \array_map( - fn (array $param) : string => $this->buildHighlightedParam($param), - $method['parameters'] - ); - - $signature = '' . $method['name'] . '' - . '(' - . \implode(', ', $params) - . ')'; - - if (!empty($method['return_type'])) { - $signature .= ' : ' - . '' . $this->formatType($method['return_type']) . ''; - } - - return $signature; - } - - /** - * @param array $method - * - * @return array - */ - private function buildMethodData(array $method) : array - { - return [ - 'name' => $method['name'], - 'snippet' => $this->buildSnippet($method), - 'docComment' => $this->formatDocComment($method['doc_comment'] ?? null), - 'highlightedSignature' => $this->buildHighlightedSignature($method), - 'meta' => $method['class_slug'], - 'className' => $method['class'], - 'parameters' => $method['parameters'], - ]; - } - - /** - * @param array $method - */ - private function buildSnippet(array $method) : string - { - $params = $method['parameters']; - $methodName = $method['name']; - - if (empty($params)) { - return $methodName . '()'; - } - - $snippetParams = []; - $tabstop = 1; - - foreach ($params as $param) { - $typeHint = !empty($param['type']) - ? $this->formatType($param['type']) . ' ' - : ''; - - $snippetParams[] = '${' . $tabstop . ':' . $typeHint . '$' . $param['name'] . '}'; - $tabstop++; - } - - return $methodName . '(' . \implode(', ', $snippetParams) . ')'; - } - - /** - * Extract function names that have scalar_function_chain flag from DSL functions. - * - * @param array> $dslFunctions - * - * @return array - */ - private function extractScalarFunctionChainFunctions(array $dslFunctions) : array - { - $functions = []; - - foreach ($dslFunctions as $function) { - if (isset($function['scalar_function_chain']) && $function['scalar_function_chain'] === true) { - $functions[] = $function['name']; - } - } - - return $functions; - } - - private function formatDocComment(?string $docComment) : string - { - if ($docComment === null) { - return ''; - } - - $decoded = \base64_decode($docComment, true); - - if ($decoded === false) { - return ''; - } - - $docComment = \preg_replace('/^\/\*\*|\*\/$/', '', $decoded); - $lines = \explode("\n", (string) $docComment); - $lines = \array_map(static fn (string $line) : string => \preg_replace('/^\s*\*\s?/', '', $line), $lines); - $lines = \array_filter($lines, static fn (string $line) : bool => \trim($line) !== ''); - - return \implode('
', $lines); - } - - /** - * @param array $types - */ - private function formatType(array $types) : string - { - return \implode('|', \array_map(static fn (array $t) : string => $t['name'], $types)); - } } diff --git a/web/landing/src/Flow/Website/Service/FlowConfigFactory.php b/web/landing/src/Flow/Website/Service/FlowConfigFactory.php new file mode 100644 index 0000000000..ee94ede242 --- /dev/null +++ b/web/landing/src/Flow/Website/Service/FlowConfigFactory.php @@ -0,0 +1,90 @@ +name($name) + ->withTelemetry( + $this->telemetry, + telemetry_options() + ->collectMetrics() + ->traceLoading() + ->traceCache() + ->traceTransformations() + ->filesystem( + filesystem_telemetry_options() + ->collectMetrics() + ->traceStreams() + ) + ); + } + + /** + * Create a ConfigBuilder with telemetry and cache pre-configured. + * + * @param int $ttl Cache TTL in seconds (default: 24 hours) + */ + public function configBuilderWithCache(string $name, int $ttl = 86400) : ConfigBuilder + { + return $this->configBuilder($name) + ->cache($this->cache($name, $ttl)); + } + + public function filesystem() : Filesystem + { + return traceable_filesystem( + native_local_filesystem(), + filesystem_telemetry_config( + $this->telemetry, + new SystemClock(), + filesystem_telemetry_options() + ->collectMetrics() + ->traceStreams() + ) + ); + } + + public function telemetry() : Telemetry + { + return $this->telemetry; + } + + private function cache(string $directoryName, int $ttl) : PSRSimpleCache + { + return new PSRSimpleCache( + new Psr16Cache( + new FilesystemAdapter( + 'flow-website', + $ttl, + directory: $this->parameters->get('kernel.cache_dir') . '/' . \ltrim($directoryName, '/') + ), + ) + ); + } +} diff --git a/web/landing/src/Flow/Website/Service/Github.php b/web/landing/src/Flow/Website/Service/Github.php index 2fc9a15596..e6c658d3dd 100644 --- a/web/landing/src/Flow/Website/Service/Github.php +++ b/web/landing/src/Flow/Website/Service/Github.php @@ -4,16 +4,13 @@ namespace Flow\Website\Service; -use function Flow\ETL\DSL\{config_builder, df, from_cache, lit, not, ref, rename_replace, telemetry_options, to_memory}; -use Flow\ETL\Adapter\Http\PsrHttpClientDynamicExtractor; -use Flow\ETL\Cache\Implementation\PSRSimpleCache; +use function Flow\ETL\Adapter\Http\from_dynamic_http_requests; +use function Flow\ETL\DSL\{df, from_cache, lit, not, ref, rename_replace, to_memory}; +use Flow\Bridge\Psr18\Telemetry\PSR18TraceableClient; use Flow\ETL\Memory\ArrayMemory; -use Flow\Telemetry\Telemetry; use Flow\Website\Factory\Github\ContributorsRequestFactory; use Http\Client\Curl\Client; use Http\Discovery\Psr17Factory; -use Symfony\Component\Cache\Adapter\FilesystemAdapter; -use Symfony\Component\Cache\Psr16Cache; use Symfony\Component\DependencyInjection\ParameterBag\ContainerBagInterface; final readonly class Github @@ -21,7 +18,7 @@ public function __construct( private ContributorsRequestFactory $requestFactory, private ContainerBagInterface $parameters, - private Telemetry $telemetry, + private FlowConfigFactory $configFactory, ) { } @@ -38,24 +35,12 @@ public function contributors() : array } $factory = new Psr17Factory(); - $client = new Client($factory, $factory); + $client = new PSR18TraceableClient(new Client($factory, $factory), $this->configFactory->telemetry()); - $adapter = new PSRSimpleCache($this->cache('flow-github-contributors')); - - $from_github = new PsrHttpClientDynamicExtractor($client, $this->requestFactory); + $from_github = from_dynamic_http_requests($client, $this->requestFactory); try { - df( - config_builder() - ->cache($adapter) - ->withTelemetry( - $this->telemetry, - telemetry_options() - ->collectMetrics(true) - ->traceLoading(true) - ->traceTransformations(true) - ) - ) + df($this->configFactory->configBuilderWithCache('github_contributors')) ->read( from_cache( 'flow_github_contributors', @@ -82,15 +67,4 @@ public function contributors() : array return []; } } - - private function cache(string $directoryName) : Psr16Cache - { - return new Psr16Cache( - new FilesystemAdapter( - 'flow-website', - 3600 * 24, - directory: $this->parameters->get('kernel.cache_dir') . '/' . \ltrim($directoryName, '/') - ) - ); - } } diff --git a/web/landing/src/Flow/Website/Twig/FlowExtension.php b/web/landing/src/Flow/Website/Twig/FlowExtension.php index 582203e087..4026b56082 100644 --- a/web/landing/src/Flow/Website/Twig/FlowExtension.php +++ b/web/landing/src/Flow/Website/Twig/FlowExtension.php @@ -4,34 +4,95 @@ namespace Flow\Website\Twig; +use Flow\Types\Value\Json; use Twig\Extension\AbstractExtension; use Twig\TwigFilter; final class FlowExtension extends AbstractExtension { + /** + * Formats a base64-encoded doc comment into HTML. + * Strips /** and * / markers, removes leading asterisks, converts newlines to
. + */ + public function formatDocComment(?string $docComment) : string + { + if ($docComment === null || $docComment === '') { + return ''; + } + + $decoded = \base64_decode($docComment, true); + + if ($decoded === false) { + return ''; + } + + $stripped = \preg_replace('/^\/\*\*|\*\/$/', '', $decoded); + $lines = \explode("\n", (string) $stripped); + $lines = \array_map(static fn (string $line) : string => (string) \preg_replace('/^\s*\*\s?/', '', $line), $lines); + $lines = \array_filter($lines, static fn (string $line) : bool => \trim($line) !== ''); + + return \implode('
', $lines); + } + + /** + * Formats an array of type objects into a pipe-separated string. + * + * @param array|Json|string $types + */ + public function formatType(array|Json|string $types) : string + { + $types = $this->toArray($types); + + return \implode('|', \array_map(static fn (array $t) : string => $t['name'], $types)); + } + #[\Override] public function getFilters() : array { return [ new TwigFilter('strpad', $this->strpad(...), ['is_safe' => ['html']]), + new TwigFilter('format_doc_comment', $this->formatDocComment(...), ['is_safe' => ['html']]), + new TwigFilter('format_type', $this->formatType(...), ['is_safe' => ['html']]), + new TwigFilter('to_array', $this->toArray(...)), ]; } - public function strpad(string|int|float $input, int $length, string $padString = '', string|int $padType = 'left') + public function strpad(string|int|float $input, int $length, string $padString = '', string|int $padType = 'left') : string { if (!\is_string($input)) { $input = (string) $input; } - if (is_string($padType)) { + if (\is_string($padType)) { $padType = match (true) { - stristr($padType, 'left') => STR_PAD_LEFT, - stristr($padType, 'both') => STR_PAD_BOTH, + \stristr($padType, 'left') !== false => STR_PAD_LEFT, + \stristr($padType, 'both') !== false => STR_PAD_BOTH, default => STR_PAD_RIGHT, }; + } + + return \str_pad($input, $length, $padString, $padType); + } + + /** + * Converts Json or string to array. + * + * @param array|Json|string $value + * + * @return array + */ + public function toArray(array|Json|string $value) : array + { + if ($value instanceof Json) { + return $value->toArray(); + } + + if (\is_string($value)) { + $decoded = \json_decode($value, true); + return \is_array($decoded) ? $decoded : []; } - return str_pad($input, $length, $padString, $padType); + return $value; } } diff --git a/web/landing/templates/completers/_macros.twig b/web/landing/templates/completers/_macros.twig new file mode 100644 index 0000000000..6d0315e3af --- /dev/null +++ b/web/landing/templates/completers/_macros.twig @@ -0,0 +1,36 @@ +{# + # Macros for building CodeMirror completer data + #} + +{# + # Builds a single parameter with HTML spans + # @param object param - {name, type, has_default_value, default_value} + # @return string - HTML span elements for the parameter + #} +{% macro build_param(param) %} +{%- set types = param.type|to_array -%} +{%- if types is not empty -%} +{{ types|format_type }} {% endif -%} +${{ param.name }} +{%- if param.has_default_value and param.default_value is defined %} = {{ param.default_value }}{% endif -%} +{% endmacro %} + +{# + # Builds the full highlighted signature HTML + # @param string name - method/function name + # @param array parameters - array of parameter objects + # @param array return_type - array of return type objects (optional) + # @return string - Complete HTML signature + #} +{% macro highlighted_signature(name, parameters, return_type) %} +{%- import _self as macros -%} +{%- set params = parameters|to_array -%} +{%- set ret_type = return_type|to_array -%} +{{ name }}( +{%- for param in params -%} +{{ macros.build_param(param) }} +{%- if not loop.last -%}, {% endif -%} +{%- endfor -%} +) +{%- if ret_type is not empty %} : {{ ret_type|format_type }}{% endif -%} +{% endmacro %} diff --git a/web/landing/templates/completers/dataframe-codemirror.js.twig b/web/landing/templates/completers/dataframe-codemirror.js.twig index 03da5c1568..8da5cd867c 100644 --- a/web/landing/templates/completers/dataframe-codemirror.js.twig +++ b/web/landing/templates/completers/dataframe-codemirror.js.twig @@ -1,3 +1,4 @@ +{% import 'completers/_macros.twig' as macros %} /** * CodeMirror Completer for Flow PHP DataFrame Methods * @@ -15,28 +16,30 @@ const dataframeReturningMethods = {{ dataframe_returning_methods|json_encode|raw // DataFrame methods const dataframeMethods = [ {% for method in dataframe_methods %} - { +{%- set params = method.parameters|to_array -%} +{%- set doc = method.doc_comment|format_doc_comment -%} + { label: "{{ method.name }}", type: "method", - detail: "{{ method.className|replace({'"': '\\"', "'": "\\'", '\\': '\\\\'}) }}", + detail: "{{ method.class|replace({'"': '\\"', "'": "\\'", '\\': '\\\\'}) }}", info: () => { const div = document.createElement("div") div.innerHTML = `
- {{ method.highlightedSignature|replace({'"': '\\"', "'": "\\'", '\\': '\\\\', '`': '\\`'})|raw }} + {{ macros.highlighted_signature(method.name, method.parameters, method.return_type)|replace({'"': '\\"', "'": "\\'", '\\': '\\\\', '`': '\\`'})|raw }}
- {% if method.docComment %} + {% if doc %}
- {{ method.docComment|replace({'"': '\\"', "'": "\\'", '\\': '\\\\', '`': '\\`'})|raw }} + {{ doc|replace({'"': '\\"', "'": "\\'", '\\': '\\\\', '`': '\\`'})|raw }}
{% endif %} ` return div }, - apply: snippet("{{ method.name }}({% if method.parameters|length > 0 %}{% for param in method.parameters %}" + "$" + "{" + "{{ loop.index }}:{{ param.name }}" + "}" + "{% if not loop.last %}, {% endif %}{% endfor %}{% endif %})"), + apply: snippet("{{ method.name }}({% if params|length > 0 %}{% for param in params %}" + "$" + "{" + "{{ loop.index }}:{{ param.name }}" + "}" + "{% if not loop.last %}, {% endif %}{% endfor %}{% endif %})"), boost: 10 }{% if not loop.last %},{% endif %} - {% endfor %} + {% endfor %} ] /** diff --git a/web/landing/templates/completers/dsl-codemirror.js.twig b/web/landing/templates/completers/dsl-codemirror.js.twig index b6e46a7259..3cea414303 100644 --- a/web/landing/templates/completers/dsl-codemirror.js.twig +++ b/web/landing/templates/completers/dsl-codemirror.js.twig @@ -1,3 +1,4 @@ +{% import 'completers/_macros.twig' as macros %} /** * CodeMirror Completer for Flow PHP DSL Functions * @@ -18,6 +19,8 @@ import { CompletionContext, snippet } from "@codemirror/autocomplete" // All DSL functions const dslFunctions = [ {% for func in functions %} + {% set params = func.parameters|to_array %} + {% set doc = func.doc_comment|format_doc_comment %} { label: "{{ func.name }}", type: "function", @@ -26,17 +29,17 @@ const dslFunctions = [ const div = document.createElement("div") div.innerHTML = `
- {{ func.highlightedSignature|replace({'"': '\\"', "'": "\\'", '\\': '\\\\'})|raw }} + {{ macros.highlighted_signature(func.name, func.parameters, func.return_type)|replace({'"': '\\"', "'": "\\'", '\\': '\\\\'})|raw }}
- {% if func.docComment %} + {% if doc %}
- {{ func.docComment|replace({'"': '\\"', "'": "\\'", '\\': '\\\\', '`': '\\`'})|raw }} + {{ doc|replace({'"': '\\"', "'": "\\'", '\\': '\\\\', '`': '\\`'})|raw }}
{% endif %} ` return div }, - apply: snippet("{{ func.fullName }}({% if func.parameters|length > 0 %}{% for param in func.parameters %}" + "$" + "{" + "{{ loop.index }}:{{ param.name }}" + "}" + "{% if not loop.last %}, {% endif %}{% endfor %}{% endif %})"), + apply: snippet("{{ func.fullName }}({% if params|length > 0 %}{% for param in params %}" + "$" + "{" + "{{ loop.index }}:{{ param.name }}" + "}" + "{% if not loop.last %}, {% endif %}{% endfor %}{% endif %})"), boost: 10 }{% if not loop.last %},{% endif %} {% endfor %} diff --git a/web/landing/templates/completers/flow-codemirror.js.twig b/web/landing/templates/completers/flow-codemirror.js.twig index 8085200b39..edecd61e96 100644 --- a/web/landing/templates/completers/flow-codemirror.js.twig +++ b/web/landing/templates/completers/flow-codemirror.js.twig @@ -1,3 +1,4 @@ +{% import 'completers/_macros.twig' as macros %} /** * CodeMirror Completer for Flow PHP Flow Methods * @@ -17,25 +18,27 @@ const flowFunctions = [ // Flow methods const flowMethods = [ {% for method in flow_methods %} + {% set params = method.parameters|to_array %} + {% set doc = method.doc_comment|format_doc_comment %} { label: "{{ method.name }}", type: "method", - detail: "{{ method.className|replace({'"': '\\"', "'": "\\'", '\\': '\\\\'}) }}", + detail: "{{ method.class|replace({'"': '\\"', "'": "\\'", '\\': '\\\\'}) }}", info: () => { const div = document.createElement("div") div.innerHTML = `
- {{ method.highlightedSignature|replace({'"': '\\"', "'": "\\'", '\\': '\\\\'})|raw }} + {{ macros.highlighted_signature(method.name, method.parameters, method.return_type)|replace({'"': '\\"', "'": "\\'", '\\': '\\\\'})|raw }}
- {% if method.docComment %} + {% if doc %}
- {{ method.docComment|replace({'"': '\\"', "'": "\\'", '\\': '\\\\', '`': '\\`'})|raw }} + {{ doc|replace({'"': '\\"', "'": "\\'", '\\': '\\\\', '`': '\\`'})|raw }}
{% endif %} ` return div }, - apply: snippet("{{ method.name }}({% if method.hasParameters %}{% for param in method.parameters %}" + "$" + "{" + "{{ loop.index }}:{{ param.name }}" + "}" + "{% if not loop.last %}, {% endif %}{% endfor %}{% endif %})"), + apply: snippet("{{ method.name }}({% if params|length > 0 %}{% for param in params %}" + "$" + "{" + "{{ loop.index }}:{{ param.name }}" + "}" + "{% if not loop.last %}, {% endif %}{% endfor %}{% endif %})"), boost: 10 }{% if not loop.last %},{% endif %} {% endfor %} diff --git a/web/landing/templates/completers/scalarfunctionchain-codemirror.js.twig b/web/landing/templates/completers/scalarfunctionchain-codemirror.js.twig index 364e2bddf0..c5b537f383 100644 --- a/web/landing/templates/completers/scalarfunctionchain-codemirror.js.twig +++ b/web/landing/templates/completers/scalarfunctionchain-codemirror.js.twig @@ -1,3 +1,4 @@ +{% import 'completers/_macros.twig' as macros %} /** * CodeMirror Completer for Flow PHP ScalarFunctionChain Methods * @@ -17,25 +18,27 @@ const scalarFunctionChainFunctions = [ // ScalarFunctionChain methods const scalarFunctionChainMethods = [ {% for method in scalarfunctionchain_methods %} + {% set params = method.parameters|to_array %} + {% set doc = method.doc_comment|format_doc_comment %} { label: "{{ method.name }}", type: "method", - detail: "{{ method.className|replace({'"': '\\"', "'": "\\'", '\\': '\\\\'}) }}", + detail: "{{ method.class|replace({'"': '\\"', "'": "\\'", '\\': '\\\\'}) }}", info: () => { const div = document.createElement("div") div.innerHTML = `
- {{ method.highlightedSignature|replace({'"': '\\"', "'": "\\'", '\\': '\\\\', '`': '\\`'})|raw }} + {{ macros.highlighted_signature(method.name, method.parameters, method.return_type)|replace({'"': '\\"', "'": "\\'", '\\': '\\\\', '`': '\\`'})|raw }}
- {% if method.docComment %} + {% if doc %}
- {{ method.docComment|replace({'"': '\\"', "'": "\\'", '\\': '\\\\', '`': '\\`'})|raw }} + {{ doc|replace({'"': '\\"', "'": "\\'", '\\': '\\\\', '`': '\\`'})|raw }}
{% endif %} ` return div }, - apply: snippet("{{ method.name }}({% if method.parameters|length > 0 %}{% for param in method.parameters %}" + "$" + "{" + "{{ loop.index }}:{{ param.name }}" + "}" + "{% if not loop.last %}, {% endif %}{% endfor %}{% endif %})"), + apply: snippet("{{ method.name }}({% if params|length > 0 %}{% for param in params %}" + "$" + "{" + "{{ loop.index }}:{{ param.name }}" + "}" + "{% if not loop.last %}, {% endif %}{% endfor %}{% endif %})"), boost: 10 }{% if not loop.last %},{% endif %} {% endfor %} diff --git a/web/landing/tests/Flow/Website/Tests/Fixtures/Completers/dataframe.js b/web/landing/tests/Flow/Website/Tests/Fixtures/Completers/dataframe.js new file mode 100644 index 0000000000..2cb5686d4c --- /dev/null +++ b/web/landing/tests/Flow/Website/Tests/Fixtures/Completers/dataframe.js @@ -0,0 +1,1201 @@ +/** + * CodeMirror Completer for Flow PHP DataFrame Methods + * + * DataFrame methods: 61 + * DataFrame-returning methods from classes: 3 + * + * This completer triggers after DataFrame-returning methods + */ + +import { CompletionContext, snippet } from "@codemirror/autocomplete" + +// Map of DataFrame-returning methods grouped by class +const dataframeReturningMethods = {"flow":["extract","from","process","read"],"dataframe":["aggregate","autoCast","batchBy","batchSize","cache","collect","collectRefs","constrain","crossJoin","drop","dropDuplicates","dropPartitions","duplicateRow","filter","filterPartitions","filters","join","joinEach","limit","load","map","match","mode","offset","onError","partitionBy","pivot","rename","renameAll","renameAllLowerCase","renameAllStyle","renameAllUpperCase","renameAllUpperCaseFirst","renameAllUpperCaseWord","renameEach","reorderEntries","rows","saveMode","select","sortBy","transform","until","validate","void","with","withEntries","withEntry","write"],"groupeddataframe":["aggregate"]}; + +// DataFrame methods +const dataframeMethods = [ + { + label: "aggregate", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ aggregate(AggregatingFunction $aggregations) : self +
+
+ @lazy +
+ ` + return div + }, + apply: snippet("aggregate(" + "$" + "{" + "1:aggregations" + "}" + ")"), + boost: 10 + }, { + label: "autoCast", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ autoCast() : self +
+ ` + return div + }, + apply: snippet("autoCast()"), + boost: 10 + }, { + label: "batchBy", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ batchBy(Reference|string $column, int $minSize = null) : self +
+
+ Merge/Split Rows yielded by Extractor into batches but keep those with common value in given column together.
This works properly only on sorted datasets.
When minSize is not provided, batches will be created only when there is a change in value of the column.
When minSize is provided, batches will be created only when there is a change in value of the column or
when there are at least minSize rows in the batch.
@param Reference|string $column - column to group by (all rows with same value stay together)
@param null|int<1, max> $minSize - optional minimum rows per batch for efficiency
@lazy
@throws InvalidArgumentException +
+ ` + return div + }, + apply: snippet("batchBy(" + "$" + "{" + "1:column" + "}" + ", " + "$" + "{" + "2:minSize" + "}" + ")"), + boost: 10 + }, { + label: "batchSize", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ batchSize(int $size) : self +
+
+ Merge/Split Rows yielded by Extractor into batches of given size.
For example, when Extractor is yielding one row at time, this method will merge them into batches of given size
before passing them to the next pipeline element.
Similarly when Extractor is yielding batches of rows, this method will split them into smaller batches of given
size.
In order to merge all Rows into a single batch use DataFrame::collect() method or set size to -1 or 0.
@param int<1, max> $size
@lazy +
+ ` + return div + }, + apply: snippet("batchSize(" + "$" + "{" + "1:size" + "}" + ")"), + boost: 10 + }, { + label: "cache", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ cache(string $id = null, int $cacheBatchSize = null) : self +
+
+ Start processing rows up to this moment and put each instance of Rows
into previously defined cache.
Cache type can be set through ConfigBuilder.
By default everything is cached in system tmp dir.
Important: cache batch size might significantly improve performance when processing large amount of rows.
Larger batch size will increase memory consumption but will reduce number of IO operations.
When not set, the batch size is taken from the last DataFrame::batchSize() call.
@lazy
@param null|string $id
@throws InvalidArgumentException +
+ ` + return div + }, + apply: snippet("cache(" + "$" + "{" + "1:id" + "}" + ", " + "$" + "{" + "2:cacheBatchSize" + "}" + ")"), + boost: 10 + }, { + label: "collect", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ collect() : self +
+
+ Before transforming rows, collect them and merge into single Rows instance.
This might lead to memory issues when processing large amount of rows, use with caution.
@lazy +
+ ` + return div + }, + apply: snippet("collect()"), + boost: 10 + }, { + label: "collectRefs", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ collectRefs(References $references) : self +
+
+ This method allows to collect references to all entries used in this pipeline.
\`\`\`php
(new Flow())
->read(From::chain())
->collectRefs($refs = refs())
->run();
\`\`\`
@lazy +
+ ` + return div + }, + apply: snippet("collectRefs(" + "$" + "{" + "1:references" + "}" + ")"), + boost: 10 + }, { + label: "constrain", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ constrain(Constraint $constraint, Constraint $constraints) : self +
+ ` + return div + }, + apply: snippet("constrain(" + "$" + "{" + "1:constraint" + "}" + ", " + "$" + "{" + "2:constraints" + "}" + ")"), + boost: 10 + }, { + label: "count", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ count() : int +
+
+ @trigger
Return total count of rows processed by this pipeline. +
+ ` + return div + }, + apply: snippet("count()"), + boost: 10 + }, { + label: "crossJoin", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ crossJoin(self $dataFrame, string $prefix = '') : self +
+
+ @lazy +
+ ` + return div + }, + apply: snippet("crossJoin(" + "$" + "{" + "1:dataFrame" + "}" + ", " + "$" + "{" + "2:prefix" + "}" + ")"), + boost: 10 + }, { + label: "display", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ display(int $limit = 20, int|bool $truncate = 20, Formatter $formatter = Flow\\ETL\\Formatter\\AsciiTableFormatter::...) : string +
+
+ @param int $limit maximum numbers of rows to display
@param bool|int $truncate false or if set to 0 columns are not truncated, otherwise default truncate to 20
characters
@param Formatter $formatter
@trigger
@throws InvalidArgumentException +
+ ` + return div + }, + apply: snippet("display(" + "$" + "{" + "1:limit" + "}" + ", " + "$" + "{" + "2:truncate" + "}" + ", " + "$" + "{" + "3:formatter" + "}" + ")"), + boost: 10 + }, { + label: "drop", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ drop(Reference|string $entries) : self +
+
+ Drop given entries.
@lazy +
+ ` + return div + }, + apply: snippet("drop(" + "$" + "{" + "1:entries" + "}" + ")"), + boost: 10 + }, { + label: "dropDuplicates", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ dropDuplicates(Reference|string $entries) : self +
+
+ @param Reference|string ...$entries
@lazy
@return $this +
+ ` + return div + }, + apply: snippet("dropDuplicates(" + "$" + "{" + "1:entries" + "}" + ")"), + boost: 10 + }, { + label: "dropPartitions", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ dropPartitions(bool $dropPartitionColumns = false) : self +
+
+ Drop all partitions from Rows, additionally when $dropPartitionColumns is set to true, partition columns are
also removed.
@lazy +
+ ` + return div + }, + apply: snippet("dropPartitions(" + "$" + "{" + "1:dropPartitionColumns" + "}" + ")"), + boost: 10 + }, { + label: "duplicateRow", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ duplicateRow(mixed $condition, WithEntry $entries) : self +
+ ` + return div + }, + apply: snippet("duplicateRow(" + "$" + "{" + "1:condition" + "}" + ", " + "$" + "{" + "2:entries" + "}" + ")"), + boost: 10 + }, { + label: "fetch", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ fetch(int $limit = null) : Rows +
+
+ Be aware that fetch is not memory safe and will load all rows into memory.
If you want to safely iterate over Rows use oe of the following methods:.
DataFrame::get() : \\Generator
DataFrame::getAsArray() : \\Generator
DataFrame::getEach() : \\Generator
DataFrame::getEachAsArray() : \\Generator
@trigger
@throws InvalidArgumentException +
+ ` + return div + }, + apply: snippet("fetch(" + "$" + "{" + "1:limit" + "}" + ")"), + boost: 10 + }, { + label: "filter", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ filter(ScalarFunction $function) : self +
+
+ @lazy +
+ ` + return div + }, + apply: snippet("filter(" + "$" + "{" + "1:function" + "}" + ")"), + boost: 10 + }, { + label: "filterPartitions", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ filterPartitions(Filter|ScalarFunction $filter) : self +
+
+ @lazy
@throws RuntimeException +
+ ` + return div + }, + apply: snippet("filterPartitions(" + "$" + "{" + "1:filter" + "}" + ")"), + boost: 10 + }, { + label: "filters", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ filters(array $functions) : self +
+
+ @lazy
@param array $functions +
+ ` + return div + }, + apply: snippet("filters(" + "$" + "{" + "1:functions" + "}" + ")"), + boost: 10 + }, { + label: "forEach", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ forEach(callable $callback = null) : void +
+
+ @trigger
@param null|callable(Rows $rows) : void $callback +
+ ` + return div + }, + apply: snippet("forEach(" + "$" + "{" + "1:callback" + "}" + ")"), + boost: 10 + }, { + label: "get", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ get() : Generator +
+
+ Yields each row as an instance of Rows.
@trigger
@return \\Generator +
+ ` + return div + }, + apply: snippet("get()"), + boost: 10 + }, { + label: "getAsArray", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ getAsArray() : Generator +
+
+ Yields each row as an array.
@trigger
@return \\Generator>> +
+ ` + return div + }, + apply: snippet("getAsArray()"), + boost: 10 + }, { + label: "getEach", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ getEach() : Generator +
+
+ Yield each row as an instance of Row.
@trigger
@return \\Generator +
+ ` + return div + }, + apply: snippet("getEach()"), + boost: 10 + }, { + label: "getEachAsArray", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ getEachAsArray() : Generator +
+
+ Yield each row as an array.
@trigger
@return \\Generator> +
+ ` + return div + }, + apply: snippet("getEachAsArray()"), + boost: 10 + }, { + label: "groupBy", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ groupBy(Reference|string $entries) : GroupedDataFrame +
+
+ @lazy +
+ ` + return div + }, + apply: snippet("groupBy(" + "$" + "{" + "1:entries" + "}" + ")"), + boost: 10 + }, { + label: "join", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ join(self $dataFrame, Expression $on, Join|string $type = Flow\\ETL\\Join\\Join::...) : self +
+
+ @lazy +
+ ` + return div + }, + apply: snippet("join(" + "$" + "{" + "1:dataFrame" + "}" + ", " + "$" + "{" + "2:on" + "}" + ", " + "$" + "{" + "3:type" + "}" + ")"), + boost: 10 + }, { + label: "joinEach", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ joinEach(DataFrameFactory $factory, Expression $on, Join|string $type = Flow\\ETL\\Join\\Join::...) : self +
+
+ @lazy
@psalm-param string|Join $type +
+ ` + return div + }, + apply: snippet("joinEach(" + "$" + "{" + "1:factory" + "}" + ", " + "$" + "{" + "2:on" + "}" + ", " + "$" + "{" + "3:type" + "}" + ")"), + boost: 10 + }, { + label: "limit", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ limit(int $limit) : self +
+
+ @lazy
@throws InvalidArgumentException +
+ ` + return div + }, + apply: snippet("limit(" + "$" + "{" + "1:limit" + "}" + ")"), + boost: 10 + }, { + label: "load", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ load(Loader $loader) : self +
+
+ @lazy +
+ ` + return div + }, + apply: snippet("load(" + "$" + "{" + "1:loader" + "}" + ")"), + boost: 10 + }, { + label: "map", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ map(callable $callback) : self +
+
+ @lazy
@param callable(Row $row) : Row $callback +
+ ` + return div + }, + apply: snippet("map(" + "$" + "{" + "1:callback" + "}" + ")"), + boost: 10 + }, { + label: "match", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ match(Schema $schema, SchemaValidator $validator = null) : self +
+
+ @lazy
@param null|SchemaValidator $validator - when null, StrictValidator gets initialized +
+ ` + return div + }, + apply: snippet("match(" + "$" + "{" + "1:schema" + "}" + ", " + "$" + "{" + "2:validator" + "}" + ")"), + boost: 10 + }, { + label: "mode", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ mode(SaveMode|ExecutionMode $mode) : self +
+
+ This method is used to set the behavior of the DataFrame.
Available modes:
- SaveMode defines how Flow should behave when writing to a file/files that already exists.
- ExecutionMode - defines how functions should behave when they encounter unexpected data (e.g., type mismatches, missing values).
@lazy
@return $this +
+ ` + return div + }, + apply: snippet("mode(" + "$" + "{" + "1:mode" + "}" + ")"), + boost: 10 + }, { + label: "offset", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ offset(int $offset) : self +
+
+ Skip given number of rows from the beginning of the dataset.
When $offset is null, nothing happens (no rows are skipped).
Performance Note: DataFrame must iterate through and process all skipped rows
to reach the offset position. For large offsets, this can impact performance
as the data source still needs to be read and processed up to the offset point.
@param ?int<0, max> $offset
@lazy
@throws InvalidArgumentException +
+ ` + return div + }, + apply: snippet("offset(" + "$" + "{" + "1:offset" + "}" + ")"), + boost: 10 + }, { + label: "onError", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ onError(ErrorHandler $handler) : self +
+
+ @lazy +
+ ` + return div + }, + apply: snippet("onError(" + "$" + "{" + "1:handler" + "}" + ")"), + boost: 10 + }, { + label: "partitionBy", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ partitionBy(Reference|string $entry, Reference|string $entries) : self +
+
+ @lazy +
+ ` + return div + }, + apply: snippet("partitionBy(" + "$" + "{" + "1:entry" + "}" + ", " + "$" + "{" + "2:entries" + "}" + ")"), + boost: 10 + }, { + label: "pivot", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pivot(Reference $ref) : self +
+ ` + return div + }, + apply: snippet("pivot(" + "$" + "{" + "1:ref" + "}" + ")"), + boost: 10 + }, { + label: "printRows", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ printRows(int $limit = 20, int|bool $truncate = 20, Formatter $formatter = Flow\\ETL\\Formatter\\AsciiTableFormatter::...) : void +
+
+ @trigger +
+ ` + return div + }, + apply: snippet("printRows(" + "$" + "{" + "1:limit" + "}" + ", " + "$" + "{" + "2:truncate" + "}" + ", " + "$" + "{" + "3:formatter" + "}" + ")"), + boost: 10 + }, { + label: "printSchema", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ printSchema(int $limit = 20, SchemaFormatter $formatter = Flow\\ETL\\Row\\Formatter\\ASCIISchemaFormatter::...) : void +
+
+ @trigger +
+ ` + return div + }, + apply: snippet("printSchema(" + "$" + "{" + "1:limit" + "}" + ", " + "$" + "{" + "2:formatter" + "}" + ")"), + boost: 10 + }, { + label: "rename", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ rename(string $from, string $to) : self +
+
+ @lazy +
+ ` + return div + }, + apply: snippet("rename(" + "$" + "{" + "1:from" + "}" + ", " + "$" + "{" + "2:to" + "}" + ")"), + boost: 10 + }, { + label: "renameAll", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ renameAll(string $search, string $replace) : self +
+
+ @lazy
Iterate over all entry names and replace the given search string with replace string.
@deprecated use DataFrame::renameEach() with a RenameReplaceStrategy +
+ ` + return div + }, + apply: snippet("renameAll(" + "$" + "{" + "1:search" + "}" + ", " + "$" + "{" + "2:replace" + "}" + ")"), + boost: 10 + }, { + label: "renameAllLowerCase", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ renameAllLowerCase() : self +
+
+ @lazy
@deprecated use DataFrame::renameEach() with a selected StringStyles +
+ ` + return div + }, + apply: snippet("renameAllLowerCase()"), + boost: 10 + }, { + label: "renameAllStyle", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ renameAllStyle(StringStyles|StringStyles|string $style) : self +
+
+ @lazy
Rename all entries to a given style.
Please look into \\Flow\\ETL\\Function\\StyleConverter\\StringStyles class for all available styles.
@deprecated use DataFrame::renameEach() with a selected Style +
+ ` + return div + }, + apply: snippet("renameAllStyle(" + "$" + "{" + "1:style" + "}" + ")"), + boost: 10 + }, { + label: "renameAllUpperCase", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ renameAllUpperCase() : self +
+
+ @lazy
@deprecated use DataFrame::renameEach() with a selected Style +
+ ` + return div + }, + apply: snippet("renameAllUpperCase()"), + boost: 10 + }, { + label: "renameAllUpperCaseFirst", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ renameAllUpperCaseFirst() : self +
+
+ @lazy
@deprecated use DataFrame::renameEach() with a selected Style +
+ ` + return div + }, + apply: snippet("renameAllUpperCaseFirst()"), + boost: 10 + }, { + label: "renameAllUpperCaseWord", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ renameAllUpperCaseWord() : self +
+
+ @lazy
@deprecated use DataFrame::renameEach() with a selected Style +
+ ` + return div + }, + apply: snippet("renameAllUpperCaseWord()"), + boost: 10 + }, { + label: "renameEach", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ renameEach(RenameEntryStrategy $strategies) : self +
+ ` + return div + }, + apply: snippet("renameEach(" + "$" + "{" + "1:strategies" + "}" + ")"), + boost: 10 + }, { + label: "reorderEntries", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ reorderEntries(Comparator $comparator = Flow\\ETL\\Transformer\\OrderEntries\\TypeComparator::...) : self +
+ ` + return div + }, + apply: snippet("reorderEntries(" + "$" + "{" + "1:comparator" + "}" + ")"), + boost: 10 + }, { + label: "rows", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ rows(Transformer|Transformation $transformer) : self +
+
+ @lazy
Alias for ETL::transform method. +
+ ` + return div + }, + apply: snippet("rows(" + "$" + "{" + "1:transformer" + "}" + ")"), + boost: 10 + }, { + label: "run", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ run(callable $callback = null, Analyze|bool $analyze = false) : Report +
+
+ @trigger
When analyzing pipeline execution we can chose to collect various metrics through analyze()->with*() method
- column statistics - analyze()->withColumnStatistics()
- schema - analyze()->withSchema()
@param null|callable(Rows $rows, FlowContext $context): void $callback
@param Analyze|bool $analyze - when set run will return Report
@return ($analyze is Analyze|true ? Report : null) +
+ ` + return div + }, + apply: snippet("run(" + "$" + "{" + "1:callback" + "}" + ", " + "$" + "{" + "2:analyze" + "}" + ")"), + boost: 10 + }, { + label: "saveMode", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ saveMode(SaveMode $mode) : self +
+
+ Alias for DataFrame::mode.
@lazy +
+ ` + return div + }, + apply: snippet("saveMode(" + "$" + "{" + "1:mode" + "}" + ")"), + boost: 10 + }, { + label: "schema", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ schema() : Schema +
+
+ @trigger
@return Schema +
+ ` + return div + }, + apply: snippet("schema()"), + boost: 10 + }, { + label: "select", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ select(Reference|string $entries) : self +
+
+ @lazy
Keep only given entries. +
+ ` + return div + }, + apply: snippet("select(" + "$" + "{" + "1:entries" + "}" + ")"), + boost: 10 + }, { + label: "sortBy", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ sortBy(Reference $entries) : self +
+
+ @lazy +
+ ` + return div + }, + apply: snippet("sortBy(" + "$" + "{" + "1:entries" + "}" + ")"), + boost: 10 + }, { + label: "transform", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ transform(Transformer|Transformation|Transformations|WithEntry $transformer) : self +
+
+ Alias for DataFrame::with().
@lazy +
+ ` + return div + }, + apply: snippet("transform(" + "$" + "{" + "1:transformer" + "}" + ")"), + boost: 10 + }, { + label: "until", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ until(ScalarFunction $function) : self +
+
+ The difference between filter and until is that filter will keep filtering rows until extractors finish yielding
rows. Until will send a STOP signal to the Extractor when the condition is not met.
@lazy +
+ ` + return div + }, + apply: snippet("until(" + "$" + "{" + "1:function" + "}" + ")"), + boost: 10 + }, { + label: "validate", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ validate(Schema $schema, SchemaValidator $validator = null) : self +
+
+ @deprecated Please use DataFrame::match instead
@lazy
@param null|SchemaValidator $validator - when null, StrictValidator gets initialized +
+ ` + return div + }, + apply: snippet("validate(" + "$" + "{" + "1:schema" + "}" + ", " + "$" + "{" + "2:validator" + "}" + ")"), + boost: 10 + }, { + label: "void", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ void() : self +
+
+ @lazy
This method is useful mostly in development when
you want to pause processing at certain moment without
removing code. All operations will get processed up to this point,
from here no rows are passed forward. +
+ ` + return div + }, + apply: snippet("void()"), + boost: 10 + }, { + label: "with", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ with(Transformer|Transformation|Transformations|WithEntry $transformer) : self +
+
+ @lazy +
+ ` + return div + }, + apply: snippet("with(" + "$" + "{" + "1:transformer" + "}" + ")"), + boost: 10 + }, { + label: "withEntries", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ withEntries(array $references) : self +
+
+ @lazy
@param array|array $references +
+ ` + return div + }, + apply: snippet("withEntries(" + "$" + "{" + "1:references" + "}" + ")"), + boost: 10 + }, { + label: "withEntry", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ withEntry(Definition|string $entry, ScalarFunction|WindowFunction $reference) : self +
+
+ @param Definition|string $entry
@lazy +
+ ` + return div + }, + apply: snippet("withEntry(" + "$" + "{" + "1:entry" + "}" + ", " + "$" + "{" + "2:reference" + "}" + ")"), + boost: 10 + }, { + label: "write", + type: "method", + detail: "Flow\\\\ETL\\\\DataFrame", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ write(Loader $loader) : self +
+
+ @lazy
Alias for ETL::load function. +
+ ` + return div + }, + apply: snippet("write(" + "$" + "{" + "1:loader" + "}" + ")"), + boost: 10 + } ] + +/** + * DataFrame method completion source for CodeMirror + * @param {CompletionContext} context + * @returns {CompletionResult|null} + */ +export function dataframeCompletions(context) { + // Get text before cursor (potentially across multiple lines) + // Look back up to 2000 characters to find the pattern + const maxLookback = 2000 + const docText = context.state.doc.toString() + const startPos = Math.max(0, context.pos - maxLookback) + const textBefore = docText.slice(startPos, context.pos) + + // Check if we're directly after -> (method chaining context) + // Match pattern: ->word* at the end + if (!new RegExp('->\\w*$').test(textBefore)) { + return null + } + + // Collect all DataFrame-returning method names + const allMethods = [] + for (const [className, methods] of Object.entries(dataframeReturningMethods)) { + allMethods.push(...methods) + } + + if (allMethods.length === 0) { + return null + } + + // Walk backwards to find the most recent completed method call at top level + // Strategy: find the last occurrence of methodName()->... pattern where parens are balanced + const methodPattern = new RegExp('\\b(' + allMethods.join('|') + ')\\s*\\(', 'g') + let matches = [] + let match + + while ((match = methodPattern.exec(textBefore)) !== null) { + matches.push({ name: match[1], index: match.index, endOfName: match.index + match[0].length }) + } + + // Walk backwards from cursor tracking parenthesis depth + // to find what context we're in + let depth = 0 + let i = textBefore.length - 1 + + // Skip back past the -> and any word being typed + while (i >= 0 && /[\w>-]/.test(textBefore[i])) { + i-- + } + + // Now count parentheses going backwards + while (i >= 0) { + if (textBefore[i] === ')') depth++ + else if (textBefore[i] === '(') { + depth-- + // If we're back to depth 0, check if this ( belongs to a DataFrame method + if (depth === 0) { + // Look backwards to find the method name + let methodEnd = i + while (methodEnd > 0 && /\s/.test(textBefore[methodEnd - 1])) { + methodEnd-- + } + let methodStart = methodEnd + while (methodStart > 0 && /\w/.test(textBefore[methodStart - 1])) { + methodStart-- + } + const methodName = textBefore.slice(methodStart, methodEnd) + + // Check if this is a DataFrame-returning method + if (allMethods.includes(methodName)) { + // This is it! We're directly after this method call + return continueWithCompletions() + } + // If not, we're done checking - we're inside some other call + return null + } + } + i-- + } + + return null + + function continueWithCompletions() { + // Match word being typed (method name after ->) + const word = context.matchBefore(/\w*/) + + // If no word and not explicit, don't show completions + if (!word && !context.explicit) { + return null + } + + // Filter methods based on what's being typed + const prefix = word ? word.text.toLowerCase() : '' + const options = dataframeMethods.filter(method => + !prefix || method.label.toLowerCase().startsWith(prefix) + ) + + return { + from: word ? word.from : context.pos, + options: options, + validFor: new RegExp('^\\w*$') // Reuse while typing word characters + } + } +} diff --git a/web/landing/tests/Flow/Website/Tests/Fixtures/Completers/dsl.js b/web/landing/tests/Flow/Website/Tests/Fixtures/Completers/dsl.js new file mode 100644 index 0000000000..43f906df1d --- /dev/null +++ b/web/landing/tests/Flow/Website/Tests/Fixtures/Completers/dsl.js @@ -0,0 +1,12032 @@ +/** + * CodeMirror Completer for Flow PHP DSL Functions + * + * Total functions: 703 + * + * This completer provides autocompletion for all Flow PHP DSL functions: + * - Extractors (flow-extractors) + * - Loaders (flow-loaders) + * - Transformers (flow-transformers) + * - Scalar Functions (flow-scalar-functions) + * - Aggregating Functions (flow-aggregating-functions) + * - Window Functions (flow-window-functions) + * - And more... + */ + +import { CompletionContext, snippet } from "@codemirror/autocomplete" + +// All DSL functions +const dslFunctions = [ + { + label: "add_row_index", + type: "function", + detail: "flow\u002Ddsl\u002Dtransformers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ add_row_index(string $column = 'index', StartFrom $startFrom = Flow\\ETL\\Transformation\\AddRowIndex\\StartFrom::...) : AddRowIndex +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\add_row_index(" + "$" + "{" + "1:column" + "}" + ", " + "$" + "{" + "2:startFrom" + "}" + ")"), + boost: 10 + }, { + label: "agg", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ agg(string $name, array $args = [], bool $distinct = false) : AggregateCall +
+
+ Create an aggregate function call (COUNT, SUM, AVG, etc.).
@param string $name Aggregate function name
@param list $args Function arguments
@param bool $distinct Use DISTINCT modifier +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\agg(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:args" + "}" + ", " + "$" + "{" + "3:distinct" + "}" + ")"), + boost: 10 + }, { + label: "agg_avg", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ agg_avg(Expression $expr, bool $distinct = false) : AggregateCall +
+
+ Create AVG aggregate. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\agg_avg(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:distinct" + "}" + ")"), + boost: 10 + }, { + label: "agg_count", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ agg_count(Expression $expr = null, bool $distinct = false) : AggregateCall +
+
+ Create COUNT(*) aggregate. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\agg_count(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:distinct" + "}" + ")"), + boost: 10 + }, { + label: "agg_max", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ agg_max(Expression $expr) : AggregateCall +
+
+ Create MAX aggregate. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\agg_max(" + "$" + "{" + "1:expr" + "}" + ")"), + boost: 10 + }, { + label: "agg_min", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ agg_min(Expression $expr) : AggregateCall +
+
+ Create MIN aggregate. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\agg_min(" + "$" + "{" + "1:expr" + "}" + ")"), + boost: 10 + }, { + label: "agg_sum", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ agg_sum(Expression $expr, bool $distinct = false) : AggregateCall +
+
+ Create SUM aggregate. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\agg_sum(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:distinct" + "}" + ")"), + boost: 10 + }, { + label: "all", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ all(ScalarFunction $functions) : All +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\all(" + "$" + "{" + "1:functions" + "}" + ")"), + boost: 10 + }, { + label: "all_sub_select", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ all_sub_select(Expression $left, ComparisonOperator $operator, SelectFinalStep $subquery) : All +
+
+ Create an ALL condition. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\all_sub_select(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:operator" + "}" + ", " + "$" + "{" + "3:subquery" + "}" + ")"), + boost: 10 + }, { + label: "alter", + type: "function", + detail: "flow\u002Ddsl\u002Dschema", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ alter() : AlterFactory +
+
+ Create a factory for building ALTER statements.
Provides a unified entry point for all ALTER operations:
- alter()->table() - ALTER TABLE
- alter()->index() - ALTER INDEX
- alter()->view() - ALTER VIEW
- alter()->materializedView() - ALTER MATERIALIZED VIEW
- alter()->sequence() - ALTER SEQUENCE
- alter()->schema() - ALTER SCHEMA
- alter()->role() - ALTER ROLE
- alter()->function() - ALTER FUNCTION
- alter()->procedure() - ALTER PROCEDURE
- alter()->trigger() - ALTER TRIGGER
- alter()->extension() - ALTER EXTENSION
- alter()->enumType() - ALTER TYPE (enum)
- alter()->domain() - ALTER DOMAIN
Rename operations are also under alter():
- alter()->index(\'old\')->renameTo(\'new\')
- alter()->view(\'old\')->renameTo(\'new\')
- alter()->schema(\'old\')->renameTo(\'new\')
- alter()->role(\'old\')->renameTo(\'new\')
- alter()->trigger(\'old\')->on(\'table\')->renameTo(\'new\')
Example: alter()->table(\'users\')->addColumn(col_def(\'email\', data_type_text()))
Example: alter()->sequence(\'user_id_seq\')->restart(1000) +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\alter()"), + boost: 10 + }, { + label: "always_off_exemplar_filter", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ always_off_exemplar_filter() : AlwaysOffExemplarFilter +
+
+ Create an AlwaysOffExemplarFilter.
Never records exemplars. Use this filter to disable exemplar collection
entirely for performance optimization. +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\always_off_exemplar_filter()"), + boost: 10 + }, { + label: "always_on_exemplar_filter", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ always_on_exemplar_filter() : AlwaysOnExemplarFilter +
+
+ Create an AlwaysOnExemplarFilter.
Records exemplars whenever a span context is present.
Use this filter for debugging or when complete trace context is important. +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\always_on_exemplar_filter()"), + boost: 10 + }, { + label: "analyze", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ analyze() : Analyze +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\analyze()"), + boost: 10 + }, { + label: "analyze", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ analyze() : AnalyzeFinalStep +
+
+ Create an ANALYZE builder.
Example: analyze()->table(\'users\')
Produces: ANALYZE users +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\analyze()"), + boost: 10 + }, { + label: "any", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ any(ScalarFunction $values) : Any +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\any(" + "$" + "{" + "1:values" + "}" + ")"), + boost: 10 + }, { + label: "any_sub_select", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ any_sub_select(Expression $left, ComparisonOperator $operator, SelectFinalStep $subquery) : Any +
+
+ Create an ANY condition. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\any_sub_select(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:operator" + "}" + ", " + "$" + "{" + "3:subquery" + "}" + ")"), + boost: 10 + }, { + label: "append", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ append() : SaveMode +
+
+ Alias for save_mode_append(). +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\append()"), + boost: 10 + }, { + label: "array_carrier", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ array_carrier(array $data = []) : ArrayCarrier +
+
+ Create an ArrayCarrier.
Carrier backed by an associative array with case-insensitive key lookup.
@param array $data Initial carrier data +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\array_carrier(" + "$" + "{" + "1:data" + "}" + ")"), + boost: 10 + }, { + label: "array_contained_by", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ array_contained_by(Expression $left, Expression $right) : OperatorCondition +
+
+ Create an array is contained by condition (<@).
Example: array_contained_by(col(\'tags\'), raw_expr(\"ARRAY[\'sale\', \'featured\', \'new\']\"))
Produces: tags <@ ARRAY[\'sale\', \'featured\', \'new\'] +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\array_contained_by(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:right" + "}" + ")"), + boost: 10 + }, { + label: "array_contains", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ array_contains(Expression $left, Expression $right) : OperatorCondition +
+
+ Create an array contains condition (@>).
Example: array_contains(col(\'tags\'), raw_expr(\"ARRAY[\'sale\']\"))
Produces: tags @> ARRAY[\'sale\'] +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\array_contains(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:right" + "}" + ")"), + boost: 10 + }, { + label: "array_exists", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ array_exists(ScalarFunction|array $ref, ScalarFunction|string $path) : ArrayPathExists +
+
+ @param array|ScalarFunction $ref +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\array_exists(" + "$" + "{" + "1:ref" + "}" + ", " + "$" + "{" + "2:path" + "}" + ")"), + boost: 10 + }, { + label: "array_expand", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ array_expand(ScalarFunction $function, ArrayExpand $expand = Flow\\ETL\\Function\\ArrayExpand\\ArrayExpand::...) : ArrayExpand +
+
+ Expands each value into entry, if there are more than one value, multiple rows will be created.
Array keys are ignored, only values are used to create new rows.
Before:
+--+-------------------+
|id| array|
+--+-------------------+
| 1|{\"a\":1,\"b\":2,\"c\":3}|
+--+-------------------+
After:
+--+--------+
|id|expanded|
+--+--------+
| 1| 1|
| 1| 2|
| 1| 3|
+--+--------+ +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\array_expand(" + "$" + "{" + "1:function" + "}" + ", " + "$" + "{" + "2:expand" + "}" + ")"), + boost: 10 + }, { + label: "array_expr", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ array_expr(array $elements) : ArrayExpression +
+
+ Create an array expression.
@param list $elements Array elements +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\array_expr(" + "$" + "{" + "1:elements" + "}" + ")"), + boost: 10 + }, { + label: "array_get", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ array_get(ScalarFunction $ref, ScalarFunction|string $path) : ArrayGet +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\array_get(" + "$" + "{" + "1:ref" + "}" + ", " + "$" + "{" + "2:path" + "}" + ")"), + boost: 10 + }, { + label: "array_get_collection", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ array_get_collection(ScalarFunction $ref, ScalarFunction|array $keys) : ArrayGetCollection +
+
+ @param array|ScalarFunction $keys +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\array_get_collection(" + "$" + "{" + "1:ref" + "}" + ", " + "$" + "{" + "2:keys" + "}" + ")"), + boost: 10 + }, { + label: "array_get_collection_first", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ array_get_collection_first(ScalarFunction $ref, string $keys) : ArrayGetCollection +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\array_get_collection_first(" + "$" + "{" + "1:ref" + "}" + ", " + "$" + "{" + "2:keys" + "}" + ")"), + boost: 10 + }, { + label: "array_keys_style_convert", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ array_keys_style_convert(ScalarFunction $ref, StringStyles|StringStyles|string $style = Flow\\ETL\\String\\StringStyles::...) : ArrayKeysStyleConvert +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\array_keys_style_convert(" + "$" + "{" + "1:ref" + "}" + ", " + "$" + "{" + "2:style" + "}" + ")"), + boost: 10 + }, { + label: "array_key_rename", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ array_key_rename(ScalarFunction $ref, ScalarFunction|string $path, ScalarFunction|string $newName) : ArrayKeyRename +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\array_key_rename(" + "$" + "{" + "1:ref" + "}" + ", " + "$" + "{" + "2:path" + "}" + ", " + "$" + "{" + "3:newName" + "}" + ")"), + boost: 10 + }, { + label: "array_merge", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ array_merge(ScalarFunction|array $left, ScalarFunction|array $right) : ArrayMerge +
+
+ @param array|ScalarFunction $left
@param array|ScalarFunction $right +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\array_merge(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:right" + "}" + ")"), + boost: 10 + }, { + label: "array_merge_collection", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ array_merge_collection(ScalarFunction|array $array) : ArrayMergeCollection +
+
+ @param array|ScalarFunction $array +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\array_merge_collection(" + "$" + "{" + "1:array" + "}" + ")"), + boost: 10 + }, { + label: "array_overlap", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ array_overlap(Expression $left, Expression $right) : OperatorCondition +
+
+ Create an array overlap condition (&&).
Example: array_overlap(col(\'tags\'), raw_expr(\"ARRAY[\'sale\', \'featured\']\"))
Produces: tags && ARRAY[\'sale\', \'featured\'] +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\array_overlap(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:right" + "}" + ")"), + boost: 10 + }, { + label: "array_reverse", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ array_reverse(ScalarFunction|array $function, ScalarFunction|bool $preserveKeys = false) : ArrayReverse +
+
+ @param array|ScalarFunction $function +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\array_reverse(" + "$" + "{" + "1:function" + "}" + ", " + "$" + "{" + "2:preserveKeys" + "}" + ")"), + boost: 10 + }, { + label: "array_sort", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ array_sort(ScalarFunction $function, ScalarFunction|Sort|null $sort_function = null, ScalarFunction|int|null $flags = null, ScalarFunction|bool $recursive = true) : ArraySort +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\array_sort(" + "$" + "{" + "1:function" + "}" + ", " + "$" + "{" + "2:sort_function" + "}" + ", " + "$" + "{" + "3:flags" + "}" + ", " + "$" + "{" + "4:recursive" + "}" + ")"), + boost: 10 + }, { + label: "array_to_generator", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ array_to_generator(array $data) : Generator +
+
+ @template T
@param array $data
@return \\Generator +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Parquet\\array_to_generator(" + "$" + "{" + "1:data" + "}" + ")"), + boost: 10 + }, { + label: "array_to_row", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ array_to_row(array $data, EntryFactory $entryFactory, Partitions|array $partitions = [], Schema $schema = null) : Row +
+
+ @param array>|array $data
@param array|Partitions $partitions
@param null|Schema $schema +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\array_to_row(" + "$" + "{" + "1:data" + "}" + ", " + "$" + "{" + "2:entryFactory" + "}" + ", " + "$" + "{" + "3:partitions" + "}" + ", " + "$" + "{" + "4:schema" + "}" + ")"), + boost: 10 + }, { + label: "array_to_rows", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ array_to_rows(array $data, EntryFactory $entryFactory, Partitions|array $partitions = [], Schema $schema = null) : Rows +
+
+ @param array>|array $data
@param array|Partitions $partitions
@param null|Schema $schema +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\array_to_rows(" + "$" + "{" + "1:data" + "}" + ", " + "$" + "{" + "2:entryFactory" + "}" + ", " + "$" + "{" + "3:partitions" + "}" + ", " + "$" + "{" + "4:schema" + "}" + ")"), + boost: 10 + }, { + label: "array_unpack", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ array_unpack(ScalarFunction|array $array, ScalarFunction|array $skip_keys = [], ScalarFunction|string|null $entry_prefix = null) : ArrayUnpack +
+
+ @param array|ScalarFunction $array
@param array|ScalarFunction $skip_keys +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\array_unpack(" + "$" + "{" + "1:array" + "}" + ", " + "$" + "{" + "2:skip_keys" + "}" + ", " + "$" + "{" + "3:entry_prefix" + "}" + ")"), + boost: 10 + }, { + label: "asc", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ asc(Expression $expr, NullsPosition $nulls = Flow\\PostgreSql\\QueryBuilder\\Clause\\NullsPosition::...) : OrderBy +
+
+ Create an ORDER BY item with ASC direction. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\asc(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:nulls" + "}" + ")"), + boost: 10 + }, { + label: "average", + type: "function", + detail: "flow\u002Ddsl\u002Daggregating\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ average(EntryReference|string $ref, int $scale = 2, Rounding $rounding = Flow\\Calculator\\Rounding::...) : Average +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\average(" + "$" + "{" + "1:ref" + "}" + ", " + "$" + "{" + "2:scale" + "}" + ", " + "$" + "{" + "3:rounding" + "}" + ")"), + boost: 10 + }, { + label: "aws_s3_client", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ aws_s3_client(array $configuration) : S3Client +
+
+ @param array $configuration - for details please see https://async-aws.com/clients/s3.html +
+ ` + return div + }, + apply: snippet("\\Flow\\Filesystem\\Bridge\\AsyncAWS\\DSL\\aws_s3_client(" + "$" + "{" + "1:configuration" + "}" + ")"), + boost: 10 + }, { + label: "aws_s3_filesystem", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ aws_s3_filesystem(string $bucket, S3Client $s3Client, Options $options = Flow\\Filesystem\\Bridge\\AsyncAWS\\Options::...) : AsyncAWSS3Filesystem +
+ ` + return div + }, + apply: snippet("\\Flow\\Filesystem\\Bridge\\AsyncAWS\\DSL\\aws_s3_filesystem(" + "$" + "{" + "1:bucket" + "}" + ", " + "$" + "{" + "2:s3Client" + "}" + ", " + "$" + "{" + "3:options" + "}" + ")"), + boost: 10 + }, { + label: "azure_blob_service", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ azure_blob_service(Configuration $configuration, AuthorizationFactory $azure_authorization_factory, ClientInterface $client = null, HttpFactory $azure_http_factory = null, URLFactory $azure_url_factory = null, LoggerInterface $logger = null) : BlobServiceInterface +
+ ` + return div + }, + apply: snippet("\\Flow\\Azure\\SDK\\DSL\\azure_blob_service(" + "$" + "{" + "1:configuration" + "}" + ", " + "$" + "{" + "2:azure_authorization_factory" + "}" + ", " + "$" + "{" + "3:client" + "}" + ", " + "$" + "{" + "4:azure_http_factory" + "}" + ", " + "$" + "{" + "5:azure_url_factory" + "}" + ", " + "$" + "{" + "6:logger" + "}" + ")"), + boost: 10 + }, { + label: "azure_blob_service_config", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ azure_blob_service_config(string $account, string $container) : Configuration +
+ ` + return div + }, + apply: snippet("\\Flow\\Azure\\SDK\\DSL\\azure_blob_service_config(" + "$" + "{" + "1:account" + "}" + ", " + "$" + "{" + "2:container" + "}" + ")"), + boost: 10 + }, { + label: "azure_filesystem", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ azure_filesystem(BlobServiceInterface $blob_service, Options $options = Flow\\Filesystem\\Bridge\\Azure\\Options::...) : AzureBlobFilesystem +
+ ` + return div + }, + apply: snippet("\\Flow\\Filesystem\\Bridge\\Azure\\DSL\\azure_filesystem(" + "$" + "{" + "1:blob_service" + "}" + ", " + "$" + "{" + "2:options" + "}" + ")"), + boost: 10 + }, { + label: "azure_filesystem_options", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ azure_filesystem_options() : Options +
+ ` + return div + }, + apply: snippet("\\Flow\\Filesystem\\Bridge\\Azure\\DSL\\azure_filesystem_options()"), + boost: 10 + }, { + label: "azure_http_factory", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ azure_http_factory(RequestFactoryInterface $request_factory, StreamFactoryInterface $stream_factory) : HttpFactory +
+ ` + return div + }, + apply: snippet("\\Flow\\Azure\\SDK\\DSL\\azure_http_factory(" + "$" + "{" + "1:request_factory" + "}" + ", " + "$" + "{" + "2:stream_factory" + "}" + ")"), + boost: 10 + }, { + label: "azure_shared_key_authorization_factory", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ azure_shared_key_authorization_factory(string $account, string $key) : SharedKeyFactory +
+ ` + return div + }, + apply: snippet("\\Flow\\Azure\\SDK\\DSL\\azure_shared_key_authorization_factory(" + "$" + "{" + "1:account" + "}" + ", " + "$" + "{" + "2:key" + "}" + ")"), + boost: 10 + }, { + label: "azure_url_factory", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ azure_url_factory(string $host = 'blob.core.windows.net') : AzureURLFactory +
+ ` + return div + }, + apply: snippet("\\Flow\\Azure\\SDK\\DSL\\azure_url_factory(" + "$" + "{" + "1:host" + "}" + ")"), + boost: 10 + }, { + label: "azurite_url_factory", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ azurite_url_factory(string $host = 'localhost', string $port = '10000', bool $secure = false) : AzuriteURLFactory +
+ ` + return div + }, + apply: snippet("\\Flow\\Azure\\SDK\\DSL\\azurite_url_factory(" + "$" + "{" + "1:host" + "}" + ", " + "$" + "{" + "2:port" + "}" + ", " + "$" + "{" + "3:secure" + "}" + ")"), + boost: 10 + }, { + label: "baggage", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ baggage(array $entries = []) : Baggage +
+
+ Create a Baggage.
@param array $entries Initial key-value entries +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\baggage(" + "$" + "{" + "1:entries" + "}" + ")"), + boost: 10 + }, { + label: "bar_chart", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ bar_chart(EntryReference $label, References $datasets) : BarChart +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\ChartJS\\bar_chart(" + "$" + "{" + "1:label" + "}" + ", " + "$" + "{" + "2:datasets" + "}" + ")"), + boost: 10 + }, { + label: "batched_by", + type: "function", + detail: "flow\u002Ddsl\u002Dextractors", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ batched_by(Extractor $extractor, Reference|string $column, int $min_size = null) : BatchByExtractor +
+
+ @param null|int<1, max> $min_size +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\batched_by(" + "$" + "{" + "1:extractor" + "}" + ", " + "$" + "{" + "2:column" + "}" + ", " + "$" + "{" + "3:min_size" + "}" + ")"), + boost: 10 + }, { + label: "batches", + type: "function", + detail: "flow\u002Ddsl\u002Dextractors", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ batches(Extractor $extractor, int $size) : BatchExtractor +
+
+ @param int<1, max> $size +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\batches(" + "$" + "{" + "1:extractor" + "}" + ", " + "$" + "{" + "2:size" + "}" + ")"), + boost: 10 + }, { + label: "batching_log_processor", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ batching_log_processor(LogExporter $exporter, int $batchSize = 512) : BatchingLogProcessor +
+
+ Create a BatchingLogProcessor.
Collects log records in memory and exports them in batches for efficiency.
Logs are exported when batch size is reached, flush() is called, or shutdown().
@param LogExporter $exporter The exporter to send logs to
@param int $batchSize Number of logs to collect before exporting (default 512) +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\batching_log_processor(" + "$" + "{" + "1:exporter" + "}" + ", " + "$" + "{" + "2:batchSize" + "}" + ")"), + boost: 10 + }, { + label: "batching_metric_processor", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ batching_metric_processor(MetricExporter $exporter, int $batchSize = 512) : BatchingMetricProcessor +
+
+ Create a BatchingMetricProcessor.
Collects metrics in memory and exports them in batches for efficiency.
Metrics are exported when batch size is reached, flush() is called, or shutdown().
@param MetricExporter $exporter The exporter to send metrics to
@param int $batchSize Number of metrics to collect before exporting (default 512) +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\batching_metric_processor(" + "$" + "{" + "1:exporter" + "}" + ", " + "$" + "{" + "2:batchSize" + "}" + ")"), + boost: 10 + }, { + label: "batching_span_processor", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ batching_span_processor(SpanExporter $exporter, int $batchSize = 512) : BatchingSpanProcessor +
+
+ Create a BatchingSpanProcessor.
Collects spans in memory and exports them in batches for efficiency.
Spans are exported when batch size is reached, flush() is called, or shutdown().
@param SpanExporter $exporter The exporter to send spans to
@param int $batchSize Number of spans to collect before exporting (default 512) +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\batching_span_processor(" + "$" + "{" + "1:exporter" + "}" + ", " + "$" + "{" + "2:batchSize" + "}" + ")"), + boost: 10 + }, { + label: "batch_size", + type: "function", + detail: "flow\u002Ddsl\u002Dtransformers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ batch_size(int $size) : BatchSize +
+
+ @param int<1, max> $size +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\batch_size(" + "$" + "{" + "1:size" + "}" + ")"), + boost: 10 + }, { + label: "begin", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ begin() : BeginOptionsStep +
+
+ Create a BEGIN transaction builder.
Example: begin()->isolationLevel(IsolationLevel::SERIALIZABLE)->readOnly()
Produces: BEGIN ISOLATION LEVEL SERIALIZABLE READ ONLY +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\begin()"), + boost: 10 + }, { + label: "between", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ between(mixed $value, mixed $lower_bound, mixed $upper_bound, ScalarFunction|Boundary $boundary = Flow\\ETL\\Function\\Between\\Boundary::...) : Between +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\between(" + "$" + "{" + "1:value" + "}" + ", " + "$" + "{" + "2:lower_bound" + "}" + ", " + "$" + "{" + "3:upper_bound" + "}" + ", " + "$" + "{" + "4:boundary" + "}" + ")"), + boost: 10 + }, { + label: "between", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ between(Expression $expr, Expression $low, Expression $high, bool $not = false) : Between +
+
+ Create a BETWEEN condition. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\between(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:low" + "}" + ", " + "$" + "{" + "3:high" + "}" + ", " + "$" + "{" + "4:not" + "}" + ")"), + boost: 10 + }, { + label: "binary_expr", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ binary_expr(Expression $left, string $operator, Expression $right) : BinaryExpression +
+
+ Create a binary expression (left op right). +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\binary_expr(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:operator" + "}" + ", " + "$" + "{" + "3:right" + "}" + ")"), + boost: 10 + }, { + label: "boolean_entry", + type: "function", + detail: "flow\u002Ddsl\u002Dentries", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ boolean_entry(string $name, bool $value, Metadata $metadata = null) : Entry +
+
+ @return Entry +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\boolean_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), + boost: 10 + }, { + label: "bool_entry", + type: "function", + detail: "flow\u002Ddsl\u002Dentries", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ bool_entry(string $name, bool $value, Metadata $metadata = null) : Entry +
+
+ @return Entry +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\bool_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), + boost: 10 + }, { + label: "bool_schema", + type: "function", + detail: "flow\u002Ddsl\u002Dschema", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ bool_schema(string $name, bool $nullable = false, Metadata $metadata = null) : BooleanDefinition +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\bool_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:nullable" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), + boost: 10 + }, { + label: "bulk_insert", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ bulk_insert(string $table, array $columns, int $rowCount) : BulkInsert +
+
+ Create an optimized bulk INSERT query for high-performance multi-row inserts.
Unlike insert() which uses immutable builder patterns (O(n²) for n rows),
this function generates SQL directly using string operations (O(n) complexity).
@param string $table Table name
@param list $columns Column names
@param int $rowCount Number of rows to insert +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\bulk_insert(" + "$" + "{" + "1:table" + "}" + ", " + "$" + "{" + "2:columns" + "}" + ", " + "$" + "{" + "3:rowCount" + "}" + ")"), + boost: 10 + }, { + label: "caching_detector", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ caching_detector(ResourceDetector $detector, string $cachePath = null) : CachingDetector +
+
+ Create a CachingDetector.
Wraps another detector and caches its results to a file. On subsequent
calls, returns the cached resource instead of running detection again.
@param ResourceDetector $detector The detector to wrap
@param null|string $cachePath Cache file path (default: sys_get_temp_dir()/flow_telemetry_resource.cache) +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\caching_detector(" + "$" + "{" + "1:detector" + "}" + ", " + "$" + "{" + "2:cachePath" + "}" + ")"), + boost: 10 + }, { + label: "call", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ call(ScalarFunction|callable $callable, array $parameters = [], Type $return_type = null) : CallUserFunc +
+
+ Calls a user-defined function with the given parameters.
@param callable|ScalarFunction $callable
@param array $parameters
@param null|Type $return_type +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\call(" + "$" + "{" + "1:callable" + "}" + ", " + "$" + "{" + "2:parameters" + "}" + ", " + "$" + "{" + "3:return_type" + "}" + ")"), + boost: 10 + }, { + label: "call", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ call(string $procedure) : CallFinalStep +
+
+ Creates a CALL statement builder for invoking a procedure.
Example: call(\'update_stats\')->with(123)
Produces: CALL update_stats(123)
Example: call(\'process_data\')->with(\'test\', 42, true)
Produces: CALL process_data(\'test\', 42, true)
@param string $procedure The name of the procedure to call
@return CallFinalStep Builder for call statement options +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\call(" + "$" + "{" + "1:procedure" + "}" + ")"), + boost: 10 + }, { + label: "capitalize", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ capitalize(ScalarFunction|string $value) : Capitalize +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\capitalize(" + "$" + "{" + "1:value" + "}" + ")"), + boost: 10 + }, { + label: "case_when", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ case_when(array $whenClauses, Expression $elseResult = null, Expression $operand = null) : CaseExpression +
+
+ Create a CASE expression.
@param non-empty-list $whenClauses WHEN clauses
@param null|Expression $elseResult ELSE result (optional)
@param null|Expression $operand CASE operand for simple CASE (optional) +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\case_when(" + "$" + "{" + "1:whenClauses" + "}" + ", " + "$" + "{" + "2:elseResult" + "}" + ", " + "$" + "{" + "3:operand" + "}" + ")"), + boost: 10 + }, { + label: "cast", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ cast(mixed $value, Type|string $type) : Cast +
+
+ @param \\Flow\\Types\\Type|string $type +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\cast(" + "$" + "{" + "1:value" + "}" + ", " + "$" + "{" + "2:type" + "}" + ")"), + boost: 10 + }, { + label: "cast", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ cast(Expression $expr, DataType $dataType) : TypeCast +
+
+ Create a type cast expression.
@param Expression $expr Expression to cast
@param DataType $dataType Target data type (use data_type_* functions) +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\cast(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:dataType" + "}" + ")"), + boost: 10 + }, { + label: "chain_detector", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ chain_detector(ResourceDetector $detectors) : ChainDetector +
+
+ Create a ChainDetector.
Combines multiple resource detectors into a chain. Detectors are executed
in order and their results are merged. Later detectors take precedence
over earlier ones when there are conflicting attribute keys.
@param ResourceDetector ...$detectors The detectors to chain +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\chain_detector(" + "$" + "{" + "1:detectors" + "}" + ")"), + boost: 10 + }, { + label: "check_constraint", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ check_constraint(string $expression) : CheckConstraint +
+
+ Create a CHECK constraint.
@param string $expression SQL expression that must evaluate to true +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\check_constraint(" + "$" + "{" + "1:expression" + "}" + ")"), + boost: 10 + }, { + label: "chunks_from", + type: "function", + detail: "flow\u002Ddsl\u002Dextractors", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ chunks_from(Extractor $extractor, int $chunk_size) : BatchExtractor +
+
+ @param int<1, max> $chunk_size
@deprecated use batches() instead +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\chunks_from(" + "$" + "{" + "1:extractor" + "}" + ", " + "$" + "{" + "2:chunk_size" + "}" + ")"), + boost: 10 + }, { + label: "close_cursor", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ close_cursor(string $cursorName = null) : CloseCursorFinalStep +
+
+ Close a cursor.
Example: close_cursor(\'my_cursor\')
Produces: CLOSE my_cursor
Example: close_cursor() - closes all cursors
Produces: CLOSE ALL
@param null|string $cursorName Cursor to close, or null to close all +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\close_cursor(" + "$" + "{" + "1:cursorName" + "}" + ")"), + boost: 10 + }, { + label: "cluster", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ cluster() : ClusterFinalStep +
+
+ Create a CLUSTER builder.
Example: cluster()->table(\'users\')->using(\'idx_users_pkey\')
Produces: CLUSTER users USING idx_users_pkey +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\cluster()"), + boost: 10 + }, { + label: "coalesce", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ coalesce(ScalarFunction $values) : Coalesce +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\coalesce(" + "$" + "{" + "1:values" + "}" + ")"), + boost: 10 + }, { + label: "coalesce", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ coalesce(Expression $expressions) : Coalesce +
+
+ Create a COALESCE expression.
@param Expression ...$expressions Expressions to coalesce +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\coalesce(" + "$" + "{" + "1:expressions" + "}" + ")"), + boost: 10 + }, { + label: "col", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ col(string $entry) : EntryReference +
+
+ An alias for \`ref\`. +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\col(" + "$" + "{" + "1:entry" + "}" + ")"), + boost: 10 + }, { + label: "col", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ col(string $column, string $table = null, string $schema = null) : Column +
+
+ Create a column reference expression.
Can be used in two modes:
- Parse mode: col(\'users.id\') or col(\'schema.table.column\') - parses dot-separated string
- Explicit mode: col(\'id\', \'users\') or col(\'id\', \'users\', \'schema\') - separate arguments
When $table or $schema is provided, $column must be a plain column name (no dots).
@param string $column Column name, or dot-separated path like \"table.column\" or \"schema.table.column\"
@param null|string $table Table name (optional, triggers explicit mode)
@param null|string $schema Schema name (optional, requires $table)
@throws InvalidExpressionException when $schema is provided without $table, or when $column contains dots in explicit mode +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\col(" + "$" + "{" + "1:column" + "}" + ", " + "$" + "{" + "2:table" + "}" + ", " + "$" + "{" + "3:schema" + "}" + ")"), + boost: 10 + }, { + label: "collect", + type: "function", + detail: "flow\u002Ddsl\u002Daggregating\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ collect(EntryReference|string $ref) : Collect +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\collect(" + "$" + "{" + "1:ref" + "}" + ")"), + boost: 10 + }, { + label: "collect_unique", + type: "function", + detail: "flow\u002Ddsl\u002Daggregating\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ collect_unique(EntryReference|string $ref) : CollectUnique +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\collect_unique(" + "$" + "{" + "1:ref" + "}" + ")"), + boost: 10 + }, { + label: "column", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ column(string $name, DataType $type) : ColumnDefinition +
+
+ Create a column definition for CREATE TABLE.
@param string $name Column name
@param DataType $type Column data type +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\column(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:type" + "}" + ")"), + boost: 10 + }, { + label: "combine", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ combine(ScalarFunction|array $keys, ScalarFunction|array $values) : Combine +
+
+ @param array|ScalarFunction $keys
@param array|ScalarFunction $values +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\combine(" + "$" + "{" + "1:keys" + "}" + ", " + "$" + "{" + "2:values" + "}" + ")"), + boost: 10 + }, { + label: "comment", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ comment(CommentTarget $target, string $name) : CommentFinalStep +
+
+ Create a COMMENT ON builder.
Example: comment(CommentTarget::TABLE, \'users\')->is(\'User accounts table\')
Produces: COMMENT ON TABLE users IS \'User accounts table\'
@param CommentTarget $target Target type (TABLE, COLUMN, INDEX, etc.)
@param string $name Target name (use \'table.column\' for COLUMN targets) +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\comment(" + "$" + "{" + "1:target" + "}" + ", " + "$" + "{" + "2:name" + "}" + ")"), + boost: 10 + }, { + label: "commit", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ commit() : CommitOptionsStep +
+
+ Create a COMMIT transaction builder.
Example: commit()->andChain()
Produces: COMMIT AND CHAIN +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\commit()"), + boost: 10 + }, { + label: "commit_prepared", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ commit_prepared(string $transactionId) : PreparedTransactionFinalStep +
+
+ Create a COMMIT PREPARED builder.
Example: commit_prepared(\'my_transaction\')
Produces: COMMIT PREPARED \'my_transaction\' +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\commit_prepared(" + "$" + "{" + "1:transactionId" + "}" + ")"), + boost: 10 + }, { + label: "compare_all", + type: "function", + detail: "flow\u002Ddsl\u002Dcomparisons", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ compare_all(Comparison $comparisons) : All +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\compare_all(" + "$" + "{" + "1:comparisons" + "}" + ")"), + boost: 10 + }, { + label: "compare_any", + type: "function", + detail: "flow\u002Ddsl\u002Dcomparisons", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ compare_any(Comparison $comparisons) : Any +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\compare_any(" + "$" + "{" + "1:comparisons" + "}" + ")"), + boost: 10 + }, { + label: "compare_entries_by_name", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ compare_entries_by_name(Order $order = Flow\\ETL\\Transformer\\OrderEntries\\Order::...) : Comparator +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\compare_entries_by_name(" + "$" + "{" + "1:order" + "}" + ")"), + boost: 10 + }, { + label: "compare_entries_by_name_desc", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ compare_entries_by_name_desc() : Comparator +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\compare_entries_by_name_desc()"), + boost: 10 + }, { + label: "compare_entries_by_type", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ compare_entries_by_type(array $priorities = [...], Order $order = Flow\\ETL\\Transformer\\OrderEntries\\Order::...) : Comparator +
+
+ @param array>, int> $priorities +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\compare_entries_by_type(" + "$" + "{" + "1:priorities" + "}" + ", " + "$" + "{" + "2:order" + "}" + ")"), + boost: 10 + }, { + label: "compare_entries_by_type_and_name", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ compare_entries_by_type_and_name(array $priorities = [...], Order $order = Flow\\ETL\\Transformer\\OrderEntries\\Order::...) : Comparator +
+
+ @param array>, int> $priorities +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\compare_entries_by_type_and_name(" + "$" + "{" + "1:priorities" + "}" + ", " + "$" + "{" + "2:order" + "}" + ")"), + boost: 10 + }, { + label: "compare_entries_by_type_desc", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ compare_entries_by_type_desc(array $priorities = [...]) : Comparator +
+
+ @param array>, int> $priorities +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\compare_entries_by_type_desc(" + "$" + "{" + "1:priorities" + "}" + ")"), + boost: 10 + }, { + label: "composer_detector", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ composer_detector() : ComposerDetector +
+
+ Create a ComposerDetector.
Detects service.name and service.version from Composer\'s InstalledVersions
using the root package information. +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\composer_detector()"), + boost: 10 + }, { + label: "composite_propagator", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ composite_propagator(Propagator $propagators) : CompositePropagator +
+
+ Create a CompositePropagator.
Combines multiple propagators into one. On extract, all propagators are
invoked and their contexts are merged. On inject, all propagators are invoked.
@param Propagator ...$propagators The propagators to combine +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\composite_propagator(" + "$" + "{" + "1:propagators" + "}" + ")"), + boost: 10 + }, { + label: "concat", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ concat(ScalarFunction|string $functions) : Concat +
+
+ Concat all values. If you want to concatenate values with separator use concat_ws function. +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\concat(" + "$" + "{" + "1:functions" + "}" + ")"), + boost: 10 + }, { + label: "concat_ws", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ concat_ws(ScalarFunction|string $separator, ScalarFunction|string $functions) : ConcatWithSeparator +
+
+ Concat all values with separator. +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\concat_ws(" + "$" + "{" + "1:separator" + "}" + ", " + "$" + "{" + "2:functions" + "}" + ")"), + boost: 10 + }, { + label: "conditions", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ conditions() : ConditionBuilder +
+
+ Create a condition builder for fluent condition composition.
This builder allows incremental condition building with a fluent API:
\`\`\`php
$builder = conditions();
if ($hasFilter) {
$builder = $builder->and(eq(col(\'status\'), literal(\'active\')));
}
if (!$builder->isEmpty()) {
$query = select()->from(table(\'users\'))->where($builder);
}
\`\`\` +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\conditions()"), + boost: 10 + }, { + label: "cond_and", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ cond_and(Condition $conditions) : AndCondition +
+
+ Combine conditions with AND.
@param Condition ...$conditions Conditions to combine +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\cond_and(" + "$" + "{" + "1:conditions" + "}" + ")"), + boost: 10 + }, { + label: "cond_false", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ cond_false() : RawCondition +
+
+ Create a FALSE condition for WHERE clauses.
Useful when you need a condition that always evaluates to false,
typically for testing or to return an empty result set.
Example: select(literal(1))->where(cond_false()) // SELECT 1 WHERE false +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\cond_false()"), + boost: 10 + }, { + label: "cond_not", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ cond_not(Condition $condition) : NotCondition +
+
+ Negate a condition with NOT. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\cond_not(" + "$" + "{" + "1:condition" + "}" + ")"), + boost: 10 + }, { + label: "cond_or", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ cond_or(Condition $conditions) : OrCondition +
+
+ Combine conditions with OR.
@param Condition ...$conditions Conditions to combine +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\cond_or(" + "$" + "{" + "1:conditions" + "}" + ")"), + boost: 10 + }, { + label: "cond_true", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ cond_true() : RawCondition +
+
+ Create a TRUE condition for WHERE clauses.
Useful when you need a condition that always evaluates to true.
Example: select(literal(1))->where(cond_true()) // SELECT 1 WHERE true +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\cond_true()"), + boost: 10 + }, { + label: "config", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ config() : Config +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\config()"), + boost: 10 + }, { + label: "config_builder", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ config_builder() : ConfigBuilder +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\config_builder()"), + boost: 10 + }, { + label: "conflict_columns", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ conflict_columns(array $columns) : ConflictTarget +
+
+ Create a conflict target for ON CONFLICT (columns).
@param list $columns Columns that define uniqueness +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\conflict_columns(" + "$" + "{" + "1:columns" + "}" + ")"), + boost: 10 + }, { + label: "conflict_constraint", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ conflict_constraint(string $name) : ConflictTarget +
+
+ Create a conflict target for ON CONFLICT ON CONSTRAINT. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\conflict_constraint(" + "$" + "{" + "1:name" + "}" + ")"), + boost: 10 + }, { + label: "console_log_exporter", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ console_log_exporter(bool $colors = true, int $maxBodyLength = 100) : ConsoleLogExporter +
+
+ Create a ConsoleLogExporter.
Outputs log records to the console with severity-based coloring.
Useful for debugging and development.
@param bool $colors Whether to use ANSI colors (default: true)
@param null|int $maxBodyLength Maximum length for body+attributes column (null = no limit, default: 100) +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\console_log_exporter(" + "$" + "{" + "1:colors" + "}" + ", " + "$" + "{" + "2:maxBodyLength" + "}" + ")"), + boost: 10 + }, { + label: "console_metric_exporter", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ console_metric_exporter(bool $colors = true) : ConsoleMetricExporter +
+
+ Create a ConsoleMetricExporter.
Outputs metrics to the console with ASCII table formatting.
Useful for debugging and development.
@param bool $colors Whether to use ANSI colors (default: true) +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\console_metric_exporter(" + "$" + "{" + "1:colors" + "}" + ")"), + boost: 10 + }, { + label: "console_span_exporter", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ console_span_exporter(bool $colors = true) : ConsoleSpanExporter +
+
+ Create a ConsoleSpanExporter.
Outputs spans to the console with ASCII table formatting.
Useful for debugging and development.
@param bool $colors Whether to use ANSI colors (default: true) +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\console_span_exporter(" + "$" + "{" + "1:colors" + "}" + ")"), + boost: 10 + }, { + label: "constraint_sorted_by", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ constraint_sorted_by(Reference|string $column, Reference|string $columns) : SortedByConstraint +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\constraint_sorted_by(" + "$" + "{" + "1:column" + "}" + ", " + "$" + "{" + "2:columns" + "}" + ")"), + boost: 10 + }, { + label: "constraint_unique", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ constraint_unique(string $reference, string $references) : UniqueConstraint +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\constraint_unique(" + "$" + "{" + "1:reference" + "}" + ", " + "$" + "{" + "2:references" + "}" + ")"), + boost: 10 + }, { + label: "context", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ context(TraceId $traceId = null, Baggage $baggage = null) : Context +
+
+ Create a Context.
If no TraceId is provided, generates a new one.
If no Baggage is provided, creates an empty one.
@param null|TraceId $traceId Optional TraceId to use
@param null|Baggage $baggage Optional Baggage to use +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\context(" + "$" + "{" + "1:traceId" + "}" + ", " + "$" + "{" + "2:baggage" + "}" + ")"), + boost: 10 + }, { + label: "copy", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ copy() : CopyFactory +
+
+ Create a new COPY query builder for data import/export.
Usage:
copy()->from(\'users\')->file(\'/tmp/users.csv\')->format(CopyFormat::CSV)
copy()->to(\'users\')->file(\'/tmp/users.csv\')->format(CopyFormat::CSV)
copy()->toQuery(select(...))->file(\'/tmp/data.csv\') +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\copy()"), + boost: 10 + }, { + label: "count", + type: "function", + detail: "flow\u002Ddsl\u002Daggregating\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ count(EntryReference $function = null) : Count +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\count(" + "$" + "{" + "1:function" + "}" + ")"), + boost: 10 + }, { + label: "create", + type: "function", + detail: "flow\u002Ddsl\u002Dschema", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ create() : CreateFactory +
+
+ Create a factory for building CREATE statements.
Provides a unified entry point for all CREATE operations:
- create()->table() - CREATE TABLE
- create()->tableAs() - CREATE TABLE AS
- create()->index() - CREATE INDEX
- create()->view() - CREATE VIEW
- create()->materializedView() - CREATE MATERIALIZED VIEW
- create()->sequence() - CREATE SEQUENCE
- create()->schema() - CREATE SCHEMA
- create()->role() - CREATE ROLE
- create()->function() - CREATE FUNCTION
- create()->procedure() - CREATE PROCEDURE
- create()->trigger() - CREATE TRIGGER
- create()->rule() - CREATE RULE
- create()->extension() - CREATE EXTENSION
- create()->compositeType() - CREATE TYPE (composite)
- create()->enumType() - CREATE TYPE (enum)
- create()->rangeType() - CREATE TYPE (range)
- create()->domain() - CREATE DOMAIN
Example: create()->table(\'users\')->columns(col_def(\'id\', data_type_serial()))
Example: create()->index(\'idx_email\')->on(\'users\')->columns(\'email\') +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\create()"), + boost: 10 + }, { + label: "csv_detect_separator", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ csv_detect_separator(SourceStream $stream, int $lines = 5, Option $fallback = Flow\\ETL\\Adapter\\CSV\\Detector\\Option::..., Options $options = null) : Option +
+
+ @param SourceStream $stream - valid resource to CSV file
@param int<1, max> $lines - number of lines to read from CSV file, default 5, more lines means more accurate detection but slower detection
@param null|Option $fallback - fallback option to use when no best option can be detected, default is Option(\',\', \'\"\', \'\\\\\')
@param null|Options $options - options to use for detection, default is Options::all() +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\CSV\\csv_detect_separator(" + "$" + "{" + "1:stream" + "}" + ", " + "$" + "{" + "2:lines" + "}" + ", " + "$" + "{" + "3:fallback" + "}" + ", " + "$" + "{" + "4:options" + "}" + ")"), + boost: 10 + }, { + label: "cte", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ cte(string $name, SelectFinalStep $query, array $columnNames = [], CTEMaterialization $materialization = Flow\\PostgreSql\\QueryBuilder\\Clause\\CTEMaterialization::..., bool $recursive = false) : CTE +
+
+ Create a CTE (Common Table Expression).
@param string $name CTE name
@param SelectFinalStep $query CTE query
@param array $columnNames Column aliases (optional)
@param CTEMaterialization $materialization Materialization hint +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\cte(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:query" + "}" + ", " + "$" + "{" + "3:columnNames" + "}" + ", " + "$" + "{" + "4:materialization" + "}" + ", " + "$" + "{" + "5:recursive" + "}" + ")"), + boost: 10 + }, { + label: "current_date", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ current_date() : SQLValueFunctionExpression +
+
+ SQL standard CURRENT_DATE function.
Returns the current date (at the start of the transaction).
Useful as a column default value or in SELECT queries.
Example: column(\'birth_date\', data_type_date())->default(current_date())
Example: select()->select(current_date()->as(\'today\')) +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\current_date()"), + boost: 10 + }, { + label: "current_time", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ current_time() : SQLValueFunctionExpression +
+
+ SQL standard CURRENT_TIME function.
Returns the current time (at the start of the transaction).
Useful as a column default value or in SELECT queries.
Example: column(\'start_time\', data_type_time())->default(current_time())
Example: select()->select(current_time()->as(\'now_time\')) +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\current_time()"), + boost: 10 + }, { + label: "current_timestamp", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ current_timestamp() : SQLValueFunctionExpression +
+
+ SQL standard CURRENT_TIMESTAMP function.
Returns the current date and time (at the start of the transaction).
Useful as a column default value or in SELECT queries.
Example: column(\'created_at\', data_type_timestamp())->default(current_timestamp())
Example: select()->select(current_timestamp()->as(\'now\')) +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\current_timestamp()"), + boost: 10 + }, { + label: "data_frame", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ data_frame(Config|ConfigBuilder|null $config = null) : Flow +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\data_frame(" + "$" + "{" + "1:config" + "}" + ")"), + boost: 10 + }, { + label: "data_type_array", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ data_type_array(DataType $elementType) : DataType +
+
+ Create an array data type from an element type. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_array(" + "$" + "{" + "1:elementType" + "}" + ")"), + boost: 10 + }, { + label: "data_type_bigint", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ data_type_bigint() : DataType +
+
+ Create a bigint data type (PostgreSQL int8). +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_bigint()"), + boost: 10 + }, { + label: "data_type_bigserial", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ data_type_bigserial() : DataType +
+
+ Create a bigserial data type. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_bigserial()"), + boost: 10 + }, { + label: "data_type_boolean", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ data_type_boolean() : DataType +
+
+ Create a boolean data type. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_boolean()"), + boost: 10 + }, { + label: "data_type_bytea", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ data_type_bytea() : DataType +
+
+ Create a bytea data type. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_bytea()"), + boost: 10 + }, { + label: "data_type_char", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ data_type_char(int $length) : DataType +
+
+ Create a char data type with length constraint. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_char(" + "$" + "{" + "1:length" + "}" + ")"), + boost: 10 + }, { + label: "data_type_cidr", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ data_type_cidr() : DataType +
+
+ Create a cidr data type. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_cidr()"), + boost: 10 + }, { + label: "data_type_custom", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ data_type_custom(string $typeName, string $schema = null) : DataType +
+
+ Create a custom data type.
@param string $typeName Type name
@param null|string $schema Optional schema name +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_custom(" + "$" + "{" + "1:typeName" + "}" + ", " + "$" + "{" + "2:schema" + "}" + ")"), + boost: 10 + }, { + label: "data_type_date", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ data_type_date() : DataType +
+
+ Create a date data type. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_date()"), + boost: 10 + }, { + label: "data_type_decimal", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ data_type_decimal(int $precision = null, int $scale = null) : DataType +
+
+ Create a decimal data type with optional precision and scale. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_decimal(" + "$" + "{" + "1:precision" + "}" + ", " + "$" + "{" + "2:scale" + "}" + ")"), + boost: 10 + }, { + label: "data_type_double_precision", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ data_type_double_precision() : DataType +
+
+ Create a double precision data type (PostgreSQL float8). +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_double_precision()"), + boost: 10 + }, { + label: "data_type_inet", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ data_type_inet() : DataType +
+
+ Create an inet data type. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_inet()"), + boost: 10 + }, { + label: "data_type_integer", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ data_type_integer() : DataType +
+
+ Create an integer data type (PostgreSQL int4). +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_integer()"), + boost: 10 + }, { + label: "data_type_interval", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ data_type_interval() : DataType +
+
+ Create an interval data type. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_interval()"), + boost: 10 + }, { + label: "data_type_json", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ data_type_json() : DataType +
+
+ Create a JSON data type. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_json()"), + boost: 10 + }, { + label: "data_type_jsonb", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ data_type_jsonb() : DataType +
+
+ Create a JSONB data type. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_jsonb()"), + boost: 10 + }, { + label: "data_type_macaddr", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ data_type_macaddr() : DataType +
+
+ Create a macaddr data type. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_macaddr()"), + boost: 10 + }, { + label: "data_type_numeric", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ data_type_numeric(int $precision = null, int $scale = null) : DataType +
+
+ Create a numeric data type with optional precision and scale. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_numeric(" + "$" + "{" + "1:precision" + "}" + ", " + "$" + "{" + "2:scale" + "}" + ")"), + boost: 10 + }, { + label: "data_type_real", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ data_type_real() : DataType +
+
+ Create a real data type (PostgreSQL float4). +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_real()"), + boost: 10 + }, { + label: "data_type_serial", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ data_type_serial() : DataType +
+
+ Create a serial data type. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_serial()"), + boost: 10 + }, { + label: "data_type_smallint", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ data_type_smallint() : DataType +
+
+ Create a smallint data type (PostgreSQL int2). +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_smallint()"), + boost: 10 + }, { + label: "data_type_smallserial", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ data_type_smallserial() : DataType +
+
+ Create a smallserial data type. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_smallserial()"), + boost: 10 + }, { + label: "data_type_text", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ data_type_text() : DataType +
+
+ Create a text data type. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_text()"), + boost: 10 + }, { + label: "data_type_time", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ data_type_time(int $precision = null) : DataType +
+
+ Create a time data type with optional precision. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_time(" + "$" + "{" + "1:precision" + "}" + ")"), + boost: 10 + }, { + label: "data_type_timestamp", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ data_type_timestamp(int $precision = null) : DataType +
+
+ Create a timestamp data type with optional precision. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_timestamp(" + "$" + "{" + "1:precision" + "}" + ")"), + boost: 10 + }, { + label: "data_type_timestamptz", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ data_type_timestamptz(int $precision = null) : DataType +
+
+ Create a timestamp with time zone data type with optional precision. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_timestamptz(" + "$" + "{" + "1:precision" + "}" + ")"), + boost: 10 + }, { + label: "data_type_uuid", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ data_type_uuid() : DataType +
+
+ Create a UUID data type. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_uuid()"), + boost: 10 + }, { + label: "data_type_varchar", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ data_type_varchar(int $length) : DataType +
+
+ Create a varchar data type with length constraint. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\data_type_varchar(" + "$" + "{" + "1:length" + "}" + ")"), + boost: 10 + }, { + label: "datetime_entry", + type: "function", + detail: "flow\u002Ddsl\u002Dentries", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ datetime_entry(string $name, DateTimeInterface|string|null $value, Metadata $metadata = null) : Entry +
+
+ @return Entry +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\datetime_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), + boost: 10 + }, { + label: "datetime_schema", + type: "function", + detail: "flow\u002Ddsl\u002Dschema", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ datetime_schema(string $name, bool $nullable = false, Metadata $metadata = null) : DateTimeDefinition +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\datetime_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:nullable" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), + boost: 10 + }, { + label: "date_entry", + type: "function", + detail: "flow\u002Ddsl\u002Dentries", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ date_entry(string $name, DateTimeInterface|string|null $value, Metadata $metadata = null) : Entry +
+
+ @return Entry +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\date_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), + boost: 10 + }, { + label: "date_interval_to_microseconds", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ date_interval_to_microseconds(DateInterval $interval) : int +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\date_interval_to_microseconds(" + "$" + "{" + "1:interval" + "}" + ")"), + boost: 10 + }, { + label: "date_interval_to_milliseconds", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ date_interval_to_milliseconds(DateInterval $interval) : int +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\date_interval_to_milliseconds(" + "$" + "{" + "1:interval" + "}" + ")"), + boost: 10 + }, { + label: "date_interval_to_seconds", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ date_interval_to_seconds(DateInterval $interval) : int +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\date_interval_to_seconds(" + "$" + "{" + "1:interval" + "}" + ")"), + boost: 10 + }, { + label: "date_schema", + type: "function", + detail: "flow\u002Ddsl\u002Dschema", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ date_schema(string $name, bool $nullable = false, Metadata $metadata = null) : DateDefinition +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\date_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:nullable" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), + boost: 10 + }, { + label: "date_time_format", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ date_time_format(ScalarFunction $ref, string $format) : DateTimeFormat +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\date_time_format(" + "$" + "{" + "1:ref" + "}" + ", " + "$" + "{" + "2:format" + "}" + ")"), + boost: 10 + }, { + label: "dbal_dataframe_factory", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ dbal_dataframe_factory(Connection|array $connection, string $query, QueryParameter $parameters) : DbalDataFrameFactory +
+
+ @param array|Connection $connection
@param string $query
@param QueryParameter ...$parameters +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\dbal_dataframe_factory(" + "$" + "{" + "1:connection" + "}" + ", " + "$" + "{" + "2:query" + "}" + ", " + "$" + "{" + "3:parameters" + "}" + ")"), + boost: 10 + }, { + label: "dbal_from_queries", + type: "function", + detail: "flow\u002Ddsl\u002Dextractors", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ dbal_from_queries(Connection $connection, string $query, ParametersSet $parameters_set = null, array $types = []) : DbalQueryExtractor +
+
+ @deprecated use from_dbal_queries() instead
@param null|ParametersSet $parameters_set - each one parameters array will be evaluated as new query
@param array $types +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\dbal_from_queries(" + "$" + "{" + "1:connection" + "}" + ", " + "$" + "{" + "2:query" + "}" + ", " + "$" + "{" + "3:parameters_set" + "}" + ", " + "$" + "{" + "4:types" + "}" + ")"), + boost: 10 + }, { + label: "dbal_from_query", + type: "function", + detail: "flow\u002Ddsl\u002Dextractors", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ dbal_from_query(Connection $connection, string $query, array $parameters = [], array $types = []) : DbalQueryExtractor +
+
+ @deprecated use from_dbal_query() instead
@param array|list $parameters - @deprecated use DbalQueryExtractor::withParameters() instead
@param array|string, DbalArrayType|DbalParameterType|DbalType|string> $types - @deprecated use DbalQueryExtractor::withTypes() instead +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\dbal_from_query(" + "$" + "{" + "1:connection" + "}" + ", " + "$" + "{" + "2:query" + "}" + ", " + "$" + "{" + "3:parameters" + "}" + ", " + "$" + "{" + "4:types" + "}" + ")"), + boost: 10 + }, { + label: "declare_cursor", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ declare_cursor(string $cursorName, SelectFinalStep|SqlQuery|string $query) : DeclareCursorOptionsStep +
+
+ Declare a server-side cursor for a query.
Cursors must be declared within a transaction and provide memory-efficient
iteration over large result sets via FETCH commands.
Example with query builder:
declare_cursor(\'my_cursor\', select(star())->from(table(\'users\')))->noScroll()
Produces: DECLARE my_cursor NO SCROLL CURSOR FOR SELECT * FROM users
Example with raw SQL:
declare_cursor(\'my_cursor\', \'SELECT * FROM users WHERE active = true\')->withHold()
Produces: DECLARE my_cursor NO SCROLL CURSOR WITH HOLD FOR SELECT * FROM users WHERE active = true
@param string $cursorName Unique cursor name
@param SelectFinalStep|SqlQuery|string $query Query to iterate over +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\declare_cursor(" + "$" + "{" + "1:cursorName" + "}" + ", " + "$" + "{" + "2:query" + "}" + ")"), + boost: 10 + }, { + label: "definition_from_array", + type: "function", + detail: "flow\u002Ddsl\u002Dschema", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ definition_from_array(array $definition) : Definition +
+
+ Create a Definition from an array representation.
@param array $definition
@return Definition +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\definition_from_array(" + "$" + "{" + "1:definition" + "}" + ")"), + boost: 10 + }, { + label: "definition_from_type", + type: "function", + detail: "flow\u002Ddsl\u002Dschema", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ definition_from_type(Reference|string $ref, Type $type, bool $nullable = false, Metadata $metadata = null) : Definition +
+
+ Create a Definition from a Type.
@param Type $type
@return Definition +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\definition_from_type(" + "$" + "{" + "1:ref" + "}" + ", " + "$" + "{" + "2:type" + "}" + ", " + "$" + "{" + "3:nullable" + "}" + ", " + "$" + "{" + "4:metadata" + "}" + ")"), + boost: 10 + }, { + label: "delay_exponential", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ delay_exponential(Duration $base, int $multiplier = 2, Duration $max_delay = null) : Exponential +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\delay_exponential(" + "$" + "{" + "1:base" + "}" + ", " + "$" + "{" + "2:multiplier" + "}" + ", " + "$" + "{" + "3:max_delay" + "}" + ")"), + boost: 10 + }, { + label: "delay_fixed", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ delay_fixed(Duration $delay) : Fixed +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\delay_fixed(" + "$" + "{" + "1:delay" + "}" + ")"), + boost: 10 + }, { + label: "delay_jitter", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ delay_jitter(DelayFactory $delay, float $jitter_factor) : Jitter +
+
+ @param float $jitter_factor a value between 0 and 1 representing the maximum percentage of jitter to apply +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\delay_jitter(" + "$" + "{" + "1:delay" + "}" + ", " + "$" + "{" + "2:jitter_factor" + "}" + ")"), + boost: 10 + }, { + label: "delay_linear", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ delay_linear(Duration $delay, Duration $increment) : Linear +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\delay_linear(" + "$" + "{" + "1:delay" + "}" + ", " + "$" + "{" + "2:increment" + "}" + ")"), + boost: 10 + }, { + label: "delete", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ delete() : DeleteFromStep +
+
+ Create a new DELETE query builder. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\delete()"), + boost: 10 + }, { + label: "dense_rank", + type: "function", + detail: "flow\u002Ddsl\u002Dwindow\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ dense_rank() : DenseRank +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\dense_rank()"), + boost: 10 + }, { + label: "dens_rank", + type: "function", + detail: "flow\u002Ddsl\u002Dwindow\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ dens_rank() : DenseRank +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\dens_rank()"), + boost: 10 + }, { + label: "derived", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ derived(SelectFinalStep $query, string $alias) : DerivedTable +
+
+ Create a derived table (subquery in FROM clause). +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\derived(" + "$" + "{" + "1:query" + "}" + ", " + "$" + "{" + "2:alias" + "}" + ")"), + boost: 10 + }, { + label: "desc", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ desc(Expression $expr, NullsPosition $nulls = Flow\\PostgreSql\\QueryBuilder\\Clause\\NullsPosition::...) : OrderBy +
+
+ Create an ORDER BY item with DESC direction. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\desc(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:nulls" + "}" + ")"), + boost: 10 + }, { + label: "df", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ df(Config|ConfigBuilder|null $config = null) : Flow +
+
+ Alias for data_frame() : Flow. +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\df(" + "$" + "{" + "1:config" + "}" + ")"), + boost: 10 + }, { + label: "discard", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ discard(DiscardType $type) : DiscardFinalStep +
+
+ Create a DISCARD builder.
Example: discard(DiscardType::ALL)
Produces: DISCARD ALL
@param DiscardType $type Type of resources to discard (ALL, PLANS, SEQUENCES, TEMP) +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\discard(" + "$" + "{" + "1:type" + "}" + ")"), + boost: 10 + }, { + label: "dom_element_to_string", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ dom_element_to_string(DOMElement $element, bool $format_output = false, bool $preserver_white_space = false) : string|false +
+
+ @deprecated Please use \\Flow\\Types\\DSL\\dom_element_to_string() instead +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\dom_element_to_string(" + "$" + "{" + "1:element" + "}" + ", " + "$" + "{" + "2:format_output" + "}" + ", " + "$" + "{" + "3:preserver_white_space" + "}" + ")"), + boost: 10 + }, { + label: "dom_element_to_string", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ dom_element_to_string(DOMElement $element, bool $format_output = false, bool $preserver_white_space = false) : string|false +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\dom_element_to_string(" + "$" + "{" + "1:element" + "}" + ", " + "$" + "{" + "2:format_output" + "}" + ", " + "$" + "{" + "3:preserver_white_space" + "}" + ")"), + boost: 10 + }, { + label: "do_block", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ do_block(string $code) : DoFinalStep +
+
+ Creates a DO statement builder for executing an anonymous code block.
Example: do_block(\'BEGIN RAISE NOTICE $$Hello World$$; END;\')
Produces: DO $$ BEGIN RAISE NOTICE $$Hello World$$; END; $$ LANGUAGE plpgsql
Example: do_block(\'SELECT 1\')->language(\'sql\')
Produces: DO $$ SELECT 1 $$ LANGUAGE sql
@param string $code The anonymous code block to execute
@return DoFinalStep Builder for DO statement options +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\do_block(" + "$" + "{" + "1:code" + "}" + ")"), + boost: 10 + }, { + label: "drop", + type: "function", + detail: "flow\u002Ddsl\u002Dtransformers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ drop(Reference|string $entries) : Drop +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\drop(" + "$" + "{" + "1:entries" + "}" + ")"), + boost: 10 + }, { + label: "drop", + type: "function", + detail: "flow\u002Ddsl\u002Dschema", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ drop() : DropFactory +
+
+ Create a factory for building DROP statements.
Provides a unified entry point for all DROP operations:
- drop()->table() - DROP TABLE
- drop()->index() - DROP INDEX
- drop()->view() - DROP VIEW
- drop()->materializedView() - DROP MATERIALIZED VIEW
- drop()->sequence() - DROP SEQUENCE
- drop()->schema() - DROP SCHEMA
- drop()->role() - DROP ROLE
- drop()->function() - DROP FUNCTION
- drop()->procedure() - DROP PROCEDURE
- drop()->trigger() - DROP TRIGGER
- drop()->rule() - DROP RULE
- drop()->extension() - DROP EXTENSION
- drop()->type() - DROP TYPE
- drop()->domain() - DROP DOMAIN
- drop()->owned() - DROP OWNED
Example: drop()->table(\'users\', \'orders\')->ifExists()->cascade()
Example: drop()->index(\'idx_email\')->ifExists() +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\drop()"), + boost: 10 + }, { + label: "drop_owned", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ drop_owned(string $roles) : DropOwnedFinalStep +
+
+ Create a DROP OWNED builder.
Example: drop_owned(\'role1\')
Produces: DROP OWNED BY role1
Example: drop_owned(\'role1\', \'role2\')->cascade()
Produces: DROP OWNED BY role1, role2 CASCADE
@param string ...$roles The roles whose owned objects should be dropped
@return DropOwnedFinalStep Builder for drop owned options +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\drop_owned(" + "$" + "{" + "1:roles" + "}" + ")"), + boost: 10 + }, { + label: "duration_microseconds", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ duration_microseconds(int $microseconds) : Duration +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\duration_microseconds(" + "$" + "{" + "1:microseconds" + "}" + ")"), + boost: 10 + }, { + label: "duration_milliseconds", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ duration_milliseconds(int $milliseconds) : Duration +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\duration_milliseconds(" + "$" + "{" + "1:milliseconds" + "}" + ")"), + boost: 10 + }, { + label: "duration_minutes", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ duration_minutes(int $minutes) : Duration +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\duration_minutes(" + "$" + "{" + "1:minutes" + "}" + ")"), + boost: 10 + }, { + label: "duration_seconds", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ duration_seconds(int $seconds) : Duration +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\duration_seconds(" + "$" + "{" + "1:seconds" + "}" + ")"), + boost: 10 + }, { + label: "empty_generator", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ empty_generator() : Generator +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Parquet\\empty_generator()"), + boost: 10 + }, { + label: "entries", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ entries(Entry $entries) : Entries +
+
+ @param Entry ...$entries +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\entries(" + "$" + "{" + "1:entries" + "}" + ")"), + boost: 10 + }, { + label: "entry", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ entry(string $entry) : EntryReference +
+
+ An alias for \`ref\`. +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\entry(" + "$" + "{" + "1:entry" + "}" + ")"), + boost: 10 + }, { + label: "entry_id_factory", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ entry_id_factory(string $entry_name) : IdFactory +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Elasticsearch\\entry_id_factory(" + "$" + "{" + "1:entry_name" + "}" + ")"), + boost: 10 + }, { + label: "enum_entry", + type: "function", + detail: "flow\u002Ddsl\u002Dentries", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ enum_entry(string $name, UnitEnum $enum, Metadata $metadata = null) : Entry +
+
+ @return Entry +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\enum_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:enum" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), + boost: 10 + }, { + label: "enum_schema", + type: "function", + detail: "flow\u002Ddsl\u002Dschema", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ enum_schema(string $name, string $type, bool $nullable = false, Metadata $metadata = null) : EnumDefinition +
+
+ @template T of \\UnitEnum
@param class-string $type
@return EnumDefinition +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\enum_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:type" + "}" + ", " + "$" + "{" + "3:nullable" + "}" + ", " + "$" + "{" + "4:metadata" + "}" + ")"), + boost: 10 + }, { + label: "environment_detector", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ environment_detector() : EnvironmentDetector +
+
+ Create an EnvironmentDetector.
Detects resource attributes from OpenTelemetry standard environment variables:
- OTEL_SERVICE_NAME: Sets service.name attribute
- OTEL_RESOURCE_ATTRIBUTES: Sets additional attributes in key=value,key2=value2 format +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\environment_detector()"), + boost: 10 + }, { + label: "eq", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ eq(Expression $left, Expression $right) : Comparison +
+
+ Create an equality comparison (column = value). +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\eq(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:right" + "}" + ")"), + boost: 10 + }, { + label: "equal", + type: "function", + detail: "flow\u002Ddsl\u002Dcomparisons", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ equal(Reference|string $left, Reference|string $right) : Equal +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\equal(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:right" + "}" + ")"), + boost: 10 + }, { + label: "es_hits_to_rows", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ es_hits_to_rows(DocumentDataSource $source = Flow\\ETL\\Adapter\\Elasticsearch\\ElasticsearchPHP\\DocumentDataSource::...) : HitsIntoRowsTransformer +
+
+ Transforms elasticsearch results into clear Flow Rows using [\'hits\'][\'hits\'][x][\'_source\'].
@return HitsIntoRowsTransformer +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Elasticsearch\\es_hits_to_rows(" + "$" + "{" + "1:source" + "}" + ")"), + boost: 10 + }, { + label: "exception_if_exists", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ exception_if_exists() : SaveMode +
+
+ Alias for save_mode_exception_if_exists(). +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\exception_if_exists()"), + boost: 10 + }, { + label: "execution_context", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ execution_context(Config $config = null) : FlowContext +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\execution_context(" + "$" + "{" + "1:config" + "}" + ")"), + boost: 10 + }, { + label: "execution_lenient", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ execution_lenient() : ExecutionMode +
+
+ In this mode, functions returns nulls instead of throwing exceptions. +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\execution_lenient()"), + boost: 10 + }, { + label: "execution_strict", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ execution_strict() : ExecutionMode +
+
+ In this mode, functions throws exceptions if the given entry is not found
or passed parameters are invalid. +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\execution_strict()"), + boost: 10 + }, { + label: "exists", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ exists(ScalarFunction $ref) : Exists +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\exists(" + "$" + "{" + "1:ref" + "}" + ")"), + boost: 10 + }, { + label: "exists", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ exists(SelectFinalStep $subquery) : Exists +
+
+ Create an EXISTS condition. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\exists(" + "$" + "{" + "1:subquery" + "}" + ")"), + boost: 10 + }, { + label: "explain", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ explain(SelectFinalStep|InsertBuilder|UpdateBuilder|DeleteBuilder $query) : ExplainFinalStep +
+
+ Create an EXPLAIN builder for a query.
Example: explain(select()->from(\'users\'))
Produces: EXPLAIN SELECT * FROM users
@param DeleteBuilder|InsertBuilder|SelectFinalStep|UpdateBuilder $query Query to explain +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\explain(" + "$" + "{" + "1:query" + "}" + ")"), + boost: 10 + }, { + label: "fetch", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ fetch(string $cursorName) : FetchCursorBuilder +
+
+ Fetch rows from a cursor.
Example: fetch(\'my_cursor\')->forward(100)
Produces: FETCH FORWARD 100 my_cursor
Example: fetch(\'my_cursor\')->all()
Produces: FETCH ALL my_cursor
@param string $cursorName Cursor to fetch from +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\fetch(" + "$" + "{" + "1:cursorName" + "}" + ")"), + boost: 10 + }, { + label: "files", + type: "function", + detail: "flow\u002Ddsl\u002Dextractors", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ files(Path|string $directory) : FilesExtractor +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\files(" + "$" + "{" + "1:directory" + "}" + ")"), + boost: 10 + }, { + label: "filesystem_cache", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ filesystem_cache(Path|string|null $cache_dir = null, Filesystem $filesystem = Flow\\Filesystem\\Local\\NativeLocalFilesystem::..., Serializer $serializer = Flow\\Serializer\\NativePHPSerializer::...) : FilesystemCache +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\filesystem_cache(" + "$" + "{" + "1:cache_dir" + "}" + ", " + "$" + "{" + "2:filesystem" + "}" + ", " + "$" + "{" + "3:serializer" + "}" + ")"), + boost: 10 + }, { + label: "filesystem_telemetry_config", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ filesystem_telemetry_config(Telemetry $telemetry, ClockInterface $clock, FilesystemTelemetryOptions $options = null) : FilesystemTelemetryConfig +
+
+ Create a telemetry configuration for the filesystem. +
+ ` + return div + }, + apply: snippet("\\Flow\\Filesystem\\DSL\\filesystem_telemetry_config(" + "$" + "{" + "1:telemetry" + "}" + ", " + "$" + "{" + "2:clock" + "}" + ", " + "$" + "{" + "3:options" + "}" + ")"), + boost: 10 + }, { + label: "filesystem_telemetry_options", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ filesystem_telemetry_options(bool $traceStreams = true, bool $collectMetrics = true) : FilesystemTelemetryOptions +
+
+ Create options for filesystem telemetry.
@param bool $traceStreams Create a single span per stream lifecycle (default: ON)
@param bool $collectMetrics Collect metrics for bytes/operation counts (default: ON) +
+ ` + return div + }, + apply: snippet("\\Flow\\Filesystem\\DSL\\filesystem_telemetry_options(" + "$" + "{" + "1:traceStreams" + "}" + ", " + "$" + "{" + "2:collectMetrics" + "}" + ")"), + boost: 10 + }, { + label: "first", + type: "function", + detail: "flow\u002Ddsl\u002Daggregating\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ first(EntryReference|string $ref) : First +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\first(" + "$" + "{" + "1:ref" + "}" + ")"), + boost: 10 + }, { + label: "float_entry", + type: "function", + detail: "flow\u002Ddsl\u002Dentries", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ float_entry(string $name, string|int|float|null $value, Metadata $metadata = null) : Entry +
+
+ @return Entry +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\float_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), + boost: 10 + }, { + label: "float_schema", + type: "function", + detail: "flow\u002Ddsl\u002Dschema", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ float_schema(string $name, bool $nullable = false, Metadata $metadata = null) : FloatDefinition +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\float_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:nullable" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), + boost: 10 + }, { + label: "flow_context", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ flow_context(Config $config = null) : FlowContext +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\flow_context(" + "$" + "{" + "1:config" + "}" + ")"), + boost: 10 + }, { + label: "foreign_key", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ foreign_key(array $columns, string $referenceTable, array $referenceColumns = []) : ForeignKeyConstraint +
+
+ Create a FOREIGN KEY constraint.
@param list $columns Local columns
@param string $referenceTable Referenced table
@param list $referenceColumns Referenced columns (defaults to same as $columns if empty) +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\foreign_key(" + "$" + "{" + "1:columns" + "}" + ", " + "$" + "{" + "2:referenceTable" + "}" + ", " + "$" + "{" + "3:referenceColumns" + "}" + ")"), + boost: 10 + }, { + label: "for_share", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ for_share(array $tables = []) : LockingClause +
+
+ Create a FOR SHARE locking clause.
@param list $tables Tables to lock (empty for all) +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\for_share(" + "$" + "{" + "1:tables" + "}" + ")"), + boost: 10 + }, { + label: "for_update", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ for_update(array $tables = []) : LockingClause +
+
+ Create a FOR UPDATE locking clause.
@param list $tables Tables to lock (empty for all) +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\for_update(" + "$" + "{" + "1:tables" + "}" + ")"), + boost: 10 + }, { + label: "frame_current_row", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ frame_current_row() : FrameBound +
+
+ Create a frame bound for CURRENT ROW. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\frame_current_row()"), + boost: 10 + }, { + label: "frame_following", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ frame_following(Expression $offset) : FrameBound +
+
+ Create a frame bound for N FOLLOWING. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\frame_following(" + "$" + "{" + "1:offset" + "}" + ")"), + boost: 10 + }, { + label: "frame_preceding", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ frame_preceding(Expression $offset) : FrameBound +
+
+ Create a frame bound for N PRECEDING. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\frame_preceding(" + "$" + "{" + "1:offset" + "}" + ")"), + boost: 10 + }, { + label: "frame_unbounded_following", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ frame_unbounded_following() : FrameBound +
+
+ Create a frame bound for UNBOUNDED FOLLOWING. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\frame_unbounded_following()"), + boost: 10 + }, { + label: "frame_unbounded_preceding", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ frame_unbounded_preceding() : FrameBound +
+
+ Create a frame bound for UNBOUNDED PRECEDING. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\frame_unbounded_preceding()"), + boost: 10 + }, { + label: "from_all", + type: "function", + detail: "flow\u002Ddsl\u002Dextractors", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ from_all(Extractor $extractors) : ChainExtractor +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\from_all(" + "$" + "{" + "1:extractors" + "}" + ")"), + boost: 10 + }, { + label: "from_array", + type: "function", + detail: "flow\u002Ddsl\u002Dextractors", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ from_array(iterable $array, Schema $schema = null) : ArrayExtractor +
+
+ @param iterable> $array
@param null|Schema $schema - @deprecated use withSchema() method instead +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\from_array(" + "$" + "{" + "1:array" + "}" + ", " + "$" + "{" + "2:schema" + "}" + ")"), + boost: 10 + }, { + label: "from_avro", + type: "function", + detail: "flow\u002Ddsl\u002Dextractors", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ from_avro(Path|string $path) : AvroExtractor +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\Adapter\\Avro\\from_avro(" + "$" + "{" + "1:path" + "}" + ")"), + boost: 10 + }, { + label: "from_cache", + type: "function", + detail: "flow\u002Ddsl\u002Dextractors", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ from_cache(string $id, Extractor $fallback_extractor = null, bool $clear = false) : CacheExtractor +
+
+ @param string $id - cache id from which data will be extracted
@param null|Extractor $fallback_extractor - extractor that will be used when cache is empty - @deprecated use withFallbackExtractor() method instead
@param bool $clear - clear cache after extraction - @deprecated use withClearOnFinish() method instead +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\from_cache(" + "$" + "{" + "1:id" + "}" + ", " + "$" + "{" + "2:fallback_extractor" + "}" + ", " + "$" + "{" + "3:clear" + "}" + ")"), + boost: 10 + }, { + label: "from_csv", + type: "function", + detail: "flow\u002Ddsl\u002Dextractors", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ from_csv(Path|string $path, bool $with_header = true, bool $empty_to_null = true, string $separator = null, string $enclosure = null, string $escape = null, int $characters_read_in_line = 1000, Schema $schema = null) : CSVExtractor +
+
+ @param Path|string $path
@param bool $empty_to_null - @deprecated use $loader->withEmptyToNull() instead
@param bool $with_header - @deprecated use $loader->withHeader() instead
@param null|string $separator - @deprecated use $loader->withSeparator() instead
@param null|string $enclosure - @deprecated use $loader->withEnclosure() instead
@param null|string $escape - @deprecated use $loader->withEscape() instead
@param int<1, max> $characters_read_in_line - @deprecated use $loader->withCharactersReadInLine() instead
@param null|Schema $schema - @deprecated use $loader->withSchema() instead +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\CSV\\from_csv(" + "$" + "{" + "1:path" + "}" + ", " + "$" + "{" + "2:with_header" + "}" + ", " + "$" + "{" + "3:empty_to_null" + "}" + ", " + "$" + "{" + "4:separator" + "}" + ", " + "$" + "{" + "5:enclosure" + "}" + ", " + "$" + "{" + "6:escape" + "}" + ", " + "$" + "{" + "7:characters_read_in_line" + "}" + ", " + "$" + "{" + "8:schema" + "}" + ")"), + boost: 10 + }, { + label: "from_data_frame", + type: "function", + detail: "flow\u002Ddsl\u002Dextractors", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ from_data_frame(DataFrame $data_frame) : DataFrameExtractor +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\from_data_frame(" + "$" + "{" + "1:data_frame" + "}" + ")"), + boost: 10 + }, { + label: "from_dbal_key_set_qb", + type: "function", + detail: "flow\u002Ddsl\u002Dextractors", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ from_dbal_key_set_qb(Connection $connection, QueryBuilder $queryBuilder, KeySet $key_set) : DbalKeySetExtractor +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\from_dbal_key_set_qb(" + "$" + "{" + "1:connection" + "}" + ", " + "$" + "{" + "2:queryBuilder" + "}" + ", " + "$" + "{" + "3:key_set" + "}" + ")"), + boost: 10 + }, { + label: "from_dbal_limit_offset", + type: "function", + detail: "flow\u002Ddsl\u002Dextractors", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ from_dbal_limit_offset(Connection $connection, Table|string $table, OrderBy|array $order_by, int $page_size = 1000, int $maximum = null) : DbalLimitOffsetExtractor +
+
+ @param Connection $connection
@param string|Table $table
@param array|OrderBy $order_by
@param int $page_size
@param null|int $maximum
@throws InvalidArgumentException +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\from_dbal_limit_offset(" + "$" + "{" + "1:connection" + "}" + ", " + "$" + "{" + "2:table" + "}" + ", " + "$" + "{" + "3:order_by" + "}" + ", " + "$" + "{" + "4:page_size" + "}" + ", " + "$" + "{" + "5:maximum" + "}" + ")"), + boost: 10 + }, { + label: "from_dbal_limit_offset_qb", + type: "function", + detail: "flow\u002Ddsl\u002Dextractors", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ from_dbal_limit_offset_qb(Connection $connection, QueryBuilder $queryBuilder, int $page_size = 1000, int $maximum = null, int $offset = 0) : DbalLimitOffsetExtractor +
+
+ @param Connection $connection
@param int $page_size
@param null|int $maximum - maximum can also be taken from a query builder, $maximum however is used regardless of the query builder if it\'s set
@param int $offset - offset can also be taken from a query builder, $offset however is used regardless of the query builder if it\'s set to non 0 value +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\from_dbal_limit_offset_qb(" + "$" + "{" + "1:connection" + "}" + ", " + "$" + "{" + "2:queryBuilder" + "}" + ", " + "$" + "{" + "3:page_size" + "}" + ", " + "$" + "{" + "4:maximum" + "}" + ", " + "$" + "{" + "5:offset" + "}" + ")"), + boost: 10 + }, { + label: "from_dbal_queries", + type: "function", + detail: "flow\u002Ddsl\u002Dextractors", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ from_dbal_queries(Connection $connection, string $query, ParametersSet $parameters_set = null, array $types = []) : DbalQueryExtractor +
+
+ @param null|ParametersSet $parameters_set - each one parameters array will be evaluated as new query
@param array $types +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\from_dbal_queries(" + "$" + "{" + "1:connection" + "}" + ", " + "$" + "{" + "2:query" + "}" + ", " + "$" + "{" + "3:parameters_set" + "}" + ", " + "$" + "{" + "4:types" + "}" + ")"), + boost: 10 + }, { + label: "from_dbal_query", + type: "function", + detail: "flow\u002Ddsl\u002Dextractors", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ from_dbal_query(Connection $connection, string $query, array $parameters = [], array $types = []) : DbalQueryExtractor +
+
+ @param array|list $parameters - @deprecated use DbalQueryExtractor::withParameters() instead
@param array|string, DbalArrayType|DbalParameterType|DbalType|string> $types - @deprecated use DbalQueryExtractor::withTypes() instead +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\from_dbal_query(" + "$" + "{" + "1:connection" + "}" + ", " + "$" + "{" + "2:query" + "}" + ", " + "$" + "{" + "3:parameters" + "}" + ", " + "$" + "{" + "4:types" + "}" + ")"), + boost: 10 + }, { + label: "from_dynamic_http_requests", + type: "function", + detail: "flow\u002Ddsl\u002Dextractors", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ from_dynamic_http_requests(ClientInterface $client, NextRequestFactory $requestFactory) : PsrHttpClientDynamicExtractor +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Http\\from_dynamic_http_requests(" + "$" + "{" + "1:client" + "}" + ", " + "$" + "{" + "2:requestFactory" + "}" + ")"), + boost: 10 + }, { + label: "from_es", + type: "function", + detail: "flow\u002Ddsl\u002Dextractors", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ from_es(array $config, array $parameters, array $pit_params = null) : ElasticsearchExtractor +
+
+ Extractor will automatically try to iterate over whole index using one of the two iteration methods:.
- from/size
- search_after
Search after is selected when you provide define sort parameters in query, otherwise it will fallback to from/size.
@param array{
hosts?: array,
connectionParams?: array,
retries?: int,
sniffOnStart?: bool,
sslCert?: array,
sslKey?: array,
sslVerification?: bool|string,
elasticMetaHeader?: bool,
includePortInHostHeader?: bool
} $config
@param array $parameters - https://www.elastic.co/guide/en/elasticsearch/reference/master/search-search.html
@param ?array $pit_params - when used extractor will create point in time to stabilize search results. Point in time is automatically closed when last element is extracted. https://www.elastic.co/guide/en/elasticsearch/reference/master/point-in-time-api.html - @deprecated use withPointInTime method instead +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Elasticsearch\\from_es(" + "$" + "{" + "1:config" + "}" + ", " + "$" + "{" + "2:parameters" + "}" + ", " + "$" + "{" + "3:pit_params" + "}" + ")"), + boost: 10 + }, { + label: "from_excel", + type: "function", + detail: "flow\u002Ddsl\u002Dextractors", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ from_excel(Path|string $path) : ExcelExtractor +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Excel\\DSL\\from_excel(" + "$" + "{" + "1:path" + "}" + ")"), + boost: 10 + }, { + label: "from_google_sheet", + type: "function", + detail: "flow\u002Ddsl\u002Dextractors", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ from_google_sheet(Sheets|array $auth_config, string $spreadsheet_id, string $sheet_name, bool $with_header = true, int $rows_per_page = 1000, array $options = []) : GoogleSheetExtractor +
+
+ @param array{type: string, project_id: string, private_key_id: string, private_key: string, client_email: string, client_id: string, auth_uri: string, token_uri: string, auth_provider_x509_cert_url: string, client_x509_cert_url: string}|Sheets $auth_config
@param string $spreadsheet_id
@param string $sheet_name
@param bool $with_header - @deprecated use withHeader method instead
@param int $rows_per_page - how many rows per page to fetch from Google Sheets API - @deprecated use withRowsPerPage method instead
@param array{dateTimeRenderOption?: string, majorDimension?: string, valueRenderOption?: string} $options - @deprecated use withOptions method instead +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\GoogleSheet\\from_google_sheet(" + "$" + "{" + "1:auth_config" + "}" + ", " + "$" + "{" + "2:spreadsheet_id" + "}" + ", " + "$" + "{" + "3:sheet_name" + "}" + ", " + "$" + "{" + "4:with_header" + "}" + ", " + "$" + "{" + "5:rows_per_page" + "}" + ", " + "$" + "{" + "6:options" + "}" + ")"), + boost: 10 + }, { + label: "from_google_sheet_columns", + type: "function", + detail: "flow\u002Ddsl\u002Dextractors", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ from_google_sheet_columns(Sheets|array $auth_config, string $spreadsheet_id, string $sheet_name, string $start_range_column, string $end_range_column, bool $with_header = true, int $rows_per_page = 1000, array $options = []) : GoogleSheetExtractor +
+
+ @param array{type: string, project_id: string, private_key_id: string, private_key: string, client_email: string, client_id: string, auth_uri: string, token_uri: string, auth_provider_x509_cert_url: string, client_x509_cert_url: string}|Sheets $auth_config
@param string $spreadsheet_id
@param string $sheet_name
@param string $start_range_column
@param string $end_range_column
@param bool $with_header - @deprecated use withHeader method instead
@param int $rows_per_page - how many rows per page to fetch from Google Sheets API, default 1000 - @deprecated use withRowsPerPage method instead
@param array{dateTimeRenderOption?: string, majorDimension?: string, valueRenderOption?: string} $options - @deprecated use withOptions method instead +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\GoogleSheet\\from_google_sheet_columns(" + "$" + "{" + "1:auth_config" + "}" + ", " + "$" + "{" + "2:spreadsheet_id" + "}" + ", " + "$" + "{" + "3:sheet_name" + "}" + ", " + "$" + "{" + "4:start_range_column" + "}" + ", " + "$" + "{" + "5:end_range_column" + "}" + ", " + "$" + "{" + "6:with_header" + "}" + ", " + "$" + "{" + "7:rows_per_page" + "}" + ", " + "$" + "{" + "8:options" + "}" + ")"), + boost: 10 + }, { + label: "from_json", + type: "function", + detail: "flow\u002Ddsl\u002Dextractors", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ from_json(Path|string $path, string $pointer = null, Schema $schema = null) : JsonExtractor +
+
+ @param Path|string $path - string is internally turned into stream
@param ?string $pointer - if you want to iterate only results of a subtree, use a pointer, read more at https://github.com/halaxa/json-machine#parsing-a-subtree - @deprecate use withPointer method instead
@param null|Schema $schema - enforce schema on the extracted data - @deprecate use withSchema method instead +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\JSON\\from_json(" + "$" + "{" + "1:path" + "}" + ", " + "$" + "{" + "2:pointer" + "}" + ", " + "$" + "{" + "3:schema" + "}" + ")"), + boost: 10 + }, { + label: "from_json_lines", + type: "function", + detail: "flow\u002Ddsl\u002Dextractors", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ from_json_lines(Path|string $path) : JsonLinesExtractor +
+
+ Used to read from a JSON lines https://jsonlines.org/ formatted file.
@param Path|string $path - string is internally turned into stream +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\JSON\\from_json_lines(" + "$" + "{" + "1:path" + "}" + ")"), + boost: 10 + }, { + label: "from_meilisearch", + type: "function", + detail: "flow\u002Ddsl\u002Dextractors", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ from_meilisearch(array $config, array $params, string $index) : MeilisearchExtractor +
+
+ @param array{url: string, apiKey: string} $config
@param array{q: string, limit?: ?int, offset?: ?int, attributesToRetrieve?: ?array, sort?: ?array} $params +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Meilisearch\\from_meilisearch(" + "$" + "{" + "1:config" + "}" + ", " + "$" + "{" + "2:params" + "}" + ", " + "$" + "{" + "3:index" + "}" + ")"), + boost: 10 + }, { + label: "from_memory", + type: "function", + detail: "flow\u002Ddsl\u002Dextractors", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ from_memory(Memory $memory) : MemoryExtractor +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\from_memory(" + "$" + "{" + "1:memory" + "}" + ")"), + boost: 10 + }, { + label: "from_parquet", + type: "function", + detail: "flow\u002Ddsl\u002Dextractors", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ from_parquet(Path|string $path, array $columns = [], Options $options = Flow\\Parquet\\Options::..., ByteOrder $byte_order = Flow\\Parquet\\ByteOrder::..., int $offset = null) : ParquetExtractor +
+
+ @param Path|string $path
@param array $columns - list of columns to read from parquet file - @deprecated use \`withColumns\` method instead
@param Options $options - @deprecated use \`withOptions\` method instead
@param ByteOrder $byte_order - @deprecated use \`withByteOrder\` method instead
@param null|int $offset - @deprecated use \`withOffset\` method instead +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Parquet\\from_parquet(" + "$" + "{" + "1:path" + "}" + ", " + "$" + "{" + "2:columns" + "}" + ", " + "$" + "{" + "3:options" + "}" + ", " + "$" + "{" + "4:byte_order" + "}" + ", " + "$" + "{" + "5:offset" + "}" + ")"), + boost: 10 + }, { + label: "from_path_partitions", + type: "function", + detail: "flow\u002Ddsl\u002Dextractors", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ from_path_partitions(Path|string $path) : PathPartitionsExtractor +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\from_path_partitions(" + "$" + "{" + "1:path" + "}" + ")"), + boost: 10 + }, { + label: "from_pipeline", + type: "function", + detail: "flow\u002Ddsl\u002Dextractors", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ from_pipeline(Pipeline $pipeline) : PipelineExtractor +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\from_pipeline(" + "$" + "{" + "1:pipeline" + "}" + ")"), + boost: 10 + }, { + label: "from_rows", + type: "function", + detail: "flow\u002Ddsl\u002Dextractors", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ from_rows(Rows $rows) : RowsExtractor +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\from_rows(" + "$" + "{" + "1:rows" + "}" + ")"), + boost: 10 + }, { + label: "from_sequence_date_period", + type: "function", + detail: "flow\u002Ddsl\u002Dextractors", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ from_sequence_date_period(string $entry_name, DateTimeInterface $start, DateInterval $interval, DateTimeInterface $end, int $options = 0) : SequenceExtractor +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\from_sequence_date_period(" + "$" + "{" + "1:entry_name" + "}" + ", " + "$" + "{" + "2:start" + "}" + ", " + "$" + "{" + "3:interval" + "}" + ", " + "$" + "{" + "4:end" + "}" + ", " + "$" + "{" + "5:options" + "}" + ")"), + boost: 10 + }, { + label: "from_sequence_date_period_recurrences", + type: "function", + detail: "flow\u002Ddsl\u002Dextractors", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ from_sequence_date_period_recurrences(string $entry_name, DateTimeInterface $start, DateInterval $interval, int $recurrences, int $options = 0) : SequenceExtractor +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\from_sequence_date_period_recurrences(" + "$" + "{" + "1:entry_name" + "}" + ", " + "$" + "{" + "2:start" + "}" + ", " + "$" + "{" + "3:interval" + "}" + ", " + "$" + "{" + "4:recurrences" + "}" + ", " + "$" + "{" + "5:options" + "}" + ")"), + boost: 10 + }, { + label: "from_sequence_number", + type: "function", + detail: "flow\u002Ddsl\u002Dextractors", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ from_sequence_number(string $entry_name, string|int|float $start, string|int|float $end, int|float $step = 1) : SequenceExtractor +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\from_sequence_number(" + "$" + "{" + "1:entry_name" + "}" + ", " + "$" + "{" + "2:start" + "}" + ", " + "$" + "{" + "3:end" + "}" + ", " + "$" + "{" + "4:step" + "}" + ")"), + boost: 10 + }, { + label: "from_static_http_requests", + type: "function", + detail: "flow\u002Ddsl\u002Dextractors", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ from_static_http_requests(ClientInterface $client, iterable $requests) : PsrHttpClientStaticExtractor +
+
+ @param iterable $requests +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Http\\from_static_http_requests(" + "$" + "{" + "1:client" + "}" + ", " + "$" + "{" + "2:requests" + "}" + ")"), + boost: 10 + }, { + label: "from_text", + type: "function", + detail: "flow\u002Ddsl\u002Dextractors", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ from_text(Path|string $path) : TextExtractor +
+
+ @param Path|string $path +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Text\\from_text(" + "$" + "{" + "1:path" + "}" + ")"), + boost: 10 + }, { + label: "from_xml", + type: "function", + detail: "flow\u002Ddsl\u002Dextractors", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ from_xml(Path|string $path, string $xml_node_path = '') : XMLParserExtractor +
+
+ In order to iterate only over nodes use \`from_xml($file)->withXMLNodePath(\'root/elements/element\')\`.






XML Node Path does not support attributes and it\'s not xpath, it is just a sequence
of node names separated with slash.
@param Path|string $path
@param string $xml_node_path - @deprecated use \`from_xml($file)->withXMLNodePath($xmlNodePath)\` method instead +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\XML\\from_xml(" + "$" + "{" + "1:path" + "}" + ", " + "$" + "{" + "2:xml_node_path" + "}" + ")"), + boost: 10 + }, { + label: "fstab", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ fstab(Filesystem $filesystems) : FilesystemTable +
+
+ Create a new filesystem table with given filesystems.
Filesystems can be also mounted later.
If no filesystems are provided, local filesystem is mounted. +
+ ` + return div + }, + apply: snippet("\\Flow\\Filesystem\\DSL\\fstab(" + "$" + "{" + "1:filesystems" + "}" + ")"), + boost: 10 + }, { + label: "func", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ func(string $name, array $args = []) : FunctionCall +
+
+ Create a function call expression.
@param string $name Function name (can include schema like \"pg_catalog.now\")
@param list $args Function arguments +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\func(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:args" + "}" + ")"), + boost: 10 + }, { + label: "func_arg", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ func_arg(DataType $type) : FunctionArgument +
+
+ Creates a new function argument for use in function/procedure definitions.
Example: func_arg(data_type_integer())
Example: func_arg(data_type_text())->named(\'username\')
Example: func_arg(data_type_integer())->named(\'count\')->default(\'0\')
Example: func_arg(data_type_text())->out()
@param DataType $type The PostgreSQL data type for the argument
@return FunctionArgument Builder for function argument options +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\func_arg(" + "$" + "{" + "1:type" + "}" + ")"), + boost: 10 + }, { + label: "generate_random_int", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ generate_random_int(int $start = -9223372036854775808, int $end = 9223372036854775807, NativePHPRandomValueGenerator $generator = Flow\\ETL\\NativePHPRandomValueGenerator::...) : int +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\generate_random_int(" + "$" + "{" + "1:start" + "}" + ", " + "$" + "{" + "2:end" + "}" + ", " + "$" + "{" + "3:generator" + "}" + ")"), + boost: 10 + }, { + label: "generate_random_string", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ generate_random_string(int $length = 32, NativePHPRandomValueGenerator $generator = Flow\\ETL\\NativePHPRandomValueGenerator::...) : string +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\generate_random_string(" + "$" + "{" + "1:length" + "}" + ", " + "$" + "{" + "2:generator" + "}" + ")"), + boost: 10 + }, { + label: "get_type", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ get_type(mixed $value) : Type +
+
+ @return Type
@deprecated Please use \\Flow\\Types\\DSL\\get_type($value) instead +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\get_type(" + "$" + "{" + "1:value" + "}" + ")"), + boost: 10 + }, { + label: "get_type", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ get_type(mixed $value) : Type +
+
+ @return Type +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\get_type(" + "$" + "{" + "1:value" + "}" + ")"), + boost: 10 + }, { + label: "grant", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ grant(TablePrivilege|string $privileges) : GrantOnStep +
+
+ Create a GRANT privileges builder.
Example: grant(TablePrivilege::SELECT)->onTable(\'users\')->to(\'app_user\')
Produces: GRANT SELECT ON users TO app_user
Example: grant(TablePrivilege::ALL)->onAllTablesInSchema(\'public\')->to(\'admin\')
Produces: GRANT ALL ON ALL TABLES IN SCHEMA public TO admin
@param string|TablePrivilege ...$privileges The privileges to grant
@return GrantOnStep Builder for grant options +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\grant(" + "$" + "{" + "1:privileges" + "}" + ")"), + boost: 10 + }, { + label: "grant_role", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ grant_role(string $roles) : GrantRoleToStep +
+
+ Create a GRANT role builder.
Example: grant_role(\'admin\')->to(\'user1\')
Produces: GRANT admin TO user1
Example: grant_role(\'admin\', \'developer\')->to(\'user1\')->withAdminOption()
Produces: GRANT admin, developer TO user1 WITH ADMIN OPTION
@param string ...$roles The roles to grant
@return GrantRoleToStep Builder for grant role options +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\grant_role(" + "$" + "{" + "1:roles" + "}" + ")"), + boost: 10 + }, { + label: "greatest", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ greatest(mixed $values) : Greatest +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\greatest(" + "$" + "{" + "1:values" + "}" + ")"), + boost: 10 + }, { + label: "greatest", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ greatest(Expression $expressions) : Greatest +
+
+ Create a GREATEST expression.
@param Expression ...$expressions Expressions to compare +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\greatest(" + "$" + "{" + "1:expressions" + "}" + ")"), + boost: 10 + }, { + label: "gt", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ gt(Expression $left, Expression $right) : Comparison +
+
+ Create a greater-than comparison (column > value). +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\gt(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:right" + "}" + ")"), + boost: 10 + }, { + label: "gte", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ gte(Expression $left, Expression $right) : Comparison +
+
+ Create a greater-than-or-equal comparison (column >= value). +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\gte(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:right" + "}" + ")"), + boost: 10 + }, { + label: "hash", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ hash(mixed $value, Algorithm $algorithm = Flow\\ETL\\Hash\\NativePHPHash::...) : Hash +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\hash(" + "$" + "{" + "1:value" + "}" + ", " + "$" + "{" + "2:algorithm" + "}" + ")"), + boost: 10 + }, { + label: "hash_id_factory", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ hash_id_factory(string $entry_names) : IdFactory +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Elasticsearch\\hash_id_factory(" + "$" + "{" + "1:entry_names" + "}" + ")"), + boost: 10 + }, { + label: "host_detector", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ host_detector() : HostDetector +
+
+ Create a HostDetector.
Detects host information including host.name, host.arch, and host.id
(from /etc/machine-id on Linux or IOPlatformUUID on macOS). +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\host_detector()"), + boost: 10 + }, { + label: "html_element_entry", + type: "function", + detail: "flow\u002Ddsl\u002Dentries", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ html_element_entry(string $name, Dom\\HTMLElement|string|null $value, Metadata $metadata = null) : Entry +
+
+ @return Entry +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\html_element_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), + boost: 10 + }, { + label: "html_element_schema", + type: "function", + detail: "flow\u002Ddsl\u002Dschema", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ html_element_schema(string $name, bool $nullable = false, Metadata $metadata = null) : HTMLElementDefinition +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\html_element_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:nullable" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), + boost: 10 + }, { + label: "html_entry", + type: "function", + detail: "flow\u002Ddsl\u002Dentries", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ html_entry(string $name, Dom\\HTMLDocument|string|null $value, Metadata $metadata = null) : Entry +
+
+ @return Entry +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\html_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), + boost: 10 + }, { + label: "html_schema", + type: "function", + detail: "flow\u002Ddsl\u002Dschema", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ html_schema(string $name, bool $nullable = false, Metadata $metadata = null) : HTMLDefinition +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\html_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:nullable" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), + boost: 10 + }, { + label: "identical", + type: "function", + detail: "flow\u002Ddsl\u002Dcomparisons", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ identical(Reference|string $left, Reference|string $right) : Identical +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\identical(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:right" + "}" + ")"), + boost: 10 + }, { + label: "ignore", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ ignore() : SaveMode +
+
+ Alias for save_mode_ignore(). +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\ignore()"), + boost: 10 + }, { + label: "ignore_error_handler", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ ignore_error_handler() : IgnoreError +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\ignore_error_handler()"), + boost: 10 + }, { + label: "index_col", + type: "function", + detail: "flow\u002Ddsl\u002Dschema", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ index_col(string $name) : IndexColumn +
+
+ Create an index column specification.
Use chainable methods: ->asc(), ->desc(), ->nullsFirst(), ->nullsLast(), ->opclass(), ->collate()
Example: index_col(\'email\')->desc()->nullsLast()
@param string $name The column name +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\index_col(" + "$" + "{" + "1:name" + "}" + ")"), + boost: 10 + }, { + label: "index_expr", + type: "function", + detail: "flow\u002Ddsl\u002Dschema", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ index_expr(Expression $expression) : IndexColumn +
+
+ Create an index column specification from an expression.
Use chainable methods: ->asc(), ->desc(), ->nullsFirst(), ->nullsLast(), ->opclass(), ->collate()
Example: index_expr(fn_call(\'lower\', col(\'email\')))->desc()
@param Expression $expression The expression to index +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\index_expr(" + "$" + "{" + "1:expression" + "}" + ")"), + boost: 10 + }, { + label: "index_method_brin", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ index_method_brin() : IndexMethod +
+
+ Get the BRIN index method. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\index_method_brin()"), + boost: 10 + }, { + label: "index_method_btree", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ index_method_btree() : IndexMethod +
+
+ Get the BTREE index method. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\index_method_btree()"), + boost: 10 + }, { + label: "index_method_gin", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ index_method_gin() : IndexMethod +
+
+ Get the GIN index method. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\index_method_gin()"), + boost: 10 + }, { + label: "index_method_gist", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ index_method_gist() : IndexMethod +
+
+ Get the GIST index method. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\index_method_gist()"), + boost: 10 + }, { + label: "index_method_hash", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ index_method_hash() : IndexMethod +
+
+ Get the HASH index method. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\index_method_hash()"), + boost: 10 + }, { + label: "index_method_spgist", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ index_method_spgist() : IndexMethod +
+
+ Get the SPGIST index method. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\index_method_spgist()"), + boost: 10 + }, { + label: "insert", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ insert() : InsertIntoStep +
+
+ Create a new INSERT query builder. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\insert()"), + boost: 10 + }, { + label: "instrumentation_scope", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ instrumentation_scope(string $name, string $version = 'unknown', string $schemaUrl = null, Attributes $attributes = Flow\\Telemetry\\Attributes::...) : InstrumentationScope +
+
+ Create an InstrumentationScope.
@param string $name The instrumentation scope name
@param string $version The instrumentation scope version
@param null|string $schemaUrl Optional schema URL +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\instrumentation_scope(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:version" + "}" + ", " + "$" + "{" + "3:schemaUrl" + "}" + ", " + "$" + "{" + "4:attributes" + "}" + ")"), + boost: 10 + }, { + label: "integer_entry", + type: "function", + detail: "flow\u002Ddsl\u002Dentries", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ integer_entry(string $name, int $value, Metadata $metadata = null) : Entry +
+
+ @return Entry +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\integer_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), + boost: 10 + }, { + label: "integer_schema", + type: "function", + detail: "flow\u002Ddsl\u002Dschema", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ integer_schema(string $name, bool $nullable = false, Metadata $metadata = null) : IntegerDefinition +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\integer_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:nullable" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), + boost: 10 + }, { + label: "int_entry", + type: "function", + detail: "flow\u002Ddsl\u002Dentries", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ int_entry(string $name, int $value, Metadata $metadata = null) : Entry +
+
+ @return Entry +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\int_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), + boost: 10 + }, { + label: "int_schema", + type: "function", + detail: "flow\u002Ddsl\u002Dschema", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ int_schema(string $name, bool $nullable = false, Metadata $metadata = null) : IntegerDefinition +
+
+ Alias for \`integer_schema\`. +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\int_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:nullable" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), + boost: 10 + }, { + label: "is_distinct_from", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ is_distinct_from(Expression $left, Expression $right, bool $not = false) : IsDistinctFrom +
+
+ Create an IS DISTINCT FROM condition. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\is_distinct_from(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:right" + "}" + ", " + "$" + "{" + "3:not" + "}" + ")"), + boost: 10 + }, { + label: "is_in", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ is_in(Expression $expr, array $values) : In +
+
+ Create an IN condition.
@param Expression $expr Expression to check
@param list $values List of values +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\is_in(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:values" + "}" + ")"), + boost: 10 + }, { + label: "is_null", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ is_null(Expression $expr, bool $not = false) : IsNull +
+
+ Create an IS NULL condition. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\is_null(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:not" + "}" + ")"), + boost: 10 + }, { + label: "is_type", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ is_type(Type|array $type, mixed $value) : bool +
+
+ @param array>|Type $type
@param mixed $value +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\is_type(" + "$" + "{" + "1:type" + "}" + ", " + "$" + "{" + "2:value" + "}" + ")"), + boost: 10 + }, { + label: "is_valid_excel_sheet_name", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ is_valid_excel_sheet_name(ScalarFunction|string $sheet_name) : IsValidExcelSheetName +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Excel\\DSL\\is_valid_excel_sheet_name(" + "$" + "{" + "1:sheet_name" + "}" + ")"), + boost: 10 + }, { + label: "join_on", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ join_on(Comparison|array $comparisons, string $join_prefix = '') : Expression +
+
+ @param array<\\Flow\\ETL\\Join\\Comparison|string>|Comparison $comparisons +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\join_on(" + "$" + "{" + "1:comparisons" + "}" + ", " + "$" + "{" + "2:join_prefix" + "}" + ")"), + boost: 10 + }, { + label: "json_contained_by", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ json_contained_by(Expression $left, Expression $right) : OperatorCondition +
+
+ Create a JSONB is contained by condition (<@).
Example: json_contained_by(col(\'metadata\'), literal_json(\'{\"category\": \"electronics\", \"price\": 100}\'))
Produces: metadata <@ \'{\"category\": \"electronics\", \"price\": 100}\' +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\json_contained_by(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:right" + "}" + ")"), + boost: 10 + }, { + label: "json_contains", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ json_contains(Expression $left, Expression $right) : OperatorCondition +
+
+ Create a JSONB contains condition (@>).
Example: json_contains(col(\'metadata\'), literal_json(\'{\"category\": \"electronics\"}\'))
Produces: metadata @> \'{\"category\": \"electronics\"}\' +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\json_contains(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:right" + "}" + ")"), + boost: 10 + }, { + label: "json_entry", + type: "function", + detail: "flow\u002Ddsl\u002Dentries", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ json_entry(string $name, Json|array|string|null $data, Metadata $metadata = null) : Entry +
+
+ @param null|array|Json|string $data
@return Entry +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\json_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:data" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), + boost: 10 + }, { + label: "json_exists", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ json_exists(Expression $expr, Expression $key) : OperatorCondition +
+
+ Create a JSONB key exists condition (?).
Example: json_exists(col(\'metadata\'), literal_string(\'category\'))
Produces: metadata ? \'category\' +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\json_exists(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:key" + "}" + ")"), + boost: 10 + }, { + label: "json_exists_all", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ json_exists_all(Expression $expr, Expression $keys) : OperatorCondition +
+
+ Create a JSONB all keys exist condition (?&).
Example: json_exists_all(col(\'metadata\'), raw_expr(\"array[\'category\', \'name\']\"))
Produces: metadata ?& array[\'category\', \'name\'] +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\json_exists_all(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:keys" + "}" + ")"), + boost: 10 + }, { + label: "json_exists_any", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ json_exists_any(Expression $expr, Expression $keys) : OperatorCondition +
+
+ Create a JSONB any key exists condition (?|).
Example: json_exists_any(col(\'metadata\'), raw_expr(\"array[\'category\', \'name\']\"))
Produces: metadata ?| array[\'category\', \'name\'] +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\json_exists_any(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:keys" + "}" + ")"), + boost: 10 + }, { + label: "json_get", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ json_get(Expression $expr, Expression $key) : BinaryExpression +
+
+ Create a JSON field access expression (->).
Returns JSON.
Example: json_get(col(\'metadata\'), literal_string(\'category\'))
Produces: metadata -> \'category\' +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\json_get(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:key" + "}" + ")"), + boost: 10 + }, { + label: "json_get_text", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ json_get_text(Expression $expr, Expression $key) : BinaryExpression +
+
+ Create a JSON field access expression (->>).
Returns text.
Example: json_get_text(col(\'metadata\'), literal_string(\'name\'))
Produces: metadata ->> \'name\' +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\json_get_text(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:key" + "}" + ")"), + boost: 10 + }, { + label: "json_object_entry", + type: "function", + detail: "flow\u002Ddsl\u002Dentries", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ json_object_entry(string $name, Json|array|string|null $data, Metadata $metadata = null) : Entry +
+
+ @param null|array|Json|string $data
@throws InvalidArgumentException
@return Entry +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\json_object_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:data" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), + boost: 10 + }, { + label: "json_path", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ json_path(Expression $expr, Expression $path) : BinaryExpression +
+
+ Create a JSON path access expression (#>).
Returns JSON.
Example: json_path(col(\'metadata\'), literal_string(\'{category,name}\'))
Produces: metadata #> \'{category,name}\' +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\json_path(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:path" + "}" + ")"), + boost: 10 + }, { + label: "json_path_text", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ json_path_text(Expression $expr, Expression $path) : BinaryExpression +
+
+ Create a JSON path access expression (#>>).
Returns text.
Example: json_path_text(col(\'metadata\'), literal_string(\'{category,name}\'))
Produces: metadata #>> \'{category,name}\' +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\json_path_text(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:path" + "}" + ")"), + boost: 10 + }, { + label: "json_schema", + type: "function", + detail: "flow\u002Ddsl\u002Dschema", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ json_schema(string $name, bool $nullable = false, Metadata $metadata = null) : JsonDefinition +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\json_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:nullable" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), + boost: 10 + }, { + label: "last", + type: "function", + detail: "flow\u002Ddsl\u002Daggregating\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ last(EntryReference|string $ref) : Last +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\last(" + "$" + "{" + "1:ref" + "}" + ")"), + boost: 10 + }, { + label: "lateral", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ lateral(TableReference $reference) : Lateral +
+
+ Create a LATERAL subquery.
@param TableReference $reference The subquery or table function reference +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\lateral(" + "$" + "{" + "1:reference" + "}" + ")"), + boost: 10 + }, { + label: "least", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ least(mixed $values) : Least +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\least(" + "$" + "{" + "1:values" + "}" + ")"), + boost: 10 + }, { + label: "least", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ least(Expression $expressions) : Least +
+
+ Create a LEAST expression.
@param Expression ...$expressions Expressions to compare +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\least(" + "$" + "{" + "1:expressions" + "}" + ")"), + boost: 10 + }, { + label: "like", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ like(Expression $expr, Expression $pattern, bool $caseInsensitive = false) : Like +
+
+ Create a LIKE condition. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\like(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:pattern" + "}" + ", " + "$" + "{" + "3:caseInsensitive" + "}" + ")"), + boost: 10 + }, { + label: "limit", + type: "function", + detail: "flow\u002Ddsl\u002Dtransformers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ limit(int $limit) : Limit +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\limit(" + "$" + "{" + "1:limit" + "}" + ")"), + boost: 10 + }, { + label: "line_chart", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ line_chart(EntryReference $label, References $datasets) : LineChart +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\ChartJS\\line_chart(" + "$" + "{" + "1:label" + "}" + ", " + "$" + "{" + "2:datasets" + "}" + ")"), + boost: 10 + }, { + label: "list_entry", + type: "function", + detail: "flow\u002Ddsl\u002Dentries", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ list_entry(string $name, array $value, ListType $type, Metadata $metadata = null) : Entry +
+
+ @template T
@param null|list $value
@param ListType $type
@return Entry +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\list_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:type" + "}" + ", " + "$" + "{" + "4:metadata" + "}" + ")"), + boost: 10 + }, { + label: "list_ref", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ list_ref(string $entry) : ListFunctions +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\list_ref(" + "$" + "{" + "1:entry" + "}" + ")"), + boost: 10 + }, { + label: "list_schema", + type: "function", + detail: "flow\u002Ddsl\u002Dschema", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ list_schema(string $name, ListType|Type $type, bool $nullable = false, Metadata $metadata = null) : ListDefinition +
+
+ @template T
@param ListType|Type> $type
@return ListDefinition +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\list_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:type" + "}" + ", " + "$" + "{" + "3:nullable" + "}" + ", " + "$" + "{" + "4:metadata" + "}" + ")"), + boost: 10 + }, { + label: "lit", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ lit(mixed $value) : Literal +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\lit(" + "$" + "{" + "1:value" + "}" + ")"), + boost: 10 + }, { + label: "literal", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ literal(string|int|float|bool|null $value) : Literal +
+
+ Create a literal value for use in queries.
Automatically detects the type and creates the appropriate literal:
- literal(\'hello\') creates a string literal
- literal(42) creates an integer literal
- literal(3.14) creates a float literal
- literal(true) creates a boolean literal
- literal(null) creates a NULL literal +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\literal(" + "$" + "{" + "1:value" + "}" + ")"), + boost: 10 + }, { + label: "lock_for", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ lock_for(LockStrength $strength, array $tables = [], LockWaitPolicy $waitPolicy = Flow\\PostgreSql\\QueryBuilder\\Clause\\LockWaitPolicy::...) : LockingClause +
+
+ Create a locking clause (FOR UPDATE, FOR SHARE, etc.).
@param LockStrength $strength Lock strength
@param list $tables Tables to lock (empty for all)
@param LockWaitPolicy $waitPolicy Wait policy +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\lock_for(" + "$" + "{" + "1:strength" + "}" + ", " + "$" + "{" + "2:tables" + "}" + ", " + "$" + "{" + "3:waitPolicy" + "}" + ")"), + boost: 10 + }, { + label: "lock_table", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ lock_table(string $tables) : LockFinalStep +
+
+ Create a LOCK TABLE builder.
Example: lock_table(\'users\', \'orders\')->accessExclusive()
Produces: LOCK TABLE users, orders IN ACCESS EXCLUSIVE MODE +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\lock_table(" + "$" + "{" + "1:tables" + "}" + ")"), + boost: 10 + }, { + label: "logger_provider", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ logger_provider(LogProcessor $processor, ClockInterface $clock, ContextStorage $contextStorage, LogRecordLimits $limits = Flow\\Telemetry\\Logger\\LogRecordLimits::...) : LoggerProvider +
+
+ Create a LoggerProvider.
Creates a provider that uses a LogProcessor for processing logs.
For void/disabled logging, pass void_processor().
For memory-based testing, pass memory_processor() with exporters.
@param LogProcessor $processor The processor for logs
@param ClockInterface $clock The clock for timestamps
@param ContextStorage $contextStorage Storage for span correlation
@param LogRecordLimits $limits Limits for log record attributes +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\logger_provider(" + "$" + "{" + "1:processor" + "}" + ", " + "$" + "{" + "2:clock" + "}" + ", " + "$" + "{" + "3:contextStorage" + "}" + ", " + "$" + "{" + "4:limits" + "}" + ")"), + boost: 10 + }, { + label: "log_record_converter", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ log_record_converter(SeverityMapper $severityMapper = null, ValueNormalizer $valueNormalizer = null) : LogRecordConverter +
+
+ Create a LogRecordConverter for converting Monolog LogRecord to Telemetry LogRecord.
The converter handles:
- Severity mapping from Monolog Level to Telemetry Severity
- Message body conversion
- Channel and level name as monolog.* attributes
- Context values as context.* attributes (Throwables use setException())
- Extra values as extra.* attributes
@param null|SeverityMapper $severityMapper Custom severity mapper (defaults to standard mapping)
@param null|ValueNormalizer $valueNormalizer Custom value normalizer (defaults to standard normalizer)
Example usage:
\`\`\`php
$converter = log_record_converter();
$telemetryRecord = $converter->convert($monologRecord);
\`\`\`
Example with custom mapper:
\`\`\`php
$converter = log_record_converter(
severityMapper: severity_mapper([
Level::Debug->value => Severity::TRACE,
])
);
\`\`\` +
+ ` + return div + }, + apply: snippet("\\Flow\\Bridge\\Monolog\\Telemetry\\DSL\\log_record_converter(" + "$" + "{" + "1:severityMapper" + "}" + ", " + "$" + "{" + "2:valueNormalizer" + "}" + ")"), + boost: 10 + }, { + label: "log_record_limits", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ log_record_limits(int $attributeCountLimit = 128, int $attributeValueLengthLimit = null) : LogRecordLimits +
+
+ Create LogRecordLimits configuration.
LogRecordLimits controls the maximum amount of data a log record can collect,
preventing unbounded memory growth and ensuring reasonable log record sizes.
@param int $attributeCountLimit Maximum number of attributes per log record
@param null|int $attributeValueLengthLimit Maximum length for string attribute values (null = unlimited) +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\log_record_limits(" + "$" + "{" + "1:attributeCountLimit" + "}" + ", " + "$" + "{" + "2:attributeValueLengthLimit" + "}" + ")"), + boost: 10 + }, { + label: "lower", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ lower(ScalarFunction|string $value) : ToLower +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\lower(" + "$" + "{" + "1:value" + "}" + ")"), + boost: 10 + }, { + label: "lt", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ lt(Expression $left, Expression $right) : Comparison +
+
+ Create a less-than comparison (column < value). +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\lt(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:right" + "}" + ")"), + boost: 10 + }, { + label: "lte", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ lte(Expression $left, Expression $right) : Comparison +
+
+ Create a less-than-or-equal comparison (column <= value). +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\lte(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:right" + "}" + ")"), + boost: 10 + }, { + label: "manual_detector", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ manual_detector(array $attributes) : ManualDetector +
+
+ Create a ManualDetector.
Returns manually specified resource attributes. Use this when you need
to set attributes explicitly rather than detecting them automatically.
@param array|bool|float|int|string> $attributes Resource attributes +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\manual_detector(" + "$" + "{" + "1:attributes" + "}" + ")"), + boost: 10 + }, { + label: "map_entry", + type: "function", + detail: "flow\u002Ddsl\u002Dentries", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ map_entry(string $name, array $value, MapType $mapType, Metadata $metadata = null) : Entry +
+
+ @template TKey of array-key
@template TValue
@param ?array $value
@param MapType $mapType
@return Entry> +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\map_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:mapType" + "}" + ", " + "$" + "{" + "4:metadata" + "}" + ")"), + boost: 10 + }, { + label: "map_schema", + type: "function", + detail: "flow\u002Ddsl\u002Dschema", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ map_schema(string $name, MapType|Type $type, bool $nullable = false, Metadata $metadata = null) : MapDefinition +
+
+ @template TKey of array-key
@template TValue
@param MapType|Type> $type
@return MapDefinition +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\map_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:type" + "}" + ", " + "$" + "{" + "3:nullable" + "}" + ", " + "$" + "{" + "4:metadata" + "}" + ")"), + boost: 10 + }, { + label: "mask_columns", + type: "function", + detail: "flow\u002Ddsl\u002Dtransformers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ mask_columns(array $columns = [], string $mask = '******') : MaskColumns +
+
+ @param array $columns +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\mask_columns(" + "$" + "{" + "1:columns" + "}" + ", " + "$" + "{" + "2:mask" + "}" + ")"), + boost: 10 + }, { + label: "match_cases", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ match_cases(array $cases, mixed $default = null) : MatchCases +
+
+ @param array $cases +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\match_cases(" + "$" + "{" + "1:cases" + "}" + ", " + "$" + "{" + "2:default" + "}" + ")"), + boost: 10 + }, { + label: "match_condition", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ match_condition(mixed $condition, mixed $then) : MatchCondition +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\match_condition(" + "$" + "{" + "1:condition" + "}" + ", " + "$" + "{" + "2:then" + "}" + ")"), + boost: 10 + }, { + label: "max", + type: "function", + detail: "flow\u002Ddsl\u002Daggregating\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ max(EntryReference|string $ref) : Max +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\max(" + "$" + "{" + "1:ref" + "}" + ")"), + boost: 10 + }, { + label: "meilisearch_hits_to_rows", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ meilisearch_hits_to_rows() : HitsIntoRowsTransformer +
+
+ Transforms Meilisearch results into clear Flow Rows. +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Meilisearch\\meilisearch_hits_to_rows()"), + boost: 10 + }, { + label: "memory_context_storage", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ memory_context_storage(Context $context = null) : MemoryContextStorage +
+
+ Create a MemoryContextStorage.
In-memory context storage for storing and retrieving the current context.
A single instance should be shared across all providers within a request lifecycle.
@param null|Context $context Optional initial context +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\memory_context_storage(" + "$" + "{" + "1:context" + "}" + ")"), + boost: 10 + }, { + label: "memory_filesystem", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ memory_filesystem() : MemoryFilesystem +
+
+ Create a new memory filesystem and writes data to it in memory. +
+ ` + return div + }, + apply: snippet("\\Flow\\Filesystem\\DSL\\memory_filesystem()"), + boost: 10 + }, { + label: "memory_log_exporter", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ memory_log_exporter() : MemoryLogExporter +
+
+ Create a MemoryLogExporter.
Log exporter that stores data in memory.
Provides direct getter access to exported log entries.
Useful for testing and inspection without serialization. +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\memory_log_exporter()"), + boost: 10 + }, { + label: "memory_log_processor", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ memory_log_processor(LogExporter $exporter) : MemoryLogProcessor +
+
+ Create a MemoryLogProcessor.
Log processor that stores log records in memory and exports via configured exporter.
Useful for testing.
@param LogExporter $exporter The exporter to send logs to +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\memory_log_processor(" + "$" + "{" + "1:exporter" + "}" + ")"), + boost: 10 + }, { + label: "memory_metric_exporter", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ memory_metric_exporter() : MemoryMetricExporter +
+
+ Create a MemoryMetricExporter.
Metric exporter that stores data in memory.
Provides direct getter access to exported metrics.
Useful for testing and inspection without serialization. +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\memory_metric_exporter()"), + boost: 10 + }, { + label: "memory_metric_processor", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ memory_metric_processor(MetricExporter $exporter) : MemoryMetricProcessor +
+
+ Create a MemoryMetricProcessor.
Metric processor that stores metrics in memory and exports via configured exporter.
Useful for testing.
@param MetricExporter $exporter The exporter to send metrics to +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\memory_metric_processor(" + "$" + "{" + "1:exporter" + "}" + ")"), + boost: 10 + }, { + label: "memory_span_exporter", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ memory_span_exporter() : MemorySpanExporter +
+
+ Create a MemorySpanExporter.
Span exporter that stores data in memory.
Provides direct getter access to exported spans.
Useful for testing and inspection without serialization. +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\memory_span_exporter()"), + boost: 10 + }, { + label: "memory_span_processor", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ memory_span_processor(SpanExporter $exporter) : MemorySpanProcessor +
+
+ Create a MemorySpanProcessor.
Span processor that stores spans in memory and exports via configured exporter.
Useful for testing.
@param SpanExporter $exporter The exporter to send spans to +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\memory_span_processor(" + "$" + "{" + "1:exporter" + "}" + ")"), + boost: 10 + }, { + label: "merge", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ merge(string $table, string $alias = null) : MergeUsingStep +
+
+ Create a new MERGE query builder.
@param string $table Target table name
@param null|string $alias Optional table alias +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\merge(" + "$" + "{" + "1:table" + "}" + ", " + "$" + "{" + "2:alias" + "}" + ")"), + boost: 10 + }, { + label: "meter_provider", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ meter_provider(MetricProcessor $processor, ClockInterface $clock, AggregationTemporality $temporality = Flow\\Telemetry\\Meter\\AggregationTemporality::..., ExemplarFilter $exemplarFilter = Flow\\Telemetry\\Meter\\Exemplar\\TraceBasedExemplarFilter::..., MetricLimits $limits = Flow\\Telemetry\\Meter\\MetricLimits::...) : MeterProvider +
+
+ Create a MeterProvider.
Creates a provider that uses a MetricProcessor for processing metrics.
For void/disabled metrics, pass void_processor().
For memory-based testing, pass memory_processor() with exporters.
@param MetricProcessor $processor The processor for metrics
@param ClockInterface $clock The clock for timestamps
@param AggregationTemporality $temporality Aggregation temporality for metrics
@param ExemplarFilter $exemplarFilter Filter for exemplar sampling (default: TraceBasedExemplarFilter)
@param MetricLimits $limits Cardinality limits for metric instruments +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\meter_provider(" + "$" + "{" + "1:processor" + "}" + ", " + "$" + "{" + "2:clock" + "}" + ", " + "$" + "{" + "3:temporality" + "}" + ", " + "$" + "{" + "4:exemplarFilter" + "}" + ", " + "$" + "{" + "5:limits" + "}" + ")"), + boost: 10 + }, { + label: "metric_limits", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ metric_limits(int $cardinalityLimit = 2000) : MetricLimits +
+
+ Create MetricLimits configuration.
MetricLimits controls the maximum cardinality (unique attribute combinations)
per metric instrument, preventing memory exhaustion from high-cardinality attributes.
When the cardinality limit is exceeded, new attribute combinations are aggregated
into an overflow data point with \`otel.metric.overflow: true\` attribute.
Note: Unlike spans and logs, metrics are EXEMPT from attribute count and value
length limits per the OpenTelemetry specification. Only cardinality is limited.
@param int $cardinalityLimit Maximum number of unique attribute combinations per instrument +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\metric_limits(" + "$" + "{" + "1:cardinalityLimit" + "}" + ")"), + boost: 10 + }, { + label: "min", + type: "function", + detail: "flow\u002Ddsl\u002Daggregating\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ min(EntryReference|string $ref) : Min +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\min(" + "$" + "{" + "1:ref" + "}" + ")"), + boost: 10 + }, { + label: "mysql_insert_options", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ mysql_insert_options(bool $skip_conflicts = null, bool $upsert = null, array $update_columns = []) : MySQLInsertOptions +
+
+ @param array $update_columns +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\mysql_insert_options(" + "$" + "{" + "1:skip_conflicts" + "}" + ", " + "$" + "{" + "2:upsert" + "}" + ", " + "$" + "{" + "3:update_columns" + "}" + ")"), + boost: 10 + }, { + label: "native_local_filesystem", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ native_local_filesystem() : NativeLocalFilesystem +
+ ` + return div + }, + apply: snippet("\\Flow\\Filesystem\\DSL\\native_local_filesystem()"), + boost: 10 + }, { + label: "neq", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ neq(Expression $left, Expression $right) : Comparison +
+
+ Create a not-equal comparison (column != value). +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\neq(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:right" + "}" + ")"), + boost: 10 + }, { + label: "not", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ not(ScalarFunction $value) : Not +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\not(" + "$" + "{" + "1:value" + "}" + ")"), + boost: 10 + }, { + label: "not_regex_imatch", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ not_regex_imatch(Expression $expr, Expression $pattern) : OperatorCondition +
+
+ Create a POSIX regex not match condition (!~*).
Case-insensitive.
Example: not_regex_imatch(col(\'email\'), literal_string(\'.*@spam\\\\.com\'))
Produces: email !~* \'.*@spam\\.com\' +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\not_regex_imatch(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:pattern" + "}" + ")"), + boost: 10 + }, { + label: "not_regex_match", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ not_regex_match(Expression $expr, Expression $pattern) : OperatorCondition +
+
+ Create a POSIX regex not match condition (!~).
Case-sensitive.
Example: not_regex_match(col(\'email\'), literal_string(\'.*@spam\\\\.com\'))
Produces: email !~ \'.*@spam\\.com\' +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\not_regex_match(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:pattern" + "}" + ")"), + boost: 10 + }, { + label: "now", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ now(DateTimeZone|ScalarFunction $time_zone = DateTimeZone::...) : Now +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\now(" + "$" + "{" + "1:time_zone" + "}" + ")"), + boost: 10 + }, { + label: "nullif", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ nullif(Expression $expr1, Expression $expr2) : NullIf +
+
+ Create a NULLIF expression. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\nullif(" + "$" + "{" + "1:expr1" + "}" + ", " + "$" + "{" + "2:expr2" + "}" + ")"), + boost: 10 + }, { + label: "null_entry", + type: "function", + detail: "flow\u002Ddsl\u002Dentries", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ null_entry(string $name, Metadata $metadata = null) : Entry +
+
+ This functions is an alias for creating string entry from null.
The main difference between using this function an simply str_entry with second argument null
is that this function will also keep a note in the metadata that type might not be final.
For example when we need to guess column type from rows because schema was not provided,
and given column in the first row is null, it might still change once we get to the second row.
That metadata is used to determine if string_entry was created from null or not.
By design flow assumes when guessing column type that null would be a string (the most flexible type).
@return Entry +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\null_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:metadata" + "}" + ")"), + boost: 10 + }, { + label: "null_schema", + type: "function", + detail: "flow\u002Ddsl\u002Dschema", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ null_schema(string $name, Metadata $metadata = null) : StringDefinition +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\null_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:metadata" + "}" + ")"), + boost: 10 + }, { + label: "number_format", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ number_format(ScalarFunction|int|float $value, ScalarFunction|int $decimals = 2, ScalarFunction|string $decimal_separator = '.', ScalarFunction|string $thousands_separator = ',') : NumberFormat +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\number_format(" + "$" + "{" + "1:value" + "}" + ", " + "$" + "{" + "2:decimals" + "}" + ", " + "$" + "{" + "3:decimal_separator" + "}" + ", " + "$" + "{" + "4:thousands_separator" + "}" + ")"), + boost: 10 + }, { + label: "on_conflict_nothing", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ on_conflict_nothing(ConflictTarget $target = null) : OnConflictClause +
+
+ Create an ON CONFLICT DO NOTHING clause. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\on_conflict_nothing(" + "$" + "{" + "1:target" + "}" + ")"), + boost: 10 + }, { + label: "on_conflict_update", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ on_conflict_update(ConflictTarget $target, array $updates) : OnConflictClause +
+
+ Create an ON CONFLICT DO UPDATE clause.
@param ConflictTarget $target Conflict target (columns or constraint)
@param array $updates Column updates +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\on_conflict_update(" + "$" + "{" + "1:target" + "}" + ", " + "$" + "{" + "2:updates" + "}" + ")"), + boost: 10 + }, { + label: "optional", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ optional(ScalarFunction $function) : Optional +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\optional(" + "$" + "{" + "1:function" + "}" + ")"), + boost: 10 + }, { + label: "order_by", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ order_by(Expression $expr, SortDirection $direction = Flow\\PostgreSql\\QueryBuilder\\Clause\\SortDirection::..., NullsPosition $nulls = Flow\\PostgreSql\\QueryBuilder\\Clause\\NullsPosition::...) : OrderBy +
+
+ Create an ORDER BY item. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\order_by(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:direction" + "}" + ", " + "$" + "{" + "3:nulls" + "}" + ")"), + boost: 10 + }, { + label: "os_detector", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ os_detector() : OsDetector +
+
+ Create an OsDetector.
Detects operating system information including os.type, os.name, os.version,
and os.description using PHP\'s php_uname() function. +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\os_detector()"), + boost: 10 + }, { + label: "otlp_curl_options", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ otlp_curl_options() : CurlTransportOptions +
+
+ Create curl transport options for OTLP.
Returns a CurlTransportOptions builder for configuring curl transport settings
using a fluent interface.
Example usage:
\`\`\`php
$options = otlp_curl_options()
->withTimeout(60)
->withConnectTimeout(15)
->withHeader(\'Authorization\', \'Bearer token\')
->withCompression()
->withSslVerification(verifyPeer: true);
$transport = otlp_curl_transport($endpoint, $serializer, $options);
\`\`\` +
+ ` + return div + }, + apply: snippet("\\Flow\\Bridge\\Telemetry\\OTLP\\DSL\\otlp_curl_options()"), + boost: 10 + }, { + label: "otlp_curl_transport", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ otlp_curl_transport(string $endpoint, Serializer $serializer, CurlTransportOptions $options = Flow\\Bridge\\Telemetry\\OTLP\\Transport\\CurlTransportOptions::...) : CurlTransport +
+
+ Create an async curl transport for OTLP endpoints.
Creates a CurlTransport that uses curl_multi for non-blocking I/O.
Unlike HttpTransport (PSR-18), this transport queues requests and executes
them asynchronously. Completed requests are processed on subsequent send()
calls or on shutdown().
Requires: ext-curl PHP extension
Example usage:
\`\`\`php
// JSON over HTTP (async) with default options
$transport = otlp_curl_transport(
endpoint: \'http://localhost:4318\',
serializer: otlp_json_serializer(),
);
// Protobuf over HTTP (async) with custom options
$transport = otlp_curl_transport(
endpoint: \'http://localhost:4318\',
serializer: otlp_protobuf_serializer(),
options: otlp_curl_options()
->withTimeout(60)
->withHeader(\'Authorization\', \'Bearer token\')
->withCompression(),
);
\`\`\`
@param string $endpoint OTLP endpoint URL (e.g., \'http://localhost:4318\')
@param Serializer $serializer Serializer for encoding telemetry data (JSON or Protobuf)
@param CurlTransportOptions $options Transport configuration options +
+ ` + return div + }, + apply: snippet("\\Flow\\Bridge\\Telemetry\\OTLP\\DSL\\otlp_curl_transport(" + "$" + "{" + "1:endpoint" + "}" + ", " + "$" + "{" + "2:serializer" + "}" + ", " + "$" + "{" + "3:options" + "}" + ")"), + boost: 10 + }, { + label: "otlp_grpc_transport", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ otlp_grpc_transport(string $endpoint, ProtobufSerializer $serializer, array $headers = [], bool $insecure = true) : GrpcTransport +
+
+ Create a gRPC transport for OTLP endpoints.
Creates a GrpcTransport configured to send telemetry data to an OTLP-compatible
endpoint using gRPC protocol with Protobuf serialization.
Requires:
- ext-grpc PHP extension
- google/protobuf package
- open-telemetry/gen-otlp-protobuf package
Example usage:
\`\`\`php
$transport = otlp_grpc_transport(
endpoint: \'localhost:4317\',
serializer: otlp_protobuf_serializer(),
);
\`\`\`
@param string $endpoint gRPC endpoint (e.g., \'localhost:4317\')
@param ProtobufSerializer $serializer Protobuf serializer for encoding telemetry data
@param array $headers Additional headers (metadata) to include in requests
@param bool $insecure Whether to use insecure channel credentials (default true for local dev) +
+ ` + return div + }, + apply: snippet("\\Flow\\Bridge\\Telemetry\\OTLP\\DSL\\otlp_grpc_transport(" + "$" + "{" + "1:endpoint" + "}" + ", " + "$" + "{" + "2:serializer" + "}" + ", " + "$" + "{" + "3:headers" + "}" + ", " + "$" + "{" + "4:insecure" + "}" + ")"), + boost: 10 + }, { + label: "otlp_http_transport", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ otlp_http_transport(ClientInterface $client, RequestFactoryInterface $requestFactory, StreamFactoryInterface $streamFactory, string $endpoint, Serializer $serializer, array $headers = []) : HttpTransport +
+
+ Create an HTTP transport for OTLP endpoints.
Creates an HttpTransport configured to send telemetry data to an OTLP-compatible
endpoint using PSR-18 HTTP client. Supports both JSON and Protobuf formats.
Example usage:
\`\`\`php
// JSON over HTTP
$transport = otlp_http_transport(
client: $client,
requestFactory: $psr17Factory,
streamFactory: $psr17Factory,
endpoint: \'http://localhost:4318\',
serializer: otlp_json_serializer(),
);
// Protobuf over HTTP
$transport = otlp_http_transport(
client: $client,
requestFactory: $psr17Factory,
streamFactory: $psr17Factory,
endpoint: \'http://localhost:4318\',
serializer: otlp_protobuf_serializer(),
);
\`\`\`
@param ClientInterface $client PSR-18 HTTP client
@param RequestFactoryInterface $requestFactory PSR-17 request factory
@param StreamFactoryInterface $streamFactory PSR-17 stream factory
@param string $endpoint OTLP endpoint URL (e.g., \'http://localhost:4318\')
@param Serializer $serializer Serializer for encoding telemetry data (JSON or Protobuf)
@param array $headers Additional headers to include in requests +
+ ` + return div + }, + apply: snippet("\\Flow\\Bridge\\Telemetry\\OTLP\\DSL\\otlp_http_transport(" + "$" + "{" + "1:client" + "}" + ", " + "$" + "{" + "2:requestFactory" + "}" + ", " + "$" + "{" + "3:streamFactory" + "}" + ", " + "$" + "{" + "4:endpoint" + "}" + ", " + "$" + "{" + "5:serializer" + "}" + ", " + "$" + "{" + "6:headers" + "}" + ")"), + boost: 10 + }, { + label: "otlp_json_serializer", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ otlp_json_serializer() : JsonSerializer +
+
+ Create a JSON serializer for OTLP.
Returns a JsonSerializer that converts telemetry data to OTLP JSON wire format.
Use this with HttpTransport for JSON over HTTP.
Example usage:
\`\`\`php
$serializer = otlp_json_serializer();
$transport = otlp_http_transport($client, $reqFactory, $streamFactory, $endpoint, $serializer);
\`\`\` +
+ ` + return div + }, + apply: snippet("\\Flow\\Bridge\\Telemetry\\OTLP\\DSL\\otlp_json_serializer()"), + boost: 10 + }, { + label: "otlp_logger_provider", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ otlp_logger_provider(LogProcessor $processor, ClockInterface $clock, ContextStorage $contextStorage = Flow\\Telemetry\\Context\\MemoryContextStorage::...) : LoggerProvider +
+
+ Create a logger provider configured for OTLP export.
Example usage:
\`\`\`php
$processor = batching_log_processor(otlp_log_exporter($transport));
$provider = otlp_logger_provider($processor, $clock);
$logger = $provider->logger($resource, \'my-service\', \'1.0.0\');
\`\`\`
@param LogProcessor $processor The processor for handling log records
@param ClockInterface $clock The clock for timestamps
@param ContextStorage $contextStorage The context storage for propagating context +
+ ` + return div + }, + apply: snippet("\\Flow\\Bridge\\Telemetry\\OTLP\\DSL\\otlp_logger_provider(" + "$" + "{" + "1:processor" + "}" + ", " + "$" + "{" + "2:clock" + "}" + ", " + "$" + "{" + "3:contextStorage" + "}" + ")"), + boost: 10 + }, { + label: "otlp_log_exporter", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ otlp_log_exporter(Transport $transport) : OTLPLogExporter +
+
+ Create an OTLP log exporter.
Example usage:
\`\`\`php
$exporter = otlp_log_exporter($transport);
$processor = batching_log_processor($exporter);
\`\`\`
@param Transport $transport The transport for sending log data +
+ ` + return div + }, + apply: snippet("\\Flow\\Bridge\\Telemetry\\OTLP\\DSL\\otlp_log_exporter(" + "$" + "{" + "1:transport" + "}" + ")"), + boost: 10 + }, { + label: "otlp_meter_provider", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ otlp_meter_provider(MetricProcessor $processor, ClockInterface $clock, AggregationTemporality $temporality = Flow\\Telemetry\\Meter\\AggregationTemporality::...) : MeterProvider +
+
+ Create a meter provider configured for OTLP export.
Example usage:
\`\`\`php
$processor = batching_metric_processor(otlp_metric_exporter($transport));
$provider = otlp_meter_provider($processor, $clock);
$meter = $provider->meter($resource, \'my-service\', \'1.0.0\');
\`\`\`
@param MetricProcessor $processor The processor for handling metrics
@param ClockInterface $clock The clock for timestamps
@param AggregationTemporality $temporality The aggregation temporality for metrics +
+ ` + return div + }, + apply: snippet("\\Flow\\Bridge\\Telemetry\\OTLP\\DSL\\otlp_meter_provider(" + "$" + "{" + "1:processor" + "}" + ", " + "$" + "{" + "2:clock" + "}" + ", " + "$" + "{" + "3:temporality" + "}" + ")"), + boost: 10 + }, { + label: "otlp_metric_exporter", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ otlp_metric_exporter(Transport $transport) : OTLPMetricExporter +
+
+ Create an OTLP metric exporter.
Example usage:
\`\`\`php
$exporter = otlp_metric_exporter($transport);
$processor = batching_metric_processor($exporter);
\`\`\`
@param Transport $transport The transport for sending metric data +
+ ` + return div + }, + apply: snippet("\\Flow\\Bridge\\Telemetry\\OTLP\\DSL\\otlp_metric_exporter(" + "$" + "{" + "1:transport" + "}" + ")"), + boost: 10 + }, { + label: "otlp_protobuf_serializer", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ otlp_protobuf_serializer() : ProtobufSerializer +
+
+ Create a Protobuf serializer for OTLP.
Returns a ProtobufSerializer that converts telemetry data to OTLP Protobuf binary format.
Use this with HttpTransport for Protobuf over HTTP, or with GrpcTransport.
Requires:
- google/protobuf package
- open-telemetry/gen-otlp-protobuf package
Example usage:
\`\`\`php
$serializer = otlp_protobuf_serializer();
$transport = otlp_http_transport($client, $reqFactory, $streamFactory, $endpoint, $serializer);
\`\`\` +
+ ` + return div + }, + apply: snippet("\\Flow\\Bridge\\Telemetry\\OTLP\\DSL\\otlp_protobuf_serializer()"), + boost: 10 + }, { + label: "otlp_span_exporter", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ otlp_span_exporter(Transport $transport) : OTLPSpanExporter +
+
+ Create an OTLP span exporter.
Example usage:
\`\`\`php
$exporter = otlp_span_exporter($transport);
$processor = batching_span_processor($exporter);
\`\`\`
@param Transport $transport The transport for sending span data +
+ ` + return div + }, + apply: snippet("\\Flow\\Bridge\\Telemetry\\OTLP\\DSL\\otlp_span_exporter(" + "$" + "{" + "1:transport" + "}" + ")"), + boost: 10 + }, { + label: "otlp_tracer_provider", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ otlp_tracer_provider(SpanProcessor $processor, ClockInterface $clock, Sampler $sampler = Flow\\Telemetry\\Tracer\\Sampler\\AlwaysOnSampler::..., ContextStorage $contextStorage = Flow\\Telemetry\\Context\\MemoryContextStorage::...) : TracerProvider +
+
+ Create a tracer provider configured for OTLP export.
Example usage:
\`\`\`php
$processor = batching_span_processor(otlp_span_exporter($transport));
$provider = otlp_tracer_provider($processor, $clock);
$tracer = $provider->tracer($resource, \'my-service\', \'1.0.0\');
\`\`\`
@param SpanProcessor $processor The processor for handling spans
@param ClockInterface $clock The clock for timestamps
@param Sampler $sampler The sampler for deciding whether to record spans
@param ContextStorage $contextStorage The context storage for propagating trace context +
+ ` + return div + }, + apply: snippet("\\Flow\\Bridge\\Telemetry\\OTLP\\DSL\\otlp_tracer_provider(" + "$" + "{" + "1:processor" + "}" + ", " + "$" + "{" + "2:clock" + "}" + ", " + "$" + "{" + "3:sampler" + "}" + ", " + "$" + "{" + "4:contextStorage" + "}" + ")"), + boost: 10 + }, { + label: "overwrite", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ overwrite() : SaveMode +
+
+ Alias for save_mode_overwrite(). +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\overwrite()"), + boost: 10 + }, { + label: "pagination_key_asc", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pagination_key_asc(string $column, ParameterType|Type|string|int $type = Doctrine\\DBAL\\ParameterType::...) : Key +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\pagination_key_asc(" + "$" + "{" + "1:column" + "}" + ", " + "$" + "{" + "2:type" + "}" + ")"), + boost: 10 + }, { + label: "pagination_key_desc", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pagination_key_desc(string $column, ParameterType|Type|string|int $type = Doctrine\\DBAL\\ParameterType::...) : Key +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\pagination_key_desc(" + "$" + "{" + "1:column" + "}" + ", " + "$" + "{" + "2:type" + "}" + ")"), + boost: 10 + }, { + label: "pagination_key_set", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pagination_key_set(Key $keys) : KeySet +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\pagination_key_set(" + "$" + "{" + "1:keys" + "}" + ")"), + boost: 10 + }, { + label: "param", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ param(int $position) : Parameter +
+
+ Create a positional parameter ($1, $2, etc.). +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\param(" + "$" + "{" + "1:position" + "}" + ")"), + boost: 10 + }, { + label: "partition", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ partition(string $name, string $value) : Partition +
+ ` + return div + }, + apply: snippet("\\Flow\\Filesystem\\DSL\\partition(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ")"), + boost: 10 + }, { + label: "partitions", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ partitions(Partition $partition) : Partitions +
+ ` + return div + }, + apply: snippet("\\Flow\\Filesystem\\DSL\\partitions(" + "$" + "{" + "1:partition" + "}" + ")"), + boost: 10 + }, { + label: "pass_through_log_processor", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pass_through_log_processor(LogExporter $exporter) : PassThroughLogProcessor +
+
+ Create a PassThroughLogProcessor.
Exports each log record immediately when processed.
Useful for debugging where immediate visibility is more important than performance.
@param LogExporter $exporter The exporter to send logs to +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\pass_through_log_processor(" + "$" + "{" + "1:exporter" + "}" + ")"), + boost: 10 + }, { + label: "pass_through_metric_processor", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pass_through_metric_processor(MetricExporter $exporter) : PassThroughMetricProcessor +
+
+ Create a PassThroughMetricProcessor.
Exports each metric immediately when processed.
Useful for debugging where immediate visibility is more important than performance.
@param MetricExporter $exporter The exporter to send metrics to +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\pass_through_metric_processor(" + "$" + "{" + "1:exporter" + "}" + ")"), + boost: 10 + }, { + label: "pass_through_span_processor", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pass_through_span_processor(SpanExporter $exporter) : PassThroughSpanProcessor +
+
+ Create a PassThroughSpanProcessor.
Exports each span immediately when it ends.
Useful for debugging where immediate visibility is more important than performance.
@param SpanExporter $exporter The exporter to send spans to +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\pass_through_span_processor(" + "$" + "{" + "1:exporter" + "}" + ")"), + boost: 10 + }, { + label: "path", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ path(string $path, Options|array $options = []) : Path +
+
+ Path supports glob patterns.
Examples:
- path(\'*.csv\') - any csv file in current directory
- path(\'/** / *.csv\') - any csv file in any subdirectory (remove empty spaces)
- path(\'/dir/partition=* /*.parquet\') - any parquet file in given partition directory.
Glob pattern is also supported by remote filesystems like Azure
- path(\'azure-blob://directory/*.csv\') - any csv file in given directory
@param array|Path\\Options $options +
+ ` + return div + }, + apply: snippet("\\Flow\\Filesystem\\DSL\\path(" + "$" + "{" + "1:path" + "}" + ", " + "$" + "{" + "2:options" + "}" + ")"), + boost: 10 + }, { + label: "path_memory", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ path_memory(string $path = '', array $options = null) : Path +
+
+ Create a path to php memory stream.
@param string $path - default = \'\' - path is used as an identifier in memory filesystem, so we can write multiple files to memory at once, each path is a new handle
@param null|array{\'stream\': \'memory\'|\'temp\'} $options - when nothing is provided, \'temp\' stream is used by default
@return Path +
+ ` + return div + }, + apply: snippet("\\Flow\\Filesystem\\DSL\\path_memory(" + "$" + "{" + "1:path" + "}" + ", " + "$" + "{" + "2:options" + "}" + ")"), + boost: 10 + }, { + label: "path_real", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ path_real(string $path, array $options = []) : Path +
+
+ Resolve real path from given path.
@param array $options +
+ ` + return div + }, + apply: snippet("\\Flow\\Filesystem\\DSL\\path_real(" + "$" + "{" + "1:path" + "}" + ", " + "$" + "{" + "2:options" + "}" + ")"), + boost: 10 + }, { + label: "path_stdout", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ path_stdout(array $options = null) : Path +
+
+ Create a path to php stdout stream.
@param null|array{\'stream\': \'output\'|\'stderr\'|\'stdout\'} $options
@return Path +
+ ` + return div + }, + apply: snippet("\\Flow\\Filesystem\\DSL\\path_stdout(" + "$" + "{" + "1:options" + "}" + ")"), + boost: 10 + }, { + label: "pgsql_client", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_client(ConnectionParameters $params, ValueConverters $valueConverters = null, RowMapper $mapper = null) : Client +
+
+ Create a PostgreSQL client using ext-pgsql.
The client connects immediately and is ready to execute queries.
For object mapping, provide a RowMapper (use pgsql_mapper() for the default).
@param Client\\ConnectionParameters $params Connection parameters
@param null|ValueConverters $valueConverters Custom type converters (optional)
@param null|Client\\RowMapper $mapper Row mapper for object hydration (optional)
@throws ConnectionException If connection fails
@example
// Basic client
$client = pgsql_client(pgsql_connection(\'host=localhost dbname=mydb\'));
// With object mapping
$client = pgsql_client(
pgsql_connection(\'host=localhost dbname=mydb\'),
mapper: pgsql_mapper(),
); +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_client(" + "$" + "{" + "1:params" + "}" + ", " + "$" + "{" + "2:valueConverters" + "}" + ", " + "$" + "{" + "3:mapper" + "}" + ")"), + boost: 10 + }, { + label: "pgsql_connection", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_connection(string $connectionString) : ConnectionParameters +
+
+ Create connection parameters from a connection string.
Accepts libpq-style connection strings:
- Key-value format: \"host=localhost port=5432 dbname=mydb user=myuser password=secret\"
- URI format: \"postgresql://user:password@localhost:5432/dbname\"
@example
$params = pgsql_connection(\'host=localhost dbname=mydb\');
$params = pgsql_connection(\'postgresql://user:pass@localhost/mydb\'); +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_connection(" + "$" + "{" + "1:connectionString" + "}" + ")"), + boost: 10 + }, { + label: "pgsql_connection_dsn", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_connection_dsn(string $dsn) : ConnectionParameters +
+
+ Create connection parameters from a DSN string.
Parses standard PostgreSQL DSN format commonly used in environment variables
(e.g., DATABASE_URL). Supports postgres://, postgresql://, and pgsql:// schemes.
@param string $dsn DSN string in format: postgres://user:password@host:port/database?options
@throws Client\\DsnParserException If the DSN cannot be parsed
@example
$params = pgsql_connection_dsn(\'postgres://myuser:secret@localhost:5432/mydb\');
$params = pgsql_connection_dsn(\'postgresql://user:pass@db.example.com/app?sslmode=require\');
$params = pgsql_connection_dsn(\'pgsql://user:pass@localhost/mydb\'); // Symfony/Doctrine format
$params = pgsql_connection_dsn(getenv(\'DATABASE_URL\')); +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_connection_dsn(" + "$" + "{" + "1:dsn" + "}" + ")"), + boost: 10 + }, { + label: "pgsql_connection_params", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_connection_params(string $database, string $host = 'localhost', int $port = 5432, string $user = null, string $password = null, array $options = []) : ConnectionParameters +
+
+ Create connection parameters from individual values.
Allows specifying connection parameters individually for better type safety
and IDE support.
@param string $database Database name (required)
@param string $host Hostname (default: localhost)
@param int $port Port number (default: 5432)
@param null|string $user Username (optional)
@param null|string $password Password (optional)
@param array $options Additional libpq options
@example
$params = pgsql_connection_params(
database: \'mydb\',
host: \'localhost\',
user: \'myuser\',
password: \'secret\',
); +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_connection_params(" + "$" + "{" + "1:database" + "}" + ", " + "$" + "{" + "2:host" + "}" + ", " + "$" + "{" + "3:port" + "}" + ", " + "$" + "{" + "4:user" + "}" + ", " + "$" + "{" + "5:password" + "}" + ", " + "$" + "{" + "6:options" + "}" + ")"), + boost: 10 + }, { + label: "pgsql_mapper", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_mapper() : ConstructorMapper +
+
+ Create a default constructor-based row mapper.
Maps database rows directly to constructor parameters.
Column names must match parameter names exactly (1:1).
Use SQL aliases if column names differ from parameter names.
@example
// DTO where column names match parameter names
readonly class User {
public function __construct(
public int $id,
public string $name,
public string $email,
) {}
}
// Usage
$client = pgsql_client(pgsql_connection(\'...\'), mapper: pgsql_mapper());
// For snake_case columns, use SQL aliases
$user = $client->fetchInto(
User::class,
\'SELECT id, user_name AS name, user_email AS email FROM users WHERE id = $1\',
[1]
); +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_mapper()"), + boost: 10 + }, { + label: "pgsql_type_bigint", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_bigint() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_bigint()"), + boost: 10 + }, { + label: "pgsql_type_bit", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_bit() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_bit()"), + boost: 10 + }, { + label: "pgsql_type_bool", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_bool() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_bool()"), + boost: 10 + }, { + label: "pgsql_type_boolean", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_boolean() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_boolean()"), + boost: 10 + }, { + label: "pgsql_type_bool_array", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_bool_array() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_bool_array()"), + boost: 10 + }, { + label: "pgsql_type_bpchar", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_bpchar() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_bpchar()"), + boost: 10 + }, { + label: "pgsql_type_bytea", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_bytea() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_bytea()"), + boost: 10 + }, { + label: "pgsql_type_char", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_char() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_char()"), + boost: 10 + }, { + label: "pgsql_type_cidr", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_cidr() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_cidr()"), + boost: 10 + }, { + label: "pgsql_type_date", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_date() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_date()"), + boost: 10 + }, { + label: "pgsql_type_double", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_double() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_double()"), + boost: 10 + }, { + label: "pgsql_type_float4", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_float4() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_float4()"), + boost: 10 + }, { + label: "pgsql_type_float4_array", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_float4_array() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_float4_array()"), + boost: 10 + }, { + label: "pgsql_type_float8", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_float8() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_float8()"), + boost: 10 + }, { + label: "pgsql_type_float8_array", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_float8_array() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_float8_array()"), + boost: 10 + }, { + label: "pgsql_type_inet", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_inet() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_inet()"), + boost: 10 + }, { + label: "pgsql_type_int2", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_int2() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_int2()"), + boost: 10 + }, { + label: "pgsql_type_int2_array", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_int2_array() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_int2_array()"), + boost: 10 + }, { + label: "pgsql_type_int4", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_int4() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_int4()"), + boost: 10 + }, { + label: "pgsql_type_int4_array", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_int4_array() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_int4_array()"), + boost: 10 + }, { + label: "pgsql_type_int8", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_int8() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_int8()"), + boost: 10 + }, { + label: "pgsql_type_int8_array", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_int8_array() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_int8_array()"), + boost: 10 + }, { + label: "pgsql_type_integer", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_integer() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_integer()"), + boost: 10 + }, { + label: "pgsql_type_interval", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_interval() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_interval()"), + boost: 10 + }, { + label: "pgsql_type_json", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_json() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_json()"), + boost: 10 + }, { + label: "pgsql_type_jsonb", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_jsonb() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_jsonb()"), + boost: 10 + }, { + label: "pgsql_type_jsonb_array", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_jsonb_array() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_jsonb_array()"), + boost: 10 + }, { + label: "pgsql_type_json_array", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_json_array() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_json_array()"), + boost: 10 + }, { + label: "pgsql_type_macaddr", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_macaddr() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_macaddr()"), + boost: 10 + }, { + label: "pgsql_type_macaddr8", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_macaddr8() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_macaddr8()"), + boost: 10 + }, { + label: "pgsql_type_money", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_money() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_money()"), + boost: 10 + }, { + label: "pgsql_type_numeric", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_numeric() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_numeric()"), + boost: 10 + }, { + label: "pgsql_type_oid", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_oid() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_oid()"), + boost: 10 + }, { + label: "pgsql_type_real", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_real() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_real()"), + boost: 10 + }, { + label: "pgsql_type_smallint", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_smallint() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_smallint()"), + boost: 10 + }, { + label: "pgsql_type_text", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_text() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_text()"), + boost: 10 + }, { + label: "pgsql_type_text_array", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_text_array() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_text_array()"), + boost: 10 + }, { + label: "pgsql_type_time", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_time() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_time()"), + boost: 10 + }, { + label: "pgsql_type_timestamp", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_timestamp() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_timestamp()"), + boost: 10 + }, { + label: "pgsql_type_timestamptz", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_timestamptz() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_timestamptz()"), + boost: 10 + }, { + label: "pgsql_type_timetz", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_timetz() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_timetz()"), + boost: 10 + }, { + label: "pgsql_type_uuid", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_uuid() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_uuid()"), + boost: 10 + }, { + label: "pgsql_type_uuid_array", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_uuid_array() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_uuid_array()"), + boost: 10 + }, { + label: "pgsql_type_varbit", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_varbit() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_varbit()"), + boost: 10 + }, { + label: "pgsql_type_varchar", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_varchar() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_varchar()"), + boost: 10 + }, { + label: "pgsql_type_varchar_array", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_varchar_array() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_varchar_array()"), + boost: 10 + }, { + label: "pgsql_type_xml", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pgsql_type_xml() : PostgreSqlType +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\pgsql_type_xml()"), + boost: 10 + }, { + label: "pie_chart", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ pie_chart(EntryReference $label, References $datasets) : PieChart +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\ChartJS\\pie_chart(" + "$" + "{" + "1:label" + "}" + ", " + "$" + "{" + "2:datasets" + "}" + ")"), + boost: 10 + }, { + label: "postgresql_insert_options", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ postgresql_insert_options(bool $skip_conflicts = null, string $constraint = null, array $conflict_columns = [], array $update_columns = []) : PostgreSQLInsertOptions +
+
+ @param array $conflict_columns
@param array $update_columns +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\postgresql_insert_options(" + "$" + "{" + "1:skip_conflicts" + "}" + ", " + "$" + "{" + "2:constraint" + "}" + ", " + "$" + "{" + "3:conflict_columns" + "}" + ", " + "$" + "{" + "4:update_columns" + "}" + ")"), + boost: 10 + }, { + label: "postgresql_telemetry_config", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ postgresql_telemetry_config(Telemetry $telemetry, ClockInterface $clock, PostgreSqlTelemetryOptions $options = null) : PostgreSqlTelemetryConfig +
+
+ Create telemetry configuration for PostgreSQL client.
Bundles telemetry instance, clock, and options needed to instrument a PostgreSQL client.
@param Telemetry $telemetry The telemetry instance
@param ClockInterface $clock Clock for timestamps
@param null|PostgreSqlTelemetryOptions $options Telemetry options (default: all enabled)
@example
$config = postgresql_telemetry_config(
telemetry(resource([\'service.name\' => \'my-app\'])),
new SystemClock(),
); +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\postgresql_telemetry_config(" + "$" + "{" + "1:telemetry" + "}" + ", " + "$" + "{" + "2:clock" + "}" + ", " + "$" + "{" + "3:options" + "}" + ")"), + boost: 10 + }, { + label: "postgresql_telemetry_options", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ postgresql_telemetry_options(bool $traceQueries = true, bool $traceTransactions = true, bool $collectMetrics = true, bool $logQueries = false, int $maxQueryLength = 1000, bool $includeParameters = false, int $maxParameters = 10, int $maxParameterLength = 100) : PostgreSqlTelemetryOptions +
+
+ Create telemetry options for PostgreSQL client instrumentation.
Controls which telemetry signals (traces, metrics, logs) are enabled
and how query information is captured.
@param bool $traceQueries Create spans for query execution (default: true)
@param bool $traceTransactions Create spans for transactions (default: true)
@param bool $collectMetrics Collect duration and row count metrics (default: true)
@param bool $logQueries Log executed queries (default: false)
@param null|int $maxQueryLength Maximum query text length in telemetry (default: 1000, null = unlimited)
@param bool $includeParameters Include query parameters in telemetry (default: false, security consideration)
@example
// Default options (traces and metrics enabled)
$options = postgresql_telemetry_options();
// Enable query logging
$options = postgresql_telemetry_options(logQueries: true);
// Disable all but metrics
$options = postgresql_telemetry_options(
traceQueries: false,
traceTransactions: false,
collectMetrics: true,
); +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\postgresql_telemetry_options(" + "$" + "{" + "1:traceQueries" + "}" + ", " + "$" + "{" + "2:traceTransactions" + "}" + ", " + "$" + "{" + "3:collectMetrics" + "}" + ", " + "$" + "{" + "4:logQueries" + "}" + ", " + "$" + "{" + "5:maxQueryLength" + "}" + ", " + "$" + "{" + "6:includeParameters" + "}" + ", " + "$" + "{" + "7:maxParameters" + "}" + ", " + "$" + "{" + "8:maxParameterLength" + "}" + ")"), + boost: 10 + }, { + label: "postgresql_update_options", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ postgresql_update_options(array $primary_key_columns = [], array $update_columns = []) : PostgreSQLUpdateOptions +
+
+ @param array $primary_key_columns
@param array $update_columns +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\postgresql_update_options(" + "$" + "{" + "1:primary_key_columns" + "}" + ", " + "$" + "{" + "2:update_columns" + "}" + ")"), + boost: 10 + }, { + label: "prepare_transaction", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ prepare_transaction(string $transactionId) : PreparedTransactionFinalStep +
+
+ Create a PREPARE TRANSACTION builder.
Example: prepare_transaction(\'my_transaction\')
Produces: PREPARE TRANSACTION \'my_transaction\' +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\prepare_transaction(" + "$" + "{" + "1:transactionId" + "}" + ")"), + boost: 10 + }, { + label: "primary_key", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ primary_key(string $columns) : PrimaryKeyConstraint +
+
+ Create a PRIMARY KEY constraint.
@param string ...$columns Columns that form the primary key +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\primary_key(" + "$" + "{" + "1:columns" + "}" + ")"), + boost: 10 + }, { + label: "print_rows", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ print_rows(Rows $rows, int|bool $truncate = false, Formatter $formatter = null) : string +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\print_rows(" + "$" + "{" + "1:rows" + "}" + ", " + "$" + "{" + "2:truncate" + "}" + ", " + "$" + "{" + "3:formatter" + "}" + ")"), + boost: 10 + }, { + label: "print_schema", + type: "function", + detail: "flow\u002Ddsl\u002Dschema", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ print_schema(Schema $schema, SchemaFormatter $formatter = null) : string +
+
+ @param Schema $schema
@deprecated Please use schema_to_ascii($schema) instead +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\print_schema(" + "$" + "{" + "1:schema" + "}" + ", " + "$" + "{" + "2:formatter" + "}" + ")"), + boost: 10 + }, { + label: "process_detector", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ process_detector() : ProcessDetector +
+
+ Create a ProcessDetector.
Detects process information including process.pid, process.executable.path,
process.runtime.name (PHP), process.runtime.version, process.command,
and process.owner (on POSIX systems). +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\process_detector()"), + boost: 10 + }, { + label: "propagation_context", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ propagation_context(SpanContext $spanContext = null, Baggage $baggage = null) : PropagationContext +
+
+ Create a PropagationContext.
Value object containing both trace context (SpanContext) and application
data (Baggage) that can be propagated across process boundaries.
@param null|SpanContext $spanContext Optional span context
@param null|Baggage $baggage Optional baggage +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\propagation_context(" + "$" + "{" + "1:spanContext" + "}" + ", " + "$" + "{" + "2:baggage" + "}" + ")"), + boost: 10 + }, { + label: "protocol", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ protocol(string $protocol) : Protocol +
+ ` + return div + }, + apply: snippet("\\Flow\\Filesystem\\DSL\\protocol(" + "$" + "{" + "1:protocol" + "}" + ")"), + boost: 10 + }, { + label: "psr7_request_carrier", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ psr7_request_carrier(ServerRequestInterface $request) : RequestCarrier +
+ ` + return div + }, + apply: snippet("\\Flow\\Bridge\\Psr7\\Telemetry\\DSL\\psr7_request_carrier(" + "$" + "{" + "1:request" + "}" + ")"), + boost: 10 + }, { + label: "psr7_response_carrier", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ psr7_response_carrier(ResponseInterface $response) : ResponseCarrier +
+ ` + return div + }, + apply: snippet("\\Flow\\Bridge\\Psr7\\Telemetry\\DSL\\psr7_response_carrier(" + "$" + "{" + "1:response" + "}" + ")"), + boost: 10 + }, { + label: "psr18_traceable_client", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ psr18_traceable_client(ClientInterface $client, Telemetry $telemetry) : PSR18TraceableClient +
+ ` + return div + }, + apply: snippet("\\Flow\\Bridge\\Psr18\\Telemetry\\DSL\\psr18_traceable_client(" + "$" + "{" + "1:client" + "}" + ", " + "$" + "{" + "2:telemetry" + "}" + ")"), + boost: 10 + }, { + label: "random_string", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ random_string(ScalarFunction|int $length, RandomValueGenerator $generator = Flow\\ETL\\NativePHPRandomValueGenerator::...) : RandomString +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\random_string(" + "$" + "{" + "1:length" + "}" + ", " + "$" + "{" + "2:generator" + "}" + ")"), + boost: 10 + }, { + label: "rank", + type: "function", + detail: "flow\u002Ddsl\u002Dwindow\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ rank() : Rank +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\rank()"), + boost: 10 + }, { + label: "raw_cond", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ raw_cond(string $sql) : RawCondition +
+
+ Create a raw SQL condition (use with caution).
SECURITY WARNING: This function accepts raw SQL without parameterization.
SQL injection is possible if used with untrusted user input.
Only use with trusted, validated input.
For user-provided values, use standard condition functions with param():
\`\`\`php
// UNSAFE - SQL injection possible:
raw_cond(\"status = \'\" . $userInput . \"\'\")
// SAFE - use typed conditions:
eq(col(\'status\'), param(1))
\`\`\` +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\raw_cond(" + "$" + "{" + "1:sql" + "}" + ")"), + boost: 10 + }, { + label: "raw_expr", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ raw_expr(string $sql) : RawExpression +
+
+ Create a raw SQL expression (use with caution).
SECURITY WARNING: This function accepts raw SQL without parameterization.
SQL injection is possible if used with untrusted user input.
Only use with trusted, validated input.
For user-provided values, use param() instead:
\`\`\`php
// UNSAFE - SQL injection possible:
raw_expr(\"custom_func(\'\" . $userInput . \"\')\")
// SAFE - use parameters:
func(\'custom_func\', param(1))
\`\`\` +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\raw_expr(" + "$" + "{" + "1:sql" + "}" + ")"), + boost: 10 + }, { + label: "reassign_owned", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ reassign_owned(string $roles) : ReassignOwnedToStep +
+
+ Create a REASSIGN OWNED builder.
Example: reassign_owned(\'old_role\')->to(\'new_role\')
Produces: REASSIGN OWNED BY old_role TO new_role
@param string ...$roles The roles whose owned objects should be reassigned
@return ReassignOwnedToStep Builder for reassign owned options +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\reassign_owned(" + "$" + "{" + "1:roles" + "}" + ")"), + boost: 10 + }, { + label: "ref", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ ref(string $entry) : EntryReference +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\ref(" + "$" + "{" + "1:entry" + "}" + ")"), + boost: 10 + }, { + label: "refresh_materialized_view", + type: "function", + detail: "flow\u002Ddsl\u002Dschema", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ refresh_materialized_view(string $name, string $schema = null) : RefreshMatViewOptionsStep +
+
+ Create a REFRESH MATERIALIZED VIEW builder.
Example: refresh_materialized_view(\'user_stats\')
Produces: REFRESH MATERIALIZED VIEW user_stats
Example: refresh_materialized_view(\'user_stats\')->concurrently()->withData()
Produces: REFRESH MATERIALIZED VIEW CONCURRENTLY user_stats WITH DATA
@param string $name View name (may include schema as \"schema.view\")
@param null|string $schema Schema name (optional, overrides parsed schema) +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\refresh_materialized_view(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:schema" + "}" + ")"), + boost: 10 + }, { + label: "refs", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ refs(Reference|string $entries) : References +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\refs(" + "$" + "{" + "1:entries" + "}" + ")"), + boost: 10 + }, { + label: "ref_action_cascade", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ ref_action_cascade() : ReferentialAction +
+
+ Get a CASCADE referential action. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\ref_action_cascade()"), + boost: 10 + }, { + label: "ref_action_no_action", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ ref_action_no_action() : ReferentialAction +
+
+ Get a NO ACTION referential action. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\ref_action_no_action()"), + boost: 10 + }, { + label: "ref_action_restrict", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ ref_action_restrict() : ReferentialAction +
+
+ Get a RESTRICT referential action. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\ref_action_restrict()"), + boost: 10 + }, { + label: "ref_action_set_default", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ ref_action_set_default() : ReferentialAction +
+
+ Get a SET DEFAULT referential action. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\ref_action_set_default()"), + boost: 10 + }, { + label: "ref_action_set_null", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ ref_action_set_null() : ReferentialAction +
+
+ Get a SET NULL referential action. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\ref_action_set_null()"), + boost: 10 + }, { + label: "regex", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ regex(ScalarFunction|string $pattern, ScalarFunction|string $subject, ScalarFunction|int $flags = 0, ScalarFunction|int $offset = 0) : Regex +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\regex(" + "$" + "{" + "1:pattern" + "}" + ", " + "$" + "{" + "2:subject" + "}" + ", " + "$" + "{" + "3:flags" + "}" + ", " + "$" + "{" + "4:offset" + "}" + ")"), + boost: 10 + }, { + label: "regex_all", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ regex_all(ScalarFunction|string $pattern, ScalarFunction|string $subject, ScalarFunction|int $flags = 0, ScalarFunction|int $offset = 0) : RegexAll +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\regex_all(" + "$" + "{" + "1:pattern" + "}" + ", " + "$" + "{" + "2:subject" + "}" + ", " + "$" + "{" + "3:flags" + "}" + ", " + "$" + "{" + "4:offset" + "}" + ")"), + boost: 10 + }, { + label: "regex_imatch", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ regex_imatch(Expression $expr, Expression $pattern) : OperatorCondition +
+
+ Create a POSIX regex match condition (~*).
Case-insensitive.
Example: regex_imatch(col(\'email\'), literal_string(\'.*@gmail\\\\.com\'))
Produces: email ~* \'.*@gmail\\.com\' +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\regex_imatch(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:pattern" + "}" + ")"), + boost: 10 + }, { + label: "regex_match", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ regex_match(ScalarFunction|string $pattern, ScalarFunction|string $subject, ScalarFunction|int $flags = 0, ScalarFunction|int $offset = 0) : RegexMatch +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\regex_match(" + "$" + "{" + "1:pattern" + "}" + ", " + "$" + "{" + "2:subject" + "}" + ", " + "$" + "{" + "3:flags" + "}" + ", " + "$" + "{" + "4:offset" + "}" + ")"), + boost: 10 + }, { + label: "regex_match", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ regex_match(Expression $expr, Expression $pattern) : OperatorCondition +
+
+ Create a POSIX regex match condition (~).
Case-sensitive.
Example: regex_match(col(\'email\'), literal_string(\'.*@gmail\\\\.com\'))
Produces: email ~ \'.*@gmail\\.com\' +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\regex_match(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:pattern" + "}" + ")"), + boost: 10 + }, { + label: "regex_match_all", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ regex_match_all(ScalarFunction|string $pattern, ScalarFunction|string $subject, ScalarFunction|int $flags = 0, ScalarFunction|int $offset = 0) : RegexMatchAll +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\regex_match_all(" + "$" + "{" + "1:pattern" + "}" + ", " + "$" + "{" + "2:subject" + "}" + ", " + "$" + "{" + "3:flags" + "}" + ", " + "$" + "{" + "4:offset" + "}" + ")"), + boost: 10 + }, { + label: "regex_replace", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ regex_replace(ScalarFunction|string $pattern, ScalarFunction|string $replacement, ScalarFunction|string $subject, ScalarFunction|int|null $limit = null) : RegexReplace +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\regex_replace(" + "$" + "{" + "1:pattern" + "}" + ", " + "$" + "{" + "2:replacement" + "}" + ", " + "$" + "{" + "3:subject" + "}" + ", " + "$" + "{" + "4:limit" + "}" + ")"), + boost: 10 + }, { + label: "reindex_database", + type: "function", + detail: "flow\u002Ddsl\u002Dschema", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ reindex_database(string $name) : ReindexFinalStep +
+
+ Start building a REINDEX DATABASE statement.
Use chainable methods: ->concurrently(), ->verbose(), ->tablespace()
Example: reindex_database(\'mydb\')->concurrently()
@param string $name The database name +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\reindex_database(" + "$" + "{" + "1:name" + "}" + ")"), + boost: 10 + }, { + label: "reindex_index", + type: "function", + detail: "flow\u002Ddsl\u002Dschema", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ reindex_index(string $name) : ReindexFinalStep +
+
+ Start building a REINDEX INDEX statement.
Use chainable methods: ->concurrently(), ->verbose(), ->tablespace()
Example: reindex_index(\'idx_users_email\')->concurrently()
@param string $name The index name (may include schema: schema.index) +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\reindex_index(" + "$" + "{" + "1:name" + "}" + ")"), + boost: 10 + }, { + label: "reindex_schema", + type: "function", + detail: "flow\u002Ddsl\u002Dschema", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ reindex_schema(string $name) : ReindexFinalStep +
+
+ Start building a REINDEX SCHEMA statement.
Use chainable methods: ->concurrently(), ->verbose(), ->tablespace()
Example: reindex_schema(\'public\')->concurrently()
@param string $name The schema name +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\reindex_schema(" + "$" + "{" + "1:name" + "}" + ")"), + boost: 10 + }, { + label: "reindex_table", + type: "function", + detail: "flow\u002Ddsl\u002Dschema", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ reindex_table(string $name) : ReindexFinalStep +
+
+ Start building a REINDEX TABLE statement.
Use chainable methods: ->concurrently(), ->verbose(), ->tablespace()
Example: reindex_table(\'users\')->concurrently()
@param string $name The table name (may include schema: schema.table) +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\reindex_table(" + "$" + "{" + "1:name" + "}" + ")"), + boost: 10 + }, { + label: "release_savepoint", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ release_savepoint(string $name) : SavepointFinalStep +
+
+ Release a SAVEPOINT.
Example: release_savepoint(\'my_savepoint\')
Produces: RELEASE my_savepoint +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\release_savepoint(" + "$" + "{" + "1:name" + "}" + ")"), + boost: 10 + }, { + label: "rename_replace", + type: "function", + detail: "flow\u002Ddsl\u002Dtransformers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ rename_replace(array|string $search, array|string $replace) : RenameReplaceEntryStrategy +
+
+ @param array|string $search
@param array|string $replace +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\rename_replace(" + "$" + "{" + "1:search" + "}" + ", " + "$" + "{" + "2:replace" + "}" + ")"), + boost: 10 + }, { + label: "rename_style", + type: "function", + detail: "flow\u002Ddsl\u002Dtransformers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ rename_style(StringStyles|StringStyles $style) : RenameCaseEntryStrategy +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\rename_style(" + "$" + "{" + "1:style" + "}" + ")"), + boost: 10 + }, { + label: "reset_role", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ reset_role() : ResetRoleFinalStep +
+
+ Create a RESET ROLE builder.
Example: reset_role()
Produces: RESET ROLE
@return ResetRoleFinalStep Builder for reset role +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\reset_role()"), + boost: 10 + }, { + label: "resource", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ resource(Attributes|array $attributes = []) : Resource +
+
+ Create a Resource.
@param array|bool|float|int|string>|Attributes $attributes Resource attributes +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\resource(" + "$" + "{" + "1:attributes" + "}" + ")"), + boost: 10 + }, { + label: "resource_detector", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ resource_detector(array $detectors = []) : ChainDetector +
+
+ Create a resource detector chain.
When no detectors are provided, uses the default detector chain:
1. OsDetector - Operating system information
2. HostDetector - Host information
3. ProcessDetector - Process information
4. ComposerDetector - Service information from Composer
5. EnvironmentDetector - Environment variable overrides (highest precedence)
When detectors are provided, uses only those detectors.
@param array $detectors Optional custom detectors (empty = use defaults) +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\resource_detector(" + "$" + "{" + "1:detectors" + "}" + ")"), + boost: 10 + }, { + label: "retry_any_throwable", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ retry_any_throwable(int $limit) : AnyThrowable +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\retry_any_throwable(" + "$" + "{" + "1:limit" + "}" + ")"), + boost: 10 + }, { + label: "retry_on_exception_types", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ retry_on_exception_types(array $exception_types, int $limit) : OnExceptionTypes +
+
+ @param array> $exception_types +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\retry_on_exception_types(" + "$" + "{" + "1:exception_types" + "}" + ", " + "$" + "{" + "2:limit" + "}" + ")"), + boost: 10 + }, { + label: "returning", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ returning(Expression $expressions) : ReturningClause +
+
+ Create a RETURNING clause.
@param Expression ...$expressions Expressions to return +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\returning(" + "$" + "{" + "1:expressions" + "}" + ")"), + boost: 10 + }, { + label: "returning_all", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ returning_all() : ReturningClause +
+
+ Create a RETURNING * clause. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\returning_all()"), + boost: 10 + }, { + label: "revoke", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ revoke(TablePrivilege|string $privileges) : RevokeOnStep +
+
+ Create a REVOKE privileges builder.
Example: revoke(TablePrivilege::SELECT)->onTable(\'users\')->from(\'app_user\')
Produces: REVOKE SELECT ON users FROM app_user
Example: revoke(TablePrivilege::ALL)->onTable(\'users\')->from(\'app_user\')->cascade()
Produces: REVOKE ALL ON users FROM app_user CASCADE
@param string|TablePrivilege ...$privileges The privileges to revoke
@return RevokeOnStep Builder for revoke options +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\revoke(" + "$" + "{" + "1:privileges" + "}" + ")"), + boost: 10 + }, { + label: "revoke_role", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ revoke_role(string $roles) : RevokeRoleFromStep +
+
+ Create a REVOKE role builder.
Example: revoke_role(\'admin\')->from(\'user1\')
Produces: REVOKE admin FROM user1
Example: revoke_role(\'admin\')->from(\'user1\')->cascade()
Produces: REVOKE admin FROM user1 CASCADE
@param string ...$roles The roles to revoke
@return RevokeRoleFromStep Builder for revoke role options +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\revoke_role(" + "$" + "{" + "1:roles" + "}" + ")"), + boost: 10 + }, { + label: "rollback", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ rollback() : RollbackOptionsStep +
+
+ Create a ROLLBACK transaction builder.
Example: rollback()->toSavepoint(\'my_savepoint\')
Produces: ROLLBACK TO SAVEPOINT my_savepoint +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\rollback()"), + boost: 10 + }, { + label: "rollback_prepared", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ rollback_prepared(string $transactionId) : PreparedTransactionFinalStep +
+
+ Create a ROLLBACK PREPARED builder.
Example: rollback_prepared(\'my_transaction\')
Produces: ROLLBACK PREPARED \'my_transaction\' +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\rollback_prepared(" + "$" + "{" + "1:transactionId" + "}" + ")"), + boost: 10 + }, { + label: "round", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ round(ScalarFunction|int|float $value, ScalarFunction|int $precision = 2, ScalarFunction|int $mode = 1) : Round +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\round(" + "$" + "{" + "1:value" + "}" + ", " + "$" + "{" + "2:precision" + "}" + ", " + "$" + "{" + "3:mode" + "}" + ")"), + boost: 10 + }, { + label: "row", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ row(Entry $entry) : Row +
+
+ @param Entry ...$entry +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\row(" + "$" + "{" + "1:entry" + "}" + ")"), + boost: 10 + }, { + label: "rows", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ rows(Row $row) : Rows +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\rows(" + "$" + "{" + "1:row" + "}" + ")"), + boost: 10 + }, { + label: "rows_partitioned", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ rows_partitioned(array $rows, Partitions|array $partitions) : Rows +
+
+ @param array $rows
@param array<\\Flow\\Filesystem\\Partition|string>|Partitions $partitions +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\rows_partitioned(" + "$" + "{" + "1:rows" + "}" + ", " + "$" + "{" + "2:partitions" + "}" + ")"), + boost: 10 + }, { + label: "row_expr", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ row_expr(array $elements) : RowExpression +
+
+ Create a row expression.
@param list $elements Row elements +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\row_expr(" + "$" + "{" + "1:elements" + "}" + ")"), + boost: 10 + }, { + label: "row_number", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ row_number() : RowNumber +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\row_number()"), + boost: 10 + }, { + label: "sanitize", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ sanitize(ScalarFunction|string $value, ScalarFunction|string $placeholder = '*', ScalarFunction|int|null $skipCharacters = null) : Sanitize +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\sanitize(" + "$" + "{" + "1:value" + "}" + ", " + "$" + "{" + "2:placeholder" + "}" + ", " + "$" + "{" + "3:skipCharacters" + "}" + ")"), + boost: 10 + }, { + label: "savepoint", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ savepoint(string $name) : SavepointFinalStep +
+
+ Create a SAVEPOINT.
Example: savepoint(\'my_savepoint\')
Produces: SAVEPOINT my_savepoint +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\savepoint(" + "$" + "{" + "1:name" + "}" + ")"), + boost: 10 + }, { + label: "save_mode_append", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ save_mode_append() : SaveMode +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\save_mode_append()"), + boost: 10 + }, { + label: "save_mode_exception_if_exists", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ save_mode_exception_if_exists() : SaveMode +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\save_mode_exception_if_exists()"), + boost: 10 + }, { + label: "save_mode_ignore", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ save_mode_ignore() : SaveMode +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\save_mode_ignore()"), + boost: 10 + }, { + label: "save_mode_overwrite", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ save_mode_overwrite() : SaveMode +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\save_mode_overwrite()"), + boost: 10 + }, { + label: "schema", + type: "function", + detail: "flow\u002Ddsl\u002Dschema", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ schema(Definition $definitions) : Schema +
+
+ @param Definition ...$definitions
@return Schema +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\schema(" + "$" + "{" + "1:definitions" + "}" + ")"), + boost: 10 + }, { + label: "schema_evolving_validator", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ schema_evolving_validator() : EvolvingValidator +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\schema_evolving_validator()"), + boost: 10 + }, { + label: "schema_from_json", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ schema_from_json(string $schema) : Schema +
+
+ @return Schema +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\schema_from_json(" + "$" + "{" + "1:schema" + "}" + ")"), + boost: 10 + }, { + label: "schema_from_parquet", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ schema_from_parquet(Schema $schema) : Schema +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Parquet\\schema_from_parquet(" + "$" + "{" + "1:schema" + "}" + ")"), + boost: 10 + }, { + label: "schema_metadata", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ schema_metadata(array $metadata = []) : Metadata +
+
+ @param array|bool|float|int|string> $metadata +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\schema_metadata(" + "$" + "{" + "1:metadata" + "}" + ")"), + boost: 10 + }, { + label: "schema_selective_validator", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ schema_selective_validator() : SelectiveValidator +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\schema_selective_validator()"), + boost: 10 + }, { + label: "schema_strict_validator", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ schema_strict_validator() : StrictValidator +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\schema_strict_validator()"), + boost: 10 + }, { + label: "schema_to_ascii", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ schema_to_ascii(Schema $schema, SchemaFormatter $formatter = null) : string +
+
+ @param Schema $schema +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\schema_to_ascii(" + "$" + "{" + "1:schema" + "}" + ", " + "$" + "{" + "2:formatter" + "}" + ")"), + boost: 10 + }, { + label: "schema_to_json", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ schema_to_json(Schema $schema, bool $pretty = false) : string +
+
+ @param Schema $schema +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\schema_to_json(" + "$" + "{" + "1:schema" + "}" + ", " + "$" + "{" + "2:pretty" + "}" + ")"), + boost: 10 + }, { + label: "schema_to_parquet", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ schema_to_parquet(Schema $schema) : Schema +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Parquet\\schema_to_parquet(" + "$" + "{" + "1:schema" + "}" + ")"), + boost: 10 + }, { + label: "schema_to_php", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ schema_to_php(Schema $schema, ValueFormatter $valueFormatter = Flow\\ETL\\Schema\\Formatter\\PHPFormatter\\ValueFormatter::..., TypeFormatter $typeFormatter = Flow\\ETL\\Schema\\Formatter\\PHPFormatter\\TypeFormatter::...) : string +
+
+ @param Schema $schema +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\schema_to_php(" + "$" + "{" + "1:schema" + "}" + ", " + "$" + "{" + "2:valueFormatter" + "}" + ", " + "$" + "{" + "3:typeFormatter" + "}" + ")"), + boost: 10 + }, { + label: "schema_validate", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ schema_validate(Schema $expected, Schema $given, SchemaValidator $validator = Flow\\ETL\\Schema\\Validator\\StrictValidator::...) : bool +
+
+ @param Schema $expected
@param Schema $given +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\schema_validate(" + "$" + "{" + "1:expected" + "}" + ", " + "$" + "{" + "2:given" + "}" + ", " + "$" + "{" + "3:validator" + "}" + ")"), + boost: 10 + }, { + label: "select", + type: "function", + detail: "flow\u002Ddsl\u002Dtransformers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ select(Reference|string $entries) : Select +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\select(" + "$" + "{" + "1:entries" + "}" + ")"), + boost: 10 + }, { + label: "select", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ select(Expression $expressions) : SelectBuilder +
+
+ Create a new SELECT query builder.
@param Expression ...$expressions Columns to select. If empty, returns SelectSelectStep. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\select(" + "$" + "{" + "1:expressions" + "}" + ")"), + boost: 10 + }, { + label: "set_role", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ set_role(string $role) : SetRoleFinalStep +
+
+ Create a SET ROLE builder.
Example: set_role(\'admin\')
Produces: SET ROLE admin
@param string $role The role to set
@return SetRoleFinalStep Builder for set role +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\set_role(" + "$" + "{" + "1:role" + "}" + ")"), + boost: 10 + }, { + label: "set_session_transaction", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ set_session_transaction() : SetTransactionOptionsStep +
+
+ Create a SET SESSION CHARACTERISTICS AS TRANSACTION builder.
Example: set_session_transaction()->isolationLevel(IsolationLevel::SERIALIZABLE)
Produces: SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL SERIALIZABLE +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\set_session_transaction()"), + boost: 10 + }, { + label: "set_transaction", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ set_transaction() : SetTransactionOptionsStep +
+
+ Create a SET TRANSACTION builder.
Example: set_transaction()->isolationLevel(IsolationLevel::SERIALIZABLE)->readOnly()
Produces: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE, READ ONLY +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\set_transaction()"), + boost: 10 + }, { + label: "severity_filtering_log_processor", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ severity_filtering_log_processor(LogProcessor $processor, Severity $minimumSeverity = Flow\\Telemetry\\Logger\\Severity::...) : SeverityFilteringLogProcessor +
+
+ Create a SeverityFilteringLogProcessor.
Filters log entries based on minimum severity level. Only entries at or above
the configured threshold are passed to the wrapped processor.
@param LogProcessor $processor The processor to wrap
@param Severity $minimumSeverity Minimum severity level (default: INFO) +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\severity_filtering_log_processor(" + "$" + "{" + "1:processor" + "}" + ", " + "$" + "{" + "2:minimumSeverity" + "}" + ")"), + boost: 10 + }, { + label: "severity_mapper", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ severity_mapper(array $customMapping = null) : SeverityMapper +
+
+ Create a SeverityMapper for mapping Monolog levels to Telemetry severities.
@param null|array $customMapping Optional custom mapping (Monolog Level value => Telemetry Severity)
Example with default mapping:
\`\`\`php
$mapper = severity_mapper();
\`\`\`
Example with custom mapping:
\`\`\`php
use Monolog\\Level;
use Flow\\Telemetry\\Logger\\Severity;
$mapper = severity_mapper([
Level::Debug->value => Severity::DEBUG,
Level::Info->value => Severity::INFO,
Level::Notice->value => Severity::WARN, // Custom: NOTICE → WARN instead of INFO
Level::Warning->value => Severity::WARN,
Level::Error->value => Severity::ERROR,
Level::Critical->value => Severity::FATAL,
Level::Alert->value => Severity::FATAL,
Level::Emergency->value => Severity::FATAL,
]);
\`\`\` +
+ ` + return div + }, + apply: snippet("\\Flow\\Bridge\\Monolog\\Telemetry\\DSL\\severity_mapper(" + "$" + "{" + "1:customMapping" + "}" + ")"), + boost: 10 + }, { + label: "similar_to", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ similar_to(Expression $expr, Expression $pattern) : SimilarTo +
+
+ Create a SIMILAR TO condition. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\similar_to(" + "$" + "{" + "1:expr" + "}" + ", " + "$" + "{" + "2:pattern" + "}" + ")"), + boost: 10 + }, { + label: "size", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ size(mixed $value) : Size +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\size(" + "$" + "{" + "1:value" + "}" + ")"), + boost: 10 + }, { + label: "skip_rows_handler", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ skip_rows_handler() : SkipRows +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\skip_rows_handler()"), + boost: 10 + }, { + label: "span_context", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ span_context(TraceId $traceId, SpanId $spanId, SpanId $parentSpanId = null) : SpanContext +
+
+ Create a SpanContext.
@param TraceId $traceId The trace ID
@param SpanId $spanId The span ID
@param null|SpanId $parentSpanId Optional parent span ID +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\span_context(" + "$" + "{" + "1:traceId" + "}" + ", " + "$" + "{" + "2:spanId" + "}" + ", " + "$" + "{" + "3:parentSpanId" + "}" + ")"), + boost: 10 + }, { + label: "span_event", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ span_event(string $name, DateTimeImmutable $timestamp, Attributes|array $attributes = []) : GenericEvent +
+
+ Create a SpanEvent (GenericEvent) with an explicit timestamp.
@param string $name Event name
@param \\DateTimeImmutable $timestamp Event timestamp
@param array|bool|float|int|string>|Attributes $attributes Event attributes +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\span_event(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:timestamp" + "}" + ", " + "$" + "{" + "3:attributes" + "}" + ")"), + boost: 10 + }, { + label: "span_id", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ span_id(string $hex = null) : SpanId +
+
+ Create a SpanId.
If a hex string is provided, creates a SpanId from it.
Otherwise, generates a new random SpanId.
@param null|string $hex Optional 16-character hexadecimal string
@throws \\InvalidArgumentException if the hex string is invalid +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\span_id(" + "$" + "{" + "1:hex" + "}" + ")"), + boost: 10 + }, { + label: "span_limits", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ span_limits(int $attributeCountLimit = 128, int $eventCountLimit = 128, int $linkCountLimit = 128, int $attributePerEventCountLimit = 128, int $attributePerLinkCountLimit = 128, int $attributeValueLengthLimit = null) : SpanLimits +
+
+ Create SpanLimits configuration.
SpanLimits controls the maximum amount of data a span can collect,
preventing unbounded memory growth and ensuring reasonable span sizes.
@param int $attributeCountLimit Maximum number of attributes per span
@param int $eventCountLimit Maximum number of events per span
@param int $linkCountLimit Maximum number of links per span
@param int $attributePerEventCountLimit Maximum number of attributes per event
@param int $attributePerLinkCountLimit Maximum number of attributes per link
@param null|int $attributeValueLengthLimit Maximum length for string attribute values (null = unlimited) +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\span_limits(" + "$" + "{" + "1:attributeCountLimit" + "}" + ", " + "$" + "{" + "2:eventCountLimit" + "}" + ", " + "$" + "{" + "3:linkCountLimit" + "}" + ", " + "$" + "{" + "4:attributePerEventCountLimit" + "}" + ", " + "$" + "{" + "5:attributePerLinkCountLimit" + "}" + ", " + "$" + "{" + "6:attributeValueLengthLimit" + "}" + ")"), + boost: 10 + }, { + label: "span_link", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ span_link(SpanContext $context, Attributes|array $attributes = []) : SpanLink +
+
+ Create a SpanLink.
@param SpanContext $context The linked span context
@param array|bool|float|int|string>|Attributes $attributes Link attributes +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\span_link(" + "$" + "{" + "1:context" + "}" + ", " + "$" + "{" + "2:attributes" + "}" + ")"), + boost: 10 + }, { + label: "split", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ split(ScalarFunction|string $value, ScalarFunction|string $separator, ScalarFunction|int $limit = 9223372036854775807) : Split +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\split(" + "$" + "{" + "1:value" + "}" + ", " + "$" + "{" + "2:separator" + "}" + ", " + "$" + "{" + "3:limit" + "}" + ")"), + boost: 10 + }, { + label: "sprintf", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ sprintf(ScalarFunction|string $format, ScalarFunction|string|int|float|null $args) : Sprintf +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\sprintf(" + "$" + "{" + "1:format" + "}" + ", " + "$" + "{" + "2:args" + "}" + ")"), + boost: 10 + }, { + label: "sqlite_insert_options", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ sqlite_insert_options(bool $skip_conflicts = null, array $conflict_columns = [], array $update_columns = []) : SqliteInsertOptions +
+
+ @param array $conflict_columns
@param array $update_columns +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\sqlite_insert_options(" + "$" + "{" + "1:skip_conflicts" + "}" + ", " + "$" + "{" + "2:conflict_columns" + "}" + ", " + "$" + "{" + "3:update_columns" + "}" + ")"), + boost: 10 + }, { + label: "sql_analyze", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ sql_analyze(Plan $plan) : PlanAnalyzer +
+
+ Create a plan analyzer for analyzing EXPLAIN plans.
@param Plan $plan The execution plan to analyze
@return PlanAnalyzer The analyzer for extracting insights +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_analyze(" + "$" + "{" + "1:plan" + "}" + ")"), + boost: 10 + }, { + label: "sql_deparse", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ sql_deparse(ParsedQuery $query, DeparseOptions $options = null) : string +
+
+ Convert a ParsedQuery AST back to SQL string.
When called without options, returns the SQL as a simple string.
When called with DeparseOptions, applies formatting (pretty-printing, indentation, etc.).
@throws \\RuntimeException if deparsing fails +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_deparse(" + "$" + "{" + "1:query" + "}" + ", " + "$" + "{" + "2:options" + "}" + ")"), + boost: 10 + }, { + label: "sql_deparse_options", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ sql_deparse_options() : DeparseOptions +
+
+ Create DeparseOptions for configuring SQL formatting. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_deparse_options()"), + boost: 10 + }, { + label: "sql_explain_config", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ sql_explain_config(bool $analyze = true, bool $verbose = false, bool $costs = true, bool $buffers = true, bool $timing = true, ExplainFormat $format = Flow\\PostgreSql\\QueryBuilder\\Utility\\ExplainFormat::...) : ExplainConfig +
+
+ Create an ExplainConfig for customizing EXPLAIN options.
@param bool $analyze Whether to actually execute the query (ANALYZE)
@param bool $verbose Include verbose output
@param bool $costs Include cost estimates (default true)
@param bool $buffers Include buffer usage statistics (requires analyze)
@param bool $timing Include timing information (requires analyze)
@param ExplainFormat $format Output format (JSON recommended for parsing) +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_explain_config(" + "$" + "{" + "1:analyze" + "}" + ", " + "$" + "{" + "2:verbose" + "}" + ", " + "$" + "{" + "3:costs" + "}" + ", " + "$" + "{" + "4:buffers" + "}" + ", " + "$" + "{" + "5:timing" + "}" + ", " + "$" + "{" + "6:format" + "}" + ")"), + boost: 10 + }, { + label: "sql_explain_modifier", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ sql_explain_modifier(ExplainConfig $config) : ExplainModifier +
+
+ Create an ExplainModifier for transforming queries into EXPLAIN queries. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_explain_modifier(" + "$" + "{" + "1:config" + "}" + ")"), + boost: 10 + }, { + label: "sql_explain_parse", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ sql_explain_parse(string $jsonOutput) : Plan +
+
+ Parse EXPLAIN JSON output into a Plan object.
@param string $jsonOutput The JSON output from EXPLAIN (FORMAT JSON)
@return Plan The parsed execution plan +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_explain_parse(" + "$" + "{" + "1:jsonOutput" + "}" + ")"), + boost: 10 + }, { + label: "sql_fingerprint", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ sql_fingerprint(string $sql) : string +
+
+ Returns a fingerprint of the given SQL query.
Literal values are normalized so they won\'t affect the fingerprint. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_fingerprint(" + "$" + "{" + "1:sql" + "}" + ")"), + boost: 10 + }, { + label: "sql_format", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ sql_format(string $sql, DeparseOptions $options = null) : string +
+
+ Parse and format SQL query with pretty printing.
This is a convenience function that parses SQL and returns it formatted.
@param string $sql The SQL query to format
@param null|DeparseOptions $options Formatting options (defaults to pretty-print enabled)
@throws \\RuntimeException if parsing or deparsing fails +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_format(" + "$" + "{" + "1:sql" + "}" + ", " + "$" + "{" + "2:options" + "}" + ")"), + boost: 10 + }, { + label: "sql_keyset_column", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ sql_keyset_column(string $column, SortOrder $order = Flow\\PostgreSql\\AST\\Transformers\\SortOrder::...) : KeysetColumn +
+
+ Create a KeysetColumn for keyset pagination.
@param string $column Column name (can include table alias like \"u.id\")
@param SortOrder $order Sort order (ASC or DESC) +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_keyset_column(" + "$" + "{" + "1:column" + "}" + ", " + "$" + "{" + "2:order" + "}" + ")"), + boost: 10 + }, { + label: "sql_normalize", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ sql_normalize(string $sql) : string +
+
+ Normalize SQL query by replacing literal values and named parameters with positional parameters.
WHERE id = :id will be changed into WHERE id = $1
WHERE id = 1 will be changed into WHERE id = $1. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_normalize(" + "$" + "{" + "1:sql" + "}" + ")"), + boost: 10 + }, { + label: "sql_normalize_utility", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ sql_normalize_utility(string $sql) : string +
+
+ Normalize utility SQL statements (DDL like CREATE, ALTER, DROP).
This handles DDL statements differently from pg_normalize() which is optimized for DML. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_normalize_utility(" + "$" + "{" + "1:sql" + "}" + ")"), + boost: 10 + }, { + label: "sql_parse", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ sql_parse(string $sql) : ParsedQuery +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_parse(" + "$" + "{" + "1:sql" + "}" + ")"), + boost: 10 + }, { + label: "sql_parser", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ sql_parser() : Parser +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_parser()"), + boost: 10 + }, { + label: "sql_query_columns", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ sql_query_columns(ParsedQuery $query) : Columns +
+
+ Extract columns from a parsed SQL query. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_query_columns(" + "$" + "{" + "1:query" + "}" + ")"), + boost: 10 + }, { + label: "sql_query_depth", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ sql_query_depth(string $sql) : int +
+
+ Get the maximum nesting depth of a SQL query.
Example:
- \"SELECT * FROM t\" => 1
- \"SELECT * FROM (SELECT * FROM t)\" => 2
- \"SELECT * FROM (SELECT * FROM (SELECT * FROM t))\" => 3 +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_query_depth(" + "$" + "{" + "1:sql" + "}" + ")"), + boost: 10 + }, { + label: "sql_query_functions", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ sql_query_functions(ParsedQuery $query) : Functions +
+
+ Extract functions from a parsed SQL query. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_query_functions(" + "$" + "{" + "1:query" + "}" + ")"), + boost: 10 + }, { + label: "sql_query_order_by", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ sql_query_order_by(ParsedQuery $query) : OrderBy +
+
+ Extract ORDER BY clauses from a parsed SQL query. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_query_order_by(" + "$" + "{" + "1:query" + "}" + ")"), + boost: 10 + }, { + label: "sql_query_tables", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ sql_query_tables(ParsedQuery $query) : Tables +
+
+ Extract tables from a parsed SQL query. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_query_tables(" + "$" + "{" + "1:query" + "}" + ")"), + boost: 10 + }, { + label: "sql_split", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ sql_split(string $sql) : array +
+
+ Split string with multiple SQL statements into array of individual statements.
@return array +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_split(" + "$" + "{" + "1:sql" + "}" + ")"), + boost: 10 + }, { + label: "sql_summary", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ sql_summary(string $sql, int $options = 0, int $truncateLimit = 0) : string +
+
+ Generate a summary of parsed queries in protobuf format.
Useful for query monitoring and logging without full AST overhead. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_summary(" + "$" + "{" + "1:sql" + "}" + ", " + "$" + "{" + "2:options" + "}" + ", " + "$" + "{" + "3:truncateLimit" + "}" + ")"), + boost: 10 + }, { + label: "sql_to_count_query", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ sql_to_count_query(string $sql) : string +
+
+ Transform a SQL query into a COUNT query for pagination.
Wraps the query in: SELECT COUNT(*) FROM (...) AS _count_subq
Removes ORDER BY and LIMIT/OFFSET from the inner query.
@param string $sql The SQL query to transform
@return string The COUNT query +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_to_count_query(" + "$" + "{" + "1:sql" + "}" + ")"), + boost: 10 + }, { + label: "sql_to_explain", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ sql_to_explain(string $sql, ExplainConfig $config = null) : string +
+
+ Transform a SQL query into an EXPLAIN query.
Returns the modified SQL with EXPLAIN wrapped around it.
Defaults to EXPLAIN ANALYZE with JSON format for easy parsing.
@param string $sql The SQL query to explain
@param null|ExplainConfig $config EXPLAIN configuration (defaults to forAnalysis())
@return string The EXPLAIN query +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_to_explain(" + "$" + "{" + "1:sql" + "}" + ", " + "$" + "{" + "2:config" + "}" + ")"), + boost: 10 + }, { + label: "sql_to_keyset_query", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ sql_to_keyset_query(string $sql, int $limit, array $columns, array $cursor = null) : string +
+
+ Transform a SQL query into a keyset (cursor-based) paginated query.
More efficient than OFFSET for large datasets - uses indexed WHERE conditions.
Automatically detects existing query parameters and appends keyset placeholders at the end.
@param string $sql The SQL query to paginate (must have ORDER BY)
@param int $limit Maximum number of rows to return
@param list $columns Columns for keyset pagination (must match ORDER BY)
@param null|list $cursor Values from last row of previous page (null for first page)
@return string The paginated SQL query +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_to_keyset_query(" + "$" + "{" + "1:sql" + "}" + ", " + "$" + "{" + "2:limit" + "}" + ", " + "$" + "{" + "3:columns" + "}" + ", " + "$" + "{" + "4:cursor" + "}" + ")"), + boost: 10 + }, { + label: "sql_to_limited_query", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ sql_to_limited_query(string $sql, int $limit) : string +
+
+ Transform a SQL query to limit results to a specific number of rows.
@param string $sql The SQL query to limit
@param int $limit Maximum number of rows to return
@return string The limited SQL query +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_to_limited_query(" + "$" + "{" + "1:sql" + "}" + ", " + "$" + "{" + "2:limit" + "}" + ")"), + boost: 10 + }, { + label: "sql_to_paginated_query", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ sql_to_paginated_query(string $sql, int $limit, int $offset = 0) : string +
+
+ Transform a SQL query into a paginated query with LIMIT and OFFSET.
@param string $sql The SQL query to paginate
@param int $limit Maximum number of rows to return
@param int $offset Number of rows to skip (requires ORDER BY in query)
@return string The paginated SQL query +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\sql_to_paginated_query(" + "$" + "{" + "1:sql" + "}" + ", " + "$" + "{" + "2:limit" + "}" + ", " + "$" + "{" + "3:offset" + "}" + ")"), + boost: 10 + }, { + label: "star", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ star(string $table = null) : Star +
+
+ Create a SELECT * expression. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\star(" + "$" + "{" + "1:table" + "}" + ")"), + boost: 10 + }, { + label: "stdout_filesystem", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ stdout_filesystem() : StdOutFilesystem +
+
+ Write-only filesystem useful when we just want to write the output to stdout.
The main use case is for streaming datasets over http. +
+ ` + return div + }, + apply: snippet("\\Flow\\Filesystem\\DSL\\stdout_filesystem()"), + boost: 10 + }, { + label: "string_agg", + type: "function", + detail: "flow\u002Ddsl\u002Daggregating\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ string_agg(EntryReference|string $ref, string $separator = ', ', SortOrder $sort = null) : StringAggregate +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\string_agg(" + "$" + "{" + "1:ref" + "}" + ", " + "$" + "{" + "2:separator" + "}" + ", " + "$" + "{" + "3:sort" + "}" + ")"), + boost: 10 + }, { + label: "string_entry", + type: "function", + detail: "flow\u002Ddsl\u002Dentries", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ string_entry(string $name, string $value, Metadata $metadata = null) : Entry +
+
+ @return Entry +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\string_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), + boost: 10 + }, { + label: "string_schema", + type: "function", + detail: "flow\u002Ddsl\u002Dschema", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ string_schema(string $name, bool $nullable = false, Metadata $metadata = null) : StringDefinition +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\string_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:nullable" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), + boost: 10 + }, { + label: "structure_entry", + type: "function", + detail: "flow\u002Ddsl\u002Dentries", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ structure_entry(string $name, array $value, StructureType $type, Metadata $metadata = null) : Entry +
+
+ @template T
@param ?array $value
@param StructureType $type
@return Entry> +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\structure_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:type" + "}" + ", " + "$" + "{" + "4:metadata" + "}" + ")"), + boost: 10 + }, { + label: "structure_ref", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ structure_ref(string $entry) : StructureFunctions +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\structure_ref(" + "$" + "{" + "1:entry" + "}" + ")"), + boost: 10 + }, { + label: "structure_schema", + type: "function", + detail: "flow\u002Ddsl\u002Dschema", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ structure_schema(string $name, StructureType|Type $type, bool $nullable = false, Metadata $metadata = null) : StructureDefinition +
+
+ @template T
@param StructureType|Type> $type
@return StructureDefinition +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\structure_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:type" + "}" + ", " + "$" + "{" + "3:nullable" + "}" + ", " + "$" + "{" + "4:metadata" + "}" + ")"), + boost: 10 + }, { + label: "struct_entry", + type: "function", + detail: "flow\u002Ddsl\u002Dentries", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ struct_entry(string $name, array $value, StructureType $type, Metadata $metadata = null) : Entry +
+
+ @template T
@param ?array $value
@param StructureType $type
@return Entry> +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\struct_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:type" + "}" + ", " + "$" + "{" + "4:metadata" + "}" + ")"), + boost: 10 + }, { + label: "struct_schema", + type: "function", + detail: "flow\u002Ddsl\u002Dschema", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ struct_schema(string $name, StructureType|Type $type, bool $nullable = false, Metadata $metadata = null) : StructureDefinition +
+
+ @template T
@param StructureType|Type> $type
@return StructureDefinition
@deprecated Use \`structure_schema()\` instead +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\struct_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:type" + "}" + ", " + "$" + "{" + "3:nullable" + "}" + ", " + "$" + "{" + "4:metadata" + "}" + ")"), + boost: 10 + }, { + label: "str_entry", + type: "function", + detail: "flow\u002Ddsl\u002Dentries", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ str_entry(string $name, string $value, Metadata $metadata = null) : Entry +
+
+ @return Entry +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\str_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), + boost: 10 + }, { + label: "str_schema", + type: "function", + detail: "flow\u002Ddsl\u002Dschema", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ str_schema(string $name, bool $nullable = false, Metadata $metadata = null) : StringDefinition +
+
+ Alias for \`string_schema\`. +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\str_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:nullable" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), + boost: 10 + }, { + label: "sub_select", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ sub_select(SelectFinalStep $query) : Subquery +
+
+ Create a subquery expression. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\sub_select(" + "$" + "{" + "1:query" + "}" + ")"), + boost: 10 + }, { + label: "sum", + type: "function", + detail: "flow\u002Ddsl\u002Daggregating\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ sum(EntryReference|string $ref) : Sum +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\sum(" + "$" + "{" + "1:ref" + "}" + ")"), + boost: 10 + }, { + label: "superglobal_carrier", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ superglobal_carrier() : SuperglobalCarrier +
+
+ Create a SuperglobalCarrier.
Read-only carrier that extracts context from PHP superglobals
($_SERVER, $_GET, $_POST, $_COOKIE). +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\superglobal_carrier()"), + boost: 10 + }, { + label: "symfony_request_carrier", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ symfony_request_carrier(Request $request) : RequestCarrier +
+ ` + return div + }, + apply: snippet("\\Flow\\Bridge\\Symfony\\HttpFoundationTelemetry\\DSL\\symfony_request_carrier(" + "$" + "{" + "1:request" + "}" + ")"), + boost: 10 + }, { + label: "symfony_response_carrier", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ symfony_response_carrier(Response $response) : ResponseCarrier +
+ ` + return div + }, + apply: snippet("\\Flow\\Bridge\\Symfony\\HttpFoundationTelemetry\\DSL\\symfony_response_carrier(" + "$" + "{" + "1:response" + "}" + ")"), + boost: 10 + }, { + label: "table", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ table(string $name, string $schema = null) : Table +
+
+ Create a table reference.
Supports dot notation for schema-qualified names: \"public.users\" or explicit schema parameter.
Double-quoted identifiers preserve dots: \'\"my.table\"\' creates a single identifier.
@param string $name Table name (may include schema as \"schema.table\")
@param null|string $schema Schema name (optional, overrides parsed schema) +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\table(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:schema" + "}" + ")"), + boost: 10 + }, { + label: "table_func", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ table_func(FunctionCall $function, bool $withOrdinality = false) : TableFunction +
+
+ Create a table function reference.
@param FunctionCall $function The table-valued function
@param bool $withOrdinality Whether to add WITH ORDINALITY +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\table_func(" + "$" + "{" + "1:function" + "}" + ", " + "$" + "{" + "2:withOrdinality" + "}" + ")"), + boost: 10 + }, { + label: "table_schema_to_flow_schema", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ table_schema_to_flow_schema(Table $table, array $types_map = []) : Schema +
+
+ Converts a Doctrine\\DBAL\\Schema\\Table to a Flow\\ETL\\Schema.
@param array>, class-string<\\Doctrine\\DBAL\\Types\\Type>> $types_map
@return Schema +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\table_schema_to_flow_schema(" + "$" + "{" + "1:table" + "}" + ", " + "$" + "{" + "2:types_map" + "}" + ")"), + boost: 10 + }, { + label: "telemetry", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ telemetry(Resource $resource, TracerProvider $tracerProvider = null, MeterProvider $meterProvider = null, LoggerProvider $loggerProvider = null) : Telemetry +
+
+ Create a new Telemetry instance with the given providers.
If providers are not specified, void providers (no-op) are used.
@param resource $resource The resource describing the entity producing telemetry
@param null|TracerProvider $tracerProvider The tracer provider (null for void/disabled)
@param null|MeterProvider $meterProvider The meter provider (null for void/disabled)
@param null|LoggerProvider $loggerProvider The logger provider (null for void/disabled) +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\telemetry(" + "$" + "{" + "1:resource" + "}" + ", " + "$" + "{" + "2:tracerProvider" + "}" + ", " + "$" + "{" + "3:meterProvider" + "}" + ", " + "$" + "{" + "4:loggerProvider" + "}" + ")"), + boost: 10 + }, { + label: "telemetry_handler", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ telemetry_handler(Logger $logger, LogRecordConverter $converter = Flow\\Bridge\\Monolog\\Telemetry\\LogRecordConverter::..., Level $level = Monolog\\Level::..., bool $bubble = true) : TelemetryHandler +
+
+ Create a TelemetryHandler for forwarding Monolog logs to Flow Telemetry.
@param Logger $logger The Flow Telemetry logger to forward logs to
@param LogRecordConverter $converter Converter to transform Monolog LogRecord to Telemetry LogRecord
@param Level $level The minimum logging level at which this handler will be triggered
@param bool $bubble Whether messages handled by this handler should bubble up to other handlers
Example usage:
\`\`\`php
use Monolog\\Logger as MonologLogger;
use function Flow\\Bridge\\Monolog\\Telemetry\\DSL\\telemetry_handler;
use function Flow\\Telemetry\\DSL\\telemetry;
$telemetry = telemetry();
$logger = $telemetry->logger(\'my-app\');
$monolog = new MonologLogger(\'channel\');
$monolog->pushHandler(telemetry_handler($logger));
$monolog->info(\'User logged in\', [\'user_id\' => 123]);
// → Forwarded to Flow Telemetry with INFO severity
\`\`\`
Example with custom converter:
\`\`\`php
$converter = log_record_converter(
severityMapper: severity_mapper([
Level::Debug->value => Severity::TRACE,
])
);
$monolog->pushHandler(telemetry_handler($logger, $converter));
\`\`\` +
+ ` + return div + }, + apply: snippet("\\Flow\\Bridge\\Monolog\\Telemetry\\DSL\\telemetry_handler(" + "$" + "{" + "1:logger" + "}" + ", " + "$" + "{" + "2:converter" + "}" + ", " + "$" + "{" + "3:level" + "}" + ", " + "$" + "{" + "4:bubble" + "}" + ")"), + boost: 10 + }, { + label: "telemetry_options", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ telemetry_options(bool $trace_loading = false, bool $trace_transformations = false, bool $trace_cache = false, bool $collect_metrics = false, FilesystemTelemetryOptions $filesystem = null) : TelemetryOptions +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\telemetry_options(" + "$" + "{" + "1:trace_loading" + "}" + ", " + "$" + "{" + "2:trace_transformations" + "}" + ", " + "$" + "{" + "3:trace_cache" + "}" + ", " + "$" + "{" + "4:collect_metrics" + "}" + ", " + "$" + "{" + "5:filesystem" + "}" + ")"), + boost: 10 + }, { + label: "text_search_match", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ text_search_match(Expression $document, Expression $query) : OperatorCondition +
+
+ Create a full-text search match condition (@@).
Example: text_search_match(col(\'document\'), raw_expr(\"to_tsquery(\'english\', \'hello & world\')\"))
Produces: document @@ to_tsquery(\'english\', \'hello & world\') +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\text_search_match(" + "$" + "{" + "1:document" + "}" + ", " + "$" + "{" + "2:query" + "}" + ")"), + boost: 10 + }, { + label: "throw_error_handler", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ throw_error_handler() : ThrowError +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\throw_error_handler()"), + boost: 10 + }, { + label: "time_entry", + type: "function", + detail: "flow\u002Ddsl\u002Dentries", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ time_entry(string $name, DateInterval|string|null $value, Metadata $metadata = null) : Entry +
+
+ @return Entry +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\time_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), + boost: 10 + }, { + label: "time_schema", + type: "function", + detail: "flow\u002Ddsl\u002Dschema", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ time_schema(string $name, bool $nullable = false, Metadata $metadata = null) : TimeDefinition +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\time_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:nullable" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), + boost: 10 + }, { + label: "to_array", + type: "function", + detail: "flow\u002Ddsl\u002Dloaders", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ to_array(array $array) : ArrayLoader +
+
+ Convert rows to an array and store them in passed array variable.
@param array $array
@param-out array> $array +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\to_array(" + "$" + "{" + "1:array" + "}" + ")"), + boost: 10 + }, { + label: "to_avro", + type: "function", + detail: "flow\u002Ddsl\u002Dloaders", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ to_avro(Path|string $path, Schema $schema = null) : AvroLoader +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\Adapter\\Avro\\to_avro(" + "$" + "{" + "1:path" + "}" + ", " + "$" + "{" + "2:schema" + "}" + ")"), + boost: 10 + }, { + label: "to_branch", + type: "function", + detail: "flow\u002Ddsl\u002Dloaders", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ to_branch(ScalarFunction $condition, Loader $loader) : BranchingLoader +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\to_branch(" + "$" + "{" + "1:condition" + "}" + ", " + "$" + "{" + "2:loader" + "}" + ")"), + boost: 10 + }, { + label: "to_callable", + type: "function", + detail: "flow\u002Ddsl\u002Dloaders", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ to_callable(callable $callable) : CallbackLoader +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\to_callable(" + "$" + "{" + "1:callable" + "}" + ")"), + boost: 10 + }, { + label: "to_chartjs", + type: "function", + detail: "flow\u002Ddsl\u002Dloaders", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ to_chartjs(Chart $type) : ChartJSLoader +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\ChartJS\\to_chartjs(" + "$" + "{" + "1:type" + "}" + ")"), + boost: 10 + }, { + label: "to_chartjs_file", + type: "function", + detail: "flow\u002Ddsl\u002Dloaders", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ to_chartjs_file(Chart $type, Path|string|null $output = null, Path|string|null $template = null) : ChartJSLoader +
+
+ @param Chart $type
@param null|Path|string $output - @deprecated use $loader->withOutputPath() instead
@param null|Path|string $template - @deprecated use $loader->withTemplate() instead +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\ChartJS\\to_chartjs_file(" + "$" + "{" + "1:type" + "}" + ", " + "$" + "{" + "2:output" + "}" + ", " + "$" + "{" + "3:template" + "}" + ")"), + boost: 10 + }, { + label: "to_chartjs_var", + type: "function", + detail: "flow\u002Ddsl\u002Dloaders", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ to_chartjs_var(Chart $type, array $output) : ChartJSLoader +
+
+ @param Chart $type
@param array $output - @deprecated use $loader->withOutputVar() instead +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\ChartJS\\to_chartjs_var(" + "$" + "{" + "1:type" + "}" + ", " + "$" + "{" + "2:output" + "}" + ")"), + boost: 10 + }, { + label: "to_csv", + type: "function", + detail: "flow\u002Ddsl\u002Dloaders", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ to_csv(Path|string $uri, bool $with_header = true, string $separator = ',', string $enclosure = '\\"', string $escape = '\\\\', string $new_line_separator = '\\n', string $datetime_format = 'Y-m-d\\\\TH:i:sP') : CSVLoader +
+
+ @param Path|string $uri
@param bool $with_header - @deprecated use $loader->withHeader() instead
@param string $separator - @deprecated use $loader->withSeparator() instead
@param string $enclosure - @deprecated use $loader->withEnclosure() instead
@param string $escape - @deprecated use $loader->withEscape() instead
@param string $new_line_separator - @deprecated use $loader->withNewLineSeparator() instead
@param string $datetime_format - @deprecated use $loader->withDateTimeFormat() instead +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\CSV\\to_csv(" + "$" + "{" + "1:uri" + "}" + ", " + "$" + "{" + "2:with_header" + "}" + ", " + "$" + "{" + "3:separator" + "}" + ", " + "$" + "{" + "4:enclosure" + "}" + ", " + "$" + "{" + "5:escape" + "}" + ", " + "$" + "{" + "6:new_line_separator" + "}" + ", " + "$" + "{" + "7:datetime_format" + "}" + ")"), + boost: 10 + }, { + label: "to_date", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ to_date(mixed $ref, ScalarFunction|string $format = 'Y-m-d', ScalarFunction|DateTimeZone $timeZone = DateTimeZone::...) : ToDate +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\to_date(" + "$" + "{" + "1:ref" + "}" + ", " + "$" + "{" + "2:format" + "}" + ", " + "$" + "{" + "3:timeZone" + "}" + ")"), + boost: 10 + }, { + label: "to_date_time", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ to_date_time(mixed $ref, ScalarFunction|string $format = 'Y-m-d H:i:s', ScalarFunction|DateTimeZone $timeZone = DateTimeZone::...) : ToDateTime +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\to_date_time(" + "$" + "{" + "1:ref" + "}" + ", " + "$" + "{" + "2:format" + "}" + ", " + "$" + "{" + "3:timeZone" + "}" + ")"), + boost: 10 + }, { + label: "to_dbal_schema_table", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ to_dbal_schema_table(Schema $schema, string $table_name, array $table_options = [], array $types_map = []) : Table +
+
+ Converts a Flow\\ETL\\Schema to a Doctrine\\DBAL\\Schema\\Table.
@param Schema $schema
@param array $table_options
@param array>, class-string<\\Doctrine\\DBAL\\Types\\Type>> $types_map +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\to_dbal_schema_table(" + "$" + "{" + "1:schema" + "}" + ", " + "$" + "{" + "2:table_name" + "}" + ", " + "$" + "{" + "3:table_options" + "}" + ", " + "$" + "{" + "4:types_map" + "}" + ")"), + boost: 10 + }, { + label: "to_dbal_table_delete", + type: "function", + detail: "flow\u002Ddsl\u002Dloaders", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ to_dbal_table_delete(Connection|array $connection, string $table) : DbalLoader +
+
+ Delete rows from database table based on the provided data.
In order to control the size of the single request, use DataFrame::chunkSize() method just before calling DataFrame::load().
@param array|Connection $connection
@throws InvalidArgumentException +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\to_dbal_table_delete(" + "$" + "{" + "1:connection" + "}" + ", " + "$" + "{" + "2:table" + "}" + ")"), + boost: 10 + }, { + label: "to_dbal_table_insert", + type: "function", + detail: "flow\u002Ddsl\u002Dloaders", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ to_dbal_table_insert(Connection|array $connection, string $table, InsertOptions $options = null) : DbalLoader +
+
+ Insert new rows into a database table.
Insert can also be used as an upsert with the help of InsertOptions.
InsertOptions are platform specific, so please choose the right one for your database.
- MySQLInsertOptions
- PostgreSQLInsertOptions
- SqliteInsertOptions
In order to control the size of the single insert, use DataFrame::chunkSize() method just before calling DataFrame::load().
@param array|Connection $connection
@throws InvalidArgumentException +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\to_dbal_table_insert(" + "$" + "{" + "1:connection" + "}" + ", " + "$" + "{" + "2:table" + "}" + ", " + "$" + "{" + "3:options" + "}" + ")"), + boost: 10 + }, { + label: "to_dbal_table_update", + type: "function", + detail: "flow\u002Ddsl\u002Dloaders", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ to_dbal_table_update(Connection|array $connection, string $table, UpdateOptions $options = null) : DbalLoader +
+
+ Update existing rows in database.
In order to control the size of the single request, use DataFrame::chunkSize() method just before calling DataFrame::load().
@param array|Connection $connection
@throws InvalidArgumentException +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\to_dbal_table_update(" + "$" + "{" + "1:connection" + "}" + ", " + "$" + "{" + "2:table" + "}" + ", " + "$" + "{" + "3:options" + "}" + ")"), + boost: 10 + }, { + label: "to_dbal_transaction", + type: "function", + detail: "flow\u002Ddsl\u002Dloaders", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ to_dbal_transaction(Connection|array $connection, Loader $loaders) : TransactionalDbalLoader +
+
+ Execute multiple loaders within a database transaction.
Each batch of rows will be processed in its own transaction.
If any loader fails, the entire batch will be rolled back.
@param array|Connection $connection
@param Loader ...$loaders - Loaders to execute within the transaction
@throws InvalidArgumentException +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Doctrine\\to_dbal_transaction(" + "$" + "{" + "1:connection" + "}" + ", " + "$" + "{" + "2:loaders" + "}" + ")"), + boost: 10 + }, { + label: "to_entry", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ to_entry(string $name, mixed $data, EntryFactory $entryFactory) : Entry +
+
+ @param array $data
@return Entry +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\to_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:data" + "}" + ", " + "$" + "{" + "3:entryFactory" + "}" + ")"), + boost: 10 + }, { + label: "to_es_bulk_index", + type: "function", + detail: "flow\u002Ddsl\u002Dloaders", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ to_es_bulk_index(array $config, string $index, IdFactory $id_factory, array $parameters = []) : ElasticsearchLoader +
+
+ https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-bulk.html.
In order to control the size of the single request, use DataFrame::chunkSize() method just before calling DataFrame::load().
@param array{
hosts?: array,
connectionParams?: array,
retries?: int,
sniffOnStart?: bool,
sslCert?: array,
sslKey?: array,
sslVerification?: bool|string,
elasticMetaHeader?: bool,
includePortInHostHeader?: bool
} $config
@param string $index
@param IdFactory $id_factory
@param array $parameters - https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-bulk.html - @deprecated use withParameters method instead +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Elasticsearch\\to_es_bulk_index(" + "$" + "{" + "1:config" + "}" + ", " + "$" + "{" + "2:index" + "}" + ", " + "$" + "{" + "3:id_factory" + "}" + ", " + "$" + "{" + "4:parameters" + "}" + ")"), + boost: 10 + }, { + label: "to_es_bulk_update", + type: "function", + detail: "flow\u002Ddsl\u002Dloaders", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ to_es_bulk_update(array $config, string $index, IdFactory $id_factory, array $parameters = []) : ElasticsearchLoader +
+
+ https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-bulk.html.
In order to control the size of the single request, use DataFrame::chunkSize() method just before calling DataFrame::load().
@param array{
hosts?: array,
connectionParams?: array,
retries?: int,
sniffOnStart?: bool,
sslCert?: array,
sslKey?: array,
sslVerification?: bool|string,
elasticMetaHeader?: bool,
includePortInHostHeader?: bool
} $config
@param string $index
@param IdFactory $id_factory
@param array $parameters - https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-bulk.html - @deprecated use withParameters method instead +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Elasticsearch\\to_es_bulk_update(" + "$" + "{" + "1:config" + "}" + ", " + "$" + "{" + "2:index" + "}" + ", " + "$" + "{" + "3:id_factory" + "}" + ", " + "$" + "{" + "4:parameters" + "}" + ")"), + boost: 10 + }, { + label: "to_excel", + type: "function", + detail: "flow\u002Ddsl\u002Dloaders", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ to_excel(Path|string $path) : ExcelLoader +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Excel\\DSL\\to_excel(" + "$" + "{" + "1:path" + "}" + ")"), + boost: 10 + }, { + label: "to_json", + type: "function", + detail: "flow\u002Ddsl\u002Dloaders", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ to_json(Path|string $path, int $flags = 4194304, string $date_time_format = 'Y-m-d\\\\TH:i:sP', bool $put_rows_in_new_lines = false) : JsonLoader +
+
+ @param Path|string $path
@param int $flags - PHP JSON Flags - @deprecate use withFlags method instead
@param string $date_time_format - format for DateTimeInterface::format() - @deprecate use withDateTimeFormat method instead
@param bool $put_rows_in_new_lines - if you want to put each row in a new line - @deprecate use withRowsInNewLines method instead
@return JsonLoader +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\JSON\\to_json(" + "$" + "{" + "1:path" + "}" + ", " + "$" + "{" + "2:flags" + "}" + ", " + "$" + "{" + "3:date_time_format" + "}" + ", " + "$" + "{" + "4:put_rows_in_new_lines" + "}" + ")"), + boost: 10 + }, { + label: "to_json_lines", + type: "function", + detail: "flow\u002Ddsl\u002Dloaders", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ to_json_lines(Path|string $path) : JsonLinesLoader +
+
+ Used to write to a JSON lines https://jsonlines.org/ formatted file.
@param Path|string $path
@return JsonLinesLoader +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\JSON\\to_json_lines(" + "$" + "{" + "1:path" + "}" + ")"), + boost: 10 + }, { + label: "to_meilisearch_bulk_index", + type: "function", + detail: "flow\u002Ddsl\u002Dloaders", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ to_meilisearch_bulk_index(array $config, string $index) : Loader +
+
+ @param array{url: string, apiKey: string, httpClient: ?ClientInterface} $config +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Meilisearch\\to_meilisearch_bulk_index(" + "$" + "{" + "1:config" + "}" + ", " + "$" + "{" + "2:index" + "}" + ")"), + boost: 10 + }, { + label: "to_meilisearch_bulk_update", + type: "function", + detail: "flow\u002Ddsl\u002Dloaders", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ to_meilisearch_bulk_update(array $config, string $index) : Loader +
+
+ @param array{url: string, apiKey: string, httpClient: ?ClientInterface} $config +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Meilisearch\\to_meilisearch_bulk_update(" + "$" + "{" + "1:config" + "}" + ", " + "$" + "{" + "2:index" + "}" + ")"), + boost: 10 + }, { + label: "to_memory", + type: "function", + detail: "flow\u002Ddsl\u002Dloaders", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ to_memory(Memory $memory) : MemoryLoader +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\to_memory(" + "$" + "{" + "1:memory" + "}" + ")"), + boost: 10 + }, { + label: "to_output", + type: "function", + detail: "flow\u002Ddsl\u002Dloaders", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ to_output(int|bool $truncate = 20, Output $output = Flow\\ETL\\Loader\\StreamLoader\\Output::..., Formatter $formatter = Flow\\ETL\\Formatter\\AsciiTableFormatter::..., SchemaFormatter $schemaFormatter = Flow\\ETL\\Row\\Formatter\\ASCIISchemaFormatter::...) : StreamLoader +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\to_output(" + "$" + "{" + "1:truncate" + "}" + ", " + "$" + "{" + "2:output" + "}" + ", " + "$" + "{" + "3:formatter" + "}" + ", " + "$" + "{" + "4:schemaFormatter" + "}" + ")"), + boost: 10 + }, { + label: "to_parquet", + type: "function", + detail: "flow\u002Ddsl\u002Dloaders", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ to_parquet(Path|string $path, Options $options = null, Compressions $compressions = Flow\\Parquet\\ParquetFile\\Compressions::..., Schema $schema = null) : ParquetLoader +
+
+ @param Path|string $path
@param null|Options $options - @deprecated use \`withOptions\` method instead
@param Compressions $compressions - @deprecated use \`withCompressions\` method instead
@param null|Schema $schema - @deprecated use \`withSchema\` method instead +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Parquet\\to_parquet(" + "$" + "{" + "1:path" + "}" + ", " + "$" + "{" + "2:options" + "}" + ", " + "$" + "{" + "3:compressions" + "}" + ", " + "$" + "{" + "4:schema" + "}" + ")"), + boost: 10 + }, { + label: "to_stderr", + type: "function", + detail: "flow\u002Ddsl\u002Dloaders", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ to_stderr(int|bool $truncate = 20, Output $output = Flow\\ETL\\Loader\\StreamLoader\\Output::..., Formatter $formatter = Flow\\ETL\\Formatter\\AsciiTableFormatter::..., SchemaFormatter $schemaFormatter = Flow\\ETL\\Row\\Formatter\\ASCIISchemaFormatter::...) : StreamLoader +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\to_stderr(" + "$" + "{" + "1:truncate" + "}" + ", " + "$" + "{" + "2:output" + "}" + ", " + "$" + "{" + "3:formatter" + "}" + ", " + "$" + "{" + "4:schemaFormatter" + "}" + ")"), + boost: 10 + }, { + label: "to_stdout", + type: "function", + detail: "flow\u002Ddsl\u002Dloaders", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ to_stdout(int|bool $truncate = 20, Output $output = Flow\\ETL\\Loader\\StreamLoader\\Output::..., Formatter $formatter = Flow\\ETL\\Formatter\\AsciiTableFormatter::..., SchemaFormatter $schemaFormatter = Flow\\ETL\\Row\\Formatter\\ASCIISchemaFormatter::...) : StreamLoader +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\to_stdout(" + "$" + "{" + "1:truncate" + "}" + ", " + "$" + "{" + "2:output" + "}" + ", " + "$" + "{" + "3:formatter" + "}" + ", " + "$" + "{" + "4:schemaFormatter" + "}" + ")"), + boost: 10 + }, { + label: "to_stream", + type: "function", + detail: "flow\u002Ddsl\u002Dloaders", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ to_stream(string $uri, int|bool $truncate = 20, Output $output = Flow\\ETL\\Loader\\StreamLoader\\Output::..., string $mode = 'w', Formatter $formatter = Flow\\ETL\\Formatter\\AsciiTableFormatter::..., SchemaFormatter $schemaFormatter = Flow\\ETL\\Row\\Formatter\\ASCIISchemaFormatter::...) : StreamLoader +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\to_stream(" + "$" + "{" + "1:uri" + "}" + ", " + "$" + "{" + "2:truncate" + "}" + ", " + "$" + "{" + "3:output" + "}" + ", " + "$" + "{" + "4:mode" + "}" + ", " + "$" + "{" + "5:formatter" + "}" + ", " + "$" + "{" + "6:schemaFormatter" + "}" + ")"), + boost: 10 + }, { + label: "to_text", + type: "function", + detail: "flow\u002Ddsl\u002Dloaders", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ to_text(Path|string $path, string $new_line_separator = '\\n') : Loader +
+
+ @param Path|string $path
@param string $new_line_separator - default PHP_EOL - @deprecated use withNewLineSeparator method instead
@return Loader +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\Text\\to_text(" + "$" + "{" + "1:path" + "}" + ", " + "$" + "{" + "2:new_line_separator" + "}" + ")"), + boost: 10 + }, { + label: "to_timezone", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ to_timezone(ScalarFunction|DateTimeInterface $value, ScalarFunction|DateTimeZone|string $timeZone) : ToTimeZone +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\to_timezone(" + "$" + "{" + "1:value" + "}" + ", " + "$" + "{" + "2:timeZone" + "}" + ")"), + boost: 10 + }, { + label: "to_transformation", + type: "function", + detail: "flow\u002Ddsl\u002Dloaders", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ to_transformation(Transformer|Transformation $transformer, Loader $loader) : TransformerLoader +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\to_transformation(" + "$" + "{" + "1:transformer" + "}" + ", " + "$" + "{" + "2:loader" + "}" + ")"), + boost: 10 + }, { + label: "to_xml", + type: "function", + detail: "flow\u002Ddsl\u002Dloaders", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ to_xml(Path|string $path, string $root_element_name = 'rows', string $row_element_name = 'row', string $attribute_prefix = '_', string $date_time_format = 'Y-m-d\\\\TH:i:s.uP', XMLWriter $xml_writer = Flow\\ETL\\Adapter\\XML\\XMLWriter\\DOMDocumentWriter::...) : XMLLoader +
+
+ @param Path|string $path
@param string $root_element_name - @deprecated use \`withRootElementName()\` method instead
@param string $row_element_name - @deprecated use \`withRowElementName()\` method instead
@param string $attribute_prefix - @deprecated use \`withAttributePrefix()\` method instead
@param string $date_time_format - @deprecated use \`withDateTimeFormat()\` method instead
@param XMLWriter $xml_writer +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\Adapter\\XML\\to_xml(" + "$" + "{" + "1:path" + "}" + ", " + "$" + "{" + "2:root_element_name" + "}" + ", " + "$" + "{" + "3:row_element_name" + "}" + ", " + "$" + "{" + "4:attribute_prefix" + "}" + ", " + "$" + "{" + "5:date_time_format" + "}" + ", " + "$" + "{" + "6:xml_writer" + "}" + ")"), + boost: 10 + }, { + label: "traceable_filesystem", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ traceable_filesystem(Filesystem $filesystem, FilesystemTelemetryConfig $telemetryConfig) : TraceableFilesystem +
+
+ Wrap a filesystem with telemetry tracing support.
All filesystem and stream operations will be traced according to the configuration. +
+ ` + return div + }, + apply: snippet("\\Flow\\Filesystem\\DSL\\traceable_filesystem(" + "$" + "{" + "1:filesystem" + "}" + ", " + "$" + "{" + "2:telemetryConfig" + "}" + ")"), + boost: 10 + }, { + label: "traceable_postgresql_client", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ traceable_postgresql_client(Client $client, PostgreSqlTelemetryConfig $telemetryConfig) : TraceableClient +
+
+ Wrap a PostgreSQL client with telemetry instrumentation.
Returns a decorator that adds spans, metrics, and logs to all
query and transaction operations following OpenTelemetry conventions.
@param Client\\Client $client The PostgreSQL client to instrument
@param PostgreSqlTelemetryConfig $telemetryConfig Telemetry configuration
@example
$client = pgsql_client(pgsql_connection(\'host=localhost dbname=mydb\'));
$traceableClient = traceable_postgresql_client(
$client,
postgresql_telemetry_config(
telemetry(resource([\'service.name\' => \'my-app\'])),
new SystemClock(),
postgresql_telemetry_options(
traceQueries: true,
traceTransactions: true,
collectMetrics: true,
logQueries: true,
maxQueryLength: 500,
),
),
);
// All operations now traced
$traceableClient->transaction(function (Client $client) {
$user = $client->fetchOne(\'SELECT * FROM users WHERE id = $1\', [123]);
$client->execute(\'UPDATE users SET last_login = NOW() WHERE id = $1\', [123]);
}); +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\traceable_postgresql_client(" + "$" + "{" + "1:client" + "}" + ", " + "$" + "{" + "2:telemetryConfig" + "}" + ")"), + boost: 10 + }, { + label: "tracer_provider", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ tracer_provider(SpanProcessor $processor, ClockInterface $clock, ContextStorage $contextStorage, Sampler $sampler = Flow\\Telemetry\\Tracer\\Sampler\\AlwaysOnSampler::..., SpanLimits $limits = Flow\\Telemetry\\Tracer\\SpanLimits::...) : TracerProvider +
+
+ Create a TracerProvider.
Creates a provider that uses a SpanProcessor for processing spans.
For void/disabled tracing, pass void_processor().
For memory-based testing, pass memory_processor() with exporters.
@param SpanProcessor $processor The processor for spans
@param ClockInterface $clock The clock for timestamps
@param ContextStorage $contextStorage Storage for context propagation
@param Sampler $sampler Sampling strategy for spans
@param SpanLimits $limits Limits for span attributes, events, and links +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\tracer_provider(" + "$" + "{" + "1:processor" + "}" + ", " + "$" + "{" + "2:clock" + "}" + ", " + "$" + "{" + "3:contextStorage" + "}" + ", " + "$" + "{" + "4:sampler" + "}" + ", " + "$" + "{" + "5:limits" + "}" + ")"), + boost: 10 + }, { + label: "trace_based_exemplar_filter", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ trace_based_exemplar_filter() : TraceBasedExemplarFilter +
+
+ Create a TraceBasedExemplarFilter.
Records exemplars only when the span is sampled (has SAMPLED trace flag).
This is the default filter, balancing exemplar collection with performance. +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\trace_based_exemplar_filter()"), + boost: 10 + }, { + label: "trace_id", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ trace_id(string $hex = null) : TraceId +
+
+ Create a TraceId.
If a hex string is provided, creates a TraceId from it.
Otherwise, generates a new random TraceId.
@param null|string $hex Optional 32-character hexadecimal string
@throws \\InvalidArgumentException if the hex string is invalid +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\trace_id(" + "$" + "{" + "1:hex" + "}" + ")"), + boost: 10 + }, { + label: "transaction_snapshot", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ transaction_snapshot(string $snapshotId) : SetTransactionFinalStep +
+
+ Create a SET TRANSACTION SNAPSHOT builder.
Example: transaction_snapshot(\'00000003-0000001A-1\')
Produces: SET TRANSACTION SNAPSHOT \'00000003-0000001A-1\' +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\transaction_snapshot(" + "$" + "{" + "1:snapshotId" + "}" + ")"), + boost: 10 + }, { + label: "truncate_table", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ truncate_table(string $tables) : TruncateFinalStep +
+
+ Create a TRUNCATE TABLE builder.
@param string ...$tables Table names to truncate +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\truncate_table(" + "$" + "{" + "1:tables" + "}" + ")"), + boost: 10 + }, { + label: "typed", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ typed(mixed $value, PostgreSqlType $targetType) : TypedValue +
+
+ Wrap a value with explicit PostgreSQL type information for parameter binding.
Use when auto-detection isn\'t sufficient or when you need to specify
the exact PostgreSQL type (since one PHP type can map to multiple PostgreSQL types):
- int could be INT2, INT4, or INT8
- string could be TEXT, VARCHAR, or CHAR
- array must always use typed() since auto-detection cannot determine element type
- DateTimeInterface could be TIMESTAMP or TIMESTAMPTZ
- Json could be JSON or JSONB
@param mixed $value The value to bind
@param PostgreSqlType $targetType The PostgreSQL type to convert the value to
@example
$client->fetch(
\'SELECT * FROM users WHERE id = $1 AND tags = $2\',
[
typed(\'550e8400-e29b-41d4-a716-446655440000\', PostgreSqlType::UUID),
typed([\'tag1\', \'tag2\'], PostgreSqlType::TEXT_ARRAY),
]
); +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\typed(" + "$" + "{" + "1:value" + "}" + ", " + "$" + "{" + "2:targetType" + "}" + ")"), + boost: 10 + }, { + label: "types", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ types(Type $types) : Types +
+
+ @template T
@param Type ...$types
@return Types +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\types(" + "$" + "{" + "1:types" + "}" + ")"), + boost: 10 + }, { + label: "type_array", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_array() : Type +
+
+ @return Type> +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_array()"), + boost: 10 + }, { + label: "type_attr", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_attr(string $name, DataType $type) : TypeAttribute +
+
+ Creates a type attribute for composite types.
Example: type_attr(\'name\', data_type_text())
Produces: name text
Example: type_attr(\'description\', data_type_text())->collate(\'en_US\')
Produces: description text COLLATE \"en_US\"
@param string $name The attribute name
@param DataType $type The attribute type
@return TypeAttribute Type attribute value object +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\type_attr(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:type" + "}" + ")"), + boost: 10 + }, { + label: "type_boolean", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_boolean() : Type +
+
+ @return Type +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_boolean()"), + boost: 10 + }, { + label: "type_callable", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_callable() : Type +
+
+ @return Type +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_callable()"), + boost: 10 + }, { + label: "type_class_string", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_class_string(string $class = null) : Type +
+
+ @template T of object
@param null|class-string $class
@return ($class is null ? Type : Type>) +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_class_string(" + "$" + "{" + "1:class" + "}" + ")"), + boost: 10 + }, { + label: "type_date", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_date() : Type +
+
+ @deprecated please use \\Flow\\Types\\DSL\\type_date() : DateType
@return Type<\\DateTimeInterface> +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\type_date()"), + boost: 10 + }, { + label: "type_date", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_date() : Type +
+
+ @return Type<\\DateTimeInterface> +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_date()"), + boost: 10 + }, { + label: "type_datetime", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_datetime() : Type +
+
+ @return Type<\\DateTimeInterface> +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_datetime()"), + boost: 10 + }, { + label: "type_enum", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_enum(string $class) : Type +
+
+ @template T of UnitEnum
@param class-string $class
@return Type +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_enum(" + "$" + "{" + "1:class" + "}" + ")"), + boost: 10 + }, { + label: "type_equals", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_equals(Type $left, Type $right) : bool +
+
+ @param Type $left
@param Type $right +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_equals(" + "$" + "{" + "1:left" + "}" + ", " + "$" + "{" + "2:right" + "}" + ")"), + boost: 10 + }, { + label: "type_float", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_float() : Type +
+
+ @return Type +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_float()"), + boost: 10 + }, { + label: "type_from_array", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_from_array(array $data) : Type +
+
+ @param array $data
@return Type +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_from_array(" + "$" + "{" + "1:data" + "}" + ")"), + boost: 10 + }, { + label: "type_html", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_html() : Type +
+
+ @return Type +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_html()"), + boost: 10 + }, { + label: "type_html_element", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_html_element() : Type +
+
+ @return Type +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_html_element()"), + boost: 10 + }, { + label: "type_instance_of", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_instance_of(string $class) : Type +
+
+ @template T of object
@param class-string $class
@return Type +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_instance_of(" + "$" + "{" + "1:class" + "}" + ")"), + boost: 10 + }, { + label: "type_int", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_int() : Type +
+
+ @deprecated please use \\Flow\\Types\\DSL\\type_integer() : IntegerType
@return Type +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\type_int()"), + boost: 10 + }, { + label: "type_integer", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_integer() : Type +
+
+ @return Type +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_integer()"), + boost: 10 + }, { + label: "type_intersection", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_intersection(Type $first, Type $second, Type $types) : Type +
+
+ @template T
@param Type $first
@param Type $second
@param Type ...$types
@return Type +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_intersection(" + "$" + "{" + "1:first" + "}" + ", " + "$" + "{" + "2:second" + "}" + ", " + "$" + "{" + "3:types" + "}" + ")"), + boost: 10 + }, { + label: "type_is", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_is(Type $type, string $typeClass) : bool +
+
+ @template T
@param Type $type
@param class-string> $typeClass +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_is(" + "$" + "{" + "1:type" + "}" + ", " + "$" + "{" + "2:typeClass" + "}" + ")"), + boost: 10 + }, { + label: "type_is_any", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_is_any(Type $type, string $typeClass, string $typeClasses) : bool +
+
+ @template T
@param Type $type
@param class-string> $typeClass
@param class-string> ...$typeClasses +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_is_any(" + "$" + "{" + "1:type" + "}" + ", " + "$" + "{" + "2:typeClass" + "}" + ", " + "$" + "{" + "3:typeClasses" + "}" + ")"), + boost: 10 + }, { + label: "type_is_nullable", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_is_nullable(Type $type) : bool +
+
+ @template T
@param Type $type +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_is_nullable(" + "$" + "{" + "1:type" + "}" + ")"), + boost: 10 + }, { + label: "type_json", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_json() : Type +
+
+ @return Type +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_json()"), + boost: 10 + }, { + label: "type_list", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_list(Type $element) : ListType +
+
+ @template T
@param Type $element
@return ListType +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_list(" + "$" + "{" + "1:element" + "}" + ")"), + boost: 10 + }, { + label: "type_literal", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_literal(string|int|float|bool $value) : LiteralType +
+
+ @template T of bool|float|int|string
@param T $value
@return LiteralType +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_literal(" + "$" + "{" + "1:value" + "}" + ")"), + boost: 10 + }, { + label: "type_map", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_map(Type $key_type, Type $value_type) : MapType +
+
+ @template TKey of array-key
@template TValue
@param Type $key_type
@param Type $value_type
@return MapType +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_map(" + "$" + "{" + "1:key_type" + "}" + ", " + "$" + "{" + "2:value_type" + "}" + ")"), + boost: 10 + }, { + label: "type_mixed", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_mixed() : Type +
+
+ @return Type +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_mixed()"), + boost: 10 + }, { + label: "type_non_empty_string", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_non_empty_string() : Type +
+
+ @return Type +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_non_empty_string()"), + boost: 10 + }, { + label: "type_null", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_null() : Type +
+
+ @return Type +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_null()"), + boost: 10 + }, { + label: "type_numeric_string", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_numeric_string() : Type +
+
+ @return Type +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_numeric_string()"), + boost: 10 + }, { + label: "type_object", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_object() : Type +
+
+ @return Type + + ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_object()"), + boost: 10 + }, { + label: "type_optional", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_optional(Type $type) : Type +
+
+ @template T
@param Type $type
@return Type +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_optional(" + "$" + "{" + "1:type" + "}" + ")"), + boost: 10 + }, { + label: "type_positive_integer", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_positive_integer() : Type +
+
+ @return Type> +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_positive_integer()"), + boost: 10 + }, { + label: "type_resource", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_resource() : Type +
+
+ @return Type +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_resource()"), + boost: 10 + }, { + label: "type_scalar", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_scalar() : Type +
+
+ @return Type +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_scalar()"), + boost: 10 + }, { + label: "type_string", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_string() : Type +
+
+ @return Type +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_string()"), + boost: 10 + }, { + label: "type_structure", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_structure(array $elements = [], array $optional_elements = [], bool $allow_extra = false) : StructureType +
+
+ @template T
@param array> $elements
@param array> $optional_elements
@return StructureType +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_structure(" + "$" + "{" + "1:elements" + "}" + ", " + "$" + "{" + "2:optional_elements" + "}" + ", " + "$" + "{" + "3:allow_extra" + "}" + ")"), + boost: 10 + }, { + label: "type_time", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_time() : Type +
+
+ @return Type<\\DateInterval> +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_time()"), + boost: 10 + }, { + label: "type_time_zone", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_time_zone() : Type +
+
+ @return Type<\\DateTimeZone> +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_time_zone()"), + boost: 10 + }, { + label: "type_union", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_union(Type $first, Type $second, Type $types) : Type +
+
+ @template T
@template T
@template T
@param Type $first
@param Type $second
@param Type ...$types
@return Type +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_union(" + "$" + "{" + "1:first" + "}" + ", " + "$" + "{" + "2:second" + "}" + ", " + "$" + "{" + "3:types" + "}" + ")"), + boost: 10 + }, { + label: "type_uuid", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_uuid() : Type +
+
+ @return Type +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_uuid()"), + boost: 10 + }, { + label: "type_xml", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_xml() : Type +
+
+ @return Type<\\DOMDocument> +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_xml()"), + boost: 10 + }, { + label: "type_xml_element", + type: "function", + detail: "flow\u002Ddsl\u002Dtype", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ type_xml_element() : Type +
+
+ @return Type<\\DOMElement> +
+ ` + return div + }, + apply: snippet("\\Flow\\Types\\DSL\\type_xml_element()"), + boost: 10 + }, { + label: "ulid", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ ulid(ScalarFunction|string|null $value = null) : Ulid +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\ulid(" + "$" + "{" + "1:value" + "}" + ")"), + boost: 10 + }, { + label: "unique_constraint", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ unique_constraint(string $columns) : UniqueConstraint +
+
+ Create a UNIQUE constraint.
@param string ...$columns Columns that must be unique together +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\unique_constraint(" + "$" + "{" + "1:columns" + "}" + ")"), + boost: 10 + }, { + label: "update", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ update() : UpdateTableStep +
+
+ Create a new UPDATE query builder. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\update()"), + boost: 10 + }, { + label: "upper", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ upper(ScalarFunction|string $value) : ToUpper +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\upper(" + "$" + "{" + "1:value" + "}" + ")"), + boost: 10 + }, { + label: "uuid_entry", + type: "function", + detail: "flow\u002Ddsl\u002Dentries", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ uuid_entry(string $name, Uuid|string|null $value, Metadata $metadata = null) : Entry +
+
+ @return Entry +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\uuid_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), + boost: 10 + }, { + label: "uuid_schema", + type: "function", + detail: "flow\u002Ddsl\u002Dschema", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ uuid_schema(string $name, bool $nullable = false, Metadata $metadata = null) : UuidDefinition +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\uuid_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:nullable" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), + boost: 10 + }, { + label: "uuid_v4", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ uuid_v4() : Uuid +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\uuid_v4()"), + boost: 10 + }, { + label: "uuid_v7", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ uuid_v7(ScalarFunction|DateTimeInterface|null $value = null) : Uuid +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\uuid_v7(" + "$" + "{" + "1:value" + "}" + ")"), + boost: 10 + }, { + label: "vacuum", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ vacuum() : VacuumFinalStep +
+
+ Create a VACUUM builder.
Example: vacuum()->table(\'users\')
Produces: VACUUM users +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\vacuum()"), + boost: 10 + }, { + label: "values_table", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ values_table(RowExpression $rows) : ValuesTable +
+
+ Create a VALUES clause as a table reference.
Usage:
select()->from(
values_table(
row_expr([literal(1), literal(\'Alice\')]),
row_expr([literal(2), literal(\'Bob\')])
)->as(\'t\', [\'id\', \'name\'])
)
Generates: SELECT * FROM (VALUES (1, \'Alice\'), (2, \'Bob\')) AS t(id, name) +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\values_table(" + "$" + "{" + "1:rows" + "}" + ")"), + boost: 10 + }, { + label: "value_normalizer", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ value_normalizer() : ValueNormalizer +
+
+ Create a ValueNormalizer for converting arbitrary PHP values to Telemetry attribute types.
The normalizer handles:
- null → \'null\' string
- scalars (string, int, float, bool) → unchanged
- DateTimeInterface → unchanged
- Throwable → unchanged
- arrays → recursively normalized
- objects with __toString() → string cast
- objects without __toString() → class name
- other types → get_debug_type() result
Example usage:
\`\`\`php
$normalizer = value_normalizer();
$normalized = $normalizer->normalize($value);
\`\`\` +
+ ` + return div + }, + apply: snippet("\\Flow\\Bridge\\Monolog\\Telemetry\\DSL\\value_normalizer()"), + boost: 10 + }, { + label: "void_log_exporter", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ void_log_exporter() : VoidLogExporter +
+
+ Create a VoidLogExporter.
No-op log exporter that discards all data.
Use this when telemetry export is disabled to minimize overhead. +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\void_log_exporter()"), + boost: 10 + }, { + label: "void_log_processor", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ void_log_processor() : VoidLogProcessor +
+
+ Create a VoidLogProcessor.
No-op log processor that discards all data.
Use this when logging is disabled to minimize overhead. +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\void_log_processor()"), + boost: 10 + }, { + label: "void_metric_exporter", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ void_metric_exporter() : VoidMetricExporter +
+
+ Create a VoidMetricExporter.
No-op metric exporter that discards all data.
Use this when telemetry export is disabled to minimize overhead. +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\void_metric_exporter()"), + boost: 10 + }, { + label: "void_metric_processor", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ void_metric_processor() : VoidMetricProcessor +
+
+ Create a VoidMetricProcessor.
No-op metric processor that discards all data.
Use this when metrics collection is disabled to minimize overhead. +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\void_metric_processor()"), + boost: 10 + }, { + label: "void_span_exporter", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ void_span_exporter() : VoidSpanExporter +
+
+ Create a VoidSpanExporter.
No-op span exporter that discards all data.
Use this when telemetry export is disabled to minimize overhead. +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\void_span_exporter()"), + boost: 10 + }, { + label: "void_span_processor", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ void_span_processor() : VoidSpanProcessor +
+
+ Create a VoidSpanProcessor.
No-op span processor that discards all data.
Use this when tracing is disabled to minimize overhead. +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\void_span_processor()"), + boost: 10 + }, { + label: "w3c_baggage", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ w3c_baggage() : W3CBaggage +
+
+ Create a W3CBaggage propagator.
Implements W3C Baggage specification for propagating application-specific
key-value pairs using the baggage header. +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\w3c_baggage()"), + boost: 10 + }, { + label: "w3c_trace_context", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ w3c_trace_context() : W3CTraceContext +
+
+ Create a W3CTraceContext propagator.
Implements W3C Trace Context specification for propagating trace context
using traceparent and tracestate headers. +
+ ` + return div + }, + apply: snippet("\\Flow\\Telemetry\\DSL\\w3c_trace_context()"), + boost: 10 + }, { + label: "when", + type: "function", + detail: "flow\u002Ddsl\u002Dscalar\u002Dfunctions", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ when(mixed $condition, mixed $then, mixed $else = null) : When +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\when(" + "$" + "{" + "1:condition" + "}" + ", " + "$" + "{" + "2:then" + "}" + ", " + "$" + "{" + "3:else" + "}" + ")"), + boost: 10 + }, { + label: "when", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ when(Expression $condition, Expression $result) : WhenClause +
+
+ Create a WHEN clause for CASE expression. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\when(" + "$" + "{" + "1:condition" + "}" + ", " + "$" + "{" + "2:result" + "}" + ")"), + boost: 10 + }, { + label: "window", + type: "function", + detail: "flow\u002Ddsl\u002Ddata\u002Dframe", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ window() : Window +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\window()"), + boost: 10 + }, { + label: "window_def", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ window_def(string $name, array $partitionBy = [], array $orderBy = [], WindowFrame $frame = null) : WindowDefinition +
+
+ Create a window definition for WINDOW clause.
@param string $name Window name
@param list $partitionBy PARTITION BY expressions
@param list $orderBy ORDER BY items
@param null|WindowFrame $frame Window frame specification +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\window_def(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:partitionBy" + "}" + ", " + "$" + "{" + "3:orderBy" + "}" + ", " + "$" + "{" + "4:frame" + "}" + ")"), + boost: 10 + }, { + label: "window_frame", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ window_frame(FrameMode $mode, FrameBound $start, FrameBound $end = null, FrameExclusion $exclusion = Flow\\PostgreSql\\QueryBuilder\\Clause\\FrameExclusion::...) : WindowFrame +
+
+ Create a window frame specification. +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\window_frame(" + "$" + "{" + "1:mode" + "}" + ", " + "$" + "{" + "2:start" + "}" + ", " + "$" + "{" + "3:end" + "}" + ", " + "$" + "{" + "4:exclusion" + "}" + ")"), + boost: 10 + }, { + label: "window_func", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ window_func(string $name, array $args = [], array $partitionBy = [], array $orderBy = []) : WindowFunction +
+
+ Create a window function.
@param string $name Function name
@param list $args Function arguments
@param list $partitionBy PARTITION BY expressions
@param list $orderBy ORDER BY items +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\window_func(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:args" + "}" + ", " + "$" + "{" + "3:partitionBy" + "}" + ", " + "$" + "{" + "4:orderBy" + "}" + ")"), + boost: 10 + }, { + label: "with", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ with(CTE $ctes) : WithBuilder +
+
+ Create a WITH clause builder for CTEs.
Example: with(cte(\'users\', $subquery))->select(star())->from(table(\'users\'))
Example: with(cte(\'a\', $q1), cte(\'b\', $q2))->recursive()->select(...)->from(table(\'a\')) +
+ ` + return div + }, + apply: snippet("\\Flow\\PostgreSql\\DSL\\with(" + "$" + "{" + "1:ctes" + "}" + ")"), + boost: 10 + }, { + label: "with_entry", + type: "function", + detail: "flow\u002Ddsl\u002Dhelpers", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ with_entry(string $name, ScalarFunction $function) : WithEntry +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\with_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:function" + "}" + ")"), + boost: 10 + }, { + label: "write_with_retries", + type: "function", + detail: "flow\u002Ddsl\u002Dloaders", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ write_with_retries(Loader $loader, RetryStrategy $retry_strategy = Flow\\ETL\\Retry\\RetryStrategy\\AnyThrowable::..., DelayFactory $delay_factory = Flow\\ETL\\Retry\\DelayFactory\\Fixed\\FixedMilliseconds::..., Sleep $sleep = Flow\\ETL\\Time\\SystemSleep::...) : RetryLoader +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\write_with_retries(" + "$" + "{" + "1:loader" + "}" + ", " + "$" + "{" + "2:retry_strategy" + "}" + ", " + "$" + "{" + "3:delay_factory" + "}" + ", " + "$" + "{" + "4:sleep" + "}" + ")"), + boost: 10 + }, { + label: "xml_element_entry", + type: "function", + detail: "flow\u002Ddsl\u002Dentries", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ xml_element_entry(string $name, DOMElement|string|null $value, Metadata $metadata = null) : Entry +
+
+ @return Entry +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\xml_element_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), + boost: 10 + }, { + label: "xml_element_schema", + type: "function", + detail: "flow\u002Ddsl\u002Dschema", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ xml_element_schema(string $name, bool $nullable = false, Metadata $metadata = null) : XMLElementDefinition +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\xml_element_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:nullable" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), + boost: 10 + }, { + label: "xml_entry", + type: "function", + detail: "flow\u002Ddsl\u002Dentries", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ xml_entry(string $name, DOMDocument|string|null $value, Metadata $metadata = null) : Entry +
+
+ @return Entry +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\xml_entry(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:value" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), + boost: 10 + }, { + label: "xml_schema", + type: "function", + detail: "flow\u002Ddsl\u002Dschema", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ xml_schema(string $name, bool $nullable = false, Metadata $metadata = null) : XMLDefinition +
+ ` + return div + }, + apply: snippet("\\Flow\\ETL\\DSL\\xml_schema(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:nullable" + "}" + ", " + "$" + "{" + "3:metadata" + "}" + ")"), + boost: 10 + } ] + +/** + * DSL function completion source for CodeMirror + * @param {CompletionContext} context + * @returns {CompletionResult|null} + */ +export function dslCompletions(context) { + // Get text before cursor to check context + const maxLookback = 100 + const docText = context.state.doc.toString() + const startPos = Math.max(0, context.pos - maxLookback) + const textBefore = docText.slice(startPos, context.pos) + + // Don't show DSL functions after -> (method chaining context) + // DSL functions are standalone, not methods + if (new RegExp('->\\w*$').test(textBefore)) { + return null + } + + // Match word being typed + const word = context.matchBefore(/\w+/) + + // If no word and not explicit, don't show completions + if (!word && !context.explicit) { + return null + } + + // Filter functions based on what's being typed + const prefix = word ? word.text.toLowerCase() : '' + const options = dslFunctions.filter(func => + !prefix || func.label.toLowerCase().startsWith(prefix) + ) + + return { + from: word ? word.from : context.pos, + options: options, + validFor: new RegExp('^\\w*$') // Reuse while typing word characters + } +} diff --git a/web/landing/tests/Flow/Website/Tests/Fixtures/Completers/flow.js b/web/landing/tests/Flow/Website/Tests/Fixtures/Completers/flow.js new file mode 100644 index 0000000000..1c8793bb3b --- /dev/null +++ b/web/landing/tests/Flow/Website/Tests/Fixtures/Completers/flow.js @@ -0,0 +1,188 @@ +/** + * CodeMirror Completer for Flow PHP Flow Methods + * + * Flow methods: 5 + * Flow-returning functions: 2 + * + * This completer triggers after Flow-returning functions: df()->, data_frame()-> + */ + +import { CompletionContext, snippet } from "@codemirror/autocomplete" + +// Map of Flow-returning functions from dsl.json (df, data_frame) +const flowFunctions = [ + "df", "data_frame"] + +// Flow methods +const flowMethods = [ + { + label: "setUp", + type: "method", + detail: "Flow\\\\ETL\\\\Flow", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ setUp(ConfigBuilder|Config $config) : self +
+ ` + return div + }, + apply: snippet("setUp(" + "$" + "{" + "1:config" + "}" + ")"), + boost: 10 + }, { + label: "extract", + type: "method", + detail: "Flow\\\\ETL\\\\Flow", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ extract(Extractor $extractor) : DataFrame +
+ ` + return div + }, + apply: snippet("extract(" + "$" + "{" + "1:extractor" + "}" + ")"), + boost: 10 + }, { + label: "from", + type: "method", + detail: "Flow\\\\ETL\\\\Flow", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ from(Extractor $extractor) : DataFrame +
+ ` + return div + }, + apply: snippet("from(" + "$" + "{" + "1:extractor" + "}" + ")"), + boost: 10 + }, { + label: "process", + type: "method", + detail: "Flow\\\\ETL\\\\Flow", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ process(Rows $rows) : DataFrame +
+ ` + return div + }, + apply: snippet("process(" + "$" + "{" + "1:rows" + "}" + ")"), + boost: 10 + }, { + label: "read", + type: "method", + detail: "Flow\\\\ETL\\\\Flow", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ read(Extractor $extractor) : DataFrame +
+
+ Alias for Flow::extract function. +
+ ` + return div + }, + apply: snippet("read(" + "$" + "{" + "1:extractor" + "}" + ")"), + boost: 10 + } ] + +/** + * Flow method completion source for CodeMirror + * @param {CompletionContext} context + * @returns {CompletionResult|null} + */ +export function flowCompletions(context) { + // Get text before cursor (potentially across multiple lines) + // Look back up to 2000 characters to find the pattern + const maxLookback = 2000 + const docText = context.state.doc.toString() + const startPos = Math.max(0, context.pos - maxLookback) + const textBefore = docText.slice(startPos, context.pos) + + // Check if we're directly after -> (method chaining context) + if (!new RegExp('->\\w*$').test(textBefore)) { + return null + } + + // Check if we're after a Flow-returning function: df( or data_frame( + // Find all matching functions and check if any are at top level with -> + const flowFuncPattern = new RegExp('\\b(' + flowFunctions.join('|') + ')\\s*\\(', 'g') + let matches = [] + let match + + while ((match = flowFuncPattern.exec(textBefore)) !== null) { + matches.push({ name: match[1], index: match.index, endOfName: match.index + match[0].length }) + } + + // Walk backwards from cursor tracking parenthesis depth + let depth = 0 + let i = textBefore.length - 1 + + // Skip back past the -> and any word being typed + while (i >= 0 && /[\w>-]/.test(textBefore[i])) { + i-- + } + + // Now count parentheses going backwards + while (i >= 0) { + if (textBefore[i] === ')') depth++ + else if (textBefore[i] === '(') { + depth-- + // If we're back to depth 0, check if this ( belongs to a Flow function + if (depth === 0) { + // Look backwards to find the function name + let funcEnd = i + while (funcEnd > 0 && /\s/.test(textBefore[funcEnd - 1])) { + funcEnd-- + } + let funcStart = funcEnd + while (funcStart > 0 && /\w/.test(textBefore[funcStart - 1])) { + funcStart-- + } + const funcName = textBefore.slice(funcStart, funcEnd) + + // Check if this is a Flow-returning function + if (flowFunctions.includes(funcName)) { + // This is it! We're directly after this function call + return continueWithCompletions() + } + // If not, we're inside some other call + return null + } + } + i-- + } + + return null + + function continueWithCompletions() { + // Match word being typed (method name after ->) + const word = context.matchBefore(/\w*/) + + // If no word and not explicit, don't show completions + if (!word && !context.explicit) { + return null + } + + // Filter methods based on what's being typed + const prefix = word ? word.text.toLowerCase() : '' + const options = flowMethods.filter(method => + !prefix || method.label.toLowerCase().startsWith(prefix) + ) + + return { + from: word ? word.from : context.pos, + options: options, + validFor: new RegExp('^\\w*$') // Reuse while typing word characters + } + } +} diff --git a/web/landing/tests/Flow/Website/Tests/Fixtures/Completers/scalarfunctionchain.js b/web/landing/tests/Flow/Website/Tests/Fixtures/Completers/scalarfunctionchain.js new file mode 100644 index 0000000000..11e3e46b35 --- /dev/null +++ b/web/landing/tests/Flow/Website/Tests/Fixtures/Completers/scalarfunctionchain.js @@ -0,0 +1,2065 @@ +/** + * CodeMirror Completer for Flow PHP ScalarFunctionChain Methods + * + * ScalarFunctionChain methods: 124 + * ScalarFunctionChain-returning functions: 53 + * + * This completer triggers after ScalarFunctionChain-returning DSL functions + */ + +import { CompletionContext, snippet } from "@codemirror/autocomplete" + +// DSL functions that return ScalarFunctionChain (have scalar_function_chain: true) +const scalarFunctionChainFunctions = [ + "col", "entry", "ref", "optional", "lit", "exists", "when", "array_get", "array_get_collection", "array_get_collection_first", "array_exists", "array_merge", "array_merge_collection", "array_key_rename", "array_keys_style_convert", "array_sort", "array_reverse", "now", "between", "to_date_time", "to_date", "date_time_format", "split", "combine", "concat", "concat_ws", "hash", "cast", "coalesce", "call", "array_unpack", "array_expand", "size", "uuid_v4", "uuid_v7", "ulid", "lower", "capitalize", "upper", "not", "to_timezone", "regex_replace", "regex_match_all", "regex_match", "regex", "regex_all", "sprintf", "sanitize", "round", "number_format", "greatest", "least", "match_cases"] + +// ScalarFunctionChain methods +const scalarFunctionChainMethods = [ + { + label: "and", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ and(ScalarFunction $function) : All +
+ ` + return div + }, + apply: snippet("and(" + "$" + "{" + "1:function" + "}" + ")"), + boost: 10 + }, { + label: "andNot", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ andNot(ScalarFunction $function) : All +
+ ` + return div + }, + apply: snippet("andNot(" + "$" + "{" + "1:function" + "}" + ")"), + boost: 10 + }, { + label: "append", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ append(ScalarFunction|string $suffix) : Append +
+ ` + return div + }, + apply: snippet("append(" + "$" + "{" + "1:suffix" + "}" + ")"), + boost: 10 + }, { + label: "arrayFilter", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ arrayFilter(mixed $value) : ArrayFilter +
+
+ Filters an array by removing all elements that matches passed value.
Applicable to all data structures that can be converted to an array:
- json
- list
- map
- structure. +
+ ` + return div + }, + apply: snippet("arrayFilter(" + "$" + "{" + "1:value" + "}" + ")"), + boost: 10 + }, { + label: "arrayGet", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ arrayGet(ScalarFunction|string $path) : ArrayGet +
+ ` + return div + }, + apply: snippet("arrayGet(" + "$" + "{" + "1:path" + "}" + ")"), + boost: 10 + }, { + label: "arrayGetCollection", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ arrayGetCollection(ScalarFunction|array $keys) : ArrayGetCollection +
+
+ @param array $keys +
+ ` + return div + }, + apply: snippet("arrayGetCollection(" + "$" + "{" + "1:keys" + "}" + ")"), + boost: 10 + }, { + label: "arrayGetCollectionFirst", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ arrayGetCollectionFirst(string $keys) : ArrayGetCollection +
+ ` + return div + }, + apply: snippet("arrayGetCollectionFirst(" + "$" + "{" + "1:keys" + "}" + ")"), + boost: 10 + }, { + label: "arrayKeep", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ arrayKeep(mixed $value) : ArrayKeep +
+
+ Filters an array by keeping only elements that matches passed value.
Applicable to all data structures that can be converted to an array:
- json
- list
- map
- structure. +
+ ` + return div + }, + apply: snippet("arrayKeep(" + "$" + "{" + "1:value" + "}" + ")"), + boost: 10 + }, { + label: "arrayKeys", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ arrayKeys() : ArrayKeys +
+
+ Returns all keys from an array, ignoring the values.
Applicable to all data structures that can be converted to an array:
- json
- list
- map
- structure. +
+ ` + return div + }, + apply: snippet("arrayKeys()"), + boost: 10 + }, { + label: "arrayMerge", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ arrayMerge(ScalarFunction|array $ref) : ArrayMerge +
+
+ @param array $ref +
+ ` + return div + }, + apply: snippet("arrayMerge(" + "$" + "{" + "1:ref" + "}" + ")"), + boost: 10 + }, { + label: "arrayMergeCollection", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ arrayMergeCollection() : ArrayMergeCollection +
+ ` + return div + }, + apply: snippet("arrayMergeCollection()"), + boost: 10 + }, { + label: "arrayPathExists", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ arrayPathExists(ScalarFunction|string $path) : ArrayPathExists +
+ ` + return div + }, + apply: snippet("arrayPathExists(" + "$" + "{" + "1:path" + "}" + ")"), + boost: 10 + }, { + label: "arrayReverse", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ arrayReverse(ScalarFunction|bool $preserveKeys = false) : ArrayReverse +
+ ` + return div + }, + apply: snippet("arrayReverse(" + "$" + "{" + "1:preserveKeys" + "}" + ")"), + boost: 10 + }, { + label: "arraySort", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ arraySort(ScalarFunction|Sort|null $sortFunction = null, ScalarFunction|int|null $flags = null, ScalarFunction|bool $recursive = true) : ArraySort +
+ ` + return div + }, + apply: snippet("arraySort(" + "$" + "{" + "1:sortFunction" + "}" + ", " + "$" + "{" + "2:flags" + "}" + ", " + "$" + "{" + "3:recursive" + "}" + ")"), + boost: 10 + }, { + label: "arrayValues", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ arrayValues() : ArrayValues +
+
+ Returns all values from an array, ignoring the keys.
Applicable to all data structures that can be converted to an array:
- json
- list
- map
- structure. +
+ ` + return div + }, + apply: snippet("arrayValues()"), + boost: 10 + }, { + label: "ascii", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ ascii() : Ascii +
+ ` + return div + }, + apply: snippet("ascii()"), + boost: 10 + }, { + label: "between", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ between(mixed $lowerBoundRef, mixed $upperBoundRef, ScalarFunction|Boundary $boundary = Flow\\ETL\\Function\\Between\\Boundary::...) : Between +
+
+ @param mixed|ScalarFunction $lowerBoundRef
@param mixed|ScalarFunction $upperBoundRef
@param Boundary|ScalarFunction $boundary +
+ ` + return div + }, + apply: snippet("between(" + "$" + "{" + "1:lowerBoundRef" + "}" + ", " + "$" + "{" + "2:upperBoundRef" + "}" + ", " + "$" + "{" + "3:boundary" + "}" + ")"), + boost: 10 + }, { + label: "binaryLength", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ binaryLength() : BinaryLength +
+ ` + return div + }, + apply: snippet("binaryLength()"), + boost: 10 + }, { + label: "call", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ call(ScalarFunction|callable $callable, array $arguments = [], string|int $refAlias = 0, Type $returnType = null) : CallUserFunc +
+
+ @param array $arguments
@param Type $returnType +
+ ` + return div + }, + apply: snippet("call(" + "$" + "{" + "1:callable" + "}" + ", " + "$" + "{" + "2:arguments" + "}" + ", " + "$" + "{" + "3:refAlias" + "}" + ", " + "$" + "{" + "4:returnType" + "}" + ")"), + boost: 10 + }, { + label: "capitalize", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ capitalize() : Capitalize +
+ ` + return div + }, + apply: snippet("capitalize()"), + boost: 10 + }, { + label: "cast", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ cast(Type|string $type) : Cast +
+
+ @param string|Type $type +
+ ` + return div + }, + apply: snippet("cast(" + "$" + "{" + "1:type" + "}" + ")"), + boost: 10 + }, { + label: "chunk", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ chunk(ScalarFunction|int $size) : Chunk +
+ ` + return div + }, + apply: snippet("chunk(" + "$" + "{" + "1:size" + "}" + ")"), + boost: 10 + }, { + label: "coalesce", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ coalesce(ScalarFunction $params) : Coalesce +
+ ` + return div + }, + apply: snippet("coalesce(" + "$" + "{" + "1:params" + "}" + ")"), + boost: 10 + }, { + label: "codePointLength", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ codePointLength() : CodePointLength +
+ ` + return div + }, + apply: snippet("codePointLength()"), + boost: 10 + }, { + label: "collapseWhitespace", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ collapseWhitespace() : CollapseWhitespace +
+ ` + return div + }, + apply: snippet("collapseWhitespace()"), + boost: 10 + }, { + label: "concat", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ concat(ScalarFunction|string $params) : Concat +
+ ` + return div + }, + apply: snippet("concat(" + "$" + "{" + "1:params" + "}" + ")"), + boost: 10 + }, { + label: "concatWithSeparator", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ concatWithSeparator(ScalarFunction|string $separator, ScalarFunction|string $params) : ConcatWithSeparator +
+ ` + return div + }, + apply: snippet("concatWithSeparator(" + "$" + "{" + "1:separator" + "}" + ", " + "$" + "{" + "2:params" + "}" + ")"), + boost: 10 + }, { + label: "contains", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ contains(ScalarFunction|string $needle) : Contains +
+ ` + return div + }, + apply: snippet("contains(" + "$" + "{" + "1:needle" + "}" + ")"), + boost: 10 + }, { + label: "dateFormat", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ dateFormat(string $format = 'Y-m-d') : DateTimeFormat +
+ ` + return div + }, + apply: snippet("dateFormat(" + "$" + "{" + "1:format" + "}" + ")"), + boost: 10 + }, { + label: "dateTimeFormat", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ dateTimeFormat(string $format = 'Y-m-d H:i:s') : DateTimeFormat +
+ ` + return div + }, + apply: snippet("dateTimeFormat(" + "$" + "{" + "1:format" + "}" + ")"), + boost: 10 + }, { + label: "divide", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ divide(ScalarFunction|string|int|float $value, ScalarFunction|int|null $scale = null, ScalarFunction|Rounding|null $rounding = null) : Divide +
+ ` + return div + }, + apply: snippet("divide(" + "$" + "{" + "1:value" + "}" + ", " + "$" + "{" + "2:scale" + "}" + ", " + "$" + "{" + "3:rounding" + "}" + ")"), + boost: 10 + }, { + label: "domElementAttribute", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ domElementAttribute(ScalarFunction|string $attribute) : DOMElementAttributeValue +
+
+ @deprecated Use domElementAttributeValue instead +
+ ` + return div + }, + apply: snippet("domElementAttribute(" + "$" + "{" + "1:attribute" + "}" + ")"), + boost: 10 + }, { + label: "domElementAttributesCount", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ domElementAttributesCount() : DOMElementAttributesCount +
+ ` + return div + }, + apply: snippet("domElementAttributesCount()"), + boost: 10 + }, { + label: "domElementAttributeValue", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ domElementAttributeValue(ScalarFunction|string $attribute) : DOMElementAttributeValue +
+ ` + return div + }, + apply: snippet("domElementAttributeValue(" + "$" + "{" + "1:attribute" + "}" + ")"), + boost: 10 + }, { + label: "domElementNextSibling", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ domElementNextSibling(bool $allowOnlyElement = false) : DOMElementNextSibling +
+ ` + return div + }, + apply: snippet("domElementNextSibling(" + "$" + "{" + "1:allowOnlyElement" + "}" + ")"), + boost: 10 + }, { + label: "domElementParent", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ domElementParent() : DOMElementParent +
+ ` + return div + }, + apply: snippet("domElementParent()"), + boost: 10 + }, { + label: "domElementPreviousSibling", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ domElementPreviousSibling(bool $allowOnlyElement = false) : DOMElementPreviousSibling +
+ ` + return div + }, + apply: snippet("domElementPreviousSibling(" + "$" + "{" + "1:allowOnlyElement" + "}" + ")"), + boost: 10 + }, { + label: "domElementValue", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ domElementValue() : DOMElementValue +
+ ` + return div + }, + apply: snippet("domElementValue()"), + boost: 10 + }, { + label: "endsWith", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ endsWith(ScalarFunction|string $needle) : EndsWith +
+ ` + return div + }, + apply: snippet("endsWith(" + "$" + "{" + "1:needle" + "}" + ")"), + boost: 10 + }, { + label: "ensureEnd", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ ensureEnd(ScalarFunction|string $suffix) : EnsureEnd +
+ ` + return div + }, + apply: snippet("ensureEnd(" + "$" + "{" + "1:suffix" + "}" + ")"), + boost: 10 + }, { + label: "ensureStart", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ ensureStart(ScalarFunction|string $prefix) : EnsureStart +
+ ` + return div + }, + apply: snippet("ensureStart(" + "$" + "{" + "1:prefix" + "}" + ")"), + boost: 10 + }, { + label: "equals", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ equals(mixed $ref) : Equals +
+ ` + return div + }, + apply: snippet("equals(" + "$" + "{" + "1:ref" + "}" + ")"), + boost: 10 + }, { + label: "exists", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ exists() : Exists +
+ ` + return div + }, + apply: snippet("exists()"), + boost: 10 + }, { + label: "expand", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ expand(ArrayExpand $expand = Flow\\ETL\\Function\\ArrayExpand\\ArrayExpand::...) : ArrayExpand +
+
+ Expands each value into entry, if there are more than one value, multiple rows will be created.
Array keys are ignored, only values are used to create new rows.
Before:
+--+-------------------+
|id| array|
+--+-------------------+
| 1|{\"a\":1,\"b\":2,\"c\":3}|
+--+-------------------+
After:
+--+--------+
|id|expanded|
+--+--------+
| 1| 1|
| 1| 2|
| 1| 3|
+--+--------+ +
+ ` + return div + }, + apply: snippet("expand(" + "$" + "{" + "1:expand" + "}" + ")"), + boost: 10 + }, { + label: "greaterThan", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ greaterThan(mixed $ref) : GreaterThan +
+ ` + return div + }, + apply: snippet("greaterThan(" + "$" + "{" + "1:ref" + "}" + ")"), + boost: 10 + }, { + label: "greaterThanEqual", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ greaterThanEqual(mixed $ref) : GreaterThanEqual +
+ ` + return div + }, + apply: snippet("greaterThanEqual(" + "$" + "{" + "1:ref" + "}" + ")"), + boost: 10 + }, { + label: "hash", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ hash(Algorithm $algorithm = Flow\\ETL\\Hash\\NativePHPHash::...) : Hash +
+ ` + return div + }, + apply: snippet("hash(" + "$" + "{" + "1:algorithm" + "}" + ")"), + boost: 10 + }, { + label: "htmlQuerySelector", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ htmlQuerySelector(ScalarFunction|string $path) : HTMLQuerySelector +
+ ` + return div + }, + apply: snippet("htmlQuerySelector(" + "$" + "{" + "1:path" + "}" + ")"), + boost: 10 + }, { + label: "htmlQuerySelectorAll", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ htmlQuerySelectorAll(ScalarFunction|string $path) : HTMLQuerySelectorAll +
+ ` + return div + }, + apply: snippet("htmlQuerySelectorAll(" + "$" + "{" + "1:path" + "}" + ")"), + boost: 10 + }, { + label: "indexOf", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ indexOf(ScalarFunction|string $needle, ScalarFunction|bool $ignoreCase = false, ScalarFunction|int $offset = 0) : IndexOf +
+
+ Returns the index of given $needle in string. +
+ ` + return div + }, + apply: snippet("indexOf(" + "$" + "{" + "1:needle" + "}" + ", " + "$" + "{" + "2:ignoreCase" + "}" + ", " + "$" + "{" + "3:offset" + "}" + ")"), + boost: 10 + }, { + label: "indexOfLast", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ indexOfLast(ScalarFunction|string $needle, ScalarFunction|bool $ignoreCase = false, ScalarFunction|int $offset = 0) : IndexOfLast +
+
+ Returns the last index of given $needle in string. +
+ ` + return div + }, + apply: snippet("indexOfLast(" + "$" + "{" + "1:needle" + "}" + ", " + "$" + "{" + "2:ignoreCase" + "}" + ", " + "$" + "{" + "3:offset" + "}" + ")"), + boost: 10 + }, { + label: "isEmpty", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ isEmpty() : IsEmpty +
+ ` + return div + }, + apply: snippet("isEmpty()"), + boost: 10 + }, { + label: "isEven", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ isEven() : Equals +
+ ` + return div + }, + apply: snippet("isEven()"), + boost: 10 + }, { + label: "isFalse", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ isFalse() : Same +
+ ` + return div + }, + apply: snippet("isFalse()"), + boost: 10 + }, { + label: "isIn", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ isIn(ScalarFunction|array $haystack) : IsIn +
+
+ @param array $haystack +
+ ` + return div + }, + apply: snippet("isIn(" + "$" + "{" + "1:haystack" + "}" + ")"), + boost: 10 + }, { + label: "isNotNull", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ isNotNull() : IsNotNull +
+ ` + return div + }, + apply: snippet("isNotNull()"), + boost: 10 + }, { + label: "isNotNumeric", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ isNotNumeric() : IsNotNumeric +
+ ` + return div + }, + apply: snippet("isNotNumeric()"), + boost: 10 + }, { + label: "isNull", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ isNull() : IsNull +
+ ` + return div + }, + apply: snippet("isNull()"), + boost: 10 + }, { + label: "isNumeric", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ isNumeric() : IsNumeric +
+ ` + return div + }, + apply: snippet("isNumeric()"), + boost: 10 + }, { + label: "isOdd", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ isOdd() : NotEquals +
+ ` + return div + }, + apply: snippet("isOdd()"), + boost: 10 + }, { + label: "isTrue", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ isTrue() : Same +
+ ` + return div + }, + apply: snippet("isTrue()"), + boost: 10 + }, { + label: "isType", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ isType(Type|string $types) : IsType +
+
+ @param string|Type $types +
+ ` + return div + }, + apply: snippet("isType(" + "$" + "{" + "1:types" + "}" + ")"), + boost: 10 + }, { + label: "isUtf8", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ isUtf8() : IsUtf8 +
+
+ Check string is utf8 and returns true or false. +
+ ` + return div + }, + apply: snippet("isUtf8()"), + boost: 10 + }, { + label: "jsonDecode", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ jsonDecode(ScalarFunction|int $flags = 4194304) : JsonDecode +
+ ` + return div + }, + apply: snippet("jsonDecode(" + "$" + "{" + "1:flags" + "}" + ")"), + boost: 10 + }, { + label: "jsonEncode", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ jsonEncode(ScalarFunction|int $flags = 4194304) : JsonEncode +
+ ` + return div + }, + apply: snippet("jsonEncode(" + "$" + "{" + "1:flags" + "}" + ")"), + boost: 10 + }, { + label: "lessThan", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ lessThan(mixed $ref) : LessThan +
+ ` + return div + }, + apply: snippet("lessThan(" + "$" + "{" + "1:ref" + "}" + ")"), + boost: 10 + }, { + label: "lessThanEqual", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ lessThanEqual(ScalarFunction $ref) : LessThanEqual +
+ ` + return div + }, + apply: snippet("lessThanEqual(" + "$" + "{" + "1:ref" + "}" + ")"), + boost: 10 + }, { + label: "literal", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ literal(mixed $value) : Literal +
+ ` + return div + }, + apply: snippet("literal(" + "$" + "{" + "1:value" + "}" + ")"), + boost: 10 + }, { + label: "lower", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ lower() : ToLower +
+ ` + return div + }, + apply: snippet("lower()"), + boost: 10 + }, { + label: "minus", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ minus(ScalarFunction|int|float $ref) : Minus +
+ ` + return div + }, + apply: snippet("minus(" + "$" + "{" + "1:ref" + "}" + ")"), + boost: 10 + }, { + label: "mod", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ mod(ScalarFunction|int $value) : Mod +
+ ` + return div + }, + apply: snippet("mod(" + "$" + "{" + "1:value" + "}" + ")"), + boost: 10 + }, { + label: "modifyDateTime", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ modifyDateTime(ScalarFunction|string $modifier) : ModifyDateTime +
+ ` + return div + }, + apply: snippet("modifyDateTime(" + "$" + "{" + "1:modifier" + "}" + ")"), + boost: 10 + }, { + label: "multiply", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ multiply(ScalarFunction|int|float $value) : Multiply +
+ ` + return div + }, + apply: snippet("multiply(" + "$" + "{" + "1:value" + "}" + ")"), + boost: 10 + }, { + label: "notEquals", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ notEquals(mixed $value) : NotEquals +
+ ` + return div + }, + apply: snippet("notEquals(" + "$" + "{" + "1:value" + "}" + ")"), + boost: 10 + }, { + label: "notSame", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ notSame(mixed $value) : NotSame +
+ ` + return div + }, + apply: snippet("notSame(" + "$" + "{" + "1:value" + "}" + ")"), + boost: 10 + }, { + label: "numberFormat", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ numberFormat(ScalarFunction|int $decimals = 2, ScalarFunction|string $decimalSeparator = '.', ScalarFunction|string $thousandsSeparator = ',') : NumberFormat +
+ ` + return div + }, + apply: snippet("numberFormat(" + "$" + "{" + "1:decimals" + "}" + ", " + "$" + "{" + "2:decimalSeparator" + "}" + ", " + "$" + "{" + "3:thousandsSeparator" + "}" + ")"), + boost: 10 + }, { + label: "onEach", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ onEach(ScalarFunction $function, ScalarFunction|bool $preserveKeys = true) : OnEach +
+
+ Execute a scalar function on each element of an array/list/map/structure entry.
In order to use this function, you need to provide a reference to the \"element\" that will be used in the function.
Example: $df->withEntry(\'array\', ref(\'array\')->onEach(ref(\'element\')->cast(type_string()))) +
+ ` + return div + }, + apply: snippet("onEach(" + "$" + "{" + "1:function" + "}" + ", " + "$" + "{" + "2:preserveKeys" + "}" + ")"), + boost: 10 + }, { + label: "or", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ or(ScalarFunction $function) : Any +
+ ` + return div + }, + apply: snippet("or(" + "$" + "{" + "1:function" + "}" + ")"), + boost: 10 + }, { + label: "orNot", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ orNot(ScalarFunction $function) : Any +
+ ` + return div + }, + apply: snippet("orNot(" + "$" + "{" + "1:function" + "}" + ")"), + boost: 10 + }, { + label: "plus", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ plus(ScalarFunction|int|float $ref) : Plus +
+ ` + return div + }, + apply: snippet("plus(" + "$" + "{" + "1:ref" + "}" + ")"), + boost: 10 + }, { + label: "power", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ power(ScalarFunction|int $value) : Power +
+ ` + return div + }, + apply: snippet("power(" + "$" + "{" + "1:value" + "}" + ")"), + boost: 10 + }, { + label: "prepend", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ prepend(ScalarFunction|string $prefix) : Prepend +
+ ` + return div + }, + apply: snippet("prepend(" + "$" + "{" + "1:prefix" + "}" + ")"), + boost: 10 + }, { + label: "regex", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ regex(ScalarFunction|string $pattern, ScalarFunction|int $flags = 0, ScalarFunction|int $offset = 0) : Regex +
+ ` + return div + }, + apply: snippet("regex(" + "$" + "{" + "1:pattern" + "}" + ", " + "$" + "{" + "2:flags" + "}" + ", " + "$" + "{" + "3:offset" + "}" + ")"), + boost: 10 + }, { + label: "regexAll", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ regexAll(ScalarFunction|string $pattern, ScalarFunction|int $flags = 0, ScalarFunction|int $offset = 0) : RegexAll +
+ ` + return div + }, + apply: snippet("regexAll(" + "$" + "{" + "1:pattern" + "}" + ", " + "$" + "{" + "2:flags" + "}" + ", " + "$" + "{" + "3:offset" + "}" + ")"), + boost: 10 + }, { + label: "regexMatch", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ regexMatch(ScalarFunction|string $pattern, ScalarFunction|int $flags = 0, ScalarFunction|int $offset = 0) : RegexMatch +
+ ` + return div + }, + apply: snippet("regexMatch(" + "$" + "{" + "1:pattern" + "}" + ", " + "$" + "{" + "2:flags" + "}" + ", " + "$" + "{" + "3:offset" + "}" + ")"), + boost: 10 + }, { + label: "regexMatchAll", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ regexMatchAll(ScalarFunction|string $pattern, ScalarFunction|int $flags = 0, ScalarFunction|int $offset = 0) : RegexMatchAll +
+ ` + return div + }, + apply: snippet("regexMatchAll(" + "$" + "{" + "1:pattern" + "}" + ", " + "$" + "{" + "2:flags" + "}" + ", " + "$" + "{" + "3:offset" + "}" + ")"), + boost: 10 + }, { + label: "regexReplace", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ regexReplace(ScalarFunction|string $pattern, ScalarFunction|string $replacement, ScalarFunction|int|null $limit = null) : RegexReplace +
+ ` + return div + }, + apply: snippet("regexReplace(" + "$" + "{" + "1:pattern" + "}" + ", " + "$" + "{" + "2:replacement" + "}" + ", " + "$" + "{" + "3:limit" + "}" + ")"), + boost: 10 + }, { + label: "repeat", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ repeat(ScalarFunction|int $times) : Repeat +
+ ` + return div + }, + apply: snippet("repeat(" + "$" + "{" + "1:times" + "}" + ")"), + boost: 10 + }, { + label: "reverse", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ reverse() : Reverse +
+ ` + return div + }, + apply: snippet("reverse()"), + boost: 10 + }, { + label: "round", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ round(ScalarFunction|int $precision = 2, ScalarFunction|int $mode = 1) : Round +
+ ` + return div + }, + apply: snippet("round(" + "$" + "{" + "1:precision" + "}" + ", " + "$" + "{" + "2:mode" + "}" + ")"), + boost: 10 + }, { + label: "same", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ same(mixed $value) : Same +
+ ` + return div + }, + apply: snippet("same(" + "$" + "{" + "1:value" + "}" + ")"), + boost: 10 + }, { + label: "sanitize", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ sanitize(ScalarFunction|string $placeholder = '*', ScalarFunction|int|null $skipCharacters = null) : Sanitize +
+ ` + return div + }, + apply: snippet("sanitize(" + "$" + "{" + "1:placeholder" + "}" + ", " + "$" + "{" + "2:skipCharacters" + "}" + ")"), + boost: 10 + }, { + label: "size", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ size() : Size +
+ ` + return div + }, + apply: snippet("size()"), + boost: 10 + }, { + label: "slug", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ slug(ScalarFunction|string $separator = '-', ScalarFunction|string|null $locale = null, ScalarFunction|array|null $symbolsMap = null) : Slug +
+
+ @param null|array $symbolsMap +
+ ` + return div + }, + apply: snippet("slug(" + "$" + "{" + "1:separator" + "}" + ", " + "$" + "{" + "2:locale" + "}" + ", " + "$" + "{" + "3:symbolsMap" + "}" + ")"), + boost: 10 + }, { + label: "split", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ split(ScalarFunction|string $separator, ScalarFunction|int $limit = 9223372036854775807) : Split +
+ ` + return div + }, + apply: snippet("split(" + "$" + "{" + "1:separator" + "}" + ", " + "$" + "{" + "2:limit" + "}" + ")"), + boost: 10 + }, { + label: "sprintf", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ sprintf(ScalarFunction|string|int|float|null $params) : Sprintf +
+ ` + return div + }, + apply: snippet("sprintf(" + "$" + "{" + "1:params" + "}" + ")"), + boost: 10 + }, { + label: "startsWith", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ startsWith(ScalarFunction|string $needle) : StartsWith +
+ ` + return div + }, + apply: snippet("startsWith(" + "$" + "{" + "1:needle" + "}" + ")"), + boost: 10 + }, { + label: "stringAfter", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ stringAfter(ScalarFunction|string $needle, ScalarFunction|bool $includeNeedle = false) : StringAfter +
+
+ Returns the contents found after the first occurrence of the given string. +
+ ` + return div + }, + apply: snippet("stringAfter(" + "$" + "{" + "1:needle" + "}" + ", " + "$" + "{" + "2:includeNeedle" + "}" + ")"), + boost: 10 + }, { + label: "stringAfterLast", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ stringAfterLast(ScalarFunction|string $needle, ScalarFunction|bool $includeNeedle = false) : StringAfterLast +
+
+ Returns the contents found after the last occurrence of the given string. +
+ ` + return div + }, + apply: snippet("stringAfterLast(" + "$" + "{" + "1:needle" + "}" + ", " + "$" + "{" + "2:includeNeedle" + "}" + ")"), + boost: 10 + }, { + label: "stringBefore", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ stringBefore(ScalarFunction|string $needle, ScalarFunction|bool $includeNeedle = false) : StringBefore +
+
+ Returns the contents found before the first occurrence of the given string. +
+ ` + return div + }, + apply: snippet("stringBefore(" + "$" + "{" + "1:needle" + "}" + ", " + "$" + "{" + "2:includeNeedle" + "}" + ")"), + boost: 10 + }, { + label: "stringBeforeLast", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ stringBeforeLast(ScalarFunction|string $needle, ScalarFunction|bool $includeNeedle = false) : StringBeforeLast +
+
+ Returns the contents found before the last occurrence of the given string. +
+ ` + return div + }, + apply: snippet("stringBeforeLast(" + "$" + "{" + "1:needle" + "}" + ", " + "$" + "{" + "2:includeNeedle" + "}" + ")"), + boost: 10 + }, { + label: "stringContainsAny", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ stringContainsAny(ScalarFunction|array $needles) : StringContainsAny +
+
+ @param array|ScalarFunction $needles +
+ ` + return div + }, + apply: snippet("stringContainsAny(" + "$" + "{" + "1:needles" + "}" + ")"), + boost: 10 + }, { + label: "stringEqualsTo", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ stringEqualsTo(ScalarFunction|string $string) : StringEqualsTo +
+ ` + return div + }, + apply: snippet("stringEqualsTo(" + "$" + "{" + "1:string" + "}" + ")"), + boost: 10 + }, { + label: "stringFold", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ stringFold() : StringFold +
+
+ Returns a string that you can use in case-insensitive comparisons. +
+ ` + return div + }, + apply: snippet("stringFold()"), + boost: 10 + }, { + label: "stringMatch", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ stringMatch(ScalarFunction|string $pattern) : StringMatch +
+ ` + return div + }, + apply: snippet("stringMatch(" + "$" + "{" + "1:pattern" + "}" + ")"), + boost: 10 + }, { + label: "stringMatchAll", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ stringMatchAll(ScalarFunction|string $pattern) : StringMatchAll +
+ ` + return div + }, + apply: snippet("stringMatchAll(" + "$" + "{" + "1:pattern" + "}" + ")"), + boost: 10 + }, { + label: "stringNormalize", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ stringNormalize(ScalarFunction|int $form = 16) : StringNormalize +
+ ` + return div + }, + apply: snippet("stringNormalize(" + "$" + "{" + "1:form" + "}" + ")"), + boost: 10 + }, { + label: "stringStyle", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ stringStyle(ScalarFunction|StringStyles|StringStyles|string $style) : StringStyle +
+
+ Covert string to a style from enum list, passed in parameter.
Can be string \"upper\" or StringStyles::UPPER for Upper (example). +
+ ` + return div + }, + apply: snippet("stringStyle(" + "$" + "{" + "1:style" + "}" + ")"), + boost: 10 + }, { + label: "stringTitle", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ stringTitle(ScalarFunction|bool $allWords = false) : StringTitle +
+
+ Changes all graphemes/code points to \"title case\". +
+ ` + return div + }, + apply: snippet("stringTitle(" + "$" + "{" + "1:allWords" + "}" + ")"), + boost: 10 + }, { + label: "stringWidth", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ stringWidth() : StringWidth +
+ ` + return div + }, + apply: snippet("stringWidth()"), + boost: 10 + }, { + label: "strPad", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ strPad(int $length, string $pad_string = ' ', int $type = 1) : StrPad +
+ ` + return div + }, + apply: snippet("strPad(" + "$" + "{" + "1:length" + "}" + ", " + "$" + "{" + "2:pad_string" + "}" + ", " + "$" + "{" + "3:type" + "}" + ")"), + boost: 10 + }, { + label: "strPadBoth", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ strPadBoth(int $length, string $pad_string = ' ') : StrPad +
+ ` + return div + }, + apply: snippet("strPadBoth(" + "$" + "{" + "1:length" + "}" + ", " + "$" + "{" + "2:pad_string" + "}" + ")"), + boost: 10 + }, { + label: "strPadLeft", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ strPadLeft(int $length, string $pad_string = ' ') : StrPad +
+ ` + return div + }, + apply: snippet("strPadLeft(" + "$" + "{" + "1:length" + "}" + ", " + "$" + "{" + "2:pad_string" + "}" + ")"), + boost: 10 + }, { + label: "strPadRight", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ strPadRight(int $length, string $pad_string = ' ') : StrPad +
+ ` + return div + }, + apply: snippet("strPadRight(" + "$" + "{" + "1:length" + "}" + ", " + "$" + "{" + "2:pad_string" + "}" + ")"), + boost: 10 + }, { + label: "strReplace", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ strReplace(ScalarFunction|array|string $search, ScalarFunction|array|string $replace) : StrReplace +
+
+ @param array|ScalarFunction|string $search
@param array|ScalarFunction|string $replace +
+ ` + return div + }, + apply: snippet("strReplace(" + "$" + "{" + "1:search" + "}" + ", " + "$" + "{" + "2:replace" + "}" + ")"), + boost: 10 + }, { + label: "toDate", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ toDate(ScalarFunction|string $format = 'Y-m-d\\\\TH:i:sP', ScalarFunction|DateTimeZone $timeZone = DateTimeZone::...) : ToDate +
+
+ @param ScalarFunction|string $format - current format of the date that will be used to create DateTimeImmutable instance +
+ ` + return div + }, + apply: snippet("toDate(" + "$" + "{" + "1:format" + "}" + ", " + "$" + "{" + "2:timeZone" + "}" + ")"), + boost: 10 + }, { + label: "toDateTime", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ toDateTime(ScalarFunction|string $format = 'Y-m-d H:i:s', ScalarFunction|DateTimeZone $timeZone = DateTimeZone::...) : ToDateTime +
+
+ @param ScalarFunction|string $format - current format of the date that will be used to create DateTimeImmutable instance
@param \\DateTimeZone|ScalarFunction $timeZone +
+ ` + return div + }, + apply: snippet("toDateTime(" + "$" + "{" + "1:format" + "}" + ", " + "$" + "{" + "2:timeZone" + "}" + ")"), + boost: 10 + }, { + label: "trim", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ trim(Type $type = Flow\\ETL\\Function\\Trim\\Type::..., string $characters = ' \\t\\n\\r\\0 ') : Trim +
+ ` + return div + }, + apply: snippet("trim(" + "$" + "{" + "1:type" + "}" + ", " + "$" + "{" + "2:characters" + "}" + ")"), + boost: 10 + }, { + label: "truncate", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ truncate(ScalarFunction|int $length, ScalarFunction|string $ellipsis = '...') : Truncate +
+ ` + return div + }, + apply: snippet("truncate(" + "$" + "{" + "1:length" + "}" + ", " + "$" + "{" + "2:ellipsis" + "}" + ")"), + boost: 10 + }, { + label: "unicodeLength", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ unicodeLength() : UnicodeLength +
+ ` + return div + }, + apply: snippet("unicodeLength()"), + boost: 10 + }, { + label: "unpack", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ unpack(ScalarFunction|array $skipKeys = [], ScalarFunction|string|null $entryPrefix = null) : ArrayUnpack +
+
+ @param array $skipKeys +
+ ` + return div + }, + apply: snippet("unpack(" + "$" + "{" + "1:skipKeys" + "}" + ", " + "$" + "{" + "2:entryPrefix" + "}" + ")"), + boost: 10 + }, { + label: "upper", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ upper() : ToUpper +
+ ` + return div + }, + apply: snippet("upper()"), + boost: 10 + }, { + label: "wordwrap", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ wordwrap(ScalarFunction|int $width, ScalarFunction|string $break = '\\n', ScalarFunction|bool $cut = false) : Wordwrap +
+ ` + return div + }, + apply: snippet("wordwrap(" + "$" + "{" + "1:width" + "}" + ", " + "$" + "{" + "2:break" + "}" + ", " + "$" + "{" + "3:cut" + "}" + ")"), + boost: 10 + }, { + label: "xpath", + type: "method", + detail: "Flow\\\\ETL\\\\Function\\\\ScalarFunctionChain", + info: () => { + const div = document.createElement("div") + div.innerHTML = ` +
+ xpath(string $string) : XPath +
+ ` + return div + }, + apply: snippet("xpath(" + "$" + "{" + "1:string" + "}" + ")"), + boost: 10 + } ] + +/** + * ScalarFunctionChain method completion source for CodeMirror + * @param {CompletionContext} context + * @returns {CompletionResult|null} + */ +export function scalarFunctionChainCompletions(context) { + // Get text before cursor (potentially across multiple lines) + // Look back up to 2000 characters to find the pattern + const maxLookback = 2000 + const docText = context.state.doc.toString() + const startPos = Math.max(0, context.pos - maxLookback) + const textBefore = docText.slice(startPos, context.pos) + + // Check if we're directly after -> (method chaining context) + if (!new RegExp('->\\w*$').test(textBefore)) { + return null + } + + // Check if we're after a ScalarFunctionChain-returning function + // Pattern: any of the DSL functions with scalar_function_chain: true + if (scalarFunctionChainFunctions.length === 0) { + return null + } + + // Find all matching functions and check if any are at top level with -> + const functionPattern = new RegExp('\\b(' + scalarFunctionChainFunctions.join('|') + ')\\s*\\(', 'g') + let matches = [] + let match + + while ((match = functionPattern.exec(textBefore)) !== null) { + matches.push({ name: match[1], index: match.index, endOfName: match.index + match[0].length }) + } + + // Walk backwards from cursor tracking parenthesis depth + let depth = 0 + let i = textBefore.length - 1 + + // Skip back past the -> and any word being typed + while (i >= 0 && /[\w>-]/.test(textBefore[i])) { + i-- + } + + // Now count parentheses going backwards + while (i >= 0) { + if (textBefore[i] === ')') depth++ + else if (textBefore[i] === '(') { + depth-- + // If we're back to depth 0, check if this ( belongs to a ScalarFunctionChain function + if (depth === 0) { + // Look backwards to find the function name + let funcEnd = i + while (funcEnd > 0 && /\s/.test(textBefore[funcEnd - 1])) { + funcEnd-- + } + let funcStart = funcEnd + while (funcStart > 0 && /\w/.test(textBefore[funcStart - 1])) { + funcStart-- + } + const funcName = textBefore.slice(funcStart, funcEnd) + + // Check if this is a ScalarFunctionChain-returning function + if (scalarFunctionChainFunctions.includes(funcName)) { + // This is it! We're directly after this function call + return continueWithCompletions() + } + // If not, we're inside some other call + return null + } + } + i-- + } + + return null + + function continueWithCompletions() { + // Match word being typed (method name after ->) + const word = context.matchBefore(/\w*/) + + // If no word and not explicit, don't show completions + if (!word && !context.explicit) { + return null + } + + // Filter methods based on what's being typed + const prefix = word ? word.text.toLowerCase() : '' + const options = scalarFunctionChainMethods.filter(method => + !prefix || method.label.toLowerCase().startsWith(prefix) + ) + + return { + from: word ? word.from : context.pos, + options: options, + validFor: new RegExp('^\\w*$') // Reuse while typing word characters + } + } +} diff --git a/web/landing/tests/Flow/Website/Tests/Integration/Command/CompleterCommandTestCase.php b/web/landing/tests/Flow/Website/Tests/Integration/Command/CompleterCommandTestCase.php new file mode 100644 index 0000000000..0919b0f0eb --- /dev/null +++ b/web/landing/tests/Flow/Website/Tests/Integration/Command/CompleterCommandTestCase.php @@ -0,0 +1,59 @@ +application = new Application(self::$kernel); + } + + protected function assertGeneratedFileMatchesFixture(string $generatedPath, string $fixturePath) : void + { + static::assertFileExists($generatedPath, 'Generated file does not exist'); + static::assertFileExists($fixturePath, 'Fixture file does not exist'); + + $generatedContent = \file_get_contents($generatedPath); + $fixtureContent = \file_get_contents($fixturePath); + + static::assertSame($fixtureContent, $generatedContent, 'Generated file content does not match fixture'); + } + + protected function executeCommand(string $commandName) : CommandTester + { + $command = $this->application->find($commandName); + $commandTester = new CommandTester($command); + $commandTester->execute([]); + + return $commandTester; + } + + protected function getFixturePath(string $filename) : string + { + return __DIR__ . '/../../Fixtures/Completers/' . $filename; + } + + protected function getOutputPath(string $filename) : string + { + return self::$kernel->getProjectDir() . '/assets/codemirror/completions/' . $filename; + } + + #[\Override] + protected static function getKernelClass() : string + { + return Kernel::class; + } +} diff --git a/web/landing/tests/Flow/Website/Tests/Integration/Command/GenerateDSLCompleterCommandTest.php b/web/landing/tests/Flow/Website/Tests/Integration/Command/GenerateDSLCompleterCommandTest.php new file mode 100644 index 0000000000..33d1db48b6 --- /dev/null +++ b/web/landing/tests/Flow/Website/Tests/Integration/Command/GenerateDSLCompleterCommandTest.php @@ -0,0 +1,40 @@ +executeCommand('app:generate:dsl-completer'); + + self::assertSame(Command::SUCCESS, $commandTester->getStatusCode()); + self::assertStringContainsString('Generated DSL completer', $commandTester->getDisplay()); + } + + public function test_generated_js_contains_required_structure() : void + { + $this->executeCommand('app:generate:dsl-completer'); + + $content = \file_get_contents($this->getOutputPath('dsl.js')); + + self::assertStringContainsString('CodeMirror Completer', $content); + self::assertStringContainsString('dslFunctions', $content); + self::assertStringContainsString('import { CompletionContext, snippet }', $content); + self::assertStringContainsString('export function', $content); + } + + public function test_generated_output_matches_expected_fixture() : void + { + $this->executeCommand('app:generate:dsl-completer'); + + $this->assertGeneratedFileMatchesFixture( + $this->getOutputPath('dsl.js'), + $this->getFixturePath('dsl.js') + ); + } +} diff --git a/web/landing/tests/Flow/Website/Tests/Integration/Command/GenerateDataFrameCompleterCommandTest.php b/web/landing/tests/Flow/Website/Tests/Integration/Command/GenerateDataFrameCompleterCommandTest.php new file mode 100644 index 0000000000..e71c13558d --- /dev/null +++ b/web/landing/tests/Flow/Website/Tests/Integration/Command/GenerateDataFrameCompleterCommandTest.php @@ -0,0 +1,40 @@ +executeCommand('app:generate:data-frame-completer'); + + self::assertSame(Command::SUCCESS, $commandTester->getStatusCode()); + self::assertStringContainsString('Generated DataFrame completer', $commandTester->getDisplay()); + } + + public function test_generated_js_contains_required_structure() : void + { + $this->executeCommand('app:generate:data-frame-completer'); + + $content = \file_get_contents($this->getOutputPath('dataframe.js')); + + self::assertStringContainsString('CodeMirror Completer', $content); + self::assertStringContainsString('dataframeMethods', $content); + self::assertStringContainsString('import { CompletionContext, snippet }', $content); + self::assertStringContainsString('export function', $content); + } + + public function test_generated_output_matches_expected_fixture() : void + { + $this->executeCommand('app:generate:data-frame-completer'); + + $this->assertGeneratedFileMatchesFixture( + $this->getOutputPath('dataframe.js'), + $this->getFixturePath('dataframe.js') + ); + } +} diff --git a/web/landing/tests/Flow/Website/Tests/Integration/Command/GenerateFlowCompleterCommandTest.php b/web/landing/tests/Flow/Website/Tests/Integration/Command/GenerateFlowCompleterCommandTest.php new file mode 100644 index 0000000000..f141562fd3 --- /dev/null +++ b/web/landing/tests/Flow/Website/Tests/Integration/Command/GenerateFlowCompleterCommandTest.php @@ -0,0 +1,40 @@ +executeCommand('app:generate:flow-completer'); + + self::assertSame(Command::SUCCESS, $commandTester->getStatusCode()); + self::assertStringContainsString('Generated Flow completer', $commandTester->getDisplay()); + } + + public function test_generated_js_contains_required_structure() : void + { + $this->executeCommand('app:generate:flow-completer'); + + $content = \file_get_contents($this->getOutputPath('flow.js')); + + self::assertStringContainsString('CodeMirror Completer', $content); + self::assertStringContainsString('flowMethods', $content); + self::assertStringContainsString('import { CompletionContext, snippet }', $content); + self::assertStringContainsString('export function', $content); + } + + public function test_generated_output_matches_expected_fixture() : void + { + $this->executeCommand('app:generate:flow-completer'); + + $this->assertGeneratedFileMatchesFixture( + $this->getOutputPath('flow.js'), + $this->getFixturePath('flow.js') + ); + } +} diff --git a/web/landing/tests/Flow/Website/Tests/Integration/Command/GenerateScalarFunctionChainCompleterCommandTest.php b/web/landing/tests/Flow/Website/Tests/Integration/Command/GenerateScalarFunctionChainCompleterCommandTest.php new file mode 100644 index 0000000000..be31462d07 --- /dev/null +++ b/web/landing/tests/Flow/Website/Tests/Integration/Command/GenerateScalarFunctionChainCompleterCommandTest.php @@ -0,0 +1,40 @@ +executeCommand('app:generate:scalar-function-chain-completer'); + + self::assertSame(Command::SUCCESS, $commandTester->getStatusCode()); + self::assertStringContainsString('Generated ScalarFunctionChain completer', $commandTester->getDisplay()); + } + + public function test_generated_js_contains_required_structure() : void + { + $this->executeCommand('app:generate:scalar-function-chain-completer'); + + $content = \file_get_contents($this->getOutputPath('scalarfunctionchain.js')); + + self::assertStringContainsString('CodeMirror Completer', $content); + self::assertStringContainsString('scalarFunctionChainMethods', $content); + self::assertStringContainsString('import { CompletionContext, snippet }', $content); + self::assertStringContainsString('export function', $content); + } + + public function test_generated_output_matches_expected_fixture() : void + { + $this->executeCommand('app:generate:scalar-function-chain-completer'); + + $this->assertGeneratedFileMatchesFixture( + $this->getOutputPath('scalarfunctionchain.js'), + $this->getFixturePath('scalarfunctionchain.js') + ); + } +}