@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,548 +1,548 @@
|
|
|
1
|
-
# API Quick Reference
|
|
2
|
-
|
|
3
|
-
**One-page cheat sheet for FC Connect SDK**
|
|
4
|
-
|
|
5
|
-
## Import Statements
|
|
6
|
-
|
|
7
|
-
```typescript
|
|
8
|
-
// Core client and factory
|
|
9
|
-
import { createClient, FluentClient } from '@fluentcommerce/fc-connect-sdk';
|
|
10
|
-
|
|
11
|
-
// Services
|
|
12
|
-
import {
|
|
13
|
-
UniversalMapper,
|
|
14
|
-
StateService,
|
|
15
|
-
WebhookValidationService,
|
|
16
|
-
S3Service,
|
|
17
|
-
createConsoleLogger,
|
|
18
|
-
toStructuredLogger,
|
|
19
|
-
} from '@fluentcommerce/fc-connect-sdk';
|
|
20
|
-
|
|
21
|
-
// Data Sources & Parsers
|
|
22
|
-
import {
|
|
23
|
-
S3DataSource,
|
|
24
|
-
SftpDataSource,
|
|
25
|
-
CSVParserService,
|
|
26
|
-
XMLParserService,
|
|
27
|
-
JSONParserService,
|
|
28
|
-
ParquetParserService,
|
|
29
|
-
} from '@fluentcommerce/fc-connect-sdk';
|
|
30
|
-
|
|
31
|
-
// GraphQL Mapping
|
|
32
|
-
import {
|
|
33
|
-
GraphQLMutationMapper,
|
|
34
|
-
XMLPathResolver,
|
|
35
|
-
JSONPathResolver,
|
|
36
|
-
GraphQLIntrospectionService,
|
|
37
|
-
classifyError,
|
|
38
|
-
classifyErrors,
|
|
39
|
-
} from '@fluentcommerce/fc-connect-sdk';
|
|
40
|
-
|
|
41
|
-
// Types
|
|
42
|
-
import {
|
|
43
|
-
FluentClientConfig,
|
|
44
|
-
BatchAction,
|
|
45
|
-
EntityType,
|
|
46
|
-
JobStrategy,
|
|
47
|
-
MappingConfig,
|
|
48
|
-
FieldConfig,
|
|
49
|
-
} from '@fluentcommerce/fc-connect-sdk';
|
|
50
|
-
|
|
51
|
-
// Utilities
|
|
52
|
-
import {
|
|
53
|
-
parseWebhookRequest,
|
|
54
|
-
validateFluentEvent,
|
|
55
|
-
generateFileName,
|
|
56
|
-
sdkResolvers,
|
|
57
|
-
} from '@fluentcommerce/fc-connect-sdk';
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
## Client Creation
|
|
61
|
-
|
|
62
|
-
```typescript
|
|
63
|
-
// Node.js/Standalone
|
|
64
|
-
const client = await createClient({
|
|
65
|
-
config: {
|
|
66
|
-
baseUrl: 'https://api.fluentcommerce.com',
|
|
67
|
-
clientId: 'your-client-id',
|
|
68
|
-
clientSecret: 'your-client-secret',
|
|
69
|
-
username: 'your-username', // Optional - for password grant
|
|
70
|
-
password: 'your-password', // Optional - for password grant
|
|
71
|
-
retailerId: 'your-retailer-id', // Optional - only for Job/Batch ops
|
|
72
|
-
},
|
|
73
|
-
logger: toStructuredLogger(createConsoleLogger(), {
|
|
74
|
-
logLevel: 'info',
|
|
75
|
-
}), // Optional
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
// Versori Platform (context already has proper shape)
|
|
79
|
-
const client = await createClient(ctx);
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
## GraphQL Operations
|
|
83
|
-
|
|
84
|
-
```typescript
|
|
85
|
-
// Using the main graphql() method
|
|
86
|
-
const result = await client.graphql({
|
|
87
|
-
query: `
|
|
88
|
-
query GetProducts($first: Int) {
|
|
89
|
-
products(first: $first) {
|
|
90
|
-
edges { node { id ref name } }
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
`,
|
|
94
|
-
variables: { first: 10 },
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
// Using helper method: prefer graphql
|
|
98
|
-
const queryResult = await client.graphql({ query:
|
|
99
|
-
`
|
|
100
|
-
query GetProducts($first: Int) {
|
|
101
|
-
products(first: $first) {
|
|
102
|
-
edges { node { id ref name } }
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
`, variables: { first: 10 } });
|
|
106
|
-
|
|
107
|
-
const mutationResult = await client.graphql({ query: `
|
|
108
|
-
mutation UpdateProduct($input: UpdateProductInput!) {
|
|
109
|
-
updateProduct(input: $input) {
|
|
110
|
-
id ref name
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
`, variables: { input: { id: '123', name: 'Updated' } } });
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
## Job & Batch Operations
|
|
117
|
-
|
|
118
|
-
```typescript
|
|
119
|
-
// Create job
|
|
120
|
-
const job = await client.createJob({
|
|
121
|
-
name: 'Inventory Sync',
|
|
122
|
-
retailerId: 'retailer-123',
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
// Send batch (UPSERT only) - source and event are REQUIRED fields
|
|
126
|
-
const batch = await client.sendBatch(job.id, {
|
|
127
|
-
action: BatchAction.UPSERT,
|
|
128
|
-
entityType: EntityType.INVENTORY,
|
|
129
|
-
source: 'CSV_IMPORT', // REQUIRED: Source system identifier
|
|
130
|
-
event: 'INVENTORY_UPDATE', // REQUIRED: Event identifier
|
|
131
|
-
entities: [{ ref: 'SKU-001', qty: 100, locationRef: 'DC-001' }],
|
|
132
|
-
});
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
## Universal Mapping
|
|
136
|
-
|
|
137
|
-
```typescript
|
|
138
|
-
const mapper = new UniversalMapper({
|
|
139
|
-
version: '1.0',
|
|
140
|
-
fields: {
|
|
141
|
-
skuRef: { source: 'SKU', required: true },
|
|
142
|
-
qty: { source: 'QTY', resolver: 'sdk.parseInt' },
|
|
143
|
-
status: { source: 'STATUS', resolver: 'sdk.uppercase' },
|
|
144
|
-
},
|
|
145
|
-
});
|
|
146
|
-
|
|
147
|
-
const result = await mapper.map(record);
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
## GraphQL Mutation Mapping
|
|
151
|
-
|
|
152
|
-
```typescript
|
|
153
|
-
const mapper = new GraphQLMutationMapper(mappingConfig, logger, { fluentClient: client });
|
|
154
|
-
|
|
155
|
-
const payload = await mapper.map(parsedXmlData, {
|
|
156
|
-
beforeMapping: async (data, context) => data,
|
|
157
|
-
afterMapping: async (variables, context) => {
|
|
158
|
-
variables.input.totalPrice = calculateTotal(variables.input.items);
|
|
159
|
-
return variables;
|
|
160
|
-
},
|
|
161
|
-
});
|
|
162
|
-
|
|
163
|
-
const result = await client.graphql(payload);
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
## State Management
|
|
167
|
-
|
|
168
|
-
```typescript
|
|
169
|
-
const stateService = new StateService({
|
|
170
|
-
kvStore: kvAdapter,
|
|
171
|
-
namespace: 'inventory-sync',
|
|
172
|
-
});
|
|
173
|
-
|
|
174
|
-
// Check if processed
|
|
175
|
-
if (!(await stateService.isProcessed('file.csv'))) {
|
|
176
|
-
// Process file
|
|
177
|
-
await stateService.markProcessed('file.csv', { records: 1000 });
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
// Distributed locking
|
|
181
|
-
const lock = await stateService.acquireLock('critical-section', 60000);
|
|
182
|
-
try {
|
|
183
|
-
// Critical section
|
|
184
|
-
} finally {
|
|
185
|
-
await stateService.releaseLock('critical-section');
|
|
186
|
-
}
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
## S3 Operations
|
|
190
|
-
|
|
191
|
-
```typescript
|
|
192
|
-
const s3Service = new S3Service({
|
|
193
|
-
region: 'us-east-1',
|
|
194
|
-
credentials: {
|
|
195
|
-
accessKeyId: 'xxx',
|
|
196
|
-
secretAccessKey: 'yyy',
|
|
197
|
-
},
|
|
198
|
-
});
|
|
199
|
-
|
|
200
|
-
// List objects
|
|
201
|
-
const objects = await s3Service.listObjects('bucket', { prefix: 'path/' });
|
|
202
|
-
|
|
203
|
-
// Get object
|
|
204
|
-
const data = await s3Service.getObject('bucket', 'key');
|
|
205
|
-
|
|
206
|
-
// Put object
|
|
207
|
-
await s3Service.putObject('bucket', 'key', data, {
|
|
208
|
-
contentType: 'application/json',
|
|
209
|
-
});
|
|
210
|
-
|
|
211
|
-
// Generate presigned URL
|
|
212
|
-
const url = await s3Service.getPresignedUrl('getObject', 'bucket', 'key', 3600);
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
## Data Sources
|
|
216
|
-
|
|
217
|
-
```typescript
|
|
218
|
-
// S3 Data Source
|
|
219
|
-
const s3Source = new S3DataSource(
|
|
220
|
-
{
|
|
221
|
-
type: 'S3_CSV',
|
|
222
|
-
connectionId: 'my-s3',
|
|
223
|
-
name: 'My S3 Source',
|
|
224
|
-
s3Config: {
|
|
225
|
-
bucket: 'my-bucket',
|
|
226
|
-
region: 'us-east-1',
|
|
227
|
-
accessKeyId: 'xxx',
|
|
228
|
-
secretAccessKey: 'yyy',
|
|
229
|
-
},
|
|
230
|
-
},
|
|
231
|
-
logger
|
|
232
|
-
);
|
|
233
|
-
|
|
234
|
-
const files = await s3Source.listFiles({ prefix: 'inventory/' });
|
|
235
|
-
const content = await s3Source.downloadFile('inventory/data.csv');
|
|
236
|
-
|
|
237
|
-
// SFTP Data Source
|
|
238
|
-
const sftpSource = new SftpDataSource(
|
|
239
|
-
{
|
|
240
|
-
type: 'SFTP_CSV',
|
|
241
|
-
connectionId: 'my-sftp',
|
|
242
|
-
name: 'My SFTP Source',
|
|
243
|
-
settings: {
|
|
244
|
-
host: 'sftp.example.com',
|
|
245
|
-
port: 22,
|
|
246
|
-
username: 'user',
|
|
247
|
-
password: 'secret',
|
|
248
|
-
remotePath: '/inventory',
|
|
249
|
-
filePattern: '*.csv',
|
|
250
|
-
},
|
|
251
|
-
},
|
|
252
|
-
logger
|
|
253
|
-
);
|
|
254
|
-
|
|
255
|
-
const sftpFiles = await sftpSource.listFiles();
|
|
256
|
-
const sftpContent = await sftpSource.downloadFile('/inventory/data.csv');
|
|
257
|
-
```
|
|
258
|
-
|
|
259
|
-
## Parsers
|
|
260
|
-
|
|
261
|
-
```typescript
|
|
262
|
-
// CSV Parser
|
|
263
|
-
const csvParser = new CSVParserService();
|
|
264
|
-
// Options go to parse() method
|
|
265
|
-
const records = await csvParser.parse(csvContent, { columns: true });
|
|
266
|
-
|
|
267
|
-
// XML Parser
|
|
268
|
-
const xmlParser = new XMLParserService();
|
|
269
|
-
const parsed = await xmlParser.parse(xmlContent, {
|
|
270
|
-
includeAttributes: true,
|
|
271
|
-
attributePrefix: '@',
|
|
272
|
-
});
|
|
273
|
-
|
|
274
|
-
// JSON Parser
|
|
275
|
-
const jsonParser = new JSONParserService();
|
|
276
|
-
const parsed = await jsonParser.parse(jsonContent);
|
|
277
|
-
|
|
278
|
-
// Parquet Parser
|
|
279
|
-
const logger = createConsoleLogger();
|
|
280
|
-
const parquetParser = new ParquetParserService(logger);
|
|
281
|
-
const records = await parquetParser.parse(parquetBuffer);
|
|
282
|
-
```
|
|
283
|
-
|
|
284
|
-
## Path Resolvers
|
|
285
|
-
|
|
286
|
-
```typescript
|
|
287
|
-
// XML Path Resolver
|
|
288
|
-
const xmlResolver = new XMLPathResolver();
|
|
289
|
-
const orderNo = xmlResolver.resolve(xmlData, 'order@order-no');
|
|
290
|
-
const items = xmlResolver.resolve(xmlData, 'items.item.*.sku');
|
|
291
|
-
|
|
292
|
-
// JSON Path Resolver
|
|
293
|
-
const jsonResolver = new JSONPathResolver();
|
|
294
|
-
const orderNo = jsonResolver.resolve(jsonData, 'order.orderNo');
|
|
295
|
-
const items = jsonResolver.resolve(jsonData, 'items.*.sku');
|
|
296
|
-
```
|
|
297
|
-
|
|
298
|
-
## Webhook Validation
|
|
299
|
-
|
|
300
|
-
```typescript
|
|
301
|
-
import { WebhookValidationService, SignatureAlgorithm } from '@fluentcommerce/fc-connect-sdk';
|
|
302
|
-
|
|
303
|
-
// IMPORTANT: Only for Fluent Commerce Rubix workflows
|
|
304
|
-
const validator = new WebhookValidationService(
|
|
305
|
-
{
|
|
306
|
-
algorithm: SignatureAlgorithm.SHA512_WITH_RSA,
|
|
307
|
-
strictValidation: true,
|
|
308
|
-
},
|
|
309
|
-
logger
|
|
310
|
-
);
|
|
311
|
-
|
|
312
|
-
const result = await validator.validateWebhookSignature(
|
|
313
|
-
JSON.stringify(requestBody),
|
|
314
|
-
headers['fluent-signature'],
|
|
315
|
-
publicKey,
|
|
316
|
-
SignatureAlgorithm.SHA512_WITH_RSA
|
|
317
|
-
);
|
|
318
|
-
|
|
319
|
-
if (!result.isValid) {
|
|
320
|
-
throw new Error(`Validation failed: ${result.error}`);
|
|
321
|
-
}
|
|
322
|
-
```
|
|
323
|
-
|
|
324
|
-
## Building Blocks Composition
|
|
325
|
-
|
|
326
|
-
```typescript
|
|
327
|
-
// Compose SDK services for custom workflows
|
|
328
|
-
import { S3DataSource, CSVParserService, UniversalMapper } from '@fluentcommerce/fc-connect-sdk';
|
|
329
|
-
|
|
330
|
-
const s3 = new S3DataSource(
|
|
331
|
-
{
|
|
332
|
-
type: 'S3_CSV',
|
|
333
|
-
connectionId: 's3-composition',
|
|
334
|
-
name: 'S3 Composition',
|
|
335
|
-
s3Config: config.s3Config,
|
|
336
|
-
},
|
|
337
|
-
logger
|
|
338
|
-
);
|
|
339
|
-
const parser = new CSVParserService();
|
|
340
|
-
const mapper = new UniversalMapper({
|
|
341
|
-
fields: {
|
|
342
|
-
ref: { source: 'SKU', required: true },
|
|
343
|
-
qty: { source: 'Quantity', resolver: 'sdk.parseInt' },
|
|
344
|
-
locationRef: { source: 'Location', required: true },
|
|
345
|
-
},
|
|
346
|
-
});
|
|
347
|
-
|
|
348
|
-
// Read and parse
|
|
349
|
-
const content = await s3.downloadFile('inventory.csv');
|
|
350
|
-
const records = await parser.parse(content);
|
|
351
|
-
|
|
352
|
-
// Map records
|
|
353
|
-
const inventory = [];
|
|
354
|
-
for (const record of records) {
|
|
355
|
-
const result = await mapper.map(record);
|
|
356
|
-
if (result.success) inventory.push(result.data);
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
// Create job and send batches
|
|
360
|
-
const job = await client.createJob({
|
|
361
|
-
name: 'Daily Inventory',
|
|
362
|
-
retailerId: '1',
|
|
363
|
-
});
|
|
364
|
-
|
|
365
|
-
const batches = chunkArray(inventory, 1000);
|
|
366
|
-
for (const batch of batches) {
|
|
367
|
-
await client.sendBatch(job.id, {
|
|
368
|
-
action: BatchAction.UPSERT,
|
|
369
|
-
entityType: EntityType.INVENTORY,
|
|
370
|
-
source: 'CSV_IMPORT',
|
|
371
|
-
event: 'INVENTORY_UPDATE',
|
|
372
|
-
entities: batch,
|
|
373
|
-
});
|
|
374
|
-
}
|
|
375
|
-
```
|
|
376
|
-
|
|
377
|
-
## Logging
|
|
378
|
-
|
|
379
|
-
```typescript
|
|
380
|
-
import { createConsoleLogger, toStructuredLogger } from '@fluentcommerce/fc-connect-sdk';
|
|
381
|
-
const logger = toStructuredLogger(createConsoleLogger(), { logLevel: 'info' });
|
|
382
|
-
|
|
383
|
-
logger.info('Processing started', { file: 'inventory.csv' });
|
|
384
|
-
logger.error('Processing failed', { error: error.message });
|
|
385
|
-
logger.debug('Debug info', { records: 100 });
|
|
386
|
-
logger.warn('Warning message', { field: 'qty' });
|
|
387
|
-
```
|
|
388
|
-
|
|
389
|
-
## Error Handling
|
|
390
|
-
|
|
391
|
-
```typescript
|
|
392
|
-
import {
|
|
393
|
-
FluentError,
|
|
394
|
-
AuthenticationError,
|
|
395
|
-
ValidationError,
|
|
396
|
-
MappingError,
|
|
397
|
-
S3ServiceError,
|
|
398
|
-
classifyErrors,
|
|
399
|
-
} from '@fluentcommerce/fc-connect-sdk';
|
|
400
|
-
|
|
401
|
-
try {
|
|
402
|
-
const result = await client.graphql({ query });
|
|
403
|
-
|
|
404
|
-
// Classify GraphQL errors
|
|
405
|
-
if (result.errors) {
|
|
406
|
-
const classification = classifyErrors(result.errors);
|
|
407
|
-
console.error('GraphQL error:', {
|
|
408
|
-
errorCode: classification.errorCode,
|
|
409
|
-
retryable: classification.retryable,
|
|
410
|
-
action: classification.action,
|
|
411
|
-
});
|
|
412
|
-
|
|
413
|
-
if (!classification.retryable) {
|
|
414
|
-
throw new Error(classification.userMessage);
|
|
415
|
-
}
|
|
416
|
-
}
|
|
417
|
-
} catch (error) {
|
|
418
|
-
if (error instanceof AuthenticationError) {
|
|
419
|
-
console.error('Auth failed:', error.message);
|
|
420
|
-
} else if (error instanceof ValidationError) {
|
|
421
|
-
console.error('Validation failed:', error.details);
|
|
422
|
-
} else if (error instanceof MappingError) {
|
|
423
|
-
console.error('Mapping failed:', error.field, error.sourcePath);
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
```
|
|
427
|
-
|
|
428
|
-
## Common Enums
|
|
429
|
-
|
|
430
|
-
```typescript
|
|
431
|
-
// Batch Actions (only UPSERT is supported)
|
|
432
|
-
enum BatchAction {
|
|
433
|
-
UPSERT = 'UPSERT',
|
|
434
|
-
}
|
|
435
|
-
|
|
436
|
-
// Entity Types
|
|
437
|
-
enum EntityType {
|
|
438
|
-
INVENTORY = 'INVENTORY',
|
|
439
|
-
PRODUCT = 'PRODUCT',
|
|
440
|
-
ORDER = 'ORDER',
|
|
441
|
-
CUSTOMER = 'CUSTOMER',
|
|
442
|
-
LOCATION = 'LOCATION',
|
|
443
|
-
FULFILLMENT = 'FULFILLMENT',
|
|
444
|
-
}
|
|
445
|
-
|
|
446
|
-
// Job Strategies
|
|
447
|
-
enum JobStrategy {
|
|
448
|
-
PER_FILE = 'PER_FILE',
|
|
449
|
-
DAILY = 'DAILY',
|
|
450
|
-
BATCHES_PER_JOB = 'BATCHES_PER_JOB',
|
|
451
|
-
}
|
|
452
|
-
|
|
453
|
-
// Signature Algorithms
|
|
454
|
-
enum SignatureAlgorithm {
|
|
455
|
-
SHA512_WITH_RSA = 'SHA512withRSA',
|
|
456
|
-
MD5_WITH_RSA = 'MD5withRSA',
|
|
457
|
-
}
|
|
458
|
-
```
|
|
459
|
-
|
|
460
|
-
## SDK Resolvers
|
|
461
|
-
|
|
462
|
-
Built-in resolvers for Universal Mapper (use with `resolver` field):
|
|
463
|
-
|
|
464
|
-
```typescript
|
|
465
|
-
// String transformations
|
|
466
|
-
('sdk.uppercase', 'sdk.lowercase', 'sdk.trim', 'sdk.toString');
|
|
467
|
-
|
|
468
|
-
// Number transformations
|
|
469
|
-
('sdk.parseInt', 'sdk.parseFloat', 'sdk.number');
|
|
470
|
-
|
|
471
|
-
// Date transformations
|
|
472
|
-
('sdk.formatDate', 'sdk.formatDateShort', 'sdk.parseDate');
|
|
473
|
-
|
|
474
|
-
// Type transformations
|
|
475
|
-
('sdk.boolean', 'sdk.parseJson', 'sdk.toJson');
|
|
476
|
-
|
|
477
|
-
// Utility
|
|
478
|
-
('sdk.identity', 'sdk.coalesce');
|
|
479
|
-
```
|
|
480
|
-
|
|
481
|
-
## Mapping Configuration Pattern
|
|
482
|
-
|
|
483
|
-
```typescript
|
|
484
|
-
const mappingConfig = {
|
|
485
|
-
version: '1.0',
|
|
486
|
-
direction: 'ingest', // or 'extract'
|
|
487
|
-
sourceFormat: 'xml', // or 'json', 'csv', 'graphql'
|
|
488
|
-
mutation: 'createOrder', // For ingest
|
|
489
|
-
fields: {
|
|
490
|
-
ref: {
|
|
491
|
-
source: 'order@id',
|
|
492
|
-
required: true,
|
|
493
|
-
},
|
|
494
|
-
items: {
|
|
495
|
-
source: 'items.item',
|
|
496
|
-
isArray: true,
|
|
497
|
-
fields: {
|
|
498
|
-
productRef: { source: 'sku' },
|
|
499
|
-
quantity: { source: 'qty', resolver: 'sdk.parseInt' },
|
|
500
|
-
},
|
|
501
|
-
},
|
|
502
|
-
},
|
|
503
|
-
};
|
|
504
|
-
```
|
|
505
|
-
|
|
506
|
-
## Testing Utilities
|
|
507
|
-
|
|
508
|
-
```typescript
|
|
509
|
-
// S3 Testers
|
|
510
|
-
import {
|
|
511
|
-
S3SDKTester,
|
|
512
|
-
S3PresignedTester,
|
|
513
|
-
FluentConnectionTester,
|
|
514
|
-
} from '@fluentcommerce/fc-connect-sdk';
|
|
515
|
-
|
|
516
|
-
const s3SdkTester = new S3SDKTester({
|
|
517
|
-
region: 'us-east-1',
|
|
518
|
-
credentials: { accessKeyId: 'xxx', secretAccessKey: 'yyy' },
|
|
519
|
-
bucket: 'my-bucket',
|
|
520
|
-
testOperations: ['list', 'read', 'write', 'delete'],
|
|
521
|
-
logger: console,
|
|
522
|
-
});
|
|
523
|
-
await s3SdkTester.runTests();
|
|
524
|
-
|
|
525
|
-
// Fluent Connection Tester
|
|
526
|
-
const fluentTester = new FluentConnectionTester(client, { logger: console });
|
|
527
|
-
const result = await fluentTester.testConnection();
|
|
528
|
-
```
|
|
529
|
-
|
|
530
|
-
## CLI Tools
|
|
531
|
-
|
|
532
|
-
```bash
|
|
533
|
-
# Introspect GraphQL schema
|
|
534
|
-
npx @fluentcommerce/fc-connect-sdk introspect-schema --url https://api.fluentcommerce.com/graphql
|
|
535
|
-
|
|
536
|
-
# Generate mutation mapping
|
|
537
|
-
npx @fluentcommerce/fc-connect-sdk generate-mutation-mapping --schema schema.json --mutation createOrder
|
|
538
|
-
|
|
539
|
-
# Validate mapping configuration
|
|
540
|
-
npx @fluentcommerce/fc-connect-sdk validate-schema --mapping config.json --schema schema.json
|
|
541
|
-
|
|
542
|
-
# Analyze test coverage
|
|
543
|
-
npx @fluentcommerce/fc-connect-sdk analyze-coverage --dir tests/
|
|
544
|
-
```
|
|
545
|
-
|
|
546
|
-
---
|
|
547
|
-
|
|
548
|
-
For detailed documentation, see the [complete API Reference](./api-reference-readme.md) or browse individual [modules](./modules/).
|
|
1
|
+
# API Quick Reference
|
|
2
|
+
|
|
3
|
+
**One-page cheat sheet for FC Connect SDK**
|
|
4
|
+
|
|
5
|
+
## Import Statements
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
// Core client and factory
|
|
9
|
+
import { createClient, FluentClient } from '@fluentcommerce/fc-connect-sdk';
|
|
10
|
+
|
|
11
|
+
// Services
|
|
12
|
+
import {
|
|
13
|
+
UniversalMapper,
|
|
14
|
+
StateService,
|
|
15
|
+
WebhookValidationService,
|
|
16
|
+
S3Service,
|
|
17
|
+
createConsoleLogger,
|
|
18
|
+
toStructuredLogger,
|
|
19
|
+
} from '@fluentcommerce/fc-connect-sdk';
|
|
20
|
+
|
|
21
|
+
// Data Sources & Parsers
|
|
22
|
+
import {
|
|
23
|
+
S3DataSource,
|
|
24
|
+
SftpDataSource,
|
|
25
|
+
CSVParserService,
|
|
26
|
+
XMLParserService,
|
|
27
|
+
JSONParserService,
|
|
28
|
+
ParquetParserService,
|
|
29
|
+
} from '@fluentcommerce/fc-connect-sdk';
|
|
30
|
+
|
|
31
|
+
// GraphQL Mapping
|
|
32
|
+
import {
|
|
33
|
+
GraphQLMutationMapper,
|
|
34
|
+
XMLPathResolver,
|
|
35
|
+
JSONPathResolver,
|
|
36
|
+
GraphQLIntrospectionService,
|
|
37
|
+
classifyError,
|
|
38
|
+
classifyErrors,
|
|
39
|
+
} from '@fluentcommerce/fc-connect-sdk';
|
|
40
|
+
|
|
41
|
+
// Types
|
|
42
|
+
import {
|
|
43
|
+
FluentClientConfig,
|
|
44
|
+
BatchAction,
|
|
45
|
+
EntityType,
|
|
46
|
+
JobStrategy,
|
|
47
|
+
MappingConfig,
|
|
48
|
+
FieldConfig,
|
|
49
|
+
} from '@fluentcommerce/fc-connect-sdk';
|
|
50
|
+
|
|
51
|
+
// Utilities
|
|
52
|
+
import {
|
|
53
|
+
parseWebhookRequest,
|
|
54
|
+
validateFluentEvent,
|
|
55
|
+
generateFileName,
|
|
56
|
+
sdkResolvers,
|
|
57
|
+
} from '@fluentcommerce/fc-connect-sdk';
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Client Creation
|
|
61
|
+
|
|
62
|
+
```typescript
|
|
63
|
+
// Node.js/Standalone
|
|
64
|
+
const client = await createClient({
|
|
65
|
+
config: {
|
|
66
|
+
baseUrl: 'https://api.fluentcommerce.com',
|
|
67
|
+
clientId: 'your-client-id',
|
|
68
|
+
clientSecret: 'your-client-secret',
|
|
69
|
+
username: 'your-username', // Optional - for password grant
|
|
70
|
+
password: 'your-password', // Optional - for password grant
|
|
71
|
+
retailerId: 'your-retailer-id', // Optional - only for Job/Batch ops
|
|
72
|
+
},
|
|
73
|
+
logger: toStructuredLogger(createConsoleLogger(), {
|
|
74
|
+
logLevel: 'info',
|
|
75
|
+
}), // Optional
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
// Versori Platform (context already has proper shape)
|
|
79
|
+
const client = await createClient(ctx);
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## GraphQL Operations
|
|
83
|
+
|
|
84
|
+
```typescript
|
|
85
|
+
// Using the main graphql() method
|
|
86
|
+
const result = await client.graphql({
|
|
87
|
+
query: `
|
|
88
|
+
query GetProducts($first: Int) {
|
|
89
|
+
products(first: $first) {
|
|
90
|
+
edges { node { id ref name } }
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
`,
|
|
94
|
+
variables: { first: 10 },
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
// Using helper method: prefer graphql
|
|
98
|
+
const queryResult = await client.graphql({ query:
|
|
99
|
+
`
|
|
100
|
+
query GetProducts($first: Int) {
|
|
101
|
+
products(first: $first) {
|
|
102
|
+
edges { node { id ref name } }
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
`, variables: { first: 10 } });
|
|
106
|
+
|
|
107
|
+
const mutationResult = await client.graphql({ query: `
|
|
108
|
+
mutation UpdateProduct($input: UpdateProductInput!) {
|
|
109
|
+
updateProduct(input: $input) {
|
|
110
|
+
id ref name
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
`, variables: { input: { id: '123', name: 'Updated' } } });
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Job & Batch Operations
|
|
117
|
+
|
|
118
|
+
```typescript
|
|
119
|
+
// Create job
|
|
120
|
+
const job = await client.createJob({
|
|
121
|
+
name: 'Inventory Sync',
|
|
122
|
+
retailerId: 'retailer-123',
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
// Send batch (UPSERT only) - source and event are REQUIRED fields
|
|
126
|
+
const batch = await client.sendBatch(job.id, {
|
|
127
|
+
action: BatchAction.UPSERT,
|
|
128
|
+
entityType: EntityType.INVENTORY,
|
|
129
|
+
source: 'CSV_IMPORT', // REQUIRED: Source system identifier
|
|
130
|
+
event: 'INVENTORY_UPDATE', // REQUIRED: Event identifier
|
|
131
|
+
entities: [{ ref: 'SKU-001', qty: 100, locationRef: 'DC-001' }],
|
|
132
|
+
});
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Universal Mapping
|
|
136
|
+
|
|
137
|
+
```typescript
|
|
138
|
+
const mapper = new UniversalMapper({
|
|
139
|
+
version: '1.0',
|
|
140
|
+
fields: {
|
|
141
|
+
skuRef: { source: 'SKU', required: true },
|
|
142
|
+
qty: { source: 'QTY', resolver: 'sdk.parseInt' },
|
|
143
|
+
status: { source: 'STATUS', resolver: 'sdk.uppercase' },
|
|
144
|
+
},
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
const result = await mapper.map(record);
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## GraphQL Mutation Mapping
|
|
151
|
+
|
|
152
|
+
```typescript
|
|
153
|
+
const mapper = new GraphQLMutationMapper(mappingConfig, logger, { fluentClient: client });
|
|
154
|
+
|
|
155
|
+
const payload = await mapper.map(parsedXmlData, {
|
|
156
|
+
beforeMapping: async (data, context) => data,
|
|
157
|
+
afterMapping: async (variables, context) => {
|
|
158
|
+
variables.input.totalPrice = calculateTotal(variables.input.items);
|
|
159
|
+
return variables;
|
|
160
|
+
},
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
const result = await client.graphql(payload);
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## State Management
|
|
167
|
+
|
|
168
|
+
```typescript
|
|
169
|
+
const stateService = new StateService({
|
|
170
|
+
kvStore: kvAdapter,
|
|
171
|
+
namespace: 'inventory-sync',
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
// Check if processed
|
|
175
|
+
if (!(await stateService.isProcessed('file.csv'))) {
|
|
176
|
+
// Process file
|
|
177
|
+
await stateService.markProcessed('file.csv', { records: 1000 });
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
// Distributed locking
|
|
181
|
+
const lock = await stateService.acquireLock('critical-section', 60000);
|
|
182
|
+
try {
|
|
183
|
+
// Critical section
|
|
184
|
+
} finally {
|
|
185
|
+
await stateService.releaseLock('critical-section');
|
|
186
|
+
}
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
## S3 Operations
|
|
190
|
+
|
|
191
|
+
```typescript
|
|
192
|
+
const s3Service = new S3Service({
|
|
193
|
+
region: 'us-east-1',
|
|
194
|
+
credentials: {
|
|
195
|
+
accessKeyId: 'xxx',
|
|
196
|
+
secretAccessKey: 'yyy',
|
|
197
|
+
},
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
// List objects
|
|
201
|
+
const objects = await s3Service.listObjects('bucket', { prefix: 'path/' });
|
|
202
|
+
|
|
203
|
+
// Get object
|
|
204
|
+
const data = await s3Service.getObject('bucket', 'key');
|
|
205
|
+
|
|
206
|
+
// Put object
|
|
207
|
+
await s3Service.putObject('bucket', 'key', data, {
|
|
208
|
+
contentType: 'application/json',
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
// Generate presigned URL
|
|
212
|
+
const url = await s3Service.getPresignedUrl('getObject', 'bucket', 'key', 3600);
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
## Data Sources
|
|
216
|
+
|
|
217
|
+
```typescript
|
|
218
|
+
// S3 Data Source
|
|
219
|
+
const s3Source = new S3DataSource(
|
|
220
|
+
{
|
|
221
|
+
type: 'S3_CSV',
|
|
222
|
+
connectionId: 'my-s3',
|
|
223
|
+
name: 'My S3 Source',
|
|
224
|
+
s3Config: {
|
|
225
|
+
bucket: 'my-bucket',
|
|
226
|
+
region: 'us-east-1',
|
|
227
|
+
accessKeyId: 'xxx',
|
|
228
|
+
secretAccessKey: 'yyy',
|
|
229
|
+
},
|
|
230
|
+
},
|
|
231
|
+
logger
|
|
232
|
+
);
|
|
233
|
+
|
|
234
|
+
const files = await s3Source.listFiles({ prefix: 'inventory/' });
|
|
235
|
+
const content = await s3Source.downloadFile('inventory/data.csv');
|
|
236
|
+
|
|
237
|
+
// SFTP Data Source
|
|
238
|
+
const sftpSource = new SftpDataSource(
|
|
239
|
+
{
|
|
240
|
+
type: 'SFTP_CSV',
|
|
241
|
+
connectionId: 'my-sftp',
|
|
242
|
+
name: 'My SFTP Source',
|
|
243
|
+
settings: {
|
|
244
|
+
host: 'sftp.example.com',
|
|
245
|
+
port: 22,
|
|
246
|
+
username: 'user',
|
|
247
|
+
password: 'secret',
|
|
248
|
+
remotePath: '/inventory',
|
|
249
|
+
filePattern: '*.csv',
|
|
250
|
+
},
|
|
251
|
+
},
|
|
252
|
+
logger
|
|
253
|
+
);
|
|
254
|
+
|
|
255
|
+
const sftpFiles = await sftpSource.listFiles();
|
|
256
|
+
const sftpContent = await sftpSource.downloadFile('/inventory/data.csv');
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
## Parsers
|
|
260
|
+
|
|
261
|
+
```typescript
|
|
262
|
+
// CSV Parser
|
|
263
|
+
const csvParser = new CSVParserService();
|
|
264
|
+
// Options go to parse() method
|
|
265
|
+
const records = await csvParser.parse(csvContent, { columns: true });
|
|
266
|
+
|
|
267
|
+
// XML Parser
|
|
268
|
+
const xmlParser = new XMLParserService();
|
|
269
|
+
const parsed = await xmlParser.parse(xmlContent, {
|
|
270
|
+
includeAttributes: true,
|
|
271
|
+
attributePrefix: '@',
|
|
272
|
+
});
|
|
273
|
+
|
|
274
|
+
// JSON Parser
|
|
275
|
+
const jsonParser = new JSONParserService();
|
|
276
|
+
const parsed = await jsonParser.parse(jsonContent);
|
|
277
|
+
|
|
278
|
+
// Parquet Parser
|
|
279
|
+
const logger = createConsoleLogger();
|
|
280
|
+
const parquetParser = new ParquetParserService(logger);
|
|
281
|
+
const records = await parquetParser.parse(parquetBuffer);
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
## Path Resolvers
|
|
285
|
+
|
|
286
|
+
```typescript
|
|
287
|
+
// XML Path Resolver
|
|
288
|
+
const xmlResolver = new XMLPathResolver();
|
|
289
|
+
const orderNo = xmlResolver.resolve(xmlData, 'order@order-no');
|
|
290
|
+
const items = xmlResolver.resolve(xmlData, 'items.item.*.sku');
|
|
291
|
+
|
|
292
|
+
// JSON Path Resolver
|
|
293
|
+
const jsonResolver = new JSONPathResolver();
|
|
294
|
+
const orderNo = jsonResolver.resolve(jsonData, 'order.orderNo');
|
|
295
|
+
const items = jsonResolver.resolve(jsonData, 'items.*.sku');
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
## Webhook Validation
|
|
299
|
+
|
|
300
|
+
```typescript
|
|
301
|
+
import { WebhookValidationService, SignatureAlgorithm } from '@fluentcommerce/fc-connect-sdk';
|
|
302
|
+
|
|
303
|
+
// IMPORTANT: Only for Fluent Commerce Rubix workflows
|
|
304
|
+
const validator = new WebhookValidationService(
|
|
305
|
+
{
|
|
306
|
+
algorithm: SignatureAlgorithm.SHA512_WITH_RSA,
|
|
307
|
+
strictValidation: true,
|
|
308
|
+
},
|
|
309
|
+
logger
|
|
310
|
+
);
|
|
311
|
+
|
|
312
|
+
const result = await validator.validateWebhookSignature(
|
|
313
|
+
JSON.stringify(requestBody),
|
|
314
|
+
headers['fluent-signature'],
|
|
315
|
+
publicKey,
|
|
316
|
+
SignatureAlgorithm.SHA512_WITH_RSA
|
|
317
|
+
);
|
|
318
|
+
|
|
319
|
+
if (!result.isValid) {
|
|
320
|
+
throw new Error(`Validation failed: ${result.error}`);
|
|
321
|
+
}
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
## Building Blocks Composition
|
|
325
|
+
|
|
326
|
+
```typescript
|
|
327
|
+
// Compose SDK services for custom workflows
|
|
328
|
+
import { S3DataSource, CSVParserService, UniversalMapper } from '@fluentcommerce/fc-connect-sdk';
|
|
329
|
+
|
|
330
|
+
const s3 = new S3DataSource(
|
|
331
|
+
{
|
|
332
|
+
type: 'S3_CSV',
|
|
333
|
+
connectionId: 's3-composition',
|
|
334
|
+
name: 'S3 Composition',
|
|
335
|
+
s3Config: config.s3Config,
|
|
336
|
+
},
|
|
337
|
+
logger
|
|
338
|
+
);
|
|
339
|
+
const parser = new CSVParserService();
|
|
340
|
+
const mapper = new UniversalMapper({
|
|
341
|
+
fields: {
|
|
342
|
+
ref: { source: 'SKU', required: true },
|
|
343
|
+
qty: { source: 'Quantity', resolver: 'sdk.parseInt' },
|
|
344
|
+
locationRef: { source: 'Location', required: true },
|
|
345
|
+
},
|
|
346
|
+
});
|
|
347
|
+
|
|
348
|
+
// Read and parse
|
|
349
|
+
const content = await s3.downloadFile('inventory.csv');
|
|
350
|
+
const records = await parser.parse(content);
|
|
351
|
+
|
|
352
|
+
// Map records
|
|
353
|
+
const inventory = [];
|
|
354
|
+
for (const record of records) {
|
|
355
|
+
const result = await mapper.map(record);
|
|
356
|
+
if (result.success) inventory.push(result.data);
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
// Create job and send batches
|
|
360
|
+
const job = await client.createJob({
|
|
361
|
+
name: 'Daily Inventory',
|
|
362
|
+
retailerId: '1',
|
|
363
|
+
});
|
|
364
|
+
|
|
365
|
+
const batches = chunkArray(inventory, 1000);
|
|
366
|
+
for (const batch of batches) {
|
|
367
|
+
await client.sendBatch(job.id, {
|
|
368
|
+
action: BatchAction.UPSERT,
|
|
369
|
+
entityType: EntityType.INVENTORY,
|
|
370
|
+
source: 'CSV_IMPORT',
|
|
371
|
+
event: 'INVENTORY_UPDATE',
|
|
372
|
+
entities: batch,
|
|
373
|
+
});
|
|
374
|
+
}
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
## Logging
|
|
378
|
+
|
|
379
|
+
```typescript
|
|
380
|
+
import { createConsoleLogger, toStructuredLogger } from '@fluentcommerce/fc-connect-sdk';
|
|
381
|
+
const logger = toStructuredLogger(createConsoleLogger(), { logLevel: 'info' });
|
|
382
|
+
|
|
383
|
+
logger.info('Processing started', { file: 'inventory.csv' });
|
|
384
|
+
logger.error('Processing failed', { error: error.message });
|
|
385
|
+
logger.debug('Debug info', { records: 100 });
|
|
386
|
+
logger.warn('Warning message', { field: 'qty' });
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
## Error Handling
|
|
390
|
+
|
|
391
|
+
```typescript
|
|
392
|
+
import {
|
|
393
|
+
FluentError,
|
|
394
|
+
AuthenticationError,
|
|
395
|
+
ValidationError,
|
|
396
|
+
MappingError,
|
|
397
|
+
S3ServiceError,
|
|
398
|
+
classifyErrors,
|
|
399
|
+
} from '@fluentcommerce/fc-connect-sdk';
|
|
400
|
+
|
|
401
|
+
try {
|
|
402
|
+
const result = await client.graphql({ query });
|
|
403
|
+
|
|
404
|
+
// Classify GraphQL errors
|
|
405
|
+
if (result.errors) {
|
|
406
|
+
const classification = classifyErrors(result.errors);
|
|
407
|
+
console.error('GraphQL error:', {
|
|
408
|
+
errorCode: classification.errorCode,
|
|
409
|
+
retryable: classification.retryable,
|
|
410
|
+
action: classification.action,
|
|
411
|
+
});
|
|
412
|
+
|
|
413
|
+
if (!classification.retryable) {
|
|
414
|
+
throw new Error(classification.userMessage);
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
} catch (error) {
|
|
418
|
+
if (error instanceof AuthenticationError) {
|
|
419
|
+
console.error('Auth failed:', error.message);
|
|
420
|
+
} else if (error instanceof ValidationError) {
|
|
421
|
+
console.error('Validation failed:', error.details);
|
|
422
|
+
} else if (error instanceof MappingError) {
|
|
423
|
+
console.error('Mapping failed:', error.field, error.sourcePath);
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
## Common Enums
|
|
429
|
+
|
|
430
|
+
```typescript
|
|
431
|
+
// Batch Actions (only UPSERT is supported)
|
|
432
|
+
enum BatchAction {
|
|
433
|
+
UPSERT = 'UPSERT',
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
// Entity Types
|
|
437
|
+
enum EntityType {
|
|
438
|
+
INVENTORY = 'INVENTORY',
|
|
439
|
+
PRODUCT = 'PRODUCT',
|
|
440
|
+
ORDER = 'ORDER',
|
|
441
|
+
CUSTOMER = 'CUSTOMER',
|
|
442
|
+
LOCATION = 'LOCATION',
|
|
443
|
+
FULFILLMENT = 'FULFILLMENT',
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
// Job Strategies
|
|
447
|
+
enum JobStrategy {
|
|
448
|
+
PER_FILE = 'PER_FILE',
|
|
449
|
+
DAILY = 'DAILY',
|
|
450
|
+
BATCHES_PER_JOB = 'BATCHES_PER_JOB',
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
// Signature Algorithms
|
|
454
|
+
enum SignatureAlgorithm {
|
|
455
|
+
SHA512_WITH_RSA = 'SHA512withRSA',
|
|
456
|
+
MD5_WITH_RSA = 'MD5withRSA',
|
|
457
|
+
}
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
## SDK Resolvers
|
|
461
|
+
|
|
462
|
+
Built-in resolvers for Universal Mapper (use with `resolver` field):
|
|
463
|
+
|
|
464
|
+
```typescript
|
|
465
|
+
// String transformations
|
|
466
|
+
('sdk.uppercase', 'sdk.lowercase', 'sdk.trim', 'sdk.toString');
|
|
467
|
+
|
|
468
|
+
// Number transformations
|
|
469
|
+
('sdk.parseInt', 'sdk.parseFloat', 'sdk.number');
|
|
470
|
+
|
|
471
|
+
// Date transformations
|
|
472
|
+
('sdk.formatDate', 'sdk.formatDateShort', 'sdk.parseDate');
|
|
473
|
+
|
|
474
|
+
// Type transformations
|
|
475
|
+
('sdk.boolean', 'sdk.parseJson', 'sdk.toJson');
|
|
476
|
+
|
|
477
|
+
// Utility
|
|
478
|
+
('sdk.identity', 'sdk.coalesce');
|
|
479
|
+
```
|
|
480
|
+
|
|
481
|
+
## Mapping Configuration Pattern
|
|
482
|
+
|
|
483
|
+
```typescript
|
|
484
|
+
const mappingConfig = {
|
|
485
|
+
version: '1.0',
|
|
486
|
+
direction: 'ingest', // or 'extract'
|
|
487
|
+
sourceFormat: 'xml', // or 'json', 'csv', 'graphql'
|
|
488
|
+
mutation: 'createOrder', // For ingest
|
|
489
|
+
fields: {
|
|
490
|
+
ref: {
|
|
491
|
+
source: 'order@id',
|
|
492
|
+
required: true,
|
|
493
|
+
},
|
|
494
|
+
items: {
|
|
495
|
+
source: 'items.item',
|
|
496
|
+
isArray: true,
|
|
497
|
+
fields: {
|
|
498
|
+
productRef: { source: 'sku' },
|
|
499
|
+
quantity: { source: 'qty', resolver: 'sdk.parseInt' },
|
|
500
|
+
},
|
|
501
|
+
},
|
|
502
|
+
},
|
|
503
|
+
};
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
## Testing Utilities
|
|
507
|
+
|
|
508
|
+
```typescript
|
|
509
|
+
// S3 Testers
|
|
510
|
+
import {
|
|
511
|
+
S3SDKTester,
|
|
512
|
+
S3PresignedTester,
|
|
513
|
+
FluentConnectionTester,
|
|
514
|
+
} from '@fluentcommerce/fc-connect-sdk';
|
|
515
|
+
|
|
516
|
+
const s3SdkTester = new S3SDKTester({
|
|
517
|
+
region: 'us-east-1',
|
|
518
|
+
credentials: { accessKeyId: 'xxx', secretAccessKey: 'yyy' },
|
|
519
|
+
bucket: 'my-bucket',
|
|
520
|
+
testOperations: ['list', 'read', 'write', 'delete'],
|
|
521
|
+
logger: console,
|
|
522
|
+
});
|
|
523
|
+
await s3SdkTester.runTests();
|
|
524
|
+
|
|
525
|
+
// Fluent Connection Tester
|
|
526
|
+
const fluentTester = new FluentConnectionTester(client, { logger: console });
|
|
527
|
+
const result = await fluentTester.testConnection();
|
|
528
|
+
```
|
|
529
|
+
|
|
530
|
+
## CLI Tools
|
|
531
|
+
|
|
532
|
+
```bash
|
|
533
|
+
# Introspect GraphQL schema
|
|
534
|
+
npx @fluentcommerce/fc-connect-sdk introspect-schema --url https://api.fluentcommerce.com/graphql
|
|
535
|
+
|
|
536
|
+
# Generate mutation mapping
|
|
537
|
+
npx @fluentcommerce/fc-connect-sdk generate-mutation-mapping --schema schema.json --mutation createOrder
|
|
538
|
+
|
|
539
|
+
# Validate mapping configuration
|
|
540
|
+
npx @fluentcommerce/fc-connect-sdk validate-schema --mapping config.json --schema schema.json
|
|
541
|
+
|
|
542
|
+
# Analyze test coverage
|
|
543
|
+
npx @fluentcommerce/fc-connect-sdk analyze-coverage --dir tests/
|
|
544
|
+
```
|
|
545
|
+
|
|
546
|
+
---
|
|
547
|
+
|
|
548
|
+
For detailed documentation, see the [complete API Reference](./api-reference-readme.md) or browse individual [modules](./modules/).
|