@fluentcommerce/fc-connect-sdk 0.1.54 → 0.1.56
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 +12 -0
- package/README.md +11 -0
- package/dist/cjs/clients/fluent-client.js +13 -6
- package/dist/cjs/utils/pagination-helpers.js +38 -2
- package/dist/cjs/versori/fluent-versori-client.js +11 -5
- package/dist/esm/clients/fluent-client.js +13 -6
- 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/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 -520
- 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
- package/docs/02-CORE-GUIDES/api-reference/cli-profile-integration.md +0 -377
|
@@ -1,407 +1,407 @@
|
|
|
1
|
-
# Advanced Services
|
|
2
|
-
|
|
3
|
-
**Level:** Advanced
|
|
4
|
-
**Category:** Production-Ready Services
|
|
5
|
-
|
|
6
|
-
## Overview
|
|
7
|
-
|
|
8
|
-
Advanced services provide production-grade capabilities for resilience, monitoring, and operational excellence in Fluent Commerce integrations. These services handle complex scenarios like partial failures, job tracking, and batch archival.
|
|
9
|
-
|
|
10
|
-
## When to Use Advanced Services
|
|
11
|
-
|
|
12
|
-
Use these services when you need:
|
|
13
|
-
- **Resilience** - Recover from partial failures without losing all data
|
|
14
|
-
- **Observability** - Track job progress and status across workflows
|
|
15
|
-
- **Compliance** - Archive batches for audit trails
|
|
16
|
-
- **Production-Grade** - Enterprise-ready error handling and recovery
|
|
17
|
-
|
|
18
|
-
## Quick Links
|
|
19
|
-
|
|
20
|
-
- [JobTracker](#jobtracker) - Track job lifecycle and status
|
|
21
|
-
- [PartialBatchRecovery](#partialbatchrecovery) - Recover from partial batch failures
|
|
22
|
-
- [BatchArchivalService](#batcharchivalservice) - Archive batches to S3
|
|
23
|
-
- [Quick Reference](./advanced-services-quick-reference.md) - One-page cheatsheet
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## JobTracker
|
|
28
|
-
|
|
29
|
-
Track job status throughout the workflow lifecycle with automatic timestamp management and TTL support.
|
|
30
|
-
|
|
31
|
-
**Use Cases:**
|
|
32
|
-
- Monitor scheduled workflow progress
|
|
33
|
-
- Track webhook-triggered operations
|
|
34
|
-
- Implement job retry logic
|
|
35
|
-
- Dashboard status displays
|
|
36
|
-
|
|
37
|
-
**Key Features:**
|
|
38
|
-
- Standardized status values (queued, processing, completed, failed)
|
|
39
|
-
- Automatic timestamp tracking (createdAt, startedAt, completedAt, failedAt)
|
|
40
|
-
- TTL support for automatic cleanup (default: 7 days)
|
|
41
|
-
- Safe error handling (never throws on KV errors)
|
|
42
|
-
|
|
43
|
-
**Quick Example:**
|
|
44
|
-
```typescript
|
|
45
|
-
import { JobTracker, VersoriKVAdapter } from '@fluentcommerce/fc-connect-sdk';
|
|
46
|
-
|
|
47
|
-
const tracker = new JobTracker(kvAdapter, logger);
|
|
48
|
-
|
|
49
|
-
// Create job
|
|
50
|
-
await tracker.createJob('scheduled_1729681200000', {
|
|
51
|
-
triggeredBy: 'schedule',
|
|
52
|
-
stage: 'extraction',
|
|
53
|
-
details: { catalogueRef: 'DEFAULT:1' }
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
// Update progress
|
|
57
|
-
await tracker.updateJob('scheduled_1729681200000', {
|
|
58
|
-
status: 'processing',
|
|
59
|
-
stage: 'transformation',
|
|
60
|
-
message: 'Processing 1000 records'
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
// Mark complete
|
|
64
|
-
await tracker.markCompleted('scheduled_1729681200000', {
|
|
65
|
-
recordCount: 1000,
|
|
66
|
-
fileName: 'export.xml'
|
|
67
|
-
});
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
**Learn More:** [JobTracker Guide](./advanced-services-job-tracker.md)
|
|
71
|
-
|
|
72
|
-
---
|
|
73
|
-
|
|
74
|
-
## PartialBatchRecovery
|
|
75
|
-
|
|
76
|
-
Recover from partial batch failures by retrying only failed records instead of the entire batch.
|
|
77
|
-
|
|
78
|
-
**Use Cases:**
|
|
79
|
-
- Handle transient API failures gracefully
|
|
80
|
-
- Implement checkpoint/resume functionality
|
|
81
|
-
- Retry individual failed records
|
|
82
|
-
- Track detailed error information per record
|
|
83
|
-
|
|
84
|
-
**Key Features:**
|
|
85
|
-
- Per-record success/failure tracking
|
|
86
|
-
- Configurable retry logic (retry only failed or entire batch)
|
|
87
|
-
- Checkpoint support for resume functionality
|
|
88
|
-
- Detailed error reporting with timestamps
|
|
89
|
-
- Custom retry predicates
|
|
90
|
-
|
|
91
|
-
**Quick Example:**
|
|
92
|
-
```typescript
|
|
93
|
-
import { PartialBatchRecovery } from '@fluentcommerce/fc-connect-sdk';
|
|
94
|
-
|
|
95
|
-
const recovery = new PartialBatchRecovery(logger);
|
|
96
|
-
|
|
97
|
-
const result = await recovery.processBatchWithRecovery(
|
|
98
|
-
inventoryRecords,
|
|
99
|
-
async (batch) => await client.sendBatch(jobId, {
|
|
100
|
-
action: 'UPSERT',
|
|
101
|
-
entityType: 'INVENTORY',
|
|
102
|
-
entities: batch
|
|
103
|
-
}),
|
|
104
|
-
{
|
|
105
|
-
maxRetries: 3,
|
|
106
|
-
retryOnlyFailed: true,
|
|
107
|
-
checkpointKey: 'inventory-2025-01-30'
|
|
108
|
-
}
|
|
109
|
-
);
|
|
110
|
-
|
|
111
|
-
console.log(`Success: ${result.successCount}, Failed: ${result.failedCount}`);
|
|
112
|
-
if (result.failedRecords.length > 0) {
|
|
113
|
-
// Handle failed records
|
|
114
|
-
await handleFailures(result.failedRecords);
|
|
115
|
-
}
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
**Learn More:** [PartialBatchRecovery Guide](./advanced-services-partial-batch-recovery.md)
|
|
119
|
-
|
|
120
|
-
---
|
|
121
|
-
|
|
122
|
-
## BatchArchivalService
|
|
123
|
-
|
|
124
|
-
Archive batch payloads to S3 with hierarchical time-based paths for compliance and audit trails.
|
|
125
|
-
|
|
126
|
-
**Use Cases:**
|
|
127
|
-
- Compliance and audit requirements
|
|
128
|
-
- Batch history tracking
|
|
129
|
-
- Debugging batch issues
|
|
130
|
-
- Data retention policies
|
|
131
|
-
|
|
132
|
-
**Key Features:**
|
|
133
|
-
- Hierarchical S3 paths: `{basePath}/{YYYY}/{MM}/{DD}/{HH}/{MM}/batch-{jobId}-{batchId}.json`
|
|
134
|
-
- Includes metadata (clientId, archivedAt, batch status)
|
|
135
|
-
- Presigned URL uploads for security
|
|
136
|
-
- Bulk archival support
|
|
137
|
-
- Automatic timestamp tracking
|
|
138
|
-
|
|
139
|
-
**Quick Example:**
|
|
140
|
-
```typescript
|
|
141
|
-
import { BatchArchivalService, S3PresignService } from '@fluentcommerce/fc-connect-sdk';
|
|
142
|
-
|
|
143
|
-
const archival = new BatchArchivalService(
|
|
144
|
-
{
|
|
145
|
-
bucketName: 'fluent-batch-archives',
|
|
146
|
-
region: 'us-east-1',
|
|
147
|
-
credentials: { accessKeyId, secretAccessKey },
|
|
148
|
-
basePath: 'production/batches',
|
|
149
|
-
expiresSeconds: 300
|
|
150
|
-
},
|
|
151
|
-
new S3PresignService(),
|
|
152
|
-
logger
|
|
153
|
-
);
|
|
154
|
-
|
|
155
|
-
const result = await archival.archiveBatch({
|
|
156
|
-
batch: batchPayload,
|
|
157
|
-
batchResponse: { id: 'batch_123', jobId: 'job_456', status: 'COMPLETED' },
|
|
158
|
-
jobId: 'job_456'
|
|
159
|
-
}, 'client-123');
|
|
160
|
-
|
|
161
|
-
console.log(`Archived to: ${result.archivedPath}`);
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
**Learn More:** [BatchArchivalService Guide](./advanced-services-batch-archival.md)
|
|
165
|
-
|
|
166
|
-
---
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
Manage KV store operations including list, export, bulk operations, and debugging.
|
|
170
|
-
|
|
171
|
-
**Use Cases:**
|
|
172
|
-
- Debug KV state in production
|
|
173
|
-
- Export/import KV data for backup
|
|
174
|
-
- Bulk delete operations
|
|
175
|
-
- KV store migrations
|
|
176
|
-
|
|
177
|
-
**Key Features:**
|
|
178
|
-
- List all KV entries with prefix filtering
|
|
179
|
-
- Export KV data to JSON
|
|
180
|
-
- Bulk operations (set, delete)
|
|
181
|
-
- Safe iteration with error handling
|
|
182
|
-
- Progress callbacks for long operations
|
|
183
|
-
|
|
184
|
-
**Quick Example:**
|
|
185
|
-
```typescript
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
// List all entries
|
|
189
|
-
const entries = await kvManager.listKeys({ prefix: 'job:' });
|
|
190
|
-
console.log(`Found ${entries.length} job entries`);
|
|
191
|
-
|
|
192
|
-
// Export to JSON
|
|
193
|
-
const exportData = await kvManager.exportKeys({ prefix: 'state:' });
|
|
194
|
-
await fs.writeFile('kv-backup.json', JSON.stringify(exportData, null, 2));
|
|
195
|
-
|
|
196
|
-
// Bulk delete entries
|
|
197
|
-
await kvManager.bulkDelete([
|
|
198
|
-
['job', 'old_job_1'],
|
|
199
|
-
['job', 'old_job_2']
|
|
200
|
-
]);
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
---
|
|
205
|
-
|
|
206
|
-
## Comparison Matrix
|
|
207
|
-
|
|
208
|
-
| Service | Purpose | When to Use | Complexity | Impact |
|
|
209
|
-
|---------|---------|-------------|------------|---------|
|
|
210
|
-
| **JobTracker** | Job lifecycle tracking | Always in production workflows | Low | High |
|
|
211
|
-
| **PartialBatchRecovery** | Partial failure recovery | When batch failures are costly | Medium | High |
|
|
212
|
-
| **BatchArchivalService** | Audit trails | Compliance requirements | Low | Medium |
|
|
213
|
-
|
|
214
|
-
---
|
|
215
|
-
|
|
216
|
-
## Patterns
|
|
217
|
-
|
|
218
|
-
### 1. Track Jobs
|
|
219
|
-
```typescript
|
|
220
|
-
await tracker.createJob(jobId, { triggeredBy: 'schedule' });
|
|
221
|
-
try {
|
|
222
|
-
await processWorkflow();
|
|
223
|
-
await tracker.markCompleted(jobId, { recordCount: 1000 });
|
|
224
|
-
} catch (error) {
|
|
225
|
-
await tracker.markFailed(jobId, error);
|
|
226
|
-
}
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
### 2. Use Partial Recovery for Critical Data
|
|
230
|
-
```typescript
|
|
231
|
-
const result = await recovery.processBatchWithRecovery(
|
|
232
|
-
records,
|
|
233
|
-
batchProcessor,
|
|
234
|
-
{ maxRetries: 3, retryOnlyFailed: true }
|
|
235
|
-
);
|
|
236
|
-
|
|
237
|
-
if (result.failedRecords.length > 0) {
|
|
238
|
-
await sendToDeadLetterQueue(result.failedRecords);
|
|
239
|
-
}
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
### 3. Archive Batches for Audit Trails
|
|
243
|
-
```typescript
|
|
244
|
-
const batchResponse = await client.sendBatch(jobId, batch);
|
|
245
|
-
await archival.archiveBatch({
|
|
246
|
-
batch,
|
|
247
|
-
batchResponse,
|
|
248
|
-
jobId
|
|
249
|
-
}, clientId);
|
|
250
|
-
```
|
|
251
|
-
|
|
252
|
-
### 4. Export KV State for Analysis
|
|
253
|
-
```typescript
|
|
254
|
-
const entries = await kvManager.listKeys({ prefix: 'job:' });
|
|
255
|
-
const failedJobs = entries.filter(e => e.value.status === 'failed');
|
|
256
|
-
console.log('Failed jobs:', failedJobs);
|
|
257
|
-
```
|
|
258
|
-
|
|
259
|
-
---
|
|
260
|
-
|
|
261
|
-
## Integration Patterns
|
|
262
|
-
|
|
263
|
-
### Complete Production Workflow
|
|
264
|
-
|
|
265
|
-
```typescript
|
|
266
|
-
import {
|
|
267
|
-
createClient,
|
|
268
|
-
JobTracker,
|
|
269
|
-
PartialBatchRecovery,
|
|
270
|
-
BatchArchivalService,
|
|
271
|
-
S3PresignService,
|
|
272
|
-
VersoriKVAdapter,
|
|
273
|
-
} from '@fluentcommerce/fc-connect-sdk';
|
|
274
|
-
|
|
275
|
-
async function productionWorkflow(ctx: any) {
|
|
276
|
-
const { log, openKv } = ctx;
|
|
277
|
-
const kv = new VersoriKVAdapter(openKv(':project:'));
|
|
278
|
-
|
|
279
|
-
// Initialize services
|
|
280
|
-
const client = await createClient(ctx);
|
|
281
|
-
const tracker = new JobTracker(kv, log);
|
|
282
|
-
const recovery = new PartialBatchRecovery(log);
|
|
283
|
-
const archival = new BatchArchivalService(archivalConfig, new S3PresignService(), log);
|
|
284
|
-
|
|
285
|
-
const jobId = `scheduled_${Date.now()}`;
|
|
286
|
-
|
|
287
|
-
try {
|
|
288
|
-
// 1. Create job
|
|
289
|
-
await tracker.createJob(jobId, {
|
|
290
|
-
triggeredBy: 'schedule',
|
|
291
|
-
stage: 'initialization'
|
|
292
|
-
});
|
|
293
|
-
|
|
294
|
-
// 2. Extract data
|
|
295
|
-
await tracker.updateJob(jobId, {
|
|
296
|
-
status: 'processing',
|
|
297
|
-
stage: 'extraction',
|
|
298
|
-
message: 'Extracting inventory data'
|
|
299
|
-
});
|
|
300
|
-
|
|
301
|
-
const records = await extractInventory(client);
|
|
302
|
-
|
|
303
|
-
// 3. Process with recovery
|
|
304
|
-
await tracker.updateJob(jobId, {
|
|
305
|
-
stage: 'transformation',
|
|
306
|
-
message: `Processing ${records.length} records`
|
|
307
|
-
});
|
|
308
|
-
|
|
309
|
-
const result = await recovery.processBatchWithRecovery(
|
|
310
|
-
records,
|
|
311
|
-
async (batch) => {
|
|
312
|
-
const batchPayload = {
|
|
313
|
-
action: 'UPSERT',
|
|
314
|
-
entityType: 'INVENTORY',
|
|
315
|
-
source: 'SCHEDULED_SYNC',
|
|
316
|
-
event: 'INVENTORY_UPDATE',
|
|
317
|
-
entities: batch
|
|
318
|
-
};
|
|
319
|
-
|
|
320
|
-
const response = await client.sendBatch(jobId, batchPayload);
|
|
321
|
-
|
|
322
|
-
// Archive successful batch
|
|
323
|
-
await archival.archiveBatch({
|
|
324
|
-
batch: batchPayload,
|
|
325
|
-
batchResponse: response,
|
|
326
|
-
jobId
|
|
327
|
-
});
|
|
328
|
-
|
|
329
|
-
return response;
|
|
330
|
-
},
|
|
331
|
-
{
|
|
332
|
-
maxRetries: 3,
|
|
333
|
-
retryOnlyFailed: true,
|
|
334
|
-
checkpointKey: `inventory-${Date.now()}`
|
|
335
|
-
}
|
|
336
|
-
);
|
|
337
|
-
|
|
338
|
-
// 4. Mark complete
|
|
339
|
-
await tracker.markCompleted(jobId, {
|
|
340
|
-
recordCount: result.successCount,
|
|
341
|
-
failedCount: result.failedCount,
|
|
342
|
-
durationMs: result.durationMs
|
|
343
|
-
});
|
|
344
|
-
|
|
345
|
-
log.info('Workflow completed successfully', {
|
|
346
|
-
jobId,
|
|
347
|
-
successCount: result.successCount,
|
|
348
|
-
failedCount: result.failedCount
|
|
349
|
-
});
|
|
350
|
-
|
|
351
|
-
} catch (error) {
|
|
352
|
-
// Mark job as failed
|
|
353
|
-
await tracker.markFailed(jobId, error);
|
|
354
|
-
throw error;
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
```
|
|
358
|
-
|
|
359
|
-
---
|
|
360
|
-
|
|
361
|
-
## Error Handling
|
|
362
|
-
|
|
363
|
-
All advanced services follow these error handling principles:
|
|
364
|
-
|
|
365
|
-
1. **JobTracker** - Never throws on KV errors, logs warnings
|
|
366
|
-
2. **PartialBatchRecovery** - Returns detailed failure information
|
|
367
|
-
3. **BatchArchivalService** - Returns success/failure result objects
|
|
368
|
-
|
|
369
|
-
```typescript
|
|
370
|
-
// All services are safe to use without try/catch
|
|
371
|
-
await tracker.createJob(jobId, metadata); // Never throws
|
|
372
|
-
|
|
373
|
-
// But recovery needs result checking
|
|
374
|
-
const result = await recovery.processBatchWithRecovery(records, processor);
|
|
375
|
-
if (result.failedCount > 0) {
|
|
376
|
-
// Handle failures
|
|
377
|
-
}
|
|
378
|
-
|
|
379
|
-
// Archival returns result object
|
|
380
|
-
const archiveResult = await archival.archiveBatch(batch);
|
|
381
|
-
if (!archiveResult.success) {
|
|
382
|
-
log.error('Archival failed', { error: archiveResult.error });
|
|
383
|
-
}
|
|
384
|
-
```
|
|
385
|
-
|
|
386
|
-
---
|
|
387
|
-
|
|
388
|
-
## Performance Considerations
|
|
389
|
-
|
|
390
|
-
- **JobTracker**: Minimal overhead, ~10ms per KV operation
|
|
391
|
-
- **PartialBatchRecovery**: Adds ~5-10% overhead for tracking
|
|
392
|
-
- **BatchArchivalService**: Async S3 uploads, doesn't block main workflow
|
|
393
|
-
|
|
394
|
-
---
|
|
395
|
-
|
|
396
|
-
## See Also
|
|
397
|
-
|
|
398
|
-
- [Ingestion Guide](advanced-services-readme.md) - Core ingestion workflows
|
|
399
|
-
- [State Management](../ingestion/modules/02-core-guides-ingestion-07-state-management.md) - Basic state tracking
|
|
400
|
-
- [Monitoring](advanced-services-readme.md) - Processing statistics
|
|
401
|
-
- [Error Handling](../api-reference/modules/api-reference-09-error-handling.md) - Error strategies
|
|
402
|
-
|
|
403
|
-
---
|
|
404
|
-
|
|
405
|
-
## Quick Reference
|
|
406
|
-
|
|
407
|
-
See [Advanced Services Quick Reference](./advanced-services-quick-reference.md) for a one-page cheatsheet.
|
|
1
|
+
# Advanced Services
|
|
2
|
+
|
|
3
|
+
**Level:** Advanced
|
|
4
|
+
**Category:** Production-Ready Services
|
|
5
|
+
|
|
6
|
+
## Overview
|
|
7
|
+
|
|
8
|
+
Advanced services provide production-grade capabilities for resilience, monitoring, and operational excellence in Fluent Commerce integrations. These services handle complex scenarios like partial failures, job tracking, and batch archival.
|
|
9
|
+
|
|
10
|
+
## When to Use Advanced Services
|
|
11
|
+
|
|
12
|
+
Use these services when you need:
|
|
13
|
+
- **Resilience** - Recover from partial failures without losing all data
|
|
14
|
+
- **Observability** - Track job progress and status across workflows
|
|
15
|
+
- **Compliance** - Archive batches for audit trails
|
|
16
|
+
- **Production-Grade** - Enterprise-ready error handling and recovery
|
|
17
|
+
|
|
18
|
+
## Quick Links
|
|
19
|
+
|
|
20
|
+
- [JobTracker](#jobtracker) - Track job lifecycle and status
|
|
21
|
+
- [PartialBatchRecovery](#partialbatchrecovery) - Recover from partial batch failures
|
|
22
|
+
- [BatchArchivalService](#batcharchivalservice) - Archive batches to S3
|
|
23
|
+
- [Quick Reference](./advanced-services-quick-reference.md) - One-page cheatsheet
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## JobTracker
|
|
28
|
+
|
|
29
|
+
Track job status throughout the workflow lifecycle with automatic timestamp management and TTL support.
|
|
30
|
+
|
|
31
|
+
**Use Cases:**
|
|
32
|
+
- Monitor scheduled workflow progress
|
|
33
|
+
- Track webhook-triggered operations
|
|
34
|
+
- Implement job retry logic
|
|
35
|
+
- Dashboard status displays
|
|
36
|
+
|
|
37
|
+
**Key Features:**
|
|
38
|
+
- Standardized status values (queued, processing, completed, failed)
|
|
39
|
+
- Automatic timestamp tracking (createdAt, startedAt, completedAt, failedAt)
|
|
40
|
+
- TTL support for automatic cleanup (default: 7 days)
|
|
41
|
+
- Safe error handling (never throws on KV errors)
|
|
42
|
+
|
|
43
|
+
**Quick Example:**
|
|
44
|
+
```typescript
|
|
45
|
+
import { JobTracker, VersoriKVAdapter } from '@fluentcommerce/fc-connect-sdk';
|
|
46
|
+
|
|
47
|
+
const tracker = new JobTracker(kvAdapter, logger);
|
|
48
|
+
|
|
49
|
+
// Create job
|
|
50
|
+
await tracker.createJob('scheduled_1729681200000', {
|
|
51
|
+
triggeredBy: 'schedule',
|
|
52
|
+
stage: 'extraction',
|
|
53
|
+
details: { catalogueRef: 'DEFAULT:1' }
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
// Update progress
|
|
57
|
+
await tracker.updateJob('scheduled_1729681200000', {
|
|
58
|
+
status: 'processing',
|
|
59
|
+
stage: 'transformation',
|
|
60
|
+
message: 'Processing 1000 records'
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
// Mark complete
|
|
64
|
+
await tracker.markCompleted('scheduled_1729681200000', {
|
|
65
|
+
recordCount: 1000,
|
|
66
|
+
fileName: 'export.xml'
|
|
67
|
+
});
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**Learn More:** [JobTracker Guide](./advanced-services-job-tracker.md)
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## PartialBatchRecovery
|
|
75
|
+
|
|
76
|
+
Recover from partial batch failures by retrying only failed records instead of the entire batch.
|
|
77
|
+
|
|
78
|
+
**Use Cases:**
|
|
79
|
+
- Handle transient API failures gracefully
|
|
80
|
+
- Implement checkpoint/resume functionality
|
|
81
|
+
- Retry individual failed records
|
|
82
|
+
- Track detailed error information per record
|
|
83
|
+
|
|
84
|
+
**Key Features:**
|
|
85
|
+
- Per-record success/failure tracking
|
|
86
|
+
- Configurable retry logic (retry only failed or entire batch)
|
|
87
|
+
- Checkpoint support for resume functionality
|
|
88
|
+
- Detailed error reporting with timestamps
|
|
89
|
+
- Custom retry predicates
|
|
90
|
+
|
|
91
|
+
**Quick Example:**
|
|
92
|
+
```typescript
|
|
93
|
+
import { PartialBatchRecovery } from '@fluentcommerce/fc-connect-sdk';
|
|
94
|
+
|
|
95
|
+
const recovery = new PartialBatchRecovery(logger);
|
|
96
|
+
|
|
97
|
+
const result = await recovery.processBatchWithRecovery(
|
|
98
|
+
inventoryRecords,
|
|
99
|
+
async (batch) => await client.sendBatch(jobId, {
|
|
100
|
+
action: 'UPSERT',
|
|
101
|
+
entityType: 'INVENTORY',
|
|
102
|
+
entities: batch
|
|
103
|
+
}),
|
|
104
|
+
{
|
|
105
|
+
maxRetries: 3,
|
|
106
|
+
retryOnlyFailed: true,
|
|
107
|
+
checkpointKey: 'inventory-2025-01-30'
|
|
108
|
+
}
|
|
109
|
+
);
|
|
110
|
+
|
|
111
|
+
console.log(`Success: ${result.successCount}, Failed: ${result.failedCount}`);
|
|
112
|
+
if (result.failedRecords.length > 0) {
|
|
113
|
+
// Handle failed records
|
|
114
|
+
await handleFailures(result.failedRecords);
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
**Learn More:** [PartialBatchRecovery Guide](./advanced-services-partial-batch-recovery.md)
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## BatchArchivalService
|
|
123
|
+
|
|
124
|
+
Archive batch payloads to S3 with hierarchical time-based paths for compliance and audit trails.
|
|
125
|
+
|
|
126
|
+
**Use Cases:**
|
|
127
|
+
- Compliance and audit requirements
|
|
128
|
+
- Batch history tracking
|
|
129
|
+
- Debugging batch issues
|
|
130
|
+
- Data retention policies
|
|
131
|
+
|
|
132
|
+
**Key Features:**
|
|
133
|
+
- Hierarchical S3 paths: `{basePath}/{YYYY}/{MM}/{DD}/{HH}/{MM}/batch-{jobId}-{batchId}.json`
|
|
134
|
+
- Includes metadata (clientId, archivedAt, batch status)
|
|
135
|
+
- Presigned URL uploads for security
|
|
136
|
+
- Bulk archival support
|
|
137
|
+
- Automatic timestamp tracking
|
|
138
|
+
|
|
139
|
+
**Quick Example:**
|
|
140
|
+
```typescript
|
|
141
|
+
import { BatchArchivalService, S3PresignService } from '@fluentcommerce/fc-connect-sdk';
|
|
142
|
+
|
|
143
|
+
const archival = new BatchArchivalService(
|
|
144
|
+
{
|
|
145
|
+
bucketName: 'fluent-batch-archives',
|
|
146
|
+
region: 'us-east-1',
|
|
147
|
+
credentials: { accessKeyId, secretAccessKey },
|
|
148
|
+
basePath: 'production/batches',
|
|
149
|
+
expiresSeconds: 300
|
|
150
|
+
},
|
|
151
|
+
new S3PresignService(),
|
|
152
|
+
logger
|
|
153
|
+
);
|
|
154
|
+
|
|
155
|
+
const result = await archival.archiveBatch({
|
|
156
|
+
batch: batchPayload,
|
|
157
|
+
batchResponse: { id: 'batch_123', jobId: 'job_456', status: 'COMPLETED' },
|
|
158
|
+
jobId: 'job_456'
|
|
159
|
+
}, 'client-123');
|
|
160
|
+
|
|
161
|
+
console.log(`Archived to: ${result.archivedPath}`);
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
**Learn More:** [BatchArchivalService Guide](./advanced-services-batch-archival.md)
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
Manage KV store operations including list, export, bulk operations, and debugging.
|
|
170
|
+
|
|
171
|
+
**Use Cases:**
|
|
172
|
+
- Debug KV state in production
|
|
173
|
+
- Export/import KV data for backup
|
|
174
|
+
- Bulk delete operations
|
|
175
|
+
- KV store migrations
|
|
176
|
+
|
|
177
|
+
**Key Features:**
|
|
178
|
+
- List all KV entries with prefix filtering
|
|
179
|
+
- Export KV data to JSON
|
|
180
|
+
- Bulk operations (set, delete)
|
|
181
|
+
- Safe iteration with error handling
|
|
182
|
+
- Progress callbacks for long operations
|
|
183
|
+
|
|
184
|
+
**Quick Example:**
|
|
185
|
+
```typescript
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
// List all entries
|
|
189
|
+
const entries = await kvManager.listKeys({ prefix: 'job:' });
|
|
190
|
+
console.log(`Found ${entries.length} job entries`);
|
|
191
|
+
|
|
192
|
+
// Export to JSON
|
|
193
|
+
const exportData = await kvManager.exportKeys({ prefix: 'state:' });
|
|
194
|
+
await fs.writeFile('kv-backup.json', JSON.stringify(exportData, null, 2));
|
|
195
|
+
|
|
196
|
+
// Bulk delete entries
|
|
197
|
+
await kvManager.bulkDelete([
|
|
198
|
+
['job', 'old_job_1'],
|
|
199
|
+
['job', 'old_job_2']
|
|
200
|
+
]);
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## Comparison Matrix
|
|
207
|
+
|
|
208
|
+
| Service | Purpose | When to Use | Complexity | Impact |
|
|
209
|
+
|---------|---------|-------------|------------|---------|
|
|
210
|
+
| **JobTracker** | Job lifecycle tracking | Always in production workflows | Low | High |
|
|
211
|
+
| **PartialBatchRecovery** | Partial failure recovery | When batch failures are costly | Medium | High |
|
|
212
|
+
| **BatchArchivalService** | Audit trails | Compliance requirements | Low | Medium |
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## Patterns
|
|
217
|
+
|
|
218
|
+
### 1. Track Jobs
|
|
219
|
+
```typescript
|
|
220
|
+
await tracker.createJob(jobId, { triggeredBy: 'schedule' });
|
|
221
|
+
try {
|
|
222
|
+
await processWorkflow();
|
|
223
|
+
await tracker.markCompleted(jobId, { recordCount: 1000 });
|
|
224
|
+
} catch (error) {
|
|
225
|
+
await tracker.markFailed(jobId, error);
|
|
226
|
+
}
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
### 2. Use Partial Recovery for Critical Data
|
|
230
|
+
```typescript
|
|
231
|
+
const result = await recovery.processBatchWithRecovery(
|
|
232
|
+
records,
|
|
233
|
+
batchProcessor,
|
|
234
|
+
{ maxRetries: 3, retryOnlyFailed: true }
|
|
235
|
+
);
|
|
236
|
+
|
|
237
|
+
if (result.failedRecords.length > 0) {
|
|
238
|
+
await sendToDeadLetterQueue(result.failedRecords);
|
|
239
|
+
}
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### 3. Archive Batches for Audit Trails
|
|
243
|
+
```typescript
|
|
244
|
+
const batchResponse = await client.sendBatch(jobId, batch);
|
|
245
|
+
await archival.archiveBatch({
|
|
246
|
+
batch,
|
|
247
|
+
batchResponse,
|
|
248
|
+
jobId
|
|
249
|
+
}, clientId);
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
### 4. Export KV State for Analysis
|
|
253
|
+
```typescript
|
|
254
|
+
const entries = await kvManager.listKeys({ prefix: 'job:' });
|
|
255
|
+
const failedJobs = entries.filter(e => e.value.status === 'failed');
|
|
256
|
+
console.log('Failed jobs:', failedJobs);
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
---
|
|
260
|
+
|
|
261
|
+
## Integration Patterns
|
|
262
|
+
|
|
263
|
+
### Complete Production Workflow
|
|
264
|
+
|
|
265
|
+
```typescript
|
|
266
|
+
import {
|
|
267
|
+
createClient,
|
|
268
|
+
JobTracker,
|
|
269
|
+
PartialBatchRecovery,
|
|
270
|
+
BatchArchivalService,
|
|
271
|
+
S3PresignService,
|
|
272
|
+
VersoriKVAdapter,
|
|
273
|
+
} from '@fluentcommerce/fc-connect-sdk';
|
|
274
|
+
|
|
275
|
+
async function productionWorkflow(ctx: any) {
|
|
276
|
+
const { log, openKv } = ctx;
|
|
277
|
+
const kv = new VersoriKVAdapter(openKv(':project:'));
|
|
278
|
+
|
|
279
|
+
// Initialize services
|
|
280
|
+
const client = await createClient(ctx);
|
|
281
|
+
const tracker = new JobTracker(kv, log);
|
|
282
|
+
const recovery = new PartialBatchRecovery(log);
|
|
283
|
+
const archival = new BatchArchivalService(archivalConfig, new S3PresignService(), log);
|
|
284
|
+
|
|
285
|
+
const jobId = `scheduled_${Date.now()}`;
|
|
286
|
+
|
|
287
|
+
try {
|
|
288
|
+
// 1. Create job
|
|
289
|
+
await tracker.createJob(jobId, {
|
|
290
|
+
triggeredBy: 'schedule',
|
|
291
|
+
stage: 'initialization'
|
|
292
|
+
});
|
|
293
|
+
|
|
294
|
+
// 2. Extract data
|
|
295
|
+
await tracker.updateJob(jobId, {
|
|
296
|
+
status: 'processing',
|
|
297
|
+
stage: 'extraction',
|
|
298
|
+
message: 'Extracting inventory data'
|
|
299
|
+
});
|
|
300
|
+
|
|
301
|
+
const records = await extractInventory(client);
|
|
302
|
+
|
|
303
|
+
// 3. Process with recovery
|
|
304
|
+
await tracker.updateJob(jobId, {
|
|
305
|
+
stage: 'transformation',
|
|
306
|
+
message: `Processing ${records.length} records`
|
|
307
|
+
});
|
|
308
|
+
|
|
309
|
+
const result = await recovery.processBatchWithRecovery(
|
|
310
|
+
records,
|
|
311
|
+
async (batch) => {
|
|
312
|
+
const batchPayload = {
|
|
313
|
+
action: 'UPSERT',
|
|
314
|
+
entityType: 'INVENTORY',
|
|
315
|
+
source: 'SCHEDULED_SYNC',
|
|
316
|
+
event: 'INVENTORY_UPDATE',
|
|
317
|
+
entities: batch
|
|
318
|
+
};
|
|
319
|
+
|
|
320
|
+
const response = await client.sendBatch(jobId, batchPayload);
|
|
321
|
+
|
|
322
|
+
// Archive successful batch
|
|
323
|
+
await archival.archiveBatch({
|
|
324
|
+
batch: batchPayload,
|
|
325
|
+
batchResponse: response,
|
|
326
|
+
jobId
|
|
327
|
+
});
|
|
328
|
+
|
|
329
|
+
return response;
|
|
330
|
+
},
|
|
331
|
+
{
|
|
332
|
+
maxRetries: 3,
|
|
333
|
+
retryOnlyFailed: true,
|
|
334
|
+
checkpointKey: `inventory-${Date.now()}`
|
|
335
|
+
}
|
|
336
|
+
);
|
|
337
|
+
|
|
338
|
+
// 4. Mark complete
|
|
339
|
+
await tracker.markCompleted(jobId, {
|
|
340
|
+
recordCount: result.successCount,
|
|
341
|
+
failedCount: result.failedCount,
|
|
342
|
+
durationMs: result.durationMs
|
|
343
|
+
});
|
|
344
|
+
|
|
345
|
+
log.info('Workflow completed successfully', {
|
|
346
|
+
jobId,
|
|
347
|
+
successCount: result.successCount,
|
|
348
|
+
failedCount: result.failedCount
|
|
349
|
+
});
|
|
350
|
+
|
|
351
|
+
} catch (error) {
|
|
352
|
+
// Mark job as failed
|
|
353
|
+
await tracker.markFailed(jobId, error);
|
|
354
|
+
throw error;
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
---
|
|
360
|
+
|
|
361
|
+
## Error Handling
|
|
362
|
+
|
|
363
|
+
All advanced services follow these error handling principles:
|
|
364
|
+
|
|
365
|
+
1. **JobTracker** - Never throws on KV errors, logs warnings
|
|
366
|
+
2. **PartialBatchRecovery** - Returns detailed failure information
|
|
367
|
+
3. **BatchArchivalService** - Returns success/failure result objects
|
|
368
|
+
|
|
369
|
+
```typescript
|
|
370
|
+
// All services are safe to use without try/catch
|
|
371
|
+
await tracker.createJob(jobId, metadata); // Never throws
|
|
372
|
+
|
|
373
|
+
// But recovery needs result checking
|
|
374
|
+
const result = await recovery.processBatchWithRecovery(records, processor);
|
|
375
|
+
if (result.failedCount > 0) {
|
|
376
|
+
// Handle failures
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
// Archival returns result object
|
|
380
|
+
const archiveResult = await archival.archiveBatch(batch);
|
|
381
|
+
if (!archiveResult.success) {
|
|
382
|
+
log.error('Archival failed', { error: archiveResult.error });
|
|
383
|
+
}
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
---
|
|
387
|
+
|
|
388
|
+
## Performance Considerations
|
|
389
|
+
|
|
390
|
+
- **JobTracker**: Minimal overhead, ~10ms per KV operation
|
|
391
|
+
- **PartialBatchRecovery**: Adds ~5-10% overhead for tracking
|
|
392
|
+
- **BatchArchivalService**: Async S3 uploads, doesn't block main workflow
|
|
393
|
+
|
|
394
|
+
---
|
|
395
|
+
|
|
396
|
+
## See Also
|
|
397
|
+
|
|
398
|
+
- [Ingestion Guide](advanced-services-readme.md) - Core ingestion workflows
|
|
399
|
+
- [State Management](../ingestion/modules/02-core-guides-ingestion-07-state-management.md) - Basic state tracking
|
|
400
|
+
- [Monitoring](advanced-services-readme.md) - Processing statistics
|
|
401
|
+
- [Error Handling](../api-reference/modules/api-reference-09-error-handling.md) - Error strategies
|
|
402
|
+
|
|
403
|
+
---
|
|
404
|
+
|
|
405
|
+
## Quick Reference
|
|
406
|
+
|
|
407
|
+
See [Advanced Services Quick Reference](./advanced-services-quick-reference.md) for a one-page cheatsheet.
|