@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
package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-07-reference.md
CHANGED
|
@@ -1,445 +1,445 @@
|
|
|
1
|
-
# Module 7: Connector Patterns Reference
|
|
2
|
-
|
|
3
|
-
**Level:** Reference
|
|
4
|
-
**Estimated Time:** As needed
|
|
5
|
-
|
|
6
|
-
## Overview
|
|
7
|
-
|
|
8
|
-
This module provides a quick reference catalog of all connector patterns, components, and common code snippets.
|
|
9
|
-
|
|
10
|
-
## Connector Patterns Catalog
|
|
11
|
-
|
|
12
|
-
### Pattern 1: SFTP CSV to Fluent Inventory
|
|
13
|
-
|
|
14
|
-
- **Complexity:** Low
|
|
15
|
-
- **Components:** SftpDataSource, CSVParserService, UniversalMapper, FluentClient
|
|
16
|
-
- **Use Case:** Daily inventory updates from warehouse
|
|
17
|
-
- **Full Example:** [See Common Patterns](../examples/common-patterns.ts)
|
|
18
|
-
|
|
19
|
-
### Pattern 2: S3 Parquet to Fluent Products
|
|
20
|
-
|
|
21
|
-
- **Complexity:** Medium
|
|
22
|
-
- **Components:** S3DataSource, ParquetParserService, UniversalMapper, FluentClient
|
|
23
|
-
- **Use Case:** Product catalog sync from data lake
|
|
24
|
-
- **Full Example:** [See Common Patterns](../examples/common-patterns.ts)
|
|
25
|
-
|
|
26
|
-
### Pattern 3: SFTP JSON to Fluent Orders
|
|
27
|
-
|
|
28
|
-
- **Complexity:** Medium
|
|
29
|
-
- **Components:** SftpDataSource, JSONParserService, SchemaValidationService
|
|
30
|
-
- **Use Case:** Order creation from e-commerce exports
|
|
31
|
-
- **Full Example:** [See Common Patterns](../examples/common-patterns.ts)
|
|
32
|
-
|
|
33
|
-
### Pattern 4: S3 CSV with State Management
|
|
34
|
-
|
|
35
|
-
- **Complexity:** High
|
|
36
|
-
- **Components:** S3DataSource, CSVParserService, StateService, FluentClient
|
|
37
|
-
- **Use Case:** Large file processing with recovery
|
|
38
|
-
- **Full Example:** [See Common Patterns](../examples/common-patterns.ts)
|
|
39
|
-
|
|
40
|
-
### Pattern 5: Multi-Source Aggregation
|
|
41
|
-
|
|
42
|
-
- **Complexity:** High
|
|
43
|
-
- **Components:** SftpDataSource, S3DataSource, Multiple parsers, Reconciliation
|
|
44
|
-
- **Use Case:** Aggregate inventory from multiple warehouses
|
|
45
|
-
- **Full Example:** [See Common Patterns](../examples/common-patterns.ts)
|
|
46
|
-
|
|
47
|
-
### Pattern 6: Bidirectional Sync
|
|
48
|
-
|
|
49
|
-
- **Complexity:** Medium
|
|
50
|
-
- **Components:** FluentClient, ExtractionOrchestrator, SftpDataSource
|
|
51
|
-
- **Use Case:** Export Fluent data to external systems
|
|
52
|
-
- **Full Example:** [See Common Patterns](../examples/common-patterns.ts)
|
|
53
|
-
|
|
54
|
-
## Component Reference
|
|
55
|
-
|
|
56
|
-
### Data Sources
|
|
57
|
-
|
|
58
|
-
| Component | Protocol | Formats | Key Methods |
|
|
59
|
-
| --------------------- | -------- | ------------------ | ------------------------------------------------------------------ |
|
|
60
|
-
| `SftpDataSource` | SFTP | CSV, JSON, XML | `listFiles()`, `downloadFile()`, `uploadFile()`, `moveFile()` |
|
|
61
|
-
| `S3DataSource` | AWS S3 | CSV, JSON, Parquet | `listFiles()`, `downloadFile()`, `uploadFile()`, `getFileStream()` |
|
|
62
|
-
| `InventoryDataSource` | Custom | Any | Extend for custom sources |
|
|
63
|
-
|
|
64
|
-
### Parsers
|
|
65
|
-
|
|
66
|
-
| Component | Format | Streaming | Key Options |
|
|
67
|
-
| ---------------------- | ------- | --------- | --------------------------------------------------- |
|
|
68
|
-
| `CSVParserService` | CSV | Yes | `delimiter`, `headers`, `skipEmptyLines`, `maxRows` |
|
|
69
|
-
| `ParquetParserService` | Parquet | No | `columns`, `maxRows` |
|
|
70
|
-
| `XMLParserService` | XML | Yes | `pathMapping`, `rootElement` |
|
|
71
|
-
| `JSONParserService` | JSON | Yes | `jsonFormat`, `validate` |
|
|
72
|
-
|
|
73
|
-
### Transformation
|
|
74
|
-
|
|
75
|
-
| Component | Purpose | Key Methods |
|
|
76
|
-
| ------------------- | -------------------- | -------------------------- |
|
|
77
|
-
| `UniversalMapper` | Field transformation | `map()`, `mapBatch()` |
|
|
78
|
-
| `SchemaValidationService` | GraphQL schema validation | `validateMutation()`, `validatePayload()` |
|
|
79
|
-
| `ExtractionOrchestrator` | High-level data extraction | `extract()`, with auto-pagination |
|
|
80
|
-
|
|
81
|
-
### State Management
|
|
82
|
-
|
|
83
|
-
⚠️ **IMPORTANT:** StateService requires KV adapter passed to EVERY method call. The constructor takes only logger (optional).
|
|
84
|
-
|
|
85
|
-
| Component | Storage | Use Case |
|
|
86
|
-
| ------------------------ | -------------- | ---------------------------- |
|
|
87
|
-
| `StateService` | KV adapter-based | File tracking, deduplication, checkpointing |
|
|
88
|
-
| `VersoriKVAdapter` | Versori KV | Versori platform state |
|
|
89
|
-
| `VersoriFileTracker` | Versori KV | Simple file tracking |
|
|
90
|
-
|
|
91
|
-
#### VersoriFileTracker Usage
|
|
92
|
-
|
|
93
|
-
**Simple file tracking without StateService complexity:**
|
|
94
|
-
|
|
95
|
-
```typescript
|
|
96
|
-
import { schedule, fn } from '@versori/run';
|
|
97
|
-
import { VersoriFileTracker, SftpDataSource } from '@fluentcommerce/fc-connect-sdk';
|
|
98
|
-
|
|
99
|
-
export const inventorySync = schedule("inventory-sync", "0 * * * *")
|
|
100
|
-
.then(fn("process-files", async (ctx) => {
|
|
101
|
-
const { log } = ctx;
|
|
102
|
-
|
|
103
|
-
// Create file tracker (simpler than StateService)
|
|
104
|
-
const fileTracker = new VersoriFileTracker(openKv(), 'inventory-sync');
|
|
105
|
-
|
|
106
|
-
// List files from SFTP
|
|
107
|
-
const sftp = new SftpDataSource(sftpConfig, log);
|
|
108
|
-
const files = await sftp.listFiles();
|
|
109
|
-
|
|
110
|
-
for (const file of files) {
|
|
111
|
-
// Skip already processed files
|
|
112
|
-
if (await fileTracker.wasFileProcessed(file.name)) {
|
|
113
|
-
log.info(`Skipping already processed file: ${file.name}`);
|
|
114
|
-
continue;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
try {
|
|
118
|
-
// Download and process file
|
|
119
|
-
const content = await sftp.downloadFile(file.path);
|
|
120
|
-
const records = await processFile(content);
|
|
121
|
-
|
|
122
|
-
// Mark as processed with metadata
|
|
123
|
-
await fileTracker.markFileProcessed(file.name, {
|
|
124
|
-
recordCount: records.length
|
|
125
|
-
});
|
|
126
|
-
|
|
127
|
-
log.info(`Processed ${file.name}: ${records.length} records`);
|
|
128
|
-
|
|
129
|
-
// Optional: Track last processed file
|
|
130
|
-
await fileTracker.setLastProcessedFile(file.name);
|
|
131
|
-
|
|
132
|
-
} catch (error) {
|
|
133
|
-
log.error(`Failed to process ${file.name}:`, error);
|
|
134
|
-
// Don't mark as processed - will retry next run
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
// Get last processed file for reporting
|
|
139
|
-
const lastFile = await fileTracker.getLastProcessedFile();
|
|
140
|
-
return { success: true, lastProcessedFile: lastFile };
|
|
141
|
-
}));
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
**VersoriFileTracker API:**
|
|
145
|
-
|
|
146
|
-
| Method | Parameters | Returns | Description |
|
|
147
|
-
|--------|-----------|---------|-------------|
|
|
148
|
-
| `wasFileProcessed(fileName)` | `fileName: string` | `Promise<boolean>` | Check if file was already processed |
|
|
149
|
-
| `markFileProcessed(fileName, metadata?)` | `fileName: string`, `metadata?: { recordCount?: number }` | `Promise<void>` | Mark file as processed with optional metadata |
|
|
150
|
-
| `getLastProcessedFile()` | - | `Promise<string \| null>` | Get the last processed file name |
|
|
151
|
-
| `setLastProcessedFile(fileName)` | `fileName: string` | `Promise<void>` | Set the last processed file |
|
|
152
|
-
|
|
153
|
-
**When to use VersoriFileTracker vs StateService:**
|
|
154
|
-
|
|
155
|
-
| Feature | VersoriFileTracker | StateService |
|
|
156
|
-
|---------|-------------------|--------------|
|
|
157
|
-
| **Simplicity** | ✅ Simple 4-method API | Complex with adapter pattern |
|
|
158
|
-
| **File Tracking** | ✅ Built-in | Requires adapter + workflow ID |
|
|
159
|
-
| **Metadata** | ✅ Basic (recordCount) | ✅ Rich metadata support |
|
|
160
|
-
| **Checkpointing** | ❌ Not supported | ✅ Record-level checkpointing |
|
|
161
|
-
| **Multi-workflow** | ✅ Via prefix | ✅ Via workflow ID |
|
|
162
|
-
| **Best For** | Simple file-based ingestion | Complex stateful workflows |
|
|
163
|
-
|
|
164
|
-
**Recommendation:** Use `VersoriFileTracker` for simple file processing workflows on Versori. Use `StateService` for complex stateful operations or cross-runtime support.
|
|
165
|
-
|
|
166
|
-
## Common Code Patterns
|
|
167
|
-
|
|
168
|
-
### Initialize Connector
|
|
169
|
-
|
|
170
|
-
```typescript
|
|
171
|
-
import {
|
|
172
|
-
createClient,
|
|
173
|
-
SftpDataSource,
|
|
174
|
-
UniversalMapper,
|
|
175
|
-
StateService,
|
|
176
|
-
createConsoleLogger,
|
|
177
|
-
toStructuredLogger
|
|
178
|
-
} from '@fluentcommerce/fc-connect-sdk';
|
|
179
|
-
|
|
180
|
-
const logger = toStructuredLogger(createConsoleLogger(), {
|
|
181
|
-
service: 'connector-name',
|
|
182
|
-
module: 'workflow-name'
|
|
183
|
-
});
|
|
184
|
-
|
|
185
|
-
// StateService constructor takes only logger (optional)
|
|
186
|
-
const stateService = new StateService(logger);
|
|
187
|
-
|
|
188
|
-
const dataSource = new SftpDataSource(
|
|
189
|
-
{
|
|
190
|
-
type: 'SFTP_CSV',
|
|
191
|
-
connectionId: 'my-sftp',
|
|
192
|
-
name: 'My SFTP',
|
|
193
|
-
settings: {
|
|
194
|
-
/* ... */
|
|
195
|
-
},
|
|
196
|
-
},
|
|
197
|
-
logger
|
|
198
|
-
);
|
|
199
|
-
|
|
200
|
-
const mapper = new UniversalMapper({
|
|
201
|
-
fields: {
|
|
202
|
-
/* ... */
|
|
203
|
-
},
|
|
204
|
-
});
|
|
205
|
-
const client = await createClient({
|
|
206
|
-
/* ... */
|
|
207
|
-
});
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
### List and Process Files
|
|
211
|
-
|
|
212
|
-
```typescript
|
|
213
|
-
// ⚠️ IMPORTANT: StateService requires KV adapter passed to EVERY method call
|
|
214
|
-
// Constructor takes only logger (optional)
|
|
215
|
-
const stateService = new StateService(logger);
|
|
216
|
-
const kvAdapter = new VersoriKVAdapter(openKv());
|
|
217
|
-
const workflowId = 'my-workflow';
|
|
218
|
-
|
|
219
|
-
const files = await dataSource.listFiles({
|
|
220
|
-
filePattern: '*.csv'
|
|
221
|
-
});
|
|
222
|
-
|
|
223
|
-
for (const file of files) {
|
|
224
|
-
// KV adapter MUST be passed to every method
|
|
225
|
-
if (await stateService.isFileProcessed(kvAdapter, file.name, workflowId)) continue;
|
|
226
|
-
|
|
227
|
-
const content = await dataSource.downloadFile(file.name);
|
|
228
|
-
const parser = new CSVParserService();
|
|
229
|
-
const records = await parser.parse(content as string);
|
|
230
|
-
|
|
231
|
-
// Process records...
|
|
232
|
-
|
|
233
|
-
// KV adapter MUST be passed to every method
|
|
234
|
-
await stateService.updateSyncState(kvAdapter, [{
|
|
235
|
-
fileName: file.name,
|
|
236
|
-
lastModified: new Date().toISOString(),
|
|
237
|
-
recordCount: records.length
|
|
238
|
-
}], workflowId);
|
|
239
|
-
}
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
### Transform and Validate
|
|
243
|
-
|
|
244
|
-
```typescript
|
|
245
|
-
const validRecords = [];
|
|
246
|
-
const errors = [];
|
|
247
|
-
|
|
248
|
-
for (const record of records) {
|
|
249
|
-
// Validate
|
|
250
|
-
if (!record.sku || !record.quantity) {
|
|
251
|
-
errors.push({ record, error: 'Missing required fields' });
|
|
252
|
-
continue;
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
// Transform
|
|
256
|
-
const result = await mapper.map(record);
|
|
257
|
-
if (result.success) {
|
|
258
|
-
validRecords.push(result.data);
|
|
259
|
-
} else {
|
|
260
|
-
errors.push({ record, errors: result.errors });
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
```
|
|
264
|
-
|
|
265
|
-
### Send to Fluent Batch API
|
|
266
|
-
|
|
267
|
-
```typescript
|
|
268
|
-
const job = await client.createJob({
|
|
269
|
-
name: 'Inventory Update',
|
|
270
|
-
retailerId: process.env.FLUENT_RETAILER_ID!,
|
|
271
|
-
});
|
|
272
|
-
|
|
273
|
-
await client.sendBatch(job.id, {
|
|
274
|
-
action: 'UPSERT',
|
|
275
|
-
entityType: 'INVENTORY',
|
|
276
|
-
entities: transformedRecords,
|
|
277
|
-
});
|
|
278
|
-
|
|
279
|
-
// Monitor status
|
|
280
|
-
const status = await client.getBatchStatus(job.id, batchId);
|
|
281
|
-
```
|
|
282
|
-
|
|
283
|
-
### Send via GraphQL Mutation
|
|
284
|
-
|
|
285
|
-
```typescript
|
|
286
|
-
const mutation = `
|
|
287
|
-
mutation CreateOrder($input: CreateOrderInput!) {
|
|
288
|
-
createOrder(input: $input) {
|
|
289
|
-
id
|
|
290
|
-
ref
|
|
291
|
-
status
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
`;
|
|
295
|
-
|
|
296
|
-
const result = await client.graphql({ query: mutation, variables: { input: orderData } });
|
|
297
|
-
```
|
|
298
|
-
|
|
299
|
-
### Extract from Fluent
|
|
300
|
-
|
|
301
|
-
```typescript
|
|
302
|
-
const query = `
|
|
303
|
-
query GetOrders($retailerId: ID!, $first: Int!, $after: String) {
|
|
304
|
-
orders(retailerId: $retailerId, first: $first, after: $after) {
|
|
305
|
-
edges {
|
|
306
|
-
node { id ref status customer { email } }
|
|
307
|
-
cursor
|
|
308
|
-
}
|
|
309
|
-
pageInfo { hasNextPage }
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
`;
|
|
313
|
-
|
|
314
|
-
const result = await client.graphql({
|
|
315
|
-
query,
|
|
316
|
-
variables: { retailerId, first: 100 },
|
|
317
|
-
pagination: { maxPages: 50 },
|
|
318
|
-
});
|
|
319
|
-
|
|
320
|
-
const orders = result.data.orders.edges.map(e => e.node);
|
|
321
|
-
```
|
|
322
|
-
|
|
323
|
-
## Error Handling Patterns
|
|
324
|
-
|
|
325
|
-
### Record-Level (Skip Invalid)
|
|
326
|
-
|
|
327
|
-
```typescript
|
|
328
|
-
const validRecords = records.filter(record => {
|
|
329
|
-
try {
|
|
330
|
-
validateRecord(record);
|
|
331
|
-
return true;
|
|
332
|
-
} catch (error) {
|
|
333
|
-
logger.warn('Invalid record', { record, error });
|
|
334
|
-
return false;
|
|
335
|
-
}
|
|
336
|
-
});
|
|
337
|
-
```
|
|
338
|
-
|
|
339
|
-
### File-Level (Quarantine)
|
|
340
|
-
|
|
341
|
-
```typescript
|
|
342
|
-
try {
|
|
343
|
-
await processFile(file);
|
|
344
|
-
} catch (error) {
|
|
345
|
-
logger.error(`File failed: ${file.name}`, error);
|
|
346
|
-
await dataSource.moveFile(file.name, 'errors/');
|
|
347
|
-
}
|
|
348
|
-
```
|
|
349
|
-
|
|
350
|
-
### Job-Level (Fail Fast)
|
|
351
|
-
|
|
352
|
-
```typescript
|
|
353
|
-
try {
|
|
354
|
-
await runConnector();
|
|
355
|
-
} catch (error) {
|
|
356
|
-
logger.error('Critical failure', error);
|
|
357
|
-
await notifyAdmins(error);
|
|
358
|
-
throw error;
|
|
359
|
-
}
|
|
360
|
-
```
|
|
361
|
-
|
|
362
|
-
## Environment Configuration
|
|
363
|
-
|
|
364
|
-
```bash
|
|
365
|
-
# Fluent Commerce
|
|
366
|
-
FLUENT_BASE_URL=https://api.fluentcommerce.com
|
|
367
|
-
FLUENT_CLIENT_ID=your-client-id
|
|
368
|
-
FLUENT_CLIENT_SECRET=***SECRET***
|
|
369
|
-
FLUENT_RETAILER_ID=1
|
|
370
|
-
|
|
371
|
-
# SFTP Source
|
|
372
|
-
SFTP_HOST=sftp.partner.com
|
|
373
|
-
SFTP_USERNAME=user
|
|
374
|
-
SFTP_PASSWORD=***SECRET***
|
|
375
|
-
|
|
376
|
-
# S3 Source
|
|
377
|
-
S3_BUCKET=data-bucket
|
|
378
|
-
AWS_REGION=us-east-1
|
|
379
|
-
AWS_ACCESS_KEY_ID=***SECRET***
|
|
380
|
-
AWS_SECRET_ACCESS_KEY=***SECRET***
|
|
381
|
-
|
|
382
|
-
# Connector Settings
|
|
383
|
-
LOG_LEVEL=info
|
|
384
|
-
BATCH_SIZE=100
|
|
385
|
-
STATE_STORAGE=s3
|
|
386
|
-
```
|
|
387
|
-
|
|
388
|
-
## Performance Tuning
|
|
389
|
-
|
|
390
|
-
| Scenario | Recommended Setting | Notes |
|
|
391
|
-
| ----------------------------- | ----------------------------------- | ----------------------- |
|
|
392
|
-
| Small files (< 1000 records) | Batch size: 500 | Process in single batch |
|
|
393
|
-
| Medium files (1K-10K records) | Batch size: 200-500 | Balance speed vs memory |
|
|
394
|
-
| Large files (> 10K records) | Batch size: 100-200, Streaming: Yes | Use checkpoints |
|
|
395
|
-
| High-frequency updates | Batch size: 50-100 | Optimize for latency |
|
|
396
|
-
| Low-frequency bulk | Batch size: 500-1000 | Optimize for throughput |
|
|
397
|
-
|
|
398
|
-
## Testing Checklist
|
|
399
|
-
|
|
400
|
-
- [ ] Unit tests for parsers
|
|
401
|
-
- [ ] Unit tests for mappers
|
|
402
|
-
- [ ] Unit tests for validators
|
|
403
|
-
- [ ] Integration tests for data sources
|
|
404
|
-
- [ ] Integration tests for Fluent API
|
|
405
|
-
- [ ] End-to-end tests with test data
|
|
406
|
-
- [ ] Performance tests with large files
|
|
407
|
-
- [ ] Error handling tests
|
|
408
|
-
- [ ] State management tests
|
|
409
|
-
- [ ] Recovery from failure tests
|
|
410
|
-
|
|
411
|
-
## Deployment Checklist
|
|
412
|
-
|
|
413
|
-
- [ ] Environment variables configured
|
|
414
|
-
- [ ] Secrets stored securely
|
|
415
|
-
- [ ] Logging configured
|
|
416
|
-
- [ ] Monitoring/alerts set up
|
|
417
|
-
- [ ] Health checks implemented
|
|
418
|
-
- [ ] State storage configured
|
|
419
|
-
- [ ] Error notification configured
|
|
420
|
-
- [ ] Backup/recovery plan documented
|
|
421
|
-
- [ ] Performance baselines established
|
|
422
|
-
- [ ] Documentation updated
|
|
423
|
-
|
|
424
|
-
## Quick Links
|
|
425
|
-
|
|
426
|
-
- [Full Connector Examples](../examples/)
|
|
427
|
-
- [Common Patterns](../examples/common-patterns.ts)
|
|
428
|
-
- [Universal Mapping Guide](../../../02-CORE-GUIDES/mapping/mapping-readme.md)
|
|
429
|
-
- [Auto-Pagination Guide](../../../02-CORE-GUIDES/auto-pagination/auto-pagination-readme.md)
|
|
430
|
-
- [API Reference](../../../02-CORE-GUIDES/api-reference/api-reference-readme.md)
|
|
431
|
-
- [Getting Started](../../../00-START-HERE/getting-started.md)
|
|
432
|
-
|
|
433
|
-
## Summary
|
|
434
|
-
|
|
435
|
-
This reference module provides:
|
|
436
|
-
|
|
437
|
-
- ✅ Catalog of all connector patterns
|
|
438
|
-
- ✅ Component reference tables
|
|
439
|
-
- ✅ Common code patterns (copy-paste ready)
|
|
440
|
-
- ✅ Error handling strategies
|
|
441
|
-
- ✅ Configuration templates
|
|
442
|
-
- ✅ Performance tuning guidelines
|
|
443
|
-
- ✅ Testing and deployment checklists
|
|
444
|
-
|
|
445
|
-
Use this module as a quick reference when building connectors.
|
|
1
|
+
# Module 7: Connector Patterns Reference
|
|
2
|
+
|
|
3
|
+
**Level:** Reference
|
|
4
|
+
**Estimated Time:** As needed
|
|
5
|
+
|
|
6
|
+
## Overview
|
|
7
|
+
|
|
8
|
+
This module provides a quick reference catalog of all connector patterns, components, and common code snippets.
|
|
9
|
+
|
|
10
|
+
## Connector Patterns Catalog
|
|
11
|
+
|
|
12
|
+
### Pattern 1: SFTP CSV to Fluent Inventory
|
|
13
|
+
|
|
14
|
+
- **Complexity:** Low
|
|
15
|
+
- **Components:** SftpDataSource, CSVParserService, UniversalMapper, FluentClient
|
|
16
|
+
- **Use Case:** Daily inventory updates from warehouse
|
|
17
|
+
- **Full Example:** [See Common Patterns](../examples/common-patterns.ts)
|
|
18
|
+
|
|
19
|
+
### Pattern 2: S3 Parquet to Fluent Products
|
|
20
|
+
|
|
21
|
+
- **Complexity:** Medium
|
|
22
|
+
- **Components:** S3DataSource, ParquetParserService, UniversalMapper, FluentClient
|
|
23
|
+
- **Use Case:** Product catalog sync from data lake
|
|
24
|
+
- **Full Example:** [See Common Patterns](../examples/common-patterns.ts)
|
|
25
|
+
|
|
26
|
+
### Pattern 3: SFTP JSON to Fluent Orders
|
|
27
|
+
|
|
28
|
+
- **Complexity:** Medium
|
|
29
|
+
- **Components:** SftpDataSource, JSONParserService, SchemaValidationService
|
|
30
|
+
- **Use Case:** Order creation from e-commerce exports
|
|
31
|
+
- **Full Example:** [See Common Patterns](../examples/common-patterns.ts)
|
|
32
|
+
|
|
33
|
+
### Pattern 4: S3 CSV with State Management
|
|
34
|
+
|
|
35
|
+
- **Complexity:** High
|
|
36
|
+
- **Components:** S3DataSource, CSVParserService, StateService, FluentClient
|
|
37
|
+
- **Use Case:** Large file processing with recovery
|
|
38
|
+
- **Full Example:** [See Common Patterns](../examples/common-patterns.ts)
|
|
39
|
+
|
|
40
|
+
### Pattern 5: Multi-Source Aggregation
|
|
41
|
+
|
|
42
|
+
- **Complexity:** High
|
|
43
|
+
- **Components:** SftpDataSource, S3DataSource, Multiple parsers, Reconciliation
|
|
44
|
+
- **Use Case:** Aggregate inventory from multiple warehouses
|
|
45
|
+
- **Full Example:** [See Common Patterns](../examples/common-patterns.ts)
|
|
46
|
+
|
|
47
|
+
### Pattern 6: Bidirectional Sync
|
|
48
|
+
|
|
49
|
+
- **Complexity:** Medium
|
|
50
|
+
- **Components:** FluentClient, ExtractionOrchestrator, SftpDataSource
|
|
51
|
+
- **Use Case:** Export Fluent data to external systems
|
|
52
|
+
- **Full Example:** [See Common Patterns](../examples/common-patterns.ts)
|
|
53
|
+
|
|
54
|
+
## Component Reference
|
|
55
|
+
|
|
56
|
+
### Data Sources
|
|
57
|
+
|
|
58
|
+
| Component | Protocol | Formats | Key Methods |
|
|
59
|
+
| --------------------- | -------- | ------------------ | ------------------------------------------------------------------ |
|
|
60
|
+
| `SftpDataSource` | SFTP | CSV, JSON, XML | `listFiles()`, `downloadFile()`, `uploadFile()`, `moveFile()` |
|
|
61
|
+
| `S3DataSource` | AWS S3 | CSV, JSON, Parquet | `listFiles()`, `downloadFile()`, `uploadFile()`, `getFileStream()` |
|
|
62
|
+
| `InventoryDataSource` | Custom | Any | Extend for custom sources |
|
|
63
|
+
|
|
64
|
+
### Parsers
|
|
65
|
+
|
|
66
|
+
| Component | Format | Streaming | Key Options |
|
|
67
|
+
| ---------------------- | ------- | --------- | --------------------------------------------------- |
|
|
68
|
+
| `CSVParserService` | CSV | Yes | `delimiter`, `headers`, `skipEmptyLines`, `maxRows` |
|
|
69
|
+
| `ParquetParserService` | Parquet | No | `columns`, `maxRows` |
|
|
70
|
+
| `XMLParserService` | XML | Yes | `pathMapping`, `rootElement` |
|
|
71
|
+
| `JSONParserService` | JSON | Yes | `jsonFormat`, `validate` |
|
|
72
|
+
|
|
73
|
+
### Transformation
|
|
74
|
+
|
|
75
|
+
| Component | Purpose | Key Methods |
|
|
76
|
+
| ------------------- | -------------------- | -------------------------- |
|
|
77
|
+
| `UniversalMapper` | Field transformation | `map()`, `mapBatch()` |
|
|
78
|
+
| `SchemaValidationService` | GraphQL schema validation | `validateMutation()`, `validatePayload()` |
|
|
79
|
+
| `ExtractionOrchestrator` | High-level data extraction | `extract()`, with auto-pagination |
|
|
80
|
+
|
|
81
|
+
### State Management
|
|
82
|
+
|
|
83
|
+
⚠️ **IMPORTANT:** StateService requires KV adapter passed to EVERY method call. The constructor takes only logger (optional).
|
|
84
|
+
|
|
85
|
+
| Component | Storage | Use Case |
|
|
86
|
+
| ------------------------ | -------------- | ---------------------------- |
|
|
87
|
+
| `StateService` | KV adapter-based | File tracking, deduplication, checkpointing |
|
|
88
|
+
| `VersoriKVAdapter` | Versori KV | Versori platform state |
|
|
89
|
+
| `VersoriFileTracker` | Versori KV | Simple file tracking |
|
|
90
|
+
|
|
91
|
+
#### VersoriFileTracker Usage
|
|
92
|
+
|
|
93
|
+
**Simple file tracking without StateService complexity:**
|
|
94
|
+
|
|
95
|
+
```typescript
|
|
96
|
+
import { schedule, fn } from '@versori/run';
|
|
97
|
+
import { VersoriFileTracker, SftpDataSource } from '@fluentcommerce/fc-connect-sdk';
|
|
98
|
+
|
|
99
|
+
export const inventorySync = schedule("inventory-sync", "0 * * * *")
|
|
100
|
+
.then(fn("process-files", async (ctx) => {
|
|
101
|
+
const { log } = ctx;
|
|
102
|
+
|
|
103
|
+
// Create file tracker (simpler than StateService)
|
|
104
|
+
const fileTracker = new VersoriFileTracker(openKv(), 'inventory-sync');
|
|
105
|
+
|
|
106
|
+
// List files from SFTP
|
|
107
|
+
const sftp = new SftpDataSource(sftpConfig, log);
|
|
108
|
+
const files = await sftp.listFiles();
|
|
109
|
+
|
|
110
|
+
for (const file of files) {
|
|
111
|
+
// Skip already processed files
|
|
112
|
+
if (await fileTracker.wasFileProcessed(file.name)) {
|
|
113
|
+
log.info(`Skipping already processed file: ${file.name}`);
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
try {
|
|
118
|
+
// Download and process file
|
|
119
|
+
const content = await sftp.downloadFile(file.path);
|
|
120
|
+
const records = await processFile(content);
|
|
121
|
+
|
|
122
|
+
// Mark as processed with metadata
|
|
123
|
+
await fileTracker.markFileProcessed(file.name, {
|
|
124
|
+
recordCount: records.length
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
log.info(`Processed ${file.name}: ${records.length} records`);
|
|
128
|
+
|
|
129
|
+
// Optional: Track last processed file
|
|
130
|
+
await fileTracker.setLastProcessedFile(file.name);
|
|
131
|
+
|
|
132
|
+
} catch (error) {
|
|
133
|
+
log.error(`Failed to process ${file.name}:`, error);
|
|
134
|
+
// Don't mark as processed - will retry next run
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// Get last processed file for reporting
|
|
139
|
+
const lastFile = await fileTracker.getLastProcessedFile();
|
|
140
|
+
return { success: true, lastProcessedFile: lastFile };
|
|
141
|
+
}));
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
**VersoriFileTracker API:**
|
|
145
|
+
|
|
146
|
+
| Method | Parameters | Returns | Description |
|
|
147
|
+
|--------|-----------|---------|-------------|
|
|
148
|
+
| `wasFileProcessed(fileName)` | `fileName: string` | `Promise<boolean>` | Check if file was already processed |
|
|
149
|
+
| `markFileProcessed(fileName, metadata?)` | `fileName: string`, `metadata?: { recordCount?: number }` | `Promise<void>` | Mark file as processed with optional metadata |
|
|
150
|
+
| `getLastProcessedFile()` | - | `Promise<string \| null>` | Get the last processed file name |
|
|
151
|
+
| `setLastProcessedFile(fileName)` | `fileName: string` | `Promise<void>` | Set the last processed file |
|
|
152
|
+
|
|
153
|
+
**When to use VersoriFileTracker vs StateService:**
|
|
154
|
+
|
|
155
|
+
| Feature | VersoriFileTracker | StateService |
|
|
156
|
+
|---------|-------------------|--------------|
|
|
157
|
+
| **Simplicity** | ✅ Simple 4-method API | Complex with adapter pattern |
|
|
158
|
+
| **File Tracking** | ✅ Built-in | Requires adapter + workflow ID |
|
|
159
|
+
| **Metadata** | ✅ Basic (recordCount) | ✅ Rich metadata support |
|
|
160
|
+
| **Checkpointing** | ❌ Not supported | ✅ Record-level checkpointing |
|
|
161
|
+
| **Multi-workflow** | ✅ Via prefix | ✅ Via workflow ID |
|
|
162
|
+
| **Best For** | Simple file-based ingestion | Complex stateful workflows |
|
|
163
|
+
|
|
164
|
+
**Recommendation:** Use `VersoriFileTracker` for simple file processing workflows on Versori. Use `StateService` for complex stateful operations or cross-runtime support.
|
|
165
|
+
|
|
166
|
+
## Common Code Patterns
|
|
167
|
+
|
|
168
|
+
### Initialize Connector
|
|
169
|
+
|
|
170
|
+
```typescript
|
|
171
|
+
import {
|
|
172
|
+
createClient,
|
|
173
|
+
SftpDataSource,
|
|
174
|
+
UniversalMapper,
|
|
175
|
+
StateService,
|
|
176
|
+
createConsoleLogger,
|
|
177
|
+
toStructuredLogger
|
|
178
|
+
} from '@fluentcommerce/fc-connect-sdk';
|
|
179
|
+
|
|
180
|
+
const logger = toStructuredLogger(createConsoleLogger(), {
|
|
181
|
+
service: 'connector-name',
|
|
182
|
+
module: 'workflow-name'
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
// StateService constructor takes only logger (optional)
|
|
186
|
+
const stateService = new StateService(logger);
|
|
187
|
+
|
|
188
|
+
const dataSource = new SftpDataSource(
|
|
189
|
+
{
|
|
190
|
+
type: 'SFTP_CSV',
|
|
191
|
+
connectionId: 'my-sftp',
|
|
192
|
+
name: 'My SFTP',
|
|
193
|
+
settings: {
|
|
194
|
+
/* ... */
|
|
195
|
+
},
|
|
196
|
+
},
|
|
197
|
+
logger
|
|
198
|
+
);
|
|
199
|
+
|
|
200
|
+
const mapper = new UniversalMapper({
|
|
201
|
+
fields: {
|
|
202
|
+
/* ... */
|
|
203
|
+
},
|
|
204
|
+
});
|
|
205
|
+
const client = await createClient({
|
|
206
|
+
/* ... */
|
|
207
|
+
});
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### List and Process Files
|
|
211
|
+
|
|
212
|
+
```typescript
|
|
213
|
+
// ⚠️ IMPORTANT: StateService requires KV adapter passed to EVERY method call
|
|
214
|
+
// Constructor takes only logger (optional)
|
|
215
|
+
const stateService = new StateService(logger);
|
|
216
|
+
const kvAdapter = new VersoriKVAdapter(openKv());
|
|
217
|
+
const workflowId = 'my-workflow';
|
|
218
|
+
|
|
219
|
+
const files = await dataSource.listFiles({
|
|
220
|
+
filePattern: '*.csv'
|
|
221
|
+
});
|
|
222
|
+
|
|
223
|
+
for (const file of files) {
|
|
224
|
+
// KV adapter MUST be passed to every method
|
|
225
|
+
if (await stateService.isFileProcessed(kvAdapter, file.name, workflowId)) continue;
|
|
226
|
+
|
|
227
|
+
const content = await dataSource.downloadFile(file.name);
|
|
228
|
+
const parser = new CSVParserService();
|
|
229
|
+
const records = await parser.parse(content as string);
|
|
230
|
+
|
|
231
|
+
// Process records...
|
|
232
|
+
|
|
233
|
+
// KV adapter MUST be passed to every method
|
|
234
|
+
await stateService.updateSyncState(kvAdapter, [{
|
|
235
|
+
fileName: file.name,
|
|
236
|
+
lastModified: new Date().toISOString(),
|
|
237
|
+
recordCount: records.length
|
|
238
|
+
}], workflowId);
|
|
239
|
+
}
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### Transform and Validate
|
|
243
|
+
|
|
244
|
+
```typescript
|
|
245
|
+
const validRecords = [];
|
|
246
|
+
const errors = [];
|
|
247
|
+
|
|
248
|
+
for (const record of records) {
|
|
249
|
+
// Validate
|
|
250
|
+
if (!record.sku || !record.quantity) {
|
|
251
|
+
errors.push({ record, error: 'Missing required fields' });
|
|
252
|
+
continue;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
// Transform
|
|
256
|
+
const result = await mapper.map(record);
|
|
257
|
+
if (result.success) {
|
|
258
|
+
validRecords.push(result.data);
|
|
259
|
+
} else {
|
|
260
|
+
errors.push({ record, errors: result.errors });
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
### Send to Fluent Batch API
|
|
266
|
+
|
|
267
|
+
```typescript
|
|
268
|
+
const job = await client.createJob({
|
|
269
|
+
name: 'Inventory Update',
|
|
270
|
+
retailerId: process.env.FLUENT_RETAILER_ID!,
|
|
271
|
+
});
|
|
272
|
+
|
|
273
|
+
await client.sendBatch(job.id, {
|
|
274
|
+
action: 'UPSERT',
|
|
275
|
+
entityType: 'INVENTORY',
|
|
276
|
+
entities: transformedRecords,
|
|
277
|
+
});
|
|
278
|
+
|
|
279
|
+
// Monitor status
|
|
280
|
+
const status = await client.getBatchStatus(job.id, batchId);
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
### Send via GraphQL Mutation
|
|
284
|
+
|
|
285
|
+
```typescript
|
|
286
|
+
const mutation = `
|
|
287
|
+
mutation CreateOrder($input: CreateOrderInput!) {
|
|
288
|
+
createOrder(input: $input) {
|
|
289
|
+
id
|
|
290
|
+
ref
|
|
291
|
+
status
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
`;
|
|
295
|
+
|
|
296
|
+
const result = await client.graphql({ query: mutation, variables: { input: orderData } });
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
### Extract from Fluent
|
|
300
|
+
|
|
301
|
+
```typescript
|
|
302
|
+
const query = `
|
|
303
|
+
query GetOrders($retailerId: ID!, $first: Int!, $after: String) {
|
|
304
|
+
orders(retailerId: $retailerId, first: $first, after: $after) {
|
|
305
|
+
edges {
|
|
306
|
+
node { id ref status customer { email } }
|
|
307
|
+
cursor
|
|
308
|
+
}
|
|
309
|
+
pageInfo { hasNextPage }
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
`;
|
|
313
|
+
|
|
314
|
+
const result = await client.graphql({
|
|
315
|
+
query,
|
|
316
|
+
variables: { retailerId, first: 100 },
|
|
317
|
+
pagination: { maxPages: 50 },
|
|
318
|
+
});
|
|
319
|
+
|
|
320
|
+
const orders = result.data.orders.edges.map(e => e.node);
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
## Error Handling Patterns
|
|
324
|
+
|
|
325
|
+
### Record-Level (Skip Invalid)
|
|
326
|
+
|
|
327
|
+
```typescript
|
|
328
|
+
const validRecords = records.filter(record => {
|
|
329
|
+
try {
|
|
330
|
+
validateRecord(record);
|
|
331
|
+
return true;
|
|
332
|
+
} catch (error) {
|
|
333
|
+
logger.warn('Invalid record', { record, error });
|
|
334
|
+
return false;
|
|
335
|
+
}
|
|
336
|
+
});
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
### File-Level (Quarantine)
|
|
340
|
+
|
|
341
|
+
```typescript
|
|
342
|
+
try {
|
|
343
|
+
await processFile(file);
|
|
344
|
+
} catch (error) {
|
|
345
|
+
logger.error(`File failed: ${file.name}`, error);
|
|
346
|
+
await dataSource.moveFile(file.name, 'errors/');
|
|
347
|
+
}
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
### Job-Level (Fail Fast)
|
|
351
|
+
|
|
352
|
+
```typescript
|
|
353
|
+
try {
|
|
354
|
+
await runConnector();
|
|
355
|
+
} catch (error) {
|
|
356
|
+
logger.error('Critical failure', error);
|
|
357
|
+
await notifyAdmins(error);
|
|
358
|
+
throw error;
|
|
359
|
+
}
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
## Environment Configuration
|
|
363
|
+
|
|
364
|
+
```bash
|
|
365
|
+
# Fluent Commerce
|
|
366
|
+
FLUENT_BASE_URL=https://api.fluentcommerce.com
|
|
367
|
+
FLUENT_CLIENT_ID=your-client-id
|
|
368
|
+
FLUENT_CLIENT_SECRET=***SECRET***
|
|
369
|
+
FLUENT_RETAILER_ID=1
|
|
370
|
+
|
|
371
|
+
# SFTP Source
|
|
372
|
+
SFTP_HOST=sftp.partner.com
|
|
373
|
+
SFTP_USERNAME=user
|
|
374
|
+
SFTP_PASSWORD=***SECRET***
|
|
375
|
+
|
|
376
|
+
# S3 Source
|
|
377
|
+
S3_BUCKET=data-bucket
|
|
378
|
+
AWS_REGION=us-east-1
|
|
379
|
+
AWS_ACCESS_KEY_ID=***SECRET***
|
|
380
|
+
AWS_SECRET_ACCESS_KEY=***SECRET***
|
|
381
|
+
|
|
382
|
+
# Connector Settings
|
|
383
|
+
LOG_LEVEL=info
|
|
384
|
+
BATCH_SIZE=100
|
|
385
|
+
STATE_STORAGE=s3
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
## Performance Tuning
|
|
389
|
+
|
|
390
|
+
| Scenario | Recommended Setting | Notes |
|
|
391
|
+
| ----------------------------- | ----------------------------------- | ----------------------- |
|
|
392
|
+
| Small files (< 1000 records) | Batch size: 500 | Process in single batch |
|
|
393
|
+
| Medium files (1K-10K records) | Batch size: 200-500 | Balance speed vs memory |
|
|
394
|
+
| Large files (> 10K records) | Batch size: 100-200, Streaming: Yes | Use checkpoints |
|
|
395
|
+
| High-frequency updates | Batch size: 50-100 | Optimize for latency |
|
|
396
|
+
| Low-frequency bulk | Batch size: 500-1000 | Optimize for throughput |
|
|
397
|
+
|
|
398
|
+
## Testing Checklist
|
|
399
|
+
|
|
400
|
+
- [ ] Unit tests for parsers
|
|
401
|
+
- [ ] Unit tests for mappers
|
|
402
|
+
- [ ] Unit tests for validators
|
|
403
|
+
- [ ] Integration tests for data sources
|
|
404
|
+
- [ ] Integration tests for Fluent API
|
|
405
|
+
- [ ] End-to-end tests with test data
|
|
406
|
+
- [ ] Performance tests with large files
|
|
407
|
+
- [ ] Error handling tests
|
|
408
|
+
- [ ] State management tests
|
|
409
|
+
- [ ] Recovery from failure tests
|
|
410
|
+
|
|
411
|
+
## Deployment Checklist
|
|
412
|
+
|
|
413
|
+
- [ ] Environment variables configured
|
|
414
|
+
- [ ] Secrets stored securely
|
|
415
|
+
- [ ] Logging configured
|
|
416
|
+
- [ ] Monitoring/alerts set up
|
|
417
|
+
- [ ] Health checks implemented
|
|
418
|
+
- [ ] State storage configured
|
|
419
|
+
- [ ] Error notification configured
|
|
420
|
+
- [ ] Backup/recovery plan documented
|
|
421
|
+
- [ ] Performance baselines established
|
|
422
|
+
- [ ] Documentation updated
|
|
423
|
+
|
|
424
|
+
## Quick Links
|
|
425
|
+
|
|
426
|
+
- [Full Connector Examples](../examples/)
|
|
427
|
+
- [Common Patterns](../examples/common-patterns.ts)
|
|
428
|
+
- [Universal Mapping Guide](../../../02-CORE-GUIDES/mapping/mapping-readme.md)
|
|
429
|
+
- [Auto-Pagination Guide](../../../02-CORE-GUIDES/auto-pagination/auto-pagination-readme.md)
|
|
430
|
+
- [API Reference](../../../02-CORE-GUIDES/api-reference/api-reference-readme.md)
|
|
431
|
+
- [Getting Started](../../../00-START-HERE/getting-started.md)
|
|
432
|
+
|
|
433
|
+
## Summary
|
|
434
|
+
|
|
435
|
+
This reference module provides:
|
|
436
|
+
|
|
437
|
+
- ✅ Catalog of all connector patterns
|
|
438
|
+
- ✅ Component reference tables
|
|
439
|
+
- ✅ Common code patterns (copy-paste ready)
|
|
440
|
+
- ✅ Error handling strategies
|
|
441
|
+
- ✅ Configuration templates
|
|
442
|
+
- ✅ Performance tuning guidelines
|
|
443
|
+
- ✅ Testing and deployment checklists
|
|
444
|
+
|
|
445
|
+
Use this module as a quick reference when building connectors.
|