@fluentcommerce/fc-connect-sdk 0.1.53 → 0.1.55
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +30 -2
- package/README.md +39 -0
- package/dist/cjs/auth/index.d.ts +3 -0
- package/dist/cjs/auth/index.js +13 -0
- package/dist/cjs/auth/profile-loader.d.ts +18 -0
- package/dist/cjs/auth/profile-loader.js +208 -0
- package/dist/cjs/client-factory.d.ts +4 -0
- package/dist/cjs/client-factory.js +10 -0
- package/dist/cjs/clients/fluent-client.js +13 -6
- package/dist/cjs/index.d.ts +3 -1
- package/dist/cjs/index.js +8 -2
- package/dist/cjs/utils/pagination-helpers.js +38 -2
- package/dist/cjs/versori/fluent-versori-client.js +11 -5
- package/dist/esm/auth/index.d.ts +3 -0
- package/dist/esm/auth/index.js +2 -0
- package/dist/esm/auth/profile-loader.d.ts +18 -0
- package/dist/esm/auth/profile-loader.js +169 -0
- package/dist/esm/client-factory.d.ts +4 -0
- package/dist/esm/client-factory.js +9 -0
- package/dist/esm/clients/fluent-client.js +13 -6
- package/dist/esm/index.d.ts +3 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/utils/pagination-helpers.js +38 -2
- package/dist/esm/versori/fluent-versori-client.js +11 -5
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/tsconfig.types.tsbuildinfo +1 -1
- package/dist/types/auth/index.d.ts +3 -0
- package/dist/types/auth/profile-loader.d.ts +18 -0
- package/dist/types/client-factory.d.ts +4 -0
- package/dist/types/index.d.ts +3 -1
- package/docs/00-START-HERE/EXPORT-VALIDATION.md +158 -158
- package/docs/00-START-HERE/cli-analyze-source-structure-guide.md +655 -655
- package/docs/00-START-HERE/cli-documentation-index.md +202 -202
- package/docs/00-START-HERE/cli-quick-reference.md +252 -252
- package/docs/00-START-HERE/decision-tree.md +552 -552
- package/docs/00-START-HERE/getting-started.md +1070 -1070
- package/docs/00-START-HERE/mapper-quick-decision-guide.md +235 -235
- package/docs/00-START-HERE/readme.md +237 -237
- package/docs/00-START-HERE/retailerid-configuration.md +404 -404
- package/docs/00-START-HERE/sdk-philosophy.md +794 -794
- package/docs/00-START-HERE/troubleshooting-quick-reference.md +1086 -1086
- package/docs/01-TEMPLATES/faq.md +686 -686
- package/docs/01-TEMPLATES/patterns/pattern-templates-guide.md +68 -68
- package/docs/01-TEMPLATES/patterns/patterns-csv-schema-validation-and-rejection-report.md +233 -233
- package/docs/01-TEMPLATES/patterns/patterns-custom-resolvers.md +407 -407
- package/docs/01-TEMPLATES/patterns/patterns-error-handling-retry.md +511 -511
- package/docs/01-TEMPLATES/patterns/patterns-field-mapping-universal.md +701 -701
- package/docs/01-TEMPLATES/patterns/patterns-large-file-splitting.md +1430 -1430
- package/docs/01-TEMPLATES/patterns/patterns-master-data-etl.md +2399 -2399
- package/docs/01-TEMPLATES/patterns/patterns-pagination-streaming.md +447 -447
- package/docs/01-TEMPLATES/patterns/patterns-state-duplicate-prevention.md +385 -385
- package/docs/01-TEMPLATES/readme.md +957 -957
- package/docs/01-TEMPLATES/standalone/standalone-asn-inbound-processing.md +1209 -1209
- package/docs/01-TEMPLATES/standalone/standalone-graphql-query-export.md +1140 -1140
- package/docs/01-TEMPLATES/standalone/standalone-graphql-to-parquet-partitioned-s3.md +432 -432
- package/docs/01-TEMPLATES/standalone/standalone-multi-channel-inventory-sync.md +1185 -1185
- package/docs/01-TEMPLATES/standalone/standalone-multi-source-aggregation.md +1462 -1462
- package/docs/01-TEMPLATES/standalone/standalone-s3-csv-batch-api.md +1390 -1390
- package/docs/01-TEMPLATES/standalone/standalone-s3-csv-inventory-to-batch.md +330 -330
- package/docs/01-TEMPLATES/standalone/standalone-scripts-guide.md +87 -87
- package/docs/01-TEMPLATES/standalone/standalone-sftp-xml-graphql.md +1444 -1444
- package/docs/01-TEMPLATES/standalone/standalone-webhook-payload-processing.md +688 -688
- package/docs/01-TEMPLATES/versori/business-examples/business-examples-dropship-order-routing.md +193 -193
- package/docs/01-TEMPLATES/versori/business-examples/business-examples-graphql-parquet-extraction.md +518 -518
- package/docs/01-TEMPLATES/versori/business-examples/business-examples-inter-location-transfers.md +2162 -2162
- package/docs/01-TEMPLATES/versori/business-examples/business-examples-pre-order-allocation.md +2226 -2226
- package/docs/01-TEMPLATES/versori/business-examples/business-scenarios-guide.md +87 -87
- package/docs/01-TEMPLATES/versori/patterns/versori-patterns-connection-validation-pattern.md +656 -656
- package/docs/01-TEMPLATES/versori/patterns/versori-patterns-dual-workflow-connector.md +835 -835
- package/docs/01-TEMPLATES/versori/patterns/versori-patterns-guide.md +108 -108
- package/docs/01-TEMPLATES/versori/patterns/versori-patterns-kv-state-management.md +1533 -1533
- package/docs/01-TEMPLATES/versori/patterns/versori-patterns-xml-response-patterns.md +1160 -1160
- package/docs/01-TEMPLATES/versori/versori-platform-guide.md +201 -201
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-asn-purchase-order.md +1906 -1906
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-dropship-routing.md +1074 -1074
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-flash-sale-reserve.md +1395 -1395
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-generic-xml-order.md +888 -888
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-payment-gateway-integration.md +2478 -2478
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-rma-returns-comprehensive.md +2240 -2240
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-xml-order-ingestion.md +2029 -2029
- package/docs/01-TEMPLATES/versori/webhooks/webhook-templates-guide.md +140 -140
- package/docs/01-TEMPLATES/versori/workflows/_examples/sample-data/inventory-mapping.json +20 -20
- package/docs/01-TEMPLATES/versori/workflows/_examples/sample-data/products_2025-01-22.csv +11 -11
- package/docs/01-TEMPLATES/versori/workflows/_examples/sample-data/sample-data-guide.md +34 -34
- package/docs/01-TEMPLATES/versori/workflows/_examples/workflow-examples-guide.md +36 -36
- package/docs/01-TEMPLATES/versori/workflows/extraction/extraction-modes-guide.md +1038 -1038
- package/docs/01-TEMPLATES/versori/workflows/extraction/extraction-workflows-guide.md +138 -138
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/graphql-extraction-guide.md +63 -63
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-fulfillments-to-sftp-csv.md +2062 -2062
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-fulfillments-to-sftp-xml.md +2294 -2294
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-inventory-positions-to-s3-csv.md +2461 -2461
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-inventory-positions-to-sftp-xml.md +2529 -2529
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-inventory-quantities-to-s3-csv.md +2464 -2464
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-inventory-quantities-to-s3-json.md +1959 -1959
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-orders-to-s3-csv.md +1953 -1953
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-orders-to-sftp-xml.md +2541 -2541
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-products-to-s3-json.md +2384 -2384
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-products-to-sftp-xml.md +2445 -2445
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-virtual-positions-to-s3-csv.md +2355 -2355
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-virtual-positions-to-s3-json.md +2042 -2042
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-virtual-positions-to-sftp-xml.md +2726 -2726
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/batch-api-guide.md +206 -206
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-cycle-count-reconciliation.md +2030 -2030
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-multi-channel-inventory-sync.md +1882 -1882
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-s3-csv-inventory-batch.md +2827 -2827
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-s3-json-inventory-batch.md +1952 -1952
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-s3-xml-inventory-batch.md +3289 -3289
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-sftp-csv-inventory-batch.md +3064 -3064
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-sftp-json-inventory-batch.md +3238 -3238
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-sftp-xml-inventory-batch.md +2977 -2977
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/event-api-guide.md +321 -321
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-payload-json-order-cancel-event.md +959 -959
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-payload-xml-order-cancel-event.md +1170 -1170
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-s3-csv-product-event.md +2312 -2312
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-s3-json-product-event.md +2999 -2999
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-s3-parquet-product-event.md +2836 -2836
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-s3-xml-product-event.md +2395 -2395
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-sftp-csv-product-event.md +2295 -2295
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-sftp-json-product-event.md +2602 -2602
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-sftp-parquet-product-event.md +2589 -2589
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-sftp-xml-product-event.md +3578 -3578
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/graphql-mutations-guide.md +93 -93
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-payload-json-order-update-graphql.md +1260 -1260
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-payload-xml-order-update-graphql.md +1472 -1472
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-csv-control-graphql.md +2417 -2417
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-csv-location-graphql.md +2811 -2811
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-csv-price-graphql.md +2619 -2619
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-json-location-graphql.md +2807 -2807
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-xml-location-graphql.md +2373 -2373
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-sftp-csv-control-graphql.md +2740 -2740
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-sftp-csv-location-graphql.md +2760 -2760
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-sftp-json-location-graphql.md +1710 -1710
- package/docs/01-TEMPLATES/versori/workflows/ingestion/ingestion-workflows-guide.md +136 -136
- package/docs/01-TEMPLATES/versori/workflows/rubix-webhooks/rubix-webhooks-guide.md +520 -520
- package/docs/01-TEMPLATES/versori/workflows/rubix-webhooks/template-webhook-rubix-fulfilment-to-sftp-xml-inline.md +1418 -1418
- package/docs/01-TEMPLATES/versori/workflows/rubix-webhooks/template-webhook-rubix-fulfilment-to-sftp-xml-universal-mapper.md +1785 -1785
- package/docs/01-TEMPLATES/versori/workflows/rubix-webhooks/template-webhook-rubix-order-attribute-update.md +824 -824
- package/docs/01-TEMPLATES/versori/workflows/workflows-overview-guide.md +646 -646
- package/docs/02-CORE-GUIDES/advanced-services/advanced-services-batch-archival.md +724 -724
- package/docs/02-CORE-GUIDES/advanced-services/advanced-services-job-tracker.md +627 -627
- package/docs/02-CORE-GUIDES/advanced-services/advanced-services-partial-batch-recovery.md +561 -561
- package/docs/02-CORE-GUIDES/advanced-services/advanced-services-quick-reference.md +367 -367
- package/docs/02-CORE-GUIDES/advanced-services/advanced-services-readme.md +407 -407
- package/docs/02-CORE-GUIDES/advanced-services/readme.md +49 -49
- package/docs/02-CORE-GUIDES/api-reference/api-reference-quick-reference.md +548 -548
- package/docs/02-CORE-GUIDES/api-reference/event-api-input-output-reference.md +702 -1171
- package/docs/02-CORE-GUIDES/api-reference/examples/client-initialization.ts +286 -286
- package/docs/02-CORE-GUIDES/api-reference/graphql-error-classification.md +337 -337
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-01-client-api.md +399 -482
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-03-authentication.md +199 -199
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-04-graphql-mapping.md +925 -925
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-05-services.md +1198 -1198
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-06-data-sources.md +1083 -1083
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-07-parsers.md +1097 -1097
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-08-pagination.md +513 -513
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-08-types.md +545 -597
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-09-error-handling.md +527 -527
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-09-webhook-validation.md +514 -514
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-10-extraction.md +557 -557
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-10-utilities.md +412 -412
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-11-cli-tools.md +423 -423
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-11-error-handling.md +716 -716
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-12-analyze-source-structure.md +518 -518
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-12-partial-responses.md +212 -212
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-12-testing.md +300 -300
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-13-resolver-builder.md +322 -322
- package/docs/02-CORE-GUIDES/api-reference/readme.md +279 -279
- package/docs/02-CORE-GUIDES/auto-pagination/auto-pagination-quick-reference.md +351 -351
- package/docs/02-CORE-GUIDES/auto-pagination/auto-pagination-readme.md +277 -277
- package/docs/02-CORE-GUIDES/auto-pagination/examples/auto-pagination-readme.md +178 -178
- package/docs/02-CORE-GUIDES/auto-pagination/examples/common-patterns.ts +351 -351
- package/docs/02-CORE-GUIDES/auto-pagination/examples/paginate-products.ts +384 -384
- package/docs/02-CORE-GUIDES/auto-pagination/examples/paginate-virtual-positions.ts +308 -308
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-01-foundations.md +470 -470
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-02-quick-start.md +713 -713
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-03-configuration.md +754 -754
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-04-advanced-patterns.md +732 -732
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-05-sdk-integration.md +847 -847
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-06-troubleshooting.md +359 -359
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-07-api-reference.md +462 -462
- package/docs/02-CORE-GUIDES/auto-pagination/readme.md +54 -54
- package/docs/02-CORE-GUIDES/data-sources/data-sources-file-operations-error-handling.md +1487 -1487
- package/docs/02-CORE-GUIDES/data-sources/data-sources-quick-reference.md +836 -836
- package/docs/02-CORE-GUIDES/data-sources/data-sources-readme.md +276 -276
- package/docs/02-CORE-GUIDES/data-sources/data-sources-sftp-credential-access-security.md +553 -553
- package/docs/02-CORE-GUIDES/data-sources/examples/common-patterns.ts +409 -409
- package/docs/02-CORE-GUIDES/data-sources/examples/data-sources-readme.md +178 -178
- package/docs/02-CORE-GUIDES/data-sources/examples/s3-operations.ts +308 -308
- package/docs/02-CORE-GUIDES/data-sources/examples/sftp-operations.ts +371 -371
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-01-foundations.md +735 -735
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-02-s3-operations.md +1302 -1302
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-03-sftp-operations.md +1379 -1379
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-04-file-patterns.md +941 -941
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-05-advanced-topics.md +813 -813
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-06-integration-patterns.md +486 -486
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-07-troubleshooting.md +387 -387
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-08-api-reference.md +417 -417
- package/docs/02-CORE-GUIDES/data-sources/readme.md +77 -77
- package/docs/02-CORE-GUIDES/error-handling-guide.md +936 -936
- package/docs/02-CORE-GUIDES/extraction/examples/02-core-guides-extraction-readme.md +116 -116
- package/docs/02-CORE-GUIDES/extraction/examples/common-patterns.ts +428 -428
- package/docs/02-CORE-GUIDES/extraction/examples/extract-inventory-basic.ts +187 -187
- package/docs/02-CORE-GUIDES/extraction/extraction-quick-reference.md +596 -596
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-01-foundations.md +514 -514
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-02-basic-extraction.md +823 -823
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-03-parquet-processing.md +507 -507
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-04-data-enrichment.md +546 -546
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-05-transformation.md +494 -494
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-06-export-formats.md +458 -458
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-06-performance.md +138 -138
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-07-api-reference.md +148 -148
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-07-optimization.md +692 -692
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-08-extraction-orchestrator.md +1008 -1008
- package/docs/02-CORE-GUIDES/extraction/readme.md +151 -151
- package/docs/02-CORE-GUIDES/ingestion/examples/_simple-kv-store.ts +40 -40
- package/docs/02-CORE-GUIDES/ingestion/examples/error-recovery.ts +728 -728
- package/docs/02-CORE-GUIDES/ingestion/examples/event-driven.ts +501 -501
- package/docs/02-CORE-GUIDES/ingestion/examples/local-file-ingestion.ts +88 -88
- package/docs/02-CORE-GUIDES/ingestion/examples/parquet-ingestion.ts +117 -117
- package/docs/02-CORE-GUIDES/ingestion/examples/performance-optimized.ts +647 -647
- package/docs/02-CORE-GUIDES/ingestion/examples/s3-csv-ingestion.ts +169 -169
- package/docs/02-CORE-GUIDES/ingestion/examples/sftp-csv-ingestion.ts +134 -134
- package/docs/02-CORE-GUIDES/ingestion/ingestion-quick-reference.md +546 -546
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-01-introduction.md +626 -626
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-02-quick-start.md +658 -658
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-03-data-sources.md +1052 -1052
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-04-field-mapping.md +763 -763
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-05-advanced-parsers.md +676 -676
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-06-batch-api.md +1295 -1295
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-07-api-reference.md +138 -138
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-07-state-management.md +1037 -1037
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-08-performance-optimization.md +1349 -1349
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-09-best-practices.md +1893 -1893
- package/docs/02-CORE-GUIDES/ingestion/readme.md +160 -160
- package/docs/02-CORE-GUIDES/logging-guide.md +585 -585
- package/docs/02-CORE-GUIDES/mapping/error-handling-patterns.md +401 -401
- package/docs/02-CORE-GUIDES/mapping/examples/02-core-guides-mapping-readme.md +128 -128
- package/docs/02-CORE-GUIDES/mapping/examples/common-patterns.ts +273 -273
- package/docs/02-CORE-GUIDES/mapping/examples/csv-location-ingestion.json +36 -36
- package/docs/02-CORE-GUIDES/mapping/examples/csv-mapping.ts +242 -242
- package/docs/02-CORE-GUIDES/mapping/examples/graphql-to-parquet-extraction.json +36 -36
- package/docs/02-CORE-GUIDES/mapping/examples/json-mapping.ts +213 -213
- package/docs/02-CORE-GUIDES/mapping/examples/json-product-to-mutation.json +48 -48
- package/docs/02-CORE-GUIDES/mapping/examples/xml-mapping.ts +291 -291
- package/docs/02-CORE-GUIDES/mapping/examples/xml-order-to-mutation.json +45 -45
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/graphql-mutation-mapping-quick-reference.md +463 -463
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/graphql-mutation-mapping-readme.md +227 -227
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-01-introduction.md +222 -222
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-02-quick-start.md +351 -351
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-03-schema-validation.md +569 -569
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-04-mapping-patterns.md +471 -471
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-05-configuration-reference.md +611 -611
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-06-advanced-xpath.md +148 -148
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-06-path-syntax.md +464 -464
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-07-api-reference.md +94 -94
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-07-array-handling.md +307 -307
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-08-custom-resolvers.md +544 -544
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-09-advanced-patterns.md +427 -427
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-10-hooks-and-variables.md +336 -336
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-11-error-handling.md +488 -488
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-12-arguments-vs-nodes.md +383 -383
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-13-best-practices.md +477 -477
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/readme.md +62 -62
- package/docs/02-CORE-GUIDES/mapping/mapping-format-decision-tree.md +480 -480
- package/docs/02-CORE-GUIDES/mapping/mapping-graphql-alias-batching-guide.md +820 -820
- package/docs/02-CORE-GUIDES/mapping/mapping-javascript-objects.md +2369 -2369
- package/docs/02-CORE-GUIDES/mapping/mapping-mapper-comparison-guide.md +682 -682
- package/docs/02-CORE-GUIDES/mapping/modules/02-core-guides-mapping-07-api-reference.md +1327 -1327
- package/docs/02-CORE-GUIDES/mapping/modules/02-core-guides-mapping-08-error-handling.md +1142 -1142
- package/docs/02-CORE-GUIDES/mapping/modules/mapping-04-use-cases.md +891 -891
- package/docs/02-CORE-GUIDES/mapping/modules/mapping-06-helpers-resolvers.md +1126 -1126
- package/docs/02-CORE-GUIDES/mapping/modules/mapping-06-sdk-resolvers.md +199 -199
- package/docs/02-CORE-GUIDES/mapping/modules/mapping-07-api-reference.md +1319 -1319
- package/docs/02-CORE-GUIDES/mapping/readme.md +178 -178
- package/docs/02-CORE-GUIDES/mapping/resolver-registration.md +410 -410
- package/docs/02-CORE-GUIDES/mapping/resolvers/examples/common-patterns.ts +226 -226
- package/docs/02-CORE-GUIDES/mapping/resolvers/examples/custom-resolvers.ts +227 -227
- package/docs/02-CORE-GUIDES/mapping/resolvers/examples/sdk-resolvers-usage.ts +203 -203
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-readme.md +274 -274
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-api-reference.md +679 -679
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-cookbook.md +826 -826
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-guide.md +1330 -1330
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-helpers-reference.md +1437 -1437
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-parameters-reference.md +553 -553
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-troubleshooting.md +854 -854
- package/docs/02-CORE-GUIDES/mapping/resolvers/readme.md +75 -75
- package/docs/02-CORE-GUIDES/parsers/examples/02-core-guides-parsers-readme.md +161 -161
- package/docs/02-CORE-GUIDES/parsers/examples/csv-parser-examples.ts +110 -110
- package/docs/02-CORE-GUIDES/parsers/examples/json-parser-examples.ts +33 -33
- package/docs/02-CORE-GUIDES/parsers/examples/parquet-parser-examples.ts +47 -47
- package/docs/02-CORE-GUIDES/parsers/examples/xml-parser-examples.ts +38 -38
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-01-foundations.md +355 -355
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-02-csv-parser.md +772 -772
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-03-json-parser.md +789 -789
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-04-xml-parser.md +857 -857
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-05-parquet-parser.md +603 -603
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-06-integration-patterns.md +702 -702
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-06-streaming.md +121 -121
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-07-api-reference.md +89 -89
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-07-troubleshooting.md +727 -727
- package/docs/02-CORE-GUIDES/parsers/parsers-quick-reference.md +482 -482
- package/docs/02-CORE-GUIDES/parsers/parsers-readme.md +258 -258
- package/docs/02-CORE-GUIDES/parsers/readme.md +65 -65
- package/docs/02-CORE-GUIDES/readme.md +194 -194
- package/docs/02-CORE-GUIDES/webhook-validation/examples/basic-validation.ts +108 -108
- package/docs/02-CORE-GUIDES/webhook-validation/examples/common-patterns.ts +316 -316
- package/docs/02-CORE-GUIDES/webhook-validation/examples/webhook-validation-readme.md +61 -61
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-01-foundations.md +440 -440
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-02-quick-start.md +525 -525
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-03-versori-integration.md +741 -741
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-04-platform-integration.md +629 -629
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-05-configuration.md +535 -535
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-06-error-handling.md +611 -611
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-06-troubleshooting.md +124 -124
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-07-api-reference.md +511 -511
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-08-rubix-webhooks.md +590 -590
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-09-rubix-event-vs-http-call.md +432 -432
- package/docs/02-CORE-GUIDES/webhook-validation/readme.md +239 -239
- package/docs/02-CORE-GUIDES/webhook-validation/webhook-validation-quick-reference.md +392 -392
- package/docs/03-PATTERN-GUIDES/connector-scenarios/connector-scenarios-quick-reference.md +498 -498
- package/docs/03-PATTERN-GUIDES/connector-scenarios/connector-scenarios-readme.md +313 -313
- package/docs/03-PATTERN-GUIDES/connector-scenarios/examples/common-patterns.ts +612 -612
- package/docs/03-PATTERN-GUIDES/connector-scenarios/examples/connector-scenarios-readme.md +253 -253
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-01-foundations.md +452 -452
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-02-simple-scenarios.md +681 -681
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-03-intermediate-scenarios.md +637 -637
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-04-advanced-scenarios.md +650 -650
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-05-bidirectional-sync.md +233 -233
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-06-production-patterns.md +442 -442
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-07-reference.md +445 -445
- package/docs/03-PATTERN-GUIDES/connector-scenarios/readme.md +31 -31
- package/docs/03-PATTERN-GUIDES/enterprise-integration-patterns.md +1528 -1528
- package/docs/03-PATTERN-GUIDES/error-handling/comprehensive-error-handling-guide.md +1437 -1437
- package/docs/03-PATTERN-GUIDES/error-handling/error-handling-quick-reference.md +390 -390
- package/docs/03-PATTERN-GUIDES/error-handling/examples/common-patterns.ts +438 -438
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-01-foundations.md +362 -362
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-02-error-types.md +850 -850
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-03-utf8-handling.md +456 -456
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-04-error-scenarios.md +658 -658
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-05-calling-patterns.md +671 -671
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-06-retry-strategies.md +1034 -1034
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-07-monitoring.md +653 -653
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-08-api-reference.md +847 -847
- package/docs/03-PATTERN-GUIDES/error-handling/readme.md +36 -36
- package/docs/03-PATTERN-GUIDES/examples/__tests__/readme.md +40 -40
- package/docs/03-PATTERN-GUIDES/examples/__tests__/resolver-examples.test.js +282 -282
- package/docs/03-PATTERN-GUIDES/examples/test-data/03-pattern-guides-readme.md +110 -110
- package/docs/03-PATTERN-GUIDES/examples/test-data/canonical-inventory.json +123 -123
- package/docs/03-PATTERN-GUIDES/examples/test-data/canonical-order.json +171 -171
- package/docs/03-PATTERN-GUIDES/examples/test-data/readme.md +28 -28
- package/docs/03-PATTERN-GUIDES/extraction/extraction-readme.md +15 -15
- package/docs/03-PATTERN-GUIDES/extraction/readme.md +25 -25
- package/docs/03-PATTERN-GUIDES/file-operations/examples/common-patterns.ts +407 -407
- package/docs/03-PATTERN-GUIDES/file-operations/examples/file-operations-readme.md +142 -142
- package/docs/03-PATTERN-GUIDES/file-operations/file-operations-quick-reference.md +462 -462
- package/docs/03-PATTERN-GUIDES/file-operations/file-operations-readme.md +379 -379
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-01-foundations.md +430 -430
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-02-quick-start.md +484 -484
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-03-s3-operations.md +507 -507
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-04-sftp-operations.md +963 -963
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-05-streaming-performance.md +503 -503
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-06-archive-patterns.md +386 -386
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-06-error-handling.md +117 -117
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-07-api-reference.md +78 -78
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-07-testing-troubleshooting.md +567 -567
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-08-api-reference.md +1055 -1055
- package/docs/03-PATTERN-GUIDES/file-operations/readme.md +32 -32
- package/docs/03-PATTERN-GUIDES/ingestion/ingestion-readme.md +15 -15
- package/docs/03-PATTERN-GUIDES/ingestion/readme.md +25 -25
- package/docs/03-PATTERN-GUIDES/integration-patterns/examples/batch-processing.ts +130 -130
- package/docs/03-PATTERN-GUIDES/integration-patterns/examples/common-patterns.ts +360 -360
- package/docs/03-PATTERN-GUIDES/integration-patterns/examples/delta-sync.ts +130 -130
- package/docs/03-PATTERN-GUIDES/integration-patterns/examples/integration-patterns-readme.md +100 -100
- package/docs/03-PATTERN-GUIDES/integration-patterns/examples/real-time-webhook.ts +398 -398
- package/docs/03-PATTERN-GUIDES/integration-patterns/integration-patterns-quick-reference.md +962 -962
- package/docs/03-PATTERN-GUIDES/integration-patterns/integration-patterns-readme.md +134 -134
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-01-real-time-processing.md +991 -991
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-02-batch-processing.md +1547 -1547
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-03-delta-sync.md +1108 -1108
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-04-webhook-patterns.md +1181 -1181
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-05-error-handling.md +1061 -1061
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-06-advanced-integration-services.md +1547 -1547
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-06-performance.md +109 -109
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-07-api-reference.md +34 -34
- package/docs/03-PATTERN-GUIDES/integration-patterns/readme.md +30 -30
- package/docs/03-PATTERN-GUIDES/logging-minimal-mode.md +128 -128
- package/docs/03-PATTERN-GUIDES/multiple-connections/examples/common-patterns.ts +380 -380
- package/docs/03-PATTERN-GUIDES/multiple-connections/examples/multiple-connections-readme.md +139 -139
- package/docs/03-PATTERN-GUIDES/multiple-connections/examples/parallel-root-connections.ts +149 -149
- package/docs/03-PATTERN-GUIDES/multiple-connections/examples/real-world-scenarios.ts +405 -405
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-01-foundations.md +378 -378
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-02-quick-start.md +566 -566
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-03-targeting-connections.md +659 -659
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-04-parallel-queries.md +656 -656
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-05-best-practices.md +624 -624
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-06-api-reference.md +824 -824
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-06-versori.md +119 -119
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-07-api-reference.md +87 -87
- package/docs/03-PATTERN-GUIDES/multiple-connections/multiple-connections-quick-reference.md +353 -353
- package/docs/03-PATTERN-GUIDES/multiple-connections/multiple-connections-readme.md +270 -270
- package/docs/03-PATTERN-GUIDES/multiple-connections/readme.md +30 -30
- package/docs/03-PATTERN-GUIDES/pagination/pagination-readme.md +14 -14
- package/docs/03-PATTERN-GUIDES/pagination/readme.md +24 -24
- package/docs/03-PATTERN-GUIDES/parquet/examples/common-patterns.ts +180 -180
- package/docs/03-PATTERN-GUIDES/parquet/examples/read-parquet.ts +48 -48
- package/docs/03-PATTERN-GUIDES/parquet/examples/write-parquet.ts +65 -65
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-01-introduction.md +393 -393
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-02-quick-start.md +572 -572
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-03-reading-parquet.md +525 -525
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-04-writing-parquet.md +554 -554
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-05-graphql-extraction.md +405 -405
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-06-performance.md +104 -104
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-06-s3-integration.md +511 -511
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-07-api-reference.md +90 -90
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-07-performance-optimization.md +525 -525
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-08-best-practices.md +712 -712
- package/docs/03-PATTERN-GUIDES/parquet/parquet-quick-reference.md +683 -683
- package/docs/03-PATTERN-GUIDES/parquet/parquet-readme.md +248 -248
- package/docs/03-PATTERN-GUIDES/parquet/readme.md +32 -32
- package/docs/03-PATTERN-GUIDES/parsers/parsers-readme.md +12 -12
- package/docs/03-PATTERN-GUIDES/parsers/readme.md +24 -24
- package/docs/03-PATTERN-GUIDES/readme.md +159 -159
- package/docs/03-PATTERN-GUIDES/webhooks/readme.md +24 -24
- package/docs/03-PATTERN-GUIDES/webhooks/webhooks-readme.md +8 -8
- package/docs/04-REFERENCE/architecture/architecture-01-overview.md +427 -427
- package/docs/04-REFERENCE/architecture/architecture-02-client-architecture.md +424 -424
- package/docs/04-REFERENCE/architecture/architecture-03-data-flow.md +690 -690
- package/docs/04-REFERENCE/architecture/architecture-04-service-layer.md +834 -834
- package/docs/04-REFERENCE/architecture/architecture-05-integration-architecture.md +655 -655
- package/docs/04-REFERENCE/architecture/architecture-06-state-management.md +653 -653
- package/docs/04-REFERENCE/architecture/architecture-adding-new-data-sources.md +686 -686
- package/docs/04-REFERENCE/architecture/readme.md +279 -279
- package/docs/04-REFERENCE/platforms/deno/readme.md +117 -117
- package/docs/04-REFERENCE/platforms/nodejs/readme.md +146 -146
- package/docs/04-REFERENCE/platforms/readme.md +135 -135
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-01-introduction.md +398 -398
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-02-quick-start.md +560 -560
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-03-authentication.md +757 -757
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-04-workflows.md +2476 -2476
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-05-connections.md +1167 -1167
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-06-kv-storage.md +990 -990
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-06-state-management.md +121 -121
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-07-api-reference.md +68 -68
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-07-deployment.md +731 -731
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-08-best-practices.md +1111 -1111
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-09-signature-reference.md +766 -766
- package/docs/04-REFERENCE/platforms/versori/platforms-versori-readme.md +299 -299
- package/docs/04-REFERENCE/platforms/versori/platforms-versori-s3-sftp-configuration-guide.md +1425 -1425
- package/docs/04-REFERENCE/platforms/versori/platforms-versori-webhook-api-key-security.md +816 -816
- package/docs/04-REFERENCE/platforms/versori/platforms-versori-webhook-connection-security.md +681 -681
- package/docs/04-REFERENCE/platforms/versori/platforms-versori-workflow-task-types.md +708 -708
- package/docs/04-REFERENCE/platforms/versori/readme.md +108 -108
- package/docs/04-REFERENCE/readme.md +148 -148
- package/docs/04-REFERENCE/resolver-signature/examples/advanced-resolvers.ts +482 -482
- package/docs/04-REFERENCE/resolver-signature/examples/async-resolvers.ts +496 -496
- package/docs/04-REFERENCE/resolver-signature/examples/basic-resolvers.ts +343 -343
- package/docs/04-REFERENCE/resolver-signature/examples/resolver-signature-readme.md +188 -188
- package/docs/04-REFERENCE/resolver-signature/examples/testing-resolvers.ts +463 -463
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-01-foundations.md +286 -286
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-02-parameter-reference.md +643 -643
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-03-basic-examples.md +521 -521
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-04-advanced-patterns.md +739 -739
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-05-sdk-resolvers.md +531 -531
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-06-migration-guide.md +650 -650
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-06-testing.md +125 -125
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-07-api-reference.md +794 -794
- package/docs/04-REFERENCE/resolver-signature/readme.md +64 -64
- package/docs/04-REFERENCE/resolver-signature/resolver-signature-quick-reference.md +270 -270
- package/docs/04-REFERENCE/resolver-signature/resolver-signature-readme.md +351 -351
- package/docs/04-REFERENCE/schema/fluent-commerce-schema.json +764 -764
- package/docs/04-REFERENCE/schema/readme.md +141 -141
- package/docs/04-REFERENCE/testing/examples/04-reference-testing-readme.md +158 -158
- package/docs/04-REFERENCE/testing/examples/fluent-testing.ts +62 -62
- package/docs/04-REFERENCE/testing/examples/health-check.ts +155 -155
- package/docs/04-REFERENCE/testing/examples/integration-test.ts +119 -119
- package/docs/04-REFERENCE/testing/examples/performance-test.ts +183 -183
- package/docs/04-REFERENCE/testing/examples/s3-testing.ts +127 -127
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-01-foundations.md +267 -267
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-02-s3-testing.md +599 -599
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-03-fluent-testing.md +589 -589
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-04-integration-testing.md +699 -699
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-05-debugging.md +478 -478
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-06-cicd-integration.md +463 -463
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-06-preflight-validation.md +131 -131
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-07-best-practices.md +499 -499
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-07-coverage-ci.md +165 -165
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-08-api-reference.md +634 -634
- package/docs/04-REFERENCE/testing/readme.md +86 -86
- package/docs/04-REFERENCE/testing/testing-quick-reference.md +667 -667
- package/docs/04-REFERENCE/testing/testing-readme.md +286 -286
- package/docs/04-REFERENCE/troubleshooting/readme.md +144 -144
- package/docs/04-REFERENCE/troubleshooting/troubleshooting-deno-sftp-compatibility.md +392 -392
- package/docs/template-loading-matrix.md +242 -242
- package/package.json +5 -3
|
@@ -1,424 +1,424 @@
|
|
|
1
|
-
# Client Architecture
|
|
2
|
-
|
|
3
|
-
This document explains how the FC Connect SDK handles client creation, authentication, and runtime detection.
|
|
4
|
-
|
|
5
|
-
## Overview
|
|
6
|
-
|
|
7
|
-
The SDK provides a **universal client factory** that automatically detects your runtime environment and creates the appropriate client with the correct authentication mechanism.
|
|
8
|
-
|
|
9
|
-
**Key Features:**
|
|
10
|
-
|
|
11
|
-
- Versori client parity: GraphQL auto-pagination, pagination-field stripping, aligned endpoints (sendBatch POST, status endpoints), retry/backoff for 5xx, and `validateWebhook()`.
|
|
12
|
-
- Logging: Use function-based utilities for Node/Deno; use native logs on Versori. Pass the platform log directly to SDK services.
|
|
13
|
-
|
|
14
|
-
## Client Creation Flow
|
|
15
|
-
|
|
16
|
-
```mermaid
|
|
17
|
-
flowchart TD
|
|
18
|
-
START[Your Code Calls createClient] --> DETECT{Detect Runtime Context}
|
|
19
|
-
|
|
20
|
-
DETECT -->|Versori Platform| VERSORI[Create FluentVersoriClient]
|
|
21
|
-
DETECT -->|Node.js/Deno| STANDALONE[Create FluentClient]
|
|
22
|
-
|
|
23
|
-
VERSORI --> VERSORI_AUTH[Use Platform Connection Auth]
|
|
24
|
-
STANDALONE --> OAUTH[Use OAuth2 Authentication]
|
|
25
|
-
|
|
26
|
-
VERSORI_AUTH --> CLIENT1[FluentVersoriClient Instance]
|
|
27
|
-
OAUTH --> CLIENT2[FluentClient Instance]
|
|
28
|
-
|
|
29
|
-
CLIENT1 --> SHARED[Shared Service Layer]
|
|
30
|
-
CLIENT2 --> SHARED
|
|
31
|
-
|
|
32
|
-
SHARED --> API[Fluent Commerce API]
|
|
33
|
-
|
|
34
|
-
style START fill:#e3f2fd
|
|
35
|
-
style DETECT fill:#fff4e6
|
|
36
|
-
style VERSORI fill:#f3e5f5
|
|
37
|
-
style STANDALONE fill:#e8f5e9
|
|
38
|
-
style SHARED fill:#e1f5ff
|
|
39
|
-
style API fill:#ffebee
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
## Context Detection
|
|
43
|
-
|
|
44
|
-
The SDK detects **2 context patterns**:
|
|
45
|
-
|
|
46
|
-
```mermaid
|
|
47
|
-
graph TB
|
|
48
|
-
FACTORY[createClient Factory]
|
|
49
|
-
|
|
50
|
-
subgraph "Context Types"
|
|
51
|
-
VERSORI_HTTP[Versori HTTP Context<br/>Has: fetch, log, activation<br/>Optional: baseUrl, data<br/>No: config]
|
|
52
|
-
DIRECT_CONFIG[Direct Config<br/>Has: config, logger<br/>No: fetch]
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
FACTORY --> CHECK{Has fetch?<br/>No config?}
|
|
56
|
-
|
|
57
|
-
CHECK -->|Yes| VERSORI_HTTP
|
|
58
|
-
CHECK -->|No| DIRECT_CONFIG
|
|
59
|
-
|
|
60
|
-
VERSORI_HTTP --> FVC[FluentVersoriClient<br/>Platform Auth]
|
|
61
|
-
DIRECT_CONFIG --> FC[FluentClient<br/>OAuth2]
|
|
62
|
-
|
|
63
|
-
style FACTORY fill:#fff4e6
|
|
64
|
-
style FVC fill:#f3e5f5
|
|
65
|
-
style FC fill:#e8f5e9
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
**Detection Logic:**
|
|
69
|
-
- **Versori Platform**: `'fetch' in context && !('config' in context)` → `FluentVersoriClient`
|
|
70
|
-
- **Standalone (Node.js/Deno)**: `'config' in context` → `FluentClient`
|
|
71
|
-
|
|
72
|
-
**Note:** The factory doesn't distinguish between Node.js and Deno environments - both use the same `{ config }` context pattern. The distinction is that Deno uses `Deno.env` instead of `process.env`, but the factory doesn't check this directly.
|
|
73
|
-
|
|
74
|
-
## Client Types
|
|
75
|
-
|
|
76
|
-
### FluentClient (OAuth2)
|
|
77
|
-
|
|
78
|
-
Used for standalone Node.js and Deno applications.
|
|
79
|
-
|
|
80
|
-
```mermaid
|
|
81
|
-
sequenceDiagram
|
|
82
|
-
participant App
|
|
83
|
-
participant FluentClient
|
|
84
|
-
participant AuthService
|
|
85
|
-
participant FluentAPI
|
|
86
|
-
|
|
87
|
-
App->>FluentClient: createClient(config)
|
|
88
|
-
FluentClient->>AuthService: Initialize OAuth2
|
|
89
|
-
App->>FluentClient: getBatchStatus(jobId)
|
|
90
|
-
FluentClient->>AuthService: Get access token
|
|
91
|
-
AuthService->>FluentAPI: POST /oauth/token
|
|
92
|
-
FluentAPI-->>AuthService: Access token
|
|
93
|
-
AuthService-->>FluentClient: Token
|
|
94
|
-
FluentClient->>FluentAPI: GET /batch/status
|
|
95
|
-
FluentAPI-->>FluentClient: Batch data
|
|
96
|
-
FluentClient-->>App: Batch status
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
**Key Features:**
|
|
100
|
-
|
|
101
|
-
- OAuth2 client credentials flow
|
|
102
|
-
- Automatic token refresh
|
|
103
|
-
- Retry logic with exponential backoff
|
|
104
|
-
- Environment variable configuration
|
|
105
|
-
|
|
106
|
-
**Configuration:**
|
|
107
|
-
|
|
108
|
-
```typescript
|
|
109
|
-
const client = await createClient({
|
|
110
|
-
config: {
|
|
111
|
-
baseUrl: 'https://api.fluentcommerce.com',
|
|
112
|
-
clientId: process.env.FLUENT_CLIENT_ID,
|
|
113
|
-
clientSecret: process.env.FLUENT_CLIENT_SECRET,
|
|
114
|
-
retailerId: process.env.FLUENT_RETAILER_ID,
|
|
115
|
-
},
|
|
116
|
-
});
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
### FluentVersoriClient (Platform Auth)
|
|
120
|
-
|
|
121
|
-
Used within the Versori platform with connection-based authentication.
|
|
122
|
-
|
|
123
|
-
```mermaid
|
|
124
|
-
sequenceDiagram
|
|
125
|
-
participant Versori
|
|
126
|
-
participant FluentVersoriClient
|
|
127
|
-
participant Connection
|
|
128
|
-
participant FluentAPI
|
|
129
|
-
|
|
130
|
-
Versori->>FluentVersoriClient: createClient(ctx)
|
|
131
|
-
FluentVersoriClient->>Connection: Use platform connection
|
|
132
|
-
Versori->>FluentVersoriClient: getBatchStatus(jobId)
|
|
133
|
-
FluentVersoriClient->>Connection: Get authenticated fetch
|
|
134
|
-
Connection-->>FluentVersoriClient: ctx.fetch (pre-authenticated)
|
|
135
|
-
FluentVersoriClient->>FluentAPI: GET /batch/status
|
|
136
|
-
FluentAPI-->>FluentVersoriClient: Batch data
|
|
137
|
-
FluentVersoriClient-->>Versori: Batch status
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
**Key Features:**
|
|
141
|
-
|
|
142
|
-
- Platform-managed authentication (no manual OAuth2)
|
|
143
|
-
- Automatic logging integration
|
|
144
|
-
- KV storage support for state management
|
|
145
|
-
- Connection-based configuration
|
|
146
|
-
|
|
147
|
-
**Configuration:**
|
|
148
|
-
|
|
149
|
-
```typescript
|
|
150
|
-
// Prefer the universal factory on Versori
|
|
151
|
-
const client = await createClient(context);
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
## Authentication Flow
|
|
155
|
-
|
|
156
|
-
### OAuth2 Flow (FluentClient)
|
|
157
|
-
|
|
158
|
-
```mermaid
|
|
159
|
-
sequenceDiagram
|
|
160
|
-
participant Client
|
|
161
|
-
participant AuthService
|
|
162
|
-
participant TokenCache
|
|
163
|
-
participant FluentAPI
|
|
164
|
-
|
|
165
|
-
Client->>AuthService: getAccessToken()
|
|
166
|
-
AuthService->>TokenCache: Check cached token
|
|
167
|
-
|
|
168
|
-
alt Token Valid
|
|
169
|
-
TokenCache-->>AuthService: Return cached token
|
|
170
|
-
else Token Expired or Missing
|
|
171
|
-
AuthService->>FluentAPI: POST /oauth/token
|
|
172
|
-
FluentAPI-->>AuthService: New access token
|
|
173
|
-
AuthService->>TokenCache: Cache token
|
|
174
|
-
end
|
|
175
|
-
|
|
176
|
-
AuthService-->>Client: Access token
|
|
177
|
-
Client->>FluentAPI: API request with Bearer token
|
|
178
|
-
FluentAPI-->>Client: Response
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
**Token Management:**
|
|
182
|
-
|
|
183
|
-
- Tokens cached in memory
|
|
184
|
-
- Automatic refresh before expiration
|
|
185
|
-
- Thread-safe token renewal
|
|
186
|
-
- Configurable token endpoint
|
|
187
|
-
|
|
188
|
-
### Platform Auth Flow (FluentVersoriClient)
|
|
189
|
-
|
|
190
|
-
```mermaid
|
|
191
|
-
sequenceDiagram
|
|
192
|
-
participant Workflow
|
|
193
|
-
participant FluentVersoriClient
|
|
194
|
-
participant VersoriPlatform
|
|
195
|
-
participant FluentAPI
|
|
196
|
-
|
|
197
|
-
VersoriPlatform->>Workflow: Trigger workflow
|
|
198
|
-
Workflow->>FluentVersoriClient: Create client from connection
|
|
199
|
-
FluentVersoriClient->>VersoriPlatform: Get authenticated fetch
|
|
200
|
-
VersoriPlatform-->>FluentVersoriClient: ctx.fetch (pre-authenticated)
|
|
201
|
-
FluentVersoriClient->>FluentAPI: API request (platform handles auth)
|
|
202
|
-
FluentAPI-->>FluentVersoriClient: Response
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
**Platform Benefits:**
|
|
206
|
-
|
|
207
|
-
- No manual credential management
|
|
208
|
-
- Automatic token rotation
|
|
209
|
-
- Centralized connection configuration
|
|
210
|
-
- Built-in security compliance
|
|
211
|
-
|
|
212
|
-
## Shared Service Layer
|
|
213
|
-
|
|
214
|
-
Both client types use the same underlying service implementations:
|
|
215
|
-
|
|
216
|
-
```mermaid
|
|
217
|
-
graph TB
|
|
218
|
-
subgraph "Client Layer"
|
|
219
|
-
FC[FluentClient]
|
|
220
|
-
FVC[FluentVersoriClient]
|
|
221
|
-
end
|
|
222
|
-
|
|
223
|
-
subgraph "Shared Services"
|
|
224
|
-
BATCH[FluentBatchManager]
|
|
225
|
-
MAPPER[UniversalMapper]
|
|
226
|
-
STATE[StateService]
|
|
227
|
-
S3[S3Service]
|
|
228
|
-
end
|
|
229
|
-
|
|
230
|
-
FC --> BATCH
|
|
231
|
-
FC --> MAPPER
|
|
232
|
-
FVC --> BATCH
|
|
233
|
-
FVC --> MAPPER
|
|
234
|
-
|
|
235
|
-
BATCH --> STATE
|
|
236
|
-
MAPPER --> STATE
|
|
237
|
-
|
|
238
|
-
style FC fill:#e8f5e9
|
|
239
|
-
style FVC fill:#f3e5f5
|
|
240
|
-
style BATCH fill:#e3f2fd
|
|
241
|
-
style MAPPER fill:#fff3e0
|
|
242
|
-
style STATE fill:#e8f5e9
|
|
243
|
-
style S3 fill:#ffebee
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
**Why This Matters:**
|
|
247
|
-
|
|
248
|
-
- Write code once, run anywhere (Node.js, Deno, Versori)
|
|
249
|
-
- Consistent behavior across environments
|
|
250
|
-
- Shared testing and validation
|
|
251
|
-
- Easier maintenance
|
|
252
|
-
|
|
253
|
-
## Runtime Compatibility
|
|
254
|
-
|
|
255
|
-
```mermaid
|
|
256
|
-
graph LR
|
|
257
|
-
SDK[FC Connect SDK]
|
|
258
|
-
|
|
259
|
-
subgraph "Node.js Runtime"
|
|
260
|
-
NODE_FC[FluentClient]
|
|
261
|
-
NODE_SERVICES[All Services]
|
|
262
|
-
NODE_AUTH[OAuth2 Auth]
|
|
263
|
-
end
|
|
264
|
-
|
|
265
|
-
subgraph "Deno Runtime"
|
|
266
|
-
DENO_FC[FluentClient]
|
|
267
|
-
DENO_SERVICES[All Services]
|
|
268
|
-
DENO_AUTH[OAuth2 Auth]
|
|
269
|
-
end
|
|
270
|
-
|
|
271
|
-
subgraph "Versori Platform"
|
|
272
|
-
VERSORI_FVC[FluentVersoriClient]
|
|
273
|
-
VERSORI_SERVICES[All Services]
|
|
274
|
-
VERSORI_AUTH[Platform Auth]
|
|
275
|
-
VERSORI_KV[KV Storage]
|
|
276
|
-
end
|
|
277
|
-
|
|
278
|
-
SDK --> NODE_FC
|
|
279
|
-
SDK --> DENO_FC
|
|
280
|
-
SDK --> VERSORI_FVC
|
|
281
|
-
|
|
282
|
-
NODE_FC --> NODE_SERVICES
|
|
283
|
-
NODE_SERVICES --> NODE_AUTH
|
|
284
|
-
|
|
285
|
-
DENO_FC --> DENO_SERVICES
|
|
286
|
-
DENO_SERVICES --> DENO_AUTH
|
|
287
|
-
|
|
288
|
-
VERSORI_FVC --> VERSORI_SERVICES
|
|
289
|
-
VERSORI_SERVICES --> VERSORI_AUTH
|
|
290
|
-
VERSORI_SERVICES --> VERSORI_KV
|
|
291
|
-
|
|
292
|
-
style SDK fill:#e3f2fd
|
|
293
|
-
style NODE_FC fill:#e8f5e9
|
|
294
|
-
style DENO_FC fill:#fff3e0
|
|
295
|
-
style VERSORI_FVC fill:#f3e5f5
|
|
296
|
-
```
|
|
297
|
-
|
|
298
|
-
**Compatibility Matrix:**
|
|
299
|
-
|
|
300
|
-
| Feature | Node.js | Deno | Versori |
|
|
301
|
-
| ------------- | ----------- | ----------- | ----------------------- |
|
|
302
|
-
| OAuth2 Auth | ✅ | ✅ | ❌ (uses platform auth) |
|
|
303
|
-
| Platform Auth | ❌ | ❌ | ✅ |
|
|
304
|
-
| All Services | ✅ | ✅ | ✅ |
|
|
305
|
-
| KV Storage | ⚠️ (custom) | ⚠️ (custom) | ✅ (built-in) |
|
|
306
|
-
| Logging | Console | Console | Platform |
|
|
307
|
-
| Build Output | CJS/ESM | ESM | ESM |
|
|
308
|
-
|
|
309
|
-
## Best Practices
|
|
310
|
-
|
|
311
|
-
### 1. Always Use the Factory
|
|
312
|
-
|
|
313
|
-
```typescript
|
|
314
|
-
// ✅ CORRECT - Auto-detects context
|
|
315
|
-
import { createClient } from '@fluentcommerce/fc-connect-sdk';
|
|
316
|
-
const client = await createClient(ctx); // Pass Versori context directly
|
|
317
|
-
|
|
318
|
-
// ❌ WRONG - Bypasses context detection (do not use)
|
|
319
|
-
// import { FluentClient } from '@fluentcommerce/fc-connect-sdk';
|
|
320
|
-
// const client = new FluentClient(config);
|
|
321
|
-
|
|
322
|
-
// ✅ CORRECT - Use universal factory
|
|
323
|
-
import { createClient } from '@fluentcommerce/fc-connect-sdk';
|
|
324
|
-
const client = await createClient({ config });
|
|
325
|
-
```
|
|
326
|
-
|
|
327
|
-
### 2. Environment-Specific Configuration
|
|
328
|
-
|
|
329
|
-
```typescript
|
|
330
|
-
// Node.js/Deno - Use environment variables
|
|
331
|
-
const client = await createClient({
|
|
332
|
-
config: {
|
|
333
|
-
baseUrl: process.env.FLUENT_BASE_URL!,
|
|
334
|
-
clientId: process.env.FLUENT_CLIENT_ID!,
|
|
335
|
-
clientSecret: process.env.FLUENT_CLIENT_SECRET!,
|
|
336
|
-
retailerId: process.env.FLUENT_RETAILER_ID,
|
|
337
|
-
},
|
|
338
|
-
});
|
|
339
|
-
|
|
340
|
-
// Versori - Use platform context
|
|
341
|
-
const client = await createClient(ctx);
|
|
342
|
-
```
|
|
343
|
-
|
|
344
|
-
### 3. Error Handling
|
|
345
|
-
|
|
346
|
-
```typescript
|
|
347
|
-
try {
|
|
348
|
-
const client = await createClient({ config });
|
|
349
|
-
const job = await client.createJob({ name: 'inventory-sync' });
|
|
350
|
-
} catch (error) {
|
|
351
|
-
if ((error as Error).message.includes('authentication')) {
|
|
352
|
-
// Handle auth errors
|
|
353
|
-
} else if ((error as Error).message.includes('network')) {
|
|
354
|
-
// Handle network errors
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
```
|
|
358
|
-
|
|
359
|
-
**Note:** `createClient` automatically logs success/failure when a logger is provided (uses `ctx.log` on Versori, `logger` property for standalone apps).
|
|
360
|
-
|
|
361
|
-
**Connection Validation:** Use `{ validateConnection: true }` option to validate authentication immediately:
|
|
362
|
-
```typescript
|
|
363
|
-
// Fail fast - validates credentials on creation
|
|
364
|
-
const client = await createClient({ config }, { validateConnection: true });
|
|
365
|
-
```
|
|
366
|
-
When enabled, executes `query { me { ref } }` to verify authentication. Default: `false` (fast creation, validation on first API call).
|
|
367
|
-
|
|
368
|
-
## Client Method Categories
|
|
369
|
-
|
|
370
|
-
### Core Client Methods
|
|
371
|
-
|
|
372
|
-
- `graphql(payload)` - Execute query or mutation (auto-pagination for queries)
|
|
373
|
-
- `query(queryOrPayload, variables?)` - Convenience query helper
|
|
374
|
-
- `mutate(mutationOrPayload, variables?)` - Convenience mutation helper
|
|
375
|
-
- `sendEvent(event, mode?)` - Send Fluent event (sync/async)
|
|
376
|
-
|
|
377
|
-
### Retailer Management
|
|
378
|
-
|
|
379
|
-
- `setRetailerId(retailerId)` - Set retailer ID for API requests
|
|
380
|
-
- `getRetailerId()` - Get current retailer ID
|
|
381
|
-
|
|
382
|
-
### Job & Batch
|
|
383
|
-
|
|
384
|
-
- `createJob(payload)` - Create batch job
|
|
385
|
-
- `sendBatch(jobId, payload)` - Submit batch to job
|
|
386
|
-
- `getJobStatus(jobId)` - Poll job status
|
|
387
|
-
- `getBatchStatus(jobId, batchId)` - Poll batch status
|
|
388
|
-
- `getJobResults(jobId)` - Fetch job results
|
|
389
|
-
|
|
390
|
-
### Webhook Validation
|
|
391
|
-
|
|
392
|
-
- `validateWebhook(payload, signature?, rawPayload?)` - Validate Fluent webhook signatures with HMAC-SHA256. Returns `Promise<boolean>`.
|
|
393
|
-
|
|
394
|
-
**Example:**
|
|
395
|
-
|
|
396
|
-
```typescript
|
|
397
|
-
// Basic validation (no signature)
|
|
398
|
-
const isValid = await client.validateWebhook(payload);
|
|
399
|
-
|
|
400
|
-
// With signature validation
|
|
401
|
-
const isValid = await client.validateWebhook(
|
|
402
|
-
payload,
|
|
403
|
-
request.headers['x-fluent-signature'],
|
|
404
|
-
rawRequestBody
|
|
405
|
-
);
|
|
406
|
-
|
|
407
|
-
if (!isValid) {
|
|
408
|
-
throw new Error('Invalid webhook signature');
|
|
409
|
-
}
|
|
410
|
-
|
|
411
|
-
// Process validated webhook
|
|
412
|
-
console.log('Event type:', payload.name);
|
|
413
|
-
```
|
|
414
|
-
|
|
415
|
-
### Static Factory Methods
|
|
416
|
-
|
|
417
|
-
- `FluentClient.fromVersoriConnection(connection, logger, context?)` - Create FluentClient from Versori connection object (useful when you have explicit connection references)
|
|
418
|
-
- `FluentVersoriClient.fromContext(context)` - Create Versori client from Versori HTTP context
|
|
419
|
-
|
|
420
|
-
## Next Steps
|
|
421
|
-
|
|
422
|
-
- [Data Flow Architecture](./architecture-03-data-flow.md) - Understand data processing flows
|
|
423
|
-
- [Service Layer](./architecture-04-service-layer.md) - Explore service organization
|
|
424
|
-
- [Getting Started Guide](../../00-START-HERE/getting-started.md) - Start building
|
|
1
|
+
# Client Architecture
|
|
2
|
+
|
|
3
|
+
This document explains how the FC Connect SDK handles client creation, authentication, and runtime detection.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
The SDK provides a **universal client factory** that automatically detects your runtime environment and creates the appropriate client with the correct authentication mechanism.
|
|
8
|
+
|
|
9
|
+
**Key Features:**
|
|
10
|
+
|
|
11
|
+
- Versori client parity: GraphQL auto-pagination, pagination-field stripping, aligned endpoints (sendBatch POST, status endpoints), retry/backoff for 5xx, and `validateWebhook()`.
|
|
12
|
+
- Logging: Use function-based utilities for Node/Deno; use native logs on Versori. Pass the platform log directly to SDK services.
|
|
13
|
+
|
|
14
|
+
## Client Creation Flow
|
|
15
|
+
|
|
16
|
+
```mermaid
|
|
17
|
+
flowchart TD
|
|
18
|
+
START[Your Code Calls createClient] --> DETECT{Detect Runtime Context}
|
|
19
|
+
|
|
20
|
+
DETECT -->|Versori Platform| VERSORI[Create FluentVersoriClient]
|
|
21
|
+
DETECT -->|Node.js/Deno| STANDALONE[Create FluentClient]
|
|
22
|
+
|
|
23
|
+
VERSORI --> VERSORI_AUTH[Use Platform Connection Auth]
|
|
24
|
+
STANDALONE --> OAUTH[Use OAuth2 Authentication]
|
|
25
|
+
|
|
26
|
+
VERSORI_AUTH --> CLIENT1[FluentVersoriClient Instance]
|
|
27
|
+
OAUTH --> CLIENT2[FluentClient Instance]
|
|
28
|
+
|
|
29
|
+
CLIENT1 --> SHARED[Shared Service Layer]
|
|
30
|
+
CLIENT2 --> SHARED
|
|
31
|
+
|
|
32
|
+
SHARED --> API[Fluent Commerce API]
|
|
33
|
+
|
|
34
|
+
style START fill:#e3f2fd
|
|
35
|
+
style DETECT fill:#fff4e6
|
|
36
|
+
style VERSORI fill:#f3e5f5
|
|
37
|
+
style STANDALONE fill:#e8f5e9
|
|
38
|
+
style SHARED fill:#e1f5ff
|
|
39
|
+
style API fill:#ffebee
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Context Detection
|
|
43
|
+
|
|
44
|
+
The SDK detects **2 context patterns**:
|
|
45
|
+
|
|
46
|
+
```mermaid
|
|
47
|
+
graph TB
|
|
48
|
+
FACTORY[createClient Factory]
|
|
49
|
+
|
|
50
|
+
subgraph "Context Types"
|
|
51
|
+
VERSORI_HTTP[Versori HTTP Context<br/>Has: fetch, log, activation<br/>Optional: baseUrl, data<br/>No: config]
|
|
52
|
+
DIRECT_CONFIG[Direct Config<br/>Has: config, logger<br/>No: fetch]
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
FACTORY --> CHECK{Has fetch?<br/>No config?}
|
|
56
|
+
|
|
57
|
+
CHECK -->|Yes| VERSORI_HTTP
|
|
58
|
+
CHECK -->|No| DIRECT_CONFIG
|
|
59
|
+
|
|
60
|
+
VERSORI_HTTP --> FVC[FluentVersoriClient<br/>Platform Auth]
|
|
61
|
+
DIRECT_CONFIG --> FC[FluentClient<br/>OAuth2]
|
|
62
|
+
|
|
63
|
+
style FACTORY fill:#fff4e6
|
|
64
|
+
style FVC fill:#f3e5f5
|
|
65
|
+
style FC fill:#e8f5e9
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
**Detection Logic:**
|
|
69
|
+
- **Versori Platform**: `'fetch' in context && !('config' in context)` → `FluentVersoriClient`
|
|
70
|
+
- **Standalone (Node.js/Deno)**: `'config' in context` → `FluentClient`
|
|
71
|
+
|
|
72
|
+
**Note:** The factory doesn't distinguish between Node.js and Deno environments - both use the same `{ config }` context pattern. The distinction is that Deno uses `Deno.env` instead of `process.env`, but the factory doesn't check this directly.
|
|
73
|
+
|
|
74
|
+
## Client Types
|
|
75
|
+
|
|
76
|
+
### FluentClient (OAuth2)
|
|
77
|
+
|
|
78
|
+
Used for standalone Node.js and Deno applications.
|
|
79
|
+
|
|
80
|
+
```mermaid
|
|
81
|
+
sequenceDiagram
|
|
82
|
+
participant App
|
|
83
|
+
participant FluentClient
|
|
84
|
+
participant AuthService
|
|
85
|
+
participant FluentAPI
|
|
86
|
+
|
|
87
|
+
App->>FluentClient: createClient(config)
|
|
88
|
+
FluentClient->>AuthService: Initialize OAuth2
|
|
89
|
+
App->>FluentClient: getBatchStatus(jobId)
|
|
90
|
+
FluentClient->>AuthService: Get access token
|
|
91
|
+
AuthService->>FluentAPI: POST /oauth/token
|
|
92
|
+
FluentAPI-->>AuthService: Access token
|
|
93
|
+
AuthService-->>FluentClient: Token
|
|
94
|
+
FluentClient->>FluentAPI: GET /batch/status
|
|
95
|
+
FluentAPI-->>FluentClient: Batch data
|
|
96
|
+
FluentClient-->>App: Batch status
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
**Key Features:**
|
|
100
|
+
|
|
101
|
+
- OAuth2 client credentials flow
|
|
102
|
+
- Automatic token refresh
|
|
103
|
+
- Retry logic with exponential backoff
|
|
104
|
+
- Environment variable configuration
|
|
105
|
+
|
|
106
|
+
**Configuration:**
|
|
107
|
+
|
|
108
|
+
```typescript
|
|
109
|
+
const client = await createClient({
|
|
110
|
+
config: {
|
|
111
|
+
baseUrl: 'https://api.fluentcommerce.com',
|
|
112
|
+
clientId: process.env.FLUENT_CLIENT_ID,
|
|
113
|
+
clientSecret: process.env.FLUENT_CLIENT_SECRET,
|
|
114
|
+
retailerId: process.env.FLUENT_RETAILER_ID,
|
|
115
|
+
},
|
|
116
|
+
});
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### FluentVersoriClient (Platform Auth)
|
|
120
|
+
|
|
121
|
+
Used within the Versori platform with connection-based authentication.
|
|
122
|
+
|
|
123
|
+
```mermaid
|
|
124
|
+
sequenceDiagram
|
|
125
|
+
participant Versori
|
|
126
|
+
participant FluentVersoriClient
|
|
127
|
+
participant Connection
|
|
128
|
+
participant FluentAPI
|
|
129
|
+
|
|
130
|
+
Versori->>FluentVersoriClient: createClient(ctx)
|
|
131
|
+
FluentVersoriClient->>Connection: Use platform connection
|
|
132
|
+
Versori->>FluentVersoriClient: getBatchStatus(jobId)
|
|
133
|
+
FluentVersoriClient->>Connection: Get authenticated fetch
|
|
134
|
+
Connection-->>FluentVersoriClient: ctx.fetch (pre-authenticated)
|
|
135
|
+
FluentVersoriClient->>FluentAPI: GET /batch/status
|
|
136
|
+
FluentAPI-->>FluentVersoriClient: Batch data
|
|
137
|
+
FluentVersoriClient-->>Versori: Batch status
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
**Key Features:**
|
|
141
|
+
|
|
142
|
+
- Platform-managed authentication (no manual OAuth2)
|
|
143
|
+
- Automatic logging integration
|
|
144
|
+
- KV storage support for state management
|
|
145
|
+
- Connection-based configuration
|
|
146
|
+
|
|
147
|
+
**Configuration:**
|
|
148
|
+
|
|
149
|
+
```typescript
|
|
150
|
+
// Prefer the universal factory on Versori
|
|
151
|
+
const client = await createClient(context);
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## Authentication Flow
|
|
155
|
+
|
|
156
|
+
### OAuth2 Flow (FluentClient)
|
|
157
|
+
|
|
158
|
+
```mermaid
|
|
159
|
+
sequenceDiagram
|
|
160
|
+
participant Client
|
|
161
|
+
participant AuthService
|
|
162
|
+
participant TokenCache
|
|
163
|
+
participant FluentAPI
|
|
164
|
+
|
|
165
|
+
Client->>AuthService: getAccessToken()
|
|
166
|
+
AuthService->>TokenCache: Check cached token
|
|
167
|
+
|
|
168
|
+
alt Token Valid
|
|
169
|
+
TokenCache-->>AuthService: Return cached token
|
|
170
|
+
else Token Expired or Missing
|
|
171
|
+
AuthService->>FluentAPI: POST /oauth/token
|
|
172
|
+
FluentAPI-->>AuthService: New access token
|
|
173
|
+
AuthService->>TokenCache: Cache token
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
AuthService-->>Client: Access token
|
|
177
|
+
Client->>FluentAPI: API request with Bearer token
|
|
178
|
+
FluentAPI-->>Client: Response
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
**Token Management:**
|
|
182
|
+
|
|
183
|
+
- Tokens cached in memory
|
|
184
|
+
- Automatic refresh before expiration
|
|
185
|
+
- Thread-safe token renewal
|
|
186
|
+
- Configurable token endpoint
|
|
187
|
+
|
|
188
|
+
### Platform Auth Flow (FluentVersoriClient)
|
|
189
|
+
|
|
190
|
+
```mermaid
|
|
191
|
+
sequenceDiagram
|
|
192
|
+
participant Workflow
|
|
193
|
+
participant FluentVersoriClient
|
|
194
|
+
participant VersoriPlatform
|
|
195
|
+
participant FluentAPI
|
|
196
|
+
|
|
197
|
+
VersoriPlatform->>Workflow: Trigger workflow
|
|
198
|
+
Workflow->>FluentVersoriClient: Create client from connection
|
|
199
|
+
FluentVersoriClient->>VersoriPlatform: Get authenticated fetch
|
|
200
|
+
VersoriPlatform-->>FluentVersoriClient: ctx.fetch (pre-authenticated)
|
|
201
|
+
FluentVersoriClient->>FluentAPI: API request (platform handles auth)
|
|
202
|
+
FluentAPI-->>FluentVersoriClient: Response
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
**Platform Benefits:**
|
|
206
|
+
|
|
207
|
+
- No manual credential management
|
|
208
|
+
- Automatic token rotation
|
|
209
|
+
- Centralized connection configuration
|
|
210
|
+
- Built-in security compliance
|
|
211
|
+
|
|
212
|
+
## Shared Service Layer
|
|
213
|
+
|
|
214
|
+
Both client types use the same underlying service implementations:
|
|
215
|
+
|
|
216
|
+
```mermaid
|
|
217
|
+
graph TB
|
|
218
|
+
subgraph "Client Layer"
|
|
219
|
+
FC[FluentClient]
|
|
220
|
+
FVC[FluentVersoriClient]
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
subgraph "Shared Services"
|
|
224
|
+
BATCH[FluentBatchManager]
|
|
225
|
+
MAPPER[UniversalMapper]
|
|
226
|
+
STATE[StateService]
|
|
227
|
+
S3[S3Service]
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
FC --> BATCH
|
|
231
|
+
FC --> MAPPER
|
|
232
|
+
FVC --> BATCH
|
|
233
|
+
FVC --> MAPPER
|
|
234
|
+
|
|
235
|
+
BATCH --> STATE
|
|
236
|
+
MAPPER --> STATE
|
|
237
|
+
|
|
238
|
+
style FC fill:#e8f5e9
|
|
239
|
+
style FVC fill:#f3e5f5
|
|
240
|
+
style BATCH fill:#e3f2fd
|
|
241
|
+
style MAPPER fill:#fff3e0
|
|
242
|
+
style STATE fill:#e8f5e9
|
|
243
|
+
style S3 fill:#ffebee
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
**Why This Matters:**
|
|
247
|
+
|
|
248
|
+
- Write code once, run anywhere (Node.js, Deno, Versori)
|
|
249
|
+
- Consistent behavior across environments
|
|
250
|
+
- Shared testing and validation
|
|
251
|
+
- Easier maintenance
|
|
252
|
+
|
|
253
|
+
## Runtime Compatibility
|
|
254
|
+
|
|
255
|
+
```mermaid
|
|
256
|
+
graph LR
|
|
257
|
+
SDK[FC Connect SDK]
|
|
258
|
+
|
|
259
|
+
subgraph "Node.js Runtime"
|
|
260
|
+
NODE_FC[FluentClient]
|
|
261
|
+
NODE_SERVICES[All Services]
|
|
262
|
+
NODE_AUTH[OAuth2 Auth]
|
|
263
|
+
end
|
|
264
|
+
|
|
265
|
+
subgraph "Deno Runtime"
|
|
266
|
+
DENO_FC[FluentClient]
|
|
267
|
+
DENO_SERVICES[All Services]
|
|
268
|
+
DENO_AUTH[OAuth2 Auth]
|
|
269
|
+
end
|
|
270
|
+
|
|
271
|
+
subgraph "Versori Platform"
|
|
272
|
+
VERSORI_FVC[FluentVersoriClient]
|
|
273
|
+
VERSORI_SERVICES[All Services]
|
|
274
|
+
VERSORI_AUTH[Platform Auth]
|
|
275
|
+
VERSORI_KV[KV Storage]
|
|
276
|
+
end
|
|
277
|
+
|
|
278
|
+
SDK --> NODE_FC
|
|
279
|
+
SDK --> DENO_FC
|
|
280
|
+
SDK --> VERSORI_FVC
|
|
281
|
+
|
|
282
|
+
NODE_FC --> NODE_SERVICES
|
|
283
|
+
NODE_SERVICES --> NODE_AUTH
|
|
284
|
+
|
|
285
|
+
DENO_FC --> DENO_SERVICES
|
|
286
|
+
DENO_SERVICES --> DENO_AUTH
|
|
287
|
+
|
|
288
|
+
VERSORI_FVC --> VERSORI_SERVICES
|
|
289
|
+
VERSORI_SERVICES --> VERSORI_AUTH
|
|
290
|
+
VERSORI_SERVICES --> VERSORI_KV
|
|
291
|
+
|
|
292
|
+
style SDK fill:#e3f2fd
|
|
293
|
+
style NODE_FC fill:#e8f5e9
|
|
294
|
+
style DENO_FC fill:#fff3e0
|
|
295
|
+
style VERSORI_FVC fill:#f3e5f5
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
**Compatibility Matrix:**
|
|
299
|
+
|
|
300
|
+
| Feature | Node.js | Deno | Versori |
|
|
301
|
+
| ------------- | ----------- | ----------- | ----------------------- |
|
|
302
|
+
| OAuth2 Auth | ✅ | ✅ | ❌ (uses platform auth) |
|
|
303
|
+
| Platform Auth | ❌ | ❌ | ✅ |
|
|
304
|
+
| All Services | ✅ | ✅ | ✅ |
|
|
305
|
+
| KV Storage | ⚠️ (custom) | ⚠️ (custom) | ✅ (built-in) |
|
|
306
|
+
| Logging | Console | Console | Platform |
|
|
307
|
+
| Build Output | CJS/ESM | ESM | ESM |
|
|
308
|
+
|
|
309
|
+
## Best Practices
|
|
310
|
+
|
|
311
|
+
### 1. Always Use the Factory
|
|
312
|
+
|
|
313
|
+
```typescript
|
|
314
|
+
// ✅ CORRECT - Auto-detects context
|
|
315
|
+
import { createClient } from '@fluentcommerce/fc-connect-sdk';
|
|
316
|
+
const client = await createClient(ctx); // Pass Versori context directly
|
|
317
|
+
|
|
318
|
+
// ❌ WRONG - Bypasses context detection (do not use)
|
|
319
|
+
// import { FluentClient } from '@fluentcommerce/fc-connect-sdk';
|
|
320
|
+
// const client = new FluentClient(config);
|
|
321
|
+
|
|
322
|
+
// ✅ CORRECT - Use universal factory
|
|
323
|
+
import { createClient } from '@fluentcommerce/fc-connect-sdk';
|
|
324
|
+
const client = await createClient({ config });
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
### 2. Environment-Specific Configuration
|
|
328
|
+
|
|
329
|
+
```typescript
|
|
330
|
+
// Node.js/Deno - Use environment variables
|
|
331
|
+
const client = await createClient({
|
|
332
|
+
config: {
|
|
333
|
+
baseUrl: process.env.FLUENT_BASE_URL!,
|
|
334
|
+
clientId: process.env.FLUENT_CLIENT_ID!,
|
|
335
|
+
clientSecret: process.env.FLUENT_CLIENT_SECRET!,
|
|
336
|
+
retailerId: process.env.FLUENT_RETAILER_ID,
|
|
337
|
+
},
|
|
338
|
+
});
|
|
339
|
+
|
|
340
|
+
// Versori - Use platform context
|
|
341
|
+
const client = await createClient(ctx);
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
### 3. Error Handling
|
|
345
|
+
|
|
346
|
+
```typescript
|
|
347
|
+
try {
|
|
348
|
+
const client = await createClient({ config });
|
|
349
|
+
const job = await client.createJob({ name: 'inventory-sync' });
|
|
350
|
+
} catch (error) {
|
|
351
|
+
if ((error as Error).message.includes('authentication')) {
|
|
352
|
+
// Handle auth errors
|
|
353
|
+
} else if ((error as Error).message.includes('network')) {
|
|
354
|
+
// Handle network errors
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
**Note:** `createClient` automatically logs success/failure when a logger is provided (uses `ctx.log` on Versori, `logger` property for standalone apps).
|
|
360
|
+
|
|
361
|
+
**Connection Validation:** Use `{ validateConnection: true }` option to validate authentication immediately:
|
|
362
|
+
```typescript
|
|
363
|
+
// Fail fast - validates credentials on creation
|
|
364
|
+
const client = await createClient({ config }, { validateConnection: true });
|
|
365
|
+
```
|
|
366
|
+
When enabled, executes `query { me { ref } }` to verify authentication. Default: `false` (fast creation, validation on first API call).
|
|
367
|
+
|
|
368
|
+
## Client Method Categories
|
|
369
|
+
|
|
370
|
+
### Core Client Methods
|
|
371
|
+
|
|
372
|
+
- `graphql(payload)` - Execute query or mutation (auto-pagination for queries)
|
|
373
|
+
- `query(queryOrPayload, variables?)` - Convenience query helper
|
|
374
|
+
- `mutate(mutationOrPayload, variables?)` - Convenience mutation helper
|
|
375
|
+
- `sendEvent(event, mode?)` - Send Fluent event (sync/async)
|
|
376
|
+
|
|
377
|
+
### Retailer Management
|
|
378
|
+
|
|
379
|
+
- `setRetailerId(retailerId)` - Set retailer ID for API requests
|
|
380
|
+
- `getRetailerId()` - Get current retailer ID
|
|
381
|
+
|
|
382
|
+
### Job & Batch
|
|
383
|
+
|
|
384
|
+
- `createJob(payload)` - Create batch job
|
|
385
|
+
- `sendBatch(jobId, payload)` - Submit batch to job
|
|
386
|
+
- `getJobStatus(jobId)` - Poll job status
|
|
387
|
+
- `getBatchStatus(jobId, batchId)` - Poll batch status
|
|
388
|
+
- `getJobResults(jobId)` - Fetch job results
|
|
389
|
+
|
|
390
|
+
### Webhook Validation
|
|
391
|
+
|
|
392
|
+
- `validateWebhook(payload, signature?, rawPayload?)` - Validate Fluent webhook signatures with HMAC-SHA256. Returns `Promise<boolean>`.
|
|
393
|
+
|
|
394
|
+
**Example:**
|
|
395
|
+
|
|
396
|
+
```typescript
|
|
397
|
+
// Basic validation (no signature)
|
|
398
|
+
const isValid = await client.validateWebhook(payload);
|
|
399
|
+
|
|
400
|
+
// With signature validation
|
|
401
|
+
const isValid = await client.validateWebhook(
|
|
402
|
+
payload,
|
|
403
|
+
request.headers['x-fluent-signature'],
|
|
404
|
+
rawRequestBody
|
|
405
|
+
);
|
|
406
|
+
|
|
407
|
+
if (!isValid) {
|
|
408
|
+
throw new Error('Invalid webhook signature');
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
// Process validated webhook
|
|
412
|
+
console.log('Event type:', payload.name);
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
### Static Factory Methods
|
|
416
|
+
|
|
417
|
+
- `FluentClient.fromVersoriConnection(connection, logger, context?)` - Create FluentClient from Versori connection object (useful when you have explicit connection references)
|
|
418
|
+
- `FluentVersoriClient.fromContext(context)` - Create Versori client from Versori HTTP context
|
|
419
|
+
|
|
420
|
+
## Next Steps
|
|
421
|
+
|
|
422
|
+
- [Data Flow Architecture](./architecture-03-data-flow.md) - Understand data processing flows
|
|
423
|
+
- [Service Layer](./architecture-04-service-layer.md) - Explore service organization
|
|
424
|
+
- [Getting Started Guide](../../00-START-HERE/getting-started.md) - Start building
|