diff --git a/.github/workflows/monorepo-split.yml b/.github/workflows/monorepo-split.yml
index a24f907321..08df51a01b 100644
--- a/.github/workflows/monorepo-split.yml
+++ b/.github/workflows/monorepo-split.yml
@@ -90,10 +90,14 @@ jobs:
split_repository: 'openapi-specification-bridge'
- local_path: 'src/bridge/psr7/telemetry'
split_repository: 'psr7-telemetry-bridge'
+ - local_path: 'src/bridge/psr18/telemetry'
+ split_repository: 'psr18-telemetry-bridge'
- local_path: 'src/bridge/symfony/http-foundation'
split_repository: 'symfony-http-foundation-bridge'
- local_path: 'src/bridge/symfony/http-foundation-telemetry'
split_repository: 'symfony-http-foundation-telemetry-bridge'
+ - local_path: 'src/bridge/symfony/telemetry-bundle'
+ split_repository: 'symfony-telemetry-bundle'
- local_path: 'src/bridge/telemetry/otlp'
split_repository: 'telemetry-otlp-bridge'
diff --git a/bin/docs.php b/bin/docs.php
index 62942d7449..e8d03c9d8b 100755
--- a/bin/docs.php
+++ b/bin/docs.php
@@ -68,7 +68,9 @@ public function execute(InputInterface $input, OutputInterface $output) : int
__DIR__ . '/../src/bridge/filesystem/async-aws/src/Flow/Filesystem/Bridge/AsyncAWS/DSL/functions.php',
__DIR__ . '/../src/bridge/monolog/telemetry/src/Flow/Bridge/Monolog/Telemetry/DSL/functions.php',
__DIR__ . '/../src/bridge/symfony/http-foundation-telemetry/src/Flow/Bridge/Symfony/HttpFoundationTelemetry/DSL/functions.php',
+ __DIR__ . '/../src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/DSL/functions.php',
__DIR__ . '/../src/bridge/psr7/telemetry/src/Flow/Bridge/Psr7/Telemetry/DSL/functions.php',
+ __DIR__ . '/../src/bridge/psr18/telemetry/src/Flow/Bridge/Psr18/Telemetry/DSL/functions.php',
__DIR__ . '/../src/bridge/telemetry/otlp/src/Flow/Bridge/Telemetry/OTLP/DSL/functions.php',
];
diff --git a/composer.json b/composer.json
index c1830de37f..e4ae11160b 100644
--- a/composer.json
+++ b/composer.json
@@ -40,8 +40,12 @@
"psr/http-message": "^1.0 || ^2.0",
"psr/log": "^2.0 || ^3.0",
"psr/simple-cache": "^1.0 || ^2.0 || ^3.0",
+ "symfony/config": "^6.4 || ^7.3 || ^8.0",
"symfony/console": "^6.4 || ^7.3 || ^8.0",
+ "symfony/dependency-injection": "^6.4 || ^7.3 || ^8.0",
+ "symfony/event-dispatcher": "^6.4 || ^7.3 || ^8.0",
"symfony/http-foundation": "^6.4 || ^7.3 || ^8.0",
+ "symfony/http-kernel": "^6.4 || ^7.3 || ^8.0",
"symfony/string": "^6.4 || ^7.3 || ^8.0",
"symfony/uid": "^6.4 || ^7.3 || ^8.0",
"webmozart/glob": "^3.0 || ^4.0"
@@ -60,8 +64,12 @@
"symfony/cache": "^6.4 || ^7.3 || ^8.0",
"symfony/dotenv": "^6.4 || ^7.3 || ^8.0",
"symfony/finder": "^6.4 || ^7.3 || ^8.0",
+ "symfony/framework-bundle": "^6.4 || ^7.3 || ^8.0",
"symfony/http-client": "^6.4 || ^7.3 || ^8.0",
- "symfony/process": "^7.3 || ^8.0"
+ "symfony/messenger": "^6.4 || ^7.3 || ^8.0",
+ "symfony/process": "^7.3 || ^8.0",
+ "symfony/routing": "^6.4 || ^7.3 || ^8.0",
+ "twig/twig": "^3.0"
},
"replace": {
"flow-php/array-dot": "self.version",
@@ -97,10 +105,12 @@
"flow-php/parquet": "self.version",
"flow-php/parquet-viewer": "self.version",
"flow-php/postgresql": "self.version",
+ "flow-php/psr7-telemetry-bridge": "self.version",
+ "flow-php/psr18-telemetry-bridge": "self.version",
"flow-php/snappy": "self.version",
"flow-php/symfony-http-foundation-bridge": "self.version",
"flow-php/symfony-http-foundation-telemetry-bridge": "self.version",
- "flow-php/psr7-telemetry-bridge": "self.version",
+ "flow-php/symfony-telemetry-bundle": "self.version",
"flow-php/telemetry": "self.version",
"flow-php/telemetry-otlp-bridge": "self.version",
"flow-php/types": "self.version"
@@ -131,8 +141,10 @@
"src/bridge/monolog/telemetry/src/Flow",
"src/bridge/openapi/specification/src/Flow",
"src/bridge/psr7/telemetry/src/Flow",
- "src/bridge/symfony/http-foundation/src/Flow",
+ "src/bridge/psr18/telemetry/src/Flow",
"src/bridge/symfony/http-foundation-telemetry/src/Flow",
+ "src/bridge/symfony/http-foundation/src/Flow",
+ "src/bridge/symfony/telemetry-bundle/src/Flow",
"src/bridge/telemetry/otlp/src/Flow",
"src/cli/src/Flow",
"src/core/etl/src/Flow",
@@ -177,8 +189,10 @@
"src/bridge/monolog/telemetry/src/Flow/Bridge/Monolog/Telemetry/DSL/functions.php",
"src/bridge/openapi/specification/src/Flow/Bridge/OpenAPI/Specification/DSL/functions.php",
"src/bridge/psr7/telemetry/src/Flow/Bridge/Psr7/Telemetry/DSL/functions.php",
- "src/bridge/symfony/http-foundation/src/Flow/Bridge/Symfony/HttpFoundation/functions.php",
+ "src/bridge/psr18/telemetry/src/Flow/Bridge/Psr18/Telemetry/DSL/functions.php",
"src/bridge/symfony/http-foundation-telemetry/src/Flow/Bridge/Symfony/HttpFoundationTelemetry/DSL/functions.php",
+ "src/bridge/symfony/http-foundation/src/Flow/Bridge/Symfony/HttpFoundation/functions.php",
+ "src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/DSL/functions.php",
"src/bridge/telemetry/otlp/src/Flow/Bridge/Telemetry/OTLP/DSL/functions.php",
"src/cli/src/Flow/CLI/DSL/functions.php",
"src/core/etl/src/Flow/ETL/DSL/functions.php",
@@ -219,8 +233,10 @@
"src/bridge/monolog/telemetry/tests/Flow",
"src/bridge/openapi/specification/tests/Flow",
"src/bridge/psr7/telemetry/tests/Flow",
- "src/bridge/symfony/http-foundation/tests/Flow",
+ "src/bridge/psr18/telemetry/tests/Flow",
"src/bridge/symfony/http-foundation-telemetry/tests/Flow",
+ "src/bridge/symfony/http-foundation/tests/Flow",
+ "src/bridge/symfony/telemetry-bundle/tests/Flow",
"src/bridge/telemetry/otlp/tests/Flow",
"src/cli/tests/Flow",
"src/core/etl/tests/Flow",
@@ -290,8 +306,10 @@
"@test:bridge:monolog-telemetry",
"@test:bridge:openapi-specification",
"@test:bridge:psr7-telemetry",
+ "@test:bridge:psr18-telemetry",
"@test:bridge:symfony-http-foundation",
"@test:bridge:symfony-http-foundation-telemetry",
+ "@test:bridge:symfony-telemetry-bundle",
"@test:bridge:telemetry-otlp"
],
"test:adapters": [
@@ -311,132 +329,140 @@
"@test:adapter:postgresql"
],
"test:core": [
- "tools/phpunit/vendor/bin/phpunit --testsuite=etl-unit --log-junit ./var/phpunit/logs/etl-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/etl-unit.coverage.xml --coverage-html=./var/phpunit/coverage/html/etl-unit",
- "tools/phpunit/vendor/bin/phpunit --testsuite=etl-integration --log-junit ./var/phpunit/logs/etl-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/etl-integration.coverage.xml --coverage-html=./var/phpunit/coverage/html/etl-integration"
+ "tools/phpunit/vendor/bin/phpunit --testsuite=etl-unit --log-junit ./var/phpunit/logs/etl-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/etl-unit.coverage.xml",
+ "tools/phpunit/vendor/bin/phpunit --testsuite=etl-integration --log-junit ./var/phpunit/logs/etl-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/etl-integration.coverage.xml"
],
"test:cli": [
- "tools/phpunit/vendor/bin/phpunit --testsuite=cli-unit --log-junit ./var/phpunit/logs/cli-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/cli-unit.coverage.xml --coverage-html=./var/phpunit/coverage/html/cli-unit",
- "tools/phpunit/vendor/bin/phpunit --testsuite=cli-integration --log-junit ./var/phpunit/logs/cli-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/cli-integration.coverage.xml --coverage-html=./var/phpunit/coverage/html/cli-integration"
+ "tools/phpunit/vendor/bin/phpunit --testsuite=cli-unit --log-junit ./var/phpunit/logs/cli-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/cli-unit.coverage.xml",
+ "tools/phpunit/vendor/bin/phpunit --testsuite=cli-integration --log-junit ./var/phpunit/logs/cli-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/cli-integration.coverage.xml"
],
"test:lib:array-dot": [
- "tools/phpunit/vendor/bin/phpunit --testsuite=lib-array-dot-unit --log-junit ./var/phpunit/logs/lib-array-dot-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/lib-array-dot-unit.coverage.xml --coverage-html=./var/phpunit/coverage/html/lib-array-dot-unit"
+ "tools/phpunit/vendor/bin/phpunit --testsuite=lib-array-dot-unit --log-junit ./var/phpunit/logs/lib-array-dot-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/lib-array-dot-unit.coverage.xml"
],
"test:lib:azure-sdk": [
- "tools/phpunit/vendor/bin/phpunit --testsuite=lib-azure-sdk-unit --log-junit ./var/phpunit/logs/lib-azure-sdk-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/lib-azure-sdk-unit.coverage.xml --coverage-html=./var/phpunit/coverage/html/lib-azure-sdk-unit"
+ "tools/phpunit/vendor/bin/phpunit --testsuite=lib-azure-sdk-unit --log-junit ./var/phpunit/logs/lib-azure-sdk-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/lib-azure-sdk-unit.coverage.xml"
],
"test:lib:doctrine-dbal-bulk": [
- "tools/phpunit/vendor/bin/phpunit --testsuite=lib-doctrine-dbal-bulk-unit --log-junit ./var/phpunit/logs/lib-doctrine-dbal-bulk-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/lib-doctrine-dbal-bulk-unit.coverage.xml --coverage-html=./var/phpunit/coverage/html/lib-doctrine-dbal-bulk-unit",
- "tools/phpunit/vendor/bin/phpunit --testsuite=lib-doctrine-dbal-bulk-integration --log-junit ./var/phpunit/logs/lib-doctrine-dbal-bulk-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/lib-doctrine-dbal-bulk-integration.coverage.xml --coverage-html=./var/phpunit/coverage/html/lib-doctrine-dbal-bulk-integration"
+ "tools/phpunit/vendor/bin/phpunit --testsuite=lib-doctrine-dbal-bulk-unit --log-junit ./var/phpunit/logs/lib-doctrine-dbal-bulk-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/lib-doctrine-dbal-bulk-unit.coverage.xml",
+ "tools/phpunit/vendor/bin/phpunit --testsuite=lib-doctrine-dbal-bulk-integration --log-junit ./var/phpunit/logs/lib-doctrine-dbal-bulk-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/lib-doctrine-dbal-bulk-integration.coverage.xml"
],
"test:lib:filesystem": [
- "tools/phpunit/vendor/bin/phpunit --testsuite=lib-filesystem-unit --log-junit ./var/phpunit/logs/lib-filesystem-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/lib-filesystem-unit.coverage.xml --coverage-html=./var/phpunit/coverage/html/lib-filesystem-unit",
- "tools/phpunit/vendor/bin/phpunit --testsuite=lib-filesystem-integration --log-junit ./var/phpunit/logs/lib-filesystem-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/lib-filesystem-integration.coverage.xml --coverage-html=./var/phpunit/coverage/html/lib-filesystem-integration"
+ "tools/phpunit/vendor/bin/phpunit --testsuite=lib-filesystem-unit --log-junit ./var/phpunit/logs/lib-filesystem-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/lib-filesystem-unit.coverage.xml",
+ "tools/phpunit/vendor/bin/phpunit --testsuite=lib-filesystem-integration --log-junit ./var/phpunit/logs/lib-filesystem-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/lib-filesystem-integration.coverage.xml"
],
"test:lib:parquet": [
- "tools/phpunit/vendor/bin/phpunit --testsuite=lib-parquet-unit --log-junit ./var/phpunit/logs/lib-parquet-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/lib-parquet-unit.coverage.xml --coverage-html=./var/phpunit/coverage/html/lib-parquet-unit",
- "tools/phpunit/vendor/bin/phpunit --testsuite=lib-parquet-integration --log-junit ./var/phpunit/logs/lib-parquet-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/lib-parquet-integration.coverage.xml --coverage-html=./var/phpunit/coverage/html/lib-parquet-integration"
+ "tools/phpunit/vendor/bin/phpunit --testsuite=lib-parquet-unit --log-junit ./var/phpunit/logs/lib-parquet-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/lib-parquet-unit.coverage.xml",
+ "tools/phpunit/vendor/bin/phpunit --testsuite=lib-parquet-integration --log-junit ./var/phpunit/logs/lib-parquet-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/lib-parquet-integration.coverage.xml"
],
"test:lib:parquet-viewer": [
- "tools/phpunit/vendor/bin/phpunit --testsuite=lib-parquet-viewer-integration --log-junit ./var/phpunit/logs/lib-parquet-viewer-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/lib-parquet-viewer-integration.coverage.xml --coverage-html=./var/phpunit/coverage/html/lib-parquet-viewer-integration"
+ "tools/phpunit/vendor/bin/phpunit --testsuite=lib-parquet-viewer-integration --log-junit ./var/phpunit/logs/lib-parquet-viewer-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/lib-parquet-viewer-integration.coverage.xml"
],
"test:lib:snappy": [
- "tools/phpunit/vendor/bin/phpunit --testsuite=lib-snappy-integration --log-junit ./var/phpunit/logs/lib-snappy-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/lib-snappy-integration.coverage.xml --coverage-html=./var/phpunit/coverage/html/lib-snappy-integration"
+ "tools/phpunit/vendor/bin/phpunit --testsuite=lib-snappy-integration --log-junit ./var/phpunit/logs/lib-snappy-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/lib-snappy-integration.coverage.xml"
],
"test:lib:telemetry": [
- "tools/phpunit/vendor/bin/phpunit --testsuite=lib-telemetry-unit --log-junit ./var/phpunit/logs/lib-telemetry-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/lib-telemetry-unit.coverage.xml --coverage-html=./var/phpunit/coverage/html/lib-telemetry-unit"
+ "tools/phpunit/vendor/bin/phpunit --testsuite=lib-telemetry-unit --log-junit ./var/phpunit/logs/lib-telemetry-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/lib-telemetry-unit.coverage.xml"
],
"test:lib:types": [
- "tools/phpunit/vendor/bin/phpunit --testsuite=lib-types-unit --log-junit ./var/phpunit/logs/lib-types-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/lib-types-unit.coverage.xml --coverage-html=./var/phpunit/coverage/html/lib-types-unit"
+ "tools/phpunit/vendor/bin/phpunit --testsuite=lib-types-unit --log-junit ./var/phpunit/logs/lib-types-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/lib-types-unit.coverage.xml"
],
"test:lib:postgresql": [
- "tools/phpunit/vendor/bin/phpunit --testsuite=lib-postgresql-unit --log-junit ./var/phpunit/logs/lib-postgresql-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/lib-postgresql-unit.coverage.xml --coverage-html=./var/phpunit/coverage/html/lib-postgresql-unit",
- "tools/phpunit/vendor/bin/phpunit --testsuite=lib-postgresql-integration --log-junit ./var/phpunit/logs/lib-postgresql-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/lib-postgresql-integration.coverage.xml --coverage-html=./var/phpunit/coverage/html/lib-postgresql-integration"
+ "tools/phpunit/vendor/bin/phpunit --testsuite=lib-postgresql-unit --log-junit ./var/phpunit/logs/lib-postgresql-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/lib-postgresql-unit.coverage.xml",
+ "tools/phpunit/vendor/bin/phpunit --testsuite=lib-postgresql-integration --log-junit ./var/phpunit/logs/lib-postgresql-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/lib-postgresql-integration.coverage.xml"
],
"test:bridge:filesystem-azure": [
- "tools/phpunit/vendor/bin/phpunit --testsuite=bridge-filesystem-azure-unit --log-junit ./var/phpunit/logs/bridge-filesystem-azure-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/bridge-filesystem-azure-unit.coverage.xml --coverage-html=./var/phpunit/coverage/html/bridge-filesystem-azure-unit",
- "tools/phpunit/vendor/bin/phpunit --testsuite=bridge-filesystem-azure-integration --log-junit ./var/phpunit/logs/bridge-filesystem-azure-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/bridge-filesystem-azure-integration.coverage.xml --coverage-html=./var/phpunit/coverage/html/bridge-filesystem-azure-integration"
+ "tools/phpunit/vendor/bin/phpunit --testsuite=bridge-filesystem-azure-unit --log-junit ./var/phpunit/logs/bridge-filesystem-azure-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/bridge-filesystem-azure-unit.coverage.xml",
+ "tools/phpunit/vendor/bin/phpunit --testsuite=bridge-filesystem-azure-integration --log-junit ./var/phpunit/logs/bridge-filesystem-azure-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/bridge-filesystem-azure-integration.coverage.xml"
],
"test:bridge:filesystem-async-aws": [
- "tools/phpunit/vendor/bin/phpunit --testsuite=bridge-filesystem-async-aws-integration --log-junit ./var/phpunit/logs/bridge-filesystem-async-aws-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/bridge-filesystem-async-aws-integration.coverage.xml --coverage-html=./var/phpunit/coverage/html/bridge-filesystem-async-aws-integration"
+ "tools/phpunit/vendor/bin/phpunit --testsuite=bridge-filesystem-async-aws-integration --log-junit ./var/phpunit/logs/bridge-filesystem-async-aws-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/bridge-filesystem-async-aws-integration.coverage.xml"
],
"test:bridge:monolog-http": [
- "tools/phpunit/vendor/bin/phpunit --testsuite=bridge-monolog-http-unit --log-junit ./var/phpunit/logs/bridge-monolog-http-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/bridge-monolog-http-unit.coverage.xml --coverage-html=./var/phpunit/coverage/html/bridge-monolog-http-unit"
+ "tools/phpunit/vendor/bin/phpunit --testsuite=bridge-monolog-http-unit --log-junit ./var/phpunit/logs/bridge-monolog-http-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/bridge-monolog-http-unit.coverage.xml"
],
"test:bridge:monolog-telemetry": [
- "tools/phpunit/vendor/bin/phpunit --testsuite=bridge-monolog-telemetry-unit --log-junit ./var/phpunit/logs/bridge-monolog-telemetry-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/bridge-monolog-telemetry-unit.coverage.xml --coverage-html=./var/phpunit/coverage/html/bridge-monolog-telemetry-unit",
- "tools/phpunit/vendor/bin/phpunit --testsuite=bridge-monolog-telemetry-integration --log-junit ./var/phpunit/logs/bridge-monolog-telemetry-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/bridge-monolog-telemetry-integration.coverage.xml --coverage-html=./var/phpunit/coverage/html/bridge-monolog-telemetry-integration"
+ "tools/phpunit/vendor/bin/phpunit --testsuite=bridge-monolog-telemetry-unit --log-junit ./var/phpunit/logs/bridge-monolog-telemetry-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/bridge-monolog-telemetry-unit.coverage.xml",
+ "tools/phpunit/vendor/bin/phpunit --testsuite=bridge-monolog-telemetry-integration --log-junit ./var/phpunit/logs/bridge-monolog-telemetry-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/bridge-monolog-telemetry-integration.coverage.xml"
],
"test:bridge:openapi-specification": [
- "tools/phpunit/vendor/bin/phpunit --testsuite=bridge-openapi-specification-unit --log-junit ./var/phpunit/logs/bridge-openapi-specification-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/bridge-openapi-specification-unit.coverage.xml --coverage-html=./var/phpunit/coverage/html/bridge-openapi-specification-unit"
+ "tools/phpunit/vendor/bin/phpunit --testsuite=bridge-openapi-specification-unit --log-junit ./var/phpunit/logs/bridge-openapi-specification-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/bridge-openapi-specification-unit.coverage.xml"
],
"test:bridge:psr7-telemetry": [
- "tools/phpunit/vendor/bin/phpunit --testsuite=bridge-psr7-telemetry-unit --log-junit ./var/phpunit/logs/bridge-psr7-telemetry-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/bridge-psr7-telemetry-unit.coverage.xml --coverage-html=./var/phpunit/coverage/html/bridge-psr7-telemetry-unit",
- "tools/phpunit/vendor/bin/phpunit --testsuite=bridge-psr7-telemetry-integration --log-junit ./var/phpunit/logs/bridge-psr7-telemetry-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/bridge-psr7-telemetry-integration.coverage.xml --coverage-html=./var/phpunit/coverage/html/bridge-psr7-telemetry-integration"
+ "tools/phpunit/vendor/bin/phpunit --testsuite=bridge-psr7-telemetry-unit --log-junit ./var/phpunit/logs/bridge-psr7-telemetry-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/bridge-psr7-telemetry-unit.coverage.xml",
+ "tools/phpunit/vendor/bin/phpunit --testsuite=bridge-psr7-telemetry-integration --log-junit ./var/phpunit/logs/bridge-psr7-telemetry-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/bridge-psr7-telemetry-integration.coverage.xml"
+ ],
+ "test:bridge:psr18-telemetry": [
+ "tools/phpunit/vendor/bin/phpunit --testsuite=bridge-psr18-telemetry-unit --log-junit ./var/phpunit/logs/bridge-psr18-telemetry-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/bridge-psr18-telemetry-unit.coverage.xml",
+ "tools/phpunit/vendor/bin/phpunit --testsuite=bridge-psr18-telemetry-integration --log-junit ./var/phpunit/logs/bridge-psr18-telemetry-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/bridge-psr18-telemetry-integration.coverage.xml"
],
"test:bridge:symfony-http-foundation": [
- "tools/phpunit/vendor/bin/phpunit --testsuite=bridge-symfony-http-foundation-unit --log-junit ./var/phpunit/logs/bridge-symfony-http-foundation-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/bridge-symfony-http-foundation-unit.coverage.xml --coverage-html=./var/phpunit/coverage/html/bridge-symfony-http-foundation-unit",
- "tools/phpunit/vendor/bin/phpunit --testsuite=bridge-symfony-http-foundation-integration --log-junit ./var/phpunit/logs/bridge-symfony-http-foundation-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/bridge-symfony-http-foundation-integration.coverage.xml --coverage-html=./var/phpunit/coverage/html/bridge-symfony-http-foundation-integration"
+ "tools/phpunit/vendor/bin/phpunit --testsuite=bridge-symfony-http-foundation-unit --log-junit ./var/phpunit/logs/bridge-symfony-http-foundation-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/bridge-symfony-http-foundation-unit.coverage.xml",
+ "tools/phpunit/vendor/bin/phpunit --testsuite=bridge-symfony-http-foundation-integration --log-junit ./var/phpunit/logs/bridge-symfony-http-foundation-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/bridge-symfony-http-foundation-integration.coverage.xml"
],
"test:bridge:symfony-http-foundation-telemetry": [
- "tools/phpunit/vendor/bin/phpunit --testsuite=bridge-symfony-http-foundation-telemetry-unit --log-junit ./var/phpunit/logs/bridge-symfony-http-foundation-telemetry-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/bridge-symfony-http-foundation-telemetry-unit.coverage.xml --coverage-html=./var/phpunit/coverage/html/bridge-symfony-http-foundation-telemetry-unit",
- "tools/phpunit/vendor/bin/phpunit --testsuite=bridge-symfony-http-foundation-telemetry-integration --log-junit ./var/phpunit/logs/bridge-symfony-http-foundation-telemetry-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/bridge-symfony-http-foundation-telemetry-integration.coverage.xml --coverage-html=./var/phpunit/coverage/html/bridge-symfony-http-foundation-telemetry-integration"
+ "tools/phpunit/vendor/bin/phpunit --testsuite=bridge-symfony-http-foundation-telemetry-unit --log-junit ./var/phpunit/logs/bridge-symfony-http-foundation-telemetry-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/bridge-symfony-http-foundation-telemetry-unit.coverage.xml",
+ "tools/phpunit/vendor/bin/phpunit --testsuite=bridge-symfony-http-foundation-telemetry-integration --log-junit ./var/phpunit/logs/bridge-symfony-http-foundation-telemetry-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/bridge-symfony-http-foundation-telemetry-integration.coverage.xml"
+ ],
+ "test:bridge:symfony-telemetry-bundle": [
+ "tools/phpunit/vendor/bin/phpunit --testsuite=bridge-symfony-telemetry-bundle-unit --log-junit ./var/phpunit/logs/bridge-symfony-telemetry-bundle-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/bridge-symfony-telemetry-bundle-unit.coverage.xml",
+ "tools/phpunit/vendor/bin/phpunit --testsuite=bridge-symfony-telemetry-bundle-integration --log-junit ./var/phpunit/logs/bridge-symfony-telemetry-bundle-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/bridge-symfony-telemetry-bundle-integration.coverage.xml"
],
"test:bridge:telemetry-otlp": [
- "tools/phpunit/vendor/bin/phpunit --testsuite=bridge-telemetry-otlp-unit --log-junit ./var/phpunit/logs/bridge-telemetry-otlp-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/bridge-telemetry-otlp-unit.coverage.xml --coverage-html=./var/phpunit/coverage/html/bridge-telemetry-otlp-unit",
- "tools/phpunit/vendor/bin/phpunit --testsuite=bridge-telemetry-otlp-integration --log-junit ./var/phpunit/logs/bridge-telemetry-otlp-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/bridge-telemetry-otlp-integration.coverage.xml --coverage-html=./var/phpunit/coverage/html/bridge-telemetry-otlp-integration"
+ "tools/phpunit/vendor/bin/phpunit --testsuite=bridge-telemetry-otlp-unit --log-junit ./var/phpunit/logs/bridge-telemetry-otlp-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/bridge-telemetry-otlp-unit.coverage.xml",
+ "tools/phpunit/vendor/bin/phpunit --testsuite=bridge-telemetry-otlp-integration --log-junit ./var/phpunit/logs/bridge-telemetry-otlp-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/bridge-telemetry-otlp-integration.coverage.xml"
],
"test:adapter:chartjs": [
- "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-chartjs-unit --log-junit ./var/phpunit/logs/adapter-chartjs-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-chartjs-unit.coverage.xml --coverage-html=./var/phpunit/coverage/html/adapter-chartjs-unit",
- "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-chartjs-integration --log-junit ./var/phpunit/logs/adapter-chartjs-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-chartjs-integration.coverage.xml --coverage-html=./var/phpunit/coverage/html/adapter-chartjs-integration"
+ "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-chartjs-unit --log-junit ./var/phpunit/logs/adapter-chartjs-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-chartjs-unit.coverage.xml",
+ "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-chartjs-integration --log-junit ./var/phpunit/logs/adapter-chartjs-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-chartjs-integration.coverage.xml"
],
"test:adapter:csv": [
- "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-csv-unit --log-junit ./var/phpunit/logs/adapter-csv-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-csv-unit.coverage.xml --coverage-html=./var/phpunit/coverage/html/adapter-csv-unit",
- "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-csv-integration --log-junit ./var/phpunit/logs/adapter-csv-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-csv-integration.coverage.xml --coverage-html=./var/phpunit/coverage/html/adapter-csv-integration"
+ "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-csv-unit --log-junit ./var/phpunit/logs/adapter-csv-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-csv-unit.coverage.xml",
+ "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-csv-integration --log-junit ./var/phpunit/logs/adapter-csv-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-csv-integration.coverage.xml"
],
"test:adapter:doctrine": [
- "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-doctrine-unit --log-junit ./var/phpunit/logs/adapter-doctrine-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-doctrine-unit.coverage.xml --coverage-html=./var/phpunit/coverage/html/adapter-doctrine-unit",
- "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-doctrine-integration --log-junit ./var/phpunit/logs/adapter-doctrine-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-doctrine-integration.coverage.xml --coverage-html=./var/phpunit/coverage/html/adapter-doctrine-integration"
+ "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-doctrine-unit --log-junit ./var/phpunit/logs/adapter-doctrine-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-doctrine-unit.coverage.xml",
+ "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-doctrine-integration --log-junit ./var/phpunit/logs/adapter-doctrine-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-doctrine-integration.coverage.xml"
],
"test:adapter:elasticsearch": [
- "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-elasticsearch-unit --log-junit ./var/phpunit/logs/adapter-elasticsearch-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-elasticsearch-unit.coverage.xml --coverage-html=./var/phpunit/coverage/html/adapter-elasticsearch-unit",
- "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-elasticsearch-integration --log-junit ./var/phpunit/logs/adapter-elasticsearch-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-elasticsearch-integration.coverage.xml --coverage-html=./var/phpunit/coverage/html/adapter-elasticsearch-integration"
+ "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-elasticsearch-unit --log-junit ./var/phpunit/logs/adapter-elasticsearch-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-elasticsearch-unit.coverage.xml",
+ "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-elasticsearch-integration --log-junit ./var/phpunit/logs/adapter-elasticsearch-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-elasticsearch-integration.coverage.xml"
],
"test:adapter:excel": [
- "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-excel-unit --log-junit ./var/phpunit/logs/adapter-excel-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-excel-unit.coverage.xml --coverage-html=./var/phpunit/coverage/html/adapter-excel-unit",
- "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-excel-integration --log-junit ./var/phpunit/logs/adapter-excel-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-excel-integration.coverage.xml --coverage-html=./var/phpunit/coverage/html/adapter-excel-integration"
+ "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-excel-unit --log-junit ./var/phpunit/logs/adapter-excel-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-excel-unit.coverage.xml",
+ "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-excel-integration --log-junit ./var/phpunit/logs/adapter-excel-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-excel-integration.coverage.xml"
],
"test:adapter:google-sheet": [
- "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-google-sheet-unit --log-junit ./var/phpunit/logs/adapter-google-sheet-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-google-sheet-unit.coverage.xml --coverage-html=./var/phpunit/coverage/html/adapter-google-sheet-unit",
- "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-google-sheet-integration --log-junit ./var/phpunit/coverage/clover/adapter-google-sheet-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-google-sheet-integration.coverage.xml --coverage-html=./var/phpunit/coverage/html/adapter-google-sheet-integration"
+ "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-google-sheet-unit --log-junit ./var/phpunit/logs/adapter-google-sheet-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-google-sheet-unit.coverage.xml",
+ "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-google-sheet-integration --log-junit ./var/phpunit/coverage/clover/adapter-google-sheet-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-google-sheet-integration.coverage.xml"
],
"test:adapter:http": [
- "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-http-unit --log-junit ./var/phpunit/logs/adapter-http-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-http-unit.coverage.xml --coverage-html=./var/phpunit/coverage/html/adapter-http-unit",
- "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-http-integration --log-junit ./var/phpunit/coverage/clover/adapter-http-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-http-integration.coverage.xml --coverage-html=./var/phpunit/coverage/html/adapter-http-integration"
+ "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-http-unit --log-junit ./var/phpunit/logs/adapter-http-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-http-unit.coverage.xml",
+ "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-http-integration --log-junit ./var/phpunit/coverage/clover/adapter-http-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-http-integration.coverage.xml"
],
"test:adapter:json": [
- "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-json-unit --log-junit ./var/phpunit/logs/adapter-json-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-json-unit.coverage.xml --coverage-html=./var/phpunit/coverage/html/adapter-json-unit",
- "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-json-integration --log-junit ./var/phpunit/logs/adapter-json-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-json-integration.coverage.xml --coverage-html=./var/phpunit/coverage/html/adapter-json-integration"
+ "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-json-unit --log-junit ./var/phpunit/logs/adapter-json-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-json-unit.coverage.xml",
+ "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-json-integration --log-junit ./var/phpunit/logs/adapter-json-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-json-integration.coverage.xml"
],
"test:adapter:logger": [
- "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-logger-unit --log-junit ./var/phpunit/logs/adapter-logger-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-logger-unit.coverage.xml --coverage-html=./var/phpunit/coverage/html/adapter-logger-unit"
+ "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-logger-unit --log-junit ./var/phpunit/logs/adapter-logger-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-logger-unit.coverage.xml"
],
"test:adapter:meilisearch": [
- "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-meilisearch-integration --log-junit ./var/phpunit/logs/adapter-meilisearch-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-meilisearch-integration.coverage.xml --coverage-html=./var/phpunit/coverage/html/adapter-meilisearch-integration"
+ "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-meilisearch-integration --log-junit ./var/phpunit/logs/adapter-meilisearch-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-meilisearch-integration.coverage.xml"
],
"test:adapter:parquet": [
- "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-parquet-unit --log-junit ./var/phpunit/logs/adapter-parquet-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-parquet-unit.coverage.xml --coverage-html=./var/phpunit/coverage/html/adapter-parquet-unit",
- "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-parquet-integration --log-junit ./var/phpunit/logs/adapter-parquet-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-parquet-integration.coverage.xml --coverage-html=./var/phpunit/coverage/html/adapter-parquet-integration"
+ "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-parquet-unit --log-junit ./var/phpunit/logs/adapter-parquet-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-parquet-unit.coverage.xml",
+ "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-parquet-integration --log-junit ./var/phpunit/logs/adapter-parquet-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-parquet-integration.coverage.xml"
],
"test:adapter:text": [
- "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-text-integration --log-junit ./var/phpunit/logs/adapter-text-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-text-integration.coverage.xml --coverage-html=./var/phpunit/coverage/html/adapter-text-integration"
+ "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-text-integration --log-junit ./var/phpunit/logs/adapter-text-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-text-integration.coverage.xml"
],
"test:adapter:xml": [
- "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-xml-unit --log-junit ./var/phpunit/logs/adapter-xml-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-xml-unit.coverage.xml --coverage-html=./var/phpunit/coverage/html/adapter-xml-unit",
- "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-xml-integration --log-junit ./var/phpunit/coverage/clover/adapter-xml-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-xml-integration.coverage.xml --coverage-html=./var/phpunit/coverage/html/adapter-xml-integration"
+ "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-xml-unit --log-junit ./var/phpunit/logs/adapter-xml-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-xml-unit.coverage.xml",
+ "tools/phpunit/vendor/bin/phpunit --testsuite=adapter-xml-integration --log-junit ./var/phpunit/coverage/clover/adapter-xml-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-xml-integration.coverage.xml"
],
"test:adapter:postgresql": [
- "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 --coverage-html=./var/phpunit/coverage/html/adapter-postgresql-unit",
- "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 --coverage-html=./var/phpunit/coverage/html/adapter-postgresql-integration"
+ "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:docs": [
"docker run -t --rm -v $PWD:/app norberttech/md-link-linter --exclude=vendor --exclude=.scratchpad --exclude=examples --exclude=documentation ."
diff --git a/composer.lock b/composer.lock
index b03ab7f4e5..39faa97f43 100644
--- a/composer.lock
+++ b/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": "7f857eaa375ae5daff4cea7bafb09532",
+ "content-hash": "72bef3ea32003325ddbe8b2e9cc36dbb",
"packages": [
{
"name": "async-aws/core",
@@ -141,16 +141,16 @@
},
{
"name": "brick/math",
- "version": "0.14.4",
+ "version": "0.14.7",
"source": {
"type": "git",
"url": "https://github.com/brick/math.git",
- "reference": "a8b53e6cc4d3a336543f042a4dfa0e3f2f2356a4"
+ "reference": "07ff363b16ef8aca9692bba3be9e73fe63f34e50"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/brick/math/zipball/a8b53e6cc4d3a336543f042a4dfa0e3f2f2356a4",
- "reference": "a8b53e6cc4d3a336543f042a4dfa0e3f2f2356a4",
+ "url": "https://api.github.com/repos/brick/math/zipball/07ff363b16ef8aca9692bba3be9e73fe63f34e50",
+ "reference": "07ff363b16ef8aca9692bba3be9e73fe63f34e50",
"shasum": ""
},
"require": {
@@ -189,7 +189,7 @@
],
"support": {
"issues": "https://github.com/brick/math/issues",
- "source": "https://github.com/brick/math/tree/0.14.4"
+ "source": "https://github.com/brick/math/tree/0.14.7"
},
"funding": [
{
@@ -197,7 +197,7 @@
"type": "github"
}
],
- "time": "2026-02-02T16:57:31+00:00"
+ "time": "2026-02-07T10:57:35+00:00"
},
{
"name": "coduo/php-humanizer",
@@ -374,29 +374,29 @@
},
{
"name": "doctrine/deprecations",
- "version": "1.1.5",
+ "version": "1.1.6",
"source": {
"type": "git",
"url": "https://github.com/doctrine/deprecations.git",
- "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38"
+ "reference": "d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/deprecations/zipball/459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38",
- "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38",
+ "url": "https://api.github.com/repos/doctrine/deprecations/zipball/d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca",
+ "reference": "d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0"
},
"conflict": {
- "phpunit/phpunit": "<=7.5 || >=13"
+ "phpunit/phpunit": "<=7.5 || >=14"
},
"require-dev": {
- "doctrine/coding-standard": "^9 || ^12 || ^13",
- "phpstan/phpstan": "1.4.10 || 2.1.11",
+ "doctrine/coding-standard": "^9 || ^12 || ^14",
+ "phpstan/phpstan": "1.4.10 || 2.1.30",
"phpstan/phpstan-phpunit": "^1.0 || ^2",
- "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12.4 || ^13.0",
"psr/log": "^1 || ^2 || ^3"
},
"suggest": {
@@ -416,9 +416,9 @@
"homepage": "https://www.doctrine-project.org/",
"support": {
"issues": "https://github.com/doctrine/deprecations/issues",
- "source": "https://github.com/doctrine/deprecations/tree/1.1.5"
+ "source": "https://github.com/doctrine/deprecations/tree/1.1.6"
},
- "time": "2025-04-07T20:06:18+00:00"
+ "time": "2026-02-07T07:09:04+00:00"
},
{
"name": "elastic/transport",
@@ -2214,6 +2214,56 @@
},
"time": "2021-11-05T16:47:00+00:00"
},
+ {
+ "name": "psr/event-dispatcher",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/event-dispatcher.git",
+ "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0",
+ "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\EventDispatcher\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Standard interfaces for event handling.",
+ "keywords": [
+ "events",
+ "psr",
+ "psr-14"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/event-dispatcher/issues",
+ "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0"
+ },
+ "time": "2019-01-08T18:20:26+00:00"
+ },
{
"name": "psr/http-client",
"version": "1.0.3",
@@ -2520,53 +2570,40 @@
"time": "2019-03-08T08:55:37+00:00"
},
{
- "name": "symfony/console",
+ "name": "symfony/config",
"version": "v7.4.4",
"source": {
"type": "git",
- "url": "https://github.com/symfony/console.git",
- "reference": "41e38717ac1dd7a46b6bda7d6a82af2d98a78894"
+ "url": "https://github.com/symfony/config.git",
+ "reference": "4275b53b8ab0cf37f48bf273dc2285c8178efdfb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/41e38717ac1dd7a46b6bda7d6a82af2d98a78894",
- "reference": "41e38717ac1dd7a46b6bda7d6a82af2d98a78894",
+ "url": "https://api.github.com/repos/symfony/config/zipball/4275b53b8ab0cf37f48bf273dc2285c8178efdfb",
+ "reference": "4275b53b8ab0cf37f48bf273dc2285c8178efdfb",
"shasum": ""
},
"require": {
"php": ">=8.2",
"symfony/deprecation-contracts": "^2.5|^3",
- "symfony/polyfill-mbstring": "~1.0",
- "symfony/service-contracts": "^2.5|^3",
- "symfony/string": "^7.2|^8.0"
+ "symfony/filesystem": "^7.1|^8.0",
+ "symfony/polyfill-ctype": "~1.8"
},
"conflict": {
- "symfony/dependency-injection": "<6.4",
- "symfony/dotenv": "<6.4",
- "symfony/event-dispatcher": "<6.4",
- "symfony/lock": "<6.4",
- "symfony/process": "<6.4"
- },
- "provide": {
- "psr/log-implementation": "1.0|2.0|3.0"
+ "symfony/finder": "<6.4",
+ "symfony/service-contracts": "<2.5"
},
"require-dev": {
- "psr/log": "^1|^2|^3",
- "symfony/config": "^6.4|^7.0|^8.0",
- "symfony/dependency-injection": "^6.4|^7.0|^8.0",
"symfony/event-dispatcher": "^6.4|^7.0|^8.0",
- "symfony/http-foundation": "^6.4|^7.0|^8.0",
- "symfony/http-kernel": "^6.4|^7.0|^8.0",
- "symfony/lock": "^6.4|^7.0|^8.0",
+ "symfony/finder": "^6.4|^7.0|^8.0",
"symfony/messenger": "^6.4|^7.0|^8.0",
- "symfony/process": "^6.4|^7.0|^8.0",
- "symfony/stopwatch": "^6.4|^7.0|^8.0",
- "symfony/var-dumper": "^6.4|^7.0|^8.0"
+ "symfony/service-contracts": "^2.5|^3",
+ "symfony/yaml": "^6.4|^7.0|^8.0"
},
"type": "library",
"autoload": {
"psr-4": {
- "Symfony\\Component\\Console\\": ""
+ "Symfony\\Component\\Config\\": ""
},
"exclude-from-classmap": [
"/Tests/"
@@ -2586,16 +2623,10 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Eases the creation of beautiful and testable command line interfaces",
+ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind",
"homepage": "https://symfony.com",
- "keywords": [
- "cli",
- "command-line",
- "console",
- "terminal"
- ],
"support": {
- "source": "https://github.com/symfony/console/tree/v7.4.4"
+ "source": "https://github.com/symfony/config/tree/v7.4.4"
},
"funding": [
{
@@ -2618,35 +2649,56 @@
"time": "2026-01-13T11:36:38+00:00"
},
{
- "name": "symfony/deprecation-contracts",
- "version": "v3.6.0",
+ "name": "symfony/console",
+ "version": "v7.4.4",
"source": {
"type": "git",
- "url": "https://github.com/symfony/deprecation-contracts.git",
- "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62"
+ "url": "https://github.com/symfony/console.git",
+ "reference": "41e38717ac1dd7a46b6bda7d6a82af2d98a78894"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62",
- "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62",
+ "url": "https://api.github.com/repos/symfony/console/zipball/41e38717ac1dd7a46b6bda7d6a82af2d98a78894",
+ "reference": "41e38717ac1dd7a46b6bda7d6a82af2d98a78894",
"shasum": ""
},
"require": {
- "php": ">=8.1"
+ "php": ">=8.2",
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/service-contracts": "^2.5|^3",
+ "symfony/string": "^7.2|^8.0"
},
- "type": "library",
- "extra": {
- "thanks": {
- "url": "https://github.com/symfony/contracts",
- "name": "symfony/contracts"
- },
- "branch-alias": {
- "dev-main": "3.6-dev"
- }
+ "conflict": {
+ "symfony/dependency-injection": "<6.4",
+ "symfony/dotenv": "<6.4",
+ "symfony/event-dispatcher": "<6.4",
+ "symfony/lock": "<6.4",
+ "symfony/process": "<6.4"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0|2.0|3.0"
+ },
+ "require-dev": {
+ "psr/log": "^1|^2|^3",
+ "symfony/config": "^6.4|^7.0|^8.0",
+ "symfony/dependency-injection": "^6.4|^7.0|^8.0",
+ "symfony/event-dispatcher": "^6.4|^7.0|^8.0",
+ "symfony/http-foundation": "^6.4|^7.0|^8.0",
+ "symfony/http-kernel": "^6.4|^7.0|^8.0",
+ "symfony/lock": "^6.4|^7.0|^8.0",
+ "symfony/messenger": "^6.4|^7.0|^8.0",
+ "symfony/process": "^6.4|^7.0|^8.0",
+ "symfony/stopwatch": "^6.4|^7.0|^8.0",
+ "symfony/var-dumper": "^6.4|^7.0|^8.0"
},
+ "type": "library",
"autoload": {
- "files": [
- "function.php"
+ "psr-4": {
+ "Symfony\\Component\\Console\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -2655,18 +2707,24 @@
],
"authors": [
{
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "A generic function and convention to trigger deprecation notices",
+ "description": "Eases the creation of beautiful and testable command line interfaces",
"homepage": "https://symfony.com",
+ "keywords": [
+ "cli",
+ "command-line",
+ "console",
+ "terminal"
+ ],
"support": {
- "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0"
+ "source": "https://github.com/symfony/console/tree/v7.4.4"
},
"funding": [
{
@@ -2677,67 +2735,57 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2024-09-25T14:21:43+00:00"
+ "time": "2026-01-13T11:36:38+00:00"
},
{
- "name": "symfony/http-client",
+ "name": "symfony/dependency-injection",
"version": "v7.4.5",
"source": {
"type": "git",
- "url": "https://github.com/symfony/http-client.git",
- "reference": "84bb634857a893cc146cceb467e31b3f02c5fe9f"
+ "url": "https://github.com/symfony/dependency-injection.git",
+ "reference": "76a02cddca45a5254479ad68f9fa274ead0a7ef2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-client/zipball/84bb634857a893cc146cceb467e31b3f02c5fe9f",
- "reference": "84bb634857a893cc146cceb467e31b3f02c5fe9f",
+ "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/76a02cddca45a5254479ad68f9fa274ead0a7ef2",
+ "reference": "76a02cddca45a5254479ad68f9fa274ead0a7ef2",
"shasum": ""
},
"require": {
"php": ">=8.2",
- "psr/log": "^1|^2|^3",
+ "psr/container": "^1.1|^2.0",
"symfony/deprecation-contracts": "^2.5|^3",
- "symfony/http-client-contracts": "~3.4.4|^3.5.2",
- "symfony/polyfill-php83": "^1.29",
- "symfony/service-contracts": "^2.5|^3"
+ "symfony/service-contracts": "^3.6",
+ "symfony/var-exporter": "^6.4.20|^7.2.5|^8.0"
},
"conflict": {
- "amphp/amp": "<2.5",
- "amphp/socket": "<1.1",
- "php-http/discovery": "<1.15",
- "symfony/http-foundation": "<6.4"
+ "ext-psr": "<1.1|>=2",
+ "symfony/config": "<6.4",
+ "symfony/finder": "<6.4",
+ "symfony/yaml": "<6.4"
},
"provide": {
- "php-http/async-client-implementation": "*",
- "php-http/client-implementation": "*",
- "psr/http-client-implementation": "1.0",
- "symfony/http-client-implementation": "3.0"
+ "psr/container-implementation": "1.1|2.0",
+ "symfony/service-implementation": "1.1|2.0|3.0"
},
"require-dev": {
- "amphp/http-client": "^4.2.1|^5.0",
- "amphp/http-tunnel": "^1.0|^2.0",
- "guzzlehttp/promises": "^1.4|^2.0",
- "nyholm/psr7": "^1.0",
- "php-http/httplug": "^1.0|^2.0",
- "psr/http-client": "^1.0",
- "symfony/amphp-http-client-meta": "^1.0|^2.0",
- "symfony/cache": "^6.4|^7.0|^8.0",
- "symfony/dependency-injection": "^6.4|^7.0|^8.0",
- "symfony/http-kernel": "^6.4|^7.0|^8.0",
- "symfony/messenger": "^6.4|^7.0|^8.0",
- "symfony/process": "^6.4|^7.0|^8.0",
- "symfony/rate-limiter": "^6.4|^7.0|^8.0",
- "symfony/stopwatch": "^6.4|^7.0|^8.0"
+ "symfony/config": "^6.4|^7.0|^8.0",
+ "symfony/expression-language": "^6.4|^7.0|^8.0",
+ "symfony/yaml": "^6.4|^7.0|^8.0"
},
"type": "library",
"autoload": {
"psr-4": {
- "Symfony\\Component\\HttpClient\\": ""
+ "Symfony\\Component\\DependencyInjection\\": ""
},
"exclude-from-classmap": [
"/Tests/"
@@ -2749,21 +2797,18 @@
],
"authors": [
{
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously",
+ "description": "Allows you to standardize and centralize the way objects are constructed in your application",
"homepage": "https://symfony.com",
- "keywords": [
- "http"
- ],
"support": {
- "source": "https://github.com/symfony/http-client/tree/v7.4.5"
+ "source": "https://github.com/symfony/dependency-injection/tree/v7.4.5"
},
"funding": [
{
@@ -2786,17 +2831,17 @@
"time": "2026-01-27T16:16:02+00:00"
},
{
- "name": "symfony/http-client-contracts",
+ "name": "symfony/deprecation-contracts",
"version": "v3.6.0",
"source": {
"type": "git",
- "url": "https://github.com/symfony/http-client-contracts.git",
- "reference": "75d7043853a42837e68111812f4d964b01e5101c"
+ "url": "https://github.com/symfony/deprecation-contracts.git",
+ "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/75d7043853a42837e68111812f4d964b01e5101c",
- "reference": "75d7043853a42837e68111812f4d964b01e5101c",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62",
+ "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62",
"shasum": ""
},
"require": {
@@ -2813,11 +2858,8 @@
}
},
"autoload": {
- "psr-4": {
- "Symfony\\Contracts\\HttpClient\\": ""
- },
- "exclude-from-classmap": [
- "/Test/"
+ "files": [
+ "function.php"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -2834,18 +2876,10 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Generic abstractions related to HTTP clients",
+ "description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
- "keywords": [
- "abstractions",
- "contracts",
- "decoupling",
- "interfaces",
- "interoperability",
- "standards"
- ],
"support": {
- "source": "https://github.com/symfony/http-client-contracts/tree/v3.6.0"
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0"
},
"funding": [
{
@@ -2861,46 +2895,46 @@
"type": "tidelift"
}
],
- "time": "2025-04-29T11:18:49+00:00"
+ "time": "2024-09-25T14:21:43+00:00"
},
{
- "name": "symfony/http-foundation",
- "version": "v7.4.5",
+ "name": "symfony/error-handler",
+ "version": "v7.4.4",
"source": {
"type": "git",
- "url": "https://github.com/symfony/http-foundation.git",
- "reference": "446d0db2b1f21575f1284b74533e425096abdfb6"
+ "url": "https://github.com/symfony/error-handler.git",
+ "reference": "8da531f364ddfee53e36092a7eebbbd0b775f6b8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/446d0db2b1f21575f1284b74533e425096abdfb6",
- "reference": "446d0db2b1f21575f1284b74533e425096abdfb6",
+ "url": "https://api.github.com/repos/symfony/error-handler/zipball/8da531f364ddfee53e36092a7eebbbd0b775f6b8",
+ "reference": "8da531f364ddfee53e36092a7eebbbd0b775f6b8",
"shasum": ""
},
"require": {
"php": ">=8.2",
- "symfony/deprecation-contracts": "^2.5|^3",
- "symfony/polyfill-mbstring": "^1.1"
+ "psr/log": "^1|^2|^3",
+ "symfony/polyfill-php85": "^1.32",
+ "symfony/var-dumper": "^6.4|^7.0|^8.0"
},
"conflict": {
- "doctrine/dbal": "<3.6",
- "symfony/cache": "<6.4.12|>=7.0,<7.1.5"
+ "symfony/deprecation-contracts": "<2.5",
+ "symfony/http-kernel": "<6.4"
},
"require-dev": {
- "doctrine/dbal": "^3.6|^4",
- "predis/predis": "^1.1|^2.0",
- "symfony/cache": "^6.4.12|^7.1.5|^8.0",
- "symfony/clock": "^6.4|^7.0|^8.0",
- "symfony/dependency-injection": "^6.4|^7.0|^8.0",
- "symfony/expression-language": "^6.4|^7.0|^8.0",
+ "symfony/console": "^6.4|^7.0|^8.0",
+ "symfony/deprecation-contracts": "^2.5|^3",
"symfony/http-kernel": "^6.4|^7.0|^8.0",
- "symfony/mime": "^6.4|^7.0|^8.0",
- "symfony/rate-limiter": "^6.4|^7.0|^8.0"
+ "symfony/serializer": "^6.4|^7.0|^8.0",
+ "symfony/webpack-encore-bundle": "^1.0|^2.0"
},
+ "bin": [
+ "Resources/bin/patch-type-declarations"
+ ],
"type": "library",
"autoload": {
"psr-4": {
- "Symfony\\Component\\HttpFoundation\\": ""
+ "Symfony\\Component\\ErrorHandler\\": ""
},
"exclude-from-classmap": [
"/Tests/"
@@ -2920,7 +2954,499 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Defines an object-oriented layer for the HTTP specification",
+ "description": "Provides tools to manage errors and ease debugging PHP code",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/error-handler/tree/v7.4.4"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2026-01-20T16:42:42+00:00"
+ },
+ {
+ "name": "symfony/event-dispatcher",
+ "version": "v7.4.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/event-dispatcher.git",
+ "reference": "dc2c0eba1af673e736bb851d747d266108aea746"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/dc2c0eba1af673e736bb851d747d266108aea746",
+ "reference": "dc2c0eba1af673e736bb851d747d266108aea746",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2",
+ "symfony/event-dispatcher-contracts": "^2.5|^3"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<6.4",
+ "symfony/service-contracts": "<2.5"
+ },
+ "provide": {
+ "psr/event-dispatcher-implementation": "1.0",
+ "symfony/event-dispatcher-implementation": "2.0|3.0"
+ },
+ "require-dev": {
+ "psr/log": "^1|^2|^3",
+ "symfony/config": "^6.4|^7.0|^8.0",
+ "symfony/dependency-injection": "^6.4|^7.0|^8.0",
+ "symfony/error-handler": "^6.4|^7.0|^8.0",
+ "symfony/expression-language": "^6.4|^7.0|^8.0",
+ "symfony/framework-bundle": "^6.4|^7.0|^8.0",
+ "symfony/http-foundation": "^6.4|^7.0|^8.0",
+ "symfony/service-contracts": "^2.5|^3",
+ "symfony/stopwatch": "^6.4|^7.0|^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\EventDispatcher\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/event-dispatcher/tree/v7.4.4"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2026-01-05T11:45:34+00:00"
+ },
+ {
+ "name": "symfony/event-dispatcher-contracts",
+ "version": "v3.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/event-dispatcher-contracts.git",
+ "reference": "59eb412e93815df44f05f342958efa9f46b1e586"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/59eb412e93815df44f05f342958efa9f46b1e586",
+ "reference": "59eb412e93815df44f05f342958efa9f46b1e586",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1",
+ "psr/event-dispatcher": "^1"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/contracts",
+ "name": "symfony/contracts"
+ },
+ "branch-alias": {
+ "dev-main": "3.6-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\EventDispatcher\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to dispatching event",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.6.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-09-25T14:21:43+00:00"
+ },
+ {
+ "name": "symfony/filesystem",
+ "version": "v7.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/filesystem.git",
+ "reference": "d551b38811096d0be9c4691d406991b47c0c630a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/d551b38811096d0be9c4691d406991b47c0c630a",
+ "reference": "d551b38811096d0be9c4691d406991b47c0c630a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-mbstring": "~1.8"
+ },
+ "require-dev": {
+ "symfony/process": "^6.4|^7.0|^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Filesystem\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides basic utilities for the filesystem",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/filesystem/tree/v7.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-11-27T13:27:24+00:00"
+ },
+ {
+ "name": "symfony/http-client",
+ "version": "v7.4.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/http-client.git",
+ "reference": "84bb634857a893cc146cceb467e31b3f02c5fe9f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/http-client/zipball/84bb634857a893cc146cceb467e31b3f02c5fe9f",
+ "reference": "84bb634857a893cc146cceb467e31b3f02c5fe9f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2",
+ "psr/log": "^1|^2|^3",
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/http-client-contracts": "~3.4.4|^3.5.2",
+ "symfony/polyfill-php83": "^1.29",
+ "symfony/service-contracts": "^2.5|^3"
+ },
+ "conflict": {
+ "amphp/amp": "<2.5",
+ "amphp/socket": "<1.1",
+ "php-http/discovery": "<1.15",
+ "symfony/http-foundation": "<6.4"
+ },
+ "provide": {
+ "php-http/async-client-implementation": "*",
+ "php-http/client-implementation": "*",
+ "psr/http-client-implementation": "1.0",
+ "symfony/http-client-implementation": "3.0"
+ },
+ "require-dev": {
+ "amphp/http-client": "^4.2.1|^5.0",
+ "amphp/http-tunnel": "^1.0|^2.0",
+ "guzzlehttp/promises": "^1.4|^2.0",
+ "nyholm/psr7": "^1.0",
+ "php-http/httplug": "^1.0|^2.0",
+ "psr/http-client": "^1.0",
+ "symfony/amphp-http-client-meta": "^1.0|^2.0",
+ "symfony/cache": "^6.4|^7.0|^8.0",
+ "symfony/dependency-injection": "^6.4|^7.0|^8.0",
+ "symfony/http-kernel": "^6.4|^7.0|^8.0",
+ "symfony/messenger": "^6.4|^7.0|^8.0",
+ "symfony/process": "^6.4|^7.0|^8.0",
+ "symfony/rate-limiter": "^6.4|^7.0|^8.0",
+ "symfony/stopwatch": "^6.4|^7.0|^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\HttpClient\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "http"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/http-client/tree/v7.4.5"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2026-01-27T16:16:02+00:00"
+ },
+ {
+ "name": "symfony/http-client-contracts",
+ "version": "v3.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/http-client-contracts.git",
+ "reference": "75d7043853a42837e68111812f4d964b01e5101c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/75d7043853a42837e68111812f4d964b01e5101c",
+ "reference": "75d7043853a42837e68111812f4d964b01e5101c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/contracts",
+ "name": "symfony/contracts"
+ },
+ "branch-alias": {
+ "dev-main": "3.6-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\HttpClient\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Test/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to HTTP clients",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/http-client-contracts/tree/v3.6.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-04-29T11:18:49+00:00"
+ },
+ {
+ "name": "symfony/http-foundation",
+ "version": "v7.4.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/http-foundation.git",
+ "reference": "446d0db2b1f21575f1284b74533e425096abdfb6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/446d0db2b1f21575f1284b74533e425096abdfb6",
+ "reference": "446d0db2b1f21575f1284b74533e425096abdfb6",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2",
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/polyfill-mbstring": "^1.1"
+ },
+ "conflict": {
+ "doctrine/dbal": "<3.6",
+ "symfony/cache": "<6.4.12|>=7.0,<7.1.5"
+ },
+ "require-dev": {
+ "doctrine/dbal": "^3.6|^4",
+ "predis/predis": "^1.1|^2.0",
+ "symfony/cache": "^6.4.12|^7.1.5|^8.0",
+ "symfony/clock": "^6.4|^7.0|^8.0",
+ "symfony/dependency-injection": "^6.4|^7.0|^8.0",
+ "symfony/expression-language": "^6.4|^7.0|^8.0",
+ "symfony/http-kernel": "^6.4|^7.0|^8.0",
+ "symfony/mime": "^6.4|^7.0|^8.0",
+ "symfony/rate-limiter": "^6.4|^7.0|^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\HttpFoundation\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/http-foundation/tree/v7.4.5"
@@ -2943,7 +3469,126 @@
"type": "tidelift"
}
],
- "time": "2026-01-27T16:16:02+00:00"
+ "time": "2026-01-27T16:16:02+00:00"
+ },
+ {
+ "name": "symfony/http-kernel",
+ "version": "v7.4.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/http-kernel.git",
+ "reference": "229eda477017f92bd2ce7615d06222ec0c19e82a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/229eda477017f92bd2ce7615d06222ec0c19e82a",
+ "reference": "229eda477017f92bd2ce7615d06222ec0c19e82a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2",
+ "psr/log": "^1|^2|^3",
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/error-handler": "^6.4|^7.0|^8.0",
+ "symfony/event-dispatcher": "^7.3|^8.0",
+ "symfony/http-foundation": "^7.4|^8.0",
+ "symfony/polyfill-ctype": "^1.8"
+ },
+ "conflict": {
+ "symfony/browser-kit": "<6.4",
+ "symfony/cache": "<6.4",
+ "symfony/config": "<6.4",
+ "symfony/console": "<6.4",
+ "symfony/dependency-injection": "<6.4",
+ "symfony/doctrine-bridge": "<6.4",
+ "symfony/flex": "<2.10",
+ "symfony/form": "<6.4",
+ "symfony/http-client": "<6.4",
+ "symfony/http-client-contracts": "<2.5",
+ "symfony/mailer": "<6.4",
+ "symfony/messenger": "<6.4",
+ "symfony/translation": "<6.4",
+ "symfony/translation-contracts": "<2.5",
+ "symfony/twig-bridge": "<6.4",
+ "symfony/validator": "<6.4",
+ "symfony/var-dumper": "<6.4",
+ "twig/twig": "<3.12"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0|2.0|3.0"
+ },
+ "require-dev": {
+ "psr/cache": "^1.0|^2.0|^3.0",
+ "symfony/browser-kit": "^6.4|^7.0|^8.0",
+ "symfony/clock": "^6.4|^7.0|^8.0",
+ "symfony/config": "^6.4|^7.0|^8.0",
+ "symfony/console": "^6.4|^7.0|^8.0",
+ "symfony/css-selector": "^6.4|^7.0|^8.0",
+ "symfony/dependency-injection": "^6.4|^7.0|^8.0",
+ "symfony/dom-crawler": "^6.4|^7.0|^8.0",
+ "symfony/expression-language": "^6.4|^7.0|^8.0",
+ "symfony/finder": "^6.4|^7.0|^8.0",
+ "symfony/http-client-contracts": "^2.5|^3",
+ "symfony/process": "^6.4|^7.0|^8.0",
+ "symfony/property-access": "^7.1|^8.0",
+ "symfony/routing": "^6.4|^7.0|^8.0",
+ "symfony/serializer": "^7.1|^8.0",
+ "symfony/stopwatch": "^6.4|^7.0|^8.0",
+ "symfony/translation": "^6.4|^7.0|^8.0",
+ "symfony/translation-contracts": "^2.5|^3",
+ "symfony/uid": "^6.4|^7.0|^8.0",
+ "symfony/validator": "^6.4|^7.0|^8.0",
+ "symfony/var-dumper": "^6.4|^7.0|^8.0",
+ "symfony/var-exporter": "^6.4|^7.0|^8.0",
+ "twig/twig": "^3.12"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\HttpKernel\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides a structured process for converting a Request into a Response",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/http-kernel/tree/v7.4.5"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2026-01-28T10:33:42+00:00"
},
{
"name": "symfony/polyfill-ctype",
@@ -3520,6 +4165,86 @@
],
"time": "2025-07-08T02:45:35+00:00"
},
+ {
+ "name": "symfony/polyfill-php85",
+ "version": "v1.33.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php85.git",
+ "reference": "d4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php85/zipball/d4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91",
+ "reference": "d4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php85\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 8.5+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php85/tree/v1.33.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-06-23T16:12:55+00:00"
+ },
{
"name": "symfony/polyfill-uuid",
"version": "v1.33.0",
@@ -3979,15 +4704,182 @@
},
"require": {
"php": ">=8.2",
- "symfony/polyfill-uuid": "^1.15"
+ "symfony/polyfill-uuid": "^1.15"
+ },
+ "require-dev": {
+ "symfony/console": "^6.4|^7.0|^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Uid\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Grégoire Pineau",
+ "email": "lyrixx@lyrixx.info"
+ },
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides an object-oriented API to generate and represent UIDs",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "UID",
+ "ulid",
+ "uuid"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/uid/tree/v7.4.4"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2026-01-03T23:30:35+00:00"
+ },
+ {
+ "name": "symfony/var-dumper",
+ "version": "v7.4.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/var-dumper.git",
+ "reference": "0e4769b46a0c3c62390d124635ce59f66874b282"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/0e4769b46a0c3c62390d124635ce59f66874b282",
+ "reference": "0e4769b46a0c3c62390d124635ce59f66874b282",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2",
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/polyfill-mbstring": "~1.0"
+ },
+ "conflict": {
+ "symfony/console": "<6.4"
+ },
+ "require-dev": {
+ "symfony/console": "^6.4|^7.0|^8.0",
+ "symfony/http-kernel": "^6.4|^7.0|^8.0",
+ "symfony/process": "^6.4|^7.0|^8.0",
+ "symfony/uid": "^6.4|^7.0|^8.0",
+ "twig/twig": "^3.12"
+ },
+ "bin": [
+ "Resources/bin/var-dump-server"
+ ],
+ "type": "library",
+ "autoload": {
+ "files": [
+ "Resources/functions/dump.php"
+ ],
+ "psr-4": {
+ "Symfony\\Component\\VarDumper\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides mechanisms for walking through any arbitrary PHP variable",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "debug",
+ "dump"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/var-dumper/tree/v7.4.4"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2026-01-01T22:13:48+00:00"
+ },
+ {
+ "name": "symfony/var-exporter",
+ "version": "v7.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/var-exporter.git",
+ "reference": "03a60f169c79a28513a78c967316fbc8bf17816f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/var-exporter/zipball/03a60f169c79a28513a78c967316fbc8bf17816f",
+ "reference": "03a60f169c79a28513a78c967316fbc8bf17816f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2",
+ "symfony/deprecation-contracts": "^2.5|^3"
},
"require-dev": {
- "symfony/console": "^6.4|^7.0|^8.0"
+ "symfony/property-access": "^6.4|^7.0|^8.0",
+ "symfony/serializer": "^6.4|^7.0|^8.0",
+ "symfony/var-dumper": "^6.4|^7.0|^8.0"
},
"type": "library",
"autoload": {
"psr-4": {
- "Symfony\\Component\\Uid\\": ""
+ "Symfony\\Component\\VarExporter\\": ""
},
"exclude-from-classmap": [
"/Tests/"
@@ -3998,10 +4890,6 @@
"MIT"
],
"authors": [
- {
- "name": "Grégoire Pineau",
- "email": "lyrixx@lyrixx.info"
- },
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
@@ -4011,15 +4899,20 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Provides an object-oriented API to generate and represent UIDs",
+ "description": "Allows exporting any serializable PHP data structure to plain PHP code",
"homepage": "https://symfony.com",
"keywords": [
- "UID",
- "ulid",
- "uuid"
+ "clone",
+ "construct",
+ "export",
+ "hydrate",
+ "instantiate",
+ "lazy-loading",
+ "proxy",
+ "serialize"
],
"support": {
- "source": "https://github.com/symfony/uid/tree/v7.4.4"
+ "source": "https://github.com/symfony/var-exporter/tree/v7.4.0"
},
"funding": [
{
@@ -4039,7 +4932,7 @@
"type": "tidelift"
}
],
- "time": "2026-01-03T23:30:35+00:00"
+ "time": "2025-09-11T10:15:23+00:00"
},
{
"name": "webmozart/glob",
@@ -5038,32 +5931,263 @@
"symfony/http-kernel": "<6.4",
"symfony/var-dumper": "<6.4"
},
- "provide": {
- "psr/cache-implementation": "2.0|3.0",
- "psr/simple-cache-implementation": "1.0|2.0|3.0",
- "symfony/cache-implementation": "1.1|2.0|3.0"
+ "provide": {
+ "psr/cache-implementation": "2.0|3.0",
+ "psr/simple-cache-implementation": "1.0|2.0|3.0",
+ "symfony/cache-implementation": "1.1|2.0|3.0"
+ },
+ "require-dev": {
+ "cache/integration-tests": "dev-master",
+ "doctrine/dbal": "^3.6|^4",
+ "predis/predis": "^1.1|^2.0",
+ "psr/simple-cache": "^1.0|^2.0|^3.0",
+ "symfony/clock": "^6.4|^7.0|^8.0",
+ "symfony/config": "^6.4|^7.0|^8.0",
+ "symfony/dependency-injection": "^6.4|^7.0|^8.0",
+ "symfony/filesystem": "^6.4|^7.0|^8.0",
+ "symfony/http-kernel": "^6.4|^7.0|^8.0",
+ "symfony/messenger": "^6.4|^7.0|^8.0",
+ "symfony/var-dumper": "^6.4|^7.0|^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Cache\\": ""
+ },
+ "classmap": [
+ "Traits/ValueWrapper.php"
+ ],
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides extended PSR-6, PSR-16 (and tags) implementations",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "caching",
+ "psr6"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/cache/tree/v7.4.5"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2026-01-27T16:16:02+00:00"
+ },
+ {
+ "name": "symfony/cache-contracts",
+ "version": "v3.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/cache-contracts.git",
+ "reference": "5d68a57d66910405e5c0b63d6f0af941e66fc868"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/5d68a57d66910405e5c0b63d6f0af941e66fc868",
+ "reference": "5d68a57d66910405e5c0b63d6f0af941e66fc868",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1",
+ "psr/cache": "^3.0"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/contracts",
+ "name": "symfony/contracts"
+ },
+ "branch-alias": {
+ "dev-main": "3.6-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Cache\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to caching",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/cache-contracts/tree/v3.6.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-03-13T15:25:07+00:00"
+ },
+ {
+ "name": "symfony/clock",
+ "version": "v7.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/clock.git",
+ "reference": "9169f24776edde469914c1e7a1442a50f7a4e110"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/clock/zipball/9169f24776edde469914c1e7a1442a50f7a4e110",
+ "reference": "9169f24776edde469914c1e7a1442a50f7a4e110",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2",
+ "psr/clock": "^1.0",
+ "symfony/polyfill-php83": "^1.28"
+ },
+ "provide": {
+ "psr/clock-implementation": "1.0"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "Resources/now.php"
+ ],
+ "psr-4": {
+ "Symfony\\Component\\Clock\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Decouples applications from the system clock",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "clock",
+ "psr20",
+ "time"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/clock/tree/v7.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-11-12T15:39:26+00:00"
+ },
+ {
+ "name": "symfony/dotenv",
+ "version": "v7.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/dotenv.git",
+ "reference": "1658a4d34df028f3d93bcdd8e81f04423925a364"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/dotenv/zipball/1658a4d34df028f3d93bcdd8e81f04423925a364",
+ "reference": "1658a4d34df028f3d93bcdd8e81f04423925a364",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2"
+ },
+ "conflict": {
+ "symfony/console": "<6.4",
+ "symfony/process": "<6.4"
},
"require-dev": {
- "cache/integration-tests": "dev-master",
- "doctrine/dbal": "^3.6|^4",
- "predis/predis": "^1.1|^2.0",
- "psr/simple-cache": "^1.0|^2.0|^3.0",
- "symfony/clock": "^6.4|^7.0|^8.0",
- "symfony/config": "^6.4|^7.0|^8.0",
- "symfony/dependency-injection": "^6.4|^7.0|^8.0",
- "symfony/filesystem": "^6.4|^7.0|^8.0",
- "symfony/http-kernel": "^6.4|^7.0|^8.0",
- "symfony/messenger": "^6.4|^7.0|^8.0",
- "symfony/var-dumper": "^6.4|^7.0|^8.0"
+ "symfony/console": "^6.4|^7.0|^8.0",
+ "symfony/process": "^6.4|^7.0|^8.0"
},
"type": "library",
"autoload": {
"psr-4": {
- "Symfony\\Component\\Cache\\": ""
+ "Symfony\\Component\\Dotenv\\": ""
},
- "classmap": [
- "Traits/ValueWrapper.php"
- ],
"exclude-from-classmap": [
"/Tests/"
]
@@ -5074,22 +6198,23 @@
],
"authors": [
{
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Provides extended PSR-6, PSR-16 (and tags) implementations",
+ "description": "Registers environment variables from a .env file",
"homepage": "https://symfony.com",
"keywords": [
- "caching",
- "psr6"
+ "dotenv",
+ "env",
+ "environment"
],
"support": {
- "source": "https://github.com/symfony/cache/tree/v7.4.5"
+ "source": "https://github.com/symfony/dotenv/tree/v7.4.0"
},
"funding": [
{
@@ -5109,40 +6234,36 @@
"type": "tidelift"
}
],
- "time": "2026-01-27T16:16:02+00:00"
+ "time": "2025-11-16T10:14:42+00:00"
},
{
- "name": "symfony/cache-contracts",
- "version": "v3.6.0",
+ "name": "symfony/finder",
+ "version": "v7.4.5",
"source": {
"type": "git",
- "url": "https://github.com/symfony/cache-contracts.git",
- "reference": "5d68a57d66910405e5c0b63d6f0af941e66fc868"
+ "url": "https://github.com/symfony/finder.git",
+ "reference": "ad4daa7c38668dcb031e63bc99ea9bd42196a2cb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/5d68a57d66910405e5c0b63d6f0af941e66fc868",
- "reference": "5d68a57d66910405e5c0b63d6f0af941e66fc868",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/ad4daa7c38668dcb031e63bc99ea9bd42196a2cb",
+ "reference": "ad4daa7c38668dcb031e63bc99ea9bd42196a2cb",
"shasum": ""
},
"require": {
- "php": ">=8.1",
- "psr/cache": "^3.0"
+ "php": ">=8.2"
},
- "type": "library",
- "extra": {
- "thanks": {
- "url": "https://github.com/symfony/contracts",
- "name": "symfony/contracts"
- },
- "branch-alias": {
- "dev-main": "3.6-dev"
- }
+ "require-dev": {
+ "symfony/filesystem": "^6.4|^7.0|^8.0"
},
+ "type": "library",
"autoload": {
"psr-4": {
- "Symfony\\Contracts\\Cache\\": ""
- }
+ "Symfony\\Component\\Finder\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -5150,26 +6271,18 @@
],
"authors": [
{
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Generic abstractions related to caching",
+ "description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
- "keywords": [
- "abstractions",
- "contracts",
- "decoupling",
- "interfaces",
- "interoperability",
- "standards"
- ],
"support": {
- "source": "https://github.com/symfony/cache-contracts/tree/v3.6.0"
+ "source": "https://github.com/symfony/finder/tree/v7.4.5"
},
"funding": [
{
@@ -5180,42 +6293,131 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2025-03-13T15:25:07+00:00"
+ "time": "2026-01-26T15:07:59+00:00"
},
{
- "name": "symfony/dotenv",
- "version": "v7.4.0",
+ "name": "symfony/framework-bundle",
+ "version": "v7.4.5",
"source": {
"type": "git",
- "url": "https://github.com/symfony/dotenv.git",
- "reference": "1658a4d34df028f3d93bcdd8e81f04423925a364"
+ "url": "https://github.com/symfony/framework-bundle.git",
+ "reference": "dcf89ca6712d9e1b5d3f14dea0e1c2685a05d1cd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dotenv/zipball/1658a4d34df028f3d93bcdd8e81f04423925a364",
- "reference": "1658a4d34df028f3d93bcdd8e81f04423925a364",
+ "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/dcf89ca6712d9e1b5d3f14dea0e1c2685a05d1cd",
+ "reference": "dcf89ca6712d9e1b5d3f14dea0e1c2685a05d1cd",
"shasum": ""
},
"require": {
- "php": ">=8.2"
+ "composer-runtime-api": ">=2.1",
+ "ext-xml": "*",
+ "php": ">=8.2",
+ "symfony/cache": "^6.4.12|^7.0|^8.0",
+ "symfony/config": "^7.4.4|^8.0.4",
+ "symfony/dependency-injection": "^7.4.4|^8.0.4",
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/error-handler": "^7.3|^8.0",
+ "symfony/event-dispatcher": "^6.4|^7.0|^8.0",
+ "symfony/filesystem": "^7.1|^8.0",
+ "symfony/finder": "^6.4|^7.0|^8.0",
+ "symfony/http-foundation": "^7.4|^8.0",
+ "symfony/http-kernel": "^7.4|^8.0",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php85": "^1.32",
+ "symfony/routing": "^7.4|^8.0"
},
"conflict": {
+ "doctrine/persistence": "<1.3",
+ "phpdocumentor/reflection-docblock": "<5.2|>=6",
+ "phpdocumentor/type-resolver": "<1.5.1",
+ "symfony/asset": "<6.4",
+ "symfony/asset-mapper": "<6.4",
+ "symfony/clock": "<6.4",
"symfony/console": "<6.4",
- "symfony/process": "<6.4"
+ "symfony/dom-crawler": "<6.4",
+ "symfony/dotenv": "<6.4",
+ "symfony/form": "<7.4",
+ "symfony/http-client": "<6.4",
+ "symfony/lock": "<6.4",
+ "symfony/mailer": "<6.4",
+ "symfony/messenger": "<7.4",
+ "symfony/mime": "<6.4",
+ "symfony/property-access": "<6.4",
+ "symfony/property-info": "<6.4",
+ "symfony/runtime": "<6.4.13|>=7.0,<7.1.6",
+ "symfony/scheduler": "<6.4.4|>=7.0.0,<7.0.4",
+ "symfony/security-core": "<6.4",
+ "symfony/security-csrf": "<7.2",
+ "symfony/serializer": "<7.2.5",
+ "symfony/stopwatch": "<6.4",
+ "symfony/translation": "<7.3",
+ "symfony/twig-bridge": "<6.4",
+ "symfony/twig-bundle": "<6.4",
+ "symfony/validator": "<6.4",
+ "symfony/web-profiler-bundle": "<6.4",
+ "symfony/webhook": "<7.2",
+ "symfony/workflow": "<7.4"
},
"require-dev": {
+ "doctrine/persistence": "^1.3|^2|^3",
+ "dragonmantank/cron-expression": "^3.1",
+ "phpdocumentor/reflection-docblock": "^5.2",
+ "seld/jsonlint": "^1.10",
+ "symfony/asset": "^6.4|^7.0|^8.0",
+ "symfony/asset-mapper": "^6.4|^7.0|^8.0",
+ "symfony/browser-kit": "^6.4|^7.0|^8.0",
+ "symfony/clock": "^6.4|^7.0|^8.0",
"symfony/console": "^6.4|^7.0|^8.0",
- "symfony/process": "^6.4|^7.0|^8.0"
- },
- "type": "library",
+ "symfony/css-selector": "^6.4|^7.0|^8.0",
+ "symfony/dom-crawler": "^6.4|^7.0|^8.0",
+ "symfony/dotenv": "^6.4|^7.0|^8.0",
+ "symfony/expression-language": "^6.4|^7.0|^8.0",
+ "symfony/form": "^7.4|^8.0",
+ "symfony/html-sanitizer": "^6.4|^7.0|^8.0",
+ "symfony/http-client": "^6.4|^7.0|^8.0",
+ "symfony/json-streamer": "^7.3|^8.0",
+ "symfony/lock": "^6.4|^7.0|^8.0",
+ "symfony/mailer": "^6.4|^7.0|^8.0",
+ "symfony/messenger": "^7.4|^8.0",
+ "symfony/mime": "^6.4|^7.0|^8.0",
+ "symfony/notifier": "^6.4|^7.0|^8.0",
+ "symfony/object-mapper": "^7.3|^8.0",
+ "symfony/polyfill-intl-icu": "~1.0",
+ "symfony/process": "^6.4|^7.0|^8.0",
+ "symfony/property-info": "^6.4|^7.0|^8.0",
+ "symfony/rate-limiter": "^6.4|^7.0|^8.0",
+ "symfony/runtime": "^6.4.13|^7.1.6|^8.0",
+ "symfony/scheduler": "^6.4.4|^7.0.4|^8.0",
+ "symfony/security-bundle": "^6.4|^7.0|^8.0",
+ "symfony/semaphore": "^6.4|^7.0|^8.0",
+ "symfony/serializer": "^7.2.5|^8.0",
+ "symfony/stopwatch": "^6.4|^7.0|^8.0",
+ "symfony/string": "^6.4|^7.0|^8.0",
+ "symfony/translation": "^7.3|^8.0",
+ "symfony/twig-bundle": "^6.4|^7.0|^8.0",
+ "symfony/type-info": "^7.1.8|^8.0",
+ "symfony/uid": "^6.4|^7.0|^8.0",
+ "symfony/validator": "^7.4|^8.0",
+ "symfony/web-link": "^6.4|^7.0|^8.0",
+ "symfony/webhook": "^7.2|^8.0",
+ "symfony/workflow": "^7.4|^8.0",
+ "symfony/yaml": "^7.3|^8.0",
+ "twig/twig": "^3.12"
+ },
+ "type": "symfony-bundle",
"autoload": {
"psr-4": {
- "Symfony\\Component\\Dotenv\\": ""
+ "Symfony\\Bundle\\FrameworkBundle\\": ""
},
"exclude-from-classmap": [
"/Tests/"
@@ -5235,15 +6437,10 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Registers environment variables from a .env file",
+ "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework",
"homepage": "https://symfony.com",
- "keywords": [
- "dotenv",
- "env",
- "environment"
- ],
"support": {
- "source": "https://github.com/symfony/dotenv/tree/v7.4.0"
+ "source": "https://github.com/symfony/framework-bundle/tree/v7.4.5"
},
"funding": [
{
@@ -5263,32 +6460,58 @@
"type": "tidelift"
}
],
- "time": "2025-11-16T10:14:42+00:00"
+ "time": "2026-01-27T08:59:58+00:00"
},
{
- "name": "symfony/finder",
- "version": "v7.4.5",
+ "name": "symfony/messenger",
+ "version": "v7.4.4",
"source": {
"type": "git",
- "url": "https://github.com/symfony/finder.git",
- "reference": "ad4daa7c38668dcb031e63bc99ea9bd42196a2cb"
+ "url": "https://github.com/symfony/messenger.git",
+ "reference": "0a39e1b256f280762293f2f441e430c8baf74f9c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/ad4daa7c38668dcb031e63bc99ea9bd42196a2cb",
- "reference": "ad4daa7c38668dcb031e63bc99ea9bd42196a2cb",
+ "url": "https://api.github.com/repos/symfony/messenger/zipball/0a39e1b256f280762293f2f441e430c8baf74f9c",
+ "reference": "0a39e1b256f280762293f2f441e430c8baf74f9c",
"shasum": ""
},
"require": {
- "php": ">=8.2"
+ "php": ">=8.2",
+ "psr/log": "^1|^2|^3",
+ "symfony/clock": "^6.4|^7.0|^8.0",
+ "symfony/deprecation-contracts": "^2.5|^3"
+ },
+ "conflict": {
+ "symfony/console": "<7.2",
+ "symfony/event-dispatcher": "<6.4",
+ "symfony/event-dispatcher-contracts": "<2.5",
+ "symfony/framework-bundle": "<6.4",
+ "symfony/http-kernel": "<7.3",
+ "symfony/lock": "<7.4",
+ "symfony/serializer": "<6.4.32|>=7.3,<7.3.10|>=7.4,<7.4.4|>=8.0,<8.0.4"
},
"require-dev": {
- "symfony/filesystem": "^6.4|^7.0|^8.0"
+ "psr/cache": "^1.0|^2.0|^3.0",
+ "symfony/console": "^7.2|^8.0",
+ "symfony/dependency-injection": "^6.4|^7.0|^8.0",
+ "symfony/event-dispatcher": "^6.4|^7.0|^8.0",
+ "symfony/http-kernel": "^7.3|^8.0",
+ "symfony/lock": "^7.4|^8.0",
+ "symfony/process": "^6.4|^7.0|^8.0",
+ "symfony/property-access": "^6.4|^7.0|^8.0",
+ "symfony/rate-limiter": "^6.4|^7.0|^8.0",
+ "symfony/routing": "^6.4|^7.0|^8.0",
+ "symfony/serializer": "^6.4.32|~7.3.10|^7.4.4|^8.0.4",
+ "symfony/service-contracts": "^2.5|^3",
+ "symfony/stopwatch": "^6.4|^7.0|^8.0",
+ "symfony/validator": "^6.4|^7.0|^8.0",
+ "symfony/var-dumper": "^6.4|^7.0|^8.0"
},
"type": "library",
"autoload": {
"psr-4": {
- "Symfony\\Component\\Finder\\": ""
+ "Symfony\\Component\\Messenger\\": ""
},
"exclude-from-classmap": [
"/Tests/"
@@ -5300,18 +6523,18 @@
],
"authors": [
{
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
+ "name": "Samuel Roze",
+ "email": "samuel.roze@gmail.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Finds files and directories via an intuitive fluent interface",
+ "description": "Helps applications send and receive messages to/from other applications or via message queues",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/finder/tree/v7.4.5"
+ "source": "https://github.com/symfony/messenger/tree/v7.4.4"
},
"funding": [
{
@@ -5331,7 +6554,7 @@
"type": "tidelift"
}
],
- "time": "2026-01-26T15:07:59+00:00"
+ "time": "2026-01-08T14:50:10+00:00"
},
{
"name": "symfony/options-resolver",
@@ -5554,32 +6777,40 @@
"time": "2026-01-26T15:07:59+00:00"
},
{
- "name": "symfony/var-exporter",
- "version": "v7.4.0",
+ "name": "symfony/routing",
+ "version": "v7.4.4",
"source": {
"type": "git",
- "url": "https://github.com/symfony/var-exporter.git",
- "reference": "03a60f169c79a28513a78c967316fbc8bf17816f"
+ "url": "https://github.com/symfony/routing.git",
+ "reference": "0798827fe2c79caeed41d70b680c2c3507d10147"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-exporter/zipball/03a60f169c79a28513a78c967316fbc8bf17816f",
- "reference": "03a60f169c79a28513a78c967316fbc8bf17816f",
+ "url": "https://api.github.com/repos/symfony/routing/zipball/0798827fe2c79caeed41d70b680c2c3507d10147",
+ "reference": "0798827fe2c79caeed41d70b680c2c3507d10147",
"shasum": ""
},
"require": {
"php": ">=8.2",
"symfony/deprecation-contracts": "^2.5|^3"
},
+ "conflict": {
+ "symfony/config": "<6.4",
+ "symfony/dependency-injection": "<6.4",
+ "symfony/yaml": "<6.4"
+ },
"require-dev": {
- "symfony/property-access": "^6.4|^7.0|^8.0",
- "symfony/serializer": "^6.4|^7.0|^8.0",
- "symfony/var-dumper": "^6.4|^7.0|^8.0"
+ "psr/log": "^1|^2|^3",
+ "symfony/config": "^6.4|^7.0|^8.0",
+ "symfony/dependency-injection": "^6.4|^7.0|^8.0",
+ "symfony/expression-language": "^6.4|^7.0|^8.0",
+ "symfony/http-foundation": "^6.4|^7.0|^8.0",
+ "symfony/yaml": "^6.4|^7.0|^8.0"
},
"type": "library",
"autoload": {
"psr-4": {
- "Symfony\\Component\\VarExporter\\": ""
+ "Symfony\\Component\\Routing\\": ""
},
"exclude-from-classmap": [
"/Tests/"
@@ -5591,28 +6822,24 @@
],
"authors": [
{
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Allows exporting any serializable PHP data structure to plain PHP code",
+ "description": "Maps an HTTP request to a set of configuration variables",
"homepage": "https://symfony.com",
"keywords": [
- "clone",
- "construct",
- "export",
- "hydrate",
- "instantiate",
- "lazy-loading",
- "proxy",
- "serialize"
+ "router",
+ "routing",
+ "uri",
+ "url"
],
"support": {
- "source": "https://github.com/symfony/var-exporter/tree/v7.4.0"
+ "source": "https://github.com/symfony/routing/tree/v7.4.4"
},
"funding": [
{
@@ -5632,7 +6859,86 @@
"type": "tidelift"
}
],
- "time": "2025-09-11T10:15:23+00:00"
+ "time": "2026-01-12T12:19:02+00:00"
+ },
+ {
+ "name": "twig/twig",
+ "version": "v3.23.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/twigphp/Twig.git",
+ "reference": "a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/twigphp/Twig/zipball/a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9",
+ "reference": "a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1.0",
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/polyfill-ctype": "^1.8",
+ "symfony/polyfill-mbstring": "^1.3"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^2.0",
+ "psr/container": "^1.0|^2.0",
+ "symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/Resources/core.php",
+ "src/Resources/debug.php",
+ "src/Resources/escaper.php",
+ "src/Resources/string_loader.php"
+ ],
+ "psr-4": {
+ "Twig\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com",
+ "homepage": "http://fabien.potencier.org",
+ "role": "Lead Developer"
+ },
+ {
+ "name": "Twig Team",
+ "role": "Contributors"
+ },
+ {
+ "name": "Armin Ronacher",
+ "email": "armin.ronacher@active-4.com",
+ "role": "Project Founder"
+ }
+ ],
+ "description": "Twig, the flexible, fast, and secure template language for PHP",
+ "homepage": "https://twig.symfony.com",
+ "keywords": [
+ "templating"
+ ],
+ "support": {
+ "issues": "https://github.com/twigphp/Twig/issues",
+ "source": "https://github.com/twigphp/Twig/tree/v3.23.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/twig/twig",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2026-01-23T21:00:41+00:00"
}
],
"aliases": [],
@@ -5651,7 +6957,7 @@
"ext-xmlreader": "*",
"ext-xmlwriter": "*",
"ext-zlib": "*",
- "composer-runtime-api": "^2.1"
+ "composer-runtime-api": "^2.0"
},
"platform-dev": {},
"plugin-api-version": "2.6.0"
diff --git a/documentation/components/bridges/psr18-telemetry-bridge.md b/documentation/components/bridges/psr18-telemetry-bridge.md
new file mode 100644
index 0000000000..09dcc326f3
--- /dev/null
+++ b/documentation/components/bridges/psr18-telemetry-bridge.md
@@ -0,0 +1,106 @@
+# PSR-18 Telemetry Bridge
+
+Flow PSR-18 Telemetry Bridge provides a traceable HTTP client wrapper for PSR-18 compliant HTTP clients, enabling automatic span creation and telemetry context propagation for outgoing HTTP requests.
+
+- [⬅️️ Back](/documentation/introduction.md)
+- [📦Packagist](https://packagist.org/packages/flow-php/psr18-telemetry-bridge)
+- [🐙GitHub](https://github.com/flow-php/psr18-telemetry-bridge)
+
+[TOC]
+
+## Installation
+
+```
+composer require flow-php/psr18-telemetry-bridge:~--FLOW_PHP_VERSION--
+```
+
+## Overview
+
+This bridge connects Flow PHP's Telemetry library with PSR-18 compliant HTTP clients, providing automatic tracing for outgoing HTTP requests. It wraps any PSR-18 `ClientInterface` implementation to create spans with HTTP request/response metadata.
+
+This is particularly useful for:
+
+- Automatic tracing of outgoing HTTP requests
+- Recording HTTP method, URL, status code, and other attributes
+- Error tracking for failed requests (4xx/5xx responses)
+- Exception recording when HTTP clients throw errors
+- Integration with OpenTelemetry-based observability stacks
+- Framework-agnostic HTTP client instrumentation
+
+> **Note:** This bridge works with any PSR-18 compliant HTTP client implementation (Guzzle, Symfony HttpClient with PSR-18 adapter, Buzz, etc.).
+
+## Requirements
+
+- PHP 8.3+
+- flow-php/telemetry
+- psr/http-client ^1.0
+- psr/http-message ^1.0 || ^2.0
+
+## Usage
+
+### Wrapping a PSR-18 HTTP Client
+
+```php
+use Flow\Bridge\Psr18\Telemetry\PSR18TraceableClient;
+use Flow\Telemetry\Telemetry;
+use Symfony\Component\HttpClient\Psr18Client;
+
+// Create your telemetry instance
+$telemetry = /* ... your Telemetry setup ... */;
+
+// Wrap any PSR-18 client
+$httpClient = new Psr18Client();
+$traceableClient = new PSR18TraceableClient($httpClient, $telemetry);
+
+// Use it like any other PSR-18 client
+$request = new Request('GET', 'https://api.example.com/users');
+$response = $traceableClient->sendRequest($request);
+
+// A span is automatically created with:
+// - Name: "GET api.example.com"
+// - Kind: CLIENT
+// - Attributes: http.method, http.url, http.scheme, http.host, http.status_code
+// - Status: OK for 2xx/3xx, ERROR for 4xx/5xx
+```
+
+### Span Attributes
+
+The traceable client automatically records the following span attributes:
+
+| Attribute | Description | Example |
+|-----------|-------------|---------|
+| `http.method` | HTTP method | `GET`, `POST` |
+| `http.url` | Full request URL | `https://api.example.com/users` |
+| `http.scheme` | URL scheme | `https` |
+| `http.host` | Target host | `api.example.com` |
+| `http.status_code` | Response status code | `200`, `404`, `500` |
+
+### Error Handling
+
+The client handles errors in two ways:
+
+1. **HTTP Error Responses (4xx/5xx)**: The span status is set to ERROR with the message "HTTP {status_code}"
+2. **Exceptions**: If the underlying client throws an exception, it is recorded on the span and re-thrown
+
+```php
+try {
+ $response = $traceableClient->sendRequest($request);
+} catch (\Throwable $e) {
+ // Exception is recorded on the span with:
+ // - exception.type
+ // - exception.message
+ // - exception.stacktrace
+ // The span status is set to ERROR
+ throw $e;
+}
+```
+
+### DSL Functions
+
+The bridge provides a convenient DSL function:
+
+```php
+use function Flow\Bridge\Psr18\Telemetry\DSL\psr18_traceable_client;
+
+$traceableClient = psr18_traceable_client($httpClient, $telemetry);
+```
diff --git a/documentation/components/bridges/symfony-telemetry-bundle.md b/documentation/components/bridges/symfony-telemetry-bundle.md
new file mode 100644
index 0000000000..63b31df497
--- /dev/null
+++ b/documentation/components/bridges/symfony-telemetry-bundle.md
@@ -0,0 +1,869 @@
+# Symfony Telemetry Bundle
+
+Flow Symfony Telemetry Bundle provides automatic telemetry integration for Symfony applications, including HTTP
+request/response tracing, console command instrumentation, and configurable exporters through OpenTelemetry-compatible
+backends.
+
+- [Back](/documentation/introduction.md)
+- [Packagist](https://packagist.org/packages/flow-php/symfony-telemetry-bundle)
+- [GitHub](https://github.com/flow-php/symfony-telemetry-bundle)
+
+[TOC]
+
+## Installation
+
+```
+composer require flow-php/symfony-telemetry-bundle:~--FLOW_PHP_VERSION--
+```
+
+## Overview
+
+This bundle integrates Flow PHP's Telemetry library with Symfony applications. It provides:
+
+- **Automatic resource detection** - Detects service name, version, environment, OS, host, and process information
+- **8 auto-instrumentation options** - HTTP kernel, console, messenger, Twig, HTTP client, PSR-18 client, Doctrine DBAL,
+ and cache
+- **Context propagation** - W3C TraceContext and Baggage support for distributed tracing
+- **Configurable exporters** - Console, memory, void, or OTLP with multiple transport options
+- **Full Symfony configuration** - Configure everything through Symfony's config system
+
+## Configuration Reference
+
+### Resource Configuration
+
+The `resource` node configures OpenTelemetry Resource attributes that identify your service.
+
+```yaml
+flow_telemetry:
+ resource:
+ detectors:
+ enabled: true # Enable resource detectors (default: true)
+ static:
+ cache:
+ enabled: true # Cache static attributes (default: true)
+ path: null # Cache path (default: kernel cache dir)
+ os:
+ enabled: true # Detect os.type, os.name, os.version, os.description
+ host:
+ enabled: true # Detect host.name, host.arch, host.id
+ service:
+ enabled: true # Detect service.name, service.version from composer.json
+ deployment:
+ enabled: true # Detect deployment.environment.name from kernel environment
+ environment:
+ enabled: true # Read OTEL_SERVICE_NAME and OTEL_RESOURCE_ATTRIBUTES
+ dynamic:
+ process:
+ enabled: true # Detect process.pid, process.runtime.*, process.executable.*
+ custom:
+ service.name: 'my-app'
+ service.version: '1.0.0'
+ deployment.environment.name: 'production'
+```
+
+**Detector types:**
+
+| Type | Class | Category | Attributes Detected |
+|---------------|-----------------------------|----------|-------------------------------------------------------------------|
+| `os` | `OsDetector` | static | `os.type`, `os.name`, `os.version`, `os.description` |
+| `host` | `HostDetector` | static | `host.name`, `host.arch`, `host.id` |
+| `service` | `ComposerDetector` | static | `service.name`, `service.version` (from composer.json) |
+| `deployment` | `SymfonyDeploymentDetector` | static | `deployment.environment.name` (from kernel environment) |
+| `environment` | `EnvironmentDetector` | static | Reads `OTEL_SERVICE_NAME` and `OTEL_RESOURCE_ATTRIBUTES` env vars |
+| `process` | `ProcessDetector` | dynamic | `process.pid`, `process.runtime.*`, `process.executable.*` |
+
+Static detectors are cached by default. Dynamic detectors run on every request/command.
+
+Custom attributes override auto-detected values.
+
+### Clock Configuration
+
+- **type**: `string|null`
+- **default**: `null`
+
+Custom PSR-20 clock service ID. If not provided, uses the built-in SystemClock.
+
+```yaml
+flow_telemetry:
+ clock_service_id: 'app.clock'
+```
+
+### Context Storage
+
+- **type**: `enum`
+- **default**: `memory`
+
+Context storage for maintaining trace context across async operations.
+
+```yaml
+flow_telemetry:
+ context_storage:
+ type: memory # memory|service
+ service_id: null # Custom service ID (only for type: service)
+```
+
+### Propagator
+
+- **type**: `enum`
+- **default**: `w3c`
+
+Context propagator for distributed tracing. Determines how trace context is injected/extracted from HTTP headers.
+
+```yaml
+flow_telemetry:
+ propagator:
+ type: w3c # w3c|tracecontext|baggage|service
+ service_id: null # Custom service ID (only for type: service)
+```
+
+| Type | Description |
+|----------------|------------------------------------------|
+| `w3c` | W3C TraceContext + Baggage (recommended) |
+| `tracecontext` | W3C TraceContext only |
+| `baggage` | W3C Baggage only |
+| `service` | Custom propagator service |
+
+### TracerProvider
+
+Configures the tracer provider for distributed tracing.
+
+```yaml
+flow_telemetry:
+ tracer_provider:
+ sampler:
+ type: always_on # always_on|always_off|trace_id_ratio|parent_based|service
+ ratio: 1.0 # Sampling ratio (0.0-1.0, only for trace_id_ratio)
+ service_id: null # Custom sampler service (only for type: service)
+ processor:
+ type: void # composite|memory|batching|passthrough|void|service
+ batch_size: 512
+ service_id: null
+ exporter:
+ type: void # memory|console|void|otlp|service
+```
+
+**Sampler types:**
+
+| Type | Description |
+|------------------|-----------------------------------------|
+| `always_on` | Sample all traces (default) |
+| `always_off` | Sample no traces |
+| `trace_id_ratio` | Sample based on trace ID ratio |
+| `parent_based` | Respect parent span's sampling decision |
+| `service` | Custom sampler service |
+
+### MeterProvider
+
+Configures the meter provider for metrics collection.
+
+```yaml
+flow_telemetry:
+ meter_provider:
+ temporality: cumulative # cumulative|delta
+ processor:
+ type: void # composite|memory|batching|passthrough|void|service
+ batch_size: 512
+ exporter:
+ type: void
+```
+
+### LoggerProvider
+
+Configures the logger provider for log export.
+
+```yaml
+flow_telemetry:
+ logger_provider:
+ processor:
+ type: void # composite|memory|batching|passthrough|void|severity_filtering|service
+ batch_size: 512
+ exporter:
+ type: void
+```
+
+**Severity filtering** (logs only):
+
+```yaml
+flow_telemetry:
+ logger_provider:
+ processor:
+ type: severity_filtering
+ minimum_severity: info # trace|debug|info|warn|error|fatal
+ inner_processor:
+ type: batching
+ exporter:
+ type: otlp
+ otlp:
+ transport:
+ endpoint: 'http://otel-collector:4318/v1/logs'
+```
+
+### Processor Configuration
+
+Processor types available for tracer_provider, meter_provider, and logger_provider.
+
+#### void (default)
+
+Discards all data. No additional options.
+
+```yaml
+processor:
+ type: void
+```
+
+#### passthrough
+
+Immediately exports each item.
+
+```yaml
+processor:
+ type: passthrough
+ exporter:
+ type: console
+```
+
+#### memory
+
+Stores in memory (for testing). No additional options.
+
+```yaml
+processor:
+ type: memory
+```
+
+#### batching
+
+Batches items before export.
+
+| Option | Type | Default | Description |
+|--------------|---------|---------|---------------------------|
+| `batch_size` | integer | `512` | Number of items per batch |
+
+```yaml
+processor:
+ type: batching
+ batch_size: 512
+ exporter:
+ type: otlp
+ otlp:
+ transport:
+ endpoint: 'http://otel-collector:4318/v1/traces'
+```
+
+#### composite
+
+Combines multiple processors.
+
+| Option | Type | Description |
+|--------------|-------|---------------------------|
+| `processors` | array | List of processor configs |
+
+```yaml
+processor:
+ type: composite
+ processors:
+ - type: batching
+ exporter:
+ type: otlp
+ otlp:
+ transport:
+ endpoint: 'http://otel-collector:4318/v1/traces'
+ - type: memory
+```
+
+#### service
+
+Custom processor service.
+
+| Option | Type | Description |
+|--------------|--------|-------------------------------|
+| `service_id` | string | Symfony service ID (required) |
+
+```yaml
+processor:
+ type: service
+ service_id: 'app.custom_processor'
+```
+
+#### severity_filtering (logger_provider only)
+
+Filters logs by minimum severity level.
+
+| Option | Type | Default | Description |
+|-------------------|--------|---------|----------------------------------------|
+| `minimum_severity`| string | `info` | trace\|debug\|info\|warn\|error\|fatal |
+| `inner_processor` | object | - | Nested processor configuration |
+
+```yaml
+processor:
+ type: severity_filtering
+ minimum_severity: info
+ inner_processor:
+ type: batching
+ exporter:
+ type: otlp
+ otlp:
+ transport:
+ endpoint: 'http://otel-collector:4318/v1/logs'
+```
+
+### Exporter Configuration
+
+Exporter types available for processor configurations.
+
+#### void (default)
+
+Discards all data. No additional options.
+
+```yaml
+exporter:
+ type: void
+```
+
+#### memory
+
+Stores in memory (for testing). No additional options.
+
+```yaml
+exporter:
+ type: memory
+```
+
+#### console
+
+Outputs to console. No additional options.
+
+```yaml
+exporter:
+ type: console
+```
+
+#### otlp
+
+Exports to OTLP-compatible backends (Jaeger, Tempo, etc.).
+
+| Option | Type | Description |
+|--------------|--------|------------------------------------|
+| `transport` | object | Transport configuration (required) |
+| `serializer` | object | Serializer configuration |
+
+```yaml
+exporter:
+ type: otlp
+ otlp:
+ transport:
+ type: curl
+ endpoint: 'http://otel-collector:4318/v1/traces'
+ serializer:
+ type: json
+```
+
+#### service
+
+Custom exporter service.
+
+| Option | Type | Description |
+|--------------|--------|-------------------------------|
+| `service_id` | string | Symfony service ID (required) |
+
+```yaml
+exporter:
+ type: service
+ service_id: 'app.custom_exporter'
+```
+
+### OTLP Transport Configuration
+
+Transport types for OTLP exporters.
+
+#### curl (default, recommended)
+
+| Option | Type | Default | Description |
+|--------------------|---------|---------|-----------------------------|
+| `endpoint` | string | - | OTLP endpoint URL (required)|
+| `timeout` | integer | `30` | Request timeout in seconds |
+| `connect_timeout` | integer | `10` | Connection timeout |
+| `compression` | boolean | `false` | Enable compression |
+| `follow_redirects` | boolean | `true` | Follow HTTP redirects |
+| `max_redirects` | integer | `3` | Maximum redirects to follow |
+| `proxy` | string | `null` | Proxy URL |
+| `ssl_verify_peer` | boolean | `true` | Verify SSL peer |
+| `ssl_verify_host` | boolean | `true` | Verify SSL host |
+| `ssl_cert_path` | string | `null` | SSL certificate path |
+| `ssl_key_path` | string | `null` | SSL key path |
+| `ca_info_path` | string | `null` | CA info path |
+| `headers` | object | `{}` | Additional HTTP headers |
+
+```yaml
+otlp:
+ transport:
+ type: curl
+ endpoint: 'http://otel-collector:4318/v1/traces'
+ timeout: 30
+ connect_timeout: 10
+ compression: false
+ follow_redirects: true
+ max_redirects: 3
+ proxy: null
+ ssl_verify_peer: true
+ ssl_verify_host: true
+ ssl_cert_path: null
+ ssl_key_path: null
+ ca_info_path: null
+ headers:
+ Authorization: 'Bearer token'
+```
+
+#### http
+
+PSR-18 HTTP transport.
+
+| Option | Type | Default | Description |
+|------------------------------|---------|---------|------------------------------|
+| `endpoint` | string | - | OTLP endpoint URL (required) |
+| `timeout` | integer | `30` | Request timeout in seconds |
+| `http_client_service_id` | string | `null` | PSR-18 client service |
+| `request_factory_service_id` | string | `null` | PSR-17 request factory |
+| `stream_factory_service_id` | string | `null` | PSR-17 stream factory |
+
+```yaml
+otlp:
+ transport:
+ type: http
+ endpoint: 'http://otel-collector:4318/v1/traces'
+ timeout: 30
+ http_client_service_id: null
+ request_factory_service_id: null
+ stream_factory_service_id: null
+```
+
+#### grpc
+
+gRPC transport.
+
+| Option | Type | Default | Description |
+|------------|---------|---------|------------------------------|
+| `endpoint` | string | - | OTLP endpoint URL (required) |
+| `timeout` | integer | `30` | Request timeout in seconds |
+| `insecure` | boolean | `false` | Allow insecure connections |
+
+```yaml
+otlp:
+ transport:
+ type: grpc
+ endpoint: 'http://otel-collector:4317'
+ timeout: 30
+ insecure: true
+```
+
+#### service
+
+Custom transport service.
+
+| Option | Type | Description |
+|--------------|--------|-------------------------------|
+| `service_id` | string | Symfony service ID (required) |
+
+```yaml
+otlp:
+ transport:
+ type: service
+ service_id: 'app.custom_transport'
+```
+
+### OTLP Serializer Configuration
+
+Serializer types for OTLP exporters.
+
+#### json (default)
+
+```yaml
+serializer:
+ type: json
+```
+
+#### protobuf
+
+```yaml
+serializer:
+ type: protobuf
+```
+
+#### service
+
+Custom serializer service.
+
+| Option | Type | Description |
+|--------------|--------|-------------------------------|
+| `service_id` | string | Symfony service ID (required) |
+
+```yaml
+serializer:
+ type: service
+ service_id: 'app.custom_serializer'
+```
+
+### Instrumentation
+
+Configure automatic instrumentation for various Symfony components.
+
+**All instrumentation is disabled by default.** You must explicitly set `enabled: true` for each component you want to
+instrument.
+
+#### HTTP Kernel
+
+Traces HTTP requests and responses.
+
+```yaml
+flow_telemetry:
+ instrumentation:
+ http_kernel:
+ enabled: true
+ context_propagation: true # Extract context from incoming headers
+ exclude_paths:
+ - path: '/_profiler'
+ - path: '/_wdt'
+ - path: '/health'
+ method: GET
+ - path: '/^\/api\/internal\/.*/' # Regex pattern
+```
+
+#### Console
+
+Traces console commands.
+
+```yaml
+flow_telemetry:
+ instrumentation:
+ console:
+ enabled: true
+ exclude_commands:
+ - 'cache:clear'
+ - 'assets:install'
+ - '/^debug:.*/' # Regex: exclude all debug commands
+```
+
+#### Messenger
+
+Traces Symfony Messenger messages with context propagation across message boundaries.
+
+```yaml
+flow_telemetry:
+ instrumentation:
+ messenger:
+ enabled: true
+ context_propagation: true # Propagate context across message boundaries
+```
+
+#### Twig
+
+Traces Twig template rendering.
+
+```yaml
+flow_telemetry:
+ instrumentation:
+ twig:
+ enabled: true
+ trace_templates: true # Trace template rendering
+ trace_blocks: false # Trace block rendering
+ trace_macros: false # Trace macro execution
+ exclude_templates:
+ - '@WebProfiler'
+ - '/^@Debug\/.*/'
+```
+
+#### HTTP Client
+
+Traces Symfony HTTP Client requests.
+
+```yaml
+flow_telemetry:
+ instrumentation:
+ http_client:
+ enabled: true
+ exclude_clients:
+ - 'internal.client'
+ - '/^debug\..*/'
+```
+
+#### PSR-18 Client
+
+Traces PSR-18 HTTP client requests.
+
+```yaml
+flow_telemetry:
+ instrumentation:
+ psr18_client:
+ enabled: true
+ exclude_clients:
+ - 'app.internal_client'
+```
+
+#### Doctrine DBAL
+
+Traces database queries.
+
+```yaml
+flow_telemetry:
+ instrumentation:
+ dbal:
+ enabled: true
+ log_sql: true # Include SQL in span attributes
+ max_sql_length: 1000 # Max SQL length (0 = no limit)
+ exclude_connections:
+ - 'legacy'
+ - '/^test_.*/'
+```
+
+#### Cache
+
+Traces Symfony Cache operations.
+
+```yaml
+flow_telemetry:
+ instrumentation:
+ cache:
+ enabled: true
+ exclude_pools:
+ - 'cache.system'
+ - '/^cache\.validator.*/'
+```
+
+### Named Instruments
+
+Configure named tracers, meters, and loggers with custom instrumentation scope attributes.
+
+**Options:**
+
+| Option | Type | Default | Description |
+|--------------|--------|-------------|-------------------------------------|
+| `version` | string | `'unknown'` | Instrumentation scope version |
+| `schema_url` | string | `null` | Schema URL for semantic conventions |
+| `attributes` | object | `{}` | Additional scope attributes |
+
+```yaml
+flow_telemetry:
+ tracers:
+ my_tracer:
+ version: '1.0.0' # default: 'unknown'
+ schema_url: 'https://opentelemetry.io/schemas/1.21.0'
+ attributes:
+ custom.attribute: 'value'
+
+ meters:
+ my_meter:
+ version: '1.0.0' # default: 'unknown'
+ schema_url: null
+ attributes: { }
+
+ loggers:
+ my_logger:
+ version: '1.0.0' # default: 'unknown'
+```
+
+## Pattern Matching
+
+Several configuration options support pattern matching for exclusion lists (paths, commands, templates, etc.).
+
+### Exact String Matching
+
+Patterns without regex delimiters match exactly:
+
+```yaml
+exclude_paths:
+ - path: '/_profiler' # Matches exactly /_profiler
+ - path: '/health' # Matches exactly /health
+```
+
+### Regex Matching
+
+Patterns enclosed in `/` delimiters are treated as regular expressions:
+
+```yaml
+exclude_paths:
+ - path: '/^\/api\/internal\/.*/' # Regex: matches /api/internal/*
+exclude_commands:
+ - '/^debug:.*/' # Regex: matches debug:* commands
+exclude_templates:
+ - '/^@Debug\/.*/' # Regex: matches @Debug/* templates
+```
+
+## Usage
+
+### Accessing Telemetry in Services
+
+Inject the `Telemetry` service to create custom spans, metrics, and logs:
+
+```php
+telemetry->tracer('order-service');
+
+ $tracer->trace('process_order', function () use ($orderId) {
+ // Your order processing logic
+ }, [
+ 'order.id' => $orderId,
+ ]);
+ }
+}
+```
+
+### Creating Custom Spans in Controllers
+
+```php
+telemetry->tracer('checkout');
+
+ return $tracer->trace('checkout_page', function () {
+ // Nested span for cart validation
+ return $this->telemetry->tracer('checkout')->trace(
+ 'validate_cart',
+ fn () => $this->render('checkout/index.html.twig')
+ );
+ });
+ }
+}
+```
+
+### Recording Metrics
+
+```php
+telemetry->meter('business-metrics');
+
+// Counter
+$meter->counter('orders_processed')
+ ->add(1, ['status' => 'completed']);
+
+// Histogram
+$meter->histogram('order_value')
+ ->record(99.99, ['currency' => 'USD']);
+
+// Gauge
+$meter->gauge('active_users')
+ ->record(42);
+```
+
+### Logging with Telemetry
+
+```php
+telemetry->logger('app');
+
+$logger->info('Order processed', [
+ 'order_id' => 12345,
+ 'amount' => 99.99,
+]);
+```
+
+## Complete Production Example
+
+```yaml
+# config/packages/flow_telemetry.yaml
+flow_telemetry:
+ resource:
+ custom:
+ service.name: 'my-app'
+ service.version: '%env(APP_VERSION)%'
+
+ propagator:
+ type: w3c
+
+ tracer_provider:
+ sampler:
+ type: trace_id_ratio
+ ratio: 0.1 # Sample 10% of traces in production
+ processor:
+ type: batching
+ batch_size: 512
+ exporter:
+ type: otlp
+ otlp:
+ transport:
+ type: curl
+ endpoint: '%env(OTEL_EXPORTER_OTLP_TRACES_ENDPOINT)%'
+ timeout: 30
+ headers:
+ Authorization: 'Bearer %env(OTEL_AUTH_TOKEN)%'
+
+ meter_provider:
+ temporality: cumulative
+ processor:
+ type: batching
+ exporter:
+ type: otlp
+ otlp:
+ transport:
+ endpoint: '%env(OTEL_EXPORTER_OTLP_METRICS_ENDPOINT)%'
+
+ logger_provider:
+ processor:
+ type: severity_filtering
+ minimum_severity: info
+ inner_processor:
+ type: batching
+ exporter:
+ type: otlp
+ otlp:
+ transport:
+ endpoint: '%env(OTEL_EXPORTER_OTLP_LOGS_ENDPOINT)%'
+
+ instrumentation:
+ http_kernel:
+ enabled: true
+ exclude_paths:
+ - path: '/_profiler'
+ - path: '/_wdt'
+ - path: '/health'
+ method: GET
+ console:
+ enabled: true
+ exclude_commands:
+ - 'cache:clear'
+ - 'cache:warmup'
+ - '/^debug:.*/'
+ messenger:
+ enabled: true
+ context_propagation: true
+ dbal:
+ enabled: true
+ log_sql: true
+ max_sql_length: 500
+ cache:
+ enabled: true
+ exclude_pools:
+ - 'cache.system'
+```
diff --git a/documentation/components/libs/telemetry.md b/documentation/components/libs/telemetry.md
index fd3bb5a935..ffdd2299d1 100644
--- a/documentation/components/libs/telemetry.md
+++ b/documentation/components/libs/telemetry.md
@@ -23,15 +23,16 @@ The `Telemetry` class is the main entry point for all observability operations.
It manages providers for each signal type and provides access to Tracers, Meters, and Loggers.
> **Note**: The core telemetry library provides contracts and basic exporters like Console, Memory, and Void.
-> To send telemetry to external backends, you need the either use the [OTLP Bridge](/documentation/components/bridges/telemetry-otlp-bridge.md)
+> To send telemetry to external backends, you need the either use
+> the [OTLP Bridge](/documentation/components/bridges/telemetry-otlp-bridge.md)
> or implement custom exporters.
->
-> The whole point of this library is to provide a unified, consistent API for telemetry that comes with minimal dependencies,
+>
+> The whole point of this library is to provide a unified, consistent API for telemetry that comes with minimal
+> dependencies,
> clean contracts, and zero magic.
>
> You can find our contracts [here](/documentation/components/libs/telemetry/contracts.md).
-
### Basic Setup with Memory Providers (Testing)
```php
@@ -546,6 +547,104 @@ $resource = resource([
The Resource is passed to the Telemetry instance and automatically attached to all spans, metrics, and logs.
This allows APM backends to filter and group telemetry by service, environment, or any other attribute.
+### Resource Detectors
+
+Resource detectors automatically discover information about the entity producing telemetry.
+Instead of manually specifying resource attributes, detectors can inspect the environment
+to populate attributes like OS type, hostname, process ID, and service information.
+
+#### Default Detection
+
+The simplest way to detect resources is using the `resource_detector()` function, which provides
+a sensible default chain of detectors:
+
+```php
+detect();
+```
+
+This returns a `Resource` with attributes from OS, host, process, Composer, and environment variables.
+
+#### Available Detectors
+
+| Detector | DSL Function | Detected Attributes |
+|---------------------|--------------------------------------|---------------------------------------------------------------------------------------------------------------------------------|
+| OsDetector | `os_detector()` | `os.type`, `os.name`, `os.version`, `os.description` |
+| HostDetector | `host_detector()` | `host.name`, `host.arch`, `host.id` |
+| ProcessDetector | `process_detector()` | `process.pid`, `process.executable.path`, `process.runtime.name`, `process.runtime.version`, `process.command`, `process.owner` |
+| ComposerDetector | `composer_detector()` | `service.name`, `service.version` |
+| EnvironmentDetector | `environment_detector()` | Reads `OTEL_SERVICE_NAME`, `OTEL_RESOURCE_ATTRIBUTES` |
+| ManualDetector | `manual_detector($attributes)` | User-specified attributes |
+| CachingDetector | `caching_detector($detector, $path)` | Caches wrapped detector's result to file |
+| ChainDetector | `chain_detector(...$detectors)` | Combines multiple detectors |
+
+#### Custom Detection Chain
+
+Use `chain_detector()` to combine specific detectors. Later detectors take precedence
+over earlier ones when there are conflicting attribute keys:
+
+```php
+ 'my-api', 'service.version' => '2.0.0']),
+)->detect();
+```
+
+#### Manual Attributes
+
+When you need full control over resource attributes:
+
+```php
+ 'order-service',
+ 'service.version' => '1.0.0',
+ 'deployment.environment.name' => 'production',
+])->detect();
+```
+
+#### Caching Detection Results
+
+Resource detection can involve filesystem reads (e.g., `/etc/machine-id` for host ID).
+Use `caching_detector()` to cache results and avoid repeated detection:
+
+```php
+detect();
+```
+
+The cache is stored in `sys_get_temp_dir()/flow_telemetry_resource.cache` by default.
+You can specify a custom path as the second argument.
+
+#### Environment Variables
+
+The `EnvironmentDetector` reads standard OpenTelemetry environment variables:
+
+- `OTEL_SERVICE_NAME` - Sets the `service.name` attribute
+- `OTEL_RESOURCE_ATTRIBUTES` - Sets additional attributes in `key=value,key2=value2` format
+
+```bash
+export OTEL_SERVICE_NAME=my-service
+export OTEL_RESOURCE_ATTRIBUTES=service.version=1.0.0,deployment.environment.name=production
+```
+
+These environment variables take highest precedence in the default detector chain,
+allowing runtime configuration without code changes.
+
### InstrumentationScope
An **InstrumentationScope** identifies the library or component that generates telemetry.
diff --git a/infection.json b/infection.json
index b32db142f6..e456d6d046 100644
--- a/infection.json
+++ b/infection.json
@@ -9,7 +9,9 @@
"src/lib/telemetry/src",
"src/bridge/monolog/telemetry/src",
"src/bridge/psr7/telemetry/src",
+ "src/bridge/psr18/telemetry/src",
"src/bridge/symfony/http-foundation-telemetry/src",
+ "src/bridge/symfony/telemetry-bundle/src",
"src/bridge/telemetry/otlp/src"
],
"excludes": [
@@ -30,7 +32,9 @@
"Flow/Bridge/Telemetry/OTLP/Exception",
"Flow/Bridge/Monolog/Telemetry/Exception",
"Flow/Bridge/Psr7/Telemetry/Exception",
- "Flow/Bridge/Symfony/HttpFoundationTelemetry/Exception"
+ "Flow/Bridge/Psr18/Telemetry/Exception",
+ "Flow/Bridge/Symfony/HttpFoundationTelemetry/Exception",
+ "Flow/Bridge/Symfony/TelemetryBundle/Exception"
]
},
"logs": {
@@ -112,7 +116,7 @@
"CloneRemoval": {
"ignore": [
"Flow\\ETL\\DataFrame::count",
- "Flow\\ETL\\DataFrame::fetch",
+ "Flow\\ETL\\DataFrame::fetch",
"Flow\\ETL\\DataFrame::run",
"Flow\\ETL\\DataFrame::get*"
]
diff --git a/phpdoc/bridge.psr18.telemetry.xml b/phpdoc/bridge.psr18.telemetry.xml
new file mode 100644
index 0000000000..86fb328056
--- /dev/null
+++ b/phpdoc/bridge.psr18.telemetry.xml
@@ -0,0 +1,24 @@
+
+
+ Flow PHP
+
+ ./../web/landing/build/documentation/api/bridge/psr18/telemetry
+ ./../var/phpdocumentor/cache/bridge/psr18/telemetry
+
+
+
+
+ src/bridge/psr18/telemetry/src
+
+ telemetry
+ PSR-18 Telemetry
+ public
+ false
+
+
+
+
diff --git a/phpdoc/bridge.symfony.telemetry.xml b/phpdoc/bridge.symfony.telemetry.xml
new file mode 100644
index 0000000000..40b79436ff
--- /dev/null
+++ b/phpdoc/bridge.symfony.telemetry.xml
@@ -0,0 +1,24 @@
+
+
+ Flow PHP
+
+ ./../web/landing/build/documentation/api/bridge/symfony/telemetry
+ ./../var/phpdocumentor/cache/bridge/symfony/telemetry
+
+
+
+
+ src/bridge/symfony/telemetry-bundle/src
+
+ telemetry
+ Symfony Telemetry Bundle
+ public
+ false
+
+
+
+
diff --git a/phpstan.neon b/phpstan.neon
index d2500326f6..8586b7ceca 100644
--- a/phpstan.neon
+++ b/phpstan.neon
@@ -29,8 +29,10 @@ parameters:
- src/bridge/monolog/telemetry/src
- src/bridge/openapi/specification/src
- src/bridge/psr7/telemetry/src
+ - src/bridge/psr18/telemetry/src
- src/bridge/symfony/http-foundation/src
- src/bridge/symfony/http-foundation-telemetry/src
+ - src/bridge/symfony/telemetry-bundle/src
- src/bridge/telemetry/otlp/src
- src/lib/array-dot/src
- src/lib/azure-sdk/src
@@ -66,8 +68,10 @@ parameters:
- src/bridge/monolog/telemetry/tests
- src/bridge/openapi/specification/tests
- src/bridge/psr7/telemetry/tests
+ - src/bridge/psr18/telemetry/tests
- src/bridge/symfony/http-foundation/tests
- src/bridge/symfony/http-foundation-telemetry/tests
+ - src/bridge/symfony/telemetry-bundle/tests
- src/bridge/telemetry/otlp/tests
- src/lib/telemetry/tests
@@ -85,6 +89,14 @@ parameters:
- src/lib/parquet/src/Flow/Parquet/BinaryReader/*
- src/lib/parquet/src/Flow/Parquet/Dremel/ColumnData/DefinitionConverter.php
- src/lib/postgresql/src/Flow/PostgreSql/Protobuf/*
+ - src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Resources/config/instrumentation/*
+ - src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/DependencyInjection/ConfigurationTest.php
+ - src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Messenger/TracingMiddleware.php
+ - src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Twig/TracingTwigExtension.php
+ - src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/Twig/TracingTwigExtensionTest.php
+ - src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/Cache/*
+ - src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V3/*
+ - src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V4/*
tmpDir: var/phpstan/cache
@@ -104,6 +116,27 @@ parameters:
-
message: '#Dom\\(CharacterData|HTMLDocument|HTMLElement|Element)#i'
identifier: class.notFound
+ -
+ path: src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/DependencyInjection/FlowTelemetryExtension.php
+ identifier: argument.type
+ -
+ path: src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/DependencyInjection/FlowTelemetryExtension.php
+ identifier: offsetAccess.nonOffsetAccessible
+ -
+ path: src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/DependencyInjection/FlowTelemetryExtension.php
+ identifier: cast.string
+ -
+ path: src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/DependencyInjection/FlowTelemetryExtension.php
+ identifier: foreach.nonIterable
+ -
+ path: src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/DependencyInjection/FlowTelemetryExtension.php
+ identifier: binaryOp.invalid
+ -
+ path: src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/DependencyInjection/Compiler/DBALTelemetryPass.php
+ identifier: cast.int
+ -
+ path: src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/TracingMiddleware.php
+ identifier: return.type
includes:
- tools/phpstan/vendor/spaze/phpstan-disallowed-calls/extension.neon
diff --git a/phpunit.xml.dist b/phpunit.xml.dist
index c44adeaeb2..a7c7828a03 100644
--- a/phpunit.xml.dist
+++ b/phpunit.xml.dist
@@ -122,6 +122,12 @@
src/bridge/psr7/telemetry/tests/Flow/Bridge/Psr7/Telemetry/Tests/Integration
+
+ src/bridge/psr18/telemetry/tests/Flow/Bridge/Psr18/Telemetry/Tests/Unit
+
+
+ src/bridge/psr18/telemetry/tests/Flow/Bridge/Psr18/Telemetry/Tests/Integration
+
src/bridge/symfony/http-foundation/tests/Flow/Bridge/Symfony/HttpFoundation/Tests/Unit
@@ -136,6 +142,12 @@
src/bridge/symfony/http-foundation-telemetry/tests/Flow/Bridge/Symfony/HttpFoundationTelemetry/Tests/Integration
+
+ src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit
+
+
+ src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration
+
src/bridge/telemetry/otlp/tests/Flow/Bridge/Telemetry/OTLP/Tests/Unit
diff --git a/rector.src.php b/rector.src.php
index 0525ba79ab..cb26857e2a 100644
--- a/rector.src.php
+++ b/rector.src.php
@@ -1,5 +1,6 @@
[
+ __DIR__ . '/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/DependencyInjection/FlowTelemetryExtension.php',
+ ],
])
->withCache(__DIR__ . '/var/rector/src')
->withImportNames(importShortClasses: false, removeUnusedImports: true)
diff --git a/src/adapter/etl-adapter-logger/tests/Flow/ETL/Adapter/Logger/Tests/Unit/Logger/DumpLoggerTest.php b/src/adapter/etl-adapter-logger/tests/Flow/ETL/Adapter/Logger/Tests/Unit/Logger/DumpLoggerTest.php
index b41a50ac48..f75c470420 100644
--- a/src/adapter/etl-adapter-logger/tests/Flow/ETL/Adapter/Logger/Tests/Unit/Logger/DumpLoggerTest.php
+++ b/src/adapter/etl-adapter-logger/tests/Flow/ETL/Adapter/Logger/Tests/Unit/Logger/DumpLoggerTest.php
@@ -15,6 +15,10 @@ public function test_logger() : void
self::markTestSkipped('Xdebug extension is loaded and it will affect DumpLogger');
}
+ if (\class_exists('\\Symfony\\Component\\VarDumper\\VarDumper')) {
+ self::markTestSkipped('Symfony VarDumper is loaded and it will affect DumpLogger output format');
+ }
+
$logger = new DumpLogger();
\ob_start();
diff --git a/src/bridge/psr18/telemetry/.gitattributes b/src/bridge/psr18/telemetry/.gitattributes
new file mode 100644
index 0000000000..e020972059
--- /dev/null
+++ b/src/bridge/psr18/telemetry/.gitattributes
@@ -0,0 +1,9 @@
+*.php text eol=lf
+
+/.github export-ignore
+/tests export-ignore
+
+/README.md export-ignore
+
+/.gitattributes export-ignore
+/.gitignore export-ignore
diff --git a/src/bridge/psr18/telemetry/.github/workflows/readonly.yaml b/src/bridge/psr18/telemetry/.github/workflows/readonly.yaml
new file mode 100644
index 0000000000..24255888e1
--- /dev/null
+++ b/src/bridge/psr18/telemetry/.github/workflows/readonly.yaml
@@ -0,0 +1,17 @@
+name: Readonly
+
+on:
+ pull_request_target:
+ types: [opened]
+
+jobs:
+ run:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: superbrothers/close-pull-request@v3
+ with:
+ comment: |
+ Hi, thank you for your contribution.
+ Unfortunately, this repository is read-only. It's a split from our main monorepo repository.
+ In order to proceed with this PR please open it against https://github.com/flow-php/flow repository.
+ Thank you.
diff --git a/src/bridge/psr18/telemetry/CONTRIBUTING.md b/src/bridge/psr18/telemetry/CONTRIBUTING.md
new file mode 100644
index 0000000000..f035b534af
--- /dev/null
+++ b/src/bridge/psr18/telemetry/CONTRIBUTING.md
@@ -0,0 +1,6 @@
+## Contributing
+
+This repo is **READ ONLY**, in order to contribute to Flow PHP project, please
+open PR against [flow](https://github.com/flow-php/flow) monorepo.
+
+Changes merged to monorepo are automatically propagated into sub repositories.
diff --git a/src/bridge/psr18/telemetry/LICENSE b/src/bridge/psr18/telemetry/LICENSE
new file mode 100644
index 0000000000..bc3cc4d085
--- /dev/null
+++ b/src/bridge/psr18/telemetry/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2020-present Flow PHP
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/src/bridge/psr18/telemetry/README.md b/src/bridge/psr18/telemetry/README.md
new file mode 100644
index 0000000000..8878011c74
--- /dev/null
+++ b/src/bridge/psr18/telemetry/README.md
@@ -0,0 +1,20 @@
+# Flow PHP - PSR-18 Telemetry Bridge
+
+Bridge connecting Flow PHP Telemetry library with PSR-18 HTTP Client for propagating telemetry context via HTTP requests and responses.
+
+> [!IMPORTANT]
+> This repository is a subtree split from our monorepo. If you'd like to contribute,
+> please visit our main monorepo [flow-php/flow](https://github.com/flow-php/flow).
+
+## Installation
+
+```bash
+composer require flow-php/psr18-telemetry-bridge
+```
+
+## Resources
+
+- [Documentation](https://flow-php.com/documentation/components/bridges/psr18-telemetry-bridge/)
+- [Installation](https://flow-php.com/documentation/installation/)
+- [Contributing](https://flow-php.com/documentation/contributing/)
+- [Upgrading](https://flow-php.com/documentation/upgrading/)
diff --git a/src/bridge/psr18/telemetry/composer.json b/src/bridge/psr18/telemetry/composer.json
new file mode 100644
index 0000000000..5d6510ef02
--- /dev/null
+++ b/src/bridge/psr18/telemetry/composer.json
@@ -0,0 +1,40 @@
+{
+ "name": "flow-php/psr18-telemetry-bridge",
+ "type": "library",
+ "description": "Flow PHP - PSR-18 Telemetry Bridge",
+ "keywords": [
+ "flow-php",
+ "psr-18",
+ "telemetry",
+ "bridge"
+ ],
+ "homepage": "https://github.com/flow-php/flow",
+ "license": "MIT",
+ "require": {
+ "php": "~8.3.0 || ~8.4.0 || ~8.5.0",
+ "flow-php/telemetry": "self.version",
+ "psr/http-client": "^1.0",
+ "psr/http-message": "^1.0 || ^2.0"
+ },
+ "autoload": {
+ "psr-4": {
+ "Flow\\": [
+ "src/Flow"
+ ]
+ },
+ "files": [
+ "src/Flow/Bridge/Psr18/Telemetry/DSL/functions.php"
+ ]
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "Flow\\": "tests/Flow"
+ }
+ },
+ "minimum-stability": "dev",
+ "prefer-stable": true,
+ "config": {
+ "optimize-autoloader": true,
+ "sort-packages": true
+ }
+}
diff --git a/src/bridge/psr18/telemetry/src/Flow/Bridge/Psr18/Telemetry/DSL/functions.php b/src/bridge/psr18/telemetry/src/Flow/Bridge/Psr18/Telemetry/DSL/functions.php
new file mode 100644
index 0000000000..b784b4bfe0
--- /dev/null
+++ b/src/bridge/psr18/telemetry/src/Flow/Bridge/Psr18/Telemetry/DSL/functions.php
@@ -0,0 +1,16 @@
+tracer = $telemetry->tracer(
+ 'flow.psr18.http_client',
+ PackageVersion::get('flow-php/psr18-telemetry-bridge'),
+ );
+ }
+
+ public function sendRequest(RequestInterface $request) : ResponseInterface
+ {
+ $uri = $request->getUri();
+ $method = $request->getMethod();
+ $scheme = $uri->getScheme() ?: 'http';
+ $host = $uri->getHost() ?: 'unknown';
+ $url = (string) $uri;
+
+ $span = $this->tracer->span(
+ "{$method} {$host}",
+ SpanKind::CLIENT,
+ [
+ 'http.method' => $method,
+ 'http.url' => $url,
+ 'http.scheme' => $scheme,
+ 'http.host' => $host,
+ ]
+ );
+
+ try {
+ $response = $this->client->sendRequest($request);
+
+ $statusCode = $response->getStatusCode();
+ $span->setAttribute('http.status_code', $statusCode);
+
+ if ($statusCode >= 400) {
+ $span->setStatus(SpanStatus::error("HTTP {$statusCode}"));
+ } else {
+ $span->setStatus(SpanStatus::ok());
+ }
+
+ return $response;
+ } 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/bridge/psr18/telemetry/tests/Flow/Bridge/Psr18/Telemetry/Tests/Integration/.gitkeep b/src/bridge/psr18/telemetry/tests/Flow/Bridge/Psr18/Telemetry/Tests/Integration/.gitkeep
new file mode 100644
index 0000000000..e69de29bb2
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
new file mode 100644
index 0000000000..3459410b09
--- /dev/null
+++ b/src/bridge/psr18/telemetry/tests/Flow/Bridge/Psr18/Telemetry/Tests/Integration/PSR18TraceableClientIntegrationTest.php
@@ -0,0 +1,69 @@
+createTelemetry($spanProcessor);
+
+ $httpClient = new Psr18Client();
+ $traceableClient = psr18_traceable_client($httpClient, $telemetry);
+
+ $request = new Request('GET', 'http://flow-php.com');
+ $response = $traceableClient->sendRequest($request);
+
+ self::assertGreaterThanOrEqual(200, $response->getStatusCode());
+ self::assertLessThan(400, $response->getStatusCode());
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+
+ $span = $spans[0];
+ self::assertSame('GET flow-php.com', $span->name());
+ 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::assertNotNull($span->status());
+ self::assertTrue($span->status()->isOk());
+ }
+
+ private function createTelemetry(MemorySpanProcessor $spanProcessor) : Telemetry
+ {
+ $clock = new SystemClock();
+ $contextStorage = new MemoryContextStorage();
+
+ return new Telemetry(
+ Resource::create([
+ 'service.name' => 'integration-test',
+ 'service.version' => '1.0.0',
+ ]),
+ new TracerProvider($spanProcessor, $clock, $contextStorage),
+ new MeterProvider(new MemoryMetricProcessor(new VoidMetricExporter()), $clock),
+ new LoggerProvider(new MemoryLogProcessor(new VoidLogExporter()), $clock, $contextStorage),
+ );
+ }
+}
diff --git a/src/bridge/psr18/telemetry/tests/Flow/Bridge/Psr18/Telemetry/Tests/Unit/.gitkeep b/src/bridge/psr18/telemetry/tests/Flow/Bridge/Psr18/Telemetry/Tests/Unit/.gitkeep
new file mode 100644
index 0000000000..e69de29bb2
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
new file mode 100644
index 0000000000..4198aaa625
--- /dev/null
+++ b/src/bridge/psr18/telemetry/tests/Flow/Bridge/Psr18/Telemetry/Tests/Unit/PSR18TraceableClientTest.php
@@ -0,0 +1,187 @@
+createTelemetry($spanProcessor);
+
+ $exception = new \RuntimeException('Connection failed');
+ $mockClient = $this->createMock(ClientInterface::class);
+ $mockClient->method('sendRequest')->willThrowException($exception);
+
+ $traceableClient = psr18_traceable_client($mockClient, $telemetry);
+
+ $request = new Request('GET', 'https://api.example.com/users');
+
+ $this->expectException(\RuntimeException::class);
+ $this->expectExceptionMessage('Connection failed');
+
+ try {
+ $traceableClient->sendRequest($request);
+ } finally {
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ $span = $spans[0];
+
+ $events = $span->events();
+ self::assertCount(1, $events);
+ self::assertSame('exception', $events[0]->name());
+
+ $eventAttributes = $events[0]->attributes();
+ self::assertSame(\RuntimeException::class, $eventAttributes['exception.type']);
+ self::assertSame('Connection failed', $eventAttributes['exception.message']);
+
+ self::assertNotNull($span->status());
+ self::assertTrue($span->status()->isError());
+ self::assertSame('Connection failed', $span->status()->description);
+ }
+ }
+
+ public function test_request_with_4xx_status_creates_error_span() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new VoidSpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $mockClient = $this->createMock(ClientInterface::class);
+ $mockClient->method('sendRequest')->willReturn(new Response(404));
+
+ $traceableClient = psr18_traceable_client($mockClient, $telemetry);
+
+ $request = new Request('GET', 'https://api.example.com/users/123');
+ $traceableClient->sendRequest($request);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ $span = $spans[0];
+
+ self::assertNotNull($span->status());
+ self::assertTrue($span->status()->isError());
+ self::assertSame('HTTP 404', $span->status()->description);
+ self::assertSame(404, $span->attributes()['http.status_code']);
+ }
+
+ public function test_request_with_5xx_status_creates_error_span() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new VoidSpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $mockClient = $this->createMock(ClientInterface::class);
+ $mockClient->method('sendRequest')->willReturn(new Response(500));
+
+ $traceableClient = psr18_traceable_client($mockClient, $telemetry);
+
+ $request = new Request('GET', 'https://api.example.com/users');
+ $traceableClient->sendRequest($request);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ $span = $spans[0];
+
+ self::assertNotNull($span->status());
+ self::assertTrue($span->status()->isError());
+ self::assertSame('HTTP 500', $span->status()->description);
+ self::assertSame(500, $span->attributes()['http.status_code']);
+ }
+
+ public function test_span_has_correct_attributes() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new VoidSpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $mockClient = $this->createMock(ClientInterface::class);
+ $mockClient->method('sendRequest')->willReturn(new Response(200));
+
+ $traceableClient = psr18_traceable_client($mockClient, $telemetry);
+
+ $request = new Request('POST', 'https://api.example.com:8080/users?page=1');
+ $traceableClient->sendRequest($request);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ $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']);
+ }
+
+ public function test_span_kind_is_client() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new VoidSpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $mockClient = $this->createMock(ClientInterface::class);
+ $mockClient->method('sendRequest')->willReturn(new Response(200));
+
+ $traceableClient = psr18_traceable_client($mockClient, $telemetry);
+
+ $request = new Request('GET', 'https://api.example.com/users');
+ $traceableClient->sendRequest($request);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ self::assertSame(SpanKind::CLIENT, $spans[0]->kind());
+ }
+
+ public function test_successful_request_creates_span_with_ok_status() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new VoidSpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $mockClient = $this->createMock(ClientInterface::class);
+ $mockClient->method('sendRequest')->willReturn(new Response(200));
+
+ $traceableClient = psr18_traceable_client($mockClient, $telemetry);
+
+ $request = new Request('GET', 'https://api.example.com/users');
+ $response = $traceableClient->sendRequest($request);
+
+ self::assertSame(200, $response->getStatusCode());
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ $span = $spans[0];
+
+ self::assertSame('GET api.example.com', $span->name());
+ self::assertNotNull($span->status());
+ self::assertTrue($span->status()->isOk());
+ }
+
+ private function createTelemetry(MemorySpanProcessor $spanProcessor) : Telemetry
+ {
+ $clock = new SystemClock();
+ $contextStorage = new MemoryContextStorage();
+
+ return new Telemetry(
+ Resource::create([
+ 'service.name' => 'test-service',
+ 'service.version' => '1.0.0',
+ ]),
+ new TracerProvider($spanProcessor, $clock, $contextStorage),
+ new MeterProvider(new MemoryMetricProcessor(new VoidMetricExporter()), $clock),
+ new LoggerProvider(new MemoryLogProcessor(new VoidLogExporter()), $clock, $contextStorage),
+ );
+ }
+}
diff --git a/src/bridge/psr7/telemetry/README.md b/src/bridge/psr7/telemetry/README.md
index 3e4523bf75..e6095889fe 100644
--- a/src/bridge/psr7/telemetry/README.md
+++ b/src/bridge/psr7/telemetry/README.md
@@ -17,3 +17,4 @@ composer require flow-php/psr7-telemetry-bridge
- [Documentation](https://flow-php.com/documentation/components/bridges/psr7-telemetry-bridge/)
- [Installation](https://flow-php.com/documentation/installation/)
- [Contributing](https://flow-php.com/documentation/contributing/)
+- [Upgrading](https://flow-php.com/documentation/upgrading/)
diff --git a/src/bridge/symfony/telemetry-bundle/.gitattributes b/src/bridge/symfony/telemetry-bundle/.gitattributes
new file mode 100644
index 0000000000..e020972059
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/.gitattributes
@@ -0,0 +1,9 @@
+*.php text eol=lf
+
+/.github export-ignore
+/tests export-ignore
+
+/README.md export-ignore
+
+/.gitattributes export-ignore
+/.gitignore export-ignore
diff --git a/src/bridge/symfony/telemetry-bundle/.github/workflows/readonly.yaml b/src/bridge/symfony/telemetry-bundle/.github/workflows/readonly.yaml
new file mode 100644
index 0000000000..24255888e1
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/.github/workflows/readonly.yaml
@@ -0,0 +1,17 @@
+name: Readonly
+
+on:
+ pull_request_target:
+ types: [opened]
+
+jobs:
+ run:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: superbrothers/close-pull-request@v3
+ with:
+ comment: |
+ Hi, thank you for your contribution.
+ Unfortunately, this repository is read-only. It's a split from our main monorepo repository.
+ In order to proceed with this PR please open it against https://github.com/flow-php/flow repository.
+ Thank you.
diff --git a/src/bridge/symfony/telemetry-bundle/CONTRIBUTING.md b/src/bridge/symfony/telemetry-bundle/CONTRIBUTING.md
new file mode 100644
index 0000000000..f035b534af
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/CONTRIBUTING.md
@@ -0,0 +1,6 @@
+## Contributing
+
+This repo is **READ ONLY**, in order to contribute to Flow PHP project, please
+open PR against [flow](https://github.com/flow-php/flow) monorepo.
+
+Changes merged to monorepo are automatically propagated into sub repositories.
diff --git a/src/bridge/symfony/telemetry-bundle/LICENSE b/src/bridge/symfony/telemetry-bundle/LICENSE
new file mode 100644
index 0000000000..bc3cc4d085
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2020-present Flow PHP
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/src/bridge/symfony/telemetry-bundle/README.md b/src/bridge/symfony/telemetry-bundle/README.md
new file mode 100644
index 0000000000..18c6b80a65
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/README.md
@@ -0,0 +1,20 @@
+# Flow PHP - Symfony Telemetry Bundle
+
+Bridge connecting Flow PHP Telemetry library with Symfony HttpFoundation for propagating telemetry context via HTTP requests and responses.
+
+> [!IMPORTANT]
+> This repository is a subtree split from our monorepo. If you'd like to contribute,
+> please visit our main monorepo [flow-php/flow](https://github.com/flow-php/flow).
+
+## Installation
+
+```bash
+composer require flow-php/symfony-telemetry-bundle
+```
+
+## Resources
+
+- [Documentation](https://flow-php.com/documentation/components/bridges/symfony-telemetry-bundle/)
+- [Installation](https://flow-php.com/documentation/installation/)
+- [Contributing](https://flow-php.com/documentation/contributing/)
+- [Upgrading](https://flow-php.com/documentation/upgrading/)
diff --git a/src/bridge/symfony/telemetry-bundle/composer.json b/src/bridge/symfony/telemetry-bundle/composer.json
new file mode 100644
index 0000000000..e1c956a07c
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/composer.json
@@ -0,0 +1,66 @@
+{
+ "name": "flow-php/symfony-telemetry-bundle",
+ "type": "symfony-bundle",
+ "description": "Flow PHP - Symfony Telemetry Bundle",
+ "keywords": [
+ "flow-php",
+ "symfony",
+ "telemetry",
+ "opentelemetry",
+ "tracing",
+ "metrics",
+ "logging",
+ "bundle"
+ ],
+ "homepage": "https://github.com/flow-php/flow",
+ "license": "MIT",
+ "require": {
+ "php": "~8.3.0 || ~8.4.0 || ~8.5.0",
+ "flow-php/telemetry": "self.version",
+ "flow-php/symfony-http-foundation-telemetry-bridge": "self.version",
+ "psr/clock": "^1.0",
+ "symfony/config": "^6.4 || ^7.3 || ^8.0",
+ "symfony/console": "^6.4 || ^7.3 || ^8.0",
+ "symfony/dependency-injection": "^6.4 || ^7.3 || ^8.0",
+ "symfony/http-client-contracts": "^3.0",
+ "symfony/http-kernel": "^6.4 || ^7.3 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/dbal": "^3.6 || ^4.0",
+ "flow-php/psr18-telemetry-bridge": "self.version",
+ "flow-php/telemetry-otlp-bridge": "self.version",
+ "nyholm/psr7": "^1.8",
+ "symfony/framework-bundle": "^6.4 || ^7.3 || ^8.0",
+ "symfony/messenger": "^6.4 || ^7.3 || ^8.0",
+ "symfony/routing": "^6.4 || ^7.3 || ^8.0",
+ "twig/twig": "^3.0"
+ },
+ "suggest": {
+ "doctrine/dbal": "Required for Doctrine DBAL tracing (^3.6 or ^4.0)",
+ "flow-php/psr18-telemetry-bridge": "Required for PSR-18 HTTP client tracing",
+ "flow-php/telemetry-otlp-bridge": "Required for OTLP exporter support",
+ "symfony/messenger": "Required for Messenger tracing middleware",
+ "twig/twig": "Required for Twig template tracing"
+ },
+ "autoload": {
+ "psr-4": {
+ "Flow\\": [
+ "src/Flow"
+ ]
+ },
+ "files": [
+ "src/Flow/Bridge/Symfony/TelemetryBundle/DSL/functions.php"
+ ]
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "Flow\\": "tests/Flow"
+ }
+ },
+ "minimum-stability": "dev",
+ "prefer-stable": true,
+ "config": {
+ "optimize-autoloader": true,
+ "sort-packages": true
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/DSL/functions.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/DSL/functions.php
new file mode 100644
index 0000000000..f734932521
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/DSL/functions.php
@@ -0,0 +1,5 @@
+hasParameter('flow.telemetry.cache.enabled')) {
+ return;
+ }
+
+ if ($container->getParameter('flow.telemetry.cache.enabled') !== true) {
+ return;
+ }
+
+ /** @var array $excludePools */
+ $excludePools = $container->hasParameter('flow.telemetry.cache.exclude_pools')
+ ? $container->getParameter('flow.telemetry.cache.exclude_pools')
+ : [];
+
+ $taggedServices = $container->findTaggedServiceIds('cache.pool');
+
+ foreach ($taggedServices as $serviceId => $tags) {
+ if ($this->isExcluded($serviceId, $excludePools)) {
+ continue;
+ }
+
+ $serviceDefinition = $container->getDefinition($serviceId);
+
+ if ($serviceDefinition->isAbstract()) {
+ continue;
+ }
+
+ $serviceClass = $serviceDefinition->getClass();
+
+ if ($serviceClass === null) {
+ continue;
+ }
+
+ $decoratorId = $serviceId . '.flow_telemetry';
+ $decoratedId = $decoratorId . '.inner';
+
+ $isTagAware = \is_a($serviceClass, TagAwareAdapterInterface::class, true);
+
+ $adapterClass = $isTagAware
+ ? TagAwareTraceableCacheAdapter::class
+ : TraceableCacheAdapter::class;
+
+ $definition = new Definition($adapterClass);
+ $definition->setDecoratedService($serviceId);
+ $definition->setArgument(0, new Reference($decoratedId));
+ $definition->setArgument(1, new Reference(Telemetry::class));
+ $definition->setArgument(2, $serviceId);
+
+ $container->setDefinition($decoratorId, $definition);
+ }
+ }
+
+ /**
+ * @param array $patterns
+ */
+ private function isExcluded(string $serviceId, array $patterns) : bool
+ {
+ foreach ($patterns as $pattern) {
+ if ($this->matchesPattern($serviceId, $pattern)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ private function matchesPattern(string $serviceId, string $pattern) : bool
+ {
+ if (\str_starts_with($pattern, '/') && \str_ends_with($pattern, '/')) {
+ return (bool) \preg_match($pattern, $serviceId);
+ }
+
+ return $serviceId === $pattern;
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/DependencyInjection/Compiler/DBALTelemetryPass.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/DependencyInjection/Compiler/DBALTelemetryPass.php
new file mode 100644
index 0000000000..ce4c2afd2b
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/DependencyInjection/Compiler/DBALTelemetryPass.php
@@ -0,0 +1,120 @@
+hasParameter('flow.telemetry.dbal.enabled')) {
+ return;
+ }
+
+ if ($container->getParameter('flow.telemetry.dbal.enabled') !== true) {
+ return;
+ }
+
+ $logSql = $container->hasParameter('flow.telemetry.dbal.log_sql')
+ ? (bool) $container->getParameter('flow.telemetry.dbal.log_sql')
+ : true;
+
+ $maxSqlLength = $container->hasParameter('flow.telemetry.dbal.max_sql_length')
+ ? (int) $container->getParameter('flow.telemetry.dbal.max_sql_length')
+ : 1000;
+
+ /** @var array $excludeConnections */
+ $excludeConnections = $container->hasParameter('flow.telemetry.dbal.exclude_connections')
+ ? $container->getParameter('flow.telemetry.dbal.exclude_connections')
+ : [];
+
+ $driverClass = $this->resolveDriverClass();
+ $connectionNames = $this->findConnectionNames($container);
+
+ foreach ($connectionNames as $connectionName) {
+ if ($this->isExcluded($connectionName, $excludeConnections)) {
+ continue;
+ }
+
+ $middlewareId = 'flow.telemetry.dbal.middleware.' . $connectionName;
+
+ $definition = new Definition(TracingMiddleware::class);
+ $definition->setArgument(0, new Reference(Telemetry::class));
+ $definition->setArgument(1, $driverClass);
+ $definition->setArgument(2, $connectionName);
+ $definition->setArgument(3, $logSql);
+ $definition->setArgument(4, $maxSqlLength);
+ $definition->addTag('doctrine.middleware', ['connection' => $connectionName]);
+
+ $container->setDefinition($middlewareId, $definition);
+ }
+ }
+
+ /**
+ * @return array
+ */
+ private function findConnectionNames(ContainerBuilder $container) : array
+ {
+ $connectionNames = [];
+
+ if ($container->hasParameter('doctrine.connections')) {
+ /** @var array $connections */
+ $connections = $container->getParameter('doctrine.connections');
+
+ foreach (\array_keys($connections) as $name) {
+ $connectionNames[] = $name;
+ }
+ }
+
+ if (\count($connectionNames) === 0 && $container->hasDefinition('doctrine.dbal.default_connection')) {
+ $connectionNames[] = 'default';
+ }
+
+ return $connectionNames;
+ }
+
+ /**
+ * @param array $patterns
+ */
+ private function isExcluded(string $connectionName, array $patterns) : bool
+ {
+ foreach ($patterns as $pattern) {
+ if ($this->matchesPattern($connectionName, $pattern)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ private function matchesPattern(string $connectionName, string $pattern) : bool
+ {
+ if (\str_starts_with($pattern, '/') && \str_ends_with($pattern, '/')) {
+ return (bool) \preg_match($pattern, $connectionName);
+ }
+
+ return $connectionName === $pattern;
+ }
+
+ /**
+ * @return class-string
+ */
+ private function resolveDriverClass() : string
+ {
+ if (\interface_exists(self::VERSION_AWARE_PLATFORM_DRIVER)) {
+ return V3TracingDriver::class;
+ }
+
+ return V4TracingDriver::class;
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/DependencyInjection/Compiler/HttpClientTelemetryPass.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/DependencyInjection/Compiler/HttpClientTelemetryPass.php
new file mode 100644
index 0000000000..db7bcbdad3
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/DependencyInjection/Compiler/HttpClientTelemetryPass.php
@@ -0,0 +1,71 @@
+hasParameter('flow.telemetry.http_client.enabled')) {
+ return;
+ }
+
+ if ($container->getParameter('flow.telemetry.http_client.enabled') !== true) {
+ return;
+ }
+
+ /** @var array $excludeClients */
+ $excludeClients = $container->hasParameter('flow.telemetry.http_client.exclude_clients')
+ ? $container->getParameter('flow.telemetry.http_client.exclude_clients')
+ : [];
+
+ $taggedServices = $container->findTaggedServiceIds('http_client.client');
+
+ foreach ($taggedServices as $serviceId => $tags) {
+ if ($this->isExcluded($serviceId, $excludeClients)) {
+ continue;
+ }
+
+ $decoratorId = $serviceId . '.flow_telemetry';
+ $decoratedId = $decoratorId . '.inner';
+
+ $definition = new Definition(TracableHttpClient::class);
+ $definition->setDecoratedService($serviceId);
+ $definition->setArgument(0, new Reference($decoratedId));
+ $definition->setArgument(1, new Reference(Telemetry::class));
+ $definition->setArgument(2, $serviceId);
+
+ $container->setDefinition($decoratorId, $definition);
+ }
+ }
+
+ /**
+ * @param array $patterns
+ */
+ private function isExcluded(string $serviceId, array $patterns) : bool
+ {
+ foreach ($patterns as $pattern) {
+ if ($this->matchesPattern($serviceId, $pattern)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ private function matchesPattern(string $serviceId, string $pattern) : bool
+ {
+ if (\str_starts_with($pattern, '/') && \str_ends_with($pattern, '/')) {
+ return (bool) \preg_match($pattern, $serviceId);
+ }
+
+ return $serviceId === $pattern;
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/DependencyInjection/Compiler/OTLPAvailabilityPass.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/DependencyInjection/Compiler/OTLPAvailabilityPass.php
new file mode 100644
index 0000000000..b2b3fd744c
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/DependencyInjection/Compiler/OTLPAvailabilityPass.php
@@ -0,0 +1,30 @@
+setParameter('flow.telemetry.otlp_available', $otlpAvailable);
+
+ $otlpConfigured = $container->hasParameter('flow.telemetry.otlp_configured')
+ && $container->getParameter('flow.telemetry.otlp_configured') === true;
+
+ if ($otlpConfigured && !$otlpAvailable) {
+ throw new RuntimeException(
+ 'OTLP exporter is configured but the flow-php/telemetry-otlp-bridge package is not installed. '
+ . 'Please install it with: composer require flow-php/telemetry-otlp-bridge'
+ );
+ }
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/DependencyInjection/Compiler/Psr18ClientTelemetryPass.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/DependencyInjection/Compiler/Psr18ClientTelemetryPass.php
new file mode 100644
index 0000000000..4061ad24bc
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/DependencyInjection/Compiler/Psr18ClientTelemetryPass.php
@@ -0,0 +1,92 @@
+hasParameter('flow.telemetry.psr18_client.enabled')) {
+ return;
+ }
+
+ if ($container->getParameter('flow.telemetry.psr18_client.enabled') !== true) {
+ return;
+ }
+
+ /** @var array $excludeClients */
+ $excludeClients = $container->hasParameter('flow.telemetry.psr18_client.exclude_clients')
+ ? $container->getParameter('flow.telemetry.psr18_client.exclude_clients')
+ : [];
+
+ foreach ($container->getDefinitions() as $serviceId => $definition) {
+ if ($this->isExcluded($serviceId, $excludeClients)) {
+ continue;
+ }
+
+ if (!$this->implementsPsr18Interface($definition)) {
+ continue;
+ }
+
+ $decoratorId = $serviceId . '.flow_telemetry';
+ $decoratedId = $decoratorId . '.inner';
+
+ $decoratorDefinition = new Definition(PSR18TraceableClient::class);
+ $decoratorDefinition->setDecoratedService($serviceId);
+ $decoratorDefinition->setArgument(0, new Reference($decoratedId));
+ $decoratorDefinition->setArgument(1, new Reference(Telemetry::class));
+
+ $container->setDefinition($decoratorId, $decoratorDefinition);
+ }
+ }
+
+ private function implementsPsr18Interface(Definition $definition) : bool
+ {
+ $class = $definition->getClass();
+
+ if ($class === null) {
+ return false;
+ }
+
+ if ($class === PSR18TraceableClient::class) {
+ return false;
+ }
+
+ if (!\class_exists($class)) {
+ return false;
+ }
+
+ return \is_a($class, ClientInterface::class, true);
+ }
+
+ /**
+ * @param array $patterns
+ */
+ private function isExcluded(string $serviceId, array $patterns) : bool
+ {
+ foreach ($patterns as $pattern) {
+ if ($this->matchesPattern($serviceId, $pattern)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ private function matchesPattern(string $serviceId, string $pattern) : bool
+ {
+ if (\str_starts_with($pattern, '/') && \str_ends_with($pattern, '/')) {
+ return (bool) \preg_match($pattern, $serviceId);
+ }
+
+ return $serviceId === $pattern;
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/DependencyInjection/Configuration.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/DependencyInjection/Configuration.php
new file mode 100644
index 0000000000..5654e88cc7
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/DependencyInjection/Configuration.php
@@ -0,0 +1,608 @@
+getRootNode();
+
+ $rootNode
+ ->children()
+ ->arrayNode('resource')
+ ->info('OpenTelemetry Resource configuration with automatic detection (https://opentelemetry.io/docs/specs/semconv/resource/)')
+ ->addDefaultsIfNotSet()
+ ->children()
+ ->arrayNode('detectors')
+ ->info('Resource detector configuration for automatic attribute detection')
+ ->addDefaultsIfNotSet()
+ ->children()
+ ->booleanNode('enabled')
+ ->info('Enable resource detectors (default: true)')
+ ->defaultTrue()
+ ->end()
+ ->arrayNode('static')
+ ->info('Static detectors - values that do not change between requests/commands (can be cached)')
+ ->addDefaultsIfNotSet()
+ ->children()
+ ->arrayNode('cache')
+ ->info('Caching configuration for static resource attributes')
+ ->addDefaultsIfNotSet()
+ ->children()
+ ->booleanNode('enabled')
+ ->info('Enable caching of static resource attributes')
+ ->defaultTrue()
+ ->end()
+ ->scalarNode('path')
+ ->info('Cache file path (default: kernel cache dir)')
+ ->defaultNull()
+ ->end()
+ ->end()
+ ->end()
+ ->arrayNode('os')
+ ->info('OS detector - detects os.type, os.name, os.version, os.description')
+ ->addDefaultsIfNotSet()
+ ->children()
+ ->booleanNode('enabled')->defaultTrue()->end()
+ ->end()
+ ->end()
+ ->arrayNode('host')
+ ->info('Host detector - detects host.name, host.arch, host.id')
+ ->addDefaultsIfNotSet()
+ ->children()
+ ->booleanNode('enabled')->defaultTrue()->end()
+ ->end()
+ ->end()
+ ->arrayNode('service')
+ ->info('Service detector - detects service.name and service.version from composer.json')
+ ->addDefaultsIfNotSet()
+ ->children()
+ ->booleanNode('enabled')->defaultTrue()->end()
+ ->end()
+ ->end()
+ ->arrayNode('deployment')
+ ->info('Deployment detector - detects deployment.environment.name from Symfony kernel environment')
+ ->addDefaultsIfNotSet()
+ ->children()
+ ->booleanNode('enabled')->defaultTrue()->end()
+ ->end()
+ ->end()
+ ->arrayNode('environment')
+ ->info('Environment detector - reads OTEL_SERVICE_NAME and OTEL_RESOURCE_ATTRIBUTES')
+ ->addDefaultsIfNotSet()
+ ->children()
+ ->booleanNode('enabled')->defaultTrue()->end()
+ ->end()
+ ->end()
+ ->end()
+ ->end()
+ ->arrayNode('dynamic')
+ ->info('Dynamic detectors - values that may change between requests/commands (never cached)')
+ ->addDefaultsIfNotSet()
+ ->children()
+ ->arrayNode('process')
+ ->info('Process detector - detects process.pid, process.runtime.*, process.executable.*')
+ ->addDefaultsIfNotSet()
+ ->children()
+ ->booleanNode('enabled')->defaultTrue()->end()
+ ->end()
+ ->end()
+ ->end()
+ ->end()
+ ->end()
+ ->end()
+ ->arrayNode('custom')
+ ->info('Custom resource attributes that override auto-detected values')
+ ->normalizeKeys(false)
+ ->useAttributeAsKey('name')
+ ->prototype('variable')->end()
+ ->end()
+ ->end()
+ ->end()
+ ->scalarNode('clock_service_id')
+ ->info('Custom PSR-20 clock service ID. If not provided, uses built-in SystemClock.')
+ ->defaultNull()
+ ->end()
+ ->arrayNode('context_storage')
+ ->info('Context storage configuration')
+ ->addDefaultsIfNotSet()
+ ->children()
+ ->enumNode('type')
+ ->values(['memory', 'service'])
+ ->defaultValue('memory')
+ ->end()
+ ->scalarNode('service_id')
+ ->info('Custom context storage service ID (only for type: service)')
+ ->defaultNull()
+ ->end()
+ ->end()
+ ->end()
+ ->arrayNode('propagator')
+ ->info('Context propagator configuration for distributed tracing')
+ ->addDefaultsIfNotSet()
+ ->children()
+ ->enumNode('type')
+ ->info("Propagator type: 'w3c' (W3C TraceContext + Baggage), 'tracecontext' (W3C TraceContext only), 'baggage' (W3C Baggage only), 'service' (custom)")
+ ->values(['w3c', 'tracecontext', 'baggage', 'service'])
+ ->defaultValue('w3c')
+ ->end()
+ ->scalarNode('service_id')
+ ->info('Custom propagator service ID (only for type: service)')
+ ->defaultNull()
+ ->end()
+ ->end()
+ ->end()
+ ->arrayNode('tracer_provider')
+ ->info('TracerProvider configuration. Defaults to void if omitted.')
+ ->addDefaultsIfNotSet()
+ ->children()
+ ->arrayNode('sampler')
+ ->info('Trace sampler configuration')
+ ->addDefaultsIfNotSet()
+ ->children()
+ ->enumNode('type')
+ ->values(['always_on', 'always_off', 'trace_id_ratio', 'parent_based', 'service'])
+ ->defaultValue('always_on')
+ ->end()
+ ->floatNode('ratio')
+ ->info('Sampling ratio for trace_id_ratio type (0.0 to 1.0)')
+ ->defaultValue(1.0)
+ ->min(0.0)
+ ->max(1.0)
+ ->end()
+ ->scalarNode('service_id')
+ ->info('Custom sampler service ID (only for type: service)')
+ ->defaultNull()
+ ->end()
+ ->end()
+ ->end()
+ ->append($this->processorNode('span'))
+ ->end()
+ ->end()
+ ->arrayNode('meter_provider')
+ ->info('MeterProvider configuration. Defaults to void if omitted.')
+ ->addDefaultsIfNotSet()
+ ->children()
+ ->enumNode('temporality')
+ ->info('Aggregation temporality')
+ ->values(['cumulative', 'delta'])
+ ->defaultValue('cumulative')
+ ->end()
+ ->append($this->processorNode('metric'))
+ ->end()
+ ->end()
+ ->arrayNode('logger_provider')
+ ->info('LoggerProvider configuration. Defaults to void if omitted.')
+ ->addDefaultsIfNotSet()
+ ->children()
+ ->append($this->processorNode('log'))
+ ->end()
+ ->end()
+ ->arrayNode('instrumentation')
+ ->info('Auto-instrumentation configuration')
+ ->addDefaultsIfNotSet()
+ ->children()
+ ->arrayNode('http_kernel')
+ ->info('HTTP kernel request tracing configuration')
+ ->canBeEnabled()
+ ->children()
+ ->arrayNode('exclude_paths')
+ ->info('URL paths to exclude from tracing (checked before route resolution)')
+ ->arrayPrototype()
+ ->children()
+ ->scalarNode('path')
+ ->info('Path pattern (exact or regex with / delimiters)')
+ ->isRequired()
+ ->cannotBeEmpty()
+ ->end()
+ ->scalarNode('method')
+ ->info('HTTP method (omit for all methods)')
+ ->defaultNull()
+ ->end()
+ ->end()
+ ->end()
+ ->end()
+ ->booleanNode('context_propagation')
+ ->info('Enable context propagation from incoming HTTP headers (requires propagator)')
+ ->defaultTrue()
+ ->end()
+ ->end()
+ ->end()
+ ->arrayNode('console')
+ ->info('Console command tracing configuration')
+ ->canBeEnabled()
+ ->children()
+ ->arrayNode('exclude_commands')
+ ->info('Command names to exclude from tracing (supports regex with / delimiters)')
+ ->scalarPrototype()->end()
+ ->end()
+ ->end()
+ ->end()
+ ->arrayNode('messenger')
+ ->info('Messenger tracing configuration')
+ ->canBeEnabled()
+ ->children()
+ ->booleanNode('context_propagation')
+ ->info('Enable context propagation across message boundaries (requires propagator)')
+ ->defaultTrue()
+ ->end()
+ ->end()
+ ->end()
+ ->arrayNode('twig')
+ ->info('Twig template tracing configuration')
+ ->canBeEnabled()
+ ->children()
+ ->booleanNode('trace_templates')
+ ->info('Trace template rendering')
+ ->defaultTrue()
+ ->end()
+ ->booleanNode('trace_blocks')
+ ->info('Trace block rendering')
+ ->defaultFalse()
+ ->end()
+ ->booleanNode('trace_macros')
+ ->info('Trace macro execution')
+ ->defaultFalse()
+ ->end()
+ ->arrayNode('exclude_templates')
+ ->info('Template paths to exclude from tracing (supports regex with / delimiters)')
+ ->scalarPrototype()->end()
+ ->end()
+ ->end()
+ ->end()
+ ->arrayNode('http_client')
+ ->info('HTTP client request tracing configuration')
+ ->canBeEnabled()
+ ->children()
+ ->arrayNode('exclude_clients')
+ ->info('HTTP client service IDs to exclude from tracing (supports regex with / delimiters)')
+ ->scalarPrototype()->end()
+ ->end()
+ ->end()
+ ->end()
+ ->arrayNode('psr18_client')
+ ->info('PSR-18 HTTP client request tracing configuration')
+ ->canBeEnabled()
+ ->children()
+ ->arrayNode('exclude_clients')
+ ->info('PSR-18 client service IDs to exclude from tracing (supports regex with / delimiters)')
+ ->scalarPrototype()->end()
+ ->end()
+ ->end()
+ ->end()
+ ->arrayNode('dbal')
+ ->info('Doctrine DBAL query tracing configuration')
+ ->canBeEnabled()
+ ->children()
+ ->booleanNode('log_sql')
+ ->info('Whether to include SQL in span attributes')
+ ->defaultTrue()
+ ->end()
+ ->integerNode('max_sql_length')
+ ->info('Maximum SQL length in span attributes (0 = no limit)')
+ ->defaultValue(1000)
+ ->min(0)
+ ->end()
+ ->arrayNode('exclude_connections')
+ ->info('Connection names to exclude from tracing (supports regex with / delimiters)')
+ ->scalarPrototype()->end()
+ ->end()
+ ->end()
+ ->end()
+ ->arrayNode('cache')
+ ->info('Symfony Cache tracing configuration')
+ ->canBeEnabled()
+ ->children()
+ ->arrayNode('exclude_pools')
+ ->info('Cache pool service IDs to exclude from tracing (supports regex with / delimiters)')
+ ->scalarPrototype()->end()
+ ->end()
+ ->end()
+ ->end()
+ ->end()
+ ->end()
+ ->arrayNode('tracers')
+ ->info('Named tracer configurations')
+ ->useAttributeAsKey('name')
+ ->arrayPrototype()
+ ->children()
+ ->scalarNode('version')
+ ->info('Instrumentation scope version')
+ ->defaultValue('unknown')
+ ->end()
+ ->scalarNode('schema_url')
+ ->info('Schema URL for semantic conventions')
+ ->defaultNull()
+ ->end()
+ ->arrayNode('attributes')
+ ->info('Additional scope attributes')
+ ->normalizeKeys(false)
+ ->useAttributeAsKey('name')
+ ->prototype('variable')->end()
+ ->end()
+ ->end()
+ ->end()
+ ->end()
+ ->arrayNode('meters')
+ ->info('Named meter configurations')
+ ->useAttributeAsKey('name')
+ ->arrayPrototype()
+ ->children()
+ ->scalarNode('version')
+ ->info('Instrumentation scope version')
+ ->defaultValue('unknown')
+ ->end()
+ ->scalarNode('schema_url')
+ ->info('Schema URL for semantic conventions')
+ ->defaultNull()
+ ->end()
+ ->arrayNode('attributes')
+ ->info('Additional scope attributes')
+ ->normalizeKeys(false)
+ ->useAttributeAsKey('name')
+ ->prototype('variable')->end()
+ ->end()
+ ->end()
+ ->end()
+ ->end()
+ ->arrayNode('loggers')
+ ->info('Named logger configurations')
+ ->useAttributeAsKey('name')
+ ->arrayPrototype()
+ ->children()
+ ->scalarNode('version')
+ ->info('Instrumentation scope version')
+ ->defaultValue('unknown')
+ ->end()
+ ->scalarNode('schema_url')
+ ->info('Schema URL for semantic conventions')
+ ->defaultNull()
+ ->end()
+ ->arrayNode('attributes')
+ ->info('Additional scope attributes')
+ ->normalizeKeys(false)
+ ->useAttributeAsKey('name')
+ ->prototype('variable')->end()
+ ->end()
+ ->end()
+ ->end()
+ ->end()
+ ->end();
+
+ return $treeBuilder;
+ }
+
+ private function exporterNode(string $signalType) : ArrayNodeDefinition
+ {
+ $builder = new TreeBuilder('exporter');
+ /** @var ArrayNodeDefinition $node */
+ $node = $builder->getRootNode();
+
+ $node
+ ->info(\ucfirst($signalType) . ' exporter configuration')
+ ->addDefaultsIfNotSet()
+ ->children()
+ ->enumNode('type')
+ ->values(['memory', 'console', 'void', 'otlp', 'service'])
+ ->defaultValue('void')
+ ->end()
+ ->scalarNode('service_id')
+ ->info('Custom exporter service ID (only for type: service)')
+ ->defaultNull()
+ ->end()
+ ->arrayNode('otlp')
+ ->info('OTLP exporter configuration (only for type: otlp)')
+ ->children()
+ ->arrayNode('transport')
+ ->info('OTLP transport configuration')
+ ->addDefaultsIfNotSet()
+ ->children()
+ ->enumNode('type')
+ ->values(['curl', 'http', 'grpc', 'service'])
+ ->defaultValue('curl')
+ ->end()
+ ->scalarNode('endpoint')
+ ->info('OTLP endpoint URL (required)')
+ ->isRequired()
+ ->cannotBeEmpty()
+ ->end()
+ ->integerNode('timeout')
+ ->info('Request timeout in seconds')
+ ->defaultValue(30)
+ ->min(1)
+ ->end()
+ ->arrayNode('headers')
+ ->info('Additional HTTP headers')
+ ->normalizeKeys(false)
+ ->useAttributeAsKey('name')
+ ->prototype('scalar')->end()
+ ->end()
+ ->integerNode('connect_timeout')
+ ->info('Connection timeout in seconds (only for curl)')
+ ->defaultValue(10)
+ ->min(1)
+ ->end()
+ ->booleanNode('compression')
+ ->info('Enable automatic response decompression (only for curl)')
+ ->defaultFalse()
+ ->end()
+ ->booleanNode('follow_redirects')
+ ->info('Follow HTTP redirects (only for curl)')
+ ->defaultTrue()
+ ->end()
+ ->integerNode('max_redirects')
+ ->info('Maximum number of redirects to follow (only for curl)')
+ ->defaultValue(3)
+ ->min(0)
+ ->end()
+ ->scalarNode('proxy')
+ ->info('Proxy server URL (only for curl, e.g., "http://proxy:8080")')
+ ->defaultNull()
+ ->end()
+ ->booleanNode('ssl_verify_peer')
+ ->info('Verify SSL peer certificate (only for curl)')
+ ->defaultTrue()
+ ->end()
+ ->booleanNode('ssl_verify_host')
+ ->info('Verify SSL host name (only for curl)')
+ ->defaultTrue()
+ ->end()
+ ->scalarNode('ssl_cert_path')
+ ->info('Path to SSL client certificate (only for curl)')
+ ->defaultNull()
+ ->end()
+ ->scalarNode('ssl_key_path')
+ ->info('Path to SSL client private key (only for curl)')
+ ->defaultNull()
+ ->end()
+ ->scalarNode('ca_info_path')
+ ->info('Path to CA certificate bundle (only for curl)')
+ ->defaultNull()
+ ->end()
+ ->scalarNode('http_client_service_id')
+ ->info('PSR-18 HTTP client service ID (only for http transport)')
+ ->defaultNull()
+ ->end()
+ ->scalarNode('request_factory_service_id')
+ ->info('PSR-17 request factory service ID (only for http transport)')
+ ->defaultNull()
+ ->end()
+ ->scalarNode('stream_factory_service_id')
+ ->info('PSR-17 stream factory service ID (only for http transport)')
+ ->defaultNull()
+ ->end()
+ ->booleanNode('insecure')
+ ->info('Allow insecure connections (only for grpc)')
+ ->defaultTrue()
+ ->end()
+ ->scalarNode('service_id')
+ ->info('Custom transport service ID (only for type: service)')
+ ->defaultNull()
+ ->end()
+ ->arrayNode('serializer')
+ ->info('Serializer configuration')
+ ->addDefaultsIfNotSet()
+ ->children()
+ ->enumNode('type')
+ ->values(['json', 'protobuf', 'service'])
+ ->defaultValue('json')
+ ->end()
+ ->scalarNode('service_id')
+ ->info('Custom serializer service ID (only for type: service)')
+ ->defaultNull()
+ ->end()
+ ->end()
+ ->end()
+ ->end()
+ ->end()
+ ->end()
+ ->end()
+ ->end();
+
+ return $node;
+ }
+
+ private function innerProcessorNode(string $signalType) : ArrayNodeDefinition
+ {
+ $builder = new TreeBuilder('inner_processor');
+ /** @var ArrayNodeDefinition $node */
+ $node = $builder->getRootNode();
+
+ $childProcessorTypes = ['memory', 'batching', 'passthrough', 'void', 'service'];
+
+ $node
+ ->info('Inner processor configuration for severity_filtering (only for type: severity_filtering)')
+ ->children()
+ ->enumNode('type')
+ ->values($childProcessorTypes)
+ ->isRequired()
+ ->end()
+ ->integerNode('batch_size')
+ ->info('Batch size for batching processor')
+ ->defaultValue(512)
+ ->min(1)
+ ->end()
+ ->scalarNode('service_id')
+ ->info('Custom processor service ID (only for type: service)')
+ ->defaultNull()
+ ->end()
+ ->append($this->exporterNode($signalType))
+ ->end();
+
+ return $node;
+ }
+
+ private function processorNode(string $signalType) : ArrayNodeDefinition
+ {
+ $builder = new TreeBuilder('processor');
+ /** @var ArrayNodeDefinition $node */
+ $node = $builder->getRootNode();
+
+ $processorTypes = ['composite', 'memory', 'batching', 'passthrough', 'void', 'service'];
+ $childProcessorTypes = ['memory', 'batching', 'passthrough', 'void', 'service'];
+
+ if ($signalType === 'log') {
+ $processorTypes[] = 'severity_filtering';
+ $childProcessorTypes[] = 'severity_filtering';
+ }
+
+ $node
+ ->info(\ucfirst($signalType) . ' processor configuration')
+ ->addDefaultsIfNotSet()
+ ->children()
+ ->enumNode('type')
+ ->values($processorTypes)
+ ->defaultValue('void')
+ ->end()
+ ->integerNode('batch_size')
+ ->info('Batch size for batching processor')
+ ->defaultValue(512)
+ ->min(1)
+ ->end()
+ ->scalarNode('service_id')
+ ->info('Custom processor service ID (only for type: service)')
+ ->defaultNull()
+ ->end()
+ ->enumNode('minimum_severity')
+ ->info('Minimum severity level for severity_filtering processor (only for log processors)')
+ ->values(['trace', 'debug', 'info', 'warn', 'error', 'fatal'])
+ ->defaultValue('info')
+ ->end()
+ ->arrayNode('processors')
+ ->info('Array of processor configurations (only for type: composite)')
+ ->arrayPrototype()
+ ->children()
+ ->enumNode('type')
+ ->values($childProcessorTypes)
+ ->isRequired()
+ ->end()
+ ->integerNode('batch_size')
+ ->defaultValue(512)
+ ->min(1)
+ ->end()
+ ->scalarNode('service_id')
+ ->defaultNull()
+ ->end()
+ ->enumNode('minimum_severity')
+ ->values(['trace', 'debug', 'info', 'warn', 'error', 'fatal'])
+ ->defaultValue('info')
+ ->end()
+ ->append($this->exporterNode($signalType))
+ ->append($this->innerProcessorNode($signalType))
+ ->end()
+ ->end()
+ ->end()
+ ->append($this->exporterNode($signalType))
+ ->append($this->innerProcessorNode($signalType))
+ ->end();
+
+ return $node;
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/DependencyInjection/FlowTelemetryExtension.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/DependencyInjection/FlowTelemetryExtension.php
new file mode 100644
index 0000000000..37d906436f
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/DependencyInjection/FlowTelemetryExtension.php
@@ -0,0 +1,1286 @@
+ */
+ private array $configsEnabled = [];
+
+ /**
+ * @param array $configs
+ */
+ public function load(array $configs, ContainerBuilder $container) : void
+ {
+ $loader = new PhpFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
+ $configuration = new Configuration();
+ /** @var array{resource: array{detectors?: array{enabled?: bool, static?: array{cache?: array{enabled?: bool, path?: null|string}, os?: array{enabled?: bool}, host?: array{enabled?: bool}, service?: array{enabled?: bool}, deployment?: array{enabled?: bool}, environment?: array{enabled?: bool}}, dynamic?: array{process?: array{enabled?: bool}}}, custom?: array}, clock_service_id?: null|string, context_storage?: array{type?: string, service_id?: null|string}, propagator?: array{type?: string, service_id?: null|string}, tracer_provider?: array, meter_provider?: array, logger_provider?: array, instrumentation?: array{http_kernel?: array{enabled?: bool, exclude_paths?: array, context_propagation?: bool}, console?: array{enabled?: bool, exclude_commands?: array}, messenger?: array{enabled?: bool, context_propagation?: bool}, twig?: array{enabled?: bool, trace_templates?: bool, trace_blocks?: bool, trace_macros?: bool, exclude_templates?: array}, http_client?: array{enabled?: bool, exclude_clients?: array}, psr18_client?: array{enabled?: bool, exclude_clients?: array}, dbal?: array{enabled?: bool, log_sql?: bool, max_sql_length?: int, exclude_connections?: array}, cache?: array{enabled?: bool, exclude_pools?: array}}, tracers?: array}>, meters?: array}>, loggers?: array}>} $config */
+ $config = $this->processConfiguration($configuration, $configs);
+
+ $this->registerGlobalServices($config, $container);
+ $this->registerPropagator($config['propagator'] ?? [], $container);
+ $this->registerResource($config['resource'], $container);
+ $this->registerTelemetry($config, $container);
+ $this->registerInstrumentation($config['instrumentation'] ?? [], $container, $loader);
+ $this->registerTracers($config['tracers'] ?? [], $container);
+ $this->registerMeters($config['meters'] ?? [], $container);
+ $this->registerLoggers($config['loggers'] ?? [], $container);
+ }
+
+ /**
+ * @param array $config
+ */
+ private function buildInnerLogProcessor(array $config, string $serviceIdPrefix, ContainerBuilder $container) : string
+ {
+ $processorServiceId = $serviceIdPrefix . '.processor';
+ $type = $config['type'] ?? 'void';
+
+ switch ($type) {
+ case 'service':
+ $customServiceId = $config['service_id'] ?? null;
+
+ if ($customServiceId === null) {
+ throw new RuntimeException('service_id is required when processor type is "service"');
+ }
+ $container->setAlias($processorServiceId, $customServiceId);
+
+ break;
+
+ case 'void':
+ $container->setDefinition($processorServiceId, new Definition(VoidLogProcessor::class));
+
+ break;
+
+ case 'memory':
+ $exporterServiceId = $this->buildLogExporter(
+ $config['exporter'] ?? [],
+ $processorServiceId,
+ $container
+ );
+ $definition = new Definition(MemoryLogProcessor::class);
+ $definition->setArgument(0, new Reference($exporterServiceId));
+ $container->setDefinition($processorServiceId, $definition);
+
+ break;
+
+ case 'batching':
+ $exporterServiceId = $this->buildLogExporter(
+ $config['exporter'] ?? [],
+ $processorServiceId,
+ $container
+ );
+ $definition = new Definition(BatchingLogProcessor::class);
+ $definition->setArgument(0, new Reference($exporterServiceId));
+ $definition->setArgument(1, $config['batch_size'] ?? 512);
+ $container->setDefinition($processorServiceId, $definition);
+
+ break;
+
+ case 'passthrough':
+ $exporterServiceId = $this->buildLogExporter(
+ $config['exporter'] ?? [],
+ $processorServiceId,
+ $container
+ );
+ $definition = new Definition(PassThroughLogProcessor::class);
+ $definition->setArgument(0, new Reference($exporterServiceId));
+ $container->setDefinition($processorServiceId, $definition);
+
+ break;
+
+ default:
+ throw new RuntimeException(\sprintf('Unknown inner log processor type: %s', (string) $type));
+ }
+
+ return $processorServiceId;
+ }
+
+ /**
+ * @param array $config
+ */
+ private function buildLogExporter(array $config, string $serviceIdPrefix, ContainerBuilder $container) : string
+ {
+ $exporterServiceId = $serviceIdPrefix . '.exporter';
+ $type = $config['type'] ?? 'void';
+
+ switch ($type) {
+ case 'service':
+ $customServiceId = $config['service_id'] ?? null;
+
+ if ($customServiceId === null) {
+ throw new RuntimeException('service_id is required when exporter type is "service"');
+ }
+ $container->setAlias($exporterServiceId, $customServiceId);
+
+ break;
+
+ case 'void':
+ $container->setDefinition($exporterServiceId, new Definition(VoidLogExporter::class));
+
+ break;
+
+ case 'memory':
+ $container->setDefinition($exporterServiceId, new Definition(MemoryLogExporter::class));
+
+ break;
+
+ case 'console':
+ $container->setDefinition($exporterServiceId, new Definition(ConsoleLogExporter::class));
+
+ break;
+
+ case 'otlp':
+ $container->setParameter('flow.telemetry.otlp_configured', true);
+ $transportServiceId = $this->buildOTLPTransport(
+ $config['otlp']['transport'] ?? [],
+ $exporterServiceId,
+ $container
+ );
+ $definition = new Definition(OTLPLogExporter::class);
+ $definition->setArgument(0, new Reference($transportServiceId));
+ $container->setDefinition($exporterServiceId, $definition);
+
+ break;
+
+ default:
+ throw new RuntimeException(\sprintf('Unknown log exporter type: %s', (string) $type));
+ }
+
+ return $exporterServiceId;
+ }
+
+ /**
+ * @param array $config
+ */
+ private function buildLoggerProvider(array $config, ContainerBuilder $container) : string
+ {
+ $providerServiceId = 'flow.telemetry.logger_provider';
+
+ $processorServiceId = $this->buildLogProcessor($config['processor'] ?? [], $providerServiceId, $container);
+
+ $definition = new Definition(LoggerProvider::class);
+ $definition->setArgument(0, new Reference($processorServiceId));
+ $definition->setArgument(1, new Reference('flow.telemetry.clock'));
+ $definition->setArgument(2, new Reference('flow.telemetry.context_storage'));
+ $container->setDefinition($providerServiceId, $definition);
+
+ return $providerServiceId;
+ }
+
+ /**
+ * @param array $config
+ */
+ private function buildLogProcessor(array $config, string $serviceIdPrefix, ContainerBuilder $container) : string
+ {
+ $processorServiceId = $serviceIdPrefix . '.processor';
+ $type = $config['type'] ?? 'void';
+
+ switch ($type) {
+ case 'service':
+ $customServiceId = $config['service_id'] ?? null;
+
+ if ($customServiceId === null) {
+ throw new RuntimeException('service_id is required when processor type is "service"');
+ }
+ $container->setAlias($processorServiceId, $customServiceId);
+
+ break;
+
+ case 'void':
+ $container->setDefinition($processorServiceId, new Definition(VoidLogProcessor::class));
+
+ break;
+
+ case 'memory':
+ $exporterServiceId = $this->buildLogExporter(
+ $config['exporter'] ?? [],
+ $processorServiceId,
+ $container
+ );
+ $definition = new Definition(MemoryLogProcessor::class);
+ $definition->setArgument(0, new Reference($exporterServiceId));
+ $container->setDefinition($processorServiceId, $definition);
+
+ break;
+
+ case 'batching':
+ $exporterServiceId = $this->buildLogExporter(
+ $config['exporter'] ?? [],
+ $processorServiceId,
+ $container
+ );
+ $definition = new Definition(BatchingLogProcessor::class);
+ $definition->setArgument(0, new Reference($exporterServiceId));
+ $definition->setArgument(1, $config['batch_size'] ?? 512);
+ $container->setDefinition($processorServiceId, $definition);
+
+ break;
+
+ case 'passthrough':
+ $exporterServiceId = $this->buildLogExporter(
+ $config['exporter'] ?? [],
+ $processorServiceId,
+ $container
+ );
+ $definition = new Definition(PassThroughLogProcessor::class);
+ $definition->setArgument(0, new Reference($exporterServiceId));
+ $container->setDefinition($processorServiceId, $definition);
+
+ break;
+
+ case 'composite':
+ $processors = $config['processors'] ?? [];
+ $processorRefs = [];
+
+ foreach ($processors as $idx => $processorConfig) {
+ /** @var array $processorConfig */
+ $subProcessorId = $this->buildLogProcessor(
+ $processorConfig,
+ $processorServiceId . '.' . $idx,
+ $container
+ );
+ $processorRefs[] = new Reference($subProcessorId);
+ }
+ $definition = new Definition(CompositeLogProcessor::class);
+ $definition->setArgument(0, $processorRefs);
+ $container->setDefinition($processorServiceId, $definition);
+
+ break;
+
+ case 'severity_filtering':
+ $innerProcessorConfig = $config['inner_processor'] ?? [];
+ $innerProcessorServiceId = $this->buildInnerLogProcessor(
+ $innerProcessorConfig,
+ $processorServiceId . '.inner',
+ $container
+ );
+ $minimumSeverity = $this->mapSeverity($config['minimum_severity'] ?? 'info');
+ $definition = new Definition(SeverityFilteringLogProcessor::class);
+ $definition->setArgument(0, new Reference($innerProcessorServiceId));
+ $definition->setArgument(1, $minimumSeverity);
+ $container->setDefinition($processorServiceId, $definition);
+
+ break;
+
+ default:
+ throw new RuntimeException(\sprintf('Unknown log processor type: %s', (string) $type));
+ }
+
+ return $processorServiceId;
+ }
+
+ /**
+ * @param array $config
+ */
+ private function buildMeterProvider(array $config, ContainerBuilder $container) : string
+ {
+ $providerServiceId = 'flow.telemetry.meter_provider';
+
+ $processorServiceId = $this->buildMetricProcessor($config['processor'] ?? [], $providerServiceId, $container);
+
+ $temporality = ($config['temporality'] ?? 'cumulative') === 'delta'
+ ? AggregationTemporality::DELTA
+ : AggregationTemporality::CUMULATIVE;
+
+ $definition = new Definition(MeterProvider::class);
+ $definition->setArgument(0, new Reference($processorServiceId));
+ $definition->setArgument(1, new Reference('flow.telemetry.clock'));
+ $definition->setArgument(2, $temporality);
+ $container->setDefinition($providerServiceId, $definition);
+
+ return $providerServiceId;
+ }
+
+ /**
+ * @param array $config
+ */
+ private function buildMetricExporter(array $config, string $serviceIdPrefix, ContainerBuilder $container) : string
+ {
+ $exporterServiceId = $serviceIdPrefix . '.exporter';
+ $type = $config['type'] ?? 'void';
+
+ switch ($type) {
+ case 'service':
+ $customServiceId = $config['service_id'] ?? null;
+
+ if ($customServiceId === null) {
+ throw new RuntimeException('service_id is required when exporter type is "service"');
+ }
+ $container->setAlias($exporterServiceId, $customServiceId);
+
+ break;
+
+ case 'void':
+ $container->setDefinition($exporterServiceId, new Definition(VoidMetricExporter::class));
+
+ break;
+
+ case 'memory':
+ $container->setDefinition($exporterServiceId, new Definition(MemoryMetricExporter::class));
+
+ break;
+
+ case 'console':
+ $container->setDefinition($exporterServiceId, new Definition(ConsoleMetricExporter::class));
+
+ break;
+
+ case 'otlp':
+ $container->setParameter('flow.telemetry.otlp_configured', true);
+ $transportServiceId = $this->buildOTLPTransport(
+ $config['otlp']['transport'] ?? [],
+ $exporterServiceId,
+ $container
+ );
+ $definition = new Definition(OTLPMetricExporter::class);
+ $definition->setArgument(0, new Reference($transportServiceId));
+ $container->setDefinition($exporterServiceId, $definition);
+
+ break;
+
+ default:
+ throw new RuntimeException(\sprintf('Unknown metric exporter type: %s', (string) $type));
+ }
+
+ return $exporterServiceId;
+ }
+
+ /**
+ * @param array $config
+ */
+ private function buildMetricProcessor(array $config, string $serviceIdPrefix, ContainerBuilder $container) : string
+ {
+ $processorServiceId = $serviceIdPrefix . '.processor';
+ $type = $config['type'] ?? 'void';
+
+ switch ($type) {
+ case 'service':
+ $customServiceId = $config['service_id'] ?? null;
+
+ if ($customServiceId === null) {
+ throw new RuntimeException('service_id is required when processor type is "service"');
+ }
+ $container->setAlias($processorServiceId, $customServiceId);
+
+ break;
+
+ case 'void':
+ $container->setDefinition($processorServiceId, new Definition(VoidMetricProcessor::class));
+
+ break;
+
+ case 'memory':
+ $exporterServiceId = $this->buildMetricExporter(
+ $config['exporter'] ?? [],
+ $processorServiceId,
+ $container
+ );
+ $definition = new Definition(MemoryMetricProcessor::class);
+ $definition->setArgument(0, new Reference($exporterServiceId));
+ $container->setDefinition($processorServiceId, $definition);
+
+ break;
+
+ case 'batching':
+ $exporterServiceId = $this->buildMetricExporter(
+ $config['exporter'] ?? [],
+ $processorServiceId,
+ $container
+ );
+ $definition = new Definition(BatchingMetricProcessor::class);
+ $definition->setArgument(0, new Reference($exporterServiceId));
+ $definition->setArgument(1, $config['batch_size'] ?? 512);
+ $container->setDefinition($processorServiceId, $definition);
+
+ break;
+
+ case 'passthrough':
+ $exporterServiceId = $this->buildMetricExporter(
+ $config['exporter'] ?? [],
+ $processorServiceId,
+ $container
+ );
+ $definition = new Definition(PassThroughMetricProcessor::class);
+ $definition->setArgument(0, new Reference($exporterServiceId));
+ $container->setDefinition($processorServiceId, $definition);
+
+ break;
+
+ case 'composite':
+ $processors = $config['processors'] ?? [];
+ $processorRefs = [];
+
+ foreach ($processors as $idx => $processorConfig) {
+ /** @var array $processorConfig */
+ $subProcessorId = $this->buildMetricProcessor(
+ $processorConfig,
+ $processorServiceId . '.' . $idx,
+ $container
+ );
+ $processorRefs[] = new Reference($subProcessorId);
+ }
+ $definition = new Definition(CompositeMetricProcessor::class);
+ $definition->setArgument(0, $processorRefs);
+ $container->setDefinition($processorServiceId, $definition);
+
+ break;
+
+ default:
+ throw new RuntimeException(\sprintf('Unknown metric processor type: %s', (string) $type));
+ }
+
+ return $processorServiceId;
+ }
+
+ /**
+ * @param array{type?: string, service_id?: string} $config
+ */
+ private function buildOTLPSerializer(array $config, string $serviceIdPrefix, ContainerBuilder $container) : string
+ {
+ $serializerServiceId = $serviceIdPrefix . '.serializer';
+ $type = $config['type'] ?? 'json';
+
+ switch ($type) {
+ case 'service':
+ $customServiceId = $config['service_id'] ?? null;
+
+ if ($customServiceId === null) {
+ throw new RuntimeException('service_id is required when serializer type is "service"');
+ }
+ $container->setAlias($serializerServiceId, $customServiceId);
+
+ break;
+
+ case 'json':
+ $definition = new Definition(JsonSerializer::class);
+ $container->setDefinition($serializerServiceId, $definition);
+
+ break;
+
+ case 'protobuf':
+ $definition = new Definition(ProtobufSerializer::class);
+ $container->setDefinition($serializerServiceId, $definition);
+
+ break;
+
+ default:
+ throw new RuntimeException(\sprintf('Unknown OTLP serializer type: %s', (string) $type));
+ }
+
+ return $serializerServiceId;
+ }
+
+ /**
+ * @param array $config
+ */
+ private function buildOTLPTransport(array $config, string $serviceIdPrefix, ContainerBuilder $container) : string
+ {
+ $transportServiceId = $serviceIdPrefix . '.transport';
+ $type = $config['type'];
+
+ if ($type === 'service') {
+ $customServiceId = $config['service_id'] ?? null;
+
+ if ($customServiceId === null) {
+ throw new RuntimeException('service_id is required when transport type is "service"');
+ }
+ $container->setAlias($transportServiceId, $customServiceId);
+
+ return $transportServiceId;
+ }
+
+ $endpoint = $config['endpoint'];
+ $timeout = $config['timeout'];
+ $headers = $config['headers'];
+
+ $serializerServiceId = $this->buildOTLPSerializer($config['serializer'], $transportServiceId, $container);
+
+ switch ($type) {
+ case 'curl':
+ $optionsServiceId = $transportServiceId . '.options';
+ $optionsDefinition = new Definition(CurlTransportOptions::class);
+ $optionsDefinition->addMethodCall('withTimeout', [$timeout]);
+ $optionsDefinition->addMethodCall('withConnectTimeout', [$config['connect_timeout']]);
+
+ foreach ($headers as $headerName => $headerValue) {
+ $optionsDefinition->addMethodCall('withHeader', [(string) $headerName, (string) $headerValue]);
+ }
+
+ if ($config['compression']) {
+ $optionsDefinition->addMethodCall('withCompression', [true]);
+ }
+
+ $optionsDefinition->addMethodCall('withFollowRedirects', [
+ $config['follow_redirects'],
+ $config['max_redirects'],
+ ]);
+
+ if ($config['proxy'] !== null) {
+ $optionsDefinition->addMethodCall('withProxy', [$config['proxy']]);
+ }
+
+ $optionsDefinition->addMethodCall('withSslVerification', [
+ $config['ssl_verify_peer'],
+ $config['ssl_verify_host'],
+ ]);
+
+ if ($config['ssl_cert_path'] !== null) {
+ $optionsDefinition->addMethodCall('withSslCertificate', [
+ $config['ssl_cert_path'],
+ $config['ssl_key_path'],
+ ]);
+ }
+
+ if ($config['ca_info_path'] !== null) {
+ $optionsDefinition->addMethodCall('withCaInfo', [$config['ca_info_path']]);
+ }
+
+ $container->setDefinition($optionsServiceId, $optionsDefinition);
+
+ $definition = new Definition(CurlTransport::class);
+ $definition->setArgument(0, $endpoint);
+ $definition->setArgument(1, new Reference($serializerServiceId));
+ $definition->setArgument(2, new Reference($optionsServiceId));
+ $container->setDefinition($transportServiceId, $definition);
+
+ break;
+
+ case 'http':
+ $httpClientServiceId = $config['http_client_service_id'] ?? null;
+ $requestFactoryServiceId = $config['request_factory_service_id'] ?? null;
+ $streamFactoryServiceId = $config['stream_factory_service_id'] ?? null;
+
+ if ($httpClientServiceId === null) {
+ throw new RuntimeException('http_client_service_id is required when transport type is "http"');
+ }
+
+ if ($requestFactoryServiceId === null) {
+ throw new RuntimeException('request_factory_service_id is required when transport type is "http"');
+ }
+
+ if ($streamFactoryServiceId === null) {
+ throw new RuntimeException('stream_factory_service_id is required when transport type is "http"');
+ }
+
+ $definition = new Definition(HttpTransport::class);
+ $definition->setArgument('$httpClient', new Reference($httpClientServiceId));
+ $definition->setArgument('$requestFactory', new Reference($requestFactoryServiceId));
+ $definition->setArgument('$streamFactory', new Reference($streamFactoryServiceId));
+ $definition->setArgument('$endpoint', $endpoint);
+ $definition->setArgument('$serializer', new Reference($serializerServiceId));
+ $definition->setArgument('$headers', $headers);
+ $container->setDefinition($transportServiceId, $definition);
+
+ break;
+
+ case 'grpc':
+ $insecure = $config['insecure'];
+ $definition = new Definition(GrpcTransport::class);
+ $definition->setArgument(0, $endpoint);
+ $definition->setArgument(1, new Reference($serializerServiceId));
+ $definition->setArgument(2, $timeout);
+ $definition->setArgument(3, $headers);
+ $definition->setArgument(4, $insecure);
+ $container->setDefinition($transportServiceId, $definition);
+
+ break;
+
+ default:
+ throw new RuntimeException(\sprintf('Unknown OTLP transport type: %s', (string) $type));
+ }
+
+ return $transportServiceId;
+ }
+
+ /**
+ * @param array $config
+ */
+ private function buildSampler(array $config, ContainerBuilder $container) : string
+ {
+ $samplerServiceId = 'flow.telemetry.tracer_provider.sampler';
+ $type = $config['type'] ?? 'always_on';
+
+ switch ($type) {
+ case 'service':
+ $customServiceId = $config['service_id'] ?? null;
+
+ if ($customServiceId === null) {
+ throw new RuntimeException('service_id is required when sampler type is "service"');
+ }
+ $container->setAlias($samplerServiceId, $customServiceId);
+
+ break;
+
+ case 'always_on':
+ $container->setDefinition($samplerServiceId, new Definition(AlwaysOnSampler::class));
+
+ break;
+
+ case 'always_off':
+ $container->setDefinition($samplerServiceId, new Definition(AlwaysOffSampler::class));
+
+ break;
+
+ case 'trace_id_ratio':
+ $definition = new Definition(TraceIdRatioBasedSampler::class);
+ $definition->setArgument(0, $config['ratio'] ?? 1.0);
+ $container->setDefinition($samplerServiceId, $definition);
+
+ break;
+
+ case 'parent_based':
+ $rootSamplerServiceId = $samplerServiceId . '.root';
+ $rootSamplerDefinition = new Definition(AlwaysOnSampler::class);
+ $container->setDefinition($rootSamplerServiceId, $rootSamplerDefinition);
+
+ $definition = new Definition(ParentBasedSampler::class);
+ $definition->setArgument(0, new Reference($rootSamplerServiceId));
+ $container->setDefinition($samplerServiceId, $definition);
+
+ break;
+
+ default:
+ throw new RuntimeException(\sprintf('Unknown sampler type: %s', (string) $type));
+ }
+
+ return $samplerServiceId;
+ }
+
+ /**
+ * @param array $config
+ */
+ private function buildSpanExporter(array $config, string $serviceIdPrefix, ContainerBuilder $container) : string
+ {
+ $exporterServiceId = $serviceIdPrefix . '.exporter';
+ $type = $config['type'] ?? 'void';
+
+ switch ($type) {
+ case 'service':
+ $customServiceId = $config['service_id'] ?? null;
+
+ if ($customServiceId === null) {
+ throw new RuntimeException('service_id is required when exporter type is "service"');
+ }
+ $container->setAlias($exporterServiceId, $customServiceId);
+
+ break;
+
+ case 'void':
+ $container->setDefinition($exporterServiceId, new Definition(VoidSpanExporter::class));
+
+ break;
+
+ case 'memory':
+ $container->setDefinition($exporterServiceId, new Definition(MemorySpanExporter::class));
+
+ break;
+
+ case 'console':
+ $container->setDefinition($exporterServiceId, new Definition(ConsoleSpanExporter::class));
+
+ break;
+
+ case 'otlp':
+ $container->setParameter('flow.telemetry.otlp_configured', true);
+ $transportServiceId = $this->buildOTLPTransport(
+ $config['otlp']['transport'] ?? [],
+ $exporterServiceId,
+ $container
+ );
+ $definition = new Definition(OTLPSpanExporter::class);
+ $definition->setArgument(0, new Reference($transportServiceId));
+ $container->setDefinition($exporterServiceId, $definition);
+
+ break;
+
+ default:
+ throw new RuntimeException(\sprintf('Unknown span exporter type: %s', (string) $type));
+ }
+
+ return $exporterServiceId;
+ }
+
+ /**
+ * @param array $config
+ */
+ private function buildSpanProcessor(array $config, string $serviceIdPrefix, ContainerBuilder $container) : string
+ {
+ $processorServiceId = $serviceIdPrefix . '.processor';
+ $type = $config['type'] ?? 'void';
+
+ switch ($type) {
+ case 'service':
+ $customServiceId = $config['service_id'] ?? null;
+
+ if ($customServiceId === null) {
+ throw new RuntimeException('service_id is required when processor type is "service"');
+ }
+ $container->setAlias($processorServiceId, $customServiceId);
+
+ break;
+
+ case 'void':
+ $container->setDefinition($processorServiceId, new Definition(VoidSpanProcessor::class));
+
+ break;
+
+ case 'memory':
+ $exporterServiceId = $this->buildSpanExporter(
+ $config['exporter'] ?? [],
+ $processorServiceId,
+ $container
+ );
+ $definition = new Definition(MemorySpanProcessor::class);
+ $definition->setArgument(0, new Reference($exporterServiceId));
+ $container->setDefinition($processorServiceId, $definition);
+
+ break;
+
+ case 'batching':
+ $exporterServiceId = $this->buildSpanExporter(
+ $config['exporter'] ?? [],
+ $processorServiceId,
+ $container
+ );
+ $definition = new Definition(BatchingSpanProcessor::class);
+ $definition->setArgument(0, new Reference($exporterServiceId));
+ $definition->setArgument(1, $config['batch_size'] ?? 512);
+ $container->setDefinition($processorServiceId, $definition);
+
+ break;
+
+ case 'passthrough':
+ $exporterServiceId = $this->buildSpanExporter(
+ $config['exporter'] ?? [],
+ $processorServiceId,
+ $container
+ );
+ $definition = new Definition(PassThroughSpanProcessor::class);
+ $definition->setArgument(0, new Reference($exporterServiceId));
+ $container->setDefinition($processorServiceId, $definition);
+
+ break;
+
+ case 'composite':
+ $processors = $config['processors'] ?? [];
+ $processorRefs = [];
+
+ foreach ($processors as $idx => $processorConfig) {
+ /** @var array $processorConfig */
+ $subProcessorId = $this->buildSpanProcessor(
+ $processorConfig,
+ $processorServiceId . '.' . $idx,
+ $container
+ );
+ $processorRefs[] = new Reference($subProcessorId);
+ }
+ $definition = new Definition(CompositeSpanProcessor::class);
+ $definition->setArgument(0, $processorRefs);
+ $container->setDefinition($processorServiceId, $definition);
+
+ break;
+
+ default:
+ throw new RuntimeException(\sprintf('Unknown span processor type: %s', (string) $type));
+ }
+
+ return $processorServiceId;
+ }
+
+ /**
+ * @param array $config
+ */
+ private function buildTracerProvider(array $config, ContainerBuilder $container) : string
+ {
+ $providerServiceId = 'flow.telemetry.tracer_provider';
+
+ $processorServiceId = $this->buildSpanProcessor($config['processor'] ?? [], $providerServiceId, $container);
+ $samplerServiceId = $this->buildSampler($config['sampler'] ?? [], $container);
+
+ $definition = new Definition(TracerProvider::class);
+ $definition->setArgument(0, new Reference($processorServiceId));
+ $definition->setArgument(1, new Reference('flow.telemetry.clock'));
+ $definition->setArgument(2, new Reference('flow.telemetry.context_storage'));
+ $definition->setArgument(3, new Reference($samplerServiceId));
+ $container->setDefinition($providerServiceId, $definition);
+
+ return $providerServiceId;
+ }
+
+ private function mapSeverity(string $severity) : Severity
+ {
+ return match ($severity) {
+ 'trace' => Severity::TRACE,
+ 'debug' => Severity::DEBUG,
+ 'info' => Severity::INFO,
+ 'warn' => Severity::WARN,
+ 'error' => Severity::ERROR,
+ 'fatal' => Severity::FATAL,
+ default => throw new RuntimeException(\sprintf('Unknown severity level: %s', $severity)),
+ };
+ }
+
+ /**
+ * @param array $config
+ */
+ private function readConfigEnabled(string $path, ContainerBuilder $container, array $config) : bool
+ {
+ return $this->configsEnabled[$path] ??= parent::isConfigEnabled($container, $config);
+ }
+
+ /**
+ * @param array $config
+ */
+ private function registerGlobalServices(array $config, ContainerBuilder $container) : void
+ {
+ $clockServiceId = $config['clock_service_id'] ?? null;
+
+ if ($clockServiceId !== null) {
+ $container->setAlias('flow.telemetry.clock', $clockServiceId);
+ } elseif ($container->has(ClockInterface::class)) {
+ $container->setAlias('flow.telemetry.clock', ClockInterface::class);
+ } else {
+ $container->setDefinition('flow.telemetry.clock', new Definition(SystemClock::class));
+ }
+
+ $contextStorageConfig = $config['context_storage'];
+ $contextStorageType = $contextStorageConfig['type'];
+
+ if ($contextStorageType === 'service') {
+ $customServiceId = $contextStorageConfig['service_id'] ?? null;
+
+ if ($customServiceId === null) {
+ throw new RuntimeException('service_id is required when context_storage type is "service"');
+ }
+ $container->setAlias('flow.telemetry.context_storage', $customServiceId);
+ } else {
+ $container->setDefinition('flow.telemetry.context_storage', new Definition(MemoryContextStorage::class));
+ }
+ }
+
+ /**
+ * @param array{http_kernel?: array{enabled?: bool, exclude_routes?: array, exclude_paths?: array, context_propagation?: bool}, console?: array{enabled?: bool, exclude_commands?: array}, messenger?: array{enabled?: bool, context_propagation?: bool}, twig?: array{enabled?: bool, trace_templates?: bool, trace_blocks?: bool, trace_macros?: bool, exclude_templates?: array}, http_client?: array{enabled?: bool, exclude_clients?: array}, psr18_client?: array{enabled?: bool, exclude_clients?: array}, dbal?: array{enabled?: bool, log_sql?: bool, max_sql_length?: int, exclude_connections?: array}, cache?: array{enabled?: bool, exclude_pools?: array}} $config
+ */
+ private function registerInstrumentation(array $config, ContainerBuilder $container, PhpFileLoader $loader) : void
+ {
+ $httpKernelConfig = $config['http_kernel'] ?? [];
+
+ if ($this->readConfigEnabled('instrumentation.http_kernel', $container, $httpKernelConfig)) {
+ $container->setParameter('flow.telemetry.http_kernel.exclude_paths', $httpKernelConfig['exclude_paths'] ?? []);
+ $container->setParameter('flow.telemetry.http_kernel.context_propagation', $httpKernelConfig['context_propagation'] ?? true);
+ $loader->load('instrumentation/http_kernel.php');
+ }
+
+ $consoleConfig = $config['console'] ?? [];
+
+ if ($this->readConfigEnabled('instrumentation.console', $container, $consoleConfig)) {
+ $container->setParameter('flow.telemetry.console.exclude_commands', $consoleConfig['exclude_commands'] ?? []);
+ $loader->load('instrumentation/console.php');
+ }
+
+ $messengerConfig = $config['messenger'] ?? [];
+
+ if ($this->readConfigEnabled('instrumentation.messenger', $container, $messengerConfig)) {
+ if (!\interface_exists(self::MESSENGER_MIDDLEWARE_INTERFACE)) {
+ throw new RuntimeException('Messenger instrumentation requires symfony/messenger package. Install it via composer: composer require symfony/messenger');
+ }
+
+ $loader->load('instrumentation/messenger.php');
+
+ if ($messengerConfig['context_propagation'] ?? true) {
+ $definition = $container->getDefinition('flow.telemetry.messenger.middleware');
+ $definition->setArgument(1, new Reference('flow.telemetry.context_storage'));
+ $definition->setArgument(2, new Reference('flow.telemetry.propagator'));
+ }
+ }
+
+ $twigConfig = $config['twig'] ?? [];
+
+ if ($this->readConfigEnabled('instrumentation.twig', $container, $twigConfig)) {
+ if (!\class_exists(AbstractExtension::class)) {
+ throw new RuntimeException('Twig instrumentation requires twig/twig package. Install it via composer: composer require twig/twig');
+ }
+
+ $container->setParameter('flow.telemetry.twig.trace_templates', $twigConfig['trace_templates'] ?? true);
+ $container->setParameter('flow.telemetry.twig.trace_blocks', $twigConfig['trace_blocks'] ?? false);
+ $container->setParameter('flow.telemetry.twig.trace_macros', $twigConfig['trace_macros'] ?? false);
+ $container->setParameter('flow.telemetry.twig.exclude_templates', $twigConfig['exclude_templates'] ?? []);
+ $loader->load('instrumentation/twig.php');
+ }
+
+ $this->registerParameterOnlyInstrumentation($config, $container);
+ }
+
+ /**
+ * @param array}> $config
+ */
+ private function registerLoggers(array $config, ContainerBuilder $container) : void
+ {
+ foreach ($config as $name => $loggerConfig) {
+ $definition = new Definition(Logger::class);
+ $definition->setFactory([new Reference('flow.telemetry'), 'logger']);
+ $definition->setArgument(0, $name);
+ $definition->setArgument(1, $loggerConfig['version'] ?? 'unknown');
+ $definition->setArgument(2, $loggerConfig['schema_url'] ?? null);
+
+ $attributes = $loggerConfig['attributes'] ?? [];
+
+ if (\count($attributes) > 0) {
+ $attributesDefinition = new Definition(Attributes::class);
+ $attributesDefinition->setFactory([Attributes::class, 'create']);
+ $attributesDefinition->setArgument(0, $attributes);
+ $definition->setArgument(3, $attributesDefinition);
+ } else {
+ $definition->setArgument(3, null);
+ }
+
+ $definition->setPublic(true);
+ $container->setDefinition('flow.telemetry.' . $name . '.logger', $definition);
+ }
+ }
+
+ /**
+ * @param array}> $config
+ */
+ private function registerMeters(array $config, ContainerBuilder $container) : void
+ {
+ foreach ($config as $name => $meterConfig) {
+ $definition = new Definition(Meter::class);
+ $definition->setFactory([new Reference('flow.telemetry'), 'meter']);
+ $definition->setArgument(0, $name);
+ $definition->setArgument(1, $meterConfig['version'] ?? 'unknown');
+ $definition->setArgument(2, $meterConfig['schema_url'] ?? null);
+
+ $attributes = $meterConfig['attributes'] ?? [];
+
+ if (\count($attributes) > 0) {
+ $attributesDefinition = new Definition(Attributes::class);
+ $attributesDefinition->setFactory([Attributes::class, 'create']);
+ $attributesDefinition->setArgument(0, $attributes);
+ $definition->setArgument(3, $attributesDefinition);
+ } else {
+ $definition->setArgument(3, null);
+ }
+
+ $definition->setPublic(true);
+ $container->setDefinition('flow.telemetry.' . $name . '.meter', $definition);
+ }
+ }
+
+ /**
+ * @param array{http_kernel?: array{enabled?: bool, exclude_routes?: array, exclude_paths?: array, context_propagation?: bool}, console?: array{enabled?: bool, exclude_commands?: array}, messenger?: array{enabled?: bool, context_propagation?: bool}, twig?: array{enabled?: bool, trace_templates?: bool, trace_blocks?: bool, trace_macros?: bool, exclude_templates?: array}, http_client?: array{enabled?: bool, exclude_clients?: array}, psr18_client?: array{enabled?: bool, exclude_clients?: array}, dbal?: array{enabled?: bool, log_sql?: bool, max_sql_length?: int, exclude_connections?: array}, cache?: array{enabled?: bool, exclude_pools?: array}} $config
+ */
+ private function registerParameterOnlyInstrumentation(array $config, ContainerBuilder $container) : void
+ {
+ $httpClientConfig = $config['http_client'] ?? [];
+ $container->setParameter(
+ 'flow.telemetry.http_client.enabled',
+ $httpClientConfig['enabled'] ?? false
+ );
+ $container->setParameter(
+ 'flow.telemetry.http_client.exclude_clients',
+ $httpClientConfig['exclude_clients'] ?? []
+ );
+
+ $psr18ClientConfig = $config['psr18_client'] ?? [];
+ $container->setParameter(
+ 'flow.telemetry.psr18_client.enabled',
+ $psr18ClientConfig['enabled'] ?? false
+ );
+ $container->setParameter(
+ 'flow.telemetry.psr18_client.exclude_clients',
+ $psr18ClientConfig['exclude_clients'] ?? []
+ );
+
+ $dbalConfig = $config['dbal'] ?? [];
+ $container->setParameter(
+ 'flow.telemetry.dbal.enabled',
+ $dbalConfig['enabled'] ?? false
+ );
+ $container->setParameter(
+ 'flow.telemetry.dbal.log_sql',
+ $dbalConfig['log_sql'] ?? true
+ );
+ $container->setParameter(
+ 'flow.telemetry.dbal.max_sql_length',
+ $dbalConfig['max_sql_length'] ?? 1000
+ );
+ $container->setParameter(
+ 'flow.telemetry.dbal.exclude_connections',
+ $dbalConfig['exclude_connections'] ?? []
+ );
+
+ $cacheConfig = $config['cache'] ?? [];
+ $container->setParameter(
+ 'flow.telemetry.cache.enabled',
+ $cacheConfig['enabled'] ?? false
+ );
+ $container->setParameter(
+ 'flow.telemetry.cache.exclude_pools',
+ $cacheConfig['exclude_pools'] ?? []
+ );
+ }
+
+ /**
+ * @param array{type?: string, service_id?: null|string} $config
+ */
+ private function registerPropagator(array $config, ContainerBuilder $container) : void
+ {
+ $type = $config['type'] ?? 'w3c';
+
+ switch ($type) {
+ case 'service':
+ $customServiceId = $config['service_id'] ?? null;
+
+ if ($customServiceId === null) {
+ throw new RuntimeException('service_id is required when propagator type is "service"');
+ }
+ $container->setAlias('flow.telemetry.propagator', $customServiceId);
+
+ break;
+
+ case 'w3c':
+ $container->setDefinition('flow.telemetry.propagator.tracecontext', new Definition(W3CTraceContext::class));
+ $container->setDefinition('flow.telemetry.propagator.baggage', new Definition(W3CBaggage::class));
+
+ $compositeDefinition = new Definition(CompositePropagator::class);
+ $compositeDefinition->setArgument(0, [
+ new Reference('flow.telemetry.propagator.tracecontext'),
+ new Reference('flow.telemetry.propagator.baggage'),
+ ]);
+ $container->setDefinition('flow.telemetry.propagator', $compositeDefinition);
+
+ break;
+
+ case 'tracecontext':
+ $container->setDefinition('flow.telemetry.propagator', new Definition(W3CTraceContext::class));
+
+ break;
+
+ case 'baggage':
+ $container->setDefinition('flow.telemetry.propagator', new Definition(W3CBaggage::class));
+
+ break;
+
+ default:
+ throw new RuntimeException(\sprintf('Unknown propagator type: %s', (string) $type));
+ }
+ }
+
+ /**
+ * @param array{detectors?: array{enabled?: bool, static?: array{cache?: array{enabled?: bool, path?: null|string}, os?: array{enabled?: bool}, host?: array{enabled?: bool}, service?: array{enabled?: bool}, deployment?: array{enabled?: bool}, environment?: array{enabled?: bool}}, dynamic?: array{process?: array{enabled?: bool}}}, custom?: array} $resourceConfig
+ */
+ private function registerResource(array $resourceConfig, ContainerBuilder $container) : void
+ {
+ $detectorsConfig = $resourceConfig['detectors'] ?? [];
+ $detectorsEnabled = $detectorsConfig['enabled'] ?? true;
+
+ if (!$detectorsEnabled) {
+ $customAttributes = $resourceConfig['custom'] ?? [];
+ $definition = new Definition(Resource::class);
+ $definition->setFactory([Resource::class, 'create']);
+ $definition->setArgument(0, $customAttributes);
+ $container->setDefinition('flow.telemetry.resource', $definition);
+
+ return;
+ }
+
+ $staticConfig = $detectorsConfig['static'] ?? [];
+ $dynamicConfig = $detectorsConfig['dynamic'] ?? [];
+ $customAttributes = $resourceConfig['custom'] ?? [];
+
+ $staticDetectorRefs = [];
+
+ if ($staticConfig['os']['enabled'] ?? true) {
+ $container->setDefinition(
+ 'flow.telemetry.resource.detector.os',
+ new Definition(OsDetector::class)
+ );
+ $staticDetectorRefs[] = new Reference('flow.telemetry.resource.detector.os');
+ }
+
+ if ($staticConfig['host']['enabled'] ?? true) {
+ $container->setDefinition(
+ 'flow.telemetry.resource.detector.host',
+ new Definition(HostDetector::class)
+ );
+ $staticDetectorRefs[] = new Reference('flow.telemetry.resource.detector.host');
+ }
+
+ if ($staticConfig['service']['enabled'] ?? true) {
+ $composerDefinition = new Definition(ComposerDetector::class);
+ $composerDefinition->setArgument(0, '%kernel.project_dir%/composer.json');
+ $container->setDefinition('flow.telemetry.resource.detector.service', $composerDefinition);
+ $staticDetectorRefs[] = new Reference('flow.telemetry.resource.detector.service');
+ }
+
+ if ($staticConfig['deployment']['enabled'] ?? true) {
+ $deploymentDefinition = new Definition(SymfonyDeploymentDetector::class);
+ $deploymentDefinition->setArgument(0, '%kernel.environment%');
+ $container->setDefinition('flow.telemetry.resource.detector.deployment', $deploymentDefinition);
+ $staticDetectorRefs[] = new Reference('flow.telemetry.resource.detector.deployment');
+ }
+
+ if (\count($customAttributes) > 0) {
+ $manualDefinition = new Definition(ManualDetector::class);
+ $manualDefinition->setArgument(0, $customAttributes);
+ $container->setDefinition('flow.telemetry.resource.detector.custom', $manualDefinition);
+ $staticDetectorRefs[] = new Reference('flow.telemetry.resource.detector.custom');
+ }
+
+ if ($staticConfig['environment']['enabled'] ?? true) {
+ $container->setDefinition(
+ 'flow.telemetry.resource.detector.environment',
+ new Definition(EnvironmentDetector::class)
+ );
+ $staticDetectorRefs[] = new Reference('flow.telemetry.resource.detector.environment');
+ }
+
+ $staticChainDefinition = new Definition(ChainDetector::class);
+ $staticChainDefinition->setArguments($staticDetectorRefs);
+ $container->setDefinition('flow.telemetry.resource.detector.static.chain', $staticChainDefinition);
+
+ $cacheConfig = $staticConfig['cache'] ?? [];
+ $cacheEnabled = $cacheConfig['enabled'] ?? true;
+
+ if ($cacheEnabled) {
+ $cachePath = $cacheConfig['path'] ?? '%kernel.cache_dir%/flow_telemetry_resource.cache';
+ $cachingDefinition = new Definition(CachingDetector::class);
+ $cachingDefinition->setArgument(0, new Reference('flow.telemetry.resource.detector.static.chain'));
+ $cachingDefinition->setArgument(1, $cachePath);
+ $container->setDefinition('flow.telemetry.resource.detector.static', $cachingDefinition);
+ } else {
+ $container->setAlias('flow.telemetry.resource.detector.static', 'flow.telemetry.resource.detector.static.chain');
+ }
+
+ $dynamicDetectorRefs = [];
+
+ if ($dynamicConfig['process']['enabled'] ?? true) {
+ $container->setDefinition(
+ 'flow.telemetry.resource.detector.process',
+ new Definition(ProcessDetector::class)
+ );
+ $dynamicDetectorRefs[] = new Reference('flow.telemetry.resource.detector.process');
+ }
+
+ if (\count($dynamicDetectorRefs) > 0) {
+ $dynamicChainDefinition = new Definition(ChainDetector::class);
+ $dynamicChainDefinition->setArguments($dynamicDetectorRefs);
+ $container->setDefinition('flow.telemetry.resource.detector.dynamic', $dynamicChainDefinition);
+
+ $finalChainDefinition = new Definition(ChainDetector::class);
+ $finalChainDefinition->setArguments([
+ new Reference('flow.telemetry.resource.detector.static'),
+ new Reference('flow.telemetry.resource.detector.dynamic'),
+ ]);
+ $container->setDefinition('flow.telemetry.resource.detector', $finalChainDefinition);
+ } else {
+ $container->setAlias('flow.telemetry.resource.detector', 'flow.telemetry.resource.detector.static');
+ }
+
+ $resourceDefinition = new Definition(Resource::class);
+ $resourceDefinition->setFactory([new Reference('flow.telemetry.resource.detector'), 'detect']);
+ $container->setDefinition('flow.telemetry.resource', $resourceDefinition);
+ }
+
+ /**
+ * @param array $config
+ */
+ private function registerTelemetry(array $config, ContainerBuilder $container) : void
+ {
+ $tracerProviderServiceId = $this->buildTracerProvider($config['tracer_provider'] ?? [], $container);
+ $meterProviderServiceId = $this->buildMeterProvider($config['meter_provider'] ?? [], $container);
+ $loggerProviderServiceId = $this->buildLoggerProvider($config['logger_provider'] ?? [], $container);
+
+ $telemetryServiceId = 'flow.telemetry';
+ $definition = new Definition(Telemetry::class);
+ $definition->setArgument(0, new Reference('flow.telemetry.resource'));
+ $definition->setArgument(1, new Reference($tracerProviderServiceId));
+ $definition->setArgument(2, new Reference($meterProviderServiceId));
+ $definition->setArgument(3, new Reference($loggerProviderServiceId));
+ $definition->setPublic(true);
+ $container->setDefinition($telemetryServiceId, $definition);
+
+ $container->setAlias(Telemetry::class, $telemetryServiceId)->setPublic(true);
+ }
+
+ /**
+ * @param array}> $config
+ */
+ private function registerTracers(array $config, ContainerBuilder $container) : void
+ {
+ foreach ($config as $name => $tracerConfig) {
+ $definition = new Definition(Tracer::class);
+ $definition->setFactory([new Reference('flow.telemetry'), 'tracer']);
+ $definition->setArgument(0, $name);
+ $definition->setArgument(1, $tracerConfig['version'] ?? 'unknown');
+ $definition->setArgument(2, $tracerConfig['schema_url'] ?? null);
+
+ $attributes = $tracerConfig['attributes'] ?? [];
+
+ if (\count($attributes) > 0) {
+ $attributesDefinition = new Definition(Attributes::class);
+ $attributesDefinition->setFactory([Attributes::class, 'create']);
+ $attributesDefinition->setArgument(0, $attributes);
+ $definition->setArgument(3, $attributesDefinition);
+ } else {
+ $definition->setArgument(3, null);
+ }
+
+ $definition->setPublic(true);
+ $container->setDefinition('flow.telemetry.' . $name . '.tracer', $definition);
+ }
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Exception/Exception.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Exception/Exception.php
new file mode 100644
index 0000000000..cb8150f8ba
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Exception/Exception.php
@@ -0,0 +1,9 @@
+addCompilerPass(new OTLPAvailabilityPass());
+
+ if (\interface_exists(self::HTTP_CLIENT_INTERFACE)) {
+ $container->addCompilerPass(new HttpClientTelemetryPass());
+ }
+
+ if (\interface_exists(self::PSR18_CLIENT_INTERFACE) && \class_exists(self::PSR18_TRACEABLE_CLIENT)) {
+ $container->addCompilerPass(new Psr18ClientTelemetryPass());
+ }
+
+ if (\interface_exists(self::DBAL_MIDDLEWARE_INTERFACE)) {
+ $container->addCompilerPass(new DBALTelemetryPass());
+ }
+
+ if (\interface_exists(self::CACHE_ADAPTER_INTERFACE)) {
+ $container->addCompilerPass(new CacheTelemetryPass());
+ }
+ }
+}
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
new file mode 100644
index 0000000000..9458c7bcb3
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Cache/TagAwareTraceableCacheAdapter.php
@@ -0,0 +1,455 @@
+tracer = $this->telemetry->tracer('flow.symfony.cache', PackageVersion::get('symfony/cache'));
+ }
+
+ public function clear(string $prefix = '') : bool
+ {
+ $attributes = [
+ 'cache.operation' => 'clear',
+ 'cache.pool' => $this->poolName,
+ ];
+
+ if ($prefix !== '') {
+ $attributes['cache.prefix'] = $prefix;
+ }
+
+ $span = $this->tracer->span('cache clear', SpanKind::CLIENT, $attributes);
+
+ try {
+ $result = $this->adapter->clear($prefix);
+ $span->setStatus(SpanStatus::ok());
+
+ return $result;
+ } catch (\Throwable $exception) {
+ $span->recordException($exception, new \DateTimeImmutable());
+ $span->setStatus(SpanStatus::error($exception->getMessage()));
+
+ throw $exception;
+ } finally {
+ $this->tracer->complete($span);
+ }
+ }
+
+ public function commit() : bool
+ {
+ $span = $this->tracer->span(
+ 'cache commit',
+ SpanKind::CLIENT,
+ [
+ 'cache.operation' => 'commit',
+ 'cache.pool' => $this->poolName,
+ ]
+ );
+
+ try {
+ $result = $this->adapter->commit();
+ $span->setStatus(SpanStatus::ok());
+
+ return $result;
+ } 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) : bool
+ {
+ if (!$this->adapter instanceof TagAwareCacheInterface) {
+ throw new \BadMethodCallException(\sprintf('The adapter "%s" does not implement "%s".', $this->adapter::class, TagAwareCacheInterface::class));
+ }
+
+ $span = $this->tracer->span(
+ 'cache delete',
+ SpanKind::CLIENT,
+ [
+ 'cache.operation' => 'delete',
+ 'cache.pool' => $this->poolName,
+ 'cache.key' => $key,
+ ]
+ );
+
+ try {
+ $result = $this->adapter->delete($key);
+ $span->setStatus(SpanStatus::ok());
+
+ return $result;
+ } catch (\Throwable $exception) {
+ $span->recordException($exception, new \DateTimeImmutable());
+ $span->setStatus(SpanStatus::error($exception->getMessage()));
+
+ throw $exception;
+ } finally {
+ $this->tracer->complete($span);
+ }
+ }
+
+ public function deleteItem(mixed $key) : bool
+ {
+ $span = $this->tracer->span(
+ 'cache deleteItem',
+ SpanKind::CLIENT,
+ [
+ 'cache.operation' => 'deleteItem',
+ 'cache.pool' => $this->poolName,
+ 'cache.key' => $key,
+ ]
+ );
+
+ try {
+ $result = $this->adapter->deleteItem($key);
+ $span->setStatus(SpanStatus::ok());
+
+ return $result;
+ } catch (\Throwable $exception) {
+ $span->recordException($exception, new \DateTimeImmutable());
+ $span->setStatus(SpanStatus::error($exception->getMessage()));
+
+ throw $exception;
+ } finally {
+ $this->tracer->complete($span);
+ }
+ }
+
+ /**
+ * @param array $keys
+ */
+ public function deleteItems(array $keys) : bool
+ {
+ $span = $this->tracer->span(
+ 'cache deleteItems',
+ SpanKind::CLIENT,
+ [
+ 'cache.operation' => 'deleteItems',
+ 'cache.pool' => $this->poolName,
+ 'cache.key_count' => \count($keys),
+ ]
+ );
+
+ try {
+ $result = $this->adapter->deleteItems($keys);
+ $span->setStatus(SpanStatus::ok());
+
+ return $result;
+ } catch (\Throwable $exception) {
+ $span->recordException($exception, new \DateTimeImmutable());
+ $span->setStatus(SpanStatus::error($exception->getMessage()));
+
+ throw $exception;
+ } finally {
+ $this->tracer->complete($span);
+ }
+ }
+
+ /**
+ * @param null|array $metadata
+ */
+ public function get(string $key, callable $callback, ?float $beta = null, ?array &$metadata = null) : mixed
+ {
+ if (!$this->adapter instanceof TagAwareCacheInterface) {
+ 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;
+
+ 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()));
+
+ throw $exception;
+ } finally {
+ $this->tracer->complete($span);
+ }
+ }
+
+ public function getItem(mixed $key) : CacheItem
+ {
+ $span = $this->tracer->span(
+ 'cache getItem',
+ SpanKind::CLIENT,
+ [
+ 'cache.operation' => 'getItem',
+ 'cache.pool' => $this->poolName,
+ 'cache.key' => $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);
+ }
+ }
+
+ /**
+ * @param array $keys
+ *
+ * @return iterable
+ */
+ public function getItems(array $keys = []) : iterable
+ {
+ $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++;
+ }
+ }
+
+ $span->setAttribute('cache.hits', $hits);
+ $span->setAttribute('cache.misses', $misses);
+ $span->setStatus(SpanStatus::ok());
+
+ return $itemsArray;
+ } catch (\Throwable $exception) {
+ $span->recordException($exception, new \DateTimeImmutable());
+ $span->setStatus(SpanStatus::error($exception->getMessage()));
+
+ throw $exception;
+ } finally {
+ $this->tracer->complete($span);
+ }
+ }
+
+ public function hasItem(mixed $key) : bool
+ {
+ $span = $this->tracer->span(
+ 'cache hasItem',
+ SpanKind::CLIENT,
+ [
+ 'cache.operation' => 'hasItem',
+ 'cache.pool' => $this->poolName,
+ 'cache.key' => $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);
+ }
+ }
+
+ /**
+ * @param array $tags
+ */
+ public function invalidateTags(array $tags) : bool
+ {
+ $span = $this->tracer->span(
+ 'cache invalidateTags',
+ SpanKind::CLIENT,
+ [
+ 'cache.operation' => 'invalidateTags',
+ 'cache.pool' => $this->poolName,
+ 'cache.tags' => $tags,
+ 'cache.tag_count' => \count($tags),
+ ]
+ );
+
+ try {
+ $result = $this->adapter->invalidateTags($tags);
+ $span->setStatus(SpanStatus::ok());
+
+ return $result;
+ } catch (\Throwable $exception) {
+ $span->recordException($exception, new \DateTimeImmutable());
+ $span->setStatus(SpanStatus::error($exception->getMessage()));
+
+ throw $exception;
+ } finally {
+ $this->tracer->complete($span);
+ }
+ }
+
+ public function prune() : bool
+ {
+ if (!$this->adapter instanceof PruneableInterface) {
+ return false;
+ }
+
+ $span = $this->tracer->span(
+ 'cache prune',
+ SpanKind::CLIENT,
+ [
+ 'cache.operation' => 'prune',
+ 'cache.pool' => $this->poolName,
+ ]
+ );
+
+ try {
+ $result = $this->adapter->prune();
+ $span->setStatus(SpanStatus::ok());
+
+ return $result;
+ } catch (\Throwable $exception) {
+ $span->recordException($exception, new \DateTimeImmutable());
+ $span->setStatus(SpanStatus::error($exception->getMessage()));
+
+ throw $exception;
+ } finally {
+ $this->tracer->complete($span);
+ }
+ }
+
+ public function reset() : void
+ {
+ if (!$this->adapter instanceof ResettableInterface) {
+ return;
+ }
+
+ $span = $this->tracer->span(
+ 'cache reset',
+ SpanKind::CLIENT,
+ [
+ 'cache.operation' => 'reset',
+ 'cache.pool' => $this->poolName,
+ ]
+ );
+
+ try {
+ $this->adapter->reset();
+ $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 save(CacheItemInterface $item) : bool
+ {
+ $span = $this->tracer->span(
+ 'cache save',
+ SpanKind::CLIENT,
+ [
+ 'cache.operation' => 'save',
+ 'cache.pool' => $this->poolName,
+ 'cache.key' => $item->getKey(),
+ ]
+ );
+
+ try {
+ $result = $this->adapter->save($item);
+ $span->setStatus(SpanStatus::ok());
+
+ return $result;
+ } catch (\Throwable $exception) {
+ $span->recordException($exception, new \DateTimeImmutable());
+ $span->setStatus(SpanStatus::error($exception->getMessage()));
+
+ throw $exception;
+ } finally {
+ $this->tracer->complete($span);
+ }
+ }
+
+ public function saveDeferred(CacheItemInterface $item) : bool
+ {
+ $span = $this->tracer->span(
+ 'cache saveDeferred',
+ SpanKind::CLIENT,
+ [
+ 'cache.operation' => 'saveDeferred',
+ 'cache.pool' => $this->poolName,
+ 'cache.key' => $item->getKey(),
+ ]
+ );
+
+ try {
+ $result = $this->adapter->saveDeferred($item);
+ $span->setStatus(SpanStatus::ok());
+
+ return $result;
+ } 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/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
new file mode 100644
index 0000000000..65746a582b
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Cache/TraceableCacheAdapter.php
@@ -0,0 +1,424 @@
+tracer = $this->telemetry->tracer('flow.symfony.cache', PackageVersion::get('symfony/cache'));
+ }
+
+ public function clear(string $prefix = '') : bool
+ {
+ $attributes = [
+ 'cache.operation' => 'clear',
+ 'cache.pool' => $this->poolName,
+ ];
+
+ if ($prefix !== '') {
+ $attributes['cache.prefix'] = $prefix;
+ }
+
+ $span = $this->tracer->span('cache clear', SpanKind::CLIENT, $attributes);
+
+ try {
+ $result = $this->adapter->clear($prefix);
+ $span->setStatus(SpanStatus::ok());
+
+ return $result;
+ } catch (\Throwable $exception) {
+ $span->recordException($exception, new \DateTimeImmutable());
+ $span->setStatus(SpanStatus::error($exception->getMessage()));
+
+ throw $exception;
+ } finally {
+ $this->tracer->complete($span);
+ }
+ }
+
+ public function commit() : bool
+ {
+ $span = $this->tracer->span(
+ 'cache commit',
+ SpanKind::CLIENT,
+ [
+ 'cache.operation' => 'commit',
+ 'cache.pool' => $this->poolName,
+ ]
+ );
+
+ try {
+ $result = $this->adapter->commit();
+ $span->setStatus(SpanStatus::ok());
+
+ return $result;
+ } 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) : bool
+ {
+ if (!$this->adapter instanceof CacheInterface) {
+ throw new \BadMethodCallException(\sprintf('The adapter "%s" does not implement "%s".', $this->adapter::class, CacheInterface::class));
+ }
+
+ $span = $this->tracer->span(
+ 'cache delete',
+ SpanKind::CLIENT,
+ [
+ 'cache.operation' => 'delete',
+ 'cache.pool' => $this->poolName,
+ 'cache.key' => $key,
+ ]
+ );
+
+ try {
+ $result = $this->adapter->delete($key);
+ $span->setStatus(SpanStatus::ok());
+
+ return $result;
+ } catch (\Throwable $exception) {
+ $span->recordException($exception, new \DateTimeImmutable());
+ $span->setStatus(SpanStatus::error($exception->getMessage()));
+
+ throw $exception;
+ } finally {
+ $this->tracer->complete($span);
+ }
+ }
+
+ public function deleteItem(mixed $key) : bool
+ {
+ $span = $this->tracer->span(
+ 'cache deleteItem',
+ SpanKind::CLIENT,
+ [
+ 'cache.operation' => 'deleteItem',
+ 'cache.pool' => $this->poolName,
+ 'cache.key' => $key,
+ ]
+ );
+
+ try {
+ $result = $this->adapter->deleteItem($key);
+ $span->setStatus(SpanStatus::ok());
+
+ return $result;
+ } catch (\Throwable $exception) {
+ $span->recordException($exception, new \DateTimeImmutable());
+ $span->setStatus(SpanStatus::error($exception->getMessage()));
+
+ throw $exception;
+ } finally {
+ $this->tracer->complete($span);
+ }
+ }
+
+ /**
+ * @param array $keys
+ */
+ public function deleteItems(array $keys) : bool
+ {
+ $span = $this->tracer->span(
+ 'cache deleteItems',
+ SpanKind::CLIENT,
+ [
+ 'cache.operation' => 'deleteItems',
+ 'cache.pool' => $this->poolName,
+ 'cache.key_count' => \count($keys),
+ ]
+ );
+
+ try {
+ $result = $this->adapter->deleteItems($keys);
+ $span->setStatus(SpanStatus::ok());
+
+ return $result;
+ } catch (\Throwable $exception) {
+ $span->recordException($exception, new \DateTimeImmutable());
+ $span->setStatus(SpanStatus::error($exception->getMessage()));
+
+ throw $exception;
+ } finally {
+ $this->tracer->complete($span);
+ }
+ }
+
+ /**
+ * @param null|array $metadata
+ */
+ public function get(string $key, callable $callback, ?float $beta = null, ?array &$metadata = null) : mixed
+ {
+ if (!$this->adapter instanceof CacheInterface) {
+ 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;
+
+ 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()));
+
+ throw $exception;
+ } finally {
+ $this->tracer->complete($span);
+ }
+ }
+
+ public function getItem(mixed $key) : CacheItem
+ {
+ $span = $this->tracer->span(
+ 'cache getItem',
+ SpanKind::CLIENT,
+ [
+ 'cache.operation' => 'getItem',
+ 'cache.pool' => $this->poolName,
+ 'cache.key' => $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);
+ }
+ }
+
+ /**
+ * @param array $keys
+ *
+ * @return iterable
+ */
+ public function getItems(array $keys = []) : iterable
+ {
+ $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++;
+ }
+ }
+
+ $span->setAttribute('cache.hits', $hits);
+ $span->setAttribute('cache.misses', $misses);
+ $span->setStatus(SpanStatus::ok());
+
+ return $itemsArray;
+ } catch (\Throwable $exception) {
+ $span->recordException($exception, new \DateTimeImmutable());
+ $span->setStatus(SpanStatus::error($exception->getMessage()));
+
+ throw $exception;
+ } finally {
+ $this->tracer->complete($span);
+ }
+ }
+
+ public function hasItem(mixed $key) : bool
+ {
+ $span = $this->tracer->span(
+ 'cache hasItem',
+ SpanKind::CLIENT,
+ [
+ 'cache.operation' => 'hasItem',
+ 'cache.pool' => $this->poolName,
+ 'cache.key' => $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);
+ }
+ }
+
+ public function prune() : bool
+ {
+ if (!$this->adapter instanceof PruneableInterface) {
+ return false;
+ }
+
+ $span = $this->tracer->span(
+ 'cache prune',
+ SpanKind::CLIENT,
+ [
+ 'cache.operation' => 'prune',
+ 'cache.pool' => $this->poolName,
+ ]
+ );
+
+ try {
+ $result = $this->adapter->prune();
+ $span->setStatus(SpanStatus::ok());
+
+ return $result;
+ } catch (\Throwable $exception) {
+ $span->recordException($exception, new \DateTimeImmutable());
+ $span->setStatus(SpanStatus::error($exception->getMessage()));
+
+ throw $exception;
+ } finally {
+ $this->tracer->complete($span);
+ }
+ }
+
+ public function reset() : void
+ {
+ if (!$this->adapter instanceof ResettableInterface) {
+ return;
+ }
+
+ $span = $this->tracer->span(
+ 'cache reset',
+ SpanKind::CLIENT,
+ [
+ 'cache.operation' => 'reset',
+ 'cache.pool' => $this->poolName,
+ ]
+ );
+
+ try {
+ $this->adapter->reset();
+ $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 save(CacheItemInterface $item) : bool
+ {
+ $span = $this->tracer->span(
+ 'cache save',
+ SpanKind::CLIENT,
+ [
+ 'cache.operation' => 'save',
+ 'cache.pool' => $this->poolName,
+ 'cache.key' => $item->getKey(),
+ ]
+ );
+
+ try {
+ $result = $this->adapter->save($item);
+ $span->setStatus(SpanStatus::ok());
+
+ return $result;
+ } catch (\Throwable $exception) {
+ $span->recordException($exception, new \DateTimeImmutable());
+ $span->setStatus(SpanStatus::error($exception->getMessage()));
+
+ throw $exception;
+ } finally {
+ $this->tracer->complete($span);
+ }
+ }
+
+ public function saveDeferred(CacheItemInterface $item) : bool
+ {
+ $span = $this->tracer->span(
+ 'cache saveDeferred',
+ SpanKind::CLIENT,
+ [
+ 'cache.operation' => 'saveDeferred',
+ 'cache.pool' => $this->poolName,
+ 'cache.key' => $item->getKey(),
+ ]
+ );
+
+ try {
+ $result = $this->adapter->saveDeferred($item);
+ $span->setStatus(SpanStatus::ok());
+
+ return $result;
+ } 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/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Console/ConsoleFlushSubscriber.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Console/ConsoleFlushSubscriber.php
new file mode 100644
index 0000000000..dc8d584a89
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Console/ConsoleFlushSubscriber.php
@@ -0,0 +1,30 @@
+ ['onTerminate', -20000],
+ ];
+ }
+
+ public function onTerminate(ConsoleTerminateEvent $event) : void
+ {
+ $this->telemetry->shutdown();
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Console/ConsoleSpanSubscriber.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Console/ConsoleSpanSubscriber.php
new file mode 100644
index 0000000000..70e02e0581
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Console/ConsoleSpanSubscriber.php
@@ -0,0 +1,122 @@
+ $excludeCommands
+ */
+ public function __construct(
+ private readonly Telemetry $telemetry,
+ private readonly array $excludeCommands = [],
+ ) {
+ }
+
+ public static function getSubscribedEvents() : array
+ {
+ return [
+ ConsoleEvents::COMMAND => ['onCommand', 10000],
+ ConsoleEvents::ERROR => ['onError', 0],
+ ConsoleEvents::TERMINATE => ['onTerminate', -10000],
+ ConsoleEvents::SIGNAL => ['onSignal', 0],
+ ];
+ }
+
+ public function onCommand(ConsoleCommandEvent $event) : void
+ {
+ $command = $event->getCommand();
+ $commandName = $command?->getName() ?? 'unknown';
+
+ if (!$this->shouldTrace($commandName)) {
+ return;
+ }
+
+ $this->tracer = $this->telemetry->tracer('flow.symfony.console', PackageVersion::get('symfony/console'));
+
+ $attributes = [
+ 'command.name' => $commandName,
+ ];
+
+ if ($command !== null) {
+ $attributes['command.class'] = $command::class;
+ }
+
+ $this->span = $this->tracer->span(
+ $commandName,
+ SpanKind::INTERNAL,
+ $attributes,
+ );
+ }
+
+ public function onError(ConsoleErrorEvent $event) : void
+ {
+ if ($this->span === null) {
+ return;
+ }
+
+ $this->span->recordException($event->getError(), new \DateTimeImmutable());
+ }
+
+ public function onSignal(ConsoleSignalEvent $event) : void
+ {
+ if ($this->span === null) {
+ return;
+ }
+
+ $this->span->setAttribute('process.signal', $event->getHandlingSignal());
+ }
+
+ public function onTerminate(ConsoleTerminateEvent $event) : void
+ {
+ if ($this->span === null || $this->tracer === null) {
+ return;
+ }
+
+ $exitCode = $event->getExitCode();
+ $this->span->setAttribute('process.exit_code', $exitCode);
+
+ if ($exitCode === 0) {
+ $this->span->setStatus(SpanStatus::ok());
+ } else {
+ $this->span->setStatus(SpanStatus::error("Exit code: {$exitCode}"));
+ }
+
+ $this->tracer->complete($this->span);
+
+ $this->span = null;
+ $this->tracer = null;
+ }
+
+ private function matchesPattern(string $command, string $pattern) : bool
+ {
+ if (\str_starts_with($pattern, '/') && \str_ends_with($pattern, '/')) {
+ return (bool) \preg_match($pattern, $command);
+ }
+
+ return $command === $pattern;
+ }
+
+ private function shouldTrace(string $commandName) : bool
+ {
+ foreach ($this->excludeCommands as $pattern) {
+ if ($this->matchesPattern($commandName, $pattern)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/TracingMiddleware.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/TracingMiddleware.php
new file mode 100644
index 0000000000..6e6b0c8724
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/TracingMiddleware.php
@@ -0,0 +1,35 @@
+driverClass)(
+ $this->telemetry,
+ $driver,
+ $this->connectionName,
+ $this->logSql,
+ $this->maxSqlLength,
+ );
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V3/TracingConnection.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V3/TracingConnection.php
new file mode 100644
index 0000000000..f681a602ef
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V3/TracingConnection.php
@@ -0,0 +1,191 @@
+telemetry->tracer('flow.symfony.dbal', PackageVersion::get('doctrine/dbal'));
+
+ $span = $tracer->span('doctrine.dbal.transaction.begin', SpanKind::CLIENT);
+
+ try {
+ $result = parent::beginTransaction();
+
+ $span->setStatus(SpanStatus::ok());
+
+ return $result;
+ } catch (\Throwable $exception) {
+ $span->recordException($exception, new \DateTimeImmutable());
+ $span->setStatus(SpanStatus::error($exception->getMessage()));
+
+ throw $exception;
+ } finally {
+ $tracer->complete($span);
+ }
+ }
+
+ #[\Override]
+ public function commit() : bool
+ {
+ $tracer = $this->telemetry->tracer('flow.symfony.dbal', PackageVersion::get('doctrine/dbal'));
+
+ $span = $tracer->span('doctrine.dbal.transaction.commit', SpanKind::CLIENT);
+
+ try {
+ $result = parent::commit();
+
+ $span->setStatus(SpanStatus::ok());
+
+ return $result;
+ } catch (\Throwable $exception) {
+ $span->recordException($exception, new \DateTimeImmutable());
+ $span->setStatus(SpanStatus::error($exception->getMessage()));
+
+ throw $exception;
+ } finally {
+ $tracer->complete($span);
+ }
+ }
+
+ #[\Override]
+ public function exec(string $sql) : int
+ {
+ $tracer = $this->telemetry->tracer('flow.symfony.dbal', PackageVersion::get('doctrine/dbal'));
+
+ $attributes = [];
+
+ if ($this->logSql) {
+ $attributes['db.query.text'] = $this->truncateSql($sql);
+ }
+
+ $span = $tracer->span('doctrine.dbal.connection.exec', SpanKind::CLIENT, $attributes);
+
+ try {
+ $result = parent::exec($sql);
+
+ $span->setStatus(SpanStatus::ok());
+
+ return $result;
+ } catch (\Throwable $exception) {
+ $span->recordException($exception, new \DateTimeImmutable());
+ $span->setStatus(SpanStatus::error($exception->getMessage()));
+
+ throw $exception;
+ } finally {
+ $tracer->complete($span);
+ }
+ }
+
+ #[\Override]
+ public function prepare(string $sql) : DriverStatement
+ {
+ $tracer = $this->telemetry->tracer('flow.symfony.dbal', PackageVersion::get('doctrine/dbal'));
+
+ $attributes = [];
+
+ if ($this->logSql) {
+ $attributes['db.query.text'] = $this->truncateSql($sql);
+ }
+
+ $span = $tracer->span('doctrine.dbal.statement.prepare', SpanKind::CLIENT, $attributes);
+
+ try {
+ $statement = parent::prepare($sql);
+
+ $span->setStatus(SpanStatus::ok());
+
+ return new TracingStatement($statement, $this->telemetry);
+ } catch (\Throwable $exception) {
+ $span->recordException($exception, new \DateTimeImmutable());
+ $span->setStatus(SpanStatus::error($exception->getMessage()));
+
+ throw $exception;
+ } finally {
+ $tracer->complete($span);
+ }
+ }
+
+ #[\Override]
+ public function query(string $sql) : Result
+ {
+ $tracer = $this->telemetry->tracer('flow.symfony.dbal', PackageVersion::get('doctrine/dbal'));
+
+ $attributes = [];
+
+ if ($this->logSql) {
+ $attributes['db.query.text'] = $this->truncateSql($sql);
+ }
+
+ $span = $tracer->span('doctrine.dbal.connection.query', SpanKind::CLIENT, $attributes);
+
+ try {
+ $result = parent::query($sql);
+
+ $span->setStatus(SpanStatus::ok());
+
+ return $result;
+ } catch (\Throwable $exception) {
+ $span->recordException($exception, new \DateTimeImmutable());
+ $span->setStatus(SpanStatus::error($exception->getMessage()));
+
+ throw $exception;
+ } finally {
+ $tracer->complete($span);
+ }
+ }
+
+ #[\Override]
+ public function rollBack() : bool
+ {
+ $tracer = $this->telemetry->tracer('flow.symfony.dbal', PackageVersion::get('doctrine/dbal'));
+
+ $span = $tracer->span('doctrine.dbal.transaction.rollback', SpanKind::CLIENT);
+
+ try {
+ $result = parent::rollBack();
+
+ $span->setStatus(SpanStatus::ok());
+
+ return $result;
+ } catch (\Throwable $exception) {
+ $span->recordException($exception, new \DateTimeImmutable());
+ $span->setStatus(SpanStatus::error($exception->getMessage()));
+
+ throw $exception;
+ } finally {
+ $tracer->complete($span);
+ }
+ }
+
+ private function truncateSql(string $sql) : string
+ {
+ if ($this->maxSqlLength <= 0) {
+ return $sql;
+ }
+
+ if (\mb_strlen($sql) <= $this->maxSqlLength) {
+ return $sql;
+ }
+
+ return \mb_substr($sql, 0, $this->maxSqlLength) . '...';
+ }
+}
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
new file mode 100644
index 0000000000..10f81affa0
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V3/TracingDriver.php
@@ -0,0 +1,100 @@
+telemetry->tracer('flow.symfony.dbal', PackageVersion::get('doctrine/dbal'));
+
+ $span = $tracer->span(
+ 'doctrine.dbal.connection',
+ SpanKind::CLIENT,
+ [
+ 'db.system' => $this->getSemanticDbSystem(),
+ 'db.namespace' => $params['dbname'] ?? 'default',
+ 'db.connection.name' => $this->connectionName,
+ ]
+ );
+
+ try {
+ $connection = parent::connect($params);
+
+ $span->setStatus(SpanStatus::ok());
+
+ return new TracingConnection(
+ $connection,
+ $this->telemetry,
+ $this->logSql,
+ $this->maxSqlLength,
+ );
+ } catch (\Throwable $exception) {
+ $span->recordException($exception, new \DateTimeImmutable());
+ $span->setStatus(SpanStatus::error($exception->getMessage()));
+
+ throw $exception;
+ } finally {
+ $tracer->complete($span);
+ }
+ }
+
+ private function getSemanticDbSystem() : string
+ {
+ $platform = $this->getDatabasePlatform();
+
+ if ($platform instanceof AbstractMySQLPlatform) {
+ return 'mysql';
+ }
+
+ if ($platform instanceof PostgreSQLPlatform) {
+ return 'postgresql';
+ }
+
+ if ($platform instanceof SqlitePlatform) {
+ return 'sqlite';
+ }
+
+ if ($platform instanceof SQLServerPlatform) {
+ return 'mssql';
+ }
+
+ if ($platform instanceof OraclePlatform) {
+ return 'oracle';
+ }
+
+ if ($platform instanceof DB2Platform) {
+ return 'db2';
+ }
+
+ return 'other_sql';
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V3/TracingStatement.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V3/TracingStatement.php
new file mode 100644
index 0000000000..9c3a3ba5ed
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V3/TracingStatement.php
@@ -0,0 +1,46 @@
+ $params
+ */
+ #[\Override]
+ public function execute($params = null) : Result
+ {
+ $tracer = $this->telemetry->tracer('flow.symfony.dbal', PackageVersion::get('doctrine/dbal'));
+
+ $span = $tracer->span('doctrine.dbal.statement.execute', SpanKind::CLIENT);
+
+ try {
+ $result = parent::execute($params);
+
+ $span->setStatus(SpanStatus::ok());
+
+ return $result;
+ } catch (\Throwable $exception) {
+ $span->recordException($exception, new \DateTimeImmutable());
+ $span->setStatus(SpanStatus::error($exception->getMessage()));
+
+ throw $exception;
+ } finally {
+ $tracer->complete($span);
+ }
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V4/TracingConnection.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V4/TracingConnection.php
new file mode 100644
index 0000000000..3a6e0e9ae0
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V4/TracingConnection.php
@@ -0,0 +1,185 @@
+telemetry->tracer('flow.symfony.dbal', PackageVersion::get('doctrine/dbal'));
+
+ $span = $tracer->span('doctrine.dbal.transaction.begin', SpanKind::CLIENT);
+
+ try {
+ parent::beginTransaction();
+
+ $span->setStatus(SpanStatus::ok());
+ } catch (\Throwable $exception) {
+ $span->recordException($exception, new \DateTimeImmutable());
+ $span->setStatus(SpanStatus::error($exception->getMessage()));
+
+ throw $exception;
+ } finally {
+ $tracer->complete($span);
+ }
+ }
+
+ #[\Override]
+ public function commit() : void
+ {
+ $tracer = $this->telemetry->tracer('flow.symfony.dbal', PackageVersion::get('doctrine/dbal'));
+
+ $span = $tracer->span('doctrine.dbal.transaction.commit', SpanKind::CLIENT);
+
+ try {
+ parent::commit();
+
+ $span->setStatus(SpanStatus::ok());
+ } catch (\Throwable $exception) {
+ $span->recordException($exception, new \DateTimeImmutable());
+ $span->setStatus(SpanStatus::error($exception->getMessage()));
+
+ throw $exception;
+ } finally {
+ $tracer->complete($span);
+ }
+ }
+
+ #[\Override]
+ public function exec(string $sql) : int|string
+ {
+ $tracer = $this->telemetry->tracer('flow.symfony.dbal', PackageVersion::get('doctrine/dbal'));
+
+ $attributes = [];
+
+ if ($this->logSql) {
+ $attributes['db.query.text'] = $this->truncateSql($sql);
+ }
+
+ $span = $tracer->span('doctrine.dbal.connection.exec', SpanKind::CLIENT, $attributes);
+
+ try {
+ $result = parent::exec($sql);
+
+ $span->setStatus(SpanStatus::ok());
+
+ return $result;
+ } catch (\Throwable $exception) {
+ $span->recordException($exception, new \DateTimeImmutable());
+ $span->setStatus(SpanStatus::error($exception->getMessage()));
+
+ throw $exception;
+ } finally {
+ $tracer->complete($span);
+ }
+ }
+
+ #[\Override]
+ public function prepare(string $sql) : DriverStatement
+ {
+ $tracer = $this->telemetry->tracer('flow.symfony.dbal', PackageVersion::get('doctrine/dbal'));
+
+ $attributes = [];
+
+ if ($this->logSql) {
+ $attributes['db.query.text'] = $this->truncateSql($sql);
+ }
+
+ $span = $tracer->span('doctrine.dbal.statement.prepare', SpanKind::CLIENT, $attributes);
+
+ try {
+ $statement = parent::prepare($sql);
+
+ $span->setStatus(SpanStatus::ok());
+
+ return new TracingStatement($statement, $this->telemetry);
+ } catch (\Throwable $exception) {
+ $span->recordException($exception, new \DateTimeImmutable());
+ $span->setStatus(SpanStatus::error($exception->getMessage()));
+
+ throw $exception;
+ } finally {
+ $tracer->complete($span);
+ }
+ }
+
+ #[\Override]
+ public function query(string $sql) : Result
+ {
+ $tracer = $this->telemetry->tracer('flow.symfony.dbal', PackageVersion::get('doctrine/dbal'));
+
+ $attributes = [];
+
+ if ($this->logSql) {
+ $attributes['db.query.text'] = $this->truncateSql($sql);
+ }
+
+ $span = $tracer->span('doctrine.dbal.connection.query', SpanKind::CLIENT, $attributes);
+
+ try {
+ $result = parent::query($sql);
+
+ $span->setStatus(SpanStatus::ok());
+
+ return $result;
+ } catch (\Throwable $exception) {
+ $span->recordException($exception, new \DateTimeImmutable());
+ $span->setStatus(SpanStatus::error($exception->getMessage()));
+
+ throw $exception;
+ } finally {
+ $tracer->complete($span);
+ }
+ }
+
+ #[\Override]
+ public function rollBack() : void
+ {
+ $tracer = $this->telemetry->tracer('flow.symfony.dbal', PackageVersion::get('doctrine/dbal'));
+
+ $span = $tracer->span('doctrine.dbal.transaction.rollback', SpanKind::CLIENT);
+
+ try {
+ parent::rollBack();
+
+ $span->setStatus(SpanStatus::ok());
+ } catch (\Throwable $exception) {
+ $span->recordException($exception, new \DateTimeImmutable());
+ $span->setStatus(SpanStatus::error($exception->getMessage()));
+
+ throw $exception;
+ } finally {
+ $tracer->complete($span);
+ }
+ }
+
+ private function truncateSql(string $sql) : string
+ {
+ if ($this->maxSqlLength <= 0) {
+ return $sql;
+ }
+
+ if (\mb_strlen($sql) <= $this->maxSqlLength) {
+ return $sql;
+ }
+
+ return \mb_substr($sql, 0, $this->maxSqlLength) . '...';
+ }
+}
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
new file mode 100644
index 0000000000..7ab49e2ddc
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V4/TracingDriver.php
@@ -0,0 +1,101 @@
+telemetry->tracer('flow.symfony.dbal', PackageVersion::get('doctrine/dbal'));
+
+ $span = $tracer->span(
+ 'doctrine.dbal.connection',
+ SpanKind::CLIENT,
+ [
+ 'db.namespace' => $params['dbname'] ?? 'default',
+ 'db.connection.name' => $this->connectionName,
+ ]
+ );
+
+ try {
+ $connection = parent::connect($params);
+
+ $span->setAttribute('db.system', $this->getSemanticDbSystem($connection->getServerVersion()));
+ $span->setStatus(SpanStatus::ok());
+
+ return new TracingConnection(
+ $connection,
+ $this->telemetry,
+ $this->logSql,
+ $this->maxSqlLength,
+ );
+ } catch (\Throwable $exception) {
+ $span->recordException($exception, new \DateTimeImmutable());
+ $span->setStatus(SpanStatus::error($exception->getMessage()));
+
+ throw $exception;
+ } finally {
+ $tracer->complete($span);
+ }
+ }
+
+ private function getSemanticDbSystem(string $serverVersion) : string
+ {
+ $platform = $this->getDatabasePlatform(new StaticServerVersionProvider($serverVersion));
+
+ if ($platform instanceof AbstractMySQLPlatform) {
+ return 'mysql';
+ }
+
+ if ($platform instanceof PostgreSQLPlatform) {
+ return 'postgresql';
+ }
+
+ if ($platform instanceof SQLitePlatform) {
+ return 'sqlite';
+ }
+
+ if ($platform instanceof SQLServerPlatform) {
+ return 'mssql';
+ }
+
+ if ($platform instanceof OraclePlatform) {
+ return 'oracle';
+ }
+
+ if ($platform instanceof DB2Platform) {
+ return 'db2';
+ }
+
+ return 'other_sql';
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V4/TracingStatement.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V4/TracingStatement.php
new file mode 100644
index 0000000000..41df86494d
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V4/TracingStatement.php
@@ -0,0 +1,43 @@
+telemetry->tracer('flow.symfony.dbal', PackageVersion::get('doctrine/dbal'));
+
+ $span = $tracer->span('doctrine.dbal.statement.execute', SpanKind::CLIENT);
+
+ try {
+ $result = parent::execute();
+
+ $span->setStatus(SpanStatus::ok());
+
+ return $result;
+ } catch (\Throwable $exception) {
+ $span->recordException($exception, new \DateTimeImmutable());
+ $span->setStatus(SpanStatus::error($exception->getMessage()));
+
+ throw $exception;
+ } finally {
+ $tracer->complete($span);
+ }
+ }
+}
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
new file mode 100644
index 0000000000..29f4dc937c
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/HttpClient/TracableHttpClient.php
@@ -0,0 +1,82 @@
+ $options
+ */
+ public function request(string $method, string $url, array $options = []) : ResponseInterface
+ {
+ $parsedUrl = \parse_url($url);
+ $scheme = $parsedUrl['scheme'] ?? 'http';
+ $host = $parsedUrl['host'] ?? 'unknown';
+
+ $tracer = $this->telemetry->tracer('flow.symfony.http_client', PackageVersion::get('symfony/http-client'));
+
+ $span = $tracer->span(
+ "{$method} {$host}",
+ SpanKind::CLIENT,
+ [
+ 'http.method' => $method,
+ 'http.url' => $url,
+ 'http.scheme' => $scheme,
+ 'http.host' => $host,
+ 'http.client.name' => $this->clientName,
+ ]
+ );
+
+ try {
+ $response = $this->client->request($method, $url, $options);
+
+ $statusCode = $response->getStatusCode();
+ $span->setAttribute('http.status_code', $statusCode);
+
+ if ($statusCode >= 400) {
+ $span->setStatus(SpanStatus::error("HTTP {$statusCode}"));
+ } else {
+ $span->setStatus(SpanStatus::ok());
+ }
+
+ return $response;
+ } catch (\Throwable $exception) {
+ $span->recordException($exception, new \DateTimeImmutable());
+ $span->setStatus(SpanStatus::error($exception->getMessage()));
+
+ throw $exception;
+ } finally {
+ $tracer->complete($span);
+ }
+ }
+
+ public function stream(ResponseInterface|iterable $responses, ?float $timeout = null) : ResponseStreamInterface
+ {
+ return $this->client->stream($responses, $timeout);
+ }
+
+ /**
+ * @param array $options
+ */
+ public function withOptions(array $options) : static
+ {
+ return new self(
+ $this->client->withOptions($options),
+ $this->telemetry,
+ $this->clientName
+ );
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/HttpKernel/HttpKernelFlushSubscriber.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/HttpKernel/HttpKernelFlushSubscriber.php
new file mode 100644
index 0000000000..192a32e666
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/HttpKernel/HttpKernelFlushSubscriber.php
@@ -0,0 +1,30 @@
+ ['onTerminate', -20000],
+ ];
+ }
+
+ public function onTerminate(TerminateEvent $event) : void
+ {
+ $this->telemetry->shutdown();
+ }
+}
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
new file mode 100644
index 0000000000..0cb74fa9ab
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/HttpKernel/HttpKernelSpanSubscriber.php
@@ -0,0 +1,223 @@
+ */
+ private array $excludePathRules;
+
+ /**
+ * @param array $excludePaths
+ */
+ public function __construct(
+ private Telemetry $telemetry,
+ array $excludePaths,
+ private ContextStorage $contextStorage,
+ private Propagator $propagator,
+ private bool $extractContext = true,
+ ) {
+ $this->excludePathRules = \array_map(
+ static fn (array $config) : PathExclusionRule => PathExclusionRule::fromConfig($config),
+ $excludePaths
+ );
+ }
+
+ public static function getSubscribedEvents() : array
+ {
+ return [
+ KernelEvents::REQUEST => ['onRequest', 10000],
+ KernelEvents::CONTROLLER => ['onController', 0],
+ KernelEvents::RESPONSE => ['onResponse', -10000],
+ KernelEvents::EXCEPTION => ['onException', 0],
+ KernelEvents::TERMINATE => ['onTerminate', -10000],
+ ];
+ }
+
+ public function onController(ControllerEvent $event) : void
+ {
+ $request = $event->getRequest();
+ $span = $request->attributes->get(self::SPAN_ATTRIBUTE);
+
+ if (!$span instanceof Span) {
+ return;
+ }
+
+ $route = $request->attributes->get('_route');
+
+ if (\is_string($route)) {
+ $span->setAttribute('http.route', $route);
+ $method = $request->getMethod();
+ $span->rename("{$method} {$route}");
+ }
+
+ $controller = $event->getController();
+ $controllerName = $this->resolveControllerName($controller);
+
+ if ($controllerName !== null) {
+ $span->setAttribute('controller', $controllerName);
+ }
+ }
+
+ public function onException(ExceptionEvent $event) : void
+ {
+ $request = $event->getRequest();
+ $span = $request->attributes->get(self::SPAN_ATTRIBUTE);
+
+ if (!$span instanceof Span) {
+ return;
+ }
+
+ $span->recordException($event->getThrowable(), new \DateTimeImmutable());
+ }
+
+ public function onRequest(RequestEvent $event) : void
+ {
+ $request = $event->getRequest();
+ $method = $request->getMethod();
+ $path = $request->getPathInfo();
+
+ if (!$this->shouldTraceByPath($path, $method)) {
+ return;
+ }
+
+ if ($event->isMainRequest() && $this->extractContext) {
+ $this->extractContextFromRequest($request);
+ }
+
+ $kind = $event->isMainRequest() ? SpanKind::SERVER : SpanKind::INTERNAL;
+
+ $tracer = $this->telemetry->tracer('flow.symfony.http_kernel', PackageVersion::get('symfony/http-kernel'));
+ $span = $tracer->span(
+ "{$method} {$path}",
+ $kind,
+ [
+ 'http.method' => $method,
+ 'http.url' => $request->getUri(),
+ 'http.target' => $request->getRequestUri(),
+ 'http.scheme' => $request->getScheme(),
+ 'http.host' => $request->getHost(),
+ ],
+ );
+
+ $request->attributes->set(self::SPAN_ATTRIBUTE, $span);
+ $request->attributes->set(self::TRACER_ATTRIBUTE, $tracer);
+ }
+
+ public function onResponse(ResponseEvent $event) : void
+ {
+ $request = $event->getRequest();
+ $span = $request->attributes->get(self::SPAN_ATTRIBUTE);
+
+ if (!$span instanceof Span) {
+ return;
+ }
+
+ $response = $event->getResponse();
+ $statusCode = $response->getStatusCode();
+
+ $span->setAttribute('http.status_code', $statusCode);
+
+ if ($statusCode >= 400) {
+ $span->setStatus(SpanStatus::error("HTTP {$statusCode}"));
+ } else {
+ $span->setStatus(SpanStatus::ok());
+ }
+ }
+
+ public function onTerminate(TerminateEvent $event) : void
+ {
+ $request = $event->getRequest();
+ $span = $request->attributes->get(self::SPAN_ATTRIBUTE);
+ $tracer = $request->attributes->get(self::TRACER_ATTRIBUTE);
+
+ if (!$span instanceof Span || !$tracer instanceof Tracer) {
+ return;
+ }
+
+ $tracer->complete($span);
+
+ $request->attributes->remove(self::SPAN_ATTRIBUTE);
+ $request->attributes->remove(self::TRACER_ATTRIBUTE);
+ }
+
+ private function extractContextFromRequest(Request $request) : void
+ {
+ $headers = [];
+
+ foreach ($request->headers->all() as $key => $values) {
+ if (\is_array($values) && \count($values) > 0 && \is_string($values[0])) {
+ $headers[$key] = $values[0];
+ }
+ }
+
+ $carrier = new ArrayCarrier($headers);
+ $propagationContext = $this->propagator->extract($carrier);
+
+ if ($propagationContext->spanContext !== null) {
+ $context = Context::withTraceId($propagationContext->spanContext->traceId);
+ $context = $context->withActiveSpan($propagationContext->spanContext->spanId);
+
+ if ($propagationContext->baggage !== null) {
+ $context = $context->withBaggage($propagationContext->baggage);
+ }
+
+ $this->contextStorage->store($context);
+ }
+ }
+
+ /**
+ * @param array|callable|object $controller
+ */
+ private function resolveControllerName(callable|object|array $controller) : ?string
+ {
+ if (\is_array($controller) && \count($controller) === 2) {
+ $firstElement = $controller[0];
+ $secondElement = $controller[1];
+ $class = \is_object($firstElement) ? $firstElement::class : (\is_string($firstElement) ? $firstElement : '');
+ $method = \is_string($secondElement) ? $secondElement : '';
+
+ return "{$class}::{$method}";
+ }
+
+ if (\is_object($controller)) {
+ if ($controller instanceof \Closure) {
+ return 'Closure';
+ }
+
+ return $controller::class . '::__invoke';
+ }
+
+ if (\is_string($controller)) {
+ return $controller;
+ }
+
+ return null;
+ }
+
+ private function shouldTraceByPath(string $path, string $method) : bool
+ {
+ foreach ($this->excludePathRules as $rule) {
+ if ($rule->matches($path, $method)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/HttpKernel/PathExclusionRule.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/HttpKernel/PathExclusionRule.php
new file mode 100644
index 0000000000..acf1d0db5d
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/HttpKernel/PathExclusionRule.php
@@ -0,0 +1,40 @@
+method !== null && \strtoupper($this->method) !== \strtoupper($method)) {
+ return false;
+ }
+
+ $result = @\preg_match($this->path, $path);
+
+ if ($result !== false) {
+ return (bool) $result;
+ }
+
+ return $this->path === $path;
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Messenger/TelemetryStamp.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Messenger/TelemetryStamp.php
new file mode 100644
index 0000000000..a25792f50b
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Messenger/TelemetryStamp.php
@@ -0,0 +1,64 @@
+ $context The propagated context headers
+ */
+ public function __construct(
+ private array $context = [],
+ ) {
+ }
+
+ /**
+ * Get all context entries.
+ *
+ * @return array
+ */
+ public function all() : array
+ {
+ return $this->context;
+ }
+
+ /**
+ * Get a context value by key.
+ *
+ * Key lookup is case-insensitive for HTTP header compatibility.
+ */
+ public function get(string $key) : ?string
+ {
+ $lowercaseKey = \strtolower($key);
+
+ foreach ($this->context as $contextKey => $value) {
+ if (\strtolower($contextKey) === $lowercaseKey) {
+ return $value;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Create a new stamp with an additional context entry.
+ */
+ public function with(string $key, string $value) : self
+ {
+ $context = $this->context;
+ $context[$key] = $value;
+
+ return new self($context);
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Messenger/TelemetryStampCarrier.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Messenger/TelemetryStampCarrier.php
new file mode 100644
index 0000000000..657ed02d80
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Messenger/TelemetryStampCarrier.php
@@ -0,0 +1,39 @@
+
+ */
+final class TelemetryStampCarrier implements Carrier
+{
+ public function __construct(private TelemetryStamp $stamp = new TelemetryStamp())
+ {
+ }
+
+ public function get(string $key) : ?string
+ {
+ return $this->stamp->get($key);
+ }
+
+ public function set(string $key, string $value) : static
+ {
+ $this->stamp = $this->stamp->with($key, $value);
+
+ return $this;
+ }
+
+ public function unwrap() : TelemetryStamp
+ {
+ return $this->stamp;
+ }
+}
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
new file mode 100644
index 0000000000..0bcdf7be15
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Messenger/TracingMiddleware.php
@@ -0,0 +1,143 @@
+telemetry->tracer('flow.symfony.messenger', PackageVersion::get('symfony/messenger'));
+
+ $message = $envelope->getMessage();
+ $messageClass = $message::class;
+ $shortMessageClass = $this->getShortClassName($messageClass);
+
+ $receivedStamp = $envelope->last(ReceivedStamp::class);
+ $busNameStamp = $envelope->last(BusNameStamp::class);
+ $transportIdStamp = $envelope->last(TransportMessageIdStamp::class);
+
+ $isReceived = $receivedStamp !== null;
+
+ if ($isReceived) {
+ $this->extractContext($envelope);
+ }
+
+ $kind = $isReceived ? SpanKind::CONSUMER : SpanKind::PRODUCER;
+ $operation = $isReceived ? 'receive' : 'send';
+
+ $busName = $busNameStamp instanceof BusNameStamp ? $busNameStamp->getBusName() : 'default';
+ $spanName = "{$busName} {$shortMessageClass}";
+
+ $attributes = [
+ 'messaging.system' => 'symfony_messenger',
+ 'messaging.destination' => $busName,
+ 'messaging.message.class' => $messageClass,
+ 'messaging.operation' => $operation,
+ ];
+
+ if ($receivedStamp instanceof ReceivedStamp) {
+ $attributes['messaging.transport'] = $receivedStamp->getTransportName();
+ }
+
+ if ($transportIdStamp instanceof TransportMessageIdStamp) {
+ $attributes['messaging.message.id'] = (string) $transportIdStamp->getId();
+ }
+
+ $span = $tracer->span($spanName, $kind, $attributes);
+
+ if (!$isReceived) {
+ $envelope = $this->injectContext($envelope);
+ }
+
+ try {
+ $result = $stack->next()->handle($envelope, $stack);
+ $span->setStatus(SpanStatus::ok());
+
+ return $result;
+ } catch (\Throwable $e) {
+ $span->recordException($e, new \DateTimeImmutable());
+ $span->setStatus(SpanStatus::error($e->getMessage()));
+
+ throw $e;
+ } finally {
+ $tracer->complete($span);
+ }
+ }
+
+ private function extractContext(Envelope $envelope) : void
+ {
+ if ($this->contextStorage === null || $this->propagator === null) {
+ return;
+ }
+
+ $stamp = $envelope->last(TelemetryStamp::class);
+
+ if (!$stamp instanceof TelemetryStamp) {
+ return;
+ }
+
+ $carrier = new TelemetryStampCarrier($stamp);
+ $propagationContext = $this->propagator->extract($carrier);
+
+ if ($propagationContext->spanContext !== null) {
+ $context = Context::withTraceId($propagationContext->spanContext->traceId);
+ $context = $context->withActiveSpan($propagationContext->spanContext->spanId);
+
+ if ($propagationContext->baggage !== null) {
+ $context = $context->withBaggage($propagationContext->baggage);
+ }
+
+ $this->contextStorage->store($context);
+ }
+ }
+
+ private function getShortClassName(string $className) : string
+ {
+ $parts = \explode('\\', $className);
+
+ return \end($parts);
+ }
+
+ private function injectContext(Envelope $envelope) : Envelope
+ {
+ if ($this->contextStorage === null || $this->propagator === null) {
+ return $envelope;
+ }
+
+ $context = $this->contextStorage->current();
+ $activeSpanId = $context->activeSpanId();
+
+ if ($activeSpanId === null) {
+ return $envelope;
+ }
+
+ $spanContext = SpanContext::create(
+ $context->traceId,
+ $activeSpanId,
+ );
+
+ $propagationContext = new PropagationContext($spanContext, $context->baggage);
+
+ $carrier = new TelemetryStampCarrier();
+ $this->propagator->inject($propagationContext, $carrier);
+
+ return $envelope->with($carrier->unwrap());
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Twig/TracingTwigExtension.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Twig/TracingTwigExtension.php
new file mode 100644
index 0000000000..a68194e9ad
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Twig/TracingTwigExtension.php
@@ -0,0 +1,153 @@
+
+ */
+ private \SplObjectStorage $activeSpans;
+
+ private int $excludedDepth = 0;
+
+ /**
+ * @param array $excludeTemplates
+ */
+ public function __construct(
+ private readonly Telemetry $telemetry,
+ private readonly bool $traceTemplates = true,
+ private readonly bool $traceBlocks = false,
+ private readonly bool $traceMacros = false,
+ private readonly array $excludeTemplates = [],
+ ) {
+ $this->activeSpans = new \SplObjectStorage();
+ }
+
+ public function enter(Profile $profile) : void
+ {
+ if ($profile->isTemplate() && $this->isTemplateExcluded($profile->getTemplate())) {
+ $this->excludedDepth++;
+
+ return;
+ }
+
+ if ($this->excludedDepth > 0) {
+ return;
+ }
+
+ if (!$this->shouldTrace($profile)) {
+ return;
+ }
+
+ $tracer = $this->telemetry->tracer('flow.symfony.twig', PackageVersion::get('twig/twig'));
+
+ $spanName = $this->getSpanName($profile);
+ $attributes = [
+ 'twig.type' => $profile->getType(),
+ 'twig.template' => $profile->getTemplate(),
+ ];
+
+ if (!$profile->isRoot() && !$profile->isTemplate()) {
+ $attributes['twig.name'] = $profile->getName();
+ }
+
+ $span = $tracer->span($spanName, SpanKind::INTERNAL, $attributes);
+
+ $this->activeSpans[$profile] = ['span' => $span, 'tracer' => $tracer];
+ }
+
+ #[\Override]
+ public function getNodeVisitors() : array
+ {
+ return [new ProfilerNodeVisitor(self::class)];
+ }
+
+ public function leave(Profile $profile) : void
+ {
+ if ($profile->isTemplate() && $this->isTemplateExcluded($profile->getTemplate())) {
+ $this->excludedDepth--;
+
+ return;
+ }
+
+ if (!$this->activeSpans->contains($profile)) {
+ return;
+ }
+
+ /** @var array{span: Span, tracer: Tracer} $spanData */
+ $spanData = $this->activeSpans[$profile];
+ $spanData['tracer']->complete($spanData['span']);
+
+ $this->activeSpans->detach($profile);
+ }
+
+ private function getSpanName(Profile $profile) : string
+ {
+ if ($profile->isRoot()) {
+ return $profile->getName();
+ }
+
+ if ($profile->isTemplate()) {
+ return $profile->getTemplate();
+ }
+
+ return \sprintf(
+ '%s::%s(%s)',
+ $profile->getTemplate(),
+ $profile->getType(),
+ $profile->getName()
+ );
+ }
+
+ private function isTemplateExcluded(string $template) : bool
+ {
+ foreach ($this->excludeTemplates as $pattern) {
+ if ($this->matchesPattern($template, $pattern)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ private function matchesPattern(string $template, string $pattern) : bool
+ {
+ if (\str_starts_with($pattern, '/') && \str_ends_with($pattern, '/')) {
+ return (bool) \preg_match($pattern, $template);
+ }
+
+ return $template === $pattern;
+ }
+
+ private function shouldTrace(Profile $profile) : bool
+ {
+ if ($profile->isRoot()) {
+ return true;
+ }
+
+ if ($profile->isTemplate()) {
+ return $this->traceTemplates;
+ }
+
+ $type = $profile->getType();
+
+ if ($type === Profile::BLOCK) {
+ return $this->traceBlocks;
+ }
+
+ if ($type === Profile::MACRO) {
+ return $this->traceMacros;
+ }
+
+ return true;
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Resource/Detector/SymfonyDeploymentDetector.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Resource/Detector/SymfonyDeploymentDetector.php
new file mode 100644
index 0000000000..e3b2170822
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Resource/Detector/SymfonyDeploymentDetector.php
@@ -0,0 +1,29 @@
+value => $this->kernelEnvironment,
+ ]);
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Resources/config/instrumentation/console.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Resources/config/instrumentation/console.php
new file mode 100644
index 0000000000..a04bb4429c
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Resources/config/instrumentation/console.php
@@ -0,0 +1,24 @@
+services();
+
+ $services->set('flow.telemetry.console.span_subscriber', ConsoleSpanSubscriber::class)
+ ->args([
+ service(Telemetry::class),
+ '%flow.telemetry.console.exclude_commands%',
+ ])
+ ->tag('kernel.event_subscriber');
+
+ $services->set('flow.telemetry.console.flush_subscriber', ConsoleFlushSubscriber::class)
+ ->args([service(Telemetry::class)])
+ ->tag('kernel.event_subscriber');
+};
diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Resources/config/instrumentation/http_kernel.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Resources/config/instrumentation/http_kernel.php
new file mode 100644
index 0000000000..14f8d88e2c
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Resources/config/instrumentation/http_kernel.php
@@ -0,0 +1,27 @@
+services();
+
+ $services->set('flow.telemetry.http_kernel.span_subscriber', HttpKernelSpanSubscriber::class)
+ ->args([
+ service(Telemetry::class),
+ '%flow.telemetry.http_kernel.exclude_paths%',
+ service('flow.telemetry.context_storage'),
+ service('flow.telemetry.propagator'),
+ '%flow.telemetry.http_kernel.context_propagation%',
+ ])
+ ->tag('kernel.event_subscriber');
+
+ $services->set('flow.telemetry.http_kernel.flush_subscriber', HttpKernelFlushSubscriber::class)
+ ->args([service(Telemetry::class)])
+ ->tag('kernel.event_subscriber');
+};
diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Resources/config/instrumentation/messenger.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Resources/config/instrumentation/messenger.php
new file mode 100644
index 0000000000..b7c1318377
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Resources/config/instrumentation/messenger.php
@@ -0,0 +1,18 @@
+services();
+
+ $services->set('flow.telemetry.messenger.middleware', TracingMiddleware::class)
+ ->args([
+ service(Telemetry::class),
+ ]);
+};
diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Resources/config/instrumentation/twig.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Resources/config/instrumentation/twig.php
new file mode 100644
index 0000000000..67684dddc3
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Resources/config/instrumentation/twig.php
@@ -0,0 +1,23 @@
+services();
+
+ $services->set('flow.telemetry.twig.extension', TracingTwigExtension::class)
+ ->args([
+ service(Telemetry::class),
+ '%flow.telemetry.twig.trace_templates%',
+ '%flow.telemetry.twig.trace_blocks%',
+ '%flow.telemetry.twig.trace_macros%',
+ '%flow.telemetry.twig.exclude_templates%',
+ ])
+ ->tag('twig.extension');
+};
diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Context/SymfonyContext.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Context/SymfonyContext.php
new file mode 100644
index 0000000000..916ff668ae
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Context/SymfonyContext.php
@@ -0,0 +1,107 @@
+kernel !== null) {
+ $this->shutdown();
+ }
+
+ $this->kernel = new TestKernel('test', false);
+
+ if (isset($options['config']) && \is_callable($options['config'])) {
+ $options['config']($this->kernel);
+ }
+
+ $this->kernel->boot();
+
+ return $this->kernel;
+ }
+
+ public function getContainer() : ContainerInterface
+ {
+ if ($this->kernel === null) {
+ throw new \LogicException('Kernel has not been booted. Call bootKernel() first.');
+ }
+
+ return $this->kernel->getContainer();
+ }
+
+ public function getKernel() : TestKernel
+ {
+ if ($this->kernel === null) {
+ throw new \LogicException('Kernel has not been booted. Call bootKernel() first.');
+ }
+
+ return $this->kernel;
+ }
+
+ /**
+ * @template T of object
+ *
+ * @param class-string $typeClass
+ *
+ * @return T
+ */
+ public function getService(string $serviceId, string $typeClass) : object
+ {
+ $service = $this->getContainer()->get($serviceId);
+
+ return type_instance_of($typeClass)->assert($service);
+ }
+
+ public function makeFlowServicesPublic(ContainerBuilder $container) : void
+ {
+ foreach ($container->getDefinitions() as $id => $definition) {
+ if (\str_starts_with($id, 'flow.telemetry')) {
+ $definition->setPublic(true);
+ }
+ }
+
+ foreach ($container->getAliases() as $id => $alias) {
+ if ($id === Telemetry::class || \str_starts_with($id, 'flow.telemetry')) {
+ $alias->setPublic(true);
+ }
+ }
+ }
+
+ public function shutdown() : void
+ {
+ if ($this->kernel === null) {
+ return;
+ }
+
+ $cacheDir = $this->kernel->getCacheDir();
+ $logDir = $this->kernel->getLogDir();
+
+ $this->kernel->shutdown();
+ $this->kernel = null;
+
+ $filesystem = new Filesystem();
+
+ if ($filesystem->exists($cacheDir)) {
+ $filesystem->remove($cacheDir);
+ }
+
+ if ($filesystem->exists($logDir)) {
+ $filesystem->remove($logDir);
+ }
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/Cache/ArrayCacheAdapter.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/Cache/ArrayCacheAdapter.php
new file mode 100644
index 0000000000..ec18b004e1
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/Cache/ArrayCacheAdapter.php
@@ -0,0 +1,152 @@
+ */
+ private array $cache = [];
+
+ /** @var array */
+ private array $deferred = [];
+
+ public function clear(string $prefix = '') : bool
+ {
+ if ($prefix === '') {
+ $this->cache = [];
+
+ return true;
+ }
+
+ foreach (\array_keys($this->cache) as $key) {
+ if (\str_starts_with($key, $prefix)) {
+ unset($this->cache[$key]);
+ }
+ }
+
+ return true;
+ }
+
+ public function commit() : bool
+ {
+ foreach ($this->deferred as $item) {
+ $this->save($item);
+ }
+ $this->deferred = [];
+
+ return true;
+ }
+
+ public function delete(string $key) : bool
+ {
+ unset($this->cache[$key]);
+
+ return true;
+ }
+
+ public function deleteItem(mixed $key) : bool
+ {
+ unset($this->cache[$key]);
+
+ return true;
+ }
+
+ /**
+ * @param array $keys
+ */
+ public function deleteItems(array $keys) : bool
+ {
+ foreach ($keys as $key) {
+ unset($this->cache[$key]);
+ }
+
+ return true;
+ }
+
+ public function get(string $key, callable $callback, ?float $beta = null, ?array &$metadata = null) : mixed
+ {
+ if (isset($this->cache[$key])) {
+ return $this->cache[$key];
+ }
+
+ $item = $this->getItem($key);
+ $save = true;
+ $value = $callback($item, $save);
+
+ if ($save) {
+ $this->cache[$key] = $value;
+ }
+
+ return $value;
+ }
+
+ public function getItem(mixed $key) : CacheItem
+ {
+ $item = new CacheItem();
+ $reflection = new \ReflectionClass($item);
+
+ $keyProperty = $reflection->getProperty('key');
+ $keyProperty->setValue($item, $key);
+
+ if (isset($this->cache[$key])) {
+ $isHitProperty = $reflection->getProperty('isHit');
+ $isHitProperty->setValue($item, true);
+
+ $valueProperty = $reflection->getProperty('value');
+ $valueProperty->setValue($item, $this->cache[$key]);
+ }
+
+ return $item;
+ }
+
+ /**
+ * @param array $keys
+ *
+ * @return iterable
+ */
+ public function getItems(array $keys = []) : iterable
+ {
+ foreach ($keys as $key) {
+ yield $key => $this->getItem($key);
+ }
+ }
+
+ public function hasItem(mixed $key) : bool
+ {
+ return isset($this->cache[$key]);
+ }
+
+ public function prune() : bool
+ {
+ return true;
+ }
+
+ public function reset() : void
+ {
+ $this->cache = [];
+ $this->deferred = [];
+ }
+
+ public function save(CacheItemInterface $item) : bool
+ {
+ $reflection = new \ReflectionClass($item);
+ $valueProperty = $reflection->getProperty('value');
+ $this->cache[$item->getKey()] = $valueProperty->getValue($item);
+
+ return true;
+ }
+
+ public function saveDeferred(CacheItemInterface $item) : bool
+ {
+ $this->deferred[$item->getKey()] = $item;
+
+ return true;
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/Cache/FailingCacheAdapter.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/Cache/FailingCacheAdapter.php
new file mode 100644
index 0000000000..80eeae91fb
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/Cache/FailingCacheAdapter.php
@@ -0,0 +1,91 @@
+errorMessage);
+ }
+
+ public function commit() : bool
+ {
+ throw new \RuntimeException($this->errorMessage);
+ }
+
+ public function delete(string $key) : bool
+ {
+ throw new \RuntimeException($this->errorMessage);
+ }
+
+ public function deleteItem(mixed $key) : bool
+ {
+ throw new \RuntimeException($this->errorMessage);
+ }
+
+ /**
+ * @param array $keys
+ */
+ public function deleteItems(array $keys) : bool
+ {
+ throw new \RuntimeException($this->errorMessage);
+ }
+
+ public function get(string $key, callable $callback, ?float $beta = null, ?array &$metadata = null) : mixed
+ {
+ throw new \RuntimeException($this->errorMessage);
+ }
+
+ public function getItem(mixed $key) : CacheItem
+ {
+ throw new \RuntimeException($this->errorMessage);
+ }
+
+ /**
+ * @param array $keys
+ *
+ * @return iterable
+ */
+ public function getItems(array $keys = []) : iterable
+ {
+ throw new \RuntimeException($this->errorMessage);
+ }
+
+ public function hasItem(mixed $key) : bool
+ {
+ throw new \RuntimeException($this->errorMessage);
+ }
+
+ public function prune() : bool
+ {
+ throw new \RuntimeException($this->errorMessage);
+ }
+
+ public function reset() : void
+ {
+ throw new \RuntimeException($this->errorMessage);
+ }
+
+ public function save(CacheItemInterface $item) : bool
+ {
+ throw new \RuntimeException($this->errorMessage);
+ }
+
+ public function saveDeferred(CacheItemInterface $item) : bool
+ {
+ throw new \RuntimeException($this->errorMessage);
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/Cache/TagAwareArrayCacheAdapter.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/Cache/TagAwareArrayCacheAdapter.php
new file mode 100644
index 0000000000..e8a0ea1d72
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/Cache/TagAwareArrayCacheAdapter.php
@@ -0,0 +1,177 @@
+ */
+ private array $cache = [];
+
+ /** @var array */
+ private array $deferred = [];
+
+ /** @var array> */
+ private array $tags = [];
+
+ public function clear(string $prefix = '') : bool
+ {
+ if ($prefix === '') {
+ $this->cache = [];
+ $this->tags = [];
+
+ return true;
+ }
+
+ foreach (\array_keys($this->cache) as $key) {
+ if (\str_starts_with($key, $prefix)) {
+ unset($this->cache[$key], $this->tags[$key]);
+ }
+ }
+
+ return true;
+ }
+
+ public function commit() : bool
+ {
+ foreach ($this->deferred as $item) {
+ $this->save($item);
+ }
+ $this->deferred = [];
+
+ return true;
+ }
+
+ public function delete(string $key) : bool
+ {
+ unset($this->cache[$key], $this->tags[$key]);
+
+ return true;
+ }
+
+ public function deleteItem(mixed $key) : bool
+ {
+ unset($this->cache[$key], $this->tags[$key]);
+
+ return true;
+ }
+
+ /**
+ * @param array $keys
+ */
+ public function deleteItems(array $keys) : bool
+ {
+ foreach ($keys as $key) {
+ unset($this->cache[$key], $this->tags[$key]);
+ }
+
+ return true;
+ }
+
+ public function get(string $key, callable $callback, ?float $beta = null, ?array &$metadata = null) : mixed
+ {
+ if (isset($this->cache[$key])) {
+ return $this->cache[$key];
+ }
+
+ $item = $this->getItem($key);
+ $save = true;
+ $value = $callback($item, $save);
+
+ if ($save) {
+ $this->cache[$key] = $value;
+ }
+
+ return $value;
+ }
+
+ public function getItem(mixed $key) : CacheItem
+ {
+ $item = new CacheItem();
+ $reflection = new \ReflectionClass($item);
+
+ $keyProperty = $reflection->getProperty('key');
+ $keyProperty->setValue($item, $key);
+
+ if (isset($this->cache[$key])) {
+ $isHitProperty = $reflection->getProperty('isHit');
+ $isHitProperty->setValue($item, true);
+
+ $valueProperty = $reflection->getProperty('value');
+ $valueProperty->setValue($item, $this->cache[$key]);
+ }
+
+ return $item;
+ }
+
+ /**
+ * @param array $keys
+ *
+ * @return iterable
+ */
+ public function getItems(array $keys = []) : iterable
+ {
+ foreach ($keys as $key) {
+ yield $key => $this->getItem($key);
+ }
+ }
+
+ public function hasItem(mixed $key) : bool
+ {
+ return isset($this->cache[$key]);
+ }
+
+ /**
+ * @param array $tags
+ */
+ public function invalidateTags(array $tags) : bool
+ {
+ $tagsSet = \array_flip($tags);
+
+ foreach ($this->tags as $key => $itemTags) {
+ foreach ($itemTags as $tag) {
+ if (isset($tagsSet[$tag])) {
+ unset($this->cache[$key], $this->tags[$key]);
+
+ break;
+ }
+ }
+ }
+
+ return true;
+ }
+
+ public function prune() : bool
+ {
+ return true;
+ }
+
+ public function reset() : void
+ {
+ $this->cache = [];
+ $this->tags = [];
+ $this->deferred = [];
+ }
+
+ public function save(CacheItemInterface $item) : bool
+ {
+ $reflection = new \ReflectionClass($item);
+ $valueProperty = $reflection->getProperty('value');
+ $this->cache[$item->getKey()] = $valueProperty->getValue($item);
+
+ return true;
+ }
+
+ public function saveDeferred(CacheItemInterface $item) : bool
+ {
+ $this->deferred[$item->getKey()] = $item;
+
+ return true;
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/Command/FailingCommand.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/Command/FailingCommand.php
new file mode 100644
index 0000000000..c3f4dcf25b
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/Command/FailingCommand.php
@@ -0,0 +1,19 @@
+writeln('Test command executed');
+
+ return Command::SUCCESS;
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/Controller/TestController.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/Controller/TestController.php
new file mode 100644
index 0000000000..8d18437d71
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/Controller/TestController.php
@@ -0,0 +1,25 @@
+ 'not found'], 404);
+ }
+
+ public function exception() : Response
+ {
+ throw new \RuntimeException('Test exception');
+ }
+
+ public function index() : Response
+ {
+ return new JsonResponse(['status' => 'ok']);
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/HttpClient/FailingHttpClient.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/HttpClient/FailingHttpClient.php
new file mode 100644
index 0000000000..94e7fd77b0
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/HttpClient/FailingHttpClient.php
@@ -0,0 +1,36 @@
+ $options
+ */
+ public function request(string $method, string $url, array $options = []) : ResponseInterface
+ {
+ throw new \RuntimeException($this->message);
+ }
+
+ public function stream(ResponseInterface|iterable $responses, ?float $timeout = null) : ResponseStreamInterface
+ {
+ throw new \RuntimeException('stream() not implemented in test fixture');
+ }
+
+ /**
+ * @param array $options
+ */
+ public function withOptions(array $options) : static
+ {
+ return $this;
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/HttpClient/MockResponse.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/HttpClient/MockResponse.php
new file mode 100644
index 0000000000..b850f87f1c
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/HttpClient/MockResponse.php
@@ -0,0 +1,53 @@
+>
+ */
+ public function getHeaders(bool $throw = true) : array
+ {
+ return [];
+ }
+
+ /**
+ * @return array
+ */
+ public function getInfo(?string $type = null) : mixed
+ {
+ return [];
+ }
+
+ public function getStatusCode() : int
+ {
+ return $this->statusCode;
+ }
+
+ /**
+ * @return array
+ */
+ public function toArray(bool $throw = true) : array
+ {
+ return [];
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/HttpClient/SuccessHttpClient.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/HttpClient/SuccessHttpClient.php
new file mode 100644
index 0000000000..bf2fad1dc5
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/HttpClient/SuccessHttpClient.php
@@ -0,0 +1,36 @@
+ $options
+ */
+ public function request(string $method, string $url, array $options = []) : ResponseInterface
+ {
+ return new MockResponse($this->statusCode);
+ }
+
+ public function stream(ResponseInterface|iterable $responses, ?float $timeout = null) : ResponseStreamInterface
+ {
+ throw new \RuntimeException('stream() not implemented in test fixture');
+ }
+
+ /**
+ * @param array $options
+ */
+ public function withOptions(array $options) : static
+ {
+ return $this;
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/Message/TestMessage.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/Message/TestMessage.php
new file mode 100644
index 0000000000..40713b14e2
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/Message/TestMessage.php
@@ -0,0 +1,13 @@
+handled = true;
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/Middleware/CapturingMiddleware.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/Middleware/CapturingMiddleware.php
new file mode 100644
index 0000000000..4a2115283f
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/Middleware/CapturingMiddleware.php
@@ -0,0 +1,20 @@
+captured = $envelope;
+
+ return $stack->next()->handle($envelope, $stack);
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/Psr18/FailingPsr18Client.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/Psr18/FailingPsr18Client.php
new file mode 100644
index 0000000000..2219aa45cb
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/Psr18/FailingPsr18Client.php
@@ -0,0 +1,21 @@
+message);
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/Psr18/MockPsr18Client.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/Psr18/MockPsr18Client.php
new file mode 100644
index 0000000000..e3926a47ea
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/Psr18/MockPsr18Client.php
@@ -0,0 +1,22 @@
+statusCode);
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/TestKernel.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/TestKernel.php
new file mode 100644
index 0000000000..b8f9414a08
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/TestKernel.php
@@ -0,0 +1,137 @@
+> */
+ private array $testBundles = [];
+
+ /** @var array */
+ private array $testConfigs = [];
+
+ /** @var array */
+ private array $testContainerConfigurators = [];
+
+ /** @var array> */
+ private array $testExtensionConfigs = [];
+
+ private readonly string $testId;
+
+ public function __construct(string $environment = 'test', bool $debug = true)
+ {
+ $this->testId = \bin2hex(\random_bytes(8));
+
+ parent::__construct($environment, $debug);
+ }
+
+ /**
+ * @param class-string $bundleClass
+ */
+ public function addTestBundle(string $bundleClass) : void
+ {
+ $this->testBundles[] = $bundleClass;
+ }
+
+ public function addTestConfig(string $configPath) : void
+ {
+ $this->testConfigs[] = $configPath;
+ }
+
+ /**
+ * @param callable(ContainerBuilder): void $configurator
+ */
+ public function addTestContainerConfigurator(callable $configurator) : void
+ {
+ $this->testContainerConfigurators[] = $configurator;
+ }
+
+ /**
+ * @param array $config
+ */
+ public function addTestExtensionConfig(string $extension, array $config) : void
+ {
+ $this->testExtensionConfigs[$extension] = \array_merge(
+ $this->testExtensionConfigs[$extension] ?? [],
+ $config
+ );
+ }
+
+ #[\Override]
+ public function getCacheDir() : string
+ {
+ return __DIR__ . '/../../../../../../../var/flow_telemetry_bundle_test/' . $this->environment . '/cache';
+ }
+
+ #[\Override]
+ public function getLogDir() : string
+ {
+ return __DIR__ . '/../../../../../../../var/flow_telemetry_bundle_test/' . $this->environment . '/log';
+ }
+
+ #[\Override]
+ public function getProjectDir() : string
+ {
+ return __DIR__ . '/..';
+ }
+
+ public function registerBundles() : iterable
+ {
+ yield new FlowTelemetryBundle();
+
+ foreach ($this->testBundles as $bundleClass) {
+ yield new $bundleClass();
+ }
+ }
+
+ public function registerContainerConfiguration(LoaderInterface $loader) : void
+ {
+ foreach ($this->testConfigs as $configPath) {
+ $loader->load($configPath);
+ }
+
+ $loader->load(function (ContainerBuilder $container) : void {
+ foreach ($this->testExtensionConfigs as $extension => $config) {
+ $container->loadFromExtension($extension, $config);
+ }
+
+ foreach ($this->testContainerConfigurators as $configurator) {
+ $configurator($container);
+ }
+
+ $container->setParameter('kernel.secret', 'test_secret_' . $this->testId);
+ });
+ }
+
+ protected function build(ContainerBuilder $container) : void
+ {
+ parent::build($container);
+
+ $container->addCompilerPass(new class implements CompilerPassInterface {
+ public function process(ContainerBuilder $container) : void
+ {
+ foreach ($container->getDefinitions() as $id => $definition) {
+ if (\str_starts_with($id, 'flow.telemetry') || \str_ends_with($id, '.flow_telemetry') || \str_starts_with($id, 'test.')) {
+ $definition->setPublic(true);
+ }
+ }
+
+ foreach ($container->getAliases() as $id => $alias) {
+ if ($id === Telemetry::class || \str_starts_with($id, 'flow.telemetry')) {
+ $alias->setPublic(true);
+ }
+ }
+ }
+ });
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/config/routes.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/config/routes.php
new file mode 100644
index 0000000000..ecd309f0fe
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Fixtures/config/routes.php
@@ -0,0 +1,9 @@
+bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'logger_provider' => [
+ 'processor' => [
+ 'type' => 'composite',
+ 'processors' => [
+ ['type' => 'memory', 'exporter' => ['type' => 'memory']],
+ ['type' => 'passthrough', 'exporter' => ['type' => 'console']],
+ ],
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ self::assertInstanceOf(CompositeLogProcessor::class, $this->getContainer()->get('flow.telemetry.logger_provider.processor'));
+ }
+
+ public function test_composite_metric_processor() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'meter_provider' => [
+ 'processor' => [
+ 'type' => 'composite',
+ 'processors' => [
+ ['type' => 'memory', 'exporter' => ['type' => 'memory']],
+ ['type' => 'passthrough', 'exporter' => ['type' => 'console']],
+ ],
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ self::assertInstanceOf(CompositeMetricProcessor::class, $this->getContainer()->get('flow.telemetry.meter_provider.processor'));
+ }
+
+ public function test_composite_span_processor() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'composite',
+ 'processors' => [
+ ['type' => 'memory', 'exporter' => ['type' => 'memory']],
+ ['type' => 'passthrough', 'exporter' => ['type' => 'console']],
+ ],
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertInstanceOf(CompositeSpanProcessor::class, $container->get('flow.telemetry.tracer_provider.processor'));
+ self::assertInstanceOf(MemorySpanProcessor::class, $container->get('flow.telemetry.tracer_provider.processor.0.processor'));
+ self::assertInstanceOf(PassThroughSpanProcessor::class, $container->get('flow.telemetry.tracer_provider.processor.1.processor'));
+ }
+
+ public function test_custom_service_reference_for_exporter() : void
+ {
+ $container = new ContainerBuilder();
+ $container->setParameter('kernel.project_dir', __DIR__);
+ $container->setParameter('kernel.cache_dir', \sys_get_temp_dir());
+ $container->setParameter('kernel.environment', 'test');
+
+ $container->register('my.custom.span_exporter', MemorySpanExporter::class)->setPublic(true);
+
+ $extension = new FlowTelemetryExtension();
+ $extension->load([
+ [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'passthrough',
+ 'exporter' => [
+ 'type' => 'service',
+ 'service_id' => 'my.custom.span_exporter',
+ ],
+ ],
+ ],
+ ],
+ ], $container);
+
+ $this->symfonyContext()->makeFlowServicesPublic($container);
+ $container->compile();
+
+ self::assertSame(
+ $container->get('my.custom.span_exporter'),
+ $container->get('flow.telemetry.tracer_provider.processor.exporter')
+ );
+ }
+
+ public function test_custom_service_reference_for_processor() : void
+ {
+ $container = new ContainerBuilder();
+ $container->setParameter('kernel.project_dir', __DIR__);
+ $container->setParameter('kernel.cache_dir', \sys_get_temp_dir());
+ $container->setParameter('kernel.environment', 'test');
+
+ $container->register('my.custom.span_processor', VoidSpanProcessor::class)->setPublic(true);
+
+ $extension = new FlowTelemetryExtension();
+ $extension->load([
+ [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'service',
+ 'service_id' => 'my.custom.span_processor',
+ ],
+ ],
+ ],
+ ], $container);
+
+ $this->symfonyContext()->makeFlowServicesPublic($container);
+ $container->compile();
+
+ self::assertSame(
+ $container->get('my.custom.span_processor'),
+ $container->get('flow.telemetry.tracer_provider.processor')
+ );
+ }
+
+ public function test_custom_service_reference_for_sampler() : void
+ {
+ $container = new ContainerBuilder();
+ $container->setParameter('kernel.project_dir', __DIR__);
+ $container->setParameter('kernel.cache_dir', \sys_get_temp_dir());
+ $container->setParameter('kernel.environment', 'test');
+
+ $container->register('my.custom.sampler', AlwaysOffSampler::class)->setPublic(true);
+
+ $extension = new FlowTelemetryExtension();
+ $extension->load([
+ [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'sampler' => [
+ 'type' => 'service',
+ 'service_id' => 'my.custom.sampler',
+ ],
+ ],
+ ],
+ ], $container);
+
+ $this->symfonyContext()->makeFlowServicesPublic($container);
+ $container->compile();
+
+ self::assertSame(
+ $container->get('my.custom.sampler'),
+ $container->get('flow.telemetry.tracer_provider.sampler')
+ );
+ }
+
+ public function test_flow_telemetry_is_aliased_to_telemetry_class() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertTrue($container->has(Telemetry::class));
+ self::assertSame($container->get('flow.telemetry'), $container->get(Telemetry::class));
+ }
+
+ public function test_full_configuration_scenario() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [
+ 'custom' => [
+ 'service.name' => 'my-application',
+ 'service.version' => '3.0.0',
+ 'deployment.environment.name' => 'staging',
+ ],
+ ],
+ 'tracer_provider' => [
+ 'sampler' => [
+ 'type' => 'trace_id_ratio',
+ 'ratio' => 0.75,
+ ],
+ 'processor' => [
+ 'type' => 'batching',
+ 'batch_size' => 1024,
+ 'exporter' => ['type' => 'console'],
+ ],
+ ],
+ 'meter_provider' => [
+ 'temporality' => 'delta',
+ 'processor' => [
+ 'type' => 'passthrough',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'logger_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'console'],
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var resource $resource */
+ $resource = $container->get('flow.telemetry.resource');
+ self::assertSame('my-application', $resource->get('service.name'));
+ self::assertSame('3.0.0', $resource->get('service.version'));
+ self::assertSame('staging', $resource->get('deployment.environment.name'));
+
+ self::assertInstanceOf(Telemetry::class, $container->get('flow.telemetry'));
+
+ self::assertInstanceOf(TracerProvider::class, $container->get('flow.telemetry.tracer_provider'));
+ self::assertInstanceOf(TraceIdRatioBasedSampler::class, $container->get('flow.telemetry.tracer_provider.sampler'));
+ self::assertInstanceOf(BatchingSpanProcessor::class, $container->get('flow.telemetry.tracer_provider.processor'));
+ self::assertInstanceOf(ConsoleSpanExporter::class, $container->get('flow.telemetry.tracer_provider.processor.exporter'));
+
+ self::assertInstanceOf(MeterProvider::class, $container->get('flow.telemetry.meter_provider'));
+ self::assertInstanceOf(PassThroughMetricProcessor::class, $container->get('flow.telemetry.meter_provider.processor'));
+ self::assertInstanceOf(MemoryMetricExporter::class, $container->get('flow.telemetry.meter_provider.processor.exporter'));
+
+ self::assertInstanceOf(LoggerProvider::class, $container->get('flow.telemetry.logger_provider'));
+ self::assertInstanceOf(MemoryLogProcessor::class, $container->get('flow.telemetry.logger_provider.processor'));
+ self::assertInstanceOf(ConsoleLogExporter::class, $container->get('flow.telemetry.logger_provider.processor.exporter'));
+ }
+
+ public function test_log_exporter_console_type() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'logger_provider' => ['processor' => ['type' => 'passthrough', 'exporter' => ['type' => 'console']]],
+ ]);
+ },
+ ]);
+
+ self::assertInstanceOf(ConsoleLogExporter::class, $this->getContainer()->get('flow.telemetry.logger_provider.processor.exporter'));
+ }
+
+ public function test_log_exporter_memory_type() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'logger_provider' => ['processor' => ['type' => 'passthrough', 'exporter' => ['type' => 'memory']]],
+ ]);
+ },
+ ]);
+
+ self::assertInstanceOf(MemoryLogExporter::class, $this->getContainer()->get('flow.telemetry.logger_provider.processor.exporter'));
+ }
+
+ public function test_log_exporter_void_type() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'logger_provider' => ['processor' => ['type' => 'passthrough', 'exporter' => ['type' => 'void']]],
+ ]);
+ },
+ ]);
+
+ self::assertInstanceOf(VoidLogExporter::class, $this->getContainer()->get('flow.telemetry.logger_provider.processor.exporter'));
+ }
+
+ public function test_log_processor_batching_type() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'logger_provider' => ['processor' => ['type' => 'batching', 'batch_size' => 256, 'exporter' => ['type' => 'void']]],
+ ]);
+ },
+ ]);
+
+ self::assertInstanceOf(BatchingLogProcessor::class, $this->getContainer()->get('flow.telemetry.logger_provider.processor'));
+ }
+
+ public function test_log_processor_memory_type() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'logger_provider' => ['processor' => ['type' => 'memory', 'exporter' => ['type' => 'void']]],
+ ]);
+ },
+ ]);
+
+ self::assertInstanceOf(MemoryLogProcessor::class, $this->getContainer()->get('flow.telemetry.logger_provider.processor'));
+ }
+
+ public function test_log_processor_passthrough_type() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'logger_provider' => ['processor' => ['type' => 'passthrough', 'exporter' => ['type' => 'void']]],
+ ]);
+ },
+ ]);
+
+ self::assertInstanceOf(PassThroughLogProcessor::class, $this->getContainer()->get('flow.telemetry.logger_provider.processor'));
+ }
+
+ public function test_log_processor_void_type() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'logger_provider' => ['processor' => ['type' => 'void']],
+ ]);
+ },
+ ]);
+
+ self::assertInstanceOf(VoidLogProcessor::class, $this->getContainer()->get('flow.telemetry.logger_provider.processor'));
+ }
+
+ public function test_metric_exporter_console_type() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'meter_provider' => ['processor' => ['type' => 'passthrough', 'exporter' => ['type' => 'console']]],
+ ]);
+ },
+ ]);
+
+ self::assertInstanceOf(ConsoleMetricExporter::class, $this->getContainer()->get('flow.telemetry.meter_provider.processor.exporter'));
+ }
+
+ public function test_metric_exporter_memory_type() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'meter_provider' => ['processor' => ['type' => 'passthrough', 'exporter' => ['type' => 'memory']]],
+ ]);
+ },
+ ]);
+
+ self::assertInstanceOf(MemoryMetricExporter::class, $this->getContainer()->get('flow.telemetry.meter_provider.processor.exporter'));
+ }
+
+ public function test_metric_exporter_void_type() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'meter_provider' => ['processor' => ['type' => 'passthrough', 'exporter' => ['type' => 'void']]],
+ ]);
+ },
+ ]);
+
+ self::assertInstanceOf(VoidMetricExporter::class, $this->getContainer()->get('flow.telemetry.meter_provider.processor.exporter'));
+ }
+
+ public function test_metric_processor_batching_type() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'meter_provider' => ['processor' => ['type' => 'batching', 'batch_size' => 200, 'exporter' => ['type' => 'void']]],
+ ]);
+ },
+ ]);
+
+ self::assertInstanceOf(BatchingMetricProcessor::class, $this->getContainer()->get('flow.telemetry.meter_provider.processor'));
+ }
+
+ public function test_metric_processor_memory_type() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'meter_provider' => ['processor' => ['type' => 'memory', 'exporter' => ['type' => 'void']]],
+ ]);
+ },
+ ]);
+
+ self::assertInstanceOf(MemoryMetricProcessor::class, $this->getContainer()->get('flow.telemetry.meter_provider.processor'));
+ }
+
+ public function test_metric_processor_passthrough_type() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'meter_provider' => ['processor' => ['type' => 'passthrough', 'exporter' => ['type' => 'void']]],
+ ]);
+ },
+ ]);
+
+ self::assertInstanceOf(PassThroughMetricProcessor::class, $this->getContainer()->get('flow.telemetry.meter_provider.processor'));
+ }
+
+ public function test_metric_processor_void_type() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'meter_provider' => ['processor' => ['type' => 'void']],
+ ]);
+ },
+ ]);
+
+ self::assertInstanceOf(VoidMetricProcessor::class, $this->getContainer()->get('flow.telemetry.meter_provider.processor'));
+ }
+
+ public function test_minimal_configuration_creates_telemetry_with_void_processors() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertTrue($container->has('flow.telemetry.clock'));
+ self::assertTrue($container->has('flow.telemetry.context_storage'));
+ self::assertTrue($container->has('flow.telemetry.resource'));
+ self::assertTrue($container->has('flow.telemetry'));
+
+ self::assertInstanceOf(SystemClock::class, $container->get('flow.telemetry.clock'));
+ self::assertInstanceOf(MemoryContextStorage::class, $container->get('flow.telemetry.context_storage'));
+ self::assertInstanceOf(Resource::class, $container->get('flow.telemetry.resource'));
+ self::assertInstanceOf(Telemetry::class, $container->get('flow.telemetry'));
+
+ self::assertTrue($container->has('flow.telemetry.tracer_provider'));
+ self::assertTrue($container->has('flow.telemetry.meter_provider'));
+ self::assertTrue($container->has('flow.telemetry.logger_provider'));
+
+ self::assertInstanceOf(TracerProvider::class, $container->get('flow.telemetry.tracer_provider'));
+ self::assertInstanceOf(MeterProvider::class, $container->get('flow.telemetry.meter_provider'));
+ self::assertInstanceOf(LoggerProvider::class, $container->get('flow.telemetry.logger_provider'));
+
+ self::assertTrue($container->has('flow.telemetry.tracer_provider.processor'));
+ self::assertInstanceOf(VoidSpanProcessor::class, $container->get('flow.telemetry.tracer_provider.processor'));
+
+ self::assertTrue($container->has('flow.telemetry.meter_provider.processor'));
+ self::assertInstanceOf(VoidMetricProcessor::class, $container->get('flow.telemetry.meter_provider.processor'));
+
+ self::assertTrue($container->has('flow.telemetry.logger_provider.processor'));
+ self::assertInstanceOf(VoidLogProcessor::class, $container->get('flow.telemetry.logger_provider.processor'));
+ }
+
+ public function test_multiple_named_services_of_same_type() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracers' => [
+ 'database' => [
+ 'version' => '1.0.0',
+ ],
+ 'http_client' => [
+ 'version' => '2.0.0',
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertTrue($container->has('flow.telemetry.database.tracer'));
+ self::assertTrue($container->has('flow.telemetry.http_client.tracer'));
+ self::assertInstanceOf(Tracer::class, $container->get('flow.telemetry.database.tracer'));
+ self::assertInstanceOf(Tracer::class, $container->get('flow.telemetry.http_client.tracer'));
+ }
+
+ public function test_named_logger_is_registered_as_service() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'loggers' => [
+ 'audit' => [
+ 'version' => '1.0.0',
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertTrue($container->has('flow.telemetry.audit.logger'));
+ self::assertInstanceOf(Logger::class, $container->get('flow.telemetry.audit.logger'));
+ }
+
+ public function test_named_meter_is_registered_as_service() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'meters' => [
+ 'etl_pipeline' => [
+ 'version' => '1.0.0',
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertTrue($container->has('flow.telemetry.etl_pipeline.meter'));
+ self::assertInstanceOf(Meter::class, $container->get('flow.telemetry.etl_pipeline.meter'));
+ }
+
+ public function test_named_tracer_is_registered_as_service() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracers' => [
+ 'database' => [
+ 'version' => '2.0.0',
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertTrue($container->has('flow.telemetry.database.tracer'));
+ self::assertInstanceOf(Tracer::class, $container->get('flow.telemetry.database.tracer'));
+ }
+
+ public function test_named_tracer_with_attributes() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracers' => [
+ 'database' => [
+ 'version' => '2.0.0',
+ 'schema_url' => 'https://opentelemetry.io/schemas/1.20.0',
+ 'attributes' => [
+ 'db.system' => 'postgresql',
+ ],
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+ $tracer = $container->get('flow.telemetry.database.tracer');
+
+ self::assertInstanceOf(Tracer::class, $tracer);
+ }
+
+ public function test_otlp_availability_pass_sets_parameter_when_otlp_not_configured() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ ]);
+ },
+ ]);
+
+ self::assertTrue($this->getContainer()->hasParameter('flow.telemetry.otlp_available'));
+ }
+
+ public function test_resource_caching_can_be_disabled() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [
+ 'detectors' => [
+ 'static' => [
+ 'cache' => ['enabled' => false],
+ ],
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertTrue($container->has('flow.telemetry.resource.detector'));
+ self::assertTrue($container->has('flow.telemetry.resource.detector.static'));
+ }
+
+ public function test_resource_contains_custom_attributes() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [
+ 'custom' => [
+ 'service.name' => 'my-service',
+ 'deployment.environment.name' => 'production',
+ 'host.name' => 'server-01',
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ /** @var resource $resource */
+ $resource = $this->getContainer()->get('flow.telemetry.resource');
+ self::assertSame('my-service', $resource->get('service.name'));
+ self::assertSame('production', $resource->get('deployment.environment.name'));
+ self::assertSame('server-01', $resource->get('host.name'));
+ }
+
+ public function test_resource_detectors_are_enabled_by_default() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertTrue($container->has('flow.telemetry.resource.detector'));
+ self::assertTrue($container->has('flow.telemetry.resource.detector.static'));
+ self::assertTrue($container->has('flow.telemetry.resource.detector.dynamic'));
+ self::assertTrue($container->has('flow.telemetry.resource.detector.os'));
+ self::assertTrue($container->has('flow.telemetry.resource.detector.host'));
+ self::assertTrue($container->has('flow.telemetry.resource.detector.process'));
+ self::assertTrue($container->has('flow.telemetry.resource.detector.service'));
+ self::assertTrue($container->has('flow.telemetry.resource.detector.deployment'));
+ self::assertTrue($container->has('flow.telemetry.resource.detector.environment'));
+
+ /** @var resource $resource */
+ $resource = $container->get('flow.telemetry.resource');
+ self::assertInstanceOf(Resource::class, $resource);
+ }
+
+ public function test_resource_detectors_can_be_disabled() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [
+ 'detectors' => [
+ 'enabled' => false,
+ ],
+ 'custom' => [
+ 'service.name' => 'manual-service',
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertFalse($container->has('flow.telemetry.resource.detector'));
+ self::assertFalse($container->has('flow.telemetry.resource.detector.static'));
+ self::assertFalse($container->has('flow.telemetry.resource.detector.dynamic'));
+
+ /** @var resource $resource */
+ $resource = $container->get('flow.telemetry.resource');
+ self::assertSame('manual-service', $resource->get('service.name'));
+ }
+
+ public function test_resource_individual_detectors_can_be_disabled() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [
+ 'detectors' => [
+ 'static' => [
+ 'os' => ['enabled' => false],
+ ],
+ 'dynamic' => [
+ 'process' => ['enabled' => false],
+ ],
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertFalse($container->has('flow.telemetry.resource.detector.os'));
+ self::assertTrue($container->has('flow.telemetry.resource.detector.host'));
+ self::assertFalse($container->has('flow.telemetry.resource.detector.process'));
+ self::assertTrue($container->has('flow.telemetry.resource.detector.service'));
+ self::assertTrue($container->has('flow.telemetry.resource.detector.deployment'));
+ self::assertTrue($container->has('flow.telemetry.resource.detector.environment'));
+ }
+
+ public function test_same_name_for_different_types_is_allowed() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracers' => [
+ 'database' => ['version' => '1.0.0'],
+ ],
+ 'meters' => [
+ 'database' => ['version' => '1.0.0'],
+ ],
+ 'loggers' => [
+ 'database' => ['version' => '1.0.0'],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertTrue($container->has('flow.telemetry.database.tracer'));
+ self::assertTrue($container->has('flow.telemetry.database.meter'));
+ self::assertTrue($container->has('flow.telemetry.database.logger'));
+ self::assertInstanceOf(Tracer::class, $container->get('flow.telemetry.database.tracer'));
+ self::assertInstanceOf(Meter::class, $container->get('flow.telemetry.database.meter'));
+ self::assertInstanceOf(Logger::class, $container->get('flow.telemetry.database.logger'));
+ }
+
+ public function test_service_exporter_without_service_id_throws_exception() : void
+ {
+ $this->expectException(RuntimeException::class);
+ $this->expectExceptionMessage('service_id is required when exporter type is "service"');
+
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'passthrough',
+ 'exporter' => ['type' => 'service'],
+ ],
+ ],
+ ]);
+ },
+ ]);
+ }
+
+ public function test_service_processor_without_service_id_throws_exception() : void
+ {
+ $this->expectException(RuntimeException::class);
+ $this->expectExceptionMessage('service_id is required when processor type is "service"');
+
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => ['type' => 'service'],
+ ],
+ ]);
+ },
+ ]);
+ }
+
+ public function test_service_sampler_without_service_id_throws_exception() : void
+ {
+ $this->expectException(RuntimeException::class);
+ $this->expectExceptionMessage('service_id is required when sampler type is "service"');
+
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'sampler' => ['type' => 'service'],
+ ],
+ ]);
+ },
+ ]);
+ }
+
+ public function test_span_exporter_console_type() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => ['processor' => ['type' => 'passthrough', 'exporter' => ['type' => 'console']]],
+ ]);
+ },
+ ]);
+
+ self::assertInstanceOf(ConsoleSpanExporter::class, $this->getContainer()->get('flow.telemetry.tracer_provider.processor.exporter'));
+ }
+
+ public function test_span_exporter_memory_type() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => ['processor' => ['type' => 'passthrough', 'exporter' => ['type' => 'memory']]],
+ ]);
+ },
+ ]);
+
+ self::assertInstanceOf(MemorySpanExporter::class, $this->getContainer()->get('flow.telemetry.tracer_provider.processor.exporter'));
+ }
+
+ public function test_span_exporter_void_type() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => ['processor' => ['type' => 'passthrough', 'exporter' => ['type' => 'void']]],
+ ]);
+ },
+ ]);
+
+ self::assertInstanceOf(VoidSpanExporter::class, $this->getContainer()->get('flow.telemetry.tracer_provider.processor.exporter'));
+ }
+
+ public function test_span_processor_batching_type() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => ['processor' => ['type' => 'batching', 'batch_size' => 100, 'exporter' => ['type' => 'void']]],
+ ]);
+ },
+ ]);
+
+ self::assertInstanceOf(BatchingSpanProcessor::class, $this->getContainer()->get('flow.telemetry.tracer_provider.processor'));
+ }
+
+ public function test_span_processor_memory_type() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => ['processor' => ['type' => 'memory', 'exporter' => ['type' => 'void']]],
+ ]);
+ },
+ ]);
+
+ self::assertInstanceOf(MemorySpanProcessor::class, $this->getContainer()->get('flow.telemetry.tracer_provider.processor'));
+ }
+
+ public function test_span_processor_passthrough_type() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => ['processor' => ['type' => 'passthrough', 'exporter' => ['type' => 'void']]],
+ ]);
+ },
+ ]);
+
+ self::assertInstanceOf(PassThroughSpanProcessor::class, $this->getContainer()->get('flow.telemetry.tracer_provider.processor'));
+ }
+
+ public function test_span_processor_void_type() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => ['processor' => ['type' => 'void']],
+ ]);
+ },
+ ]);
+
+ self::assertInstanceOf(VoidSpanProcessor::class, $this->getContainer()->get('flow.telemetry.tracer_provider.processor'));
+ }
+
+ public function test_tracer_provider_with_always_off_sampler() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'sampler' => ['type' => 'always_off'],
+ ],
+ ]);
+ },
+ ]);
+
+ self::assertInstanceOf(AlwaysOffSampler::class, $this->getContainer()->get('flow.telemetry.tracer_provider.sampler'));
+ }
+
+ public function test_tracer_provider_with_always_on_sampler() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'sampler' => ['type' => 'always_on'],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertTrue($container->has('flow.telemetry.tracer_provider.sampler'));
+ self::assertInstanceOf(AlwaysOnSampler::class, $container->get('flow.telemetry.tracer_provider.sampler'));
+ }
+
+ public function test_tracer_provider_with_parent_based_sampler() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'sampler' => ['type' => 'parent_based'],
+ ],
+ ]);
+ },
+ ]);
+
+ self::assertInstanceOf(ParentBasedSampler::class, $this->getContainer()->get('flow.telemetry.tracer_provider.sampler'));
+ }
+
+ public function test_tracer_provider_with_trace_id_ratio_sampler() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'sampler' => [
+ 'type' => 'trace_id_ratio',
+ 'ratio' => 0.5,
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ self::assertInstanceOf(TraceIdRatioBasedSampler::class, $this->getContainer()->get('flow.telemetry.tracer_provider.sampler'));
+ }
+}
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
new file mode 100644
index 0000000000..59343c886b
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/Cache/TraceableCacheAdapterTest.php
@@ -0,0 +1,546 @@
+bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->register('test.cache.app', ArrayCacheAdapter::class)
+ ->addTag('cache.pool')
+ ->setPublic(true);
+
+ $container->register('test.cache.secondary', ArrayCacheAdapter::class)
+ ->addTag('cache.pool')
+ ->setPublic(true);
+ });
+
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'cache' => true,
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertInstanceOf(TraceableCacheAdapter::class, $container->get('test.cache.app'));
+ self::assertInstanceOf(TraceableCacheAdapter::class, $container->get('test.cache.secondary'));
+ }
+
+ public function test_decorator_not_registered_when_feature_disabled() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->register('test.cache.app', ArrayCacheAdapter::class)
+ ->addTag('cache.pool')
+ ->setPublic(true);
+ });
+
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'instrumentation' => [
+ 'cache' => false,
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertInstanceOf(ArrayCacheAdapter::class, $container->get('test.cache.app'));
+ }
+
+ public function test_excluded_pool_by_exact_id_is_not_wrapped() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->register('test.cache.app', ArrayCacheAdapter::class)
+ ->addTag('cache.pool')
+ ->setPublic(true);
+
+ $container->register('test.cache.validator', ArrayCacheAdapter::class)
+ ->addTag('cache.pool')
+ ->setPublic(true);
+ });
+
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'cache' => [
+ 'enabled' => true,
+ 'exclude_pools' => ['test.cache.validator'],
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertInstanceOf(TraceableCacheAdapter::class, $container->get('test.cache.app'));
+ self::assertInstanceOf(ArrayCacheAdapter::class, $container->get('test.cache.validator'));
+ }
+
+ public function test_excluded_pool_by_regex_is_not_wrapped() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->register('test.cache.app', ArrayCacheAdapter::class)
+ ->addTag('cache.pool')
+ ->setPublic(true);
+
+ $container->register('test.cache.profiler.first', ArrayCacheAdapter::class)
+ ->addTag('cache.pool')
+ ->setPublic(true);
+
+ $container->register('test.cache.profiler.second', ArrayCacheAdapter::class)
+ ->addTag('cache.pool')
+ ->setPublic(true);
+ });
+
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'cache' => [
+ 'enabled' => true,
+ 'exclude_pools' => ['/^test\\.cache\\.profiler\\..*/'],
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertInstanceOf(TraceableCacheAdapter::class, $container->get('test.cache.app'));
+ self::assertInstanceOf(ArrayCacheAdapter::class, $container->get('test.cache.profiler.first'));
+ self::assertInstanceOf(ArrayCacheAdapter::class, $container->get('test.cache.profiler.second'));
+ }
+
+ public function test_get_item_records_hit_miss() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->register('test.cache.app', ArrayCacheAdapter::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,
+ 'messenger' => false,
+ 'cache' => true,
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var TraceableCacheAdapter $cache */
+ $cache = $container->get('test.cache.app');
+
+ $item = $cache->getItem('missing-key');
+ self::assertFalse($item->isHit());
+
+ $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];
+
+ self::assertSame('cache getItem', $getItemSpan->name());
+ self::assertTrue($getItemSpan->attributes()['cache.hit']);
+ }
+
+ public function test_get_items_records_hits_and_misses() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->register('test.cache.app', ArrayCacheAdapter::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,
+ 'messenger' => false,
+ 'cache' => true,
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var TraceableCacheAdapter $cache */
+ $cache = $container->get('test.cache.app');
+
+ $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];
+
+ 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']);
+ }
+
+ 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.tags', TagAwareArrayCacheAdapter::class)
+ ->addTag('cache.pool')
+ ->setPublic(true);
+ });
+
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'cache' => true,
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertInstanceOf(TagAwareTraceableCacheAdapter::class, $container->get('test.cache.tags'));
+ }
+
+ 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.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,
+ 'messenger' => false,
+ 'cache' => true,
+ ],
+ ]);
+ },
+ ]);
+
+ $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();
+
+ self::assertCount(1, $spans);
+
+ $span = $spans[0];
+ self::assertSame('cache invalidateTags', $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']);
+ }
+
+ public function test_wrapped_cache_creates_span_for_get_operation() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->register('test.cache.app', ArrayCacheAdapter::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,
+ 'messenger' => false,
+ 'cache' => true,
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var TraceableCacheAdapter $cache */
+ $cache = $container->get('test.cache.app');
+ $cache->get('my-key', static fn () => 'my-value');
+
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ self::assertCount(1, $spans);
+
+ $span = $spans[0];
+ self::assertSame('cache get', $span->name());
+ self::assertSame(SpanKind::CLIENT, $span->kind());
+
+ $attributes = $span->attributes();
+ self::assertSame('get', $attributes['cache.operation']);
+ self::assertSame('test.cache.app', $attributes['cache.pool']);
+ self::assertSame('my-key', $attributes['cache.key']);
+ }
+
+ public function test_wrapped_cache_records_cache_hit() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->register('test.cache.app', ArrayCacheAdapter::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,
+ 'messenger' => false,
+ 'cache' => true,
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @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 MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ self::assertCount(2, $spans);
+
+ $firstSpan = $spans[0];
+ self::assertFalse($firstSpan->attributes()['cache.hit']);
+
+ $secondSpan = $spans[1];
+ self::assertTrue($secondSpan->attributes()['cache.hit']);
+ }
+
+ public function test_wrapped_cache_records_cache_miss() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->register('test.cache.app', ArrayCacheAdapter::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,
+ 'messenger' => false,
+ 'cache' => true,
+ ],
+ ]);
+ },
+ ]);
+
+ $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']);
+ }
+
+ public function test_wrapped_cache_records_exception() : 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')
+ ->addTag('cache.pool')
+ ->setPublic(true);
+ });
+
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'cache' => true,
+ ],
+ ]);
+ },
+ ]);
+
+ $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 MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ 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());
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/Console/ConsoleFlushSubscriberTest.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/Console/ConsoleFlushSubscriberTest.php
new file mode 100644
index 0000000000..37a890749b
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/Console/ConsoleFlushSubscriberTest.php
@@ -0,0 +1,127 @@
+bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestBundle(FrameworkBundle::class);
+ $kernel->addTestExtensionConfig('framework', [
+ 'router' => [
+ 'utf8' => true,
+ 'resource' => __DIR__ . '/../../../Fixtures/config/routes.php',
+ ],
+ 'http_method_override' => false,
+ 'handle_all_throwables' => true,
+ ]);
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'batching',
+ 'batch_size' => 100,
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => ['enabled' => false],
+ 'console' => ['enabled' => true],
+ 'messenger' => false,
+ ],
+ ]);
+ },
+ ]);
+
+ $application = new Application($kernel);
+ $application->add(new TestCommand());
+ $application->setAutoExit(false);
+ $application->setCatchExceptions(false);
+
+ $input = new ArrayInput(['command' => 'test:command']);
+ $output = new BufferedOutput();
+
+ $exitCode = $application->run($input, $output);
+
+ self::assertSame(0, $exitCode);
+
+ $container = $this->getContainer();
+ /** @var MemorySpanExporter $exporter */
+ $exporter = $container->get('flow.telemetry.tracer_provider.processor.exporter');
+ $spans = $exporter->spans();
+
+ self::assertCount(1, $spans, 'Spans should be exported after console terminate when flush is called');
+ }
+
+ public function test_flush_is_not_called_when_console_instrumentation_is_disabled() : void
+ {
+ $kernel = $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestBundle(FrameworkBundle::class);
+ $kernel->addTestExtensionConfig('framework', [
+ 'router' => [
+ 'utf8' => true,
+ 'resource' => __DIR__ . '/../../../Fixtures/config/routes.php',
+ ],
+ 'http_method_override' => false,
+ 'handle_all_throwables' => true,
+ ]);
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'batching',
+ 'batch_size' => 100,
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => ['enabled' => false],
+ 'console' => ['enabled' => false],
+ 'messenger' => false,
+ ],
+ ]);
+ },
+ ]);
+
+ $application = new Application($kernel);
+ $application->add(new TestCommand());
+ $application->setAutoExit(false);
+ $application->setCatchExceptions(false);
+
+ $input = new ArrayInput(['command' => 'test:command']);
+ $output = new BufferedOutput();
+
+ $application->run($input, $output);
+
+ $container = $this->getContainer();
+ /** @var MemorySpanExporter $exporter */
+ $exporter = $container->get('flow.telemetry.tracer_provider.processor.exporter');
+ $spans = $exporter->spans();
+
+ self::assertCount(0, $spans, 'No spans should be exported when instrumentation is disabled');
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/Console/ConsoleSpanSubscriberTest.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/Console/ConsoleSpanSubscriberTest.php
new file mode 100644
index 0000000000..3d67124b0e
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/Console/ConsoleSpanSubscriberTest.php
@@ -0,0 +1,305 @@
+bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestBundle(FrameworkBundle::class);
+ $kernel->addTestExtensionConfig('framework', [
+ 'router' => [
+ 'utf8' => true,
+ 'resource' => __DIR__ . '/../../../Fixtures/config/routes.php',
+ ],
+ 'http_method_override' => false,
+ 'handle_all_throwables' => true,
+ ]);
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => ['enabled' => false],
+ 'console' => ['enabled' => false],
+ 'messenger' => false,
+ ],
+ ]);
+ },
+ ]);
+
+ $application = new Application($kernel);
+ $application->add(new TestCommand());
+ $application->setAutoExit(false);
+ $application->setCatchExceptions(false);
+
+ $input = new ArrayInput(['command' => 'test:command']);
+ $output = new BufferedOutput();
+
+ $application->run($input, $output);
+
+ $container = $this->getContainer();
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ self::assertCount(0, $spans);
+ }
+
+ public function test_excludes_command_with_exact_match() : void
+ {
+ $kernel = $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestBundle(FrameworkBundle::class);
+ $kernel->addTestExtensionConfig('framework', [
+ 'router' => [
+ 'utf8' => true,
+ 'resource' => __DIR__ . '/../../../Fixtures/config/routes.php',
+ ],
+ 'http_method_override' => false,
+ 'handle_all_throwables' => true,
+ ]);
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => ['enabled' => false],
+ 'console' => [
+ 'enabled' => true,
+ 'exclude_commands' => ['test:command'],
+ ],
+ 'messenger' => false,
+ ],
+ ]);
+ },
+ ]);
+
+ $application = new Application($kernel);
+ $application->add(new TestCommand());
+ $application->setAutoExit(false);
+ $application->setCatchExceptions(false);
+
+ $input = new ArrayInput(['command' => 'test:command']);
+ $output = new BufferedOutput();
+
+ $application->run($input, $output);
+
+ $container = $this->getContainer();
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ self::assertCount(0, $spans);
+ }
+
+ public function test_excludes_command_with_regex_pattern() : void
+ {
+ $kernel = $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestBundle(FrameworkBundle::class);
+ $kernel->addTestExtensionConfig('framework', [
+ 'router' => [
+ 'utf8' => true,
+ 'resource' => __DIR__ . '/../../../Fixtures/config/routes.php',
+ ],
+ 'http_method_override' => false,
+ 'handle_all_throwables' => true,
+ ]);
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => ['enabled' => false],
+ 'console' => [
+ 'enabled' => true,
+ 'exclude_commands' => ['/^test:.*/'],
+ ],
+ 'messenger' => false,
+ ],
+ ]);
+ },
+ ]);
+
+ $application = new Application($kernel);
+ $application->add(new TestCommand());
+ $application->add(new FailingCommand());
+ $application->setAutoExit(false);
+ $application->setCatchExceptions(false);
+
+ $input = new ArrayInput(['command' => 'test:command']);
+ $output = new BufferedOutput();
+
+ $application->run($input, $output);
+
+ $input = new ArrayInput(['command' => 'test:failing']);
+ $application->run($input, $output);
+
+ $container = $this->getContainer();
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ self::assertCount(0, $spans, 'Both test:command and test:failing should be excluded by regex');
+ }
+
+ public function test_traces_failing_console_command() : void
+ {
+ $kernel = $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestBundle(FrameworkBundle::class);
+ $kernel->addTestExtensionConfig('framework', [
+ 'router' => [
+ 'utf8' => true,
+ 'resource' => __DIR__ . '/../../../Fixtures/config/routes.php',
+ ],
+ 'http_method_override' => false,
+ 'handle_all_throwables' => true,
+ ]);
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => ['enabled' => false],
+ 'console' => ['enabled' => true],
+ 'messenger' => false,
+ ],
+ ]);
+ },
+ ]);
+
+ $application = new Application($kernel);
+ $application->add(new FailingCommand());
+ $application->setAutoExit(false);
+ $application->setCatchExceptions(false);
+
+ $input = new ArrayInput(['command' => 'test:failing']);
+ $output = new BufferedOutput();
+
+ $exitCode = $application->run($input, $output);
+
+ self::assertSame(1, $exitCode);
+
+ $container = $this->getContainer();
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ self::assertCount(1, $spans);
+
+ $span = $spans[0];
+ self::assertSame('test:failing', $span->name());
+
+ $attributes = $span->attributes();
+ self::assertSame(1, $attributes['process.exit_code']);
+
+ $status = $span->status();
+ self::assertNotNull($status);
+ self::assertSame('Exit code: 1', $status->description);
+ }
+
+ public function test_traces_successful_console_command() : void
+ {
+ $kernel = $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestBundle(FrameworkBundle::class);
+ $kernel->addTestExtensionConfig('framework', [
+ 'router' => [
+ 'utf8' => true,
+ 'resource' => __DIR__ . '/../../../Fixtures/config/routes.php',
+ ],
+ 'http_method_override' => false,
+ 'handle_all_throwables' => true,
+ ]);
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => ['enabled' => false],
+ 'console' => ['enabled' => true],
+ 'messenger' => false,
+ ],
+ ]);
+ },
+ ]);
+
+ $application = new Application($kernel);
+ $application->add(new TestCommand());
+ $application->setAutoExit(false);
+ $application->setCatchExceptions(false);
+
+ $input = new ArrayInput(['command' => 'test:command']);
+ $output = new BufferedOutput();
+
+ $exitCode = $application->run($input, $output);
+
+ self::assertSame(0, $exitCode);
+
+ $container = $this->getContainer();
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ self::assertCount(1, $spans);
+
+ $span = $spans[0];
+ self::assertSame('test:command', $span->name());
+ self::assertSame(SpanKind::INTERNAL, $span->kind());
+
+ $attributes = $span->attributes();
+ self::assertSame('test:command', $attributes['command.name']);
+ self::assertSame(TestCommand::class, $attributes['command.class']);
+ self::assertSame(0, $attributes['process.exit_code']);
+
+ $status = $span->status();
+ self::assertNotNull($status);
+ self::assertTrue($status->isOk());
+ }
+}
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
new file mode 100644
index 0000000000..92b6ae5022
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/Doctrine/DBAL/TracingMiddlewareTest.php
@@ -0,0 +1,774 @@
+bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->setParameter('doctrine.connections', ['default' => 'doctrine.dbal.default_connection']);
+ });
+
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'dbal' => ['enabled' => true],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var TracingMiddleware $middleware */
+ $middleware = $container->get('flow.telemetry.dbal.middleware.default');
+
+ $configuration = new Configuration();
+ $configuration->setMiddlewares([$middleware]);
+
+ $connection = DriverManager::getConnection([
+ 'driver' => 'pdo_sqlite',
+ 'memory' => true,
+ ], $configuration);
+
+ $connection->executeQuery('SELECT 1');
+
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ $connectionSpan = null;
+
+ foreach ($spans as $span) {
+ if ($span->name() === 'doctrine.dbal.connection') {
+ $connectionSpan = $span;
+ }
+ }
+
+ self::assertNotNull($connectionSpan, 'Connection span should exist');
+ self::assertSame('sqlite', $connectionSpan->attributes()['db.system']);
+ self::assertSame('default', $connectionSpan->attributes()['db.connection.name']);
+ }
+
+ public function test_dbal_middleware_is_not_registered_when_feature_disabled() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->setParameter('doctrine.connections', ['default' => 'doctrine.dbal.default_connection']);
+ });
+
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'dbal' => ['enabled' => false],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertFalse($container->has('flow.telemetry.dbal.middleware.default'));
+ }
+
+ public function test_dbal_middleware_is_registered_for_multiple_connections() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->setParameter('doctrine.connections', [
+ 'default' => 'doctrine.dbal.default_connection',
+ 'secondary' => 'doctrine.dbal.secondary_connection',
+ ]);
+ });
+
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'dbal' => ['enabled' => true],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertTrue($container->has('flow.telemetry.dbal.middleware.default'));
+ self::assertTrue($container->has('flow.telemetry.dbal.middleware.secondary'));
+ self::assertInstanceOf(TracingMiddleware::class, $container->get('flow.telemetry.dbal.middleware.default'));
+ self::assertInstanceOf(TracingMiddleware::class, $container->get('flow.telemetry.dbal.middleware.secondary'));
+ }
+
+ public function test_dbal_middleware_is_registered_when_feature_enabled() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->setParameter('doctrine.connections', ['default' => 'doctrine.dbal.default_connection']);
+ });
+
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'dbal' => ['enabled' => true],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertTrue($container->has('flow.telemetry.dbal.middleware.default'));
+ self::assertInstanceOf(TracingMiddleware::class, $container->get('flow.telemetry.dbal.middleware.default'));
+ }
+
+ public function test_excluded_connection_by_exact_name_is_not_traced() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->setParameter('doctrine.connections', [
+ 'default' => 'doctrine.dbal.default_connection',
+ 'legacy' => 'doctrine.dbal.legacy_connection',
+ ]);
+ });
+
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'dbal' => [
+ 'enabled' => true,
+ 'exclude_connections' => ['legacy'],
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertTrue($container->has('flow.telemetry.dbal.middleware.default'));
+ self::assertFalse($container->has('flow.telemetry.dbal.middleware.legacy'));
+ }
+
+ public function test_excluded_connections_by_regex_pattern_are_not_traced() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->setParameter('doctrine.connections', [
+ 'default' => 'doctrine.dbal.default_connection',
+ 'debug_primary' => 'doctrine.dbal.debug_primary_connection',
+ 'debug_secondary' => 'doctrine.dbal.debug_secondary_connection',
+ ]);
+ });
+
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'dbal' => [
+ 'enabled' => true,
+ 'exclude_connections' => ['/^debug_.*/'],
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertTrue($container->has('flow.telemetry.dbal.middleware.default'));
+ self::assertFalse($container->has('flow.telemetry.dbal.middleware.debug_primary'));
+ self::assertFalse($container->has('flow.telemetry.dbal.middleware.debug_secondary'));
+ }
+
+ public function test_exec_creates_span_with_sql_attribute() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->setParameter('doctrine.connections', ['default' => 'doctrine.dbal.default_connection']);
+ });
+
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'dbal' => ['enabled' => true, 'log_sql' => true],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var TracingMiddleware $middleware */
+ $middleware = $container->get('flow.telemetry.dbal.middleware.default');
+
+ $configuration = new Configuration();
+ $configuration->setMiddlewares([$middleware]);
+
+ $connection = DriverManager::getConnection([
+ 'driver' => 'pdo_sqlite',
+ 'memory' => true,
+ ], $configuration);
+
+ $connection->executeStatement('CREATE TABLE test_table (id INTEGER PRIMARY KEY, name TEXT)');
+
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ $execSpan = null;
+
+ foreach ($spans as $span) {
+ if ($span->name() === 'doctrine.dbal.connection.exec') {
+ $execSpan = $span;
+ }
+ }
+
+ self::assertNotNull($execSpan, 'Exec span should exist');
+ self::assertSame(SpanKind::CLIENT, $execSpan->kind());
+ self::assertSame('CREATE TABLE test_table (id INTEGER PRIMARY KEY, name TEXT)', $execSpan->attributes()['db.query.text']);
+ self::assertTrue($execSpan->status()?->isOk());
+ }
+
+ public function test_failed_transaction_creates_rollback_span() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->setParameter('doctrine.connections', ['default' => 'doctrine.dbal.default_connection']);
+ });
+
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'dbal' => ['enabled' => true, 'log_sql' => true],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var TracingMiddleware $middleware */
+ $middleware = $container->get('flow.telemetry.dbal.middleware.default');
+
+ $configuration = new Configuration();
+ $configuration->setMiddlewares([$middleware]);
+
+ $connection = DriverManager::getConnection([
+ 'driver' => 'pdo_sqlite',
+ 'memory' => true,
+ ], $configuration);
+
+ $connection->executeStatement('CREATE TABLE test_table (id INTEGER PRIMARY KEY, name TEXT)');
+
+ $connection->beginTransaction();
+ $connection->executeStatement('INSERT INTO test_table (name) VALUES ("test")');
+ $connection->rollBack();
+
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ $spanNames = \array_map(static fn ($s) => $s->name(), $spans);
+
+ self::assertContains('doctrine.dbal.transaction.begin', $spanNames);
+ self::assertContains('doctrine.dbal.transaction.rollback', $spanNames);
+ self::assertNotContains('doctrine.dbal.transaction.commit', $spanNames);
+
+ $rollbackSpan = null;
+
+ foreach ($spans as $span) {
+ if ($span->name() === 'doctrine.dbal.transaction.rollback') {
+ $rollbackSpan = $span;
+ }
+ }
+
+ self::assertNotNull($rollbackSpan, 'Rollback span should exist');
+ self::assertSame(SpanKind::CLIENT, $rollbackSpan->kind());
+ self::assertTrue($rollbackSpan->status()?->isOk());
+ }
+
+ public function test_long_sql_is_truncated_when_max_length_configured() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->setParameter('doctrine.connections', ['default' => 'doctrine.dbal.default_connection']);
+ });
+
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'dbal' => [
+ 'enabled' => true,
+ 'log_sql' => true,
+ 'max_sql_length' => 20,
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var TracingMiddleware $middleware */
+ $middleware = $container->get('flow.telemetry.dbal.middleware.default');
+
+ $configuration = new Configuration();
+ $configuration->setMiddlewares([$middleware]);
+
+ $connection = DriverManager::getConnection([
+ 'driver' => 'pdo_sqlite',
+ 'memory' => true,
+ ], $configuration);
+
+ $connection->executeStatement('CREATE TABLE test_table_with_very_long_name (id INTEGER PRIMARY KEY, name TEXT)');
+ $connection->executeQuery('SELECT * FROM test_table_with_very_long_name WHERE id = 1');
+
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ $querySpan = null;
+
+ foreach ($spans as $span) {
+ if ($span->name() === 'doctrine.dbal.connection.query') {
+ $querySpan = $span;
+ }
+ }
+
+ self::assertNotNull($querySpan, 'Query span should exist');
+
+ $truncatedSql = $querySpan->attributes()['db.query.text'];
+ self::assertSame('SELECT * FROM test_t...', $truncatedSql);
+ self::assertSame(23, \mb_strlen($truncatedSql));
+ }
+
+ public function test_prepared_statement_creates_prepare_and_execute_spans() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->setParameter('doctrine.connections', ['default' => 'doctrine.dbal.default_connection']);
+ });
+
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'dbal' => ['enabled' => true, 'log_sql' => true],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var TracingMiddleware $middleware */
+ $middleware = $container->get('flow.telemetry.dbal.middleware.default');
+
+ $configuration = new Configuration();
+ $configuration->setMiddlewares([$middleware]);
+
+ $connection = DriverManager::getConnection([
+ 'driver' => 'pdo_sqlite',
+ 'memory' => true,
+ ], $configuration);
+
+ $connection->executeStatement('CREATE TABLE test_table (id INTEGER PRIMARY KEY, name TEXT)');
+
+ $stmt = $connection->prepare('INSERT INTO test_table (name) VALUES (:name)');
+ $stmt->bindValue('name', 'test_value');
+ $stmt->executeStatement();
+
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ $spanNames = \array_map(static fn ($s) => $s->name(), $spans);
+
+ self::assertContains('doctrine.dbal.connection', $spanNames);
+ self::assertContains('doctrine.dbal.connection.exec', $spanNames);
+ self::assertContains('doctrine.dbal.statement.prepare', $spanNames);
+ self::assertContains('doctrine.dbal.statement.execute', $spanNames);
+
+ $prepareSpan = null;
+ $executeSpan = null;
+
+ foreach ($spans as $span) {
+ if ($span->name() === 'doctrine.dbal.statement.prepare') {
+ $prepareSpan = $span;
+ }
+
+ if ($span->name() === 'doctrine.dbal.statement.execute') {
+ $executeSpan = $span;
+ }
+ }
+
+ self::assertNotNull($prepareSpan, 'Prepare span should exist');
+ self::assertSame('INSERT INTO test_table (name) VALUES (:name)', $prepareSpan->attributes()['db.query.text']);
+ self::assertTrue($prepareSpan->status()?->isOk());
+
+ self::assertNotNull($executeSpan, 'Execute span should exist');
+ self::assertTrue($executeSpan->status()?->isOk());
+ }
+
+ public function test_query_creates_span_with_sql_attribute() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->setParameter('doctrine.connections', ['default' => 'doctrine.dbal.default_connection']);
+ });
+
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'dbal' => ['enabled' => true, 'log_sql' => true],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var TracingMiddleware $middleware */
+ $middleware = $container->get('flow.telemetry.dbal.middleware.default');
+
+ $configuration = new Configuration();
+ $configuration->setMiddlewares([$middleware]);
+
+ $connection = DriverManager::getConnection([
+ 'driver' => 'pdo_sqlite',
+ 'memory' => true,
+ ], $configuration);
+
+ $connection->executeQuery('SELECT 1 as value');
+
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ self::assertCount(2, $spans);
+
+ $connectionSpan = $spans[0];
+ self::assertSame('doctrine.dbal.connection', $connectionSpan->name());
+ self::assertSame(SpanKind::CLIENT, $connectionSpan->kind());
+ self::assertSame('default', $connectionSpan->attributes()['db.connection.name']);
+ self::assertTrue($connectionSpan->status()?->isOk());
+
+ $querySpan = $spans[1];
+ self::assertSame('doctrine.dbal.connection.query', $querySpan->name());
+ self::assertSame(SpanKind::CLIENT, $querySpan->kind());
+ self::assertSame('SELECT 1 as value', $querySpan->attributes()['db.query.text']);
+ self::assertTrue($querySpan->status()?->isOk());
+ }
+
+ public function test_query_error_creates_span_with_error_status() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->setParameter('doctrine.connections', ['default' => 'doctrine.dbal.default_connection']);
+ });
+
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'dbal' => ['enabled' => true, 'log_sql' => true],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var TracingMiddleware $middleware */
+ $middleware = $container->get('flow.telemetry.dbal.middleware.default');
+
+ $configuration = new Configuration();
+ $configuration->setMiddlewares([$middleware]);
+
+ $connection = DriverManager::getConnection([
+ 'driver' => 'pdo_sqlite',
+ 'memory' => true,
+ ], $configuration);
+
+ $exceptionThrown = false;
+
+ try {
+ $connection->executeQuery('SELECT * FROM non_existent_table');
+ } catch (\Exception) {
+ $exceptionThrown = true;
+ }
+
+ self::assertTrue($exceptionThrown, 'Expected exception was not thrown');
+
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ $querySpan = null;
+
+ foreach ($spans as $span) {
+ if ($span->name() === 'doctrine.dbal.connection.query') {
+ $querySpan = $span;
+ }
+ }
+
+ self::assertNotNull($querySpan, 'Query span should exist');
+ self::assertSame('SELECT * FROM non_existent_table', $querySpan->attributes()['db.query.text']);
+
+ $status = $querySpan->status();
+ self::assertNotNull($status);
+ self::assertTrue($status->isError());
+
+ $events = $querySpan->events();
+ self::assertCount(1, $events);
+ self::assertSame('exception', $events[0]->name());
+ }
+
+ public function test_sql_not_logged_when_log_sql_disabled() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->setParameter('doctrine.connections', ['default' => 'doctrine.dbal.default_connection']);
+ });
+
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'dbal' => [
+ 'enabled' => true,
+ 'log_sql' => false,
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var TracingMiddleware $middleware */
+ $middleware = $container->get('flow.telemetry.dbal.middleware.default');
+
+ $configuration = new Configuration();
+ $configuration->setMiddlewares([$middleware]);
+
+ $connection = DriverManager::getConnection([
+ 'driver' => 'pdo_sqlite',
+ 'memory' => true,
+ ], $configuration);
+
+ $connection->executeQuery('SELECT 1 as value');
+
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ $querySpan = null;
+
+ foreach ($spans as $span) {
+ if ($span->name() === 'doctrine.dbal.connection.query') {
+ $querySpan = $span;
+ }
+ }
+
+ self::assertNotNull($querySpan, 'Query span should exist');
+ self::assertArrayNotHasKey('db.query.text', $querySpan->attributes());
+ }
+
+ public function test_transaction_creates_begin_commit_spans() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->setParameter('doctrine.connections', ['default' => 'doctrine.dbal.default_connection']);
+ });
+
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'dbal' => ['enabled' => true, 'log_sql' => true],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var TracingMiddleware $middleware */
+ $middleware = $container->get('flow.telemetry.dbal.middleware.default');
+
+ $configuration = new Configuration();
+ $configuration->setMiddlewares([$middleware]);
+
+ $connection = DriverManager::getConnection([
+ 'driver' => 'pdo_sqlite',
+ 'memory' => true,
+ ], $configuration);
+
+ $connection->executeStatement('CREATE TABLE test_table (id INTEGER PRIMARY KEY, name TEXT)');
+
+ $connection->beginTransaction();
+ $connection->executeStatement('INSERT INTO test_table (name) VALUES ("test")');
+ $connection->commit();
+
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ $spanNames = \array_map(static fn ($s) => $s->name(), $spans);
+
+ self::assertContains('doctrine.dbal.transaction.begin', $spanNames);
+ self::assertContains('doctrine.dbal.transaction.commit', $spanNames);
+
+ $beginSpan = null;
+ $commitSpan = null;
+
+ foreach ($spans as $span) {
+ if ($span->name() === 'doctrine.dbal.transaction.begin') {
+ $beginSpan = $span;
+ }
+
+ if ($span->name() === 'doctrine.dbal.transaction.commit') {
+ $commitSpan = $span;
+ }
+ }
+
+ self::assertNotNull($beginSpan, 'Begin transaction span should exist');
+ self::assertSame(SpanKind::CLIENT, $beginSpan->kind());
+ self::assertTrue($beginSpan->status()?->isOk());
+
+ self::assertNotNull($commitSpan, 'Commit span should exist');
+ self::assertSame(SpanKind::CLIENT, $commitSpan->kind());
+ self::assertTrue($commitSpan->status()?->isOk());
+ }
+}
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
new file mode 100644
index 0000000000..324060436a
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/HttpClient/TracableHttpClientTest.php
@@ -0,0 +1,342 @@
+bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->register('test.api_client', SuccessHttpClient::class)
+ ->addArgument(200)
+ ->addTag('http_client.client')
+ ->setPublic(true);
+
+ $container->register('test.internal_client', SuccessHttpClient::class)
+ ->addArgument(200)
+ ->addTag('http_client.client')
+ ->setPublic(true);
+ });
+
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'http_client' => true,
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertInstanceOf(TracableHttpClient::class, $container->get('test.api_client'));
+ self::assertInstanceOf(TracableHttpClient::class, $container->get('test.internal_client'));
+ }
+
+ public function test_decorator_not_registered_when_feature_disabled() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->register('test.api_client', SuccessHttpClient::class)
+ ->addArgument(200)
+ ->addTag('http_client.client')
+ ->setPublic(true);
+ });
+
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'instrumentation' => [
+ 'http_client' => false,
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertInstanceOf(SuccessHttpClient::class, $container->get('test.api_client'));
+ }
+
+ public function test_excluded_client_by_exact_id_is_not_wrapped() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->register('test.api_client', SuccessHttpClient::class)
+ ->addArgument(200)
+ ->addTag('http_client.client')
+ ->setPublic(true);
+
+ $container->register('test.internal_client', SuccessHttpClient::class)
+ ->addArgument(200)
+ ->addTag('http_client.client')
+ ->setPublic(true);
+ });
+
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'http_client' => [
+ 'enabled' => true,
+ 'exclude_clients' => ['test.internal_client'],
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertInstanceOf(TracableHttpClient::class, $container->get('test.api_client'));
+ self::assertInstanceOf(SuccessHttpClient::class, $container->get('test.internal_client'));
+ }
+
+ public function test_excluded_clients_by_regex_pattern_are_not_wrapped() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->register('test.api_client', SuccessHttpClient::class)
+ ->addArgument(200)
+ ->addTag('http_client.client')
+ ->setPublic(true);
+
+ $container->register('test.debug.client', SuccessHttpClient::class)
+ ->addArgument(200)
+ ->addTag('http_client.client')
+ ->setPublic(true);
+
+ $container->register('test.debug.another', SuccessHttpClient::class)
+ ->addArgument(200)
+ ->addTag('http_client.client')
+ ->setPublic(true);
+ });
+
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'http_client' => [
+ 'enabled' => true,
+ 'exclude_clients' => ['/^test\\.debug\\..*/'],
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertInstanceOf(TracableHttpClient::class, $container->get('test.api_client'));
+ self::assertInstanceOf(SuccessHttpClient::class, $container->get('test.debug.client'));
+ self::assertInstanceOf(SuccessHttpClient::class, $container->get('test.debug.another'));
+ }
+
+ public function test_wrapped_client_creates_error_span_for_http_error_response() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->register('test.error_client', SuccessHttpClient::class)
+ ->addArgument(500)
+ ->addTag('http_client.client')
+ ->setPublic(true);
+ });
+
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'http_client' => true,
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var HttpClientInterface $client */
+ $client = $container->get('test.error_client');
+ $client->request('POST', 'http://localhost:8080/api/data');
+
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ self::assertCount(1, $spans);
+
+ $span = $spans[0];
+ self::assertSame('POST localhost', $span->name());
+ self::assertSame(500, $span->attributes()['http.status_code']);
+
+ $status = $span->status();
+ self::assertNotNull($status);
+ self::assertTrue($status->isError());
+ self::assertSame('HTTP 500', $status->description);
+ }
+
+ public function test_wrapped_client_creates_span_with_correct_attributes() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->register('test.api_client', SuccessHttpClient::class)
+ ->addArgument(200)
+ ->addTag('http_client.client')
+ ->setPublic(true);
+ });
+
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'http_client' => true,
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var HttpClientInterface $client */
+ $client = $container->get('test.api_client');
+ $client->request('GET', 'https://api.example.com/users?page=1');
+
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ self::assertCount(1, $spans);
+
+ $span = $spans[0];
+ self::assertSame('GET api.example.com', $span->name());
+ 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('test.api_client', $attributes['http.client.name']);
+ self::assertSame(200, $attributes['http.status_code']);
+
+ $status = $span->status();
+ self::assertNotNull($status);
+ self::assertTrue($status->isOk());
+ }
+
+ public function test_wrapped_client_records_exception_and_creates_error_span() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->register('test.failing_client', FailingHttpClient::class)
+ ->addArgument('Connection refused')
+ ->addTag('http_client.client')
+ ->setPublic(true);
+ });
+
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'http_client' => true,
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var HttpClientInterface $client */
+ $client = $container->get('test.failing_client');
+
+ $exceptionThrown = false;
+
+ try {
+ $client->request('GET', 'https://unreachable.example.com/');
+ } catch (\RuntimeException $e) {
+ $exceptionThrown = true;
+ self::assertSame('Connection refused', $e->getMessage());
+ }
+
+ self::assertTrue($exceptionThrown, 'Expected exception was not thrown');
+
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ self::assertCount(1, $spans);
+
+ $span = $spans[0];
+ self::assertSame('GET unreachable.example.com', $span->name());
+
+ $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());
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/HttpKernel/HttpKernelFlushSubscriberTest.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/HttpKernel/HttpKernelFlushSubscriberTest.php
new file mode 100644
index 0000000000..4dcf4583d6
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/HttpKernel/HttpKernelFlushSubscriberTest.php
@@ -0,0 +1,129 @@
+bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestBundle(FrameworkBundle::class);
+ $kernel->addTestExtensionConfig('framework', [
+ 'router' => [
+ 'utf8' => true,
+ 'resource' => __DIR__ . '/../../../Fixtures/config/routes.php',
+ ],
+ 'http_method_override' => false,
+ 'handle_all_throwables' => true,
+ ]);
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'batching',
+ 'batch_size' => 100,
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => ['enabled' => true],
+ 'console' => ['enabled' => false],
+ 'messenger' => false,
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var Router $router */
+ $router = $container->get('router');
+ $routes = $router->getRouteCollection();
+ $routes->add('test_index', new Route('/test', ['_controller' => TestController::class . '::index']));
+
+ $request = Request::create('/test', 'GET');
+ $response = $kernel->handle($request);
+
+ /** @var MemorySpanExporter $exporter */
+ $exporter = $container->get('flow.telemetry.tracer_provider.processor.exporter');
+ $spansBeforeTerminate = $exporter->spans();
+
+ self::assertCount(0, $spansBeforeTerminate, 'Spans should not be exported before terminate (batching)');
+
+ $kernel->terminate($request, $response);
+
+ $spansAfterTerminate = $exporter->spans();
+
+ self::assertCount(1, $spansAfterTerminate, 'Spans should be exported after terminate when flush is called');
+ }
+
+ public function test_flush_is_not_called_when_http_kernel_instrumentation_is_disabled() : void
+ {
+ $kernel = $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestBundle(FrameworkBundle::class);
+ $kernel->addTestExtensionConfig('framework', [
+ 'router' => [
+ 'utf8' => true,
+ 'resource' => __DIR__ . '/../../../Fixtures/config/routes.php',
+ ],
+ 'http_method_override' => false,
+ 'handle_all_throwables' => true,
+ ]);
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'batching',
+ 'batch_size' => 100,
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => ['enabled' => false],
+ 'console' => ['enabled' => false],
+ 'messenger' => false,
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var Router $router */
+ $router = $container->get('router');
+ $routes = $router->getRouteCollection();
+ $routes->add('test_index', new Route('/test', ['_controller' => TestController::class . '::index']));
+
+ $request = Request::create('/test', 'GET');
+ $response = $kernel->handle($request);
+ $kernel->terminate($request, $response);
+
+ /** @var MemorySpanExporter $exporter */
+ $exporter = $container->get('flow.telemetry.tracer_provider.processor.exporter');
+ $spans = $exporter->spans();
+
+ self::assertCount(0, $spans, 'No spans should be exported when instrumentation is disabled');
+ }
+}
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
new file mode 100644
index 0000000000..c5dc7f2040
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/HttpKernel/HttpKernelSpanSubscriberTest.php
@@ -0,0 +1,558 @@
+bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestBundle(FrameworkBundle::class);
+ $kernel->addTestExtensionConfig('framework', [
+ 'router' => [
+ 'utf8' => true,
+ 'resource' => __DIR__ . '/../../../Fixtures/config/routes.php',
+ ],
+ 'http_method_override' => false,
+ 'handle_all_throwables' => true,
+ ]);
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => [
+ 'enabled' => true,
+ 'context_propagation' => false,
+ ],
+ 'console' => ['enabled' => false],
+ 'messenger' => false,
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var Router $router */
+ $router = $container->get('router');
+ $routes = $router->getRouteCollection();
+ $routes->add('test_index', new Route('/test', ['_controller' => TestController::class . '::index']));
+
+ $incomingTraceId = '0af7651916cd43dd8448eb211c80319c';
+ $incomingSpanId = 'b7ad6b7169203331';
+ $traceparent = "00-{$incomingTraceId}-{$incomingSpanId}-01";
+
+ $request = Request::create('/test', 'GET');
+ $request->headers->set('traceparent', $traceparent);
+ $response = $kernel->handle($request);
+ $kernel->terminate($request, $response);
+
+ self::assertSame(200, $response->getStatusCode());
+
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ self::assertCount(1, $spans);
+
+ $span = $spans[0];
+ self::assertNotSame($incomingTraceId, $span->context()->traceId->toHex());
+ self::assertNull($span->context()->parentSpanId);
+ }
+
+ public function test_does_not_trace_when_disabled() : void
+ {
+ $kernel = $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestBundle(FrameworkBundle::class);
+ $kernel->addTestExtensionConfig('framework', [
+ 'router' => [
+ 'utf8' => true,
+ 'resource' => __DIR__ . '/../../../Fixtures/config/routes.php',
+ ],
+ 'http_method_override' => false,
+ 'handle_all_throwables' => true,
+ ]);
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => ['enabled' => false],
+ 'console' => ['enabled' => false],
+ 'messenger' => false,
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var Router $router */
+ $router = $container->get('router');
+ $routes = $router->getRouteCollection();
+ $routes->add('test_index', new Route('/test', ['_controller' => TestController::class . '::index']));
+
+ $request = Request::create('/test', 'GET');
+ $response = $kernel->handle($request);
+ $kernel->terminate($request, $response);
+
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ self::assertCount(0, $spans);
+ }
+
+ public function test_excludes_path_with_exact_match() : void
+ {
+ $kernel = $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestBundle(FrameworkBundle::class);
+ $kernel->addTestExtensionConfig('framework', [
+ 'router' => [
+ 'utf8' => true,
+ 'resource' => __DIR__ . '/../../../Fixtures/config/routes.php',
+ ],
+ 'http_method_override' => false,
+ 'handle_all_throwables' => true,
+ ]);
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => [
+ 'enabled' => true,
+ 'exclude_paths' => [
+ ['path' => '/_wdt'],
+ ],
+ ],
+ 'console' => ['enabled' => false],
+ 'messenger' => false,
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var Router $router */
+ $router = $container->get('router');
+ $routes = $router->getRouteCollection();
+ $routes->add('test_index', new Route('/test', ['_controller' => TestController::class . '::index']));
+ $routes->add('wdt', new Route('/_wdt', ['_controller' => TestController::class . '::index']));
+
+ $request = Request::create('/test', 'GET');
+ $response = $kernel->handle($request);
+ $kernel->terminate($request, $response);
+
+ $request = Request::create('/_wdt', 'GET');
+ $response = $kernel->handle($request);
+ $kernel->terminate($request, $response);
+
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ self::assertCount(1, $spans);
+ self::assertSame('GET test_index', $spans[0]->name());
+ }
+
+ public function test_excludes_path_with_method_filter() : void
+ {
+ $kernel = $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestBundle(FrameworkBundle::class);
+ $kernel->addTestExtensionConfig('framework', [
+ 'router' => [
+ 'utf8' => true,
+ 'resource' => __DIR__ . '/../../../Fixtures/config/routes.php',
+ ],
+ 'http_method_override' => false,
+ 'handle_all_throwables' => true,
+ ]);
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => [
+ 'enabled' => true,
+ 'exclude_paths' => [
+ ['path' => '/_wdt', 'method' => 'GET'],
+ ],
+ ],
+ 'console' => ['enabled' => false],
+ 'messenger' => false,
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var Router $router */
+ $router = $container->get('router');
+ $routes = $router->getRouteCollection();
+ $routes->add('test_index', new Route('/test', ['_controller' => TestController::class . '::index']));
+ $routes->add('wdt', new Route('/_wdt', ['_controller' => TestController::class . '::index'], [], [], '', [], ['GET', 'POST']));
+
+ $request = Request::create('/_wdt', 'GET');
+ $response = $kernel->handle($request);
+ $kernel->terminate($request, $response);
+
+ $request = Request::create('/_wdt', 'POST');
+ $response = $kernel->handle($request);
+ $kernel->terminate($request, $response);
+
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ self::assertCount(1, $spans);
+ self::assertSame('POST wdt', $spans[0]->name());
+ }
+
+ public function test_excludes_path_with_regex_pattern() : void
+ {
+ $kernel = $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestBundle(FrameworkBundle::class);
+ $kernel->addTestExtensionConfig('framework', [
+ 'router' => [
+ 'utf8' => true,
+ 'resource' => __DIR__ . '/../../../Fixtures/config/routes.php',
+ ],
+ 'http_method_override' => false,
+ 'handle_all_throwables' => true,
+ ]);
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => [
+ 'enabled' => true,
+ 'exclude_paths' => [
+ ['path' => '/^\/_profiler.*/'],
+ ],
+ ],
+ 'console' => ['enabled' => false],
+ 'messenger' => false,
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var Router $router */
+ $router = $container->get('router');
+ $routes = $router->getRouteCollection();
+ $routes->add('test_index', new Route('/test', ['_controller' => TestController::class . '::index']));
+ $routes->add('_profiler_home', new Route('/_profiler', ['_controller' => TestController::class . '::index']));
+ $routes->add('_profiler_search', new Route('/_profiler/search', ['_controller' => TestController::class . '::index']));
+
+ $request = Request::create('/test', 'GET');
+ $response = $kernel->handle($request);
+ $kernel->terminate($request, $response);
+
+ $request = Request::create('/_profiler', 'GET');
+ $response = $kernel->handle($request);
+ $kernel->terminate($request, $response);
+
+ $request = Request::create('/_profiler/search', 'GET');
+ $response = $kernel->handle($request);
+ $kernel->terminate($request, $response);
+
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ self::assertCount(1, $spans);
+ self::assertSame('GET test_index', $spans[0]->name());
+ }
+
+ public function test_extracts_context_from_traceparent_header() : void
+ {
+ $kernel = $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestBundle(FrameworkBundle::class);
+ $kernel->addTestExtensionConfig('framework', [
+ 'router' => [
+ 'utf8' => true,
+ 'resource' => __DIR__ . '/../../../Fixtures/config/routes.php',
+ ],
+ 'http_method_override' => false,
+ 'handle_all_throwables' => true,
+ ]);
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => [
+ 'enabled' => true,
+ 'context_propagation' => true,
+ ],
+ 'console' => ['enabled' => false],
+ 'messenger' => false,
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var Router $router */
+ $router = $container->get('router');
+ $routes = $router->getRouteCollection();
+ $routes->add('test_index', new Route('/test', ['_controller' => TestController::class . '::index']));
+
+ $incomingTraceId = '0af7651916cd43dd8448eb211c80319c';
+ $incomingSpanId = 'b7ad6b7169203331';
+ $traceparent = "00-{$incomingTraceId}-{$incomingSpanId}-01";
+
+ $request = Request::create('/test', 'GET');
+ $request->headers->set('traceparent', $traceparent);
+ $response = $kernel->handle($request);
+ $kernel->terminate($request, $response);
+
+ self::assertSame(200, $response->getStatusCode());
+
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ self::assertCount(1, $spans);
+
+ $span = $spans[0];
+ self::assertSame($incomingTraceId, $span->context()->traceId->toHex());
+ self::assertSame($incomingSpanId, $span->context()->parentSpanId?->toHex());
+ }
+
+ public function test_handles_missing_trace_headers_gracefully() : void
+ {
+ $kernel = $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestBundle(FrameworkBundle::class);
+ $kernel->addTestExtensionConfig('framework', [
+ 'router' => [
+ 'utf8' => true,
+ 'resource' => __DIR__ . '/../../../Fixtures/config/routes.php',
+ ],
+ 'http_method_override' => false,
+ 'handle_all_throwables' => true,
+ ]);
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => [
+ 'enabled' => true,
+ 'context_propagation' => true,
+ ],
+ 'console' => ['enabled' => false],
+ 'messenger' => false,
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var Router $router */
+ $router = $container->get('router');
+ $routes = $router->getRouteCollection();
+ $routes->add('test_index', new Route('/test', ['_controller' => TestController::class . '::index']));
+
+ $request = Request::create('/test', 'GET');
+ $response = $kernel->handle($request);
+ $kernel->terminate($request, $response);
+
+ self::assertSame(200, $response->getStatusCode());
+
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ self::assertCount(1, $spans);
+
+ $span = $spans[0];
+ self::assertNotEmpty($span->context()->traceId->toHex());
+ self::assertNull($span->context()->parentSpanId);
+ }
+
+ public function test_traces_http_request_with_error_status() : void
+ {
+ $kernel = $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestBundle(FrameworkBundle::class);
+ $kernel->addTestExtensionConfig('framework', [
+ 'router' => [
+ 'utf8' => true,
+ 'resource' => __DIR__ . '/../../../Fixtures/config/routes.php',
+ ],
+ 'http_method_override' => false,
+ 'handle_all_throwables' => true,
+ ]);
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => ['enabled' => true],
+ 'console' => ['enabled' => false],
+ 'messenger' => false,
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var Router $router */
+ $router = $container->get('router');
+ $routes = $router->getRouteCollection();
+ $routes->add('test_error', new Route('/error', ['_controller' => TestController::class . '::error']));
+
+ $request = Request::create('/error', 'GET');
+ $response = $kernel->handle($request);
+ $kernel->terminate($request, $response);
+
+ self::assertSame(404, $response->getStatusCode());
+
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ self::assertCount(1, $spans);
+
+ $span = $spans[0];
+ $attributes = $span->attributes();
+ self::assertSame(404, $attributes['http.status_code']);
+
+ $status = $span->status();
+ self::assertNotNull($status);
+ self::assertTrue($status->isError());
+ self::assertSame('HTTP 404', $status->description);
+ }
+
+ public function test_traces_successful_http_request() : void
+ {
+ $kernel = $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestBundle(FrameworkBundle::class);
+ $kernel->addTestExtensionConfig('framework', [
+ 'router' => [
+ 'utf8' => true,
+ 'resource' => __DIR__ . '/../../../Fixtures/config/routes.php',
+ ],
+ 'http_method_override' => false,
+ 'handle_all_throwables' => true,
+ ]);
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => ['enabled' => true],
+ 'console' => ['enabled' => false],
+ 'messenger' => false,
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var Router $router */
+ $router = $container->get('router');
+ $routes = $router->getRouteCollection();
+ $routes->add('test_index', new Route('/test', ['_controller' => TestController::class . '::index']));
+
+ $request = Request::create('/test', 'GET');
+ $response = $kernel->handle($request);
+ $kernel->terminate($request, $response);
+
+ self::assertSame(200, $response->getStatusCode());
+
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ self::assertCount(1, $spans);
+
+ $span = $spans[0];
+ self::assertSame('GET test_index', $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('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
new file mode 100644
index 0000000000..ed37e05123
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/Messenger/TracingMiddlewareTest.php
@@ -0,0 +1,563 @@
+bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'propagator' => ['type' => 'w3c'],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => [
+ 'enabled' => true,
+ 'context_propagation' => true,
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ $telemetry = $this->symfonyContext()->getService(Telemetry::class, Telemetry::class);
+ $contextStorage = $this->symfonyContext()->getService('flow.telemetry.context_storage', ContextStorage::class);
+ $propagator = $this->symfonyContext()->getService('flow.telemetry.propagator', Propagator::class);
+
+ $originalTraceId = 'abcdef0123456789abcdef0123456789';
+ $originalSpanId = '0123456789abcdef';
+ $traceparent = "00-{$originalTraceId}-{$originalSpanId}-01";
+
+ $telemetryStamp = new TelemetryStamp(['traceparent' => $traceparent]);
+
+ $handler = new TestMessageHandler();
+
+ $bus = new MessageBus([
+ new TracingMiddleware($telemetry, $contextStorage, $propagator),
+ new HandleMessageMiddleware(
+ new HandlersLocator([
+ TestMessage::class => [$handler],
+ ])
+ ),
+ ]);
+
+ $envelope = new Envelope(
+ new TestMessage('test'),
+ [
+ new ReceivedStamp('async'),
+ $telemetryStamp,
+ ]
+ );
+
+ $bus->dispatch($envelope);
+
+ $processor = $this->symfonyContext()->getService('flow.telemetry.tracer_provider.processor', MemorySpanProcessor::class);
+ $spans = $processor->endedSpans();
+
+ self::assertCount(1, $spans);
+ $span = $spans[0];
+
+ self::assertSame(SpanKind::CONSUMER, $span->kind());
+ self::assertSame($originalTraceId, $span->context()->traceId->toHex());
+ }
+
+ public function test_context_is_injected_on_dispatch_when_context_propagation_enabled() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'propagator' => ['type' => 'w3c'],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => [
+ 'enabled' => true,
+ 'context_propagation' => true,
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ $telemetry = $this->symfonyContext()->getService(Telemetry::class, Telemetry::class);
+ $contextStorage = $this->symfonyContext()->getService('flow.telemetry.context_storage', ContextStorage::class);
+ $propagator = $this->symfonyContext()->getService('flow.telemetry.propagator', Propagator::class);
+
+ $traceId = TraceId::generate();
+ $context = Context::withTraceId($traceId);
+ $contextStorage->store($context);
+
+ $tracer = $telemetry->tracer('test');
+ $span = $tracer->span('parent-span');
+ $context = $context->withActiveSpan($span->context()->spanId);
+ $contextStorage->store($context);
+
+ $handler = new TestMessageHandler();
+ $capturingMiddleware = new CapturingMiddleware();
+
+ $bus = new MessageBus([
+ new TracingMiddleware($telemetry, $contextStorage, $propagator),
+ $capturingMiddleware,
+ new HandleMessageMiddleware(
+ new HandlersLocator([
+ TestMessage::class => [$handler],
+ ])
+ ),
+ ]);
+
+ $bus->dispatch(new TestMessage('test'));
+
+ $tracer->complete($span);
+
+ self::assertNotNull($capturingMiddleware->captured);
+ $stamp = $capturingMiddleware->captured->last(TelemetryStamp::class);
+ self::assertInstanceOf(TelemetryStamp::class, $stamp);
+
+ $traceparent = $stamp->get('traceparent');
+ self::assertNotNull($traceparent);
+ self::assertStringContainsString($traceId->toHex(), $traceparent);
+ }
+
+ public function test_context_propagation_not_applied_when_disabled() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => [
+ 'enabled' => true,
+ 'context_propagation' => false,
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ $middleware = $this->symfonyContext()->getService('flow.telemetry.messenger.middleware', TracingMiddleware::class);
+
+ $handler = new TestMessageHandler();
+ $capturingMiddleware = new CapturingMiddleware();
+
+ $bus = new MessageBus([
+ $middleware,
+ $capturingMiddleware,
+ new HandleMessageMiddleware(
+ new HandlersLocator([
+ TestMessage::class => [$handler],
+ ])
+ ),
+ ]);
+
+ $bus->dispatch(new TestMessage('test'));
+
+ self::assertNotNull($capturingMiddleware->captured);
+ $stamp = $capturingMiddleware->captured->last(TelemetryStamp::class);
+ self::assertNull($stamp);
+ }
+
+ public function test_handles_missing_stamp_on_consume_gracefully() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'propagator' => ['type' => 'w3c'],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => [
+ 'enabled' => true,
+ 'context_propagation' => true,
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ $telemetry = $this->symfonyContext()->getService(Telemetry::class, Telemetry::class);
+ $contextStorage = $this->symfonyContext()->getService('flow.telemetry.context_storage', ContextStorage::class);
+ $propagator = $this->symfonyContext()->getService('flow.telemetry.propagator', Propagator::class);
+
+ $handler = new TestMessageHandler();
+
+ $bus = new MessageBus([
+ new TracingMiddleware($telemetry, $contextStorage, $propagator),
+ new HandleMessageMiddleware(
+ new HandlersLocator([
+ TestMessage::class => [$handler],
+ ])
+ ),
+ ]);
+
+ $envelope = new Envelope(
+ new TestMessage('test'),
+ [new ReceivedStamp('async')]
+ );
+
+ $bus->dispatch($envelope);
+
+ self::assertTrue($handler->handled);
+
+ $processor = $this->symfonyContext()->getService('flow.telemetry.tracer_provider.processor', MemorySpanProcessor::class);
+ $spans = $processor->endedSpans();
+
+ self::assertCount(1, $spans);
+ self::assertSame(SpanKind::CONSUMER, $spans[0]->kind());
+ }
+
+ public function test_middleware_not_registered_when_disabled() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'instrumentation' => [
+ 'messenger' => [
+ 'enabled' => false,
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertFalse($container->has('flow.telemetry.messenger.middleware'));
+ }
+
+ public function test_middleware_service_is_registered() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'instrumentation' => [
+ 'messenger' => [
+ 'enabled' => true,
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertTrue($container->has('flow.telemetry.messenger.middleware'));
+ self::assertInstanceOf(TracingMiddleware::class, $container->get('flow.telemetry.messenger.middleware'));
+ }
+
+ public function test_producer_span_context_propagated_even_without_parent_context() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'propagator' => ['type' => 'w3c'],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => [
+ 'enabled' => true,
+ 'context_propagation' => true,
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ $telemetry = $this->symfonyContext()->getService(Telemetry::class, Telemetry::class);
+ $contextStorage = $this->symfonyContext()->getService('flow.telemetry.context_storage', ContextStorage::class);
+ $propagator = $this->symfonyContext()->getService('flow.telemetry.propagator', Propagator::class);
+
+ $handler = new TestMessageHandler();
+ $capturingMiddleware = new CapturingMiddleware();
+
+ $bus = new MessageBus([
+ new TracingMiddleware($telemetry, $contextStorage, $propagator),
+ $capturingMiddleware,
+ new HandleMessageMiddleware(
+ new HandlersLocator([
+ TestMessage::class => [$handler],
+ ])
+ ),
+ ]);
+
+ $bus->dispatch(new TestMessage('test'));
+
+ self::assertNotNull($capturingMiddleware->captured);
+ $stamp = $capturingMiddleware->captured->last(TelemetryStamp::class);
+ self::assertInstanceOf(TelemetryStamp::class, $stamp);
+
+ $traceparent = $stamp->get('traceparent');
+ self::assertNotNull($traceparent);
+
+ $processor = $this->symfonyContext()->getService('flow.telemetry.tracer_provider.processor', MemorySpanProcessor::class);
+ $spans = $processor->endedSpans();
+ self::assertCount(1, $spans);
+
+ $producerSpan = $spans[0];
+ self::assertSame(SpanKind::PRODUCER, $producerSpan->kind());
+ self::assertStringContainsString($producerSpan->context()->spanId->toHex(), $traceparent);
+ }
+
+ public function test_propagator_baggage_only_configuration() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'propagator' => ['type' => 'baggage'],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertTrue($container->has('flow.telemetry.propagator'));
+ self::assertFalse($container->has('flow.telemetry.propagator.tracecontext'));
+ self::assertFalse($container->has('flow.telemetry.propagator.baggage'));
+ }
+
+ public function test_propagator_tracecontext_only_configuration() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'propagator' => ['type' => 'tracecontext'],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertTrue($container->has('flow.telemetry.propagator'));
+ self::assertFalse($container->has('flow.telemetry.propagator.tracecontext'));
+ self::assertFalse($container->has('flow.telemetry.propagator.baggage'));
+ }
+
+ public function test_propagator_w3c_configuration() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'propagator' => ['type' => 'w3c'],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertTrue($container->has('flow.telemetry.propagator'));
+ self::assertTrue($container->has('flow.telemetry.propagator.tracecontext'));
+ self::assertTrue($container->has('flow.telemetry.propagator.baggage'));
+ }
+
+ public function test_traces_message_dispatch() : void
+ {
+ $kernel = $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => true,
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var Telemetry $telemetry */
+ $telemetry = $container->get(Telemetry::class);
+
+ $handler = new TestMessageHandler();
+
+ $bus = new MessageBus([
+ new TracingMiddleware($telemetry),
+ new HandleMessageMiddleware(
+ new HandlersLocator([
+ TestMessage::class => [$handler],
+ ])
+ ),
+ ]);
+
+ $message = new TestMessage('test content');
+ $envelope = new Envelope(
+ $message,
+ [new BusNameStamp('command.bus')]
+ );
+
+ $bus->dispatch($envelope);
+
+ self::assertTrue($handler->handled);
+
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ self::assertCount(1, $spans);
+
+ $span = $spans[0];
+ self::assertSame('command.bus TestMessage', $span->name());
+ self::assertSame(SpanKind::PRODUCER, $span->kind());
+
+ $attributes = $span->attributes();
+ self::assertSame('symfony_messenger', $attributes['messaging.system']);
+ self::assertSame('command.bus', $attributes['messaging.destination']);
+ self::assertSame(TestMessage::class, $attributes['messaging.message.class']);
+ self::assertSame('send', $attributes['messaging.operation']);
+
+ $status = $span->status();
+ self::assertNotNull($status);
+ self::assertTrue($status->isOk());
+ }
+
+ public function test_traces_message_with_exception() : void
+ {
+ $kernel = $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => true,
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var Telemetry $telemetry */
+ $telemetry = $container->get(Telemetry::class);
+
+ $failingHandler = static function (TestMessage $message) : void {
+ throw new \RuntimeException('Handler failed');
+ };
+
+ $bus = new MessageBus([
+ new TracingMiddleware($telemetry),
+ new HandleMessageMiddleware(
+ new HandlersLocator([
+ TestMessage::class => [$failingHandler],
+ ])
+ ),
+ ]);
+
+ $message = new TestMessage('test content');
+
+ $exceptionThrown = false;
+
+ try {
+ $bus->dispatch($message);
+ } catch (\Throwable) {
+ $exceptionThrown = true;
+ }
+
+ self::assertTrue($exceptionThrown, 'Expected exception was not thrown');
+
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ self::assertCount(1, $spans);
+
+ $span = $spans[0];
+
+ $status = $span->status();
+ self::assertNotNull($status);
+ self::assertTrue($status->isError());
+ self::assertStringContainsString('Handler failed', $status->description ?? '');
+
+ $events = $span->events();
+ self::assertCount(1, $events);
+ self::assertSame('exception', $events[0]->name());
+ }
+}
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
new file mode 100644
index 0000000000..295760d517
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/Psr18/Psr18ClientTelemetryPassTest.php
@@ -0,0 +1,335 @@
+bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->register('test.api_client', MockPsr18Client::class)
+ ->addArgument(200)
+ ->setPublic(true);
+
+ $container->register('test.internal_client', MockPsr18Client::class)
+ ->addArgument(200)
+ ->setPublic(true);
+ });
+
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'psr18_client' => true,
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertInstanceOf(PSR18TraceableClient::class, $container->get('test.api_client'));
+ self::assertInstanceOf(PSR18TraceableClient::class, $container->get('test.internal_client'));
+ }
+
+ public function test_decorator_not_registered_when_feature_disabled() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->register('test.api_client', MockPsr18Client::class)
+ ->addArgument(200)
+ ->setPublic(true);
+ });
+
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'instrumentation' => [
+ 'psr18_client' => false,
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertInstanceOf(MockPsr18Client::class, $container->get('test.api_client'));
+ }
+
+ public function test_excluded_client_by_exact_id_is_not_wrapped() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->register('test.api_client', MockPsr18Client::class)
+ ->addArgument(200)
+ ->setPublic(true);
+
+ $container->register('test.internal_client', MockPsr18Client::class)
+ ->addArgument(200)
+ ->setPublic(true);
+ });
+
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'psr18_client' => [
+ 'enabled' => true,
+ 'exclude_clients' => ['test.internal_client'],
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertInstanceOf(PSR18TraceableClient::class, $container->get('test.api_client'));
+ self::assertInstanceOf(MockPsr18Client::class, $container->get('test.internal_client'));
+ }
+
+ public function test_excluded_clients_by_regex_pattern_are_not_wrapped() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->register('test.api_client', MockPsr18Client::class)
+ ->addArgument(200)
+ ->setPublic(true);
+
+ $container->register('test.debug.client', MockPsr18Client::class)
+ ->addArgument(200)
+ ->setPublic(true);
+
+ $container->register('test.debug.another', MockPsr18Client::class)
+ ->addArgument(200)
+ ->setPublic(true);
+ });
+
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'psr18_client' => [
+ 'enabled' => true,
+ 'exclude_clients' => ['/^test\\.debug\\..*/'],
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertInstanceOf(PSR18TraceableClient::class, $container->get('test.api_client'));
+ self::assertInstanceOf(MockPsr18Client::class, $container->get('test.debug.client'));
+ self::assertInstanceOf(MockPsr18Client::class, $container->get('test.debug.another'));
+ }
+
+ public function test_wrapped_client_creates_error_span_for_http_error_response() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->register('test.error_client', MockPsr18Client::class)
+ ->addArgument(500)
+ ->setPublic(true);
+ });
+
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'psr18_client' => true,
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var ClientInterface $client */
+ $client = $container->get('test.error_client');
+ $client->sendRequest(new Request('POST', 'http://localhost:8080/api/data'));
+
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ self::assertCount(1, $spans);
+
+ $span = $spans[0];
+ self::assertSame('POST localhost', $span->name());
+ self::assertSame(500, $span->attributes()['http.status_code']);
+
+ $status = $span->status();
+ self::assertNotNull($status);
+ self::assertTrue($status->isError());
+ self::assertSame('HTTP 500', $status->description);
+ }
+
+ public function test_wrapped_client_creates_span_with_correct_attributes() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->register('test.api_client', MockPsr18Client::class)
+ ->addArgument(200)
+ ->setPublic(true);
+ });
+
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'psr18_client' => true,
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var ClientInterface $client */
+ $client = $container->get('test.api_client');
+ $client->sendRequest(new Request('GET', 'https://api.example.com/users?page=1'));
+
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ self::assertCount(1, $spans);
+
+ $span = $spans[0];
+ self::assertSame('GET api.example.com', $span->name());
+ 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']);
+
+ $status = $span->status();
+ self::assertNotNull($status);
+ self::assertTrue($status->isOk());
+ }
+
+ public function test_wrapped_client_records_exception_and_creates_error_span() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestContainerConfigurator(static function (ContainerBuilder $container) : void {
+ $container->register('test.failing_client', FailingPsr18Client::class)
+ ->addArgument('Connection refused')
+ ->setPublic(true);
+ });
+
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'psr18_client' => true,
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var ClientInterface $client */
+ $client = $container->get('test.failing_client');
+
+ $exceptionThrown = false;
+
+ try {
+ $client->sendRequest(new Request('GET', 'https://unreachable.example.com/'));
+ } catch (\RuntimeException $e) {
+ $exceptionThrown = true;
+ self::assertSame('Connection refused', $e->getMessage());
+ }
+
+ self::assertTrue($exceptionThrown, 'Expected exception was not thrown');
+
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ self::assertCount(1, $spans);
+
+ $span = $spans[0];
+ self::assertSame('GET unreachable.example.com', $span->name());
+
+ $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());
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/Twig/TracingTwigExtensionTest.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/Twig/TracingTwigExtensionTest.php
new file mode 100644
index 0000000000..39c97fb18d
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/Instrumentation/Twig/TracingTwigExtensionTest.php
@@ -0,0 +1,532 @@
+bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => ['enabled' => false],
+ 'console' => ['enabled' => false],
+ 'messenger' => false,
+ 'twig' => [
+ 'enabled' => true,
+ 'trace_blocks' => false,
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var TracingTwigExtension $extension */
+ $extension = $container->get('flow.telemetry.twig.extension');
+
+ $loader = new ArrayLoader([
+ 'base.html.twig' => '{% block content %}Default content{% endblock %}',
+ 'child.html.twig' => '{% extends "base.html.twig" %}{% block content %}Child content{% endblock %}',
+ ]);
+
+ $twig = new Environment($loader);
+ $twig->addExtension($extension);
+
+ $result = $twig->render('child.html.twig');
+
+ self::assertSame('Child content', $result);
+
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ foreach ($spans as $span) {
+ $attributes = $span->attributes();
+ self::assertNotSame('block', $attributes['twig.type'] ?? '', 'Block span should not be traced');
+ }
+ }
+
+ public function test_does_not_trace_excluded_templates() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'twig' => [
+ 'enabled' => true,
+ 'exclude_templates' => ['excluded.html.twig'],
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var TracingTwigExtension $extension */
+ $extension = $container->get('flow.telemetry.twig.extension');
+
+ $loader = new ArrayLoader([
+ 'included.html.twig' => 'Included template',
+ 'excluded.html.twig' => 'Excluded template',
+ ]);
+
+ $twig = new Environment($loader);
+ $twig->addExtension($extension);
+
+ $twig->render('included.html.twig');
+ $twig->render('excluded.html.twig');
+
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ $templateNames = [];
+
+ foreach ($spans as $span) {
+ $attributes = $span->attributes();
+
+ if (($attributes['twig.type'] ?? '') === 'template') {
+ $templateNames[] = $attributes['twig.template'];
+ }
+ }
+
+ self::assertContains('included.html.twig', $templateNames, 'Included template should be traced');
+ self::assertNotContains('excluded.html.twig', $templateNames, 'Excluded template should not be traced');
+ }
+
+ public function test_does_not_trace_excluded_templates_with_regex() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'twig' => [
+ 'enabled' => true,
+ 'exclude_templates' => ['/^@Profiler.*/'],
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var TracingTwigExtension $extension */
+ $extension = $container->get('flow.telemetry.twig.extension');
+
+ $loader = new ArrayLoader([
+ 'included.html.twig' => 'Included template',
+ '@Profiler/toolbar.html.twig' => 'Profiler toolbar',
+ '@Profiler/panel.html.twig' => 'Profiler panel',
+ ]);
+
+ $twig = new Environment($loader);
+ $twig->addExtension($extension);
+
+ $twig->render('included.html.twig');
+ $twig->render('@Profiler/toolbar.html.twig');
+ $twig->render('@Profiler/panel.html.twig');
+
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ $templateNames = [];
+
+ foreach ($spans as $span) {
+ $attributes = $span->attributes();
+
+ if (($attributes['twig.type'] ?? '') === 'template') {
+ $templateNames[] = $attributes['twig.template'];
+ }
+ }
+
+ self::assertContains('included.html.twig', $templateNames, 'Included template should be traced');
+ self::assertNotContains('@Profiler/toolbar.html.twig', $templateNames, 'Profiler toolbar should not be traced');
+ self::assertNotContains('@Profiler/panel.html.twig', $templateNames, 'Profiler panel should not be traced');
+ }
+
+ public function test_does_not_trace_templates_when_disabled() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'twig' => [
+ 'enabled' => true,
+ 'trace_templates' => false,
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var TracingTwigExtension $extension */
+ $extension = $container->get('flow.telemetry.twig.extension');
+
+ $loader = new ArrayLoader([
+ 'test.html.twig' => 'Hello {{ name }}!',
+ ]);
+
+ $twig = new Environment($loader);
+ $twig->addExtension($extension);
+
+ $result = $twig->render('test.html.twig', ['name' => 'World']);
+
+ self::assertSame('Hello World!', $result);
+
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ foreach ($spans as $span) {
+ $attributes = $span->attributes();
+ self::assertNotSame('template', $attributes['twig.type'] ?? '', 'Template span should not be traced when trace_templates is false');
+ }
+ }
+
+ public function test_excluded_template_cascades_to_children() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'twig' => [
+ 'enabled' => true,
+ 'trace_blocks' => true,
+ 'exclude_templates' => ['excluded.html.twig'],
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var TracingTwigExtension $extension */
+ $extension = $container->get('flow.telemetry.twig.extension');
+
+ $loader = new ArrayLoader([
+ 'child.html.twig' => 'Child content',
+ 'excluded.html.twig' => '{% block content %}Block content{% endblock %}{% include "child.html.twig" %}',
+ ]);
+
+ $twig = new Environment($loader);
+ $twig->addExtension($extension);
+
+ $twig->render('excluded.html.twig');
+
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ $templateNames = [];
+ $blockNames = [];
+
+ foreach ($spans as $span) {
+ $attributes = $span->attributes();
+ $type = $attributes['twig.type'] ?? '';
+
+ if ($type === 'template') {
+ $templateNames[] = $attributes['twig.template'];
+ } elseif ($type === 'block') {
+ $blockNames[] = $attributes['twig.name'];
+ }
+ }
+
+ self::assertNotContains('excluded.html.twig', $templateNames, 'Excluded template should not be traced');
+ self::assertNotContains('child.html.twig', $templateNames, 'Child template should not be traced when parent is excluded');
+ self::assertNotContains('content', $blockNames, 'Block in excluded template should not be traced');
+ }
+
+ public function test_extension_not_registered_when_disabled() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'instrumentation' => [
+ 'twig' => false,
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertFalse($container->has('flow.telemetry.twig.extension'));
+ }
+
+ public function test_extension_service_is_registered() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'instrumentation' => [
+ 'twig' => true,
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ self::assertTrue($container->has('flow.telemetry.twig.extension'));
+ self::assertInstanceOf(TracingTwigExtension::class, $container->get('flow.telemetry.twig.extension'));
+ }
+
+ public function test_traces_blocks_in_templates() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'twig' => [
+ 'enabled' => true,
+ 'trace_blocks' => true,
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var TracingTwigExtension $extension */
+ $extension = $container->get('flow.telemetry.twig.extension');
+
+ $loader = new ArrayLoader([
+ 'base.html.twig' => '{% block content %}Default content{% endblock %}',
+ 'child.html.twig' => '{% extends "base.html.twig" %}{% block content %}Child content{% endblock %}',
+ ]);
+
+ $twig = new Environment($loader);
+ $twig->addExtension($extension);
+
+ $result = $twig->render('child.html.twig');
+
+ self::assertSame('Child content', $result);
+
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ self::assertGreaterThanOrEqual(1, \count($spans));
+
+ $blockSpanFound = false;
+
+ foreach ($spans as $span) {
+ $attributes = $span->attributes();
+
+ if (($attributes['twig.type'] ?? '') === 'block') {
+ $blockSpanFound = true;
+ self::assertSame('content', $attributes['twig.name']);
+ }
+ }
+
+ self::assertTrue($blockSpanFound, 'Expected block span was not found');
+ }
+
+ public function test_traces_macros_when_enabled() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'twig' => [
+ 'enabled' => true,
+ 'trace_macros' => true,
+ ],
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var TracingTwigExtension $extension */
+ $extension = $container->get('flow.telemetry.twig.extension');
+
+ $loader = new ArrayLoader([
+ 'macros.html.twig' => '{% macro greet(name) %}Hello {{ name }}!{% endmacro %}',
+ 'test.html.twig' => '{% import "macros.html.twig" as macros %}{{ macros.greet("World") }}',
+ ]);
+
+ $twig = new Environment($loader);
+ $twig->addExtension($extension);
+
+ $result = $twig->render('test.html.twig');
+
+ self::assertSame('Hello World!', $result);
+
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ $macroSpanFound = false;
+
+ foreach ($spans as $span) {
+ $attributes = $span->attributes();
+
+ if (($attributes['twig.type'] ?? '') === 'macro') {
+ $macroSpanFound = true;
+ self::assertSame('greet', $attributes['twig.name']);
+ }
+ }
+
+ self::assertTrue($macroSpanFound, 'Expected macro span was not found');
+ }
+
+ public function test_traces_template_rendering() : void
+ {
+ $this->bootKernel([
+ 'config' => static function (TestKernel $kernel) : void {
+ $kernel->addTestExtensionConfig('flow_telemetry', [
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'memory',
+ 'exporter' => ['type' => 'memory'],
+ ],
+ ],
+ 'instrumentation' => [
+ 'http_kernel' => false,
+ 'console' => false,
+ 'messenger' => false,
+ 'twig' => true,
+ ],
+ ]);
+ },
+ ]);
+
+ $container = $this->getContainer();
+
+ /** @var TracingTwigExtension $extension */
+ $extension = $container->get('flow.telemetry.twig.extension');
+
+ $loader = new ArrayLoader([
+ 'test.html.twig' => 'Hello {{ name }}!',
+ ]);
+
+ $twig = new Environment($loader);
+ $twig->addExtension($extension);
+
+ $result = $twig->render('test.html.twig', ['name' => 'World']);
+
+ self::assertSame('Hello World!', $result);
+
+ /** @var MemorySpanProcessor $processor */
+ $processor = $container->get('flow.telemetry.tracer_provider.processor');
+ $spans = $processor->endedSpans();
+
+ self::assertGreaterThanOrEqual(1, \count($spans));
+
+ $templateSpanFound = false;
+
+ foreach ($spans as $span) {
+ if ($span->name() === 'test.html.twig') {
+ $templateSpanFound = true;
+ $attributes = $span->attributes();
+ self::assertSame('template', $attributes['twig.type']);
+ self::assertSame('test.html.twig', $attributes['twig.template']);
+ }
+ }
+
+ self::assertTrue($templateSpanFound, 'Expected template span was not found');
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/KernelTestCase.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/KernelTestCase.php
new file mode 100644
index 0000000000..ae57847bbf
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Integration/KernelTestCase.php
@@ -0,0 +1,48 @@
+context = new SymfonyContext();
+ }
+
+ protected function tearDown() : void
+ {
+ $this->context->shutdown();
+ }
+
+ /**
+ * @param array{config?: callable(TestKernel): void} $options
+ */
+ protected function bootKernel(array $options = []) : TestKernel
+ {
+ return $this->context->bootKernel($options);
+ }
+
+ protected function getContainer() : ContainerInterface
+ {
+ return $this->context->getContainer();
+ }
+
+ protected function getKernel() : TestKernel
+ {
+ return $this->context->getKernel();
+ }
+
+ protected function symfonyContext() : SymfonyContext
+ {
+ return $this->context;
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/DependencyInjection/ConfigurationTest.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/DependencyInjection/ConfigurationTest.php
new file mode 100644
index 0000000000..ff442a2054
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/DependencyInjection/ConfigurationTest.php
@@ -0,0 +1,1028 @@
+processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'clock_service_id' => 'app.custom_clock',
+ ]]);
+
+ self::assertSame('app.custom_clock', $config['clock_service_id']);
+ }
+
+ public function test_clock_service_id_defaults_to_null() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ ]]);
+
+ self::assertArrayHasKey('clock_service_id', $config);
+ self::assertNull($config['clock_service_id']);
+ }
+
+ public function test_composite_processor_with_multiple_processors() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'composite',
+ 'processors' => [
+ [
+ 'type' => 'memory',
+ ],
+ [
+ 'type' => 'batching',
+ 'batch_size' => 100,
+ ],
+ ],
+ ],
+ ],
+ ]]);
+
+ $processors = $config['tracer_provider']['processor']['processors'];
+ self::assertCount(2, $processors);
+ self::assertSame('memory', $processors[0]['type']);
+ self::assertSame('batching', $processors[1]['type']);
+ self::assertSame(100, $processors[1]['batch_size']);
+ }
+
+ public function test_context_storage_can_use_custom_service() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'context_storage' => [
+ 'type' => 'service',
+ 'service_id' => 'app.custom_context_storage',
+ ],
+ ]]);
+
+ self::assertSame('service', $config['context_storage']['type']);
+ self::assertSame('app.custom_context_storage', $config['context_storage']['service_id']);
+ }
+
+ public function test_context_storage_defaults_to_memory() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ ]]);
+
+ self::assertArrayHasKey('context_storage', $config);
+ self::assertSame('memory', $config['context_storage']['type']);
+ self::assertNull($config['context_storage']['service_id']);
+ }
+
+ public function test_empty_tracers_meters_loggers_config() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'tracers' => [],
+ 'meters' => [],
+ 'loggers' => [],
+ ]]);
+
+ self::assertSame([], $config['tracers']);
+ self::assertSame([], $config['meters']);
+ self::assertSame([], $config['loggers']);
+ }
+
+ public function test_exporter_defaults_to_void() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'batching',
+ ],
+ ],
+ ]]);
+
+ self::assertSame('void', $config['tracer_provider']['processor']['exporter']['type']);
+ }
+
+ public function test_instrumentation_cache_can_be_enabled() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'instrumentation' => [
+ 'cache' => ['enabled' => true],
+ ],
+ ]]);
+
+ self::assertTrue($config['instrumentation']['cache']['enabled']);
+ }
+
+ public function test_instrumentation_cache_defaults_to_disabled() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ ]]);
+
+ self::assertArrayHasKey('instrumentation', $config);
+ self::assertArrayHasKey('cache', $config['instrumentation']);
+ self::assertFalse($config['instrumentation']['cache']['enabled']);
+ self::assertSame([], $config['instrumentation']['cache']['exclude_pools']);
+ }
+
+ public function test_instrumentation_cache_exclude_pools() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'instrumentation' => [
+ 'cache' => [
+ 'enabled' => true,
+ 'exclude_pools' => ['cache.validator', 'cache.serializer', '/^cache\\.profiler\\..*/'],
+ ],
+ ],
+ ]]);
+
+ self::assertTrue($config['instrumentation']['cache']['enabled']);
+ self::assertSame(['cache.validator', 'cache.serializer', '/^cache\\.profiler\\..*/'], $config['instrumentation']['cache']['exclude_pools']);
+ }
+
+ public function test_instrumentation_can_be_enabled() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'instrumentation' => [
+ 'http_kernel' => ['enabled' => true],
+ 'console' => ['enabled' => true],
+ 'messenger' => true,
+ ],
+ ]]);
+
+ self::assertTrue($config['instrumentation']['http_kernel']['enabled']);
+ self::assertTrue($config['instrumentation']['console']['enabled']);
+ self::assertTrue($config['instrumentation']['messenger']['enabled']);
+ }
+
+ public function test_instrumentation_console_exclude_commands() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'instrumentation' => [
+ 'console' => [
+ 'enabled' => true,
+ 'exclude_commands' => ['cache:clear', 'debug:router'],
+ ],
+ ],
+ ]]);
+
+ self::assertTrue($config['instrumentation']['console']['enabled']);
+ self::assertSame(['cache:clear', 'debug:router'], $config['instrumentation']['console']['exclude_commands']);
+ }
+
+ public function test_instrumentation_dbal_can_be_enabled() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'instrumentation' => [
+ 'dbal' => ['enabled' => true],
+ ],
+ ]]);
+
+ self::assertTrue($config['instrumentation']['dbal']['enabled']);
+ }
+
+ public function test_instrumentation_dbal_defaults_to_disabled() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ ]]);
+
+ self::assertArrayHasKey('instrumentation', $config);
+ self::assertArrayHasKey('dbal', $config['instrumentation']);
+ self::assertFalse($config['instrumentation']['dbal']['enabled']);
+ self::assertTrue($config['instrumentation']['dbal']['log_sql']);
+ self::assertSame(1000, $config['instrumentation']['dbal']['max_sql_length']);
+ self::assertSame([], $config['instrumentation']['dbal']['exclude_connections']);
+ }
+
+ public function test_instrumentation_dbal_exclude_connections() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'instrumentation' => [
+ 'dbal' => [
+ 'enabled' => true,
+ 'exclude_connections' => ['legacy', '/^debug_.*$/'],
+ ],
+ ],
+ ]]);
+
+ self::assertTrue($config['instrumentation']['dbal']['enabled']);
+ self::assertSame(['legacy', '/^debug_.*$/'], $config['instrumentation']['dbal']['exclude_connections']);
+ }
+
+ public function test_instrumentation_dbal_log_sql_can_be_disabled() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'instrumentation' => [
+ 'dbal' => [
+ 'enabled' => true,
+ 'log_sql' => false,
+ ],
+ ],
+ ]]);
+
+ self::assertTrue($config['instrumentation']['dbal']['enabled']);
+ self::assertFalse($config['instrumentation']['dbal']['log_sql']);
+ }
+
+ public function test_instrumentation_dbal_max_sql_length_can_be_zero_for_unlimited() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'instrumentation' => [
+ 'dbal' => [
+ 'enabled' => true,
+ 'max_sql_length' => 0,
+ ],
+ ],
+ ]]);
+
+ self::assertSame(0, $config['instrumentation']['dbal']['max_sql_length']);
+ }
+
+ public function test_instrumentation_dbal_max_sql_length_configuration() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'instrumentation' => [
+ 'dbal' => [
+ 'enabled' => true,
+ 'max_sql_length' => 500,
+ ],
+ ],
+ ]]);
+
+ self::assertSame(500, $config['instrumentation']['dbal']['max_sql_length']);
+ }
+
+ public function test_instrumentation_defaults_to_all_disabled() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ ]]);
+
+ self::assertArrayHasKey('instrumentation', $config);
+ self::assertFalse($config['instrumentation']['http_kernel']['enabled']);
+ self::assertSame([], $config['instrumentation']['http_kernel']['exclude_paths']);
+ self::assertFalse($config['instrumentation']['console']['enabled']);
+ self::assertFalse($config['instrumentation']['messenger']['enabled']);
+ }
+
+ public function test_instrumentation_http_client_can_be_enabled() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'instrumentation' => [
+ 'http_client' => ['enabled' => true],
+ ],
+ ]]);
+
+ self::assertTrue($config['instrumentation']['http_client']['enabled']);
+ }
+
+ public function test_instrumentation_http_client_defaults_to_disabled() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ ]]);
+
+ self::assertArrayHasKey('instrumentation', $config);
+ self::assertArrayHasKey('http_client', $config['instrumentation']);
+ self::assertFalse($config['instrumentation']['http_client']['enabled']);
+ self::assertSame([], $config['instrumentation']['http_client']['exclude_clients']);
+ }
+
+ public function test_instrumentation_http_client_exclude_clients() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'instrumentation' => [
+ 'http_client' => [
+ 'enabled' => true,
+ 'exclude_clients' => ['internal.http_client', '/^debug\\..*$/'],
+ ],
+ ],
+ ]]);
+
+ self::assertTrue($config['instrumentation']['http_client']['enabled']);
+ self::assertSame(['internal.http_client', '/^debug\\..*$/'], $config['instrumentation']['http_client']['exclude_clients']);
+ }
+
+ public function test_instrumentation_http_kernel_exclude_paths() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'instrumentation' => [
+ 'http_kernel' => [
+ 'enabled' => true,
+ 'exclude_paths' => [
+ ['path' => '/_wdt'],
+ ['path' => '/_profiler', 'method' => 'GET'],
+ ['path' => '/^\/_profiler.*/'],
+ ],
+ ],
+ ],
+ ]]);
+
+ self::assertTrue($config['instrumentation']['http_kernel']['enabled']);
+ self::assertSame([
+ ['path' => '/_wdt', 'method' => null],
+ ['path' => '/_profiler', 'method' => 'GET'],
+ ['path' => '/^\/_profiler.*/', 'method' => null],
+ ], $config['instrumentation']['http_kernel']['exclude_paths']);
+ }
+
+ public function test_instrumentation_partial_config() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'instrumentation' => [
+ 'http_kernel' => ['enabled' => true],
+ ],
+ ]]);
+
+ self::assertTrue($config['instrumentation']['http_kernel']['enabled']);
+ self::assertFalse($config['instrumentation']['console']['enabled']);
+ self::assertFalse($config['instrumentation']['messenger']['enabled']);
+ }
+
+ public function test_instrumentation_psr18_client_can_be_enabled() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'instrumentation' => [
+ 'psr18_client' => ['enabled' => true],
+ ],
+ ]]);
+
+ self::assertTrue($config['instrumentation']['psr18_client']['enabled']);
+ }
+
+ public function test_instrumentation_psr18_client_defaults_to_disabled() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ ]]);
+
+ self::assertArrayHasKey('instrumentation', $config);
+ self::assertArrayHasKey('psr18_client', $config['instrumentation']);
+ self::assertFalse($config['instrumentation']['psr18_client']['enabled']);
+ self::assertSame([], $config['instrumentation']['psr18_client']['exclude_clients']);
+ }
+
+ public function test_instrumentation_psr18_client_exclude_clients() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'instrumentation' => [
+ 'psr18_client' => [
+ 'enabled' => true,
+ 'exclude_clients' => ['internal.psr18_client', '/^debug\\..*$/'],
+ ],
+ ],
+ ]]);
+
+ self::assertTrue($config['instrumentation']['psr18_client']['enabled']);
+ self::assertSame(['internal.psr18_client', '/^debug\\..*$/'], $config['instrumentation']['psr18_client']['exclude_clients']);
+ }
+
+ public function test_instrumentation_twig_exclude_templates() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'instrumentation' => [
+ 'twig' => [
+ 'enabled' => true,
+ 'exclude_templates' => ['@WebProfiler/Collector/time.html.twig', 'debug/exception.html.twig'],
+ ],
+ ],
+ ]]);
+
+ self::assertTrue($config['instrumentation']['twig']['enabled']);
+ self::assertSame(['@WebProfiler/Collector/time.html.twig', 'debug/exception.html.twig'], $config['instrumentation']['twig']['exclude_templates']);
+ }
+
+ public function test_invalid_exporter_type_is_rejected() : void
+ {
+ $this->expectException(InvalidConfigurationException::class);
+
+ (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'batching',
+ 'exporter' => [
+ 'type' => 'invalid_exporter',
+ ],
+ ],
+ ],
+ ]]);
+ }
+
+ public function test_invalid_processor_type_is_rejected() : void
+ {
+ $this->expectException(InvalidConfigurationException::class);
+
+ (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'invalid_processor',
+ ],
+ ],
+ ]]);
+ }
+
+ public function test_invalid_sampler_type_is_rejected() : void
+ {
+ $this->expectException(InvalidConfigurationException::class);
+
+ (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'sampler' => [
+ 'type' => 'invalid_sampler',
+ ],
+ ],
+ ]]);
+ }
+
+ public function test_invalid_severity_level_is_rejected() : void
+ {
+ $this->expectException(InvalidConfigurationException::class);
+
+ (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'logger_provider' => [
+ 'processor' => [
+ 'type' => 'severity_filtering',
+ 'minimum_severity' => 'invalid_level',
+ 'inner_processor' => [
+ 'type' => 'void',
+ ],
+ ],
+ ],
+ ]]);
+ }
+
+ public function test_logger_configuration() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'loggers' => [
+ 'audit' => [
+ 'version' => '1.0.0',
+ 'schema_url' => 'https://example.com/audit-schema/1.0',
+ 'attributes' => [
+ 'log.category' => 'audit',
+ ],
+ ],
+ ],
+ ]]);
+
+ self::assertArrayHasKey('loggers', $config);
+ self::assertArrayHasKey('audit', $config['loggers']);
+ self::assertSame('1.0.0', $config['loggers']['audit']['version']);
+ self::assertSame('https://example.com/audit-schema/1.0', $config['loggers']['audit']['schema_url']);
+ self::assertSame(['log.category' => 'audit'], $config['loggers']['audit']['attributes']);
+ }
+
+ public function test_meter_configuration() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'meters' => [
+ 'etl_pipeline' => [
+ 'version' => '1.0.0',
+ 'attributes' => [
+ 'flow.pipeline' => 'daily_import',
+ ],
+ ],
+ ],
+ ]]);
+
+ self::assertArrayHasKey('meters', $config);
+ self::assertArrayHasKey('etl_pipeline', $config['meters']);
+ self::assertSame('1.0.0', $config['meters']['etl_pipeline']['version']);
+ self::assertNull($config['meters']['etl_pipeline']['schema_url']);
+ self::assertSame(['flow.pipeline' => 'daily_import'], $config['meters']['etl_pipeline']['attributes']);
+ }
+
+ public function test_meter_provider_temporality_can_be_delta() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'meter_provider' => [
+ 'temporality' => 'delta',
+ ],
+ ]]);
+
+ self::assertSame('delta', $config['meter_provider']['temporality']);
+ }
+
+ public function test_meter_provider_temporality_defaults_to_cumulative() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'meter_provider' => [],
+ ]]);
+
+ self::assertSame('cumulative', $config['meter_provider']['temporality']);
+ }
+
+ public function test_minimal_config_with_empty_resource() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ ]]);
+
+ self::assertArrayHasKey('resource', $config);
+ self::assertSame([], $config['resource']['custom']);
+ self::assertTrue($config['resource']['detectors']['enabled']);
+ }
+
+ public function test_multiple_named_items_of_same_type() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'tracers' => [
+ 'database' => [
+ 'version' => '1.0.0',
+ ],
+ 'http_client' => [
+ 'version' => '2.0.0',
+ ],
+ 'cache' => [],
+ ],
+ ]]);
+
+ self::assertCount(3, $config['tracers']);
+ self::assertSame('1.0.0', $config['tracers']['database']['version']);
+ self::assertSame('2.0.0', $config['tracers']['http_client']['version']);
+ self::assertSame('unknown', $config['tracers']['cache']['version']);
+ }
+
+ public function test_otlp_curl_transport_options() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'batching',
+ 'exporter' => [
+ 'type' => 'otlp',
+ 'otlp' => [
+ 'transport' => [
+ 'type' => 'curl',
+ 'endpoint' => 'http://localhost:4318',
+ 'timeout' => 60,
+ 'connect_timeout' => 5,
+ 'compression' => true,
+ 'follow_redirects' => false,
+ 'max_redirects' => 5,
+ 'proxy' => 'http://proxy:8080',
+ 'ssl_verify_peer' => false,
+ 'ssl_verify_host' => false,
+ 'ssl_cert_path' => '/path/to/cert.pem',
+ 'ssl_key_path' => '/path/to/key.pem',
+ 'ca_info_path' => '/path/to/ca.pem',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ]]);
+
+ $transport = $config['tracer_provider']['processor']['exporter']['otlp']['transport'];
+ self::assertSame('curl', $transport['type']);
+ self::assertSame('http://localhost:4318', $transport['endpoint']);
+ self::assertSame(60, $transport['timeout']);
+ self::assertSame(5, $transport['connect_timeout']);
+ self::assertTrue($transport['compression']);
+ self::assertFalse($transport['follow_redirects']);
+ self::assertSame(5, $transport['max_redirects']);
+ self::assertSame('http://proxy:8080', $transport['proxy']);
+ self::assertFalse($transport['ssl_verify_peer']);
+ self::assertFalse($transport['ssl_verify_host']);
+ self::assertSame('/path/to/cert.pem', $transport['ssl_cert_path']);
+ self::assertSame('/path/to/key.pem', $transport['ssl_key_path']);
+ self::assertSame('/path/to/ca.pem', $transport['ca_info_path']);
+ }
+
+ public function test_otlp_endpoint_is_required() : void
+ {
+ $this->expectException(InvalidConfigurationException::class);
+ $this->expectExceptionMessage('endpoint');
+
+ (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'batching',
+ 'exporter' => [
+ 'type' => 'otlp',
+ 'otlp' => [
+ 'transport' => [
+ 'type' => 'curl',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ]]);
+ }
+
+ public function test_otlp_http_transport_with_psr_services() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'batching',
+ 'exporter' => [
+ 'type' => 'otlp',
+ 'otlp' => [
+ 'transport' => [
+ 'type' => 'http',
+ 'endpoint' => 'http://localhost:4318',
+ 'http_client_service_id' => 'app.http_client',
+ 'request_factory_service_id' => 'app.request_factory',
+ 'stream_factory_service_id' => 'app.stream_factory',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ]]);
+
+ $transport = $config['tracer_provider']['processor']['exporter']['otlp']['transport'];
+ self::assertSame('http', $transport['type']);
+ self::assertSame('app.http_client', $transport['http_client_service_id']);
+ self::assertSame('app.request_factory', $transport['request_factory_service_id']);
+ self::assertSame('app.stream_factory', $transport['stream_factory_service_id']);
+ }
+
+ public function test_otlp_serializer_defaults_to_json() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'batching',
+ 'exporter' => [
+ 'type' => 'otlp',
+ 'otlp' => [
+ 'transport' => [
+ 'endpoint' => 'http://localhost:4318',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ]]);
+
+ $serializer = $config['tracer_provider']['processor']['exporter']['otlp']['transport']['serializer'];
+ self::assertSame('json', $serializer['type']);
+ }
+
+ public function test_otlp_transport_defaults() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'batching',
+ 'exporter' => [
+ 'type' => 'otlp',
+ 'otlp' => [
+ 'transport' => [
+ 'endpoint' => 'http://localhost:4318',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ]]);
+
+ $transport = $config['tracer_provider']['processor']['exporter']['otlp']['transport'];
+ self::assertSame('curl', $transport['type']);
+ self::assertSame('http://localhost:4318', $transport['endpoint']);
+ self::assertSame(30, $transport['timeout']);
+ self::assertSame([], $transport['headers']);
+ self::assertTrue($transport['insecure']);
+ }
+
+ public function test_processor_batch_size_default() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'batching',
+ ],
+ ],
+ ]]);
+
+ self::assertSame(512, $config['tracer_provider']['processor']['batch_size']);
+ }
+
+ public function test_processor_batch_size_minimum_validation() : void
+ {
+ $this->expectException(InvalidConfigurationException::class);
+
+ (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'batching',
+ 'batch_size' => 0,
+ ],
+ ],
+ ]]);
+ }
+
+ public function test_processor_defaults_to_void() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'tracer_provider' => [],
+ ]]);
+
+ self::assertSame('void', $config['tracer_provider']['processor']['type']);
+ }
+
+ public function test_providers_have_defaults() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ ]]);
+
+ self::assertArrayHasKey('tracer_provider', $config);
+ self::assertArrayHasKey('meter_provider', $config);
+ self::assertArrayHasKey('logger_provider', $config);
+ self::assertSame('void', $config['tracer_provider']['processor']['type']);
+ self::assertSame('void', $config['meter_provider']['processor']['type']);
+ self::assertSame('void', $config['logger_provider']['processor']['type']);
+ }
+
+ public function test_resource_custom_attributes() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [
+ 'custom' => [
+ 'my.custom.attribute' => 'custom-value',
+ 'another.attribute' => 123,
+ ],
+ ],
+ ]]);
+
+ self::assertSame([
+ 'my.custom.attribute' => 'custom-value',
+ 'another.attribute' => 123,
+ ], $config['resource']['custom']);
+ }
+
+ public function test_resource_detectors_are_enabled_by_default() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ ]]);
+
+ self::assertTrue($config['resource']['detectors']['enabled']);
+ self::assertTrue($config['resource']['detectors']['static']['cache']['enabled']);
+ self::assertNull($config['resource']['detectors']['static']['cache']['path']);
+ self::assertTrue($config['resource']['detectors']['static']['os']['enabled']);
+ self::assertTrue($config['resource']['detectors']['static']['host']['enabled']);
+ self::assertTrue($config['resource']['detectors']['static']['service']['enabled']);
+ self::assertTrue($config['resource']['detectors']['static']['deployment']['enabled']);
+ self::assertTrue($config['resource']['detectors']['static']['environment']['enabled']);
+ self::assertTrue($config['resource']['detectors']['dynamic']['process']['enabled']);
+ }
+
+ public function test_resource_detectors_cache_can_be_configured() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [
+ 'detectors' => [
+ 'static' => [
+ 'cache' => [
+ 'enabled' => false,
+ 'path' => '/custom/cache/path',
+ ],
+ ],
+ ],
+ ],
+ ]]);
+
+ self::assertFalse($config['resource']['detectors']['static']['cache']['enabled']);
+ self::assertSame('/custom/cache/path', $config['resource']['detectors']['static']['cache']['path']);
+ }
+
+ public function test_resource_detectors_can_be_disabled() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [
+ 'detectors' => [
+ 'enabled' => false,
+ ],
+ ],
+ ]]);
+
+ self::assertFalse($config['resource']['detectors']['enabled']);
+ }
+
+ public function test_resource_detectors_can_be_individually_disabled() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [
+ 'detectors' => [
+ 'static' => [
+ 'os' => ['enabled' => false],
+ 'host' => ['enabled' => false],
+ 'service' => ['enabled' => false],
+ 'deployment' => ['enabled' => false],
+ 'environment' => ['enabled' => false],
+ ],
+ 'dynamic' => [
+ 'process' => ['enabled' => false],
+ ],
+ ],
+ ],
+ ]]);
+
+ self::assertTrue($config['resource']['detectors']['enabled']);
+ self::assertFalse($config['resource']['detectors']['static']['os']['enabled']);
+ self::assertFalse($config['resource']['detectors']['static']['host']['enabled']);
+ self::assertFalse($config['resource']['detectors']['static']['service']['enabled']);
+ self::assertFalse($config['resource']['detectors']['static']['deployment']['enabled']);
+ self::assertFalse($config['resource']['detectors']['static']['environment']['enabled']);
+ self::assertFalse($config['resource']['detectors']['dynamic']['process']['enabled']);
+ }
+
+ public function test_sampler_defaults_to_always_on() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'tracer_provider' => [],
+ ]]);
+
+ self::assertSame('always_on', $config['tracer_provider']['sampler']['type']);
+ }
+
+ public function test_sampler_ratio_maximum_validation() : void
+ {
+ $this->expectException(InvalidConfigurationException::class);
+
+ (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'sampler' => [
+ 'type' => 'trace_id_ratio',
+ 'ratio' => 1.1,
+ ],
+ ],
+ ]]);
+ }
+
+ public function test_sampler_ratio_minimum_validation() : void
+ {
+ $this->expectException(InvalidConfigurationException::class);
+
+ (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'sampler' => [
+ 'type' => 'trace_id_ratio',
+ 'ratio' => -0.1,
+ ],
+ ],
+ ]]);
+ }
+
+ public function test_sampler_ratio_validation() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'sampler' => [
+ 'type' => 'trace_id_ratio',
+ 'ratio' => 0.5,
+ ],
+ ],
+ ]]);
+
+ self::assertSame(0.5, $config['tracer_provider']['sampler']['ratio']);
+ }
+
+ public function test_severity_filtering_is_only_available_for_log_processors() : void
+ {
+ $this->expectException(InvalidConfigurationException::class);
+
+ (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'tracer_provider' => [
+ 'processor' => [
+ 'type' => 'severity_filtering',
+ ],
+ ],
+ ]]);
+ }
+
+ public function test_severity_filtering_minimum_severity_default() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'logger_provider' => [
+ 'processor' => [
+ 'type' => 'severity_filtering',
+ 'inner_processor' => [
+ 'type' => 'void',
+ ],
+ ],
+ ],
+ ]]);
+
+ self::assertSame('info', $config['logger_provider']['processor']['minimum_severity']);
+ }
+
+ public function test_severity_filtering_processor_for_logs() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'logger_provider' => [
+ 'processor' => [
+ 'type' => 'severity_filtering',
+ 'minimum_severity' => 'warn',
+ 'inner_processor' => [
+ 'type' => 'batching',
+ 'exporter' => ['type' => 'console'],
+ ],
+ ],
+ ],
+ ]]);
+
+ $processor = $config['logger_provider']['processor'];
+ self::assertSame('severity_filtering', $processor['type']);
+ self::assertSame('warn', $processor['minimum_severity']);
+ self::assertSame('batching', $processor['inner_processor']['type']);
+ self::assertSame('console', $processor['inner_processor']['exporter']['type']);
+ }
+
+ public function test_tracer_configuration_with_all_options() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'tracers' => [
+ 'database' => [
+ 'version' => '2.0.0',
+ 'schema_url' => 'https://opentelemetry.io/schemas/1.20.0',
+ 'attributes' => [
+ 'db.system' => 'postgresql',
+ 'db.pool_size' => 10,
+ ],
+ ],
+ ],
+ ]]);
+
+ self::assertArrayHasKey('tracers', $config);
+ self::assertArrayHasKey('database', $config['tracers']);
+ self::assertSame('2.0.0', $config['tracers']['database']['version']);
+ self::assertSame('https://opentelemetry.io/schemas/1.20.0', $config['tracers']['database']['schema_url']);
+ self::assertSame([
+ 'db.system' => 'postgresql',
+ 'db.pool_size' => 10,
+ ], $config['tracers']['database']['attributes']);
+ }
+
+ public function test_tracer_configuration_with_defaults() : void
+ {
+ $config = (new Processor())->processConfiguration(new Configuration(), [[
+ 'resource' => [],
+ 'tracers' => [
+ 'http_client' => [],
+ ],
+ ]]);
+
+ self::assertArrayHasKey('tracers', $config);
+ self::assertArrayHasKey('http_client', $config['tracers']);
+ self::assertSame('unknown', $config['tracers']['http_client']['version']);
+ self::assertNull($config['tracers']['http_client']['schema_url']);
+ self::assertSame([], $config['tracers']['http_client']['attributes']);
+ }
+}
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
new file mode 100644
index 0000000000..b2498d1f68
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Cache/TagAwareTraceableCacheAdapterTest.php
@@ -0,0 +1,803 @@
+createTelemetry($spanProcessor);
+
+ $adapter = new class implements TagAwareAdapterInterface {
+ public function clear(string $prefix = '') : bool
+ {
+ return true;
+ }
+
+ public function commit() : bool
+ {
+ return true;
+ }
+
+ public function deleteItem(mixed $key) : bool
+ {
+ return true;
+ }
+
+ public function deleteItems(array $keys) : bool
+ {
+ return true;
+ }
+
+ public function getItem(mixed $key) : CacheItem
+ {
+ return new CacheItem();
+ }
+
+ public function getItems(array $keys = []) : iterable
+ {
+ return [];
+ }
+
+ public function hasItem(mixed $key) : bool
+ {
+ return false;
+ }
+
+ public function invalidateTags(array $tags) : bool
+ {
+ return true;
+ }
+
+ public function save(CacheItemInterface $item) : bool
+ {
+ return true;
+ }
+
+ public function saveDeferred(CacheItemInterface $item) : bool
+ {
+ return true;
+ }
+ };
+
+ $traceable = new TagAwareTraceableCacheAdapter($adapter, $telemetry, 'test.pool');
+
+ $traceable->clear();
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+
+ $span = $spans[0];
+ self::assertSame('cache clear', $span->name());
+ self::assertSame(SpanKind::CLIENT, $span->kind());
+ self::assertSame('clear', $span->attributes()['cache.operation']);
+ self::assertSame('test.pool', $span->attributes()['cache.pool']);
+ self::assertArrayNotHasKey('cache.prefix', $span->attributes());
+ }
+
+ public function test_clear_with_prefix_includes_prefix_attribute() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $adapter = new class implements TagAwareAdapterInterface {
+ public function clear(string $prefix = '') : bool
+ {
+ return true;
+ }
+
+ public function commit() : bool
+ {
+ return true;
+ }
+
+ public function deleteItem(mixed $key) : bool
+ {
+ return true;
+ }
+
+ public function deleteItems(array $keys) : bool
+ {
+ return true;
+ }
+
+ public function getItem(mixed $key) : CacheItem
+ {
+ return new CacheItem();
+ }
+
+ public function getItems(array $keys = []) : iterable
+ {
+ return [];
+ }
+
+ public function hasItem(mixed $key) : bool
+ {
+ return false;
+ }
+
+ public function invalidateTags(array $tags) : bool
+ {
+ return true;
+ }
+
+ public function save(CacheItemInterface $item) : bool
+ {
+ return true;
+ }
+
+ public function saveDeferred(CacheItemInterface $item) : bool
+ {
+ return true;
+ }
+ };
+
+ $traceable = new TagAwareTraceableCacheAdapter($adapter, $telemetry, 'test.pool');
+
+ $traceable->clear('app_');
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+
+ $span = $spans[0];
+ self::assertSame('app_', $span->attributes()['cache.prefix']);
+ }
+
+ public function test_delete_throws_when_adapter_does_not_implement_tag_aware_cache_interface() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $adapter = new class implements TagAwareAdapterInterface {
+ public function clear(string $prefix = '') : bool
+ {
+ return true;
+ }
+
+ public function commit() : bool
+ {
+ return true;
+ }
+
+ public function deleteItem(mixed $key) : bool
+ {
+ return true;
+ }
+
+ public function deleteItems(array $keys) : bool
+ {
+ return true;
+ }
+
+ public function getItem(mixed $key) : CacheItem
+ {
+ return new CacheItem();
+ }
+
+ public function getItems(array $keys = []) : iterable
+ {
+ return [];
+ }
+
+ public function hasItem(mixed $key) : bool
+ {
+ return false;
+ }
+
+ public function invalidateTags(array $tags) : bool
+ {
+ return true;
+ }
+
+ public function save(CacheItemInterface $item) : bool
+ {
+ return true;
+ }
+
+ public function saveDeferred(CacheItemInterface $item) : bool
+ {
+ return true;
+ }
+ };
+
+ $traceable = new TagAwareTraceableCacheAdapter($adapter, $telemetry, 'test.pool');
+
+ $this->expectException(\BadMethodCallException::class);
+ $this->expectExceptionMessage('does not implement');
+
+ $traceable->delete('key');
+ }
+
+ public function test_get_throws_when_adapter_does_not_implement_tag_aware_cache_interface() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $adapter = new class implements TagAwareAdapterInterface {
+ public function clear(string $prefix = '') : bool
+ {
+ return true;
+ }
+
+ public function commit() : bool
+ {
+ return true;
+ }
+
+ public function deleteItem(mixed $key) : bool
+ {
+ return true;
+ }
+
+ public function deleteItems(array $keys) : bool
+ {
+ return true;
+ }
+
+ public function getItem(mixed $key) : CacheItem
+ {
+ return new CacheItem();
+ }
+
+ public function getItems(array $keys = []) : iterable
+ {
+ return [];
+ }
+
+ public function hasItem(mixed $key) : bool
+ {
+ return false;
+ }
+
+ public function invalidateTags(array $tags) : bool
+ {
+ return true;
+ }
+
+ public function save(CacheItemInterface $item) : bool
+ {
+ return true;
+ }
+
+ public function saveDeferred(CacheItemInterface $item) : bool
+ {
+ return true;
+ }
+ };
+
+ $traceable = new TagAwareTraceableCacheAdapter($adapter, $telemetry, 'test.pool');
+
+ $this->expectException(\BadMethodCallException::class);
+ $this->expectExceptionMessage('does not implement');
+
+ $traceable->get('key', static fn () => 'value');
+ }
+
+ public function test_invalidate_tags_creates_span_with_tag_count() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $adapter = new class implements TagAwareAdapterInterface {
+ public function clear(string $prefix = '') : bool
+ {
+ return true;
+ }
+
+ public function commit() : bool
+ {
+ return true;
+ }
+
+ public function deleteItem(mixed $key) : bool
+ {
+ return true;
+ }
+
+ public function deleteItems(array $keys) : bool
+ {
+ return true;
+ }
+
+ public function getItem(mixed $key) : CacheItem
+ {
+ return new CacheItem();
+ }
+
+ public function getItems(array $keys = []) : iterable
+ {
+ return [];
+ }
+
+ public function hasItem(mixed $key) : bool
+ {
+ return false;
+ }
+
+ public function invalidateTags(array $tags) : bool
+ {
+ return true;
+ }
+
+ public function save(CacheItemInterface $item) : bool
+ {
+ return true;
+ }
+
+ public function saveDeferred(CacheItemInterface $item) : bool
+ {
+ return true;
+ }
+ };
+
+ $traceable = new TagAwareTraceableCacheAdapter($adapter, $telemetry, 'test.pool');
+
+ $traceable->invalidateTags(['tag1', 'tag2', 'tag3']);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+
+ $span = $spans[0];
+ self::assertSame('cache invalidateTags', $span->name());
+ self::assertSame(['tag1', 'tag2', 'tag3'], $span->attributes()['cache.tags']);
+ self::assertSame(3, $span->attributes()['cache.tag_count']);
+ }
+
+ public function test_operation_records_exception_on_failure() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $adapter = new class implements TagAwareAdapterInterface {
+ public function clear(string $prefix = '') : bool
+ {
+ throw new \RuntimeException('Connection lost');
+ }
+
+ public function commit() : bool
+ {
+ return true;
+ }
+
+ public function deleteItem(mixed $key) : bool
+ {
+ return true;
+ }
+
+ public function deleteItems(array $keys) : bool
+ {
+ return true;
+ }
+
+ public function getItem(mixed $key) : CacheItem
+ {
+ return new CacheItem();
+ }
+
+ public function getItems(array $keys = []) : iterable
+ {
+ return [];
+ }
+
+ public function hasItem(mixed $key) : bool
+ {
+ return false;
+ }
+
+ public function invalidateTags(array $tags) : bool
+ {
+ return true;
+ }
+
+ public function save(CacheItemInterface $item) : bool
+ {
+ return true;
+ }
+
+ public function saveDeferred(CacheItemInterface $item) : bool
+ {
+ return true;
+ }
+ };
+
+ $traceable = new TagAwareTraceableCacheAdapter($adapter, $telemetry, 'test.pool');
+
+ $exceptionThrown = false;
+
+ try {
+ $traceable->clear();
+ } catch (\RuntimeException) {
+ $exceptionThrown = true;
+ }
+
+ self::assertTrue($exceptionThrown);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+
+ $events = $spans[0]->events();
+ self::assertCount(1, $events);
+ self::assertSame('exception', $events[0]->name());
+ }
+
+ public function test_operation_sets_error_status_on_failure() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $adapter = new class implements TagAwareAdapterInterface {
+ public function clear(string $prefix = '') : bool
+ {
+ throw new \RuntimeException('Connection lost');
+ }
+
+ public function commit() : bool
+ {
+ return true;
+ }
+
+ public function deleteItem(mixed $key) : bool
+ {
+ return true;
+ }
+
+ public function deleteItems(array $keys) : bool
+ {
+ return true;
+ }
+
+ public function getItem(mixed $key) : CacheItem
+ {
+ return new CacheItem();
+ }
+
+ public function getItems(array $keys = []) : iterable
+ {
+ return [];
+ }
+
+ public function hasItem(mixed $key) : bool
+ {
+ return false;
+ }
+
+ public function invalidateTags(array $tags) : bool
+ {
+ return true;
+ }
+
+ public function save(CacheItemInterface $item) : bool
+ {
+ return true;
+ }
+
+ public function saveDeferred(CacheItemInterface $item) : bool
+ {
+ return true;
+ }
+ };
+
+ $traceable = new TagAwareTraceableCacheAdapter($adapter, $telemetry, 'test.pool');
+
+ try {
+ $traceable->clear();
+ } catch (\RuntimeException) {
+ }
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+
+ $status = $spans[0]->status();
+ self::assertNotNull($status);
+ self::assertTrue($status->isError());
+ self::assertSame('Connection lost', $status->description);
+ }
+
+ public function test_prune_delegates_to_adapter_when_pruneable() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $adapter = new class implements PruneableInterface, TagAwareAdapterInterface {
+ public bool $pruneCalled = false;
+
+ public function clear(string $prefix = '') : bool
+ {
+ return true;
+ }
+
+ public function commit() : bool
+ {
+ return true;
+ }
+
+ public function deleteItem(mixed $key) : bool
+ {
+ return true;
+ }
+
+ public function deleteItems(array $keys) : bool
+ {
+ return true;
+ }
+
+ public function getItem(mixed $key) : CacheItem
+ {
+ return new CacheItem();
+ }
+
+ public function getItems(array $keys = []) : iterable
+ {
+ return [];
+ }
+
+ public function hasItem(mixed $key) : bool
+ {
+ return false;
+ }
+
+ public function invalidateTags(array $tags) : bool
+ {
+ return true;
+ }
+
+ public function prune() : bool
+ {
+ $this->pruneCalled = true;
+
+ return true;
+ }
+
+ public function save(CacheItemInterface $item) : bool
+ {
+ return true;
+ }
+
+ public function saveDeferred(CacheItemInterface $item) : bool
+ {
+ return true;
+ }
+ };
+
+ $traceable = new TagAwareTraceableCacheAdapter($adapter, $telemetry, 'test.pool');
+
+ $result = $traceable->prune();
+
+ self::assertTrue($result);
+ self::assertTrue($adapter->pruneCalled);
+ self::assertCount(1, $spanProcessor->endedSpans());
+ }
+
+ public function test_prune_returns_false_when_adapter_is_not_pruneable() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $adapter = new class implements TagAwareAdapterInterface {
+ public function clear(string $prefix = '') : bool
+ {
+ return true;
+ }
+
+ public function commit() : bool
+ {
+ return true;
+ }
+
+ public function deleteItem(mixed $key) : bool
+ {
+ return true;
+ }
+
+ public function deleteItems(array $keys) : bool
+ {
+ return true;
+ }
+
+ public function getItem(mixed $key) : CacheItem
+ {
+ return new CacheItem();
+ }
+
+ public function getItems(array $keys = []) : iterable
+ {
+ return [];
+ }
+
+ public function hasItem(mixed $key) : bool
+ {
+ return false;
+ }
+
+ public function invalidateTags(array $tags) : bool
+ {
+ return true;
+ }
+
+ public function save(CacheItemInterface $item) : bool
+ {
+ return true;
+ }
+
+ public function saveDeferred(CacheItemInterface $item) : bool
+ {
+ return true;
+ }
+ };
+
+ $traceable = new TagAwareTraceableCacheAdapter($adapter, $telemetry, 'test.pool');
+
+ $result = $traceable->prune();
+
+ self::assertFalse($result);
+ self::assertCount(0, $spanProcessor->endedSpans());
+ }
+
+ public function test_reset_delegates_to_adapter_when_resettable() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $adapter = new class implements ResettableInterface, TagAwareAdapterInterface {
+ public bool $resetCalled = false;
+
+ public function clear(string $prefix = '') : bool
+ {
+ return true;
+ }
+
+ public function commit() : bool
+ {
+ return true;
+ }
+
+ public function deleteItem(mixed $key) : bool
+ {
+ return true;
+ }
+
+ public function deleteItems(array $keys) : bool
+ {
+ return true;
+ }
+
+ public function getItem(mixed $key) : CacheItem
+ {
+ return new CacheItem();
+ }
+
+ public function getItems(array $keys = []) : iterable
+ {
+ return [];
+ }
+
+ public function hasItem(mixed $key) : bool
+ {
+ return false;
+ }
+
+ public function invalidateTags(array $tags) : bool
+ {
+ return true;
+ }
+
+ public function reset() : void
+ {
+ $this->resetCalled = true;
+ }
+
+ public function save(CacheItemInterface $item) : bool
+ {
+ return true;
+ }
+
+ public function saveDeferred(CacheItemInterface $item) : bool
+ {
+ return true;
+ }
+ };
+
+ $traceable = new TagAwareTraceableCacheAdapter($adapter, $telemetry, 'test.pool');
+
+ $traceable->reset();
+
+ self::assertTrue($adapter->resetCalled);
+ self::assertCount(1, $spanProcessor->endedSpans());
+ }
+
+ public function test_reset_does_nothing_when_adapter_is_not_resettable() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $adapter = new class implements TagAwareAdapterInterface {
+ public function clear(string $prefix = '') : bool
+ {
+ return true;
+ }
+
+ public function commit() : bool
+ {
+ return true;
+ }
+
+ public function deleteItem(mixed $key) : bool
+ {
+ return true;
+ }
+
+ public function deleteItems(array $keys) : bool
+ {
+ return true;
+ }
+
+ public function getItem(mixed $key) : CacheItem
+ {
+ return new CacheItem();
+ }
+
+ public function getItems(array $keys = []) : iterable
+ {
+ return [];
+ }
+
+ public function hasItem(mixed $key) : bool
+ {
+ return false;
+ }
+
+ public function invalidateTags(array $tags) : bool
+ {
+ return true;
+ }
+
+ public function save(CacheItemInterface $item) : bool
+ {
+ return true;
+ }
+
+ public function saveDeferred(CacheItemInterface $item) : bool
+ {
+ return true;
+ }
+ };
+
+ $traceable = new TagAwareTraceableCacheAdapter($adapter, $telemetry, 'test.pool');
+
+ $traceable->reset();
+
+ self::assertCount(0, $spanProcessor->endedSpans());
+ }
+
+ private function createTelemetry(MemorySpanProcessor $spanProcessor) : Telemetry
+ {
+ $clock = new SystemClock();
+ $contextStorage = new MemoryContextStorage();
+
+ return new Telemetry(
+ Resource::create(['service.name' => 'test']),
+ new TracerProvider($spanProcessor, $clock, $contextStorage),
+ new MeterProvider(new VoidMetricProcessor(), $clock),
+ new LoggerProvider(new VoidLogProcessor(), $clock, $contextStorage),
+ );
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Console/ConsoleSpanSubscriberTest.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Console/ConsoleSpanSubscriberTest.php
new file mode 100644
index 0000000000..56d0cad8f3
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Console/ConsoleSpanSubscriberTest.php
@@ -0,0 +1,332 @@
+createTelemetry($spanProcessor);
+
+ $subscriber = new ConsoleSpanSubscriber($telemetry);
+
+ $command = new Command('app:process');
+ $commandEvent = new ConsoleCommandEvent($command, new ArrayInput([]), new NullOutput());
+ $terminateEvent = new ConsoleTerminateEvent($command, new ArrayInput([]), new NullOutput(), 0);
+
+ $subscriber->onCommand($commandEvent);
+ $subscriber->onTerminate($terminateEvent);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+
+ $status = $spans[0]->status();
+ self::assertNotNull($status);
+ self::assertTrue($status->isOk());
+ }
+
+ public function test_exit_code_nonzero_sets_error_status() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $subscriber = new ConsoleSpanSubscriber($telemetry);
+
+ $command = new Command('app:process');
+ $commandEvent = new ConsoleCommandEvent($command, new ArrayInput([]), new NullOutput());
+ $terminateEvent = new ConsoleTerminateEvent($command, new ArrayInput([]), new NullOutput(), 1);
+
+ $subscriber->onCommand($commandEvent);
+ $subscriber->onTerminate($terminateEvent);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+
+ $status = $spans[0]->status();
+ self::assertNotNull($status);
+ self::assertTrue($status->isError());
+ self::assertSame('Exit code: 1', $status->description);
+ }
+
+ public function test_get_subscribed_events_returns_correct_events() : void
+ {
+ $events = ConsoleSpanSubscriber::getSubscribedEvents();
+
+ self::assertArrayHasKey('console.command', $events);
+ self::assertArrayHasKey('console.error', $events);
+ self::assertArrayHasKey('console.terminate', $events);
+ self::assertArrayHasKey('console.signal', $events);
+
+ self::assertSame(['onCommand', 10000], $events['console.command']);
+ self::assertSame(['onError', 0], $events['console.error']);
+ self::assertSame(['onTerminate', -10000], $events['console.terminate']);
+ self::assertSame(['onSignal', 0], $events['console.signal']);
+ }
+
+ public function test_matches_pattern_exact_match() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $subscriber = new ConsoleSpanSubscriber($telemetry, excludeCommands: ['cache:clear']);
+
+ $command = new Command('cache:clear');
+ $event = new ConsoleCommandEvent($command, new ArrayInput([]), new NullOutput());
+
+ $subscriber->onCommand($event);
+
+ self::assertCount(0, $spanProcessor->endedSpans());
+ }
+
+ public function test_matches_pattern_regex_match() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $subscriber = new ConsoleSpanSubscriber($telemetry, excludeCommands: ['/^cache:.*/']);
+
+ $command = new Command('cache:warmup');
+ $event = new ConsoleCommandEvent($command, new ArrayInput([]), new NullOutput());
+
+ $subscriber->onCommand($event);
+
+ self::assertCount(0, $spanProcessor->endedSpans());
+ }
+
+ public function test_on_error_does_nothing_when_no_active_span() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $subscriber = new ConsoleSpanSubscriber($telemetry, excludeCommands: ['cache:clear']);
+
+ $command = new Command('cache:clear');
+ $exception = new \RuntimeException('Error');
+ $commandEvent = new ConsoleCommandEvent($command, new ArrayInput([]), new NullOutput());
+ $errorEvent = new ConsoleErrorEvent(new ArrayInput([]), new NullOutput(), $exception, $command);
+
+ $subscriber->onCommand($commandEvent);
+ $subscriber->onError($errorEvent);
+
+ self::assertCount(0, $spanProcessor->endedSpans());
+ }
+
+ public function test_on_error_records_exception() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $subscriber = new ConsoleSpanSubscriber($telemetry);
+
+ $command = new Command('app:failing');
+ $exception = new \RuntimeException('Something went wrong');
+ $commandEvent = new ConsoleCommandEvent($command, new ArrayInput([]), new NullOutput());
+ $errorEvent = new ConsoleErrorEvent(new ArrayInput([]), new NullOutput(), $exception, $command);
+ $terminateEvent = new ConsoleTerminateEvent($command, new ArrayInput([]), new NullOutput(), 1);
+
+ $subscriber->onCommand($commandEvent);
+ $subscriber->onError($errorEvent);
+ $subscriber->onTerminate($terminateEvent);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+
+ $events = $spans[0]->events();
+ self::assertCount(1, $events);
+ self::assertSame('exception', $events[0]->name());
+ }
+
+ public function test_on_terminate_does_nothing_when_no_active_span() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $subscriber = new ConsoleSpanSubscriber($telemetry, excludeCommands: ['cache:clear']);
+
+ $command = new Command('cache:clear');
+ $commandEvent = new ConsoleCommandEvent($command, new ArrayInput([]), new NullOutput());
+ $terminateEvent = new ConsoleTerminateEvent($command, new ArrayInput([]), new NullOutput(), 0);
+
+ $subscriber->onCommand($commandEvent);
+ $subscriber->onTerminate($terminateEvent);
+
+ self::assertCount(0, $spanProcessor->endedSpans());
+ }
+
+ public function test_should_trace_excludes_exact_matches() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $subscriber = new ConsoleSpanSubscriber($telemetry, excludeCommands: ['assets:install']);
+
+ $command = new Command('assets:install');
+ $event = new ConsoleCommandEvent($command, new ArrayInput([]), new NullOutput());
+
+ $subscriber->onCommand($event);
+
+ self::assertCount(0, $spanProcessor->endedSpans());
+ }
+
+ public function test_should_trace_excludes_regex_matches() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $subscriber = new ConsoleSpanSubscriber($telemetry, excludeCommands: ['/^debug:/']);
+
+ $command = new Command('debug:router');
+ $event = new ConsoleCommandEvent($command, new ArrayInput([]), new NullOutput());
+
+ $subscriber->onCommand($event);
+
+ self::assertCount(0, $spanProcessor->endedSpans());
+ }
+
+ public function test_should_trace_includes_non_excluded() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $subscriber = new ConsoleSpanSubscriber($telemetry, excludeCommands: ['cache:clear', '/^debug:/']);
+
+ $command = new Command('doctrine:migrations:migrate');
+ $event = new ConsoleCommandEvent($command, new ArrayInput([]), new NullOutput());
+ $terminateEvent = new ConsoleTerminateEvent($command, new ArrayInput([]), new NullOutput(), 0);
+
+ $subscriber->onCommand($event);
+ $subscriber->onTerminate($terminateEvent);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ self::assertSame('doctrine:migrations:migrate', $spans[0]->name());
+ }
+
+ public function test_span_includes_command_class_attribute() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $subscriber = new ConsoleSpanSubscriber($telemetry);
+
+ $command = new Command('app:task');
+ $commandEvent = new ConsoleCommandEvent($command, new ArrayInput([]), new NullOutput());
+ $terminateEvent = new ConsoleTerminateEvent($command, new ArrayInput([]), new NullOutput(), 0);
+
+ $subscriber->onCommand($commandEvent);
+ $subscriber->onTerminate($terminateEvent);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ self::assertSame(Command::class, $spans[0]->attributes()['command.class']);
+ }
+
+ public function test_span_includes_command_name_attribute() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $subscriber = new ConsoleSpanSubscriber($telemetry);
+
+ $command = new Command('app:sync');
+ $commandEvent = new ConsoleCommandEvent($command, new ArrayInput([]), new NullOutput());
+ $terminateEvent = new ConsoleTerminateEvent($command, new ArrayInput([]), new NullOutput(), 0);
+
+ $subscriber->onCommand($commandEvent);
+ $subscriber->onTerminate($terminateEvent);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ self::assertSame('app:sync', $spans[0]->attributes()['command.name']);
+ }
+
+ public function test_span_includes_exit_code_attribute() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $subscriber = new ConsoleSpanSubscriber($telemetry);
+
+ $command = new Command('app:task');
+ $commandEvent = new ConsoleCommandEvent($command, new ArrayInput([]), new NullOutput());
+ $terminateEvent = new ConsoleTerminateEvent($command, new ArrayInput([]), new NullOutput(), 42);
+
+ $subscriber->onCommand($commandEvent);
+ $subscriber->onTerminate($terminateEvent);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ self::assertSame(42, $spans[0]->attributes()['process.exit_code']);
+ }
+
+ public function test_span_kind_is_internal() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $subscriber = new ConsoleSpanSubscriber($telemetry);
+
+ $command = new Command('app:task');
+ $commandEvent = new ConsoleCommandEvent($command, new ArrayInput([]), new NullOutput());
+ $terminateEvent = new ConsoleTerminateEvent($command, new ArrayInput([]), new NullOutput(), 0);
+
+ $subscriber->onCommand($commandEvent);
+ $subscriber->onTerminate($terminateEvent);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ self::assertSame(SpanKind::INTERNAL, $spans[0]->kind());
+ }
+
+ public function test_span_name_set_to_command_name() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $subscriber = new ConsoleSpanSubscriber($telemetry);
+
+ $command = new Command('app:send-emails');
+ $commandEvent = new ConsoleCommandEvent($command, new ArrayInput([]), new NullOutput());
+ $terminateEvent = new ConsoleTerminateEvent($command, new ArrayInput([]), new NullOutput(), 0);
+
+ $subscriber->onCommand($commandEvent);
+ $subscriber->onTerminate($terminateEvent);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ self::assertSame('app:send-emails', $spans[0]->name());
+ }
+
+ private function createTelemetry(MemorySpanProcessor $spanProcessor) : Telemetry
+ {
+ $clock = new SystemClock();
+ $contextStorage = new MemoryContextStorage();
+
+ return new Telemetry(
+ Resource::create(['service.name' => 'test']),
+ new TracerProvider($spanProcessor, $clock, $contextStorage),
+ new MeterProvider(new VoidMetricProcessor(), $clock),
+ new LoggerProvider(new VoidLogProcessor(), $clock, $contextStorage),
+ );
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Doctrine/DBAL/TracingConnectionTest.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Doctrine/DBAL/TracingConnectionTest.php
new file mode 100644
index 0000000000..27cb15c06d
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Doctrine/DBAL/TracingConnectionTest.php
@@ -0,0 +1,354 @@
+createTelemetry($spanProcessor);
+
+ $connection = $this->createMockConnection();
+ $tracing = new TracingConnection($connection, $telemetry, logSql: true, maxSqlLength: 15);
+
+ $sql = 'INSERT INTO users (name, email) VALUES (?, ?)';
+ $tracing->prepare($sql);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ self::assertSame('INSERT INTO use...', $spans[0]->attributes()['db.query.text']);
+ }
+
+ public function test_query_uses_truncation() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $connection = $this->createMockConnection();
+ $tracing = new TracingConnection($connection, $telemetry, logSql: true, maxSqlLength: 10);
+
+ $sql = 'SELECT * FROM users WHERE id = 1';
+ $tracing->query($sql);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ self::assertSame('SELECT * F...', $spans[0]->attributes()['db.query.text']);
+ }
+
+ public function test_sql_not_logged_when_log_sql_disabled() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $connection = $this->createMockConnection();
+ $tracing = new TracingConnection($connection, $telemetry, logSql: false, maxSqlLength: 100);
+
+ $sql = 'SELECT * FROM users';
+ $tracing->exec($sql);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ self::assertArrayNotHasKey('db.query.text', $spans[0]->attributes());
+ }
+
+ public function test_truncate_sql_exact_boundary_case() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $connection = $this->createMockConnection();
+ $tracing = new TracingConnection($connection, $telemetry, logSql: true, maxSqlLength: 10);
+
+ $sql = '1234567890';
+ $tracing->exec($sql);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ self::assertSame($sql, $spans[0]->attributes()['db.query.text']);
+ }
+
+ public function test_truncate_sql_handles_multibyte_characters() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $connection = $this->createMockConnection();
+ $tracing = new TracingConnection($connection, $telemetry, logSql: true, maxSqlLength: 15);
+
+ $sql = "SELECT * FROM users WHERE name = '日本語テスト'";
+ $tracing->exec($sql);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+
+ $truncated = $spans[0]->attributes()['db.query.text'];
+ self::assertSame('SELECT * FROM u...', $truncated);
+ self::assertSame(18, \mb_strlen($truncated));
+ }
+
+ public function test_truncate_sql_returns_full_sql_when_max_length_negative() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $connection = $this->createMockConnection();
+ $tracing = new TracingConnection($connection, $telemetry, logSql: true, maxSqlLength: -1);
+
+ $longSql = \str_repeat('SELECT * FROM users; ', 100);
+ $tracing->exec($longSql);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ self::assertSame($longSql, $spans[0]->attributes()['db.query.text']);
+ }
+
+ public function test_truncate_sql_returns_full_sql_when_max_length_zero() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $connection = $this->createMockConnection();
+ $tracing = new TracingConnection($connection, $telemetry, logSql: true, maxSqlLength: 0);
+
+ $longSql = \str_repeat('SELECT * FROM users; ', 100);
+ $tracing->exec($longSql);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ self::assertSame($longSql, $spans[0]->attributes()['db.query.text']);
+ }
+
+ public function test_truncate_sql_returns_sql_when_shorter_than_limit() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $connection = $this->createMockConnection();
+ $tracing = new TracingConnection($connection, $telemetry, logSql: true, maxSqlLength: 100);
+
+ $sql = 'SELECT * FROM users WHERE id = 1';
+ $tracing->exec($sql);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ self::assertSame($sql, $spans[0]->attributes()['db.query.text']);
+ }
+
+ public function test_truncate_sql_truncates_and_appends_ellipsis() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $connection = $this->createMockConnection();
+ $tracing = new TracingConnection($connection, $telemetry, logSql: true, maxSqlLength: 20);
+
+ $sql = 'SELECT * FROM users WHERE id = 1 AND status = active';
+ $tracing->exec($sql);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ self::assertSame('SELECT * FROM users ...', $spans[0]->attributes()['db.query.text']);
+ }
+
+ private function createMockConnection() : ConnectionInterface
+ {
+ return new class implements ConnectionInterface {
+ public function beginTransaction() : void
+ {
+ }
+
+ public function commit() : void
+ {
+ }
+
+ public function exec(string $sql) : int
+ {
+ return 0;
+ }
+
+ public function getNativeConnection() : object
+ {
+ return new \stdClass();
+ }
+
+ public function getServerVersion() : string
+ {
+ return '8.0.0';
+ }
+
+ public function lastInsertId() : int
+ {
+ return 0;
+ }
+
+ public function prepare(string $sql) : DriverStatement
+ {
+ return new class implements DriverStatement {
+ public function bindValue(int|string $param, mixed $value, ParameterType $type = ParameterType::STRING) : void
+ {
+ }
+
+ public function execute() : Result
+ {
+ return new class implements Result {
+ public function columnCount() : int
+ {
+ return 0;
+ }
+
+ /** @return list> */
+ public function fetchAllAssociative() : array
+ {
+ return [];
+ }
+
+ /** @return array */
+ public function fetchAllKeyValue() : array
+ {
+ return [];
+ }
+
+ /** @return list> */
+ public function fetchAllNumeric() : array
+ {
+ return [];
+ }
+
+ /** @return array|false */
+ public function fetchAssociative() : array|false
+ {
+ return false;
+ }
+
+ /** @return list */
+ public function fetchFirstColumn() : array
+ {
+ return [];
+ }
+
+ /** @return false|list */
+ public function fetchNumeric() : array|false
+ {
+ return false;
+ }
+
+ public function fetchOne() : mixed
+ {
+ return false;
+ }
+
+ public function free() : void
+ {
+ }
+
+ public function rowCount() : int
+ {
+ return 0;
+ }
+ };
+ }
+ };
+ }
+
+ public function query(string $sql) : Result
+ {
+ return new class implements Result {
+ public function columnCount() : int
+ {
+ return 0;
+ }
+
+ /** @return list> */
+ public function fetchAllAssociative() : array
+ {
+ return [];
+ }
+
+ /** @return array */
+ public function fetchAllKeyValue() : array
+ {
+ return [];
+ }
+
+ /** @return list> */
+ public function fetchAllNumeric() : array
+ {
+ return [];
+ }
+
+ /** @return array|false */
+ public function fetchAssociative() : array|false
+ {
+ return false;
+ }
+
+ /** @return list */
+ public function fetchFirstColumn() : array
+ {
+ return [];
+ }
+
+ /** @return false|list */
+ public function fetchNumeric() : array|false
+ {
+ return false;
+ }
+
+ public function fetchOne() : mixed
+ {
+ return false;
+ }
+
+ public function free() : void
+ {
+ }
+
+ public function rowCount() : int
+ {
+ return 0;
+ }
+ };
+ }
+
+ public function quote(string $value) : string
+ {
+ return "'{$value}'";
+ }
+
+ public function rollBack() : void
+ {
+ }
+ };
+ }
+
+ private function createTelemetry(MemorySpanProcessor $spanProcessor) : Telemetry
+ {
+ $clock = new SystemClock();
+ $contextStorage = new MemoryContextStorage();
+
+ return new Telemetry(
+ Resource::create(['service.name' => 'test']),
+ new TracerProvider($spanProcessor, $clock, $contextStorage),
+ new MeterProvider(new VoidMetricProcessor(), $clock),
+ new LoggerProvider(new VoidLogProcessor(), $clock, $contextStorage),
+ );
+ }
+}
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
new file mode 100644
index 0000000000..337c59ec25
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Doctrine/DBAL/TracingDriverTest.php
@@ -0,0 +1,296 @@
+createTelemetry($spanProcessor);
+
+ $platform = $this->createMock(AbstractPlatform::class);
+ $driver = $this->createMockDriverWithPlatform($platform);
+
+ $tracingDriver = new TracingDriver($telemetry, $driver, 'default', logSql: true, maxSqlLength: 100);
+
+ $tracingDriver->connect([]);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ self::assertSame('other_sql', $spans[0]->attributes()['db.system']);
+ }
+
+ public function test_get_semantic_db_system_detects_db2() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $platform = new DB2Platform();
+ $driver = $this->createMockDriverWithPlatform($platform);
+
+ $tracingDriver = new TracingDriver($telemetry, $driver, 'default', logSql: true, maxSqlLength: 100);
+
+ $tracingDriver->connect([]);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ self::assertSame('db2', $spans[0]->attributes()['db.system']);
+ }
+
+ public function test_get_semantic_db_system_detects_mariadb_as_mysql() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $platform = new MariaDBPlatform();
+ $driver = $this->createMockDriverWithPlatform($platform);
+
+ $tracingDriver = new TracingDriver($telemetry, $driver, 'default', logSql: true, maxSqlLength: 100);
+
+ $tracingDriver->connect([]);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ self::assertSame('mysql', $spans[0]->attributes()['db.system']);
+ }
+
+ public function test_get_semantic_db_system_detects_mssql() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $platform = new SQLServerPlatform();
+ $driver = $this->createMockDriverWithPlatform($platform);
+
+ $tracingDriver = new TracingDriver($telemetry, $driver, 'default', logSql: true, maxSqlLength: 100);
+
+ $tracingDriver->connect([]);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ self::assertSame('mssql', $spans[0]->attributes()['db.system']);
+ }
+
+ public function test_get_semantic_db_system_detects_mysql() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $platform = new MySQL80Platform();
+ $driver = $this->createMockDriverWithPlatform($platform);
+
+ $tracingDriver = new TracingDriver($telemetry, $driver, 'default', logSql: true, maxSqlLength: 100);
+
+ $tracingDriver->connect([]);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ self::assertSame('mysql', $spans[0]->attributes()['db.system']);
+ }
+
+ public function test_get_semantic_db_system_detects_oracle() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $platform = new OraclePlatform();
+ $driver = $this->createMockDriverWithPlatform($platform);
+
+ $tracingDriver = new TracingDriver($telemetry, $driver, 'default', logSql: true, maxSqlLength: 100);
+
+ $tracingDriver->connect([]);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ self::assertSame('oracle', $spans[0]->attributes()['db.system']);
+ }
+
+ public function test_get_semantic_db_system_detects_postgresql() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $platform = new PostgreSQLPlatform();
+ $driver = $this->createMockDriverWithPlatform($platform);
+
+ $tracingDriver = new TracingDriver($telemetry, $driver, 'default', logSql: true, maxSqlLength: 100);
+
+ $tracingDriver->connect([]);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ self::assertSame('postgresql', $spans[0]->attributes()['db.system']);
+ }
+
+ public function test_get_semantic_db_system_detects_sqlite() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $platform = new SQLitePlatform();
+ $driver = $this->createMockDriverWithPlatform($platform);
+
+ $tracingDriver = new TracingDriver($telemetry, $driver, 'default', logSql: true, maxSqlLength: 100);
+
+ $tracingDriver->connect([]);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ self::assertSame('sqlite', $spans[0]->attributes()['db.system']);
+ }
+
+ public function test_span_defaults_db_namespace_to_default() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $platform = new PostgreSQLPlatform();
+ $driver = $this->createMockDriverWithPlatform($platform);
+
+ $tracingDriver = new TracingDriver($telemetry, $driver, 'default', logSql: true, maxSqlLength: 100);
+
+ $tracingDriver->connect([]);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ self::assertSame('default', $spans[0]->attributes()['db.namespace']);
+ }
+
+ public function test_span_includes_connection_name() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $platform = new PostgreSQLPlatform();
+ $driver = $this->createMockDriverWithPlatform($platform);
+
+ $tracingDriver = new TracingDriver($telemetry, $driver, 'analytics', logSql: true, maxSqlLength: 100);
+
+ $tracingDriver->connect([]);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ self::assertSame('analytics', $spans[0]->attributes()['db.connection.name']);
+ }
+
+ public function test_span_includes_db_namespace_from_params() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $platform = new PostgreSQLPlatform();
+ $driver = $this->createMockDriverWithPlatform($platform);
+
+ $tracingDriver = new TracingDriver($telemetry, $driver, 'default', logSql: true, maxSqlLength: 100);
+
+ $tracingDriver->connect(['dbname' => 'my_database']);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ self::assertSame('my_database', $spans[0]->attributes()['db.namespace']);
+ }
+
+ private function createMockDriverWithPlatform(AbstractPlatform $platform) : Driver
+ {
+ return new readonly class($platform) implements Driver {
+ public function __construct(private AbstractPlatform $platform)
+ {
+ }
+
+ public function connect(array $params) : Connection
+ {
+ return new class implements Connection {
+ public function beginTransaction() : void
+ {
+ }
+
+ public function commit() : void
+ {
+ }
+
+ public function exec(string $sql) : int
+ {
+ return 0;
+ }
+
+ public function getNativeConnection() : object
+ {
+ return new \stdClass();
+ }
+
+ public function getServerVersion() : string
+ {
+ return '1.0.0';
+ }
+
+ public function lastInsertId() : int
+ {
+ return 0;
+ }
+
+ public function prepare(string $sql) : Statement
+ {
+ throw new \RuntimeException('Not implemented');
+ }
+
+ public function query(string $sql) : Result
+ {
+ throw new \RuntimeException('Not implemented');
+ }
+
+ public function quote(string $value) : string
+ {
+ return "'{$value}'";
+ }
+
+ public function rollBack() : void
+ {
+ }
+ };
+ }
+
+ public function getDatabasePlatform(ServerVersionProvider $versionProvider) : AbstractPlatform
+ {
+ return $this->platform;
+ }
+
+ public function getExceptionConverter() : ExceptionConverter
+ {
+ throw new \RuntimeException('Not implemented');
+ }
+ };
+ }
+
+ private function createTelemetry(MemorySpanProcessor $spanProcessor) : Telemetry
+ {
+ $clock = new SystemClock();
+ $contextStorage = new MemoryContextStorage();
+
+ return new Telemetry(
+ Resource::create(['service.name' => 'test']),
+ new TracerProvider($spanProcessor, $clock, $contextStorage),
+ new MeterProvider(new VoidMetricProcessor(), $clock),
+ new LoggerProvider(new VoidLogProcessor(), $clock, $contextStorage),
+ );
+ }
+}
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
new file mode 100644
index 0000000000..69b7db7b38
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/HttpClient/TracableHttpClientTest.php
@@ -0,0 +1,489 @@
+createTelemetry($spanProcessor);
+
+ $innerClient = $this->createMockHttpClient(200);
+ $tracable = new TracableHttpClient($innerClient, $telemetry, 'test.client');
+
+ $tracable->request('GET', '/users');
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ self::assertSame('unknown', $spans[0]->attributes()['http.host']);
+ }
+
+ public function test_request_defaults_scheme_to_http_when_missing() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $innerClient = $this->createMockHttpClient(200);
+ $tracable = new TracableHttpClient($innerClient, $telemetry, 'test.client');
+
+ $tracable->request('GET', '/users');
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ self::assertSame('http', $spans[0]->attributes()['http.scheme']);
+ }
+
+ public function test_request_extracts_host_from_url() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $innerClient = $this->createMockHttpClient(200);
+ $tracable = new TracableHttpClient($innerClient, $telemetry, 'test.client');
+
+ $tracable->request('GET', 'https://api.example.com/users');
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ self::assertSame('api.example.com', $spans[0]->attributes()['http.host']);
+ }
+
+ public function test_request_extracts_scheme_from_url() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $innerClient = new class implements HttpClientInterface {
+ /** @param array $options */
+ public function request(string $method, string $url, array $options = []) : ResponseInterface
+ {
+ return new class implements ResponseInterface {
+ public function cancel() : void
+ {
+ }
+
+ public function getContent(bool $throw = true) : string
+ {
+ return '';
+ }
+
+ /** @return array> */
+ public function getHeaders(bool $throw = true) : array
+ {
+ return [];
+ }
+
+ public function getInfo(?string $type = null) : mixed
+ {
+ return null;
+ }
+
+ public function getStatusCode() : int
+ {
+ return 200;
+ }
+
+ /** @return array */
+ public function toArray(bool $throw = true) : array
+ {
+ return [];
+ }
+ };
+ }
+
+ public function stream(ResponseInterface|iterable $responses, ?float $timeout = null) : ResponseStreamInterface
+ {
+ throw new \RuntimeException('Not implemented');
+ }
+
+ /** @param array $options */
+ public function withOptions(array $options) : static
+ {
+ return $this;
+ }
+ };
+
+ $tracable = new TracableHttpClient($innerClient, $telemetry, 'test.client');
+
+ $tracable->request('GET', 'https://api.example.com/users');
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ self::assertSame('https', $spans[0]->attributes()['http.scheme']);
+ }
+
+ public function test_request_includes_client_name_attribute() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $innerClient = $this->createMockHttpClient(200);
+ $tracable = new TracableHttpClient($innerClient, $telemetry, 'my_api_client');
+
+ $tracable->request('GET', 'https://api.example.com/users');
+
+ $spans = $spanProcessor->endedSpans();
+ static::assertCount(1, $spans);
+ static::assertSame('my_api_client', $spans[0]->attributes()['http.client.name']);
+ }
+
+ public function test_request_includes_http_status_code_attribute() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $innerClient = $this->createMockHttpClient(200);
+ $tracable = new TracableHttpClient($innerClient, $telemetry, 'test.client');
+
+ $tracable->request('GET', 'https://api.example.com/users');
+
+ $spans = $spanProcessor->endedSpans();
+ static::assertCount(1, $spans);
+ static::assertSame(200, $spans[0]->attributes()['http.status_code']);
+ }
+
+ public function test_request_includes_method_and_url_attributes() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $innerClient = $this->createMockHttpClient(200);
+ $tracable = new TracableHttpClient($innerClient, $telemetry, 'test.client');
+
+ $tracable->request('POST', 'https://api.example.com/users');
+
+ $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']);
+ }
+
+ public function test_request_records_exception_on_failure() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $innerClient = new class implements HttpClientInterface {
+ /** @param array $options */
+ public function request(string $method, string $url, array $options = []) : ResponseInterface
+ {
+ throw new \RuntimeException('Connection timeout');
+ }
+
+ public function stream(ResponseInterface|iterable $responses, ?float $timeout = null) : ResponseStreamInterface
+ {
+ throw new \RuntimeException('Not implemented');
+ }
+
+ /** @param array $options */
+ public function withOptions(array $options) : static
+ {
+ return $this;
+ }
+ };
+
+ $tracable = new TracableHttpClient($innerClient, $telemetry, 'test.client');
+
+ $exceptionThrown = false;
+
+ try {
+ $tracable->request('GET', 'https://api.example.com/users');
+ } catch (\RuntimeException) {
+ $exceptionThrown = true;
+ }
+
+ static::assertTrue($exceptionThrown);
+
+ $spans = $spanProcessor->endedSpans();
+ static::assertCount(1, $spans);
+
+ $events = $spans[0]->events();
+ static::assertCount(1, $events);
+ static::assertSame('exception', $events[0]->name());
+
+ $status = $spans[0]->status();
+ static::assertNotNull($status);
+ static::assertTrue($status->isError());
+ static::assertSame('Connection timeout', $status->description);
+ }
+
+ public function test_request_sets_error_status_for_4xx_codes() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $innerClient = $this->createMockHttpClient(404);
+ $tracable = new TracableHttpClient($innerClient, $telemetry, 'test.client');
+
+ $tracable->request('GET', 'https://api.example.com/missing');
+
+ $spans = $spanProcessor->endedSpans();
+ static::assertCount(1, $spans);
+
+ $status = $spans[0]->status();
+ static::assertNotNull($status);
+ static::assertTrue($status->isError());
+ static::assertSame('HTTP 404', $status->description);
+ }
+
+ public function test_request_sets_error_status_for_5xx_codes() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $innerClient = $this->createMockHttpClient(500);
+ $tracable = new TracableHttpClient($innerClient, $telemetry, 'test.client');
+
+ $tracable->request('GET', 'https://api.example.com/error');
+
+ $spans = $spanProcessor->endedSpans();
+ static::assertCount(1, $spans);
+
+ $status = $spans[0]->status();
+ static::assertNotNull($status);
+ static::assertTrue($status->isError());
+ static::assertSame('HTTP 500', $status->description);
+ }
+
+ public function test_request_sets_ok_status_for_2xx_codes() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $innerClient = $this->createMockHttpClient(201);
+ $tracable = new TracableHttpClient($innerClient, $telemetry, 'test.client');
+
+ $tracable->request('POST', 'https://api.example.com/users');
+
+ $spans = $spanProcessor->endedSpans();
+ static::assertCount(1, $spans);
+
+ $status = $spans[0]->status();
+ static::assertNotNull($status);
+ static::assertTrue($status->isOk());
+ }
+
+ public function test_request_sets_ok_status_for_3xx_codes() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $innerClient = $this->createMockHttpClient(302);
+ $tracable = new TracableHttpClient($innerClient, $telemetry, 'test.client');
+
+ $tracable->request('GET', 'https://api.example.com/redirect');
+
+ $spans = $spanProcessor->endedSpans();
+ static::assertCount(1, $spans);
+
+ $status = $spans[0]->status();
+ static::assertNotNull($status);
+ static::assertTrue($status->isOk());
+ }
+
+ public function test_request_span_name_includes_method_and_host() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $innerClient = $this->createMockHttpClient(200);
+ $tracable = new TracableHttpClient($innerClient, $telemetry, 'test.client');
+
+ $tracable->request('POST', 'https://api.example.com/users');
+
+ $spans = $spanProcessor->endedSpans();
+ static::assertCount(1, $spans);
+ static::assertSame('POST api.example.com', $spans[0]->name());
+ }
+
+ public function test_span_kind_is_client() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $innerClient = $this->createMockHttpClient(200);
+ $tracable = new TracableHttpClient($innerClient, $telemetry, 'test.client');
+
+ $tracable->request('GET', 'https://api.example.com/users');
+
+ $spans = $spanProcessor->endedSpans();
+ static::assertCount(1, $spans);
+ static::assertSame(SpanKind::CLIENT, $spans[0]->kind());
+ }
+
+ public function test_stream_delegates_to_inner_client() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $mockResponse = $this->createMock(ResponseInterface::class);
+ $mockChunk = $this->createMock(ChunkInterface::class);
+
+ $streamResponse = new readonly class($mockResponse, $mockChunk) implements ResponseStreamInterface {
+ public function __construct(
+ private ResponseInterface $response,
+ private ChunkInterface $chunk,
+ ) {
+ }
+
+ public function key() : ResponseInterface
+ {
+ return $this->response;
+ }
+
+ public function current() : ChunkInterface
+ {
+ return $this->chunk;
+ }
+
+ public function next() : void
+ {
+ }
+
+ public function rewind() : void
+ {
+ }
+
+ public function valid() : bool
+ {
+ return false;
+ }
+ };
+
+ $innerClient = new readonly class($streamResponse) implements HttpClientInterface {
+ public function __construct(private ResponseStreamInterface $stream)
+ {
+ }
+
+ /** @param array $options */
+ public function request(string $method, string $url, array $options = []) : ResponseInterface
+ {
+ throw new \RuntimeException('Not implemented');
+ }
+
+ public function stream(ResponseInterface|iterable $responses, ?float $timeout = null) : ResponseStreamInterface
+ {
+ return $this->stream;
+ }
+
+ /** @param array $options */
+ public function withOptions(array $options) : static
+ {
+ return $this;
+ }
+ };
+
+ $tracable = new TracableHttpClient($innerClient, $telemetry, 'test.client');
+
+ $result = $tracable->stream($mockResponse);
+
+ static::assertSame($streamResponse, $result);
+ }
+
+ public function test_with_options_creates_new_instance() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $innerClient = $this->createMockHttpClient(200);
+ $tracable = new TracableHttpClient($innerClient, $telemetry, 'test.client');
+
+ $newTracable = $tracable->withOptions(['timeout' => 30]);
+
+ static::assertNotSame($tracable, $newTracable);
+ static::assertInstanceOf(TracableHttpClient::class, $newTracable);
+ }
+
+ private function createMockHttpClient(int $statusCode) : HttpClientInterface
+ {
+ return new readonly class($statusCode) implements HttpClientInterface {
+ public function __construct(private int $statusCode)
+ {
+ }
+
+ /** @param array $options */
+ public function request(string $method, string $url, array $options = []) : ResponseInterface
+ {
+ $statusCode = $this->statusCode;
+
+ return new readonly class($statusCode) implements ResponseInterface {
+ public function __construct(private int $statusCode)
+ {
+ }
+
+ public function cancel() : void
+ {
+ }
+
+ public function getContent(bool $throw = true) : string
+ {
+ return '';
+ }
+
+ /** @return array> */
+ public function getHeaders(bool $throw = true) : array
+ {
+ return [];
+ }
+
+ public function getInfo(?string $type = null) : mixed
+ {
+ return null;
+ }
+
+ public function getStatusCode() : int
+ {
+ return $this->statusCode;
+ }
+
+ /** @return array */
+ public function toArray(bool $throw = true) : array
+ {
+ return [];
+ }
+ };
+ }
+
+ public function stream(ResponseInterface|iterable $responses, ?float $timeout = null) : ResponseStreamInterface
+ {
+ throw new \RuntimeException('Not implemented');
+ }
+
+ /** @param array $options */
+ public function withOptions(array $options) : static
+ {
+ return new self($this->statusCode);
+ }
+ };
+ }
+
+ private function createTelemetry(MemorySpanProcessor $spanProcessor) : Telemetry
+ {
+ $clock = new SystemClock();
+ $contextStorage = new MemoryContextStorage();
+
+ return new Telemetry(
+ Resource::create(['service.name' => 'test']),
+ new TracerProvider($spanProcessor, $clock, $contextStorage),
+ new MeterProvider(new VoidMetricProcessor(), $clock),
+ new LoggerProvider(new VoidLogProcessor(), $clock, $contextStorage),
+ );
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/HttpKernel/PathExclusionRuleTest.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/HttpKernel/PathExclusionRuleTest.php
new file mode 100644
index 0000000000..54f0d7145f
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/HttpKernel/PathExclusionRuleTest.php
@@ -0,0 +1,87 @@
+matches('/_wdt', 'GET'));
+ self::assertTrue($rule->matches('/_wdt', 'POST'));
+ self::assertTrue($rule->matches('/_wdt', 'DELETE'));
+ self::assertFalse($rule->matches('/_profiler', 'GET'));
+ self::assertFalse($rule->matches('/_wdt/abc', 'GET'));
+ }
+
+ public function test_exact_path_match_with_method_filter() : void
+ {
+ $rule = new PathExclusionRule('/_wdt', 'GET');
+
+ self::assertTrue($rule->matches('/_wdt', 'GET'));
+ self::assertFalse($rule->matches('/_wdt', 'POST'));
+ self::assertFalse($rule->matches('/_wdt', 'DELETE'));
+ }
+
+ public function test_from_config_with_null_method() : void
+ {
+ $rule = PathExclusionRule::fromConfig(['path' => '/_wdt', 'method' => null]);
+
+ self::assertSame('/_wdt', $rule->path);
+ self::assertNull($rule->method);
+ }
+
+ public function test_from_config_with_path_and_method() : void
+ {
+ $rule = PathExclusionRule::fromConfig(['path' => '/_wdt', 'method' => 'GET']);
+
+ self::assertSame('/_wdt', $rule->path);
+ self::assertSame('GET', $rule->method);
+ }
+
+ public function test_from_config_with_path_only() : void
+ {
+ $rule = PathExclusionRule::fromConfig(['path' => '/_wdt']);
+
+ self::assertSame('/_wdt', $rule->path);
+ self::assertNull($rule->method);
+ }
+
+ public function test_method_comparison_is_case_insensitive() : void
+ {
+ $rule = new PathExclusionRule('/_wdt', 'GET');
+
+ self::assertTrue($rule->matches('/_wdt', 'GET'));
+ self::assertTrue($rule->matches('/_wdt', 'get'));
+ self::assertTrue($rule->matches('/_wdt', 'Get'));
+ }
+
+ public function test_regex_path_match_excludes_all_methods() : void
+ {
+ $rule = new PathExclusionRule('#^\/_profiler.*#');
+
+ self::assertTrue($rule->matches('/_profiler', 'GET'));
+ self::assertTrue($rule->matches('/_profiler/search', 'GET'));
+ self::assertTrue($rule->matches('/_profiler/123/dump', 'POST'));
+ self::assertFalse($rule->matches('/_wdt', 'GET'));
+ self::assertFalse($rule->matches('/profiler', 'GET'));
+ }
+
+ public function test_regex_path_match_with_method_filter() : void
+ {
+ $rule = new PathExclusionRule('/^\/_profiler.*/', 'GET');
+
+ self::assertTrue($rule->matches('/_profiler', 'GET'));
+ self::assertTrue($rule->matches('/_profiler/search', 'GET'));
+ self::assertFalse($rule->matches('/_profiler/123/dump', 'POST'));
+ self::assertFalse($rule->matches('/_profiler', 'DELETE'));
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Messenger/TelemetryStampCarrierTest.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Messenger/TelemetryStampCarrierTest.php
new file mode 100644
index 0000000000..d279726135
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Messenger/TelemetryStampCarrierTest.php
@@ -0,0 +1,104 @@
+unwrap();
+
+ self::assertInstanceOf(TelemetryStamp::class, $stamp);
+ self::assertSame([], $stamp->all());
+ }
+
+ public function test_constructs_with_provided_stamp() : void
+ {
+ $stamp = new TelemetryStamp(['traceparent' => 'value']);
+
+ $carrier = new TelemetryStampCarrier($stamp);
+
+ self::assertSame('value', $carrier->unwrap()->get('traceparent'));
+ }
+
+ public function test_get_delegates_to_underlying_stamp() : void
+ {
+ $stamp = new TelemetryStamp(['traceparent' => 'value', 'tracestate' => 'vendor=data']);
+ $carrier = new TelemetryStampCarrier($stamp);
+
+ self::assertSame('value', $carrier->get('traceparent'));
+ self::assertSame('vendor=data', $carrier->get('tracestate'));
+ }
+
+ public function test_get_returns_null_for_missing_key() : void
+ {
+ $carrier = new TelemetryStampCarrier();
+
+ self::assertNull($carrier->get('nonexistent'));
+ }
+
+ public function test_set_can_be_chained_multiple_times() : void
+ {
+ $carrier = new TelemetryStampCarrier();
+
+ $carrier
+ ->set('traceparent', 'trace-value')
+ ->set('tracestate', 'state-value')
+ ->set('baggage', 'baggage-value');
+
+ self::assertSame('trace-value', $carrier->get('traceparent'));
+ self::assertSame('state-value', $carrier->get('tracestate'));
+ self::assertSame('baggage-value', $carrier->get('baggage'));
+ }
+
+ public function test_set_returns_same_carrier_instance_for_chaining() : void
+ {
+ $carrier = new TelemetryStampCarrier();
+
+ $result = $carrier->set('traceparent', 'value');
+
+ self::assertSame($carrier, $result);
+ }
+
+ public function test_set_updates_underlying_stamp() : void
+ {
+ $carrier = new TelemetryStampCarrier();
+
+ $carrier->set('traceparent', 'value');
+
+ self::assertSame('value', $carrier->get('traceparent'));
+ }
+
+ public function test_unwrap_returns_current_stamp() : void
+ {
+ $originalStamp = new TelemetryStamp(['key' => 'original']);
+ $carrier = new TelemetryStampCarrier($originalStamp);
+
+ $stamp = $carrier->unwrap();
+
+ self::assertSame('original', $stamp->get('key'));
+ }
+
+ public function test_unwrap_returns_stamp_with_all_set_values() : void
+ {
+ $carrier = new TelemetryStampCarrier();
+
+ $carrier->set('traceparent', 'trace');
+ $carrier->set('tracestate', 'state');
+
+ $stamp = $carrier->unwrap();
+
+ self::assertSame('trace', $stamp->get('traceparent'));
+ self::assertSame('state', $stamp->get('tracestate'));
+ self::assertCount(2, $stamp->all());
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Messenger/TelemetryStampTest.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Messenger/TelemetryStampTest.php
new file mode 100644
index 0000000000..63b766b9cd
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Messenger/TelemetryStampTest.php
@@ -0,0 +1,99 @@
+ '00-abcdef0123456789abcdef0123456789-0123456789abcdef-01',
+ 'tracestate' => 'vendor=value',
+ ];
+
+ $stamp = new TelemetryStamp($context);
+
+ self::assertSame($context, $stamp->all());
+ }
+
+ public function test_all_returns_empty_array_when_constructed_without_context() : void
+ {
+ $stamp = new TelemetryStamp();
+
+ self::assertSame([], $stamp->all());
+ }
+
+ public function test_get_is_case_insensitive_with_lowercase_lookup() : void
+ {
+ $stamp = new TelemetryStamp(['Traceparent' => 'value']);
+
+ self::assertSame('value', $stamp->get('traceparent'));
+ }
+
+ public function test_get_is_case_insensitive_with_mixed_case_lookup() : void
+ {
+ $stamp = new TelemetryStamp(['TRACEPARENT' => 'value']);
+
+ self::assertSame('value', $stamp->get('TraceParent'));
+ }
+
+ public function test_get_is_case_insensitive_with_uppercase_lookup() : void
+ {
+ $stamp = new TelemetryStamp(['traceparent' => 'value']);
+
+ self::assertSame('value', $stamp->get('TRACEPARENT'));
+ }
+
+ public function test_get_returns_null_for_missing_key() : void
+ {
+ $stamp = new TelemetryStamp(['traceparent' => 'value']);
+
+ self::assertNull($stamp->get('nonexistent'));
+ }
+
+ public function test_get_returns_value_for_exact_key_match() : void
+ {
+ $stamp = new TelemetryStamp([
+ 'traceparent' => '00-abcdef0123456789abcdef0123456789-0123456789abcdef-01',
+ ]);
+
+ self::assertSame('00-abcdef0123456789abcdef0123456789-0123456789abcdef-01', $stamp->get('traceparent'));
+ }
+
+ public function test_with_adds_new_key_and_returns_new_instance() : void
+ {
+ $original = new TelemetryStamp(['traceparent' => 'original']);
+
+ $newStamp = $original->with('tracestate', 'vendor=value');
+
+ self::assertNotSame($original, $newStamp);
+ self::assertSame('vendor=value', $newStamp->get('tracestate'));
+ self::assertSame('original', $newStamp->get('traceparent'));
+ }
+
+ public function test_with_does_not_modify_original_stamp() : void
+ {
+ $original = new TelemetryStamp(['traceparent' => 'original']);
+
+ $original->with('tracestate', 'vendor=value');
+
+ self::assertNull($original->get('tracestate'));
+ self::assertSame(['traceparent' => 'original'], $original->all());
+ }
+
+ public function test_with_overwrites_existing_key() : void
+ {
+ $stamp = new TelemetryStamp(['traceparent' => 'original']);
+
+ $newStamp = $stamp->with('traceparent', 'updated');
+
+ self::assertSame('updated', $newStamp->get('traceparent'));
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Twig/TracingTwigExtensionTest.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Twig/TracingTwigExtensionTest.php
new file mode 100644
index 0000000000..181d3373f4
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Twig/TracingTwigExtensionTest.php
@@ -0,0 +1,290 @@
+createTelemetry($spanProcessor);
+
+ $extension = new TracingTwigExtension(
+ $telemetry,
+ traceTemplates: true,
+ traceBlocks: true,
+ excludeTemplates: ['@WebProfiler/layout.html.twig']
+ );
+
+ $templateProfile = new Profile('@WebProfiler/layout.html.twig', Profile::TEMPLATE, '@WebProfiler/layout.html.twig');
+ $blockProfile = new Profile('@WebProfiler/layout.html.twig', Profile::BLOCK, 'content');
+
+ $extension->enter($templateProfile);
+ $extension->enter($blockProfile);
+ $extension->leave($blockProfile);
+ $extension->leave($templateProfile);
+
+ self::assertCount(0, $spanProcessor->endedSpans());
+ }
+
+ public function test_get_node_visitors_returns_profiler_node_visitor() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $extension = new TracingTwigExtension($telemetry);
+
+ $nodeVisitors = $extension->getNodeVisitors();
+
+ self::assertCount(1, $nodeVisitors);
+ self::assertInstanceOf(ProfilerNodeVisitor::class, $nodeVisitors[0]);
+ }
+
+ public function test_get_span_name_with_block_profile_returns_formatted_string() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $extension = new TracingTwigExtension($telemetry, traceTemplates: true, traceBlocks: true);
+
+ $profile = new Profile('templates/page.html.twig', Profile::BLOCK, 'content');
+ $extension->enter($profile);
+ $extension->leave($profile);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ self::assertSame('templates/page.html.twig::block(content)', $spans[0]->name());
+ }
+
+ public function test_get_span_name_with_macro_profile_returns_formatted_string() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $extension = new TracingTwigExtension($telemetry, traceTemplates: true, traceMacros: true);
+
+ $profile = new Profile('macros/buttons.html.twig', Profile::MACRO, 'renderButton');
+ $extension->enter($profile);
+ $extension->leave($profile);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ self::assertSame('macros/buttons.html.twig::macro(renderButton)', $spans[0]->name());
+ }
+
+ public function test_get_span_name_with_root_profile_returns_profile_name() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $extension = new TracingTwigExtension($telemetry);
+
+ $profile = new Profile('main');
+ $extension->enter($profile);
+ $extension->leave($profile);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ self::assertSame('main', $spans[0]->name());
+ }
+
+ public function test_get_span_name_with_template_profile_returns_template_path() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $extension = new TracingTwigExtension($telemetry, traceTemplates: true);
+
+ $profile = new Profile('templates/base.html.twig', Profile::TEMPLATE, 'templates/base.html.twig');
+ $extension->enter($profile);
+ $extension->leave($profile);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ self::assertSame('templates/base.html.twig', $spans[0]->name());
+ }
+
+ public function test_is_template_excluded_exact_match() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $extension = new TracingTwigExtension(
+ $telemetry,
+ traceTemplates: true,
+ excludeTemplates: ['templates/admin/secret.html.twig']
+ );
+
+ $profile = new Profile('templates/admin/secret.html.twig', Profile::TEMPLATE, 'templates/admin/secret.html.twig');
+ $extension->enter($profile);
+ $extension->leave($profile);
+
+ self::assertCount(0, $spanProcessor->endedSpans());
+ }
+
+ public function test_is_template_excluded_no_match_returns_false() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $extension = new TracingTwigExtension(
+ $telemetry,
+ traceTemplates: true,
+ excludeTemplates: ['/^@WebProfiler/', 'templates/secret.html.twig']
+ );
+
+ $profile = new Profile('templates/public.html.twig', Profile::TEMPLATE, 'templates/public.html.twig');
+ $extension->enter($profile);
+ $extension->leave($profile);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ self::assertSame('templates/public.html.twig', $spans[0]->name());
+ }
+
+ public function test_is_template_excluded_regex_match() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $extension = new TracingTwigExtension(
+ $telemetry,
+ traceTemplates: true,
+ excludeTemplates: ['/^@WebProfiler/']
+ );
+
+ $profile = new Profile('@WebProfiler/layout.html.twig', Profile::TEMPLATE, '@WebProfiler/layout.html.twig');
+ $extension->enter($profile);
+ $extension->leave($profile);
+
+ self::assertCount(0, $spanProcessor->endedSpans());
+ }
+
+ public function test_should_trace_respects_block_flag() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $extension = new TracingTwigExtension($telemetry, traceTemplates: true, traceBlocks: false);
+
+ $profile = new Profile('templates/page.html.twig', Profile::BLOCK, 'content');
+ $extension->enter($profile);
+ $extension->leave($profile);
+
+ self::assertCount(0, $spanProcessor->endedSpans());
+ }
+
+ public function test_should_trace_respects_macro_flag() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $extension = new TracingTwigExtension($telemetry, traceTemplates: true, traceMacros: false);
+
+ $profile = new Profile('macros/buttons.html.twig', Profile::MACRO, 'renderButton');
+ $extension->enter($profile);
+ $extension->leave($profile);
+
+ self::assertCount(0, $spanProcessor->endedSpans());
+ }
+
+ public function test_should_trace_respects_template_flag() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $extension = new TracingTwigExtension($telemetry, traceTemplates: false);
+
+ $profile = new Profile('templates/base.html.twig', Profile::TEMPLATE, 'templates/base.html.twig');
+ $extension->enter($profile);
+ $extension->leave($profile);
+
+ self::assertCount(0, $spanProcessor->endedSpans());
+ }
+
+ public function test_span_has_correct_attributes_for_block() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $extension = new TracingTwigExtension($telemetry, traceTemplates: true, traceBlocks: true);
+
+ $profile = new Profile('templates/layout.html.twig', Profile::BLOCK, 'header');
+ $extension->enter($profile);
+ $extension->leave($profile);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+
+ $attributes = $spans[0]->attributes();
+ self::assertSame(Profile::BLOCK, $attributes['twig.type']);
+ self::assertSame('templates/layout.html.twig', $attributes['twig.template']);
+ self::assertSame('header', $attributes['twig.name']);
+ }
+
+ public function test_span_has_correct_attributes_for_template() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $extension = new TracingTwigExtension($telemetry, traceTemplates: true);
+
+ $profile = new Profile('templates/home.html.twig', Profile::TEMPLATE, 'templates/home.html.twig');
+ $extension->enter($profile);
+ $extension->leave($profile);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+
+ $attributes = $spans[0]->attributes();
+ self::assertSame(Profile::TEMPLATE, $attributes['twig.type']);
+ self::assertSame('templates/home.html.twig', $attributes['twig.template']);
+ self::assertArrayNotHasKey('twig.name', $attributes);
+ }
+
+ public function test_span_kind_is_internal() : void
+ {
+ $spanProcessor = new MemorySpanProcessor(new MemorySpanExporter());
+ $telemetry = $this->createTelemetry($spanProcessor);
+
+ $extension = new TracingTwigExtension($telemetry);
+
+ $profile = new Profile('main');
+ $extension->enter($profile);
+ $extension->leave($profile);
+
+ $spans = $spanProcessor->endedSpans();
+ self::assertCount(1, $spans);
+ self::assertSame(SpanKind::INTERNAL, $spans[0]->kind());
+ }
+
+ private function createTelemetry(MemorySpanProcessor $spanProcessor) : Telemetry
+ {
+ $clock = new SystemClock();
+ $contextStorage = new MemoryContextStorage();
+
+ return new Telemetry(
+ Resource::create(['service.name' => 'test']),
+ new TracerProvider($spanProcessor, $clock, $contextStorage),
+ new MeterProvider(new VoidMetricProcessor(), $clock),
+ new LoggerProvider(new VoidLogProcessor(), $clock, $contextStorage),
+ );
+ }
+}
diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Resource/Detector/SymfonyDeploymentDetectorTest.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Resource/Detector/SymfonyDeploymentDetectorTest.php
new file mode 100644
index 0000000000..6799a38083
--- /dev/null
+++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Resource/Detector/SymfonyDeploymentDetectorTest.php
@@ -0,0 +1,47 @@
+
+ */
+ public static function kernelEnvironmentProvider() : \Generator
+ {
+ yield 'dev environment' => ['dev'];
+ yield 'prod environment' => ['prod'];
+ yield 'test environment' => ['test'];
+ yield 'staging environment' => ['staging'];
+ yield 'custom environment' => ['custom-env'];
+ }
+
+ #[DataProvider('kernelEnvironmentProvider')]
+ public function test_detects_deployment_environment_from_kernel_environment(string $kernelEnvironment) : void
+ {
+ $detector = new SymfonyDeploymentDetector($kernelEnvironment);
+
+ $resource = $detector->detect();
+
+ self::assertTrue($resource->has(DeploymentAttribute::ENVIRONMENT_NAME->value));
+ self::assertSame($kernelEnvironment, $resource->get(DeploymentAttribute::ENVIRONMENT_NAME->value));
+ }
+
+ public function test_returns_resource_with_single_attribute() : void
+ {
+ $detector = new SymfonyDeploymentDetector('prod');
+
+ $resource = $detector->detect();
+
+ self::assertSame(1, $resource->count());
+ self::assertSame('prod', $resource->get('deployment.environment.name'));
+ }
+}
diff --git a/src/bridge/telemetry/otlp/src/Flow/Bridge/Telemetry/OTLP/Serializer/JsonSerializer.php b/src/bridge/telemetry/otlp/src/Flow/Bridge/Telemetry/OTLP/Serializer/JsonSerializer.php
index 3f96dfa5f3..cf02c7c585 100644
--- a/src/bridge/telemetry/otlp/src/Flow/Bridge/Telemetry/OTLP/Serializer/JsonSerializer.php
+++ b/src/bridge/telemetry/otlp/src/Flow/Bridge/Telemetry/OTLP/Serializer/JsonSerializer.php
@@ -490,11 +490,17 @@ private function serializeExemplar(Exemplar $exemplar) : array
{
$result = [
'timeUnixNano' => $this->toNanoseconds($exemplar->timestamp),
- 'traceId' => $exemplar->traceId->toHex(),
- 'spanId' => $exemplar->spanId->toHex(),
'filteredAttributes' => $this->serializeAttributes($exemplar->filteredAttributes),
];
+ if ($exemplar->traceId->isValid()) {
+ $result['traceId'] = $exemplar->traceId->toHex();
+ }
+
+ if ($exemplar->spanId->isValid()) {
+ $result['spanId'] = $exemplar->spanId->toHex();
+ }
+
if (\is_int($exemplar->value)) {
$result['asInt'] = (string) $exemplar->value;
} else {
@@ -516,6 +522,10 @@ private function serializeLinks(array $links) : array
$result = [];
foreach ($links as $link) {
+ if (!$link->context->isValid()) {
+ continue;
+ }
+
$result[] = [
'traceId' => $link->context->traceId->toHex(),
'spanId' => $link->context->spanId->toHex(),
@@ -542,7 +552,7 @@ private function serializeLogRecord(LogEntry $entry) : array
'attributes' => $this->serializeAttributes($entry->record->attributes->normalize()),
];
- if ($entry->spanContext !== null) {
+ if ($entry->spanContext !== null && $entry->spanContext->isValid()) {
$result['traceId'] = $entry->spanContext->traceId->toHex();
$result['spanId'] = $entry->spanContext->spanId->toHex();
diff --git a/src/bridge/telemetry/otlp/src/Flow/Bridge/Telemetry/OTLP/Serializer/ProtobufSerializer.php b/src/bridge/telemetry/otlp/src/Flow/Bridge/Telemetry/OTLP/Serializer/ProtobufSerializer.php
index df24a66a89..8e981e4b3a 100644
--- a/src/bridge/telemetry/otlp/src/Flow/Bridge/Telemetry/OTLP/Serializer/ProtobufSerializer.php
+++ b/src/bridge/telemetry/otlp/src/Flow/Bridge/Telemetry/OTLP/Serializer/ProtobufSerializer.php
@@ -316,7 +316,7 @@ private function createLogRecord(LogEntry $entry) : LogRecord
$logRecord->setAttributes($this->createKeyValues($entry->record->attributes->normalize())); // @phpstan-ignore argument.type
- if ($entry->spanContext !== null) {
+ if ($entry->spanContext !== null && $entry->spanContext->isValid()) {
$logRecord->setTraceId(\hex2bin($entry->spanContext->traceId->toHex()) ?: '');
$logRecord->setSpanId(\hex2bin($entry->spanContext->spanId->toHex()) ?: '');
@@ -360,8 +360,15 @@ private function createProtoExemplar(Exemplar $exemplar) : ProtoExemplar
{
$protoExemplar = new ProtoExemplar();
$protoExemplar->setTimeUnixNano($this->toNanoseconds($exemplar->timestamp));
- $protoExemplar->setTraceId(\hex2bin($exemplar->traceId->toHex()) ?: '');
- $protoExemplar->setSpanId(\hex2bin($exemplar->spanId->toHex()) ?: '');
+
+ if ($exemplar->traceId->isValid()) {
+ $protoExemplar->setTraceId(\hex2bin($exemplar->traceId->toHex()) ?: '');
+ }
+
+ if ($exemplar->spanId->isValid()) {
+ $protoExemplar->setSpanId(\hex2bin($exemplar->spanId->toHex()) ?: '');
+ }
+
$protoExemplar->setFilteredAttributes($this->createKeyValues($exemplar->filteredAttributes)); // @phpstan-ignore argument.type
if (\is_int($exemplar->value)) {
@@ -441,7 +448,11 @@ private function createProtoSpan(Span $span) : ProtoSpan
$links = [];
foreach ($span->links() as $link) {
- $links[] = $this->createSpanLink($link);
+ $protoLink = $this->createSpanLink($link);
+
+ if ($protoLink !== null) {
+ $links[] = $protoLink;
+ }
}
$protoSpan->setLinks($links); // @phpstan-ignore argument.type
@@ -475,8 +486,12 @@ private function createSpanEvent(SpanEvent $event) : Event
return $protoEvent;
}
- private function createSpanLink(SpanLink $link) : Link
+ private function createSpanLink(SpanLink $link) : ?Link
{
+ if (!$link->context->isValid()) {
+ return null;
+ }
+
$protoLink = new Link();
$protoLink->setTraceId(\hex2bin($link->context->traceId->toHex()) ?: '');
$protoLink->setSpanId(\hex2bin($link->context->spanId->toHex()) ?: '');
diff --git a/src/core/etl/src/Flow/ETL/Attribute/Module.php b/src/core/etl/src/Flow/ETL/Attribute/Module.php
index fc86d5a705..a9a47280c2 100644
--- a/src/core/etl/src/Flow/ETL/Attribute/Module.php
+++ b/src/core/etl/src/Flow/ETL/Attribute/Module.php
@@ -25,9 +25,11 @@ enum Module : string
case PARQUET = 'PARQUET';
case PG_QUERY = 'PG_QUERY';
case POSTGRESQL = 'POSTGRESQL';
+ case PSR18_TELEMETRY_BRIDGE = 'PSR18_TELEMETRY_BRIDGE';
case PSR7_TELEMETRY_BRIDGE = 'PSR7_TELEMETRY_BRIDGE';
case S3_FILESYSTEM = 'S3_FILESYSTEM';
case SYMFONY_HTTP_FOUNDATION_TELEMETRY_BRIDGE = 'SYMFONY_HTTP_FOUNDATION_TELEMETRY_BRIDGE';
+ case SYMFONY_TELEMETRY_BUNDLE = 'SYMFONY_TELEMETRY_BUNDLE';
case TELEMETRY = 'TELEMETRY';
case TELEMETRY_OTLP = 'TELEMETRY_OTLP';
case TEXT = 'TEXT';
diff --git a/src/lib/telemetry/composer.json b/src/lib/telemetry/composer.json
index d67d5998af..7069e31889 100644
--- a/src/lib/telemetry/composer.json
+++ b/src/lib/telemetry/composer.json
@@ -10,6 +10,7 @@
],
"require": {
"php": "~8.3.0 || ~8.4.0 || ~8.5.0",
+ "composer-runtime-api": "^2.0",
"psr/clock": "^1.0"
},
"config": {
diff --git a/src/lib/telemetry/src/Flow/Telemetry/Context/Context.php b/src/lib/telemetry/src/Flow/Telemetry/Context/Context.php
index 2ba2977102..83af42878a 100644
--- a/src/lib/telemetry/src/Flow/Telemetry/Context/Context.php
+++ b/src/lib/telemetry/src/Flow/Telemetry/Context/Context.php
@@ -31,11 +31,15 @@ public function __construct(
}
/**
- * Create a new Context with a fresh TraceId.
+ * Create a new Context with an invalid TraceId (all zeros).
+ *
+ * Use this when you want to create a context without starting a trace.
+ * Logs and spans emitted in this context will not have a trace ID until
+ * a trace is explicitly started.
*/
public static function create() : self
{
- return new self(TraceId::generate());
+ return new self(TraceId::invalid());
}
/**
diff --git a/src/lib/telemetry/src/Flow/Telemetry/Context/SpanId.php b/src/lib/telemetry/src/Flow/Telemetry/Context/SpanId.php
index 82f10c0e19..8e0a2ca34d 100644
--- a/src/lib/telemetry/src/Flow/Telemetry/Context/SpanId.php
+++ b/src/lib/telemetry/src/Flow/Telemetry/Context/SpanId.php
@@ -8,16 +8,22 @@
* An 8-byte (64-bit) span identifier compatible with OpenTelemetry W3C Trace Context.
*
* SpanIds uniquely identify a span within a trace.
- * All-zero SpanIds are rejected at construction time per W3C spec.
+ * An all-zero SpanId is considered "invalid" and indicates no active span.
*
* Example usage:
* ```php
* $spanId = SpanId::generate();
* echo $spanId->toHex(); // "00f067aa0ba902b7"
+ *
+ * // Invalid span ID (all zeros)
+ * $invalid = SpanId::invalid();
+ * echo $invalid->isValid(); // false
* ```
*/
final readonly class SpanId implements \Stringable
{
+ public const string INVALID = '0000000000000000';
+
private const int BYTE_LENGTH = 8;
private const int HEX_LENGTH = 16;
@@ -44,7 +50,7 @@ public static function fromArray(array $data) : self
*
* @param string $bytes 8 raw bytes
*
- * @throws \InvalidArgumentException if the byte string is not exactly 8 bytes or is all zeros
+ * @throws \InvalidArgumentException if the byte string is not exactly 8 bytes
*/
public static function fromBytes(string $bytes) : self
{
@@ -56,10 +62,6 @@ public static function fromBytes(string $bytes) : self
));
}
- if ($bytes === \str_repeat("\0", self::BYTE_LENGTH)) {
- throw new \InvalidArgumentException('SpanId cannot be all zeros');
- }
-
return new self($bytes);
}
@@ -68,7 +70,7 @@ public static function fromBytes(string $bytes) : self
*
* @param string $hex 16-character lowercase hexadecimal string
*
- * @throws \InvalidArgumentException if the hex string is invalid or represents all zeros
+ * @throws \InvalidArgumentException if the hex string is invalid
*/
public static function fromHex(string $hex) : self
{
@@ -90,10 +92,6 @@ public static function fromHex(string $hex) : self
throw new \InvalidArgumentException('Failed to decode SpanId hex string');
}
- if ($bytes === \str_repeat("\0", self::BYTE_LENGTH)) {
- throw new \InvalidArgumentException('SpanId cannot be all zeros');
- }
-
return new self($bytes);
}
@@ -105,6 +103,16 @@ public static function generate() : self
return new self(\random_bytes(self::BYTE_LENGTH));
}
+ /**
+ * Get an invalid SpanId (all zeros).
+ *
+ * Invalid SpanIds indicate no active span context.
+ */
+ public static function invalid() : self
+ {
+ return new self(\str_repeat("\0", self::BYTE_LENGTH));
+ }
+
public function __toString() : string
{
return $this->toHex();
@@ -118,6 +126,16 @@ public function equals(self $other) : bool
return $this->bytes === $other->bytes;
}
+ /**
+ * Check if this SpanId is valid (not all zeros).
+ *
+ * An all-zero SpanId indicates no active span context.
+ */
+ public function isValid() : bool
+ {
+ return $this->bytes !== \str_repeat("\0", self::BYTE_LENGTH);
+ }
+
/**
* Normalize the SpanId to an array representation for serialization.
*
diff --git a/src/lib/telemetry/src/Flow/Telemetry/Context/TraceId.php b/src/lib/telemetry/src/Flow/Telemetry/Context/TraceId.php
index 2043e840d4..27aa3313ee 100644
--- a/src/lib/telemetry/src/Flow/Telemetry/Context/TraceId.php
+++ b/src/lib/telemetry/src/Flow/Telemetry/Context/TraceId.php
@@ -8,16 +8,22 @@
* A 16-byte (128-bit) trace identifier compatible with OpenTelemetry W3C Trace Context.
*
* TraceIds are used to correlate spans across service boundaries.
- * All-zero TraceIds are rejected at construction time per W3C spec.
+ * An all-zero TraceId is considered "invalid" and indicates no active trace.
*
* Example usage:
* ```php
* $traceId = TraceId::generate();
* echo $traceId->toHex(); // "0af7651916cd43dd8448eb211c80319c"
+ *
+ * // Invalid trace ID (all zeros)
+ * $invalid = TraceId::invalid();
+ * echo $invalid->isValid(); // false
* ```
*/
final readonly class TraceId implements \Stringable
{
+ public const string INVALID = '00000000000000000000000000000000';
+
private const int BYTE_LENGTH = 16;
private const int HEX_LENGTH = 32;
@@ -44,7 +50,7 @@ public static function fromArray(array $data) : self
*
* @param string $bytes 16 raw bytes
*
- * @throws \InvalidArgumentException if the byte string is not exactly 16 bytes or is all zeros
+ * @throws \InvalidArgumentException if the byte string is not exactly 16 bytes
*/
public static function fromBytes(string $bytes) : self
{
@@ -56,10 +62,6 @@ public static function fromBytes(string $bytes) : self
));
}
- if ($bytes === \str_repeat("\0", self::BYTE_LENGTH)) {
- throw new \InvalidArgumentException('TraceId cannot be all zeros');
- }
-
return new self($bytes);
}
@@ -68,7 +70,7 @@ public static function fromBytes(string $bytes) : self
*
* @param string $hex 32-character lowercase hexadecimal string
*
- * @throws \InvalidArgumentException if the hex string is invalid or represents all zeros
+ * @throws \InvalidArgumentException if the hex string is invalid
*/
public static function fromHex(string $hex) : self
{
@@ -90,10 +92,6 @@ public static function fromHex(string $hex) : self
throw new \InvalidArgumentException('Failed to decode TraceId hex string');
}
- if ($bytes === \str_repeat("\0", self::BYTE_LENGTH)) {
- throw new \InvalidArgumentException('TraceId cannot be all zeros');
- }
-
return new self($bytes);
}
@@ -105,6 +103,16 @@ public static function generate() : self
return new self(\random_bytes(self::BYTE_LENGTH));
}
+ /**
+ * Get an invalid TraceId (all zeros).
+ *
+ * Invalid TraceIds indicate no active trace context.
+ */
+ public static function invalid() : self
+ {
+ return new self(\str_repeat("\0", self::BYTE_LENGTH));
+ }
+
public function __toString() : string
{
return $this->toHex();
@@ -118,6 +126,16 @@ public function equals(self $other) : bool
return $this->bytes === $other->bytes;
}
+ /**
+ * Check if this TraceId is valid (not all zeros).
+ *
+ * An all-zero TraceId indicates no active trace context.
+ */
+ public function isValid() : bool
+ {
+ return $this->bytes !== \str_repeat("\0", self::BYTE_LENGTH);
+ }
+
/**
* Normalize the TraceId to an array representation for serialization.
*
diff --git a/src/lib/telemetry/src/Flow/Telemetry/DSL/functions.php b/src/lib/telemetry/src/Flow/Telemetry/DSL/functions.php
index 20b01cfbc9..00537d2603 100644
--- a/src/lib/telemetry/src/Flow/Telemetry/DSL/functions.php
+++ b/src/lib/telemetry/src/Flow/Telemetry/DSL/functions.php
@@ -18,6 +18,8 @@
use Flow\Telemetry\Provider\Console\{ConsoleLogExporter, ConsoleMetricExporter, ConsoleSpanExporter};
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\Resource\Detector\{CachingDetector, ChainDetector, ComposerDetector, EnvironmentDetector, HostDetector, ManualDetector, OsDetector, ProcessDetector};
+use Flow\Telemetry\Resource\ResourceDetector;
use Flow\Telemetry\Tracer\{GenericEvent, SpanContext, SpanExporter, SpanLink, SpanProcessor, TracerProvider};
use Flow\Telemetry\Tracer\Processor\{BatchingSpanProcessor, PassThroughSpanProcessor};
use Flow\Telemetry\Tracer\Sampler\{AlwaysOnSampler, Sampler};
@@ -691,3 +693,139 @@ function composite_propagator(Propagator ...$propagators) : CompositePropagator
{
return new CompositePropagator($propagators);
}
+
+/**
+ * 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
+ */
+#[DocumentationDSL(module: Module::TELEMETRY, type: DSLType::HELPER)]
+function chain_detector(ResourceDetector ...$detectors) : ChainDetector
+{
+ return new ChainDetector(...$detectors);
+}
+
+/**
+ * Create an OsDetector.
+ *
+ * Detects operating system information including os.type, os.name, os.version,
+ * and os.description using PHP's php_uname() function.
+ */
+#[DocumentationDSL(module: Module::TELEMETRY, type: DSLType::HELPER)]
+function os_detector() : OsDetector
+{
+ return new OsDetector();
+}
+
+/**
+ * Create a HostDetector.
+ *
+ * Detects host information including host.name, host.arch, and host.id
+ * (from /etc/machine-id on Linux or IOPlatformUUID on macOS).
+ */
+#[DocumentationDSL(module: Module::TELEMETRY, type: DSLType::HELPER)]
+function host_detector() : HostDetector
+{
+ return new HostDetector();
+}
+
+/**
+ * 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).
+ */
+#[DocumentationDSL(module: Module::TELEMETRY, type: DSLType::HELPER)]
+function process_detector() : ProcessDetector
+{
+ return new ProcessDetector();
+}
+
+/**
+ * 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
+ */
+#[DocumentationDSL(module: Module::TELEMETRY, type: DSLType::HELPER)]
+function environment_detector() : EnvironmentDetector
+{
+ return new EnvironmentDetector();
+}
+
+/**
+ * Create a ComposerDetector.
+ *
+ * Detects service.name and service.version from Composer's InstalledVersions
+ * using the root package information.
+ */
+#[DocumentationDSL(module: Module::TELEMETRY, type: DSLType::HELPER)]
+function composer_detector() : ComposerDetector
+{
+ return new ComposerDetector();
+}
+
+/**
+ * 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
+ */
+#[DocumentationDSL(module: Module::TELEMETRY, type: DSLType::HELPER)]
+function manual_detector(array $attributes) : ManualDetector
+{
+ return new ManualDetector($attributes);
+}
+
+/**
+ * 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)
+ */
+#[DocumentationDSL(module: Module::TELEMETRY, type: DSLType::HELPER)]
+function caching_detector(ResourceDetector $detector, ?string $cachePath = null) : CachingDetector
+{
+ return new CachingDetector($detector, $cachePath);
+}
+
+/**
+ * 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)
+ */
+#[DocumentationDSL(module: Module::TELEMETRY, type: DSLType::HELPER)]
+function resource_detector(array $detectors = []) : ChainDetector
+{
+ if (\count($detectors) === 0) {
+ return new ChainDetector(
+ new OsDetector(),
+ new HostDetector(),
+ new ProcessDetector(),
+ new ComposerDetector(),
+ new EnvironmentDetector(),
+ );
+ }
+
+ return new ChainDetector(...$detectors);
+}
diff --git a/src/lib/telemetry/src/Flow/Telemetry/Logger/Logger.php b/src/lib/telemetry/src/Flow/Telemetry/Logger/Logger.php
index 55985a0a84..8382180a62 100644
--- a/src/lib/telemetry/src/Flow/Telemetry/Logger/Logger.php
+++ b/src/lib/telemetry/src/Flow/Telemetry/Logger/Logger.php
@@ -187,7 +187,7 @@ private function resolveSpanContext() : ?SpanContext
$context = $this->contextStorage->current();
$activeSpanId = $context->activeSpanId();
- if ($activeSpanId === null) {
+ if ($activeSpanId === null || !$context->traceId->isValid()) {
return null;
}
diff --git a/src/lib/telemetry/src/Flow/Telemetry/PackageVersion.php b/src/lib/telemetry/src/Flow/Telemetry/PackageVersion.php
new file mode 100644
index 0000000000..825a3d9e72
--- /dev/null
+++ b/src/lib/telemetry/src/Flow/Telemetry/PackageVersion.php
@@ -0,0 +1,19 @@
+isValid() || !$spanId->isValid()) {
+ return new PropagationContext();
+ }
+
$tracestateHeader = $carrier->get(self::HEADER_TRACESTATE);
$traceState = TraceState::empty();
@@ -119,7 +123,7 @@ public function fields() : array
*/
public function inject(PropagationContext $context, Carrier $carrier) : void
{
- if ($context->spanContext === null) {
+ if ($context->spanContext === null || !$context->spanContext->isValid()) {
return;
}
diff --git a/src/lib/telemetry/src/Flow/Telemetry/Resource/Attribute/ContainerAttribute.php b/src/lib/telemetry/src/Flow/Telemetry/Resource/Attribute/ContainerAttribute.php
new file mode 100644
index 0000000000..8d6a245f75
--- /dev/null
+++ b/src/lib/telemetry/src/Flow/Telemetry/Resource/Attribute/ContainerAttribute.php
@@ -0,0 +1,83 @@
+cachePath = $cachePath ?? \sys_get_temp_dir() . '/flow_telemetry_resource.cache';
+ }
+
+ public function detect() : Resource
+ {
+ if (\is_file($this->cachePath) && \is_readable($this->cachePath)) {
+ $cached = $this->loadFromCache();
+
+ if ($cached !== null) {
+ return $cached;
+ }
+ }
+
+ $resource = $this->detector->detect();
+ $this->saveToCache($resource);
+
+ return $resource;
+ }
+
+ private function loadFromCache() : ?Resource
+ {
+ $contents = @\file_get_contents($this->cachePath);
+
+ if ($contents === false) {
+ return null;
+ }
+
+ $data = @\unserialize($contents, ['allowed_classes' => [Resource::class, Attributes::class]]);
+
+ if (!$data instanceof Resource) {
+ return null;
+ }
+
+ return $data;
+ }
+
+ private function saveToCache(Resource $resource) : void
+ {
+ $directory = \dirname($this->cachePath);
+
+ if (!\is_dir($directory)) {
+ @\mkdir($directory, 0777, true);
+ }
+
+ @\file_put_contents($this->cachePath, \serialize($resource));
+ }
+}
diff --git a/src/lib/telemetry/src/Flow/Telemetry/Resource/Detector/ChainDetector.php b/src/lib/telemetry/src/Flow/Telemetry/Resource/Detector/ChainDetector.php
new file mode 100644
index 0000000000..9d6dbfdbbe
--- /dev/null
+++ b/src/lib/telemetry/src/Flow/Telemetry/Resource/Detector/ChainDetector.php
@@ -0,0 +1,57 @@
+
+ */
+ private array $detectors;
+
+ public function __construct(ResourceDetector ...$detectors)
+ {
+ $this->detectors = $detectors;
+ }
+
+ public function detect() : Resource
+ {
+ $resource = Resource::empty();
+
+ foreach ($this->detectors as $detector) {
+ $detected = $detector->detect();
+ $resource = $resource->merge($detected);
+ }
+
+ return $resource;
+ }
+}
diff --git a/src/lib/telemetry/src/Flow/Telemetry/Resource/Detector/ComposerDetector.php b/src/lib/telemetry/src/Flow/Telemetry/Resource/Detector/ComposerDetector.php
new file mode 100644
index 0000000000..600e3480ef
--- /dev/null
+++ b/src/lib/telemetry/src/Flow/Telemetry/Resource/Detector/ComposerDetector.php
@@ -0,0 +1,83 @@
+detect();
+ * // Returns: service.name => "my-app", service.version => "1.0.0"
+ * ```
+ */
+final readonly class ComposerDetector implements ResourceDetector
+{
+ public function detect() : Resource
+ {
+ if (!\class_exists(InstalledVersions::class)) {
+ return Resource::empty();
+ }
+
+ $attributes = [];
+
+ $packageName = InstalledVersions::getRootPackage()['name'] ?? null;
+
+ if ($packageName === null) {
+ return Resource::empty();
+ }
+
+ $serviceName = $this->extractServiceName($packageName);
+ $attributes[ServiceAttribute::NAME->value] = $serviceName;
+
+ $version = $this->detectVersion($packageName);
+
+ if ($version !== null) {
+ $attributes[ServiceAttribute::VERSION->value] = $version;
+ }
+
+ return Resource::create($attributes);
+ }
+
+ private function detectVersion(string $packageName) : ?string
+ {
+ try {
+ $version = InstalledVersions::getPrettyVersion($packageName);
+
+ if ($version !== null && $version !== '') {
+ return $version;
+ }
+
+ $version = InstalledVersions::getVersion($packageName);
+
+ if ($version !== null && $version !== '') {
+ return $version;
+ }
+
+ return null;
+ } catch (\OutOfBoundsException) {
+ return null;
+ }
+ }
+
+ private function extractServiceName(string $packageName) : string
+ {
+ $parts = \explode('/', $packageName, 2);
+
+ return $parts[1] ?? $packageName;
+ }
+}
diff --git a/src/lib/telemetry/src/Flow/Telemetry/Resource/Detector/EnvironmentDetector.php b/src/lib/telemetry/src/Flow/Telemetry/Resource/Detector/EnvironmentDetector.php
new file mode 100644
index 0000000000..abe071e94d
--- /dev/null
+++ b/src/lib/telemetry/src/Flow/Telemetry/Resource/Detector/EnvironmentDetector.php
@@ -0,0 +1,147 @@
+parseResourceAttributes();
+
+ $serviceName = $this->getEnv(self::OTEL_SERVICE_NAME);
+
+ if ($serviceName !== null) {
+ $attributes[ServiceAttribute::NAME->value] = $serviceName;
+ }
+
+ return Resource::create($attributes);
+ }
+
+ private function getEnv(string $name) : ?string
+ {
+ $value = \getenv($name);
+
+ if ($value === false || $value === '') {
+ return null;
+ }
+
+ return $value;
+ }
+
+ /**
+ * @return array
+ */
+ private function parseResourceAttributes() : array
+ {
+ $rawAttributes = $this->getEnv(self::OTEL_RESOURCE_ATTRIBUTES);
+
+ if ($rawAttributes === null) {
+ return [];
+ }
+
+ $attributes = [];
+ $pairs = $this->splitByComma($rawAttributes);
+
+ foreach ($pairs as $pair) {
+ $pair = \trim($pair);
+
+ if ($pair === '') {
+ continue;
+ }
+
+ $equalsPos = \strpos($pair, '=');
+
+ if ($equalsPos === false) {
+ continue;
+ }
+
+ $key = \trim(\substr($pair, 0, $equalsPos));
+ $value = \trim(\substr($pair, $equalsPos + 1));
+
+ if ($key === '') {
+ continue;
+ }
+
+ $value = \stripslashes($value);
+ $attributes[$key] = $value;
+ }
+
+ return $attributes;
+ }
+
+ /**
+ * Split a string by commas, respecting escaped commas.
+ *
+ * @return array
+ */
+ private function splitByComma(string $input) : array
+ {
+ $result = [];
+ $current = '';
+ $length = \strlen($input);
+ $i = 0;
+
+ while ($i < $length) {
+ $char = $input[$i];
+
+ if ($char === '\\' && $i + 1 < $length) {
+ $current .= $char . $input[$i + 1];
+ $i += 2;
+
+ continue;
+ }
+
+ if ($char === ',') {
+ $result[] = $current;
+ $current = '';
+ $i++;
+
+ continue;
+ }
+
+ $current .= $char;
+ $i++;
+ }
+
+ if ($current !== '' || \count($result) > 0) {
+ $result[] = $current;
+ }
+
+ return $result;
+ }
+}
diff --git a/src/lib/telemetry/src/Flow/Telemetry/Resource/Detector/HostDetector.php b/src/lib/telemetry/src/Flow/Telemetry/Resource/Detector/HostDetector.php
new file mode 100644
index 0000000000..55b1a014c6
--- /dev/null
+++ b/src/lib/telemetry/src/Flow/Telemetry/Resource/Detector/HostDetector.php
@@ -0,0 +1,117 @@
+value] = $hostname;
+ }
+
+ $arch = $this->detectArchitecture();
+
+ if ($arch !== null) {
+ $attributes[HostAttribute::ARCH->value] = $arch;
+ }
+
+ $machineId = $this->detectMachineId();
+
+ if ($machineId !== null) {
+ $attributes[HostAttribute::ID->value] = $machineId;
+ }
+
+ return Resource::create($attributes);
+ }
+
+ private function detectArchitecture() : ?string
+ {
+ $machine = \strtolower(\php_uname('m'));
+
+ return match (true) {
+ $machine === 'x86_64' || $machine === 'amd64' => 'amd64',
+ $machine === 'aarch64' || $machine === 'arm64' => 'arm64',
+ \str_starts_with($machine, 'arm') => 'arm32',
+ $machine === 'i386' || $machine === 'i686' || $machine === 'x86' => 'x86',
+ $machine === 'ia64' => 'ia64',
+ $machine === 'ppc' || $machine === 'ppc32' || $machine === 'powerpc' => 'ppc32',
+ $machine === 'ppc64' || $machine === 'ppc64le' => 'ppc64',
+ $machine === 's390x' => 's390x',
+ default => null,
+ };
+ }
+
+ private function detectMachineId() : ?string
+ {
+ if (PHP_OS_FAMILY === 'Linux') {
+ return $this->readLinuxMachineId();
+ }
+
+ if (PHP_OS_FAMILY === 'Darwin') {
+ return $this->readDarwinMachineId();
+ }
+
+ return null;
+ }
+
+ private function readDarwinMachineId() : ?string
+ {
+ $output = @\shell_exec('ioreg -rd1 -c IOPlatformExpertDevice 2>/dev/null');
+
+ if ($output === null || $output === false) {
+ return null;
+ }
+
+ if (\preg_match('/"IOPlatformUUID"\s*=\s*"([^"]+)"/', $output, $matches)) {
+ return $matches[1];
+ }
+
+ return null;
+ }
+
+ private function readLinuxMachineId() : ?string
+ {
+ $paths = [
+ '/etc/machine-id',
+ '/var/lib/dbus/machine-id',
+ ];
+
+ foreach ($paths as $path) {
+ if (\is_readable($path)) {
+ $content = @\file_get_contents($path);
+
+ if ($content !== false) {
+ return \trim($content);
+ }
+ }
+ }
+
+ return null;
+ }
+}
diff --git a/src/lib/telemetry/src/Flow/Telemetry/Resource/Detector/ManualDetector.php b/src/lib/telemetry/src/Flow/Telemetry/Resource/Detector/ManualDetector.php
new file mode 100644
index 0000000000..7554eea890
--- /dev/null
+++ b/src/lib/telemetry/src/Flow/Telemetry/Resource/Detector/ManualDetector.php
@@ -0,0 +1,49 @@
+ 'my-app',
+ * 'service.version' => '1.0.0',
+ * 'deployment.environment.name' => 'production',
+ * ]);
+ *
+ * // Combined with auto-detection (manual takes precedence when last):
+ * $detector = new ChainDetector(
+ * new OsDetector(),
+ * new HostDetector(),
+ * new ManualDetector(['service.name' => 'my-app']),
+ * );
+ * ```
+ */
+final readonly class ManualDetector implements ResourceDetector
+{
+ /**
+ * @param array|bool|float|int|string> $attributes
+ */
+ public function __construct(
+ private array $attributes = [],
+ ) {
+ }
+
+ public function detect() : Resource
+ {
+ return Resource::create($this->attributes);
+ }
+}
diff --git a/src/lib/telemetry/src/Flow/Telemetry/Resource/Detector/OsDetector.php b/src/lib/telemetry/src/Flow/Telemetry/Resource/Detector/OsDetector.php
new file mode 100644
index 0000000000..13ff70abf1
--- /dev/null
+++ b/src/lib/telemetry/src/Flow/Telemetry/Resource/Detector/OsDetector.php
@@ -0,0 +1,87 @@
+detectOsType();
+
+ $attributes = [];
+
+ if ($osType !== null) {
+ $attributes[OsAttribute::TYPE->value] = $osType;
+ }
+
+ $sysname = \php_uname('s');
+
+ if ($sysname !== '') {
+ $attributes[OsAttribute::NAME->value] = $sysname;
+ }
+
+ $release = \php_uname('r');
+
+ if ($release !== '') {
+ $attributes[OsAttribute::VERSION->value] = $release;
+ }
+
+ $fullDescription = \php_uname('a');
+
+ if ($fullDescription !== '') {
+ $attributes[OsAttribute::DESCRIPTION->value] = $fullDescription;
+ }
+
+ return Resource::create($attributes);
+ }
+
+ private function detectOsType() : ?string
+ {
+ return match (PHP_OS_FAMILY) {
+ 'Darwin' => 'darwin',
+ 'Windows' => 'windows',
+ 'Linux' => 'linux',
+ 'BSD' => $this->determineBsdVariant(),
+ 'Solaris' => 'solaris',
+ default => null,
+ };
+ }
+
+ private function determineBsdVariant() : string
+ {
+ $os = \strtolower(\php_uname('s'));
+
+ return match (true) {
+ \str_contains($os, 'freebsd') => 'freebsd',
+ \str_contains($os, 'openbsd') => 'openbsd',
+ \str_contains($os, 'netbsd') => 'netbsd',
+ \str_contains($os, 'dragonfly') => 'dragonflybsd',
+ default => 'freebsd',
+ };
+ }
+}
diff --git a/src/lib/telemetry/src/Flow/Telemetry/Resource/Detector/ProcessDetector.php b/src/lib/telemetry/src/Flow/Telemetry/Resource/Detector/ProcessDetector.php
new file mode 100644
index 0000000000..4299bbb1f9
--- /dev/null
+++ b/src/lib/telemetry/src/Flow/Telemetry/Resource/Detector/ProcessDetector.php
@@ -0,0 +1,118 @@
+value] = $pid;
+ }
+
+ $attributes[ProcessAttribute::EXECUTABLE_PATH->value] = PHP_BINARY;
+ $attributes[ProcessAttribute::EXECUTABLE_NAME->value] = \basename(PHP_BINARY);
+
+ $attributes[ProcessAttribute::RUNTIME_NAME->value] = 'PHP';
+ $attributes[ProcessAttribute::RUNTIME_VERSION->value] = PHP_VERSION;
+
+ $command = $this->detectCommand();
+
+ if ($command !== null) {
+ $attributes[ProcessAttribute::COMMAND->value] = $command;
+ }
+
+ $commandArgs = $this->detectCommandArgs();
+
+ if ($commandArgs !== null) {
+ $attributes[ProcessAttribute::COMMAND_ARGS->value] = $commandArgs;
+ }
+
+ $owner = $this->detectOwner();
+
+ if ($owner !== null) {
+ $attributes[ProcessAttribute::OWNER->value] = $owner;
+ }
+
+ return Resource::create($attributes);
+ }
+
+ private function detectCommand() : ?string
+ {
+ if (isset($_SERVER['SCRIPT_FILENAME']) && \is_string($_SERVER['SCRIPT_FILENAME'])) {
+ return $_SERVER['SCRIPT_FILENAME'];
+ }
+
+ global $argv;
+
+ if (isset($argv[0]) && \is_string($argv[0])) {
+ return $argv[0];
+ }
+
+ return null;
+ }
+
+ /**
+ * @return null|array
+ */
+ private function detectCommandArgs() : ?array
+ {
+ global $argv;
+
+ if (!isset($argv) || !\is_array($argv) || \count($argv) === 0) {
+ return null;
+ }
+
+ /** @var array $result */
+ $result = \array_values(\array_filter($argv, 'is_string'));
+
+ return \count($result) > 0 ? $result : null;
+ }
+
+ private function detectOwner() : ?string
+ {
+ if (!\function_exists('posix_getuid') || !\function_exists('posix_getpwuid')) {
+ return null;
+ }
+
+ $uid = \posix_getuid();
+ $pwuid = \posix_getpwuid($uid);
+
+ if ($pwuid === false) {
+ return null;
+ }
+
+ return $pwuid['name'];
+ }
+}
diff --git a/src/lib/telemetry/src/Flow/Telemetry/Resource/ResourceDetector.php b/src/lib/telemetry/src/Flow/Telemetry/Resource/ResourceDetector.php
new file mode 100644
index 0000000000..8597981521
--- /dev/null
+++ b/src/lib/telemetry/src/Flow/Telemetry/Resource/ResourceDetector.php
@@ -0,0 +1,37 @@
+detect();
+ * ```
+ */
+interface ResourceDetector
+{
+ /**
+ * Detect resource attributes from the environment.
+ */
+ public function detect() : Resource;
+}
diff --git a/src/lib/telemetry/src/Flow/Telemetry/Tracer/SpanContext.php b/src/lib/telemetry/src/Flow/Telemetry/Tracer/SpanContext.php
index ea56d7ed67..a1e8999065 100644
--- a/src/lib/telemetry/src/Flow/Telemetry/Tracer/SpanContext.php
+++ b/src/lib/telemetry/src/Flow/Telemetry/Tracer/SpanContext.php
@@ -99,6 +99,19 @@ public static function fromArray(array $data) : self
);
}
+ /**
+ * Get an invalid SpanContext with all-zero trace and span IDs.
+ *
+ * Returns a context representing no active trace.
+ */
+ public static function getInvalid() : self
+ {
+ return new self(
+ TraceId::invalid(),
+ SpanId::invalid(),
+ );
+ }
+
/**
* Check if this is a root span (no parent).
*/
@@ -111,12 +124,11 @@ public function isRoot() : bool
* Check if this SpanContext has valid trace and span IDs.
*
* A SpanContext is valid when both the trace ID and span ID are non-zero.
- * Note: SpanId and TraceId already reject all-zero values at construction,
- * so any successfully created SpanContext is valid by construction.
+ * An invalid SpanContext indicates no active trace context.
*/
public function isValid() : bool
{
- return true;
+ return $this->traceId->isValid() && $this->spanId->isValid();
}
/**
diff --git a/src/lib/telemetry/src/Flow/Telemetry/Tracer/Tracer.php b/src/lib/telemetry/src/Flow/Telemetry/Tracer/Tracer.php
index bd250f7c94..f2f44a7e44 100644
--- a/src/lib/telemetry/src/Flow/Telemetry/Tracer/Tracer.php
+++ b/src/lib/telemetry/src/Flow/Telemetry/Tracer/Tracer.php
@@ -5,7 +5,7 @@
namespace Flow\Telemetry\Tracer;
use Flow\Telemetry\{Attributes, InstrumentationScope, Resource};
-use Flow\Telemetry\Context\{Context, ContextStorage, SpanId, TraceFlags};
+use Flow\Telemetry\Context\{Context, ContextStorage, SpanId, TraceFlags, TraceId};
use Flow\Telemetry\Tracer\Sampler\Sampler;
use Psr\Clock\ClockInterface;
@@ -186,6 +186,13 @@ public function span(
}
$traceId = $context->traceId;
+
+ if (!$traceId->isValid()) {
+ $traceId = TraceId::generate();
+ $context = Context::withTraceId($traceId);
+ $this->contextStorage->store($context);
+ }
+
$spanId = SpanId::generate();
$traceFlags = $parentSpanContext !== null ? $parentSpanContext->traceFlags : TraceFlags::sampled();
$traceState = $parentSpanContext?->traceState;
diff --git a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Context/ContextTest.php b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Context/ContextTest.php
index 1376fa339c..10dde315ac 100644
--- a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Context/ContextTest.php
+++ b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Context/ContextTest.php
@@ -54,23 +54,16 @@ public function test_constructor_accepts_trace_id_and_baggage(array $entries) :
self::assertSame($entries, $context->baggage->all());
}
- public function test_create_generates_new_trace_id() : void
+ public function test_create_returns_context_with_invalid_trace_id() : void
{
$context = Context::create();
- self::assertSame(32, \strlen($context->traceId->toHex()));
+ self::assertFalse($context->traceId->isValid());
+ self::assertSame(TraceId::INVALID, $context->traceId->toHex());
self::assertTrue($context->baggage->isEmpty());
self::assertNull($context->activeSpanId());
}
- public function test_create_generates_unique_trace_ids() : void
- {
- $context1 = Context::create();
- $context2 = Context::create();
-
- self::assertFalse($context1->traceId->equals($context2->traceId));
- }
-
public function test_default_baggage_is_empty() : void
{
$context = new Context(TraceId::generate());
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 39c7b7f8c8..de4e2100b5 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,7 +4,7 @@
namespace Flow\Telemetry\Tests\Unit\Context;
-use Flow\Telemetry\Context\{Context, ContextStorage, MemoryContextStorage};
+use Flow\Telemetry\Context\{Context, ContextStorage, MemoryContextStorage, TraceId};
use PHPUnit\Framework\TestCase;
final class MemoryContextStorageTest extends TestCase
@@ -18,7 +18,7 @@ public function test_creates_default_context_when_none_provided() : void
public function test_current_returns_stored_context() : void
{
- $context = Context::create();
+ $context = Context::withTraceId(TraceId::generate());
$storage = new MemoryContextStorage($context);
self::assertSame($context->traceId->toHex(), $storage->current()->traceId->toHex());
@@ -34,7 +34,7 @@ public function test_store_replaces_current_context() : void
$storage = new MemoryContextStorage();
$originalContext = $storage->current();
- $newContext = Context::create();
+ $newContext = Context::withTraceId(TraceId::generate());
$storage->store($newContext);
self::assertFalse($originalContext->traceId->equals($storage->current()->traceId));
@@ -44,7 +44,7 @@ public function test_store_replaces_current_context() : void
public function test_store_updates_context_for_all_readers() : void
{
$storage = new MemoryContextStorage();
- $newContext = Context::create();
+ $newContext = Context::withTraceId(TraceId::generate());
$storage->store($newContext);
diff --git a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Context/SpanIdTest.php b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Context/SpanIdTest.php
index 62c0169e23..62563a6536 100644
--- a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Context/SpanIdTest.php
+++ b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Context/SpanIdTest.php
@@ -62,20 +62,20 @@ public function test_from_array_creates_span_id() : void
self::assertSame($hex, $spanId->toHex());
}
- public function test_from_bytes_creates_span_id() : void
+ public function test_from_bytes_allows_all_zeros() : void
{
- $bytes = \random_bytes(8);
- $spanId = SpanId::fromBytes($bytes);
+ $spanId = SpanId::fromBytes(\str_repeat("\0", 8));
- self::assertSame($bytes, $spanId->toBytes());
+ self::assertFalse($spanId->isValid());
+ self::assertSame(SpanId::INVALID, $spanId->toHex());
}
- public function test_from_bytes_throws_on_all_zeros() : void
+ public function test_from_bytes_creates_span_id() : void
{
- $this->expectException(\InvalidArgumentException::class);
- $this->expectExceptionMessage('SpanId cannot be all zeros');
+ $bytes = \random_bytes(8);
+ $spanId = SpanId::fromBytes($bytes);
- SpanId::fromBytes(\str_repeat("\0", 8));
+ self::assertSame($bytes, $spanId->toBytes());
}
#[DataProvider('provideInvalidBytesLength')]
@@ -96,12 +96,12 @@ public function test_from_hex_accepts_valid_hex_strings(string $hex) : void
self::assertSame(8, \strlen($spanId->toBytes()));
}
- public function test_from_hex_throws_on_all_zeros() : void
+ public function test_from_hex_allows_all_zeros() : void
{
- $this->expectException(\InvalidArgumentException::class);
- $this->expectExceptionMessage('SpanId cannot be all zeros');
+ $spanId = SpanId::fromHex('0000000000000000');
- SpanId::fromHex('0000000000000000');
+ self::assertFalse($spanId->isValid());
+ self::assertSame(SpanId::INVALID, $spanId->toHex());
}
#[DataProvider('provideInvalidHexStrings')]
@@ -129,6 +129,34 @@ public function test_generate_creates_unique_span_ids() : void
self::assertFalse($spanId1->equals($spanId2));
}
+ public function test_invalid_constant_has_correct_value() : void
+ {
+ self::assertSame('0000000000000000', SpanId::INVALID);
+ self::assertSame(16, \strlen(SpanId::INVALID));
+ }
+
+ public function test_invalid_returns_all_zeros_span_id() : void
+ {
+ $spanId = SpanId::invalid();
+
+ self::assertSame(SpanId::INVALID, $spanId->toHex());
+ self::assertSame(\str_repeat("\0", 8), $spanId->toBytes());
+ }
+
+ public function test_is_valid_returns_false_for_invalid_span_id() : void
+ {
+ $spanId = SpanId::invalid();
+
+ self::assertFalse($spanId->isValid());
+ }
+
+ public function test_is_valid_returns_true_for_generated_span_id() : void
+ {
+ $spanId = SpanId::generate();
+
+ self::assertTrue($spanId->isValid());
+ }
+
public function test_normalize_from_array_round_trip() : void
{
$original = SpanId::generate();
diff --git a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Context/TraceIdTest.php b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Context/TraceIdTest.php
index a2d914cc5b..3bd5cad60f 100644
--- a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Context/TraceIdTest.php
+++ b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Context/TraceIdTest.php
@@ -62,20 +62,20 @@ public function test_from_array_creates_trace_id() : void
self::assertSame($hex, $traceId->toHex());
}
- public function test_from_bytes_creates_trace_id() : void
+ public function test_from_bytes_allows_all_zeros() : void
{
- $bytes = \random_bytes(16);
- $traceId = TraceId::fromBytes($bytes);
+ $traceId = TraceId::fromBytes(\str_repeat("\0", 16));
- self::assertSame($bytes, $traceId->toBytes());
+ self::assertFalse($traceId->isValid());
+ self::assertSame(TraceId::INVALID, $traceId->toHex());
}
- public function test_from_bytes_throws_on_all_zeros() : void
+ public function test_from_bytes_creates_trace_id() : void
{
- $this->expectException(\InvalidArgumentException::class);
- $this->expectExceptionMessage('TraceId cannot be all zeros');
+ $bytes = \random_bytes(16);
+ $traceId = TraceId::fromBytes($bytes);
- TraceId::fromBytes(\str_repeat("\0", 16));
+ self::assertSame($bytes, $traceId->toBytes());
}
#[DataProvider('provideInvalidBytesLength')]
@@ -96,12 +96,12 @@ public function test_from_hex_accepts_valid_hex_strings(string $hex) : void
self::assertSame(16, \strlen($traceId->toBytes()));
}
- public function test_from_hex_throws_on_all_zeros() : void
+ public function test_from_hex_allows_all_zeros() : void
{
- $this->expectException(\InvalidArgumentException::class);
- $this->expectExceptionMessage('TraceId cannot be all zeros');
+ $traceId = TraceId::fromHex('00000000000000000000000000000000');
- TraceId::fromHex('00000000000000000000000000000000');
+ self::assertFalse($traceId->isValid());
+ self::assertSame(TraceId::INVALID, $traceId->toHex());
}
#[DataProvider('provideInvalidHexStrings')]
@@ -129,6 +129,34 @@ public function test_generate_creates_unique_trace_ids() : void
self::assertFalse($traceId1->equals($traceId2));
}
+ public function test_invalid_constant_has_correct_value() : void
+ {
+ self::assertSame('00000000000000000000000000000000', TraceId::INVALID);
+ self::assertSame(32, \strlen(TraceId::INVALID));
+ }
+
+ public function test_invalid_returns_all_zeros_trace_id() : void
+ {
+ $traceId = TraceId::invalid();
+
+ self::assertSame(TraceId::INVALID, $traceId->toHex());
+ self::assertSame(\str_repeat("\0", 16), $traceId->toBytes());
+ }
+
+ public function test_is_valid_returns_false_for_invalid_trace_id() : void
+ {
+ $traceId = TraceId::invalid();
+
+ self::assertFalse($traceId->isValid());
+ }
+
+ public function test_is_valid_returns_true_for_generated_trace_id() : void
+ {
+ $traceId = TraceId::generate();
+
+ self::assertTrue($traceId->isValid());
+ }
+
public function test_normalize_from_array_round_trip() : void
{
$original = TraceId::generate();
diff --git a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Resource/Detector/CachingDetectorTest.php b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Resource/Detector/CachingDetectorTest.php
new file mode 100644
index 0000000000..fd208697a3
--- /dev/null
+++ b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Resource/Detector/CachingDetectorTest.php
@@ -0,0 +1,151 @@
+cacheFile = \sys_get_temp_dir() . '/flow_telemetry_test_' . \uniqid() . '.cache';
+ }
+
+ protected function tearDown() : void
+ {
+ if (\is_file($this->cacheFile)) {
+ @\unlink($this->cacheFile);
+ }
+ }
+
+ public function test_detect_caches_result_to_file() : void
+ {
+ $innerDetector = $this->createMockDetector(['key' => 'value']);
+ $detector = new CachingDetector($innerDetector, $this->cacheFile);
+
+ $detector->detect();
+
+ self::assertFileExists($this->cacheFile);
+ }
+
+ public function test_detect_calls_inner_detector_when_cache_missing() : void
+ {
+ $callCount = 0;
+ $innerDetector = new class($callCount) implements ResourceDetector {
+ public function __construct(private int &$callCount)
+ {
+ }
+
+ public function detect() : Resource
+ {
+ $this->callCount++;
+
+ return Resource::create(['key' => 'value']);
+ }
+ };
+
+ $detector = new CachingDetector($innerDetector, $this->cacheFile);
+ $detector->detect();
+
+ self::assertSame(1, $callCount);
+ }
+
+ public function test_detect_handles_corrupted_cache_gracefully() : void
+ {
+ \file_put_contents($this->cacheFile, 'invalid-serialized-data');
+
+ $innerDetector = $this->createMockDetector(['key' => 'fresh-value']);
+ $detector = new CachingDetector($innerDetector, $this->cacheFile);
+
+ $resource = $detector->detect();
+
+ self::assertSame('fresh-value', $resource->get('key'));
+ }
+
+ public function test_detect_returns_cached_result_without_calling_inner_detector() : void
+ {
+ $callCount = 0;
+ $innerDetector = new class($callCount) implements ResourceDetector {
+ public function __construct(private int &$callCount)
+ {
+ }
+
+ public function detect() : Resource
+ {
+ $this->callCount++;
+
+ return Resource::create(['key' => 'value']);
+ }
+ };
+
+ $detector = new CachingDetector($innerDetector, $this->cacheFile);
+
+ $detector->detect();
+ $detector->detect();
+
+ self::assertSame(1, $callCount);
+ }
+
+ public function test_detect_returns_correct_resource_from_cache() : void
+ {
+ $innerDetector = $this->createMockDetector([
+ 'service.name' => 'test-service',
+ 'host.name' => 'test-host',
+ ]);
+
+ $detector = new CachingDetector($innerDetector, $this->cacheFile);
+
+ $firstResult = $detector->detect();
+ $secondResult = $detector->detect();
+
+ self::assertSame('test-service', $firstResult->get('service.name'));
+ self::assertSame('test-host', $firstResult->get('host.name'));
+ self::assertSame('test-service', $secondResult->get('service.name'));
+ self::assertSame('test-host', $secondResult->get('host.name'));
+ }
+
+ public function test_detect_uses_default_cache_path_when_not_provided() : void
+ {
+ $defaultCachePath = \sys_get_temp_dir() . '/flow_telemetry_resource.cache';
+
+ if (\is_file($defaultCachePath)) {
+ @\unlink($defaultCachePath);
+ }
+
+ $innerDetector = $this->createMockDetector(['key' => 'value']);
+ $detector = new CachingDetector($innerDetector);
+
+ $detector->detect();
+
+ self::assertFileExists($defaultCachePath);
+
+ @\unlink($defaultCachePath);
+ }
+
+ /**
+ * @param array $attributes
+ */
+ private function createMockDetector(array $attributes) : ResourceDetector
+ {
+ return new class($attributes) implements ResourceDetector {
+ /**
+ * @param array $attributes
+ */
+ public function __construct(private readonly array $attributes)
+ {
+ }
+
+ public function detect() : Resource
+ {
+ return Resource::create($this->attributes);
+ }
+ };
+ }
+}
diff --git a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Resource/Detector/ChainDetectorTest.php b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Resource/Detector/ChainDetectorTest.php
new file mode 100644
index 0000000000..2de6a4a5c5
--- /dev/null
+++ b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Resource/Detector/ChainDetectorTest.php
@@ -0,0 +1,150 @@
+createMockDetector(['a' => '1', 'common' => 'first']);
+ $detector2 = $this->createMockDetector(['b' => '2', 'common' => 'second']);
+ $detector3 = $this->createMockDetector(['c' => '3', 'common' => 'third']);
+
+ $detector = new ChainDetector($detector1, $detector2, $detector3);
+ $resource = $detector->detect();
+
+ self::assertSame('1', $resource->get('a'));
+ self::assertSame('2', $resource->get('b'));
+ self::assertSame('3', $resource->get('c'));
+ self::assertSame('third', $resource->get('common'));
+ }
+
+ public function test_detect_executes_detectors_in_order() : void
+ {
+ $executionOrder = [];
+
+ $detector1 = new class($executionOrder) implements ResourceDetector {
+ /**
+ * @param array $executionOrder
+ *
+ * @phpstan-ignore property.onlyWritten
+ */
+ public function __construct(private array &$executionOrder)
+ {
+ }
+
+ public function detect() : Resource
+ {
+ $this->executionOrder[] = 1;
+
+ return Resource::create(['order' => '1']);
+ }
+ };
+
+ $detector2 = new class($executionOrder) implements ResourceDetector {
+ /**
+ * @param array $executionOrder
+ *
+ * @phpstan-ignore property.onlyWritten
+ */
+ public function __construct(private array &$executionOrder)
+ {
+ }
+
+ public function detect() : Resource
+ {
+ $this->executionOrder[] = 2;
+
+ return Resource::create(['order' => '2']);
+ }
+ };
+
+ $detector = new ChainDetector($detector1, $detector2);
+ $resource = $detector->detect();
+
+ self::assertSame([1, 2], $executionOrder);
+ self::assertSame('2', $resource->get('order'));
+ }
+
+ public function test_detect_handles_empty_resources_gracefully() : void
+ {
+ $emptyDetector = $this->createMockDetector([]);
+ $nonEmptyDetector = $this->createMockDetector(['key' => 'value']);
+
+ $detector = new ChainDetector($emptyDetector, $nonEmptyDetector, $emptyDetector);
+ $resource = $detector->detect();
+
+ self::assertSame(1, $resource->count());
+ self::assertSame('value', $resource->get('key'));
+ }
+
+ public function test_detect_merges_multiple_detectors() : void
+ {
+ $detector1 = $this->createMockDetector(['key1' => 'value1']);
+ $detector2 = $this->createMockDetector(['key2' => 'value2']);
+
+ $detector = new ChainDetector($detector1, $detector2);
+ $resource = $detector->detect();
+
+ self::assertSame('value1', $resource->get('key1'));
+ self::assertSame('value2', $resource->get('key2'));
+ }
+
+ public function test_detect_with_no_detectors_returns_empty_resource() : void
+ {
+ $detector = new ChainDetector();
+ $resource = $detector->detect();
+
+ self::assertTrue($resource->isEmpty());
+ }
+
+ public function test_detect_with_single_detector_returns_its_resource() : void
+ {
+ $mockDetector = $this->createMockDetector(['key' => 'value']);
+
+ $detector = new ChainDetector($mockDetector);
+ $resource = $detector->detect();
+
+ self::assertSame('value', $resource->get('key'));
+ }
+
+ public function test_later_detectors_override_earlier_ones() : void
+ {
+ $detector1 = $this->createMockDetector(['key' => 'original', 'only1' => 'first']);
+ $detector2 = $this->createMockDetector(['key' => 'override', 'only2' => 'second']);
+
+ $detector = new ChainDetector($detector1, $detector2);
+ $resource = $detector->detect();
+
+ self::assertSame('override', $resource->get('key'));
+ self::assertSame('first', $resource->get('only1'));
+ self::assertSame('second', $resource->get('only2'));
+ }
+
+ /**
+ * @param array $attributes
+ */
+ private function createMockDetector(array $attributes) : ResourceDetector
+ {
+ return new class($attributes) implements ResourceDetector {
+ /**
+ * @param array $attributes
+ */
+ public function __construct(private readonly array $attributes)
+ {
+ }
+
+ public function detect() : Resource
+ {
+ return Resource::create($this->attributes);
+ }
+ };
+ }
+}
diff --git a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Resource/Detector/ComposerDetectorTest.php b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Resource/Detector/ComposerDetectorTest.php
new file mode 100644
index 0000000000..1d7c5ab66f
--- /dev/null
+++ b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Resource/Detector/ComposerDetectorTest.php
@@ -0,0 +1,63 @@
+detect();
+
+ $serviceName = $resource->get(ServiceAttribute::NAME->value);
+
+ self::assertNotNull($serviceName);
+ self::assertStringNotContainsString('/', type_string()->assert($serviceName));
+ }
+
+ public function test_detect_returns_service_name_from_root_package() : void
+ {
+ if (!\class_exists(InstalledVersions::class)) {
+ self::markTestSkipped('Composer InstalledVersions not available');
+ }
+
+ $detector = new ComposerDetector();
+ $resource = $detector->detect();
+
+ self::assertTrue($resource->has(ServiceAttribute::NAME->value));
+
+ $serviceName = $resource->get(ServiceAttribute::NAME->value);
+
+ self::assertIsString($serviceName);
+ self::assertNotEmpty($serviceName);
+ }
+
+ public function test_detect_returns_service_version_from_root_package() : void
+ {
+ if (!\class_exists(InstalledVersions::class)) {
+ self::markTestSkipped('Composer InstalledVersions not available');
+ }
+
+ $detector = new ComposerDetector();
+ $resource = $detector->detect();
+
+ self::assertTrue($resource->has(ServiceAttribute::VERSION->value));
+
+ $version = $resource->get(ServiceAttribute::VERSION->value);
+
+ self::assertIsString($version);
+ }
+}
diff --git a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Resource/Detector/EnvironmentDetectorTest.php b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Resource/Detector/EnvironmentDetectorTest.php
new file mode 100644
index 0000000000..4d6ac7fe14
--- /dev/null
+++ b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Resource/Detector/EnvironmentDetectorTest.php
@@ -0,0 +1,138 @@
+detect();
+
+ self::assertTrue($resource->has('key'));
+ self::assertSame('', $resource->get('key'));
+ }
+
+ public function test_detect_handles_escaped_commas_in_values() : void
+ {
+ \putenv('OTEL_RESOURCE_ATTRIBUTES=key=value\,with\,commas,other=normal');
+
+ $detector = new EnvironmentDetector();
+ $resource = $detector->detect();
+
+ self::assertTrue($resource->has('key'));
+ self::assertTrue($resource->has('other'));
+ self::assertSame('value,with,commas', $resource->get('key'));
+ self::assertSame('normal', $resource->get('other'));
+ }
+
+ public function test_detect_ignores_empty_keys() : void
+ {
+ \putenv('OTEL_RESOURCE_ATTRIBUTES==value,key=data');
+
+ $detector = new EnvironmentDetector();
+ $resource = $detector->detect();
+
+ self::assertSame(1, $resource->count());
+ self::assertTrue($resource->has('key'));
+ self::assertSame('data', $resource->get('key'));
+ }
+
+ public function test_detect_ignores_empty_pairs() : void
+ {
+ \putenv('OTEL_RESOURCE_ATTRIBUTES=key1=value1,,key2=value2');
+
+ $detector = new EnvironmentDetector();
+ $resource = $detector->detect();
+
+ self::assertSame(2, $resource->count());
+ self::assertTrue($resource->has('key1'));
+ self::assertTrue($resource->has('key2'));
+ }
+
+ public function test_detect_ignores_pairs_without_equals_sign() : void
+ {
+ \putenv('OTEL_RESOURCE_ATTRIBUTES=key1=value1,invalid,key2=value2');
+
+ $detector = new EnvironmentDetector();
+ $resource = $detector->detect();
+
+ self::assertSame(2, $resource->count());
+ self::assertTrue($resource->has('key1'));
+ self::assertTrue($resource->has('key2'));
+ self::assertFalse($resource->has('invalid'));
+ }
+
+ public function test_detect_parses_otel_resource_attributes() : void
+ {
+ \putenv('OTEL_RESOURCE_ATTRIBUTES=service.version=1.0.0,deployment.environment.name=production');
+
+ $detector = new EnvironmentDetector();
+ $resource = $detector->detect();
+
+ self::assertTrue($resource->has('service.version'));
+ self::assertTrue($resource->has('deployment.environment.name'));
+ self::assertSame('1.0.0', $resource->get('service.version'));
+ self::assertSame('production', $resource->get('deployment.environment.name'));
+ }
+
+ public function test_detect_reads_otel_service_name() : void
+ {
+ \putenv('OTEL_SERVICE_NAME=test-service');
+
+ $detector = new EnvironmentDetector();
+ $resource = $detector->detect();
+
+ self::assertTrue($resource->has(ServiceAttribute::NAME->value));
+ self::assertSame('test-service', $resource->get(ServiceAttribute::NAME->value));
+ }
+
+ public function test_detect_returns_empty_resource_when_no_env_vars_set() : void
+ {
+ \putenv('OTEL_SERVICE_NAME');
+ \putenv('OTEL_RESOURCE_ATTRIBUTES');
+
+ $detector = new EnvironmentDetector();
+ $resource = $detector->detect();
+
+ self::assertTrue($resource->isEmpty());
+ }
+
+ public function test_detect_trims_whitespace_from_keys_and_values() : void
+ {
+ \putenv('OTEL_RESOURCE_ATTRIBUTES= key = value , other = data ');
+
+ $detector = new EnvironmentDetector();
+ $resource = $detector->detect();
+
+ self::assertTrue($resource->has('key'));
+ self::assertTrue($resource->has('other'));
+ self::assertSame('value', $resource->get('key'));
+ self::assertSame('data', $resource->get('other'));
+ }
+
+ public function test_otel_service_name_takes_precedence_over_resource_attributes() : void
+ {
+ \putenv('OTEL_SERVICE_NAME=override-service');
+ \putenv('OTEL_RESOURCE_ATTRIBUTES=service.name=original-service');
+
+ $detector = new EnvironmentDetector();
+ $resource = $detector->detect();
+
+ self::assertSame('override-service', $resource->get(ServiceAttribute::NAME->value));
+ }
+}
diff --git a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Resource/Detector/HostDetectorTest.php b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Resource/Detector/HostDetectorTest.php
new file mode 100644
index 0000000000..968ba34436
--- /dev/null
+++ b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Resource/Detector/HostDetectorTest.php
@@ -0,0 +1,58 @@
+detect();
+
+ self::assertTrue($resource->has(HostAttribute::ARCH->value));
+
+ $arch = $resource->get(HostAttribute::ARCH->value);
+
+ self::assertIsString($arch);
+ self::assertContains($arch, ['amd64', 'arm64', 'arm32', 'x86', 'ia64', 'ppc32', 'ppc64', 's390x']);
+ }
+
+ public function test_detect_returns_host_name() : void
+ {
+ $detector = new HostDetector();
+ $resource = $detector->detect();
+
+ self::assertTrue($resource->has(HostAttribute::NAME->value));
+
+ $hostname = $resource->get(HostAttribute::NAME->value);
+
+ self::assertIsString($hostname);
+ self::assertNotEmpty($hostname);
+ }
+
+ public function test_detect_returns_resource_with_at_least_two_attributes() : void
+ {
+ $detector = new HostDetector();
+ $resource = $detector->detect();
+
+ self::assertFalse($resource->isEmpty());
+ self::assertGreaterThanOrEqual(2, $resource->count());
+ }
+
+ public function test_hostname_matches_php_uname() : void
+ {
+ $detector = new HostDetector();
+ $resource = $detector->detect();
+
+ $expectedHostname = \php_uname('n');
+ $actualHostname = $resource->get(HostAttribute::NAME->value);
+
+ self::assertSame($expectedHostname, $actualHostname);
+ }
+}
diff --git a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Resource/Detector/ManualDetectorTest.php b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Resource/Detector/ManualDetectorTest.php
new file mode 100644
index 0000000000..e545fc78eb
--- /dev/null
+++ b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Resource/Detector/ManualDetectorTest.php
@@ -0,0 +1,65 @@
+detect();
+
+ self::assertTrue($resource->isEmpty());
+ }
+
+ public function test_detect_returns_provided_attributes() : void
+ {
+ $detector = new ManualDetector([
+ 'service.name' => 'my-service',
+ 'service.version' => '1.0.0',
+ ]);
+ $resource = $detector->detect();
+
+ self::assertSame('my-service', $resource->get('service.name'));
+ self::assertSame('1.0.0', $resource->get('service.version'));
+ }
+
+ public function test_detect_supports_array_values() : void
+ {
+ $detector = new ManualDetector([
+ 'tags' => ['production', 'web'],
+ ]);
+ $resource = $detector->detect();
+
+ self::assertSame(['production', 'web'], $resource->get('tags'));
+ }
+
+ public function test_detect_supports_boolean_values() : void
+ {
+ $detector = new ManualDetector([
+ 'enabled' => true,
+ 'debug' => false,
+ ]);
+ $resource = $detector->detect();
+
+ self::assertTrue($resource->get('enabled'));
+ self::assertFalse($resource->get('debug'));
+ }
+
+ public function test_detect_supports_numeric_values() : void
+ {
+ $detector = new ManualDetector([
+ 'port' => 8080,
+ 'ratio' => 0.5,
+ ]);
+ $resource = $detector->detect();
+
+ self::assertSame(8080, $resource->get('port'));
+ self::assertSame(0.5, $resource->get('ratio'));
+ }
+}
diff --git a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Resource/Detector/OsDetectorTest.php b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Resource/Detector/OsDetectorTest.php
new file mode 100644
index 0000000000..c65f2a1c6c
--- /dev/null
+++ b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Resource/Detector/OsDetectorTest.php
@@ -0,0 +1,88 @@
+detect();
+
+ $osType = $resource->get(OsAttribute::TYPE->value);
+
+ $expectedType = match (PHP_OS_FAMILY) {
+ 'Darwin' => 'darwin',
+ 'Windows' => 'windows',
+ 'Linux' => 'linux',
+ 'BSD' => null,
+ 'Solaris' => 'solaris',
+ default => null,
+ };
+
+ if ($expectedType !== null) {
+ self::assertSame($expectedType, $osType);
+ } else {
+ self::assertNotNull($osType);
+ }
+ }
+
+ public function test_detect_returns_non_empty_os_description() : void
+ {
+ $detector = new OsDetector();
+ $resource = $detector->detect();
+
+ $osDescription = $resource->get(OsAttribute::DESCRIPTION->value);
+
+ self::assertIsString($osDescription);
+ self::assertNotEmpty($osDescription);
+ }
+
+ public function test_detect_returns_non_empty_os_name() : void
+ {
+ $detector = new OsDetector();
+ $resource = $detector->detect();
+
+ $osName = $resource->get(OsAttribute::NAME->value);
+
+ self::assertIsString($osName);
+ self::assertNotEmpty($osName);
+ }
+
+ public function test_detect_returns_non_empty_os_version() : void
+ {
+ $detector = new OsDetector();
+ $resource = $detector->detect();
+
+ $osVersion = $resource->get(OsAttribute::VERSION->value);
+
+ self::assertIsString($osVersion);
+ self::assertNotEmpty($osVersion);
+ }
+
+ public function test_detect_returns_os_attributes() : void
+ {
+ $detector = new OsDetector();
+ $resource = $detector->detect();
+
+ self::assertTrue($resource->has(OsAttribute::TYPE->value));
+ self::assertTrue($resource->has(OsAttribute::NAME->value));
+ self::assertTrue($resource->has(OsAttribute::VERSION->value));
+ self::assertTrue($resource->has(OsAttribute::DESCRIPTION->value));
+ }
+
+ public function test_detected_resource_is_not_empty() : void
+ {
+ $detector = new OsDetector();
+ $resource = $detector->detect();
+
+ self::assertFalse($resource->isEmpty());
+ self::assertGreaterThanOrEqual(4, $resource->count());
+ }
+}
diff --git a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Resource/Detector/ProcessDetectorTest.php b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Resource/Detector/ProcessDetectorTest.php
new file mode 100644
index 0000000000..10a386f909
--- /dev/null
+++ b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Resource/Detector/ProcessDetectorTest.php
@@ -0,0 +1,106 @@
+detect();
+
+ self::assertTrue($resource->has(ProcessAttribute::COMMAND_ARGS->value));
+
+ $commandArgs = $resource->get(ProcessAttribute::COMMAND_ARGS->value);
+
+ self::assertIsArray($commandArgs);
+ self::assertSame($argv, $commandArgs);
+ }
+
+ public function test_detect_returns_executable_name() : void
+ {
+ $detector = new ProcessDetector();
+ $resource = $detector->detect();
+
+ self::assertTrue($resource->has(ProcessAttribute::EXECUTABLE_NAME->value));
+ self::assertSame(\basename(PHP_BINARY), $resource->get(ProcessAttribute::EXECUTABLE_NAME->value));
+ }
+
+ public function test_detect_returns_executable_path() : void
+ {
+ $detector = new ProcessDetector();
+ $resource = $detector->detect();
+
+ self::assertTrue($resource->has(ProcessAttribute::EXECUTABLE_PATH->value));
+ self::assertSame(PHP_BINARY, $resource->get(ProcessAttribute::EXECUTABLE_PATH->value));
+ }
+
+ public function test_detect_returns_process_owner_on_posix_systems() : void
+ {
+ if (!\function_exists('posix_getuid')) {
+ self::markTestSkipped('POSIX functions not available');
+ }
+
+ $detector = new ProcessDetector();
+ $resource = $detector->detect();
+
+ self::assertTrue($resource->has(ProcessAttribute::OWNER->value));
+
+ $owner = $resource->get(ProcessAttribute::OWNER->value);
+
+ self::assertIsString($owner);
+ self::assertNotEmpty($owner);
+ }
+
+ public function test_detect_returns_process_pid() : void
+ {
+ $detector = new ProcessDetector();
+ $resource = $detector->detect();
+
+ self::assertTrue($resource->has(ProcessAttribute::PID->value));
+
+ $pid = $resource->get(ProcessAttribute::PID->value);
+
+ self::assertIsInt($pid);
+ self::assertSame(\getmypid(), $pid);
+ }
+
+ public function test_detect_returns_runtime_name() : void
+ {
+ $detector = new ProcessDetector();
+ $resource = $detector->detect();
+
+ self::assertTrue($resource->has(ProcessAttribute::RUNTIME_NAME->value));
+ self::assertSame('PHP', $resource->get(ProcessAttribute::RUNTIME_NAME->value));
+ }
+
+ public function test_detect_returns_runtime_version() : void
+ {
+ $detector = new ProcessDetector();
+ $resource = $detector->detect();
+
+ self::assertTrue($resource->has(ProcessAttribute::RUNTIME_VERSION->value));
+ self::assertSame(PHP_VERSION, $resource->get(ProcessAttribute::RUNTIME_VERSION->value));
+ }
+
+ public function test_detected_resource_has_minimum_required_attributes() : void
+ {
+ $detector = new ProcessDetector();
+ $resource = $detector->detect();
+
+ self::assertFalse($resource->isEmpty());
+ self::assertGreaterThanOrEqual(5, $resource->count());
+ }
+}
diff --git a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Tracer/MemoryTracerProviderTest.php b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Tracer/MemoryTracerProviderTest.php
index 2dac77d36e..79d39b4f82 100644
--- a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Tracer/MemoryTracerProviderTest.php
+++ b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Tracer/MemoryTracerProviderTest.php
@@ -4,7 +4,7 @@
namespace Flow\Telemetry\Tests\Unit\Tracer;
-use Flow\Telemetry\Context\{Context, MemoryContextStorage};
+use Flow\Telemetry\Context\{Context, MemoryContextStorage, TraceId};
use Flow\Telemetry\Provider\Memory\MemorySpanProcessor;
use Flow\Telemetry\Provider\Void\VoidSpanExporter;
use Flow\Telemetry\Resource;
@@ -23,7 +23,7 @@ protected function setUp() : void
public function test_context_storage_applies_to_new_tracers() : void
{
- $ctx = Context::create();
+ $ctx = Context::withTraceId(TraceId::generate());
$storage = new MemoryContextStorage($ctx);
$provider = new TracerProvider($this->createProcessor(), ClockMother::frozen(), $storage);
diff --git a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Tracer/SpanContextTest.php b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Tracer/SpanContextTest.php
index 853aaacd03..e50f3c4c27 100644
--- a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Tracer/SpanContextTest.php
+++ b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Tracer/SpanContextTest.php
@@ -206,6 +206,15 @@ public function test_from_array_restores_trace_flags_and_trace_state() : void
self::assertSame('data', $context->traceState->get('vendor'));
}
+ public function test_get_invalid_returns_invalid_context() : void
+ {
+ $context = SpanContext::getInvalid();
+
+ self::assertFalse($context->traceId->isValid());
+ self::assertFalse($context->spanId->isValid());
+ self::assertFalse($context->isValid());
+ }
+
public function test_is_root_returns_false_when_parent_exists() : void
{
$context = SpanContext::create(
@@ -227,6 +236,33 @@ public function test_is_root_returns_true_when_no_parent() : void
self::assertTrue($context->isRoot());
}
+ public function test_is_valid_returns_false_for_invalid_context() : void
+ {
+ $context = SpanContext::getInvalid();
+
+ self::assertFalse($context->isValid());
+ }
+
+ public function test_is_valid_returns_false_with_invalid_span_id() : void
+ {
+ $context = SpanContext::create(
+ TraceId::generate(),
+ SpanId::invalid(),
+ );
+
+ self::assertFalse($context->isValid());
+ }
+
+ public function test_is_valid_returns_false_with_invalid_trace_id() : void
+ {
+ $context = SpanContext::create(
+ TraceId::invalid(),
+ SpanId::generate(),
+ );
+
+ self::assertFalse($context->isValid());
+ }
+
public function test_is_valid_returns_true_for_valid_context() : void
{
$context = SpanContext::create(
diff --git a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Tracer/TracerTest.php b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Tracer/TracerTest.php
index 95ff901d49..ce3dc4654e 100644
--- a/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Tracer/TracerTest.php
+++ b/src/lib/telemetry/tests/Flow/Telemetry/Tests/Unit/Tracer/TracerTest.php
@@ -4,7 +4,7 @@
namespace Flow\Telemetry\Tests\Unit\Tracer;
-use Flow\Telemetry\Context\{Context, SpanId};
+use Flow\Telemetry\Context\{Context, SpanId, TraceId};
use Flow\Telemetry\Tests\Mother\TracerMother;
use Flow\Telemetry\Tracer\{SpanKind, SpanProcessor};
use PHPUnit\Framework\TestCase;
@@ -61,7 +61,7 @@ public function test_complete_pops_span_from_stack() : void
public function test_context_returns_tracer_context() : void
{
- $context = Context::create();
+ $context = Context::withTraceId(TraceId::generate());
$tracer = TracerMother::withContext($context);
self::assertSame($context->traceId->toHex(), $tracer->context()->traceId->toHex());
@@ -120,7 +120,7 @@ public function test_span_defaults_to_internal_kind() : void
public function test_span_inherits_context_active_span_as_parent() : void
{
$activeSpan = SpanId::generate();
- $context = Context::create()->withActiveSpan($activeSpan);
+ $context = Context::withTraceId(TraceId::generate())->withActiveSpan($activeSpan);
$span = TracerMother::withContext($context)->span('child');
@@ -135,7 +135,7 @@ public function test_span_is_root_when_no_parent() : void
public function test_span_uses_tracer_trace_id() : void
{
- $context = Context::create();
+ $context = Context::withTraceId(TraceId::generate());
$span = TracerMother::withContext($context)->span('test-span');
self::assertTrue($span->context()->traceId->equals($context->traceId));
diff --git a/tools/box/composer.lock b/tools/box/composer.lock
index 71669fcd25..eaf0068830 100644
--- a/tools/box/composer.lock
+++ b/tools/box/composer.lock
@@ -1083,29 +1083,29 @@
},
{
"name": "doctrine/deprecations",
- "version": "1.1.5",
+ "version": "1.1.6",
"source": {
"type": "git",
"url": "https://github.com/doctrine/deprecations.git",
- "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38"
+ "reference": "d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/deprecations/zipball/459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38",
- "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38",
+ "url": "https://api.github.com/repos/doctrine/deprecations/zipball/d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca",
+ "reference": "d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0"
},
"conflict": {
- "phpunit/phpunit": "<=7.5 || >=13"
+ "phpunit/phpunit": "<=7.5 || >=14"
},
"require-dev": {
- "doctrine/coding-standard": "^9 || ^12 || ^13",
- "phpstan/phpstan": "1.4.10 || 2.1.11",
+ "doctrine/coding-standard": "^9 || ^12 || ^14",
+ "phpstan/phpstan": "1.4.10 || 2.1.30",
"phpstan/phpstan-phpunit": "^1.0 || ^2",
- "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12.4 || ^13.0",
"psr/log": "^1 || ^2 || ^3"
},
"suggest": {
@@ -1125,9 +1125,9 @@
"homepage": "https://www.doctrine-project.org/",
"support": {
"issues": "https://github.com/doctrine/deprecations/issues",
- "source": "https://github.com/doctrine/deprecations/tree/1.1.5"
+ "source": "https://github.com/doctrine/deprecations/tree/1.1.6"
},
- "time": "2025-04-07T20:06:18+00:00"
+ "time": "2026-02-07T07:09:04+00:00"
},
{
"name": "fidry/console",
diff --git a/tools/infection/phpunit.xml b/tools/infection/phpunit.xml
index 63fe5c1d13..61a2f97dc7 100644
--- a/tools/infection/phpunit.xml
+++ b/tools/infection/phpunit.xml
@@ -21,6 +21,7 @@
../../src/bridge/monolog/telemetry/tests/Flow/Bridge/Monolog/Telemetry/Tests/Unit
../../src/bridge/symfony/http-foundation-telemetry/tests/Flow/Bridge/Symfony/HttpFoundationTelemetry/Tests/Unit
../../src/bridge/psr7/telemetry/tests/Flow/Bridge/Psr7/Telemetry/Tests/Unit
+ ../../src/bridge/psr18/telemetry/tests/Flow/Bridge/Psr18/Telemetry/Tests/Unit
../../src/bridge/telemetry/otlp/tests/Flow/Bridge/Telemetry/OTLP/Tests/Unit
@@ -37,6 +38,7 @@
../../src/bridge/monolog/telemetry/src
../../src/bridge/symfony/http-foundation-telemetry/src
../../src/bridge/psr7/telemetry/src
+ ../../src/bridge/psr18/telemetry/src
../../src/bridge/telemetry/otlp/src
@@ -52,6 +54,7 @@
../../src/bridge/monolog/telemetry/src/Flow/Bridge/Monolog/Telemetry/DSL
../../src/bridge/symfony/http-foundation-telemetry/src/Flow/Bridge/Symfony/HttpFoundationTelemetry/DSL
../../src/bridge/psr7/telemetry/src/Flow/Bridge/Psr7/Telemetry/DSL
+ ../../src/bridge/psr18/telemetry/src/Flow/Bridge/Psr18/Telemetry/DSL
../../src/bridge/telemetry/otlp/src/Flow/Bridge/Telemetry/OTLP/DSL
diff --git a/tools/phpstan/composer.lock b/tools/phpstan/composer.lock
index e4aeecd8df..8e00396e47 100644
--- a/tools/phpstan/composer.lock
+++ b/tools/phpstan/composer.lock
@@ -62,16 +62,16 @@
},
{
"name": "spaze/phpstan-disallowed-calls",
- "version": "v4.7.1",
+ "version": "v4.8.0",
"source": {
"type": "git",
"url": "https://github.com/spaze/phpstan-disallowed-calls.git",
- "reference": "4be6274bc23a2c44817690feda3ae4189496c246"
+ "reference": "ebbf057755ea0acfbf227d113cac5e3f80aab83a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/spaze/phpstan-disallowed-calls/zipball/4be6274bc23a2c44817690feda3ae4189496c246",
- "reference": "4be6274bc23a2c44817690feda3ae4189496c246",
+ "url": "https://api.github.com/repos/spaze/phpstan-disallowed-calls/zipball/ebbf057755ea0acfbf227d113cac5e3f80aab83a",
+ "reference": "ebbf057755ea0acfbf227d113cac5e3f80aab83a",
"shasum": ""
},
"require": {
@@ -83,7 +83,7 @@
"php-parallel-lint/php-console-highlighter": "^1.0",
"php-parallel-lint/php-parallel-lint": "^1.2",
"phpstan/phpstan-deprecation-rules": "^1.2 || ^2.0",
- "phpunit/phpunit": "^8.5.14 || ^10.1 || ^11.0 || ^12.0",
+ "phpunit/phpunit": "^8.5.14 || ^10.1 || ^11.0 || ^12.0 || ^13.0",
"shipmonk/dead-code-detector": "^0.14.1",
"spaze/coding-standard": "^1.8"
},
@@ -117,7 +117,7 @@
],
"support": {
"issues": "https://github.com/spaze/phpstan-disallowed-calls/issues",
- "source": "https://github.com/spaze/phpstan-disallowed-calls/tree/v4.7.1"
+ "source": "https://github.com/spaze/phpstan-disallowed-calls/tree/v4.8.0"
},
"funding": [
{
@@ -125,7 +125,7 @@
"type": "github"
}
],
- "time": "2026-01-31T03:50:05+00:00"
+ "time": "2026-02-07T17:05:49+00:00"
}
],
"aliases": [],
diff --git a/tools/phpunit/composer.lock b/tools/phpunit/composer.lock
index d38d153743..c7026c892b 100644
--- a/tools/phpunit/composer.lock
+++ b/tools/phpunit/composer.lock
@@ -592,16 +592,16 @@
},
{
"name": "phpunit/phpunit",
- "version": "11.5.50",
+ "version": "11.5.51",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "fdfc727f0fcacfeb8fcb30c7e5da173125b58be3"
+ "reference": "ad14159f92910b0f0e3928c13e9b2077529de091"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fdfc727f0fcacfeb8fcb30c7e5da173125b58be3",
- "reference": "fdfc727f0fcacfeb8fcb30c7e5da173125b58be3",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ad14159f92910b0f0e3928c13e9b2077529de091",
+ "reference": "ad14159f92910b0f0e3928c13e9b2077529de091",
"shasum": ""
},
"require": {
@@ -616,7 +616,7 @@
"phar-io/version": "^3.2.1",
"php": ">=8.2",
"phpunit/php-code-coverage": "^11.0.12",
- "phpunit/php-file-iterator": "^5.1.0",
+ "phpunit/php-file-iterator": "^5.1.1",
"phpunit/php-invoker": "^5.0.1",
"phpunit/php-text-template": "^4.0.1",
"phpunit/php-timer": "^7.0.1",
@@ -628,6 +628,7 @@
"sebastian/exporter": "^6.3.2",
"sebastian/global-state": "^7.0.2",
"sebastian/object-enumerator": "^6.0.1",
+ "sebastian/recursion-context": "^6.0.3",
"sebastian/type": "^5.1.3",
"sebastian/version": "^5.0.2",
"staabm/side-effects-detector": "^1.0.5"
@@ -673,7 +674,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.50"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.51"
},
"funding": [
{
@@ -697,7 +698,7 @@
"type": "tidelift"
}
],
- "time": "2026-01-27T05:59:18+00:00"
+ "time": "2026-02-05T07:59:30+00:00"
},
{
"name": "sebastian/cli-parser",
diff --git a/tools/rector/composer.lock b/tools/rector/composer.lock
index e5b40e09b9..75930daf24 100644
--- a/tools/rector/composer.lock
+++ b/tools/rector/composer.lock
@@ -62,21 +62,21 @@
},
{
"name": "rector/rector",
- "version": "2.3.5",
+ "version": "2.3.6",
"source": {
"type": "git",
"url": "https://github.com/rectorphp/rector.git",
- "reference": "9442f4037de6a5347ae157fe8e6c7cda9d909070"
+ "reference": "ca9ebb81d280cd362ea39474dabd42679e32ca6b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/rectorphp/rector/zipball/9442f4037de6a5347ae157fe8e6c7cda9d909070",
- "reference": "9442f4037de6a5347ae157fe8e6c7cda9d909070",
+ "url": "https://api.github.com/repos/rectorphp/rector/zipball/ca9ebb81d280cd362ea39474dabd42679e32ca6b",
+ "reference": "ca9ebb81d280cd362ea39474dabd42679e32ca6b",
"shasum": ""
},
"require": {
"php": "^7.4|^8.0",
- "phpstan/phpstan": "^2.1.36"
+ "phpstan/phpstan": "^2.1.38"
},
"conflict": {
"rector/rector-doctrine": "*",
@@ -110,7 +110,7 @@
],
"support": {
"issues": "https://github.com/rectorphp/rector/issues",
- "source": "https://github.com/rectorphp/rector/tree/2.3.5"
+ "source": "https://github.com/rectorphp/rector/tree/2.3.6"
},
"funding": [
{
@@ -118,7 +118,7 @@
"type": "github"
}
],
- "time": "2026-01-28T15:22:48+00:00"
+ "time": "2026-02-06T14:25:06+00:00"
}
],
"aliases": [],
diff --git a/web/landing/assets/codemirror/completions/dsl.js b/web/landing/assets/codemirror/completions/dsl.js
index bec45bfc2e..43d4807ddb 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: 674
+ * Total functions: 684
*
* This completer provides autocompletion for all Flow PHP DSL functions:
* - Extractors (flow-extractors)
@@ -5387,6 +5387,24 @@ const dslFunctions = [
},
apply: snippet("\\Flow\\Telemetry\\DSL\\logger_provider(" + "$" + "{" + "1:processor" + "}" + ", " + "$" + "{" + "2:clock" + "}" + ", " + "$" + "{" + "3:contextStorage" + "}" + ")"),
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: "lower",
type: "function",
@@ -7406,6 +7424,36 @@ const dslFunctions = [
},
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: "random_string",
type: "function",
@@ -7888,10 +7936,10 @@ const dslFunctions = [
const div = document.createElement("div")
div.innerHTML = `
- resource ( array $attributes = [] ) : Resource
+ resource ( Attributes|array $attributes = [] ) : Resource
- Create a Resource. @param array|bool|float|int|string> $attributes Resource attributes
+ Create a Resource. @param array|bool|float|int|string>|Attributes $attributes Resource attributes
`
return div
@@ -8519,6 +8567,42 @@ const dslFunctions = [
},
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",
@@ -8593,15 +8677,15 @@ const dslFunctions = [
const div = document.createElement("div")
div.innerHTML = `
- span_event ( string $name , array $attributes = [] ) : GenericEvent
+ span_event ( string $name , DateTimeImmutable $timestamp , Attributes|array $attributes = [] ) : GenericEvent
- Create a SpanEvent (GenericEvent) with the current timestamp. @param string $name Event name @param array|bool|float|int|string> $attributes Event attributes
+ 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:attributes" + "}" + ")"),
+ apply: snippet("\\Flow\\Telemetry\\DSL\\span_event(" + "$" + "{" + "1:name" + "}" + ", " + "$" + "{" + "2:timestamp" + "}" + ", " + "$" + "{" + "3:attributes" + "}" + ")"),
boost: 10
}, {
label: "span_id",
@@ -8629,10 +8713,10 @@ const dslFunctions = [
const div = document.createElement("div")
div.innerHTML = `
- span_link ( SpanContext $context , array $attributes = [] ) : SpanLink
+ 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 Link attributes
+ Create a SpanLink. @param SpanContext $context The linked span context @param array|bool|float|int|string>|Attributes $attributes Link attributes
`
return div
@@ -9389,6 +9473,36 @@ const dslFunctions = [
},
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",
@@ -9461,6 +9575,39 @@ 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",
+ 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 $collect_metrics = false ) : TelemetryOptions
+
+ `
+ return div
+ },
+ apply: snippet("\\Flow\\ETL\\DSL\\telemetry_options(" + "$" + "{" + "1:trace_loading" + "}" + ", " + "$" + "{" + "2:trace_transformations" + "}" + ", " + "$" + "{" + "3:collect_metrics" + "}" + ")"),
+ boost: 10
}, {
label: "text_search_match",
type: "function",
@@ -11126,6 +11273,24 @@ const dslFunctions = [
},
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",
diff --git a/web/landing/assets/controllers/syntax_highlight_controller.js b/web/landing/assets/controllers/syntax_highlight_controller.js
index 097a333851..c600d4ed15 100644
--- a/web/landing/assets/controllers/syntax_highlight_controller.js
+++ b/web/landing/assets/controllers/syntax_highlight_controller.js
@@ -8,6 +8,7 @@ import 'prismjs/components/prism-php.min.js';
import 'prismjs/components/prism-bash.min.js';
import 'prismjs/components/prism-json.min.js';
import 'prismjs/components/prism-csv.min.js';
+import 'prismjs/components/prism-yaml.min.js';
export default class extends Controller
{
diff --git a/web/landing/composer.json b/web/landing/composer.json
index afc733aac0..3d58069692 100644
--- a/web/landing/composer.json
+++ b/web/landing/composer.json
@@ -2,10 +2,67 @@
"name": "flow-php/web",
"description": "Flow PHP ETL - Web",
"type": "project",
+ "minimum-stability": "dev",
+ "prefer-stable": true,
+ "repositories": [
+ {
+ "type": "path",
+ "url": "../../src/core/etl",
+ "options": { "symlink": true }
+ },
+ {
+ "type": "path",
+ "url": "../../src/adapter/etl-adapter-http",
+ "options": { "symlink": true }
+ },
+ {
+ "type": "path",
+ "url": "../../src/lib/telemetry",
+ "options": { "symlink": true }
+ },
+ {
+ "type": "path",
+ "url": "../../src/lib/types",
+ "options": { "symlink": true }
+ },
+ {
+ "type": "path",
+ "url": "../../src/lib/array-dot",
+ "options": { "symlink": true }
+ },
+ {
+ "type": "path",
+ "url": "../../src/lib/filesystem",
+ "options": { "symlink": true }
+ },
+ {
+ "type": "path",
+ "url": "../../src/bridge/symfony/telemetry-bundle",
+ "options": { "symlink": true }
+ },
+ {
+ "type": "path",
+ "url": "../../src/bridge/symfony/http-foundation-telemetry",
+ "options": { "symlink": true }
+ },
+ {
+ "type": "path",
+ "url": "../../src/bridge/telemetry/otlp",
+ "options": { "symlink": true }
+ },
+ {
+ "type": "path",
+ "url": "../../src/bridge/monolog/telemetry",
+ "options": { "symlink": true }
+ }
+ ],
"require": {
"php": "8.3.*",
- "flow-php/etl": ">=0.23.0",
- "flow-php/etl-adapter-http": ">=0.23.0",
+ "flow-php/etl": "1.x-dev",
+ "flow-php/etl-adapter-http": "1.x-dev",
+ "flow-php/symfony-telemetry-bundle": "1.x-dev",
+ "flow-php/telemetry-otlp-bridge": "*",
+ "flow-php/monolog-telemetry-bridge": "*",
"nyholm/psr7": "^1.8",
"php-http/curl-client": "^2.3",
"psr/http-client": "^1.0",
diff --git a/web/landing/composer.lock b/web/landing/composer.lock
index ef3184284a..a255dadc46 100644
--- a/web/landing/composer.lock
+++ b/web/landing/composer.lock
@@ -4,20 +4,20 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "eba577c63444051a6ecdac007f116e5f",
+ "content-hash": "c4f6c4d36749461dfdcbe46e566327d3",
"packages": [
{
"name": "brick/math",
- "version": "0.14.4",
+ "version": "0.14.6",
"source": {
"type": "git",
"url": "https://github.com/brick/math.git",
- "reference": "a8b53e6cc4d3a336543f042a4dfa0e3f2f2356a4"
+ "reference": "32498d5e1897e7642c0b961ace2df6d7dc9a3bc3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/brick/math/zipball/a8b53e6cc4d3a336543f042a4dfa0e3f2f2356a4",
- "reference": "a8b53e6cc4d3a336543f042a4dfa0e3f2f2356a4",
+ "url": "https://api.github.com/repos/brick/math/zipball/32498d5e1897e7642c0b961ace2df6d7dc9a3bc3",
+ "reference": "32498d5e1897e7642c0b961ace2df6d7dc9a3bc3",
"shasum": ""
},
"require": {
@@ -56,7 +56,7 @@
],
"support": {
"issues": "https://github.com/brick/math/issues",
- "source": "https://github.com/brick/math/tree/0.14.4"
+ "source": "https://github.com/brick/math/tree/0.14.6"
},
"funding": [
{
@@ -64,7 +64,7 @@
"type": "github"
}
],
- "time": "2026-02-02T16:57:31+00:00"
+ "time": "2026-02-05T07:59:58+00:00"
},
{
"name": "clue/stream-filter",
@@ -353,33 +353,31 @@
},
{
"name": "flow-php/array-dot",
- "version": "0.31.0",
- "source": {
- "type": "git",
- "url": "https://github.com/flow-php/array-dot.git",
- "reference": "7c0b7f16b12b6e5239ecf487908bfe78673d1f22"
- },
+ "version": "1.x-dev",
"dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/flow-php/array-dot/zipball/7c0b7f16b12b6e5239ecf487908bfe78673d1f22",
- "reference": "7c0b7f16b12b6e5239ecf487908bfe78673d1f22",
- "shasum": ""
+ "type": "path",
+ "url": "../../src/lib/array-dot",
+ "reference": "043d107b6cc0e919d6100a84eb513d4b6b81bf55"
},
"require": {
"php": "~8.3.0 || ~8.4.0 || ~8.5.0"
},
"type": "library",
"autoload": {
- "files": [
- "src/Flow/ArrayDot/array_dot.php"
- ],
"psr-4": {
"Flow\\": [
"src/Flow"
]
+ },
+ "files": [
+ "src/Flow/ArrayDot/array_dot.php"
+ ]
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "Flow\\": "tests/Flow"
}
},
- "notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
@@ -393,38 +391,22 @@
"load",
"transform"
],
- "support": {
- "issues": "https://github.com/flow-php/array-dot/issues",
- "source": "https://github.com/flow-php/array-dot/tree/0.31.0"
- },
- "funding": [
- {
- "url": "https://flow-php.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/norberttech",
- "type": "github"
- }
- ],
- "time": "2026-01-19T09:55:20+00:00"
+ "transport-options": {
+ "symlink": true,
+ "relative": true
+ }
},
{
"name": "flow-php/etl",
- "version": "0.31.0",
- "source": {
- "type": "git",
- "url": "https://github.com/flow-php/etl.git",
- "reference": "34a6e48efe93801f2ac29fefcb2ef2f474f928c9"
- },
+ "version": "1.x-dev",
"dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/flow-php/etl/zipball/34a6e48efe93801f2ac29fefcb2ef2f474f928c9",
- "reference": "34a6e48efe93801f2ac29fefcb2ef2f474f928c9",
- "shasum": ""
+ "type": "path",
+ "url": "../../src/core/etl",
+ "reference": "101fcb6bc740b481daec219ceacf87d0a66af0a4"
},
"require": {
"brick/math": "^0.11 || ^0.12 || ^0.13 || ^0.14",
+ "composer-runtime-api": "^2.0",
"ext-json": "*",
"flow-php/array-dot": "self.version",
"flow-php/filesystem": "self.version",
@@ -454,7 +436,11 @@
]
}
},
- "notification-url": "https://packagist.org/downloads/",
+ "autoload-dev": {
+ "psr-4": {
+ "Flow\\": "tests/Flow"
+ }
+ },
"license": [
"MIT"
],
@@ -465,35 +451,18 @@
"load",
"transform"
],
- "support": {
- "issues": "https://github.com/flow-php/etl/issues",
- "source": "https://github.com/flow-php/etl/tree/0.31.0"
- },
- "funding": [
- {
- "url": "https://flow-php.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/norberttech",
- "type": "github"
- }
- ],
- "time": "2026-01-19T12:58:02+00:00"
+ "transport-options": {
+ "symlink": true,
+ "relative": true
+ }
},
{
"name": "flow-php/etl-adapter-http",
- "version": "0.31.0",
- "source": {
- "type": "git",
- "url": "https://github.com/flow-php/etl-adapter-http.git",
- "reference": "2353aae484d9f4eb07efae8f81c3acbfa006bdea"
- },
+ "version": "1.x-dev",
"dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/flow-php/etl-adapter-http/zipball/2353aae484d9f4eb07efae8f81c3acbfa006bdea",
- "reference": "2353aae484d9f4eb07efae8f81c3acbfa006bdea",
- "shasum": ""
+ "type": "path",
+ "url": "../../src/adapter/etl-adapter-http",
+ "reference": "a653aa0bdc76bccd4fcf54f98ddea12af4b5ecf4"
},
"require": {
"ext-json": "*",
@@ -507,16 +476,20 @@
},
"type": "library",
"autoload": {
- "files": [
- "src/Flow/ETL/Adapter/Http/DSL/functions.php"
- ],
"psr-4": {
"Flow\\": [
"src/Flow"
]
+ },
+ "files": [
+ "src/Flow/ETL/Adapter/Http/DSL/functions.php"
+ ]
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "Flow\\": "tests/Flow"
}
},
- "notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
@@ -528,35 +501,18 @@
"load",
"transform"
],
- "support": {
- "issues": "https://github.com/flow-php/etl-adapter-http/issues",
- "source": "https://github.com/flow-php/etl-adapter-http/tree/0.31.0"
- },
- "funding": [
- {
- "url": "https://flow-php.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/norberttech",
- "type": "github"
- }
- ],
- "time": "2025-12-13T19:30:32+00:00"
+ "transport-options": {
+ "symlink": true,
+ "relative": true
+ }
},
{
"name": "flow-php/filesystem",
- "version": "0.31.0",
- "source": {
- "type": "git",
- "url": "https://github.com/flow-php/filesystem.git",
- "reference": "9a92c442feb3ee3e5e266d7c64d331c7edb4654b"
- },
+ "version": "1.x-dev",
"dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/flow-php/filesystem/zipball/9a92c442feb3ee3e5e266d7c64d331c7edb4654b",
- "reference": "9a92c442feb3ee3e5e266d7c64d331c7edb4654b",
- "shasum": ""
+ "type": "path",
+ "url": "../../src/lib/filesystem",
+ "reference": "41a8aae737a5591e07aefde6b83097ec04e8e7d4"
},
"require": {
"flow-php/types": "self.version",
@@ -565,16 +521,20 @@
},
"type": "library",
"autoload": {
- "files": [
- "src/Flow/Filesystem/DSL/functions.php"
- ],
"psr-4": {
"Flow\\": [
"src/Flow"
]
+ },
+ "files": [
+ "src/Flow/Filesystem/DSL/functions.php"
+ ]
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "Flow\\": "tests/Flow"
}
},
- "notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
@@ -590,35 +550,174 @@
"remote",
"transform"
],
- "support": {
- "issues": "https://github.com/flow-php/filesystem/issues",
- "source": "https://github.com/flow-php/filesystem/tree/0.31.0"
+ "transport-options": {
+ "symlink": true,
+ "relative": true
+ }
+ },
+ {
+ "name": "flow-php/monolog-telemetry-bridge",
+ "version": "1.x-dev",
+ "dist": {
+ "type": "path",
+ "url": "../../src/bridge/monolog/telemetry",
+ "reference": "86126b365e7c90c52d5447928ef1765c622f504e"
},
- "funding": [
- {
- "url": "https://flow-php.com/sponsor",
- "type": "custom"
+ "require": {
+ "flow-php/etl": "self.version",
+ "flow-php/telemetry": "self.version",
+ "monolog/monolog": "^3.0",
+ "php": "~8.3.0 || ~8.4.0 || ~8.5.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Flow\\": [
+ "src/Flow"
+ ]
},
- {
- "url": "https://github.com/norberttech",
- "type": "github"
+ "files": [
+ "src/Flow/Bridge/Monolog/Telemetry/DSL/functions.php"
+ ]
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "Flow\\": "tests/Flow"
}
+ },
+ "license": [
+ "MIT"
],
- "time": "2025-12-12T10:55:46+00:00"
+ "description": "Flow PHP - Monolog Telemetry Bridge",
+ "homepage": "https://github.com/flow-php/flow",
+ "keywords": [
+ "bridge",
+ "flow-php",
+ "monolog",
+ "telemetry"
+ ],
+ "transport-options": {
+ "symlink": true,
+ "relative": true
+ }
},
{
- "name": "flow-php/telemetry",
- "version": "0.31.0",
- "source": {
- "type": "git",
- "url": "https://github.com/flow-php/telemetry.git",
- "reference": "32ff43a631896ba6295e674e300541eb65edc9ce"
+ "name": "flow-php/symfony-http-foundation-telemetry-bridge",
+ "version": "1.x-dev",
+ "dist": {
+ "type": "path",
+ "url": "../../src/bridge/symfony/http-foundation-telemetry",
+ "reference": "1f5726349ffadda8d4c1d917cb3d21f5e1de4fd3"
+ },
+ "require": {
+ "flow-php/telemetry": "self.version",
+ "php": "~8.3.0 || ~8.4.0 || ~8.5.0",
+ "symfony/http-foundation": "^6.4 || ^7.3 || ^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Flow\\": [
+ "src/Flow"
+ ]
+ },
+ "files": [
+ "src/Flow/Bridge/Symfony/HttpFoundationTelemetry/DSL/functions.php"
+ ]
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "Flow\\": "tests/Flow"
+ }
},
+ "license": [
+ "MIT"
+ ],
+ "description": "Flow PHP - Symfony Http Foundation Telemetry Bridge",
+ "homepage": "https://github.com/flow-php/flow",
+ "keywords": [
+ "bridge",
+ "flow-php",
+ "http-foundation",
+ "symfony",
+ "telemetry"
+ ],
+ "transport-options": {
+ "symlink": true,
+ "relative": true
+ }
+ },
+ {
+ "name": "flow-php/symfony-telemetry-bundle",
+ "version": "1.x-dev",
"dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/flow-php/telemetry/zipball/32ff43a631896ba6295e674e300541eb65edc9ce",
- "reference": "32ff43a631896ba6295e674e300541eb65edc9ce",
- "shasum": ""
+ "type": "path",
+ "url": "../../src/bridge/symfony/telemetry-bundle",
+ "reference": "d592dbe7011b8a3521cf0b1ccb6236ca9c4e553e"
+ },
+ "require": {
+ "flow-php/symfony-http-foundation-telemetry-bridge": "self.version",
+ "flow-php/telemetry": "self.version",
+ "php": "~8.3.0 || ~8.4.0 || ~8.5.0",
+ "psr/clock": "^1.0",
+ "symfony/config": "^6.4 || ^7.3 || ^8.0",
+ "symfony/console": "^6.4 || ^7.3 || ^8.0",
+ "symfony/dependency-injection": "^6.4 || ^7.3 || ^8.0",
+ "symfony/http-kernel": "^6.4 || ^7.3 || ^8.0"
+ },
+ "require-dev": {
+ "flow-php/telemetry-otlp-bridge": "self.version",
+ "symfony/framework-bundle": "^6.4 || ^7.3 || ^8.0",
+ "symfony/messenger": "^6.4 || ^7.3 || ^8.0",
+ "symfony/routing": "^6.4 || ^7.3 || ^8.0"
+ },
+ "suggest": {
+ "flow-php/telemetry-otlp-bridge": "Required for OTLP exporter support",
+ "symfony/messenger": "Required for Messenger tracing middleware"
+ },
+ "type": "symfony-bundle",
+ "autoload": {
+ "psr-4": {
+ "Flow\\": [
+ "src/Flow"
+ ]
+ },
+ "files": [
+ "src/Flow/Bridge/Symfony/TelemetryBundle/DSL/functions.php"
+ ]
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "Flow\\": "tests/Flow"
+ }
+ },
+ "license": [
+ "MIT"
+ ],
+ "description": "Flow PHP - Symfony Telemetry Bundle",
+ "homepage": "https://github.com/flow-php/flow",
+ "keywords": [
+ "bundle",
+ "flow-php",
+ "logging",
+ "metrics",
+ "opentelemetry",
+ "symfony",
+ "telemetry",
+ "tracing"
+ ],
+ "transport-options": {
+ "symlink": true,
+ "relative": true
+ }
+ },
+ {
+ "name": "flow-php/telemetry",
+ "version": "1.x-dev",
+ "dist": {
+ "type": "path",
+ "url": "../../src/lib/telemetry",
+ "reference": "17ec7b5760d93ff7437551d74c73fc06607b5618"
},
"require": {
"php": "~8.3.0 || ~8.4.0 || ~8.5.0",
@@ -626,71 +725,124 @@
},
"type": "library",
"autoload": {
- "files": [
- "src/Flow/Telemetry/DSL/functions.php"
- ],
"psr-4": {
"Flow\\": [
"src/Flow"
]
+ },
+ "files": [
+ "src/Flow/Telemetry/DSL/functions.php"
+ ]
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "Flow\\": "tests/Flow"
}
},
- "notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "Flow PHP - Telemetry library for metrics and tracing",
"keywords": [
- "Metrics",
+ "metrics",
"php",
"telemetry",
"tracing"
],
- "support": {
- "issues": "https://github.com/flow-php/telemetry/issues",
- "source": "https://github.com/flow-php/telemetry/tree/0.31.0"
+ "transport-options": {
+ "symlink": true,
+ "relative": true
+ }
+ },
+ {
+ "name": "flow-php/telemetry-otlp-bridge",
+ "version": "1.x-dev",
+ "dist": {
+ "type": "path",
+ "url": "../../src/bridge/telemetry/otlp",
+ "reference": "27c9acf702f6b246c32a9a838e3d36b1f549e8bb"
},
- "funding": [
- {
- "url": "https://flow-php.com/sponsor",
- "type": "custom"
+ "require": {
+ "flow-php/telemetry": "self.version",
+ "php": "~8.3.0 || ~8.4.0 || ~8.5.0",
+ "psr/http-client": "^1.0",
+ "psr/http-factory": "^1.0"
+ },
+ "require-dev": {
+ "google/protobuf": "^4.0",
+ "grpc/grpc": "^1.74",
+ "nyholm/psr7": "^1.8",
+ "open-telemetry/gen-otlp-protobuf": "^1.8",
+ "symfony/http-client": "^6.4 || ^7.3 || ^8.0"
+ },
+ "suggest": {
+ "ext-grpc": "Required for gRPC transport",
+ "google/protobuf": "Required for gRPC transport with binary protobuf encoding",
+ "open-telemetry/gen-otlp-protobuf": "Generated PHP classes for OTLP protobuf messages (required for gRPC transport)"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Flow\\": [
+ "src/Flow"
+ ]
},
- {
- "url": "https://github.com/norberttech",
- "type": "github"
+ "files": [
+ "src/Flow/Bridge/Telemetry/OTLP/DSL/functions.php"
+ ]
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "Flow\\": "tests/Flow"
}
+ },
+ "license": [
+ "MIT"
],
- "time": "2026-01-16T22:44:33+00:00"
+ "description": "Flow PHP Telemetry - OTLP Exporter Bridge",
+ "homepage": "https://github.com/flow-php/flow",
+ "keywords": [
+ "flow-php",
+ "logging",
+ "metrics",
+ "observability",
+ "opentelemetry",
+ "otlp",
+ "telemetry",
+ "tracing"
+ ],
+ "transport-options": {
+ "symlink": true,
+ "relative": true
+ }
},
{
"name": "flow-php/types",
- "version": "0.31.0",
- "source": {
- "type": "git",
- "url": "https://github.com/flow-php/types.git",
- "reference": "4af1b09a0a379ce33e251fe56c8a90fe39c67522"
- },
+ "version": "1.x-dev",
"dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/flow-php/types/zipball/4af1b09a0a379ce33e251fe56c8a90fe39c67522",
- "reference": "4af1b09a0a379ce33e251fe56c8a90fe39c67522",
- "shasum": ""
+ "type": "path",
+ "url": "../../src/lib/types",
+ "reference": "08d95eb6cdc6fa8e1af02a3457a34ccbcac8dbb3"
},
"require": {
"php": "~8.3.0 || ~8.4.0 || ~8.5.0"
},
"type": "library",
"autoload": {
- "files": [
- "src/Flow/Types/DSL/functions.php"
- ],
"psr-4": {
"Flow\\": [
"src/Flow"
]
+ },
+ "files": [
+ "src/Flow/Types/DSL/functions.php"
+ ]
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "Flow\\": "tests/Flow"
}
},
- "notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
@@ -699,21 +851,10 @@
"php",
"types"
],
- "support": {
- "issues": "https://github.com/flow-php/types/issues",
- "source": "https://github.com/flow-php/types/tree/0.31.0"
- },
- "funding": [
- {
- "url": "https://flow-php.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/norberttech",
- "type": "github"
- }
- ],
- "time": "2025-12-20T17:43:26+00:00"
+ "transport-options": {
+ "symlink": true,
+ "relative": true
+ }
},
{
"name": "league/commonmark",
@@ -1074,16 +1215,16 @@
},
{
"name": "nette/utils",
- "version": "v4.1.1",
+ "version": "v4.1.2",
"source": {
"type": "git",
"url": "https://github.com/nette/utils.git",
- "reference": "c99059c0315591f1a0db7ad6002000288ab8dc72"
+ "reference": "f76b5dc3d6c6d3043c8d937df2698515b99cbaf5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nette/utils/zipball/c99059c0315591f1a0db7ad6002000288ab8dc72",
- "reference": "c99059c0315591f1a0db7ad6002000288ab8dc72",
+ "url": "https://api.github.com/repos/nette/utils/zipball/f76b5dc3d6c6d3043c8d937df2698515b99cbaf5",
+ "reference": "f76b5dc3d6c6d3043c8d937df2698515b99cbaf5",
"shasum": ""
},
"require": {
@@ -1096,7 +1237,7 @@
"require-dev": {
"jetbrains/phpstorm-attributes": "^1.2",
"nette/tester": "^2.5",
- "phpstan/phpstan-nette": "^2.0@stable",
+ "phpstan/phpstan": "^2.0@stable",
"tracy/tracy": "^2.9"
},
"suggest": {
@@ -1157,9 +1298,9 @@
],
"support": {
"issues": "https://github.com/nette/utils/issues",
- "source": "https://github.com/nette/utils/tree/v4.1.1"
+ "source": "https://github.com/nette/utils/tree/v4.1.2"
},
- "time": "2025-12-22T12:14:32+00:00"
+ "time": "2026-02-03T17:21:09+00:00"
},
{
"name": "nyholm/psr7",
@@ -7045,11 +7186,14 @@
}
],
"aliases": [],
- "minimum-stability": "stable",
+ "minimum-stability": "dev",
"stability-flags": {
+ "flow-php/etl": 20,
+ "flow-php/etl-adapter-http": 20,
+ "flow-php/symfony-telemetry-bundle": 20,
"norberttech/static-content-generator-bundle": 20
},
- "prefer-stable": false,
+ "prefer-stable": true,
"prefer-lowest": false,
"platform": {
"php": "8.3.*"
diff --git a/web/landing/config/bundles.php b/web/landing/config/bundles.php
index 860aa432fb..b81b94cdf2 100644
--- a/web/landing/config/bundles.php
+++ b/web/landing/config/bundles.php
@@ -10,4 +10,5 @@
Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true],
\Twig\Extra\TwigExtraBundle\TwigExtraBundle::class => ['all' => true],
\Presta\SitemapBundle\PrestaSitemapBundle::class => ['all' => true],
+ Flow\Bridge\Symfony\TelemetryBundle\FlowTelemetryBundle::class => ['all' => true],
];
diff --git a/web/landing/config/packages/flow_telemetry.yaml b/web/landing/config/packages/flow_telemetry.yaml
new file mode 100644
index 0000000000..2c4cdbd18e
--- /dev/null
+++ b/web/landing/config/packages/flow_telemetry.yaml
@@ -0,0 +1,70 @@
+flow_telemetry:
+ resource:
+ custom:
+ service.name: flow-php.com
+ instrumentation:
+ http_kernel:
+ enabled: true
+ context_propagation: true
+ exclude_paths:
+ - path: '#\/_wdt.*#'
+ - path: '#^\/_profiler.*#'
+ console:
+ enabled: true
+ exclude_commands:
+ - 'cache:clear'
+ - 'debug:router'
+ twig:
+ enabled: true
+ trace_templates: true
+ trace_blocks: true
+ trace_macros: true
+ exclude_templates:
+ - '/\@WebProfiler*/'
+ http_client:
+ enabled: true
+ cache:
+ enabled: true
+
+ tracer_provider:
+ sampler:
+ type: always_on
+ processor:
+ type: batching
+ batch_size: 512
+ exporter:
+ type: otlp
+ otlp:
+ transport:
+ type: curl
+ endpoint: "http://localhost:4318"
+ timeout: 30
+ serializer:
+ type: json
+
+ meter_provider:
+ temporality: cumulative
+ processor:
+ type: batching
+ exporter:
+ type: otlp
+ otlp:
+ transport:
+ type: curl
+ endpoint: "http://localhost:4318"
+ timeout: 30
+ serializer:
+ type: json
+
+ logger_provider:
+ processor:
+ type: batching
+ exporter:
+ type: otlp
+ otlp:
+ transport:
+ type: curl
+ endpoint: "http://localhost:4318"
+ timeout: 30
+ serializer:
+ type: json
diff --git a/web/landing/config/packages/monolog.yaml b/web/landing/config/packages/monolog.yaml
index efc4ce8ba6..4a61b21bbd 100644
--- a/web/landing/config/packages/monolog.yaml
+++ b/web/landing/config/packages/monolog.yaml
@@ -1,15 +1,14 @@
monolog:
channels:
- deprecation # Deprecations are logged in the dedicated "deprecation" channel when it exists
+ handlers:
+ telemetry:
+ type: service
+ id: Flow\Bridge\Monolog\Telemetry\TelemetryHandler
when@dev:
monolog:
handlers:
- main:
- type: stream
- path: "%kernel.logs_dir%/%kernel.environment%.log"
- level: error
- channels: ["!event"]
console:
type: console
process_psr_3_messages: false
@@ -18,37 +17,6 @@ when@dev:
when@test:
monolog:
handlers:
- main:
- type: fingers_crossed
- action_level: error
- handler: nested
- excluded_http_codes: [404, 405]
- channels: ["!event"]
- nested:
- type: stream
- path: "%kernel.logs_dir%/%kernel.environment%.log"
- level: debug
-
-when@prod:
- monolog:
- handlers:
- main:
- type: fingers_crossed
- action_level: error
- handler: nested
- excluded_http_codes: [405]
- buffer_size: 50 # How many messages should be saved? Prevent memory leaks
- nested:
- type: rotating_file
- path: "%kernel.logs_dir%/%kernel.environment%.log"
- level: error
- formatter: monolog.formatter.json
- max_files: 10
- console:
- type: console
- process_psr_3_messages: false
- channels: ["!event", "!doctrine"]
- deprecation:
- type: stream
- channels: [deprecation]
- path: php://stderr
+ telemetry:
+ type: service
+ id: Flow\Bridge\Monolog\Telemetry\TelemetryHandler
diff --git a/web/landing/config/packages/prod/flow_telemetry.yaml b/web/landing/config/packages/prod/flow_telemetry.yaml
new file mode 100644
index 0000000000..4c3cca94fb
--- /dev/null
+++ b/web/landing/config/packages/prod/flow_telemetry.yaml
@@ -0,0 +1,21 @@
+flow_telemetry:
+ logger_provider:
+ processor:
+ type: severity_filtering
+ minimum_severity: warn
+ inner_processor:
+ type: batching
+ exporter:
+ type: otlp
+ otlp:
+ transport:
+ type: curl
+ endpoint: "http://localhost:4318"
+ timeout: 30
+ serializer:
+ type: json
+
+ instrumentation:
+ twig:
+ trace_blocks: false
+ trace_macros: false
diff --git a/web/landing/config/packages/test/flow_telemetry.yaml b/web/landing/config/packages/test/flow_telemetry.yaml
new file mode 100644
index 0000000000..8925f1fe10
--- /dev/null
+++ b/web/landing/config/packages/test/flow_telemetry.yaml
@@ -0,0 +1,20 @@
+flow_telemetry:
+ tracer_provider:
+ processor:
+ type: void
+
+ meter_provider:
+ processor:
+ type: void
+
+ logger_provider:
+ processor:
+ type: void
+
+ instrumentation:
+ http_kernel:
+ enabled: false
+ console:
+ enabled: false
+ twig:
+ enabled: false
diff --git a/web/landing/config/services.yaml b/web/landing/config/services.yaml
index b44b952083..352ea06abc 100644
--- a/web/landing/config/services.yaml
+++ b/web/landing/config/services.yaml
@@ -71,4 +71,14 @@ services:
$projectDir: '%kernel.project_dir%'
twig.markdown.league_common_mark_converter_factory:
- class: Flow\Website\Service\Markdown\LeagueCommonMarkConverterFactory
\ No newline at end of file
+ class: Flow\Website\Service\Markdown\LeagueCommonMarkConverterFactory
+
+ flow.telemetry.monolog.logger:
+ class: Flow\Telemetry\Logger\Logger
+ factory: ['@Flow\Telemetry\Telemetry', 'logger']
+ arguments:
+ - 'monolog'
+
+ Flow\Bridge\Monolog\Telemetry\TelemetryHandler:
+ arguments:
+ - '@flow.telemetry.monolog.logger'
\ No newline at end of file
diff --git a/web/landing/importmap.php b/web/landing/importmap.php
index cbf7b6b906..8a4888a1cb 100644
--- a/web/landing/importmap.php
+++ b/web/landing/importmap.php
@@ -74,6 +74,9 @@
'prismjs/components/prism-csv.min.js' => [
'version' => '1.30.0',
],
+ 'prismjs/components/prism-yaml.min.js' => [
+ 'version' => '1.30.0',
+ ],
'@panzoom/panzoom' => [
'version' => '4.6.0',
],
diff --git a/web/landing/resources/dsl.json b/web/landing/resources/dsl.json
index b6ca83bbac..e95a48e376 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":253,"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":261,"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":267,"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"}],"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":282,"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":289,"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":301,"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":318,"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":334,"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":340,"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":346,"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":352,"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":361,"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":374,"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":385,"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":391,"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":397,"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":403,"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":412,"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":421,"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":430,"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":436,"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":450,"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":457,"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":463,"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":469,"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":475,"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":481,"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":487,"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":493,"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":503,"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":512,"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":521,"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":530,"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":539,"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":548,"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":557,"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":566,"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":575,"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":584,"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":595,"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":608,"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":625,"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":643,"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":652,"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":661,"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":670,"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":679,"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":688,"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":697,"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":706,"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":720,"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":734,"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":844,"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":890,"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":923,"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":978,"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":1105,"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":1111,"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":1121,"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":1130,"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":1140,"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":1147,"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":1153,"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":1159,"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":1165,"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":1171,"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":1177,"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":1183,"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":1192,"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":1198,"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":1207,"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":1213,"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":1220,"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":1226,"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":1232,"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":1238,"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":1247,"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":1253,"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":1262,"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":1272,"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":1281,"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":1287,"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":1293,"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":1303,"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":1316,"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":1322,"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":1328,"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":1334,"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":1340,"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":1346,"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":1352,"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":1362,"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":1371,"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":1380,"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":1386,"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":1395,"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":1401,"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":1407,"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":1420,"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":1449,"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":1475,"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":1481,"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":1487,"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":1493,"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":1499,"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":1505,"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":1511,"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":1517,"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":1523,"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":1529,"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":1535,"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":1541,"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":1547,"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":1553,"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":1559,"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":1565,"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":1571,"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":1577,"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":1583,"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":1589,"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":1595,"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":1601,"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":1607,"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":1613,"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":1624,"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":1635,"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":1680,"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":1709,"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":1715,"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":1721,"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":1727,"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":1733,"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":1739,"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":1745,"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":1751,"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":1757,"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":1763,"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":1769,"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":1775,"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":1781,"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":1787,"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":1793,"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":1799,"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":1810,"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":1819,"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":1828,"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":1837,"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":1847,"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":1853,"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":1859,"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":1865,"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":1874,"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":1886,"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":1895,"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":1901,"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":1910,"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":1916,"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":1922,"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":1928,"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":1942,"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":1956,"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":1970,"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":1976,"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":1982,"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":1988,"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":1994,"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":2000,"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":2006,"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":2012,"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":2018,"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":2024,"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":2039,"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":2053,"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":2060,"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":2073,"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":2106,"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":2132,"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":2138,"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":2144,"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":2150,"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":2159,"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":2165,"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":2174,"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":2180,"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":2189,"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":2195,"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":2204,"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":2210,"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":2220,"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":2229,"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":2240,"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":2251,"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":2257,"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":2263,"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":2269,"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":2275,"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":2281,"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":2292,"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":2298,"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":2304,"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":2313,"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":2322,"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":2331,"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":2344,"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":2407,"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":2413,"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":2419,"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":2430,"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":2436,"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":2453,"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":2470,"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":2487,"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":2493,"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":2499,"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":2510,"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":2519,"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":2525,"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":2531,"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":2540,"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":2546,"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":2552,"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":2561,"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":2567,"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":2573,"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":2579,"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":2585,"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":2591,"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":2597,"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":20,"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":26,"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":32,"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":51,"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":64,"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":78,"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":89,"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":95,"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":105,"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":114,"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":125,"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\/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":37,"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":57,"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":72,"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":87,"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":104,"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":115,"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":128,"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":141,"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":153,"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":165,"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":177,"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":189,"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":201,"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":213,"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":225,"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":238,"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":251,"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":264,"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":278,"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":292,"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":306,"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":324,"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":350,"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":375,"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":400,"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":425,"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":444,"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":458,"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":473,"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":487,"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":502,"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":516,"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":531,"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":547,"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":561,"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":576,"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":588,"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":600,"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":612,"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":627,"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":640,"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":652,"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":664,"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":676,"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":690,"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\/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\/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":253,"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":261,"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":267,"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"}],"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":282,"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":289,"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":301,"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":318,"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":334,"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":340,"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":346,"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":352,"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":361,"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":374,"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":385,"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":391,"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":397,"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":403,"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":412,"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":421,"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":430,"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":436,"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":450,"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":457,"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":463,"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":469,"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":475,"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":481,"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":487,"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":493,"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":503,"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":512,"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":521,"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":530,"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":539,"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":548,"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":557,"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":566,"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":575,"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":584,"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":595,"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":608,"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":625,"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":643,"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":652,"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":661,"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":670,"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":679,"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":688,"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":697,"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":706,"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":720,"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":734,"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":844,"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":890,"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":923,"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":978,"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":1105,"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":1111,"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":1121,"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":1130,"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":1140,"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":1147,"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":1153,"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":1159,"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":1165,"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":1171,"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":1177,"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":1183,"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":1192,"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":1198,"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":1207,"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":1213,"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":1220,"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":1226,"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":1232,"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":1238,"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":1247,"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":1253,"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":1262,"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":1272,"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":1281,"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":1287,"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":1293,"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":1303,"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":1316,"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":1322,"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":1328,"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":1334,"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":1340,"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":1346,"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":1352,"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":1362,"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":1371,"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":1380,"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":1386,"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":1395,"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":1401,"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":1407,"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":1420,"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":1449,"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":1475,"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":1481,"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":1487,"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":1493,"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":1499,"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":1505,"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":1511,"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":1517,"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":1523,"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":1529,"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":1535,"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":1541,"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":1547,"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":1553,"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":1559,"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":1565,"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":1571,"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":1577,"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":1583,"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":1589,"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":1595,"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":1601,"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":1607,"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":1613,"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":1624,"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":1635,"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":1680,"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":1709,"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":1715,"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":1721,"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":1727,"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":1733,"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":1739,"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":1745,"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":1751,"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":1757,"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":1763,"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":1769,"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":1775,"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":1781,"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":1787,"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":1793,"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":1799,"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":1810,"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":1819,"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":1828,"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":1837,"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":1847,"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":1853,"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":1859,"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":1865,"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":1874,"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":1886,"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":1895,"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":1901,"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":1910,"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":1916,"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":1922,"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":1928,"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":1942,"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":1956,"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":1970,"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":1976,"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":1982,"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":1988,"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":1994,"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":2000,"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":2006,"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":2012,"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":2018,"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":2024,"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":2039,"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":2053,"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":2060,"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":2073,"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":2106,"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":2132,"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":2138,"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":2144,"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":2150,"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":2159,"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":2165,"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":2174,"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":2180,"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":2189,"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":2195,"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":2204,"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":2210,"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":2220,"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":2229,"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":2240,"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":2251,"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":2257,"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":2263,"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":2269,"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":2275,"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":2281,"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":2292,"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":2298,"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":2304,"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":2313,"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":2322,"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":2331,"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":2344,"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":2407,"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":2413,"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":2419,"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":2430,"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":2436,"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":2453,"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":2470,"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":2487,"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":2493,"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":2499,"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":2510,"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":2519,"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":2525,"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":2531,"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":2540,"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":2546,"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":2552,"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":2561,"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":2567,"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":2573,"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":2579,"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":2585,"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":2591,"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":2597,"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":20,"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":26,"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":32,"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":51,"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":64,"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":78,"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":89,"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":95,"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":105,"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":114,"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":125,"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\/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
diff --git a/web/landing/src/Flow/Website/Model/Documentation/Module.php b/web/landing/src/Flow/Website/Model/Documentation/Module.php
index 6e47845c1f..381ee592a3 100644
--- a/web/landing/src/Flow/Website/Model/Documentation/Module.php
+++ b/web/landing/src/Flow/Website/Model/Documentation/Module.php
@@ -24,9 +24,11 @@ enum Module : string
case PARQUET = 'Parquet';
case PG_QUERY = 'PG_QUERY';
case POSTGRESQL = 'POSTGRESQL';
+ case PSR18_TELEMETRY_BRIDGE = 'PSR-18 Telemetry Bridge';
case PSR7_TELEMETRY_BRIDGE = 'PSR-7 Telemetry Bridge';
case S3_FILESYSTEM = 'S3 Filesystem';
case SYMFONY_HTTP_FOUNDATION_TELEMETRY_BRIDGE = 'Symfony HttpFoundation Telemetry Bridge';
+ case SYMFONY_TELEMETRY_BUNDLE = 'Symfony Telemetry Bundle';
case TELEMETRY = 'Telemetry';
case TELEMETRY_OTLP = 'Telemetry OTLP';
case TEXT = 'Text';
@@ -66,7 +68,9 @@ public function priority() : int
self::TELEMETRY_OTLP => 21,
self::MONOLOG_TELEMETRY_BRIDGE => 22,
self::SYMFONY_HTTP_FOUNDATION_TELEMETRY_BRIDGE => 23,
- self::PSR7_TELEMETRY_BRIDGE => 24,
+ self::SYMFONY_TELEMETRY_BUNDLE => 24,
+ self::PSR7_TELEMETRY_BRIDGE => 25,
+ self::PSR18_TELEMETRY_BRIDGE => 26,
default => 99,
};
}
diff --git a/web/landing/src/Flow/Website/Service/Github.php b/web/landing/src/Flow/Website/Service/Github.php
index 45f96f120d..2fc9a15596 100644
--- a/web/landing/src/Flow/Website/Service/Github.php
+++ b/web/landing/src/Flow/Website/Service/Github.php
@@ -4,10 +4,11 @@
namespace Flow\Website\Service;
-use function Flow\ETL\DSL\{config_builder, df, from_cache, lit, not, ref, rename_replace, to_memory};
+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 Flow\ETL\Memory\ArrayMemory;
+use Flow\Telemetry\Telemetry;
use Flow\Website\Factory\Github\ContributorsRequestFactory;
use Http\Client\Curl\Client;
use Http\Discovery\Psr17Factory;
@@ -20,6 +21,7 @@
public function __construct(
private ContributorsRequestFactory $requestFactory,
private ContainerBagInterface $parameters,
+ private Telemetry $telemetry,
) {
}
@@ -43,7 +45,17 @@ public function contributors() : array
$from_github = new PsrHttpClientDynamicExtractor($client, $this->requestFactory);
try {
- df(config_builder()->cache($adapter))
+ df(
+ config_builder()
+ ->cache($adapter)
+ ->withTelemetry(
+ $this->telemetry,
+ telemetry_options()
+ ->collectMetrics(true)
+ ->traceLoading(true)
+ ->traceTransformations(true)
+ )
+ )
->read(
from_cache(
'flow_github_contributors',
diff --git a/web/landing/src/Flow/Website/Twig/DSLExtension.php b/web/landing/src/Flow/Website/Twig/DSLExtension.php
index 53d0583e73..0211e65d86 100644
--- a/web/landing/src/Flow/Website/Twig/DSLExtension.php
+++ b/web/landing/src/Flow/Website/Twig/DSLExtension.php
@@ -18,6 +18,7 @@ public function dsl() : string
return file_get_contents($this->dslPath);
}
+ #[\Override]
public function getFunctions()
{
return [
diff --git a/web/landing/src/Flow/Website/Twig/FlowExtension.php b/web/landing/src/Flow/Website/Twig/FlowExtension.php
index 6bef99c2fe..582203e087 100644
--- a/web/landing/src/Flow/Website/Twig/FlowExtension.php
+++ b/web/landing/src/Flow/Website/Twig/FlowExtension.php
@@ -9,6 +9,7 @@
final class FlowExtension extends AbstractExtension
{
+ #[\Override]
public function getFilters() : array
{
return [
diff --git a/web/landing/src/Flow/Website/Twig/HumanizerExtension.php b/web/landing/src/Flow/Website/Twig/HumanizerExtension.php
index baf4c86e48..dfeb80a8a4 100644
--- a/web/landing/src/Flow/Website/Twig/HumanizerExtension.php
+++ b/web/landing/src/Flow/Website/Twig/HumanizerExtension.php
@@ -10,6 +10,7 @@
final class HumanizerExtension extends AbstractExtension
{
+ #[\Override]
public function getFilters()
{
return [
diff --git a/web/landing/src/Flow/Website/Twig/SlugifyExtension.php b/web/landing/src/Flow/Website/Twig/SlugifyExtension.php
index 2b9f7f3e43..0b21fec4be 100644
--- a/web/landing/src/Flow/Website/Twig/SlugifyExtension.php
+++ b/web/landing/src/Flow/Website/Twig/SlugifyExtension.php
@@ -10,6 +10,7 @@
final class SlugifyExtension extends AbstractExtension
{
+ #[\Override]
public function getFilters() : array
{
return [
diff --git a/web/landing/templates/documentation/dsl.html.twig b/web/landing/templates/documentation/dsl.html.twig
index ef65a63ade..77954c8d16 100644
--- a/web/landing/templates/documentation/dsl.html.twig
+++ b/web/landing/templates/documentation/dsl.html.twig
@@ -90,10 +90,8 @@
{% apply spaceless %}
-
>
-
+
+ {{- definition.toString | escape('html') -}}
{% endapply %}
diff --git a/web/landing/templates/documentation/navigation_right.html.twig b/web/landing/templates/documentation/navigation_right.html.twig
index 7361df94c3..50538f3e73 100644
--- a/web/landing/templates/documentation/navigation_right.html.twig
+++ b/web/landing/templates/documentation/navigation_right.html.twig
@@ -116,6 +116,29 @@
+
Bridges
@@ -135,13 +158,10 @@
Filesystem S3
- Symfony Http Foundation
-
-
- Symfony HttpFoundation Telemetry
+ PSR-7 Telemetry
- PSR-7 Telemetry
+ PSR-18 Telemetry
Monolog Http
diff --git a/web/landing/tests/Flow/Website/Tests/Integration/DocumentationTest.php b/web/landing/tests/Flow/Website/Tests/Integration/DocumentationTest.php
index f065a05068..efe41ab9e4 100644
--- a/web/landing/tests/Flow/Website/Tests/Integration/DocumentationTest.php
+++ b/web/landing/tests/Flow/Website/Tests/Integration/DocumentationTest.php
@@ -36,6 +36,7 @@ public function test_documentation_dsl_page() : void
self::assertEquals(12, $client->getCrawler()->filter('[data-dsl-type]')->count());
}
+ #[\Override]
protected static function getKernelClass() : string
{
return Kernel::class;