@fluentcommerce/fc-connect-sdk 0.1.54 → 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 +12 -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,390 +1,390 @@
|
|
|
1
|
-
# Error Handling Quick Reference
|
|
2
|
-
|
|
3
|
-
**Quick lookup for error codes, handling patterns, and retry strategies**
|
|
4
|
-
|
|
5
|
-
## Error Codes Cheat Sheet
|
|
6
|
-
|
|
7
|
-
### File Discovery (20xx)
|
|
8
|
-
|
|
9
|
-
| Code | Description | Retryable | Action |
|
|
10
|
-
|------|-------------|-----------|--------|
|
|
11
|
-
| `FILE_DISCOVERY_FAILED` | Failed to list/discover files | ✅ Yes | Retry with backoff |
|
|
12
|
-
| `FILE_ACCESS_DENIED` | Permission denied | ❌ No | Fix permissions |
|
|
13
|
-
| `FILE_NOT_FOUND` | File doesn't exist | ❌ No | Check file path |
|
|
14
|
-
| `INVALID_FILE_FORMAT` | Unsupported file type | ❌ No | Fix file format |
|
|
15
|
-
|
|
16
|
-
### Parsing (21xx)
|
|
17
|
-
|
|
18
|
-
| Code | Description | Retryable | Action |
|
|
19
|
-
|------|-------------|-----------|--------|
|
|
20
|
-
| `PARSE_ERROR` | Generic parsing error | ❌ No | Fix source file |
|
|
21
|
-
| `INVALID_CSV_FORMAT` | Malformed CSV | ❌ No | Fix CSV syntax |
|
|
22
|
-
| `INVALID_PARQUET_FORMAT` | Invalid Parquet file | ❌ No | Regenerate Parquet |
|
|
23
|
-
| `ENCODING_ERROR` | Character encoding issue | ❌ No | Convert to UTF-8 |
|
|
24
|
-
|
|
25
|
-
### Transformation (22xx)
|
|
26
|
-
|
|
27
|
-
| Code | Description | Retryable | Action |
|
|
28
|
-
|------|-------------|-----------|--------|
|
|
29
|
-
| `TRANSFORMATION_ERROR` | Generic transformation error | ❌ No | Fix mapping/data |
|
|
30
|
-
| `FIELD_MAPPING_ERROR` | Field mapping failed | ❌ No | Fix mapping config |
|
|
31
|
-
| `VALIDATION_ERROR` | Data validation failed | ❌ No | Fix source data |
|
|
32
|
-
| `REQUIRED_FIELD_MISSING` | Required field empty | ❌ No | Provide field value |
|
|
33
|
-
|
|
34
|
-
### Submission (23xx)
|
|
35
|
-
|
|
36
|
-
| Code | Description | Retryable | Action |
|
|
37
|
-
|------|-------------|-----------|--------|
|
|
38
|
-
| `BATCH_SUBMISSION_ERROR` | Batch API error | ✅ Yes | Retry with backoff |
|
|
39
|
-
| `JOB_CREATION_ERROR` | Job creation failed | ✅ Yes | Retry with backoff |
|
|
40
|
-
| `API_ERROR` | Fluent API error | ✅ Yes | Retry with backoff |
|
|
41
|
-
| `NETWORK_ERROR` | Network connectivity | ✅ Yes | Retry with backoff |
|
|
42
|
-
|
|
43
|
-
### State Management (24xx)
|
|
44
|
-
|
|
45
|
-
| Code | Description | Retryable | Action |
|
|
46
|
-
|------|-------------|-----------|--------|
|
|
47
|
-
| `LOCK_ACQUISITION_FAILED` | Failed to acquire lock | ✅ Yes | Retry with backoff |
|
|
48
|
-
| `STATE_UPDATE_FAILED` | State update failed | ❌ No | Fix state management logic |
|
|
49
|
-
|
|
50
|
-
### Configuration (25xx)
|
|
51
|
-
|
|
52
|
-
| Code | Description | Retryable | Action |
|
|
53
|
-
|------|-------------|-----------|--------|
|
|
54
|
-
| `CONFIGURATION_ERROR` | Generic config error | ❌ No | Fix configuration |
|
|
55
|
-
| `MISSING_REQUIRED_CONFIG` | Required config missing | ❌ No | Provide config value |
|
|
56
|
-
| `INVALID_CONFIGURATION` | Config value invalid | ❌ No | Fix config value |
|
|
57
|
-
|
|
58
|
-
### General (26xx)
|
|
59
|
-
|
|
60
|
-
| Code | Description | Retryable | Action |
|
|
61
|
-
|------|-------------|-----------|--------|
|
|
62
|
-
| `UNKNOWN_ERROR` | Unexpected error | ❓ Maybe | Investigate and retry |
|
|
63
|
-
| `TIMEOUT_ERROR` | Operation timeout | ✅ Yes | Retry with backoff |
|
|
64
|
-
| `RATE_LIMIT_ERROR` | API rate limit hit | ✅ Yes | Wait `retryAfter` |
|
|
65
|
-
|
|
66
|
-
## Error Classes Quick Lookup
|
|
67
|
-
|
|
68
|
-
```typescript
|
|
69
|
-
import {
|
|
70
|
-
// Base classes
|
|
71
|
-
IngestionError,
|
|
72
|
-
FluentError,
|
|
73
|
-
|
|
74
|
-
// Ingestion errors
|
|
75
|
-
FileDiscoveryError,
|
|
76
|
-
FileParsingError,
|
|
77
|
-
TransformationError,
|
|
78
|
-
BatchSubmissionError,
|
|
79
|
-
ConfigurationError,
|
|
80
|
-
ValidationError,
|
|
81
|
-
GraphQLExecutionError,
|
|
82
|
-
AggregateIngestionError,
|
|
83
|
-
|
|
84
|
-
// Mapping errors
|
|
85
|
-
MappingError,
|
|
86
|
-
ResolverError,
|
|
87
|
-
PathResolutionError,
|
|
88
|
-
|
|
89
|
-
// Data source errors
|
|
90
|
-
DataSourceError,
|
|
91
|
-
|
|
92
|
-
// Error codes
|
|
93
|
-
IngestionErrorCode
|
|
94
|
-
} from '@fluentcommerce/fc-connect-sdk';
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
## Common Patterns
|
|
98
|
-
|
|
99
|
-
### Basic Error Handling
|
|
100
|
-
|
|
101
|
-
```typescript
|
|
102
|
-
try {
|
|
103
|
-
const result = await processOrder(data);
|
|
104
|
-
return result;
|
|
105
|
-
} catch (error) {
|
|
106
|
-
logger.error('Processing failed:', error);
|
|
107
|
-
throw error; // Always re-throw!
|
|
108
|
-
}
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
### Type-Specific Handling
|
|
112
|
-
|
|
113
|
-
```typescript
|
|
114
|
-
try {
|
|
115
|
-
await processOrder(data);
|
|
116
|
-
} catch (error) {
|
|
117
|
-
if (error instanceof FileParsingError) {
|
|
118
|
-
logger.error('Parse error - fix source file');
|
|
119
|
-
throw error; // Don't retry
|
|
120
|
-
|
|
121
|
-
} else if (error instanceof MappingError) {
|
|
122
|
-
logger.error('Mapping error - fix config or data');
|
|
123
|
-
throw error; // Don't retry
|
|
124
|
-
|
|
125
|
-
} else if (error instanceof IngestionError && error.isRetryable()) {
|
|
126
|
-
return scheduleRetry(); // Retry transient errors
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
throw error;
|
|
130
|
-
}
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
### Retry with Exponential Backoff
|
|
134
|
-
|
|
135
|
-
```typescript
|
|
136
|
-
async function retryWithBackoff<T>(
|
|
137
|
-
operation: () => Promise<T>,
|
|
138
|
-
maxRetries = 3
|
|
139
|
-
): Promise<T> {
|
|
140
|
-
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
141
|
-
try {
|
|
142
|
-
return await operation();
|
|
143
|
-
} catch (error) {
|
|
144
|
-
// Don't retry permanent errors
|
|
145
|
-
if (error instanceof MappingError ||
|
|
146
|
-
error instanceof PathResolutionError ||
|
|
147
|
-
error instanceof FileParsingError) {
|
|
148
|
-
throw error;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
// Check if retryable
|
|
152
|
-
if (error instanceof IngestionError && !error.isRetryable()) {
|
|
153
|
-
throw error;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
// Last attempt
|
|
157
|
-
if (attempt === maxRetries - 1) {
|
|
158
|
-
throw error;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
// Exponential backoff
|
|
162
|
-
const delay = Math.pow(2, attempt) * 1000;
|
|
163
|
-
await new Promise(resolve => setTimeout(resolve, delay));
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
### Rate Limit Handling
|
|
170
|
-
|
|
171
|
-
```typescript
|
|
172
|
-
catch (error) {
|
|
173
|
-
if (error instanceof IngestionError &&
|
|
174
|
-
error.code === IngestionErrorCode.RATE_LIMIT_ERROR) {
|
|
175
|
-
|
|
176
|
-
const retryAfter = error.context?.retryAfter || 60;
|
|
177
|
-
logger.info(`Rate limited - waiting ${retryAfter}s`);
|
|
178
|
-
|
|
179
|
-
await new Promise(resolve => setTimeout(resolve, retryAfter * 1000));
|
|
180
|
-
return retry();
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
### Structured Logging
|
|
186
|
-
|
|
187
|
-
```typescript
|
|
188
|
-
catch (error) {
|
|
189
|
-
logger.error('Processing failed', {
|
|
190
|
-
// Use toJSON() for complete error data
|
|
191
|
-
error: error instanceof IngestionError ? error.toJSON() : error.message,
|
|
192
|
-
|
|
193
|
-
// Add business context
|
|
194
|
-
orderId,
|
|
195
|
-
fileName,
|
|
196
|
-
correlationId,
|
|
197
|
-
|
|
198
|
-
// Environment info
|
|
199
|
-
environment: process.env.NODE_ENV,
|
|
200
|
-
timestamp: new Date().toISOString()
|
|
201
|
-
});
|
|
202
|
-
|
|
203
|
-
throw error;
|
|
204
|
-
}
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
## Decision Tree
|
|
208
|
-
|
|
209
|
-
```
|
|
210
|
-
Error occurred
|
|
211
|
-
│
|
|
212
|
-
├─ Is it FileParsingError?
|
|
213
|
-
│ └─ YES → Don't retry, fix source file
|
|
214
|
-
│
|
|
215
|
-
├─ Is it PathResolutionError?
|
|
216
|
-
│ └─ YES → Don't retry, fix mapping config
|
|
217
|
-
│
|
|
218
|
-
├─ Is it MappingError?
|
|
219
|
-
│ └─ YES → Don't retry, fix data or config
|
|
220
|
-
│
|
|
221
|
-
├─ Is it ValidationError?
|
|
222
|
-
│ └─ YES → Don't retry, fix source data
|
|
223
|
-
│
|
|
224
|
-
├─ Is it ConfigurationError?
|
|
225
|
-
│ └─ YES → Don't retry, fix configuration
|
|
226
|
-
│
|
|
227
|
-
└─ Is it IngestionError?
|
|
228
|
-
└─ Check error.isRetryable()
|
|
229
|
-
├─ YES → Retry with exponential backoff
|
|
230
|
-
└─ NO → Don't retry, permanent failure
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
## Retryable vs Non-Retryable
|
|
234
|
-
|
|
235
|
-
### ❌ Never Retry
|
|
236
|
-
|
|
237
|
-
- `FileParsingError` - Invalid XML/CSV/JSON
|
|
238
|
-
- `PathResolutionError` - Wrong mapping path
|
|
239
|
-
- `MappingError` - Required field missing
|
|
240
|
-
- `ValidationError` - Data validation failed
|
|
241
|
-
- `ConfigurationError` - Invalid configuration
|
|
242
|
-
- `IngestionError` with `PARSE_ERROR`
|
|
243
|
-
- `IngestionError` with `VALIDATION_ERROR`
|
|
244
|
-
- `IngestionError` with `REQUIRED_FIELD_MISSING`
|
|
245
|
-
- `IngestionError` with `FIELD_MAPPING_ERROR`
|
|
246
|
-
- `IngestionError` with `CONFIGURATION_ERROR`
|
|
247
|
-
|
|
248
|
-
### ✅ Always Retry
|
|
249
|
-
|
|
250
|
-
- `IngestionError` with `NETWORK_ERROR`
|
|
251
|
-
- `IngestionError` with `TIMEOUT_ERROR`
|
|
252
|
-
- `IngestionError` with `RATE_LIMIT_ERROR`
|
|
253
|
-
- `IngestionError` with `LOCK_ACQUISITION_FAILED`
|
|
254
|
-
|
|
255
|
-
## Backoff Strategies
|
|
256
|
-
|
|
257
|
-
### Exponential Backoff
|
|
258
|
-
|
|
259
|
-
```
|
|
260
|
-
Attempt 1: Wait 1s
|
|
261
|
-
Attempt 2: Wait 2s
|
|
262
|
-
Attempt 3: Wait 4s
|
|
263
|
-
Attempt 4: Wait 8s
|
|
264
|
-
Attempt 5: Wait 16s
|
|
265
|
-
```
|
|
266
|
-
|
|
267
|
-
### Exponential Backoff with Jitter
|
|
268
|
-
|
|
269
|
-
```typescript
|
|
270
|
-
const delay = initialDelay * Math.pow(2, attempt);
|
|
271
|
-
const jitter = Math.random() * 100;
|
|
272
|
-
const totalDelay = delay + jitter;
|
|
273
|
-
```
|
|
274
|
-
|
|
275
|
-
### Full Jitter (AWS recommended)
|
|
276
|
-
|
|
277
|
-
```typescript
|
|
278
|
-
const exponentialDelay = baseDelay * Math.pow(2, attempt);
|
|
279
|
-
const cappedDelay = Math.min(exponentialDelay, maxDelay);
|
|
280
|
-
const delay = Math.random() * cappedDelay;
|
|
281
|
-
```
|
|
282
|
-
|
|
283
|
-
## Error Methods Quick Reference
|
|
284
|
-
|
|
285
|
-
### error.toJSON()
|
|
286
|
-
|
|
287
|
-
Get structured error data for logging:
|
|
288
|
-
|
|
289
|
-
```typescript
|
|
290
|
-
const errorData = error.toJSON();
|
|
291
|
-
// {
|
|
292
|
-
// name: "FileParsingError",
|
|
293
|
-
// message: "Invalid XML",
|
|
294
|
-
// code: "PARSE_ERROR",
|
|
295
|
-
// fileName: "order.xml",
|
|
296
|
-
// lineNumber: 42,
|
|
297
|
-
// timestamp: "2025-01-10T12:34:56Z",
|
|
298
|
-
// stack: "..."
|
|
299
|
-
// }
|
|
300
|
-
```
|
|
301
|
-
|
|
302
|
-
### error.isRetryable()
|
|
303
|
-
|
|
304
|
-
Check if error should be retried:
|
|
305
|
-
|
|
306
|
-
```typescript
|
|
307
|
-
if (error instanceof IngestionError && error.isRetryable()) {
|
|
308
|
-
// Retry with backoff
|
|
309
|
-
}
|
|
310
|
-
```
|
|
311
|
-
|
|
312
|
-
## Error Properties by Class
|
|
313
|
-
|
|
314
|
-
| Class | Key Properties | Example |
|
|
315
|
-
|-------|----------------|---------|
|
|
316
|
-
| `FileParsingError` | `fileName`, `lineNumber`, `code` | `error.fileName // "order.xml"` |
|
|
317
|
-
| `PathResolutionError` | `path`, `cause` | `error.path // "order.WRONG.path"` |
|
|
318
|
-
| `MappingError` | `field`, `sourcePath` | `error.field // "ref"` |
|
|
319
|
-
| `ResolverError` | `resolverName`, `fieldName`, `fieldPath`, `originalError` | `error.resolverName // "custom.parseDate"` |
|
|
320
|
-
| `ValidationError` | `validationErrors[]` | `error.validationErrors[0].field` |
|
|
321
|
-
| `ConfigurationError` | `configKey`, `code` | `error.configKey // "baseUrl"` |
|
|
322
|
-
| `BatchSubmissionError` | `jobId`, `batchId`, `code` | `error.jobId // "JOB-123"` |
|
|
323
|
-
| `GraphQLExecutionError` | `graphqlErrors[]`, `query`, `variables` | `error.getErrorMessages()` |
|
|
324
|
-
| `DataSourceError` | `source`, `operation`, `details` | `error.source // "S3_CSV"` |
|
|
325
|
-
| `IngestionError` | `code`, `context`, `timestamp` | `error.code // "NETWORK_ERROR"` |
|
|
326
|
-
|
|
327
|
-
## Common Mistakes
|
|
328
|
-
|
|
329
|
-
### ❌ Silencing Errors
|
|
330
|
-
|
|
331
|
-
```typescript
|
|
332
|
-
// ❌ WRONG
|
|
333
|
-
try {
|
|
334
|
-
await processOrder(data);
|
|
335
|
-
} catch (error) {
|
|
336
|
-
// Do nothing - error is lost!
|
|
337
|
-
}
|
|
338
|
-
```
|
|
339
|
-
|
|
340
|
-
### ❌ Retrying Permanent Errors
|
|
341
|
-
|
|
342
|
-
```typescript
|
|
343
|
-
// ❌ WRONG
|
|
344
|
-
catch (error) {
|
|
345
|
-
if (error instanceof FileParsingError) {
|
|
346
|
-
return retry(); // Won't succeed!
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
```
|
|
350
|
-
|
|
351
|
-
### ❌ Missing Context
|
|
352
|
-
|
|
353
|
-
```typescript
|
|
354
|
-
// ❌ WRONG
|
|
355
|
-
logger.error('Error occurred');
|
|
356
|
-
```
|
|
357
|
-
|
|
358
|
-
### ❌ Not Re-throwing
|
|
359
|
-
|
|
360
|
-
```typescript
|
|
361
|
-
// ❌ WRONG
|
|
362
|
-
catch (error) {
|
|
363
|
-
logger.error('Error:', error);
|
|
364
|
-
return null; // Swallows error!
|
|
365
|
-
}
|
|
366
|
-
```
|
|
367
|
-
|
|
368
|
-
## Best Practices Summary
|
|
369
|
-
|
|
370
|
-
1. ✅ Always use try-catch
|
|
371
|
-
2. ✅ Check error types with `instanceof`
|
|
372
|
-
3. ✅ Use `error.toJSON()` for logging
|
|
373
|
-
4. ✅ Check `error.isRetryable()` before retry
|
|
374
|
-
5. ✅ Re-throw errors after handling
|
|
375
|
-
6. ✅ Log with correlation IDs
|
|
376
|
-
7. ✅ Monitor error rates
|
|
377
|
-
8. ✅ Set up alerts
|
|
378
|
-
9. ✅ Document error scenarios
|
|
379
|
-
10. ✅ Test error paths
|
|
380
|
-
|
|
381
|
-
## Related Modules
|
|
382
|
-
|
|
383
|
-
- [Module 1: Foundations](./modules/error-handling-01-foundations.md) - Fail-fast principles
|
|
384
|
-
- [Module 2: Error Types](./modules/error-handling-02-error-types.md) - Complete error reference
|
|
385
|
-
- [Module 3: UTF-8 Handling](./modules/error-handling-03-utf8-handling.md) - UTF-8 encoding and special characters
|
|
386
|
-
- [Module 4: Error Scenarios](./modules/error-handling-04-error-scenarios.md) - Real-world examples
|
|
387
|
-
- [Module 5: Calling Patterns](./modules/error-handling-05-calling-patterns.md) - Code patterns
|
|
388
|
-
- [Module 6: Retry Strategies](./modules/error-handling-06-retry-strategies.md) - Retry logic
|
|
389
|
-
- [Module 7: Monitoring](./modules/error-handling-07-monitoring.md) - Logging and monitoring
|
|
390
|
-
- [Module 8: API Reference](./modules/error-handling-08-api-reference.md) - Complete API docs
|
|
1
|
+
# Error Handling Quick Reference
|
|
2
|
+
|
|
3
|
+
**Quick lookup for error codes, handling patterns, and retry strategies**
|
|
4
|
+
|
|
5
|
+
## Error Codes Cheat Sheet
|
|
6
|
+
|
|
7
|
+
### File Discovery (20xx)
|
|
8
|
+
|
|
9
|
+
| Code | Description | Retryable | Action |
|
|
10
|
+
|------|-------------|-----------|--------|
|
|
11
|
+
| `FILE_DISCOVERY_FAILED` | Failed to list/discover files | ✅ Yes | Retry with backoff |
|
|
12
|
+
| `FILE_ACCESS_DENIED` | Permission denied | ❌ No | Fix permissions |
|
|
13
|
+
| `FILE_NOT_FOUND` | File doesn't exist | ❌ No | Check file path |
|
|
14
|
+
| `INVALID_FILE_FORMAT` | Unsupported file type | ❌ No | Fix file format |
|
|
15
|
+
|
|
16
|
+
### Parsing (21xx)
|
|
17
|
+
|
|
18
|
+
| Code | Description | Retryable | Action |
|
|
19
|
+
|------|-------------|-----------|--------|
|
|
20
|
+
| `PARSE_ERROR` | Generic parsing error | ❌ No | Fix source file |
|
|
21
|
+
| `INVALID_CSV_FORMAT` | Malformed CSV | ❌ No | Fix CSV syntax |
|
|
22
|
+
| `INVALID_PARQUET_FORMAT` | Invalid Parquet file | ❌ No | Regenerate Parquet |
|
|
23
|
+
| `ENCODING_ERROR` | Character encoding issue | ❌ No | Convert to UTF-8 |
|
|
24
|
+
|
|
25
|
+
### Transformation (22xx)
|
|
26
|
+
|
|
27
|
+
| Code | Description | Retryable | Action |
|
|
28
|
+
|------|-------------|-----------|--------|
|
|
29
|
+
| `TRANSFORMATION_ERROR` | Generic transformation error | ❌ No | Fix mapping/data |
|
|
30
|
+
| `FIELD_MAPPING_ERROR` | Field mapping failed | ❌ No | Fix mapping config |
|
|
31
|
+
| `VALIDATION_ERROR` | Data validation failed | ❌ No | Fix source data |
|
|
32
|
+
| `REQUIRED_FIELD_MISSING` | Required field empty | ❌ No | Provide field value |
|
|
33
|
+
|
|
34
|
+
### Submission (23xx)
|
|
35
|
+
|
|
36
|
+
| Code | Description | Retryable | Action |
|
|
37
|
+
|------|-------------|-----------|--------|
|
|
38
|
+
| `BATCH_SUBMISSION_ERROR` | Batch API error | ✅ Yes | Retry with backoff |
|
|
39
|
+
| `JOB_CREATION_ERROR` | Job creation failed | ✅ Yes | Retry with backoff |
|
|
40
|
+
| `API_ERROR` | Fluent API error | ✅ Yes | Retry with backoff |
|
|
41
|
+
| `NETWORK_ERROR` | Network connectivity | ✅ Yes | Retry with backoff |
|
|
42
|
+
|
|
43
|
+
### State Management (24xx)
|
|
44
|
+
|
|
45
|
+
| Code | Description | Retryable | Action |
|
|
46
|
+
|------|-------------|-----------|--------|
|
|
47
|
+
| `LOCK_ACQUISITION_FAILED` | Failed to acquire lock | ✅ Yes | Retry with backoff |
|
|
48
|
+
| `STATE_UPDATE_FAILED` | State update failed | ❌ No | Fix state management logic |
|
|
49
|
+
|
|
50
|
+
### Configuration (25xx)
|
|
51
|
+
|
|
52
|
+
| Code | Description | Retryable | Action |
|
|
53
|
+
|------|-------------|-----------|--------|
|
|
54
|
+
| `CONFIGURATION_ERROR` | Generic config error | ❌ No | Fix configuration |
|
|
55
|
+
| `MISSING_REQUIRED_CONFIG` | Required config missing | ❌ No | Provide config value |
|
|
56
|
+
| `INVALID_CONFIGURATION` | Config value invalid | ❌ No | Fix config value |
|
|
57
|
+
|
|
58
|
+
### General (26xx)
|
|
59
|
+
|
|
60
|
+
| Code | Description | Retryable | Action |
|
|
61
|
+
|------|-------------|-----------|--------|
|
|
62
|
+
| `UNKNOWN_ERROR` | Unexpected error | ❓ Maybe | Investigate and retry |
|
|
63
|
+
| `TIMEOUT_ERROR` | Operation timeout | ✅ Yes | Retry with backoff |
|
|
64
|
+
| `RATE_LIMIT_ERROR` | API rate limit hit | ✅ Yes | Wait `retryAfter` |
|
|
65
|
+
|
|
66
|
+
## Error Classes Quick Lookup
|
|
67
|
+
|
|
68
|
+
```typescript
|
|
69
|
+
import {
|
|
70
|
+
// Base classes
|
|
71
|
+
IngestionError,
|
|
72
|
+
FluentError,
|
|
73
|
+
|
|
74
|
+
// Ingestion errors
|
|
75
|
+
FileDiscoveryError,
|
|
76
|
+
FileParsingError,
|
|
77
|
+
TransformationError,
|
|
78
|
+
BatchSubmissionError,
|
|
79
|
+
ConfigurationError,
|
|
80
|
+
ValidationError,
|
|
81
|
+
GraphQLExecutionError,
|
|
82
|
+
AggregateIngestionError,
|
|
83
|
+
|
|
84
|
+
// Mapping errors
|
|
85
|
+
MappingError,
|
|
86
|
+
ResolverError,
|
|
87
|
+
PathResolutionError,
|
|
88
|
+
|
|
89
|
+
// Data source errors
|
|
90
|
+
DataSourceError,
|
|
91
|
+
|
|
92
|
+
// Error codes
|
|
93
|
+
IngestionErrorCode
|
|
94
|
+
} from '@fluentcommerce/fc-connect-sdk';
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Common Patterns
|
|
98
|
+
|
|
99
|
+
### Basic Error Handling
|
|
100
|
+
|
|
101
|
+
```typescript
|
|
102
|
+
try {
|
|
103
|
+
const result = await processOrder(data);
|
|
104
|
+
return result;
|
|
105
|
+
} catch (error) {
|
|
106
|
+
logger.error('Processing failed:', error);
|
|
107
|
+
throw error; // Always re-throw!
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Type-Specific Handling
|
|
112
|
+
|
|
113
|
+
```typescript
|
|
114
|
+
try {
|
|
115
|
+
await processOrder(data);
|
|
116
|
+
} catch (error) {
|
|
117
|
+
if (error instanceof FileParsingError) {
|
|
118
|
+
logger.error('Parse error - fix source file');
|
|
119
|
+
throw error; // Don't retry
|
|
120
|
+
|
|
121
|
+
} else if (error instanceof MappingError) {
|
|
122
|
+
logger.error('Mapping error - fix config or data');
|
|
123
|
+
throw error; // Don't retry
|
|
124
|
+
|
|
125
|
+
} else if (error instanceof IngestionError && error.isRetryable()) {
|
|
126
|
+
return scheduleRetry(); // Retry transient errors
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
throw error;
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Retry with Exponential Backoff
|
|
134
|
+
|
|
135
|
+
```typescript
|
|
136
|
+
async function retryWithBackoff<T>(
|
|
137
|
+
operation: () => Promise<T>,
|
|
138
|
+
maxRetries = 3
|
|
139
|
+
): Promise<T> {
|
|
140
|
+
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
141
|
+
try {
|
|
142
|
+
return await operation();
|
|
143
|
+
} catch (error) {
|
|
144
|
+
// Don't retry permanent errors
|
|
145
|
+
if (error instanceof MappingError ||
|
|
146
|
+
error instanceof PathResolutionError ||
|
|
147
|
+
error instanceof FileParsingError) {
|
|
148
|
+
throw error;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// Check if retryable
|
|
152
|
+
if (error instanceof IngestionError && !error.isRetryable()) {
|
|
153
|
+
throw error;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// Last attempt
|
|
157
|
+
if (attempt === maxRetries - 1) {
|
|
158
|
+
throw error;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// Exponential backoff
|
|
162
|
+
const delay = Math.pow(2, attempt) * 1000;
|
|
163
|
+
await new Promise(resolve => setTimeout(resolve, delay));
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Rate Limit Handling
|
|
170
|
+
|
|
171
|
+
```typescript
|
|
172
|
+
catch (error) {
|
|
173
|
+
if (error instanceof IngestionError &&
|
|
174
|
+
error.code === IngestionErrorCode.RATE_LIMIT_ERROR) {
|
|
175
|
+
|
|
176
|
+
const retryAfter = error.context?.retryAfter || 60;
|
|
177
|
+
logger.info(`Rate limited - waiting ${retryAfter}s`);
|
|
178
|
+
|
|
179
|
+
await new Promise(resolve => setTimeout(resolve, retryAfter * 1000));
|
|
180
|
+
return retry();
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### Structured Logging
|
|
186
|
+
|
|
187
|
+
```typescript
|
|
188
|
+
catch (error) {
|
|
189
|
+
logger.error('Processing failed', {
|
|
190
|
+
// Use toJSON() for complete error data
|
|
191
|
+
error: error instanceof IngestionError ? error.toJSON() : error.message,
|
|
192
|
+
|
|
193
|
+
// Add business context
|
|
194
|
+
orderId,
|
|
195
|
+
fileName,
|
|
196
|
+
correlationId,
|
|
197
|
+
|
|
198
|
+
// Environment info
|
|
199
|
+
environment: process.env.NODE_ENV,
|
|
200
|
+
timestamp: new Date().toISOString()
|
|
201
|
+
});
|
|
202
|
+
|
|
203
|
+
throw error;
|
|
204
|
+
}
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
## Decision Tree
|
|
208
|
+
|
|
209
|
+
```
|
|
210
|
+
Error occurred
|
|
211
|
+
│
|
|
212
|
+
├─ Is it FileParsingError?
|
|
213
|
+
│ └─ YES → Don't retry, fix source file
|
|
214
|
+
│
|
|
215
|
+
├─ Is it PathResolutionError?
|
|
216
|
+
│ └─ YES → Don't retry, fix mapping config
|
|
217
|
+
│
|
|
218
|
+
├─ Is it MappingError?
|
|
219
|
+
│ └─ YES → Don't retry, fix data or config
|
|
220
|
+
│
|
|
221
|
+
├─ Is it ValidationError?
|
|
222
|
+
│ └─ YES → Don't retry, fix source data
|
|
223
|
+
│
|
|
224
|
+
├─ Is it ConfigurationError?
|
|
225
|
+
│ └─ YES → Don't retry, fix configuration
|
|
226
|
+
│
|
|
227
|
+
└─ Is it IngestionError?
|
|
228
|
+
└─ Check error.isRetryable()
|
|
229
|
+
├─ YES → Retry with exponential backoff
|
|
230
|
+
└─ NO → Don't retry, permanent failure
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
## Retryable vs Non-Retryable
|
|
234
|
+
|
|
235
|
+
### ❌ Never Retry
|
|
236
|
+
|
|
237
|
+
- `FileParsingError` - Invalid XML/CSV/JSON
|
|
238
|
+
- `PathResolutionError` - Wrong mapping path
|
|
239
|
+
- `MappingError` - Required field missing
|
|
240
|
+
- `ValidationError` - Data validation failed
|
|
241
|
+
- `ConfigurationError` - Invalid configuration
|
|
242
|
+
- `IngestionError` with `PARSE_ERROR`
|
|
243
|
+
- `IngestionError` with `VALIDATION_ERROR`
|
|
244
|
+
- `IngestionError` with `REQUIRED_FIELD_MISSING`
|
|
245
|
+
- `IngestionError` with `FIELD_MAPPING_ERROR`
|
|
246
|
+
- `IngestionError` with `CONFIGURATION_ERROR`
|
|
247
|
+
|
|
248
|
+
### ✅ Always Retry
|
|
249
|
+
|
|
250
|
+
- `IngestionError` with `NETWORK_ERROR`
|
|
251
|
+
- `IngestionError` with `TIMEOUT_ERROR`
|
|
252
|
+
- `IngestionError` with `RATE_LIMIT_ERROR`
|
|
253
|
+
- `IngestionError` with `LOCK_ACQUISITION_FAILED`
|
|
254
|
+
|
|
255
|
+
## Backoff Strategies
|
|
256
|
+
|
|
257
|
+
### Exponential Backoff
|
|
258
|
+
|
|
259
|
+
```
|
|
260
|
+
Attempt 1: Wait 1s
|
|
261
|
+
Attempt 2: Wait 2s
|
|
262
|
+
Attempt 3: Wait 4s
|
|
263
|
+
Attempt 4: Wait 8s
|
|
264
|
+
Attempt 5: Wait 16s
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
### Exponential Backoff with Jitter
|
|
268
|
+
|
|
269
|
+
```typescript
|
|
270
|
+
const delay = initialDelay * Math.pow(2, attempt);
|
|
271
|
+
const jitter = Math.random() * 100;
|
|
272
|
+
const totalDelay = delay + jitter;
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
### Full Jitter (AWS recommended)
|
|
276
|
+
|
|
277
|
+
```typescript
|
|
278
|
+
const exponentialDelay = baseDelay * Math.pow(2, attempt);
|
|
279
|
+
const cappedDelay = Math.min(exponentialDelay, maxDelay);
|
|
280
|
+
const delay = Math.random() * cappedDelay;
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
## Error Methods Quick Reference
|
|
284
|
+
|
|
285
|
+
### error.toJSON()
|
|
286
|
+
|
|
287
|
+
Get structured error data for logging:
|
|
288
|
+
|
|
289
|
+
```typescript
|
|
290
|
+
const errorData = error.toJSON();
|
|
291
|
+
// {
|
|
292
|
+
// name: "FileParsingError",
|
|
293
|
+
// message: "Invalid XML",
|
|
294
|
+
// code: "PARSE_ERROR",
|
|
295
|
+
// fileName: "order.xml",
|
|
296
|
+
// lineNumber: 42,
|
|
297
|
+
// timestamp: "2025-01-10T12:34:56Z",
|
|
298
|
+
// stack: "..."
|
|
299
|
+
// }
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
### error.isRetryable()
|
|
303
|
+
|
|
304
|
+
Check if error should be retried:
|
|
305
|
+
|
|
306
|
+
```typescript
|
|
307
|
+
if (error instanceof IngestionError && error.isRetryable()) {
|
|
308
|
+
// Retry with backoff
|
|
309
|
+
}
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
## Error Properties by Class
|
|
313
|
+
|
|
314
|
+
| Class | Key Properties | Example |
|
|
315
|
+
|-------|----------------|---------|
|
|
316
|
+
| `FileParsingError` | `fileName`, `lineNumber`, `code` | `error.fileName // "order.xml"` |
|
|
317
|
+
| `PathResolutionError` | `path`, `cause` | `error.path // "order.WRONG.path"` |
|
|
318
|
+
| `MappingError` | `field`, `sourcePath` | `error.field // "ref"` |
|
|
319
|
+
| `ResolverError` | `resolverName`, `fieldName`, `fieldPath`, `originalError` | `error.resolverName // "custom.parseDate"` |
|
|
320
|
+
| `ValidationError` | `validationErrors[]` | `error.validationErrors[0].field` |
|
|
321
|
+
| `ConfigurationError` | `configKey`, `code` | `error.configKey // "baseUrl"` |
|
|
322
|
+
| `BatchSubmissionError` | `jobId`, `batchId`, `code` | `error.jobId // "JOB-123"` |
|
|
323
|
+
| `GraphQLExecutionError` | `graphqlErrors[]`, `query`, `variables` | `error.getErrorMessages()` |
|
|
324
|
+
| `DataSourceError` | `source`, `operation`, `details` | `error.source // "S3_CSV"` |
|
|
325
|
+
| `IngestionError` | `code`, `context`, `timestamp` | `error.code // "NETWORK_ERROR"` |
|
|
326
|
+
|
|
327
|
+
## Common Mistakes
|
|
328
|
+
|
|
329
|
+
### ❌ Silencing Errors
|
|
330
|
+
|
|
331
|
+
```typescript
|
|
332
|
+
// ❌ WRONG
|
|
333
|
+
try {
|
|
334
|
+
await processOrder(data);
|
|
335
|
+
} catch (error) {
|
|
336
|
+
// Do nothing - error is lost!
|
|
337
|
+
}
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
### ❌ Retrying Permanent Errors
|
|
341
|
+
|
|
342
|
+
```typescript
|
|
343
|
+
// ❌ WRONG
|
|
344
|
+
catch (error) {
|
|
345
|
+
if (error instanceof FileParsingError) {
|
|
346
|
+
return retry(); // Won't succeed!
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
### ❌ Missing Context
|
|
352
|
+
|
|
353
|
+
```typescript
|
|
354
|
+
// ❌ WRONG
|
|
355
|
+
logger.error('Error occurred');
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
### ❌ Not Re-throwing
|
|
359
|
+
|
|
360
|
+
```typescript
|
|
361
|
+
// ❌ WRONG
|
|
362
|
+
catch (error) {
|
|
363
|
+
logger.error('Error:', error);
|
|
364
|
+
return null; // Swallows error!
|
|
365
|
+
}
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
## Best Practices Summary
|
|
369
|
+
|
|
370
|
+
1. ✅ Always use try-catch
|
|
371
|
+
2. ✅ Check error types with `instanceof`
|
|
372
|
+
3. ✅ Use `error.toJSON()` for logging
|
|
373
|
+
4. ✅ Check `error.isRetryable()` before retry
|
|
374
|
+
5. ✅ Re-throw errors after handling
|
|
375
|
+
6. ✅ Log with correlation IDs
|
|
376
|
+
7. ✅ Monitor error rates
|
|
377
|
+
8. ✅ Set up alerts
|
|
378
|
+
9. ✅ Document error scenarios
|
|
379
|
+
10. ✅ Test error paths
|
|
380
|
+
|
|
381
|
+
## Related Modules
|
|
382
|
+
|
|
383
|
+
- [Module 1: Foundations](./modules/error-handling-01-foundations.md) - Fail-fast principles
|
|
384
|
+
- [Module 2: Error Types](./modules/error-handling-02-error-types.md) - Complete error reference
|
|
385
|
+
- [Module 3: UTF-8 Handling](./modules/error-handling-03-utf8-handling.md) - UTF-8 encoding and special characters
|
|
386
|
+
- [Module 4: Error Scenarios](./modules/error-handling-04-error-scenarios.md) - Real-world examples
|
|
387
|
+
- [Module 5: Calling Patterns](./modules/error-handling-05-calling-patterns.md) - Code patterns
|
|
388
|
+
- [Module 6: Retry Strategies](./modules/error-handling-06-retry-strategies.md) - Retry logic
|
|
389
|
+
- [Module 7: Monitoring](./modules/error-handling-07-monitoring.md) - Logging and monitoring
|
|
390
|
+
- [Module 8: API Reference](./modules/error-handling-08-api-reference.md) - Complete API docs
|