@fluentcommerce/fc-connect-sdk 0.1.53 → 0.1.55
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +30 -2
- package/README.md +39 -0
- package/dist/cjs/auth/index.d.ts +3 -0
- package/dist/cjs/auth/index.js +13 -0
- package/dist/cjs/auth/profile-loader.d.ts +18 -0
- package/dist/cjs/auth/profile-loader.js +208 -0
- package/dist/cjs/client-factory.d.ts +4 -0
- package/dist/cjs/client-factory.js +10 -0
- package/dist/cjs/clients/fluent-client.js +13 -6
- package/dist/cjs/index.d.ts +3 -1
- package/dist/cjs/index.js +8 -2
- package/dist/cjs/utils/pagination-helpers.js +38 -2
- package/dist/cjs/versori/fluent-versori-client.js +11 -5
- package/dist/esm/auth/index.d.ts +3 -0
- package/dist/esm/auth/index.js +2 -0
- package/dist/esm/auth/profile-loader.d.ts +18 -0
- package/dist/esm/auth/profile-loader.js +169 -0
- package/dist/esm/client-factory.d.ts +4 -0
- package/dist/esm/client-factory.js +9 -0
- package/dist/esm/clients/fluent-client.js +13 -6
- package/dist/esm/index.d.ts +3 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/utils/pagination-helpers.js +38 -2
- package/dist/esm/versori/fluent-versori-client.js +11 -5
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/tsconfig.types.tsbuildinfo +1 -1
- package/dist/types/auth/index.d.ts +3 -0
- package/dist/types/auth/profile-loader.d.ts +18 -0
- package/dist/types/client-factory.d.ts +4 -0
- package/dist/types/index.d.ts +3 -1
- package/docs/00-START-HERE/EXPORT-VALIDATION.md +158 -158
- package/docs/00-START-HERE/cli-analyze-source-structure-guide.md +655 -655
- package/docs/00-START-HERE/cli-documentation-index.md +202 -202
- package/docs/00-START-HERE/cli-quick-reference.md +252 -252
- package/docs/00-START-HERE/decision-tree.md +552 -552
- package/docs/00-START-HERE/getting-started.md +1070 -1070
- package/docs/00-START-HERE/mapper-quick-decision-guide.md +235 -235
- package/docs/00-START-HERE/readme.md +237 -237
- package/docs/00-START-HERE/retailerid-configuration.md +404 -404
- package/docs/00-START-HERE/sdk-philosophy.md +794 -794
- package/docs/00-START-HERE/troubleshooting-quick-reference.md +1086 -1086
- package/docs/01-TEMPLATES/faq.md +686 -686
- package/docs/01-TEMPLATES/patterns/pattern-templates-guide.md +68 -68
- package/docs/01-TEMPLATES/patterns/patterns-csv-schema-validation-and-rejection-report.md +233 -233
- package/docs/01-TEMPLATES/patterns/patterns-custom-resolvers.md +407 -407
- package/docs/01-TEMPLATES/patterns/patterns-error-handling-retry.md +511 -511
- package/docs/01-TEMPLATES/patterns/patterns-field-mapping-universal.md +701 -701
- package/docs/01-TEMPLATES/patterns/patterns-large-file-splitting.md +1430 -1430
- package/docs/01-TEMPLATES/patterns/patterns-master-data-etl.md +2399 -2399
- package/docs/01-TEMPLATES/patterns/patterns-pagination-streaming.md +447 -447
- package/docs/01-TEMPLATES/patterns/patterns-state-duplicate-prevention.md +385 -385
- package/docs/01-TEMPLATES/readme.md +957 -957
- package/docs/01-TEMPLATES/standalone/standalone-asn-inbound-processing.md +1209 -1209
- package/docs/01-TEMPLATES/standalone/standalone-graphql-query-export.md +1140 -1140
- package/docs/01-TEMPLATES/standalone/standalone-graphql-to-parquet-partitioned-s3.md +432 -432
- package/docs/01-TEMPLATES/standalone/standalone-multi-channel-inventory-sync.md +1185 -1185
- package/docs/01-TEMPLATES/standalone/standalone-multi-source-aggregation.md +1462 -1462
- package/docs/01-TEMPLATES/standalone/standalone-s3-csv-batch-api.md +1390 -1390
- package/docs/01-TEMPLATES/standalone/standalone-s3-csv-inventory-to-batch.md +330 -330
- package/docs/01-TEMPLATES/standalone/standalone-scripts-guide.md +87 -87
- package/docs/01-TEMPLATES/standalone/standalone-sftp-xml-graphql.md +1444 -1444
- package/docs/01-TEMPLATES/standalone/standalone-webhook-payload-processing.md +688 -688
- package/docs/01-TEMPLATES/versori/business-examples/business-examples-dropship-order-routing.md +193 -193
- package/docs/01-TEMPLATES/versori/business-examples/business-examples-graphql-parquet-extraction.md +518 -518
- package/docs/01-TEMPLATES/versori/business-examples/business-examples-inter-location-transfers.md +2162 -2162
- package/docs/01-TEMPLATES/versori/business-examples/business-examples-pre-order-allocation.md +2226 -2226
- package/docs/01-TEMPLATES/versori/business-examples/business-scenarios-guide.md +87 -87
- package/docs/01-TEMPLATES/versori/patterns/versori-patterns-connection-validation-pattern.md +656 -656
- package/docs/01-TEMPLATES/versori/patterns/versori-patterns-dual-workflow-connector.md +835 -835
- package/docs/01-TEMPLATES/versori/patterns/versori-patterns-guide.md +108 -108
- package/docs/01-TEMPLATES/versori/patterns/versori-patterns-kv-state-management.md +1533 -1533
- package/docs/01-TEMPLATES/versori/patterns/versori-patterns-xml-response-patterns.md +1160 -1160
- package/docs/01-TEMPLATES/versori/versori-platform-guide.md +201 -201
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-asn-purchase-order.md +1906 -1906
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-dropship-routing.md +1074 -1074
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-flash-sale-reserve.md +1395 -1395
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-generic-xml-order.md +888 -888
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-payment-gateway-integration.md +2478 -2478
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-rma-returns-comprehensive.md +2240 -2240
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-xml-order-ingestion.md +2029 -2029
- package/docs/01-TEMPLATES/versori/webhooks/webhook-templates-guide.md +140 -140
- package/docs/01-TEMPLATES/versori/workflows/_examples/sample-data/inventory-mapping.json +20 -20
- package/docs/01-TEMPLATES/versori/workflows/_examples/sample-data/products_2025-01-22.csv +11 -11
- package/docs/01-TEMPLATES/versori/workflows/_examples/sample-data/sample-data-guide.md +34 -34
- package/docs/01-TEMPLATES/versori/workflows/_examples/workflow-examples-guide.md +36 -36
- package/docs/01-TEMPLATES/versori/workflows/extraction/extraction-modes-guide.md +1038 -1038
- package/docs/01-TEMPLATES/versori/workflows/extraction/extraction-workflows-guide.md +138 -138
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/graphql-extraction-guide.md +63 -63
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-fulfillments-to-sftp-csv.md +2062 -2062
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-fulfillments-to-sftp-xml.md +2294 -2294
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-inventory-positions-to-s3-csv.md +2461 -2461
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-inventory-positions-to-sftp-xml.md +2529 -2529
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-inventory-quantities-to-s3-csv.md +2464 -2464
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-inventory-quantities-to-s3-json.md +1959 -1959
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-orders-to-s3-csv.md +1953 -1953
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-orders-to-sftp-xml.md +2541 -2541
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-products-to-s3-json.md +2384 -2384
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-products-to-sftp-xml.md +2445 -2445
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-virtual-positions-to-s3-csv.md +2355 -2355
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-virtual-positions-to-s3-json.md +2042 -2042
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-virtual-positions-to-sftp-xml.md +2726 -2726
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/batch-api-guide.md +206 -206
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-cycle-count-reconciliation.md +2030 -2030
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-multi-channel-inventory-sync.md +1882 -1882
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-s3-csv-inventory-batch.md +2827 -2827
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-s3-json-inventory-batch.md +1952 -1952
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-s3-xml-inventory-batch.md +3289 -3289
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-sftp-csv-inventory-batch.md +3064 -3064
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-sftp-json-inventory-batch.md +3238 -3238
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-sftp-xml-inventory-batch.md +2977 -2977
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/event-api-guide.md +321 -321
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-payload-json-order-cancel-event.md +959 -959
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-payload-xml-order-cancel-event.md +1170 -1170
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-s3-csv-product-event.md +2312 -2312
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-s3-json-product-event.md +2999 -2999
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-s3-parquet-product-event.md +2836 -2836
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-s3-xml-product-event.md +2395 -2395
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-sftp-csv-product-event.md +2295 -2295
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-sftp-json-product-event.md +2602 -2602
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-sftp-parquet-product-event.md +2589 -2589
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-sftp-xml-product-event.md +3578 -3578
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/graphql-mutations-guide.md +93 -93
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-payload-json-order-update-graphql.md +1260 -1260
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-payload-xml-order-update-graphql.md +1472 -1472
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-csv-control-graphql.md +2417 -2417
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-csv-location-graphql.md +2811 -2811
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-csv-price-graphql.md +2619 -2619
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-json-location-graphql.md +2807 -2807
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-xml-location-graphql.md +2373 -2373
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-sftp-csv-control-graphql.md +2740 -2740
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-sftp-csv-location-graphql.md +2760 -2760
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-sftp-json-location-graphql.md +1710 -1710
- package/docs/01-TEMPLATES/versori/workflows/ingestion/ingestion-workflows-guide.md +136 -136
- package/docs/01-TEMPLATES/versori/workflows/rubix-webhooks/rubix-webhooks-guide.md +520 -520
- package/docs/01-TEMPLATES/versori/workflows/rubix-webhooks/template-webhook-rubix-fulfilment-to-sftp-xml-inline.md +1418 -1418
- package/docs/01-TEMPLATES/versori/workflows/rubix-webhooks/template-webhook-rubix-fulfilment-to-sftp-xml-universal-mapper.md +1785 -1785
- package/docs/01-TEMPLATES/versori/workflows/rubix-webhooks/template-webhook-rubix-order-attribute-update.md +824 -824
- package/docs/01-TEMPLATES/versori/workflows/workflows-overview-guide.md +646 -646
- package/docs/02-CORE-GUIDES/advanced-services/advanced-services-batch-archival.md +724 -724
- package/docs/02-CORE-GUIDES/advanced-services/advanced-services-job-tracker.md +627 -627
- package/docs/02-CORE-GUIDES/advanced-services/advanced-services-partial-batch-recovery.md +561 -561
- package/docs/02-CORE-GUIDES/advanced-services/advanced-services-quick-reference.md +367 -367
- package/docs/02-CORE-GUIDES/advanced-services/advanced-services-readme.md +407 -407
- package/docs/02-CORE-GUIDES/advanced-services/readme.md +49 -49
- package/docs/02-CORE-GUIDES/api-reference/api-reference-quick-reference.md +548 -548
- package/docs/02-CORE-GUIDES/api-reference/event-api-input-output-reference.md +702 -1171
- package/docs/02-CORE-GUIDES/api-reference/examples/client-initialization.ts +286 -286
- package/docs/02-CORE-GUIDES/api-reference/graphql-error-classification.md +337 -337
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-01-client-api.md +399 -482
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-03-authentication.md +199 -199
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-04-graphql-mapping.md +925 -925
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-05-services.md +1198 -1198
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-06-data-sources.md +1083 -1083
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-07-parsers.md +1097 -1097
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-08-pagination.md +513 -513
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-08-types.md +545 -597
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-09-error-handling.md +527 -527
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-09-webhook-validation.md +514 -514
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-10-extraction.md +557 -557
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-10-utilities.md +412 -412
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-11-cli-tools.md +423 -423
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-11-error-handling.md +716 -716
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-12-analyze-source-structure.md +518 -518
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-12-partial-responses.md +212 -212
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-12-testing.md +300 -300
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-13-resolver-builder.md +322 -322
- package/docs/02-CORE-GUIDES/api-reference/readme.md +279 -279
- package/docs/02-CORE-GUIDES/auto-pagination/auto-pagination-quick-reference.md +351 -351
- package/docs/02-CORE-GUIDES/auto-pagination/auto-pagination-readme.md +277 -277
- package/docs/02-CORE-GUIDES/auto-pagination/examples/auto-pagination-readme.md +178 -178
- package/docs/02-CORE-GUIDES/auto-pagination/examples/common-patterns.ts +351 -351
- package/docs/02-CORE-GUIDES/auto-pagination/examples/paginate-products.ts +384 -384
- package/docs/02-CORE-GUIDES/auto-pagination/examples/paginate-virtual-positions.ts +308 -308
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-01-foundations.md +470 -470
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-02-quick-start.md +713 -713
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-03-configuration.md +754 -754
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-04-advanced-patterns.md +732 -732
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-05-sdk-integration.md +847 -847
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-06-troubleshooting.md +359 -359
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-07-api-reference.md +462 -462
- package/docs/02-CORE-GUIDES/auto-pagination/readme.md +54 -54
- package/docs/02-CORE-GUIDES/data-sources/data-sources-file-operations-error-handling.md +1487 -1487
- package/docs/02-CORE-GUIDES/data-sources/data-sources-quick-reference.md +836 -836
- package/docs/02-CORE-GUIDES/data-sources/data-sources-readme.md +276 -276
- package/docs/02-CORE-GUIDES/data-sources/data-sources-sftp-credential-access-security.md +553 -553
- package/docs/02-CORE-GUIDES/data-sources/examples/common-patterns.ts +409 -409
- package/docs/02-CORE-GUIDES/data-sources/examples/data-sources-readme.md +178 -178
- package/docs/02-CORE-GUIDES/data-sources/examples/s3-operations.ts +308 -308
- package/docs/02-CORE-GUIDES/data-sources/examples/sftp-operations.ts +371 -371
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-01-foundations.md +735 -735
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-02-s3-operations.md +1302 -1302
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-03-sftp-operations.md +1379 -1379
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-04-file-patterns.md +941 -941
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-05-advanced-topics.md +813 -813
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-06-integration-patterns.md +486 -486
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-07-troubleshooting.md +387 -387
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-08-api-reference.md +417 -417
- package/docs/02-CORE-GUIDES/data-sources/readme.md +77 -77
- package/docs/02-CORE-GUIDES/error-handling-guide.md +936 -936
- package/docs/02-CORE-GUIDES/extraction/examples/02-core-guides-extraction-readme.md +116 -116
- package/docs/02-CORE-GUIDES/extraction/examples/common-patterns.ts +428 -428
- package/docs/02-CORE-GUIDES/extraction/examples/extract-inventory-basic.ts +187 -187
- package/docs/02-CORE-GUIDES/extraction/extraction-quick-reference.md +596 -596
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-01-foundations.md +514 -514
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-02-basic-extraction.md +823 -823
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-03-parquet-processing.md +507 -507
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-04-data-enrichment.md +546 -546
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-05-transformation.md +494 -494
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-06-export-formats.md +458 -458
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-06-performance.md +138 -138
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-07-api-reference.md +148 -148
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-07-optimization.md +692 -692
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-08-extraction-orchestrator.md +1008 -1008
- package/docs/02-CORE-GUIDES/extraction/readme.md +151 -151
- package/docs/02-CORE-GUIDES/ingestion/examples/_simple-kv-store.ts +40 -40
- package/docs/02-CORE-GUIDES/ingestion/examples/error-recovery.ts +728 -728
- package/docs/02-CORE-GUIDES/ingestion/examples/event-driven.ts +501 -501
- package/docs/02-CORE-GUIDES/ingestion/examples/local-file-ingestion.ts +88 -88
- package/docs/02-CORE-GUIDES/ingestion/examples/parquet-ingestion.ts +117 -117
- package/docs/02-CORE-GUIDES/ingestion/examples/performance-optimized.ts +647 -647
- package/docs/02-CORE-GUIDES/ingestion/examples/s3-csv-ingestion.ts +169 -169
- package/docs/02-CORE-GUIDES/ingestion/examples/sftp-csv-ingestion.ts +134 -134
- package/docs/02-CORE-GUIDES/ingestion/ingestion-quick-reference.md +546 -546
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-01-introduction.md +626 -626
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-02-quick-start.md +658 -658
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-03-data-sources.md +1052 -1052
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-04-field-mapping.md +763 -763
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-05-advanced-parsers.md +676 -676
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-06-batch-api.md +1295 -1295
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-07-api-reference.md +138 -138
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-07-state-management.md +1037 -1037
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-08-performance-optimization.md +1349 -1349
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-09-best-practices.md +1893 -1893
- package/docs/02-CORE-GUIDES/ingestion/readme.md +160 -160
- package/docs/02-CORE-GUIDES/logging-guide.md +585 -585
- package/docs/02-CORE-GUIDES/mapping/error-handling-patterns.md +401 -401
- package/docs/02-CORE-GUIDES/mapping/examples/02-core-guides-mapping-readme.md +128 -128
- package/docs/02-CORE-GUIDES/mapping/examples/common-patterns.ts +273 -273
- package/docs/02-CORE-GUIDES/mapping/examples/csv-location-ingestion.json +36 -36
- package/docs/02-CORE-GUIDES/mapping/examples/csv-mapping.ts +242 -242
- package/docs/02-CORE-GUIDES/mapping/examples/graphql-to-parquet-extraction.json +36 -36
- package/docs/02-CORE-GUIDES/mapping/examples/json-mapping.ts +213 -213
- package/docs/02-CORE-GUIDES/mapping/examples/json-product-to-mutation.json +48 -48
- package/docs/02-CORE-GUIDES/mapping/examples/xml-mapping.ts +291 -291
- package/docs/02-CORE-GUIDES/mapping/examples/xml-order-to-mutation.json +45 -45
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/graphql-mutation-mapping-quick-reference.md +463 -463
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/graphql-mutation-mapping-readme.md +227 -227
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-01-introduction.md +222 -222
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-02-quick-start.md +351 -351
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-03-schema-validation.md +569 -569
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-04-mapping-patterns.md +471 -471
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-05-configuration-reference.md +611 -611
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-06-advanced-xpath.md +148 -148
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-06-path-syntax.md +464 -464
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-07-api-reference.md +94 -94
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-07-array-handling.md +307 -307
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-08-custom-resolvers.md +544 -544
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-09-advanced-patterns.md +427 -427
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-10-hooks-and-variables.md +336 -336
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-11-error-handling.md +488 -488
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-12-arguments-vs-nodes.md +383 -383
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-13-best-practices.md +477 -477
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/readme.md +62 -62
- package/docs/02-CORE-GUIDES/mapping/mapping-format-decision-tree.md +480 -480
- package/docs/02-CORE-GUIDES/mapping/mapping-graphql-alias-batching-guide.md +820 -820
- package/docs/02-CORE-GUIDES/mapping/mapping-javascript-objects.md +2369 -2369
- package/docs/02-CORE-GUIDES/mapping/mapping-mapper-comparison-guide.md +682 -682
- package/docs/02-CORE-GUIDES/mapping/modules/02-core-guides-mapping-07-api-reference.md +1327 -1327
- package/docs/02-CORE-GUIDES/mapping/modules/02-core-guides-mapping-08-error-handling.md +1142 -1142
- package/docs/02-CORE-GUIDES/mapping/modules/mapping-04-use-cases.md +891 -891
- package/docs/02-CORE-GUIDES/mapping/modules/mapping-06-helpers-resolvers.md +1126 -1126
- package/docs/02-CORE-GUIDES/mapping/modules/mapping-06-sdk-resolvers.md +199 -199
- package/docs/02-CORE-GUIDES/mapping/modules/mapping-07-api-reference.md +1319 -1319
- package/docs/02-CORE-GUIDES/mapping/readme.md +178 -178
- package/docs/02-CORE-GUIDES/mapping/resolver-registration.md +410 -410
- package/docs/02-CORE-GUIDES/mapping/resolvers/examples/common-patterns.ts +226 -226
- package/docs/02-CORE-GUIDES/mapping/resolvers/examples/custom-resolvers.ts +227 -227
- package/docs/02-CORE-GUIDES/mapping/resolvers/examples/sdk-resolvers-usage.ts +203 -203
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-readme.md +274 -274
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-api-reference.md +679 -679
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-cookbook.md +826 -826
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-guide.md +1330 -1330
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-helpers-reference.md +1437 -1437
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-parameters-reference.md +553 -553
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-troubleshooting.md +854 -854
- package/docs/02-CORE-GUIDES/mapping/resolvers/readme.md +75 -75
- package/docs/02-CORE-GUIDES/parsers/examples/02-core-guides-parsers-readme.md +161 -161
- package/docs/02-CORE-GUIDES/parsers/examples/csv-parser-examples.ts +110 -110
- package/docs/02-CORE-GUIDES/parsers/examples/json-parser-examples.ts +33 -33
- package/docs/02-CORE-GUIDES/parsers/examples/parquet-parser-examples.ts +47 -47
- package/docs/02-CORE-GUIDES/parsers/examples/xml-parser-examples.ts +38 -38
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-01-foundations.md +355 -355
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-02-csv-parser.md +772 -772
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-03-json-parser.md +789 -789
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-04-xml-parser.md +857 -857
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-05-parquet-parser.md +603 -603
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-06-integration-patterns.md +702 -702
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-06-streaming.md +121 -121
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-07-api-reference.md +89 -89
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-07-troubleshooting.md +727 -727
- package/docs/02-CORE-GUIDES/parsers/parsers-quick-reference.md +482 -482
- package/docs/02-CORE-GUIDES/parsers/parsers-readme.md +258 -258
- package/docs/02-CORE-GUIDES/parsers/readme.md +65 -65
- package/docs/02-CORE-GUIDES/readme.md +194 -194
- package/docs/02-CORE-GUIDES/webhook-validation/examples/basic-validation.ts +108 -108
- package/docs/02-CORE-GUIDES/webhook-validation/examples/common-patterns.ts +316 -316
- package/docs/02-CORE-GUIDES/webhook-validation/examples/webhook-validation-readme.md +61 -61
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-01-foundations.md +440 -440
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-02-quick-start.md +525 -525
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-03-versori-integration.md +741 -741
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-04-platform-integration.md +629 -629
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-05-configuration.md +535 -535
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-06-error-handling.md +611 -611
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-06-troubleshooting.md +124 -124
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-07-api-reference.md +511 -511
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-08-rubix-webhooks.md +590 -590
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-09-rubix-event-vs-http-call.md +432 -432
- package/docs/02-CORE-GUIDES/webhook-validation/readme.md +239 -239
- package/docs/02-CORE-GUIDES/webhook-validation/webhook-validation-quick-reference.md +392 -392
- package/docs/03-PATTERN-GUIDES/connector-scenarios/connector-scenarios-quick-reference.md +498 -498
- package/docs/03-PATTERN-GUIDES/connector-scenarios/connector-scenarios-readme.md +313 -313
- package/docs/03-PATTERN-GUIDES/connector-scenarios/examples/common-patterns.ts +612 -612
- package/docs/03-PATTERN-GUIDES/connector-scenarios/examples/connector-scenarios-readme.md +253 -253
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-01-foundations.md +452 -452
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-02-simple-scenarios.md +681 -681
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-03-intermediate-scenarios.md +637 -637
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-04-advanced-scenarios.md +650 -650
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-05-bidirectional-sync.md +233 -233
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-06-production-patterns.md +442 -442
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-07-reference.md +445 -445
- package/docs/03-PATTERN-GUIDES/connector-scenarios/readme.md +31 -31
- package/docs/03-PATTERN-GUIDES/enterprise-integration-patterns.md +1528 -1528
- package/docs/03-PATTERN-GUIDES/error-handling/comprehensive-error-handling-guide.md +1437 -1437
- package/docs/03-PATTERN-GUIDES/error-handling/error-handling-quick-reference.md +390 -390
- package/docs/03-PATTERN-GUIDES/error-handling/examples/common-patterns.ts +438 -438
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-01-foundations.md +362 -362
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-02-error-types.md +850 -850
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-03-utf8-handling.md +456 -456
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-04-error-scenarios.md +658 -658
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-05-calling-patterns.md +671 -671
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-06-retry-strategies.md +1034 -1034
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-07-monitoring.md +653 -653
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-08-api-reference.md +847 -847
- package/docs/03-PATTERN-GUIDES/error-handling/readme.md +36 -36
- package/docs/03-PATTERN-GUIDES/examples/__tests__/readme.md +40 -40
- package/docs/03-PATTERN-GUIDES/examples/__tests__/resolver-examples.test.js +282 -282
- package/docs/03-PATTERN-GUIDES/examples/test-data/03-pattern-guides-readme.md +110 -110
- package/docs/03-PATTERN-GUIDES/examples/test-data/canonical-inventory.json +123 -123
- package/docs/03-PATTERN-GUIDES/examples/test-data/canonical-order.json +171 -171
- package/docs/03-PATTERN-GUIDES/examples/test-data/readme.md +28 -28
- package/docs/03-PATTERN-GUIDES/extraction/extraction-readme.md +15 -15
- package/docs/03-PATTERN-GUIDES/extraction/readme.md +25 -25
- package/docs/03-PATTERN-GUIDES/file-operations/examples/common-patterns.ts +407 -407
- package/docs/03-PATTERN-GUIDES/file-operations/examples/file-operations-readme.md +142 -142
- package/docs/03-PATTERN-GUIDES/file-operations/file-operations-quick-reference.md +462 -462
- package/docs/03-PATTERN-GUIDES/file-operations/file-operations-readme.md +379 -379
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-01-foundations.md +430 -430
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-02-quick-start.md +484 -484
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-03-s3-operations.md +507 -507
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-04-sftp-operations.md +963 -963
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-05-streaming-performance.md +503 -503
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-06-archive-patterns.md +386 -386
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-06-error-handling.md +117 -117
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-07-api-reference.md +78 -78
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-07-testing-troubleshooting.md +567 -567
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-08-api-reference.md +1055 -1055
- package/docs/03-PATTERN-GUIDES/file-operations/readme.md +32 -32
- package/docs/03-PATTERN-GUIDES/ingestion/ingestion-readme.md +15 -15
- package/docs/03-PATTERN-GUIDES/ingestion/readme.md +25 -25
- package/docs/03-PATTERN-GUIDES/integration-patterns/examples/batch-processing.ts +130 -130
- package/docs/03-PATTERN-GUIDES/integration-patterns/examples/common-patterns.ts +360 -360
- package/docs/03-PATTERN-GUIDES/integration-patterns/examples/delta-sync.ts +130 -130
- package/docs/03-PATTERN-GUIDES/integration-patterns/examples/integration-patterns-readme.md +100 -100
- package/docs/03-PATTERN-GUIDES/integration-patterns/examples/real-time-webhook.ts +398 -398
- package/docs/03-PATTERN-GUIDES/integration-patterns/integration-patterns-quick-reference.md +962 -962
- package/docs/03-PATTERN-GUIDES/integration-patterns/integration-patterns-readme.md +134 -134
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-01-real-time-processing.md +991 -991
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-02-batch-processing.md +1547 -1547
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-03-delta-sync.md +1108 -1108
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-04-webhook-patterns.md +1181 -1181
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-05-error-handling.md +1061 -1061
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-06-advanced-integration-services.md +1547 -1547
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-06-performance.md +109 -109
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-07-api-reference.md +34 -34
- package/docs/03-PATTERN-GUIDES/integration-patterns/readme.md +30 -30
- package/docs/03-PATTERN-GUIDES/logging-minimal-mode.md +128 -128
- package/docs/03-PATTERN-GUIDES/multiple-connections/examples/common-patterns.ts +380 -380
- package/docs/03-PATTERN-GUIDES/multiple-connections/examples/multiple-connections-readme.md +139 -139
- package/docs/03-PATTERN-GUIDES/multiple-connections/examples/parallel-root-connections.ts +149 -149
- package/docs/03-PATTERN-GUIDES/multiple-connections/examples/real-world-scenarios.ts +405 -405
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-01-foundations.md +378 -378
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-02-quick-start.md +566 -566
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-03-targeting-connections.md +659 -659
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-04-parallel-queries.md +656 -656
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-05-best-practices.md +624 -624
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-06-api-reference.md +824 -824
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-06-versori.md +119 -119
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-07-api-reference.md +87 -87
- package/docs/03-PATTERN-GUIDES/multiple-connections/multiple-connections-quick-reference.md +353 -353
- package/docs/03-PATTERN-GUIDES/multiple-connections/multiple-connections-readme.md +270 -270
- package/docs/03-PATTERN-GUIDES/multiple-connections/readme.md +30 -30
- package/docs/03-PATTERN-GUIDES/pagination/pagination-readme.md +14 -14
- package/docs/03-PATTERN-GUIDES/pagination/readme.md +24 -24
- package/docs/03-PATTERN-GUIDES/parquet/examples/common-patterns.ts +180 -180
- package/docs/03-PATTERN-GUIDES/parquet/examples/read-parquet.ts +48 -48
- package/docs/03-PATTERN-GUIDES/parquet/examples/write-parquet.ts +65 -65
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-01-introduction.md +393 -393
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-02-quick-start.md +572 -572
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-03-reading-parquet.md +525 -525
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-04-writing-parquet.md +554 -554
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-05-graphql-extraction.md +405 -405
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-06-performance.md +104 -104
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-06-s3-integration.md +511 -511
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-07-api-reference.md +90 -90
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-07-performance-optimization.md +525 -525
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-08-best-practices.md +712 -712
- package/docs/03-PATTERN-GUIDES/parquet/parquet-quick-reference.md +683 -683
- package/docs/03-PATTERN-GUIDES/parquet/parquet-readme.md +248 -248
- package/docs/03-PATTERN-GUIDES/parquet/readme.md +32 -32
- package/docs/03-PATTERN-GUIDES/parsers/parsers-readme.md +12 -12
- package/docs/03-PATTERN-GUIDES/parsers/readme.md +24 -24
- package/docs/03-PATTERN-GUIDES/readme.md +159 -159
- package/docs/03-PATTERN-GUIDES/webhooks/readme.md +24 -24
- package/docs/03-PATTERN-GUIDES/webhooks/webhooks-readme.md +8 -8
- package/docs/04-REFERENCE/architecture/architecture-01-overview.md +427 -427
- package/docs/04-REFERENCE/architecture/architecture-02-client-architecture.md +424 -424
- package/docs/04-REFERENCE/architecture/architecture-03-data-flow.md +690 -690
- package/docs/04-REFERENCE/architecture/architecture-04-service-layer.md +834 -834
- package/docs/04-REFERENCE/architecture/architecture-05-integration-architecture.md +655 -655
- package/docs/04-REFERENCE/architecture/architecture-06-state-management.md +653 -653
- package/docs/04-REFERENCE/architecture/architecture-adding-new-data-sources.md +686 -686
- package/docs/04-REFERENCE/architecture/readme.md +279 -279
- package/docs/04-REFERENCE/platforms/deno/readme.md +117 -117
- package/docs/04-REFERENCE/platforms/nodejs/readme.md +146 -146
- package/docs/04-REFERENCE/platforms/readme.md +135 -135
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-01-introduction.md +398 -398
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-02-quick-start.md +560 -560
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-03-authentication.md +757 -757
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-04-workflows.md +2476 -2476
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-05-connections.md +1167 -1167
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-06-kv-storage.md +990 -990
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-06-state-management.md +121 -121
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-07-api-reference.md +68 -68
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-07-deployment.md +731 -731
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-08-best-practices.md +1111 -1111
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-09-signature-reference.md +766 -766
- package/docs/04-REFERENCE/platforms/versori/platforms-versori-readme.md +299 -299
- package/docs/04-REFERENCE/platforms/versori/platforms-versori-s3-sftp-configuration-guide.md +1425 -1425
- package/docs/04-REFERENCE/platforms/versori/platforms-versori-webhook-api-key-security.md +816 -816
- package/docs/04-REFERENCE/platforms/versori/platforms-versori-webhook-connection-security.md +681 -681
- package/docs/04-REFERENCE/platforms/versori/platforms-versori-workflow-task-types.md +708 -708
- package/docs/04-REFERENCE/platforms/versori/readme.md +108 -108
- package/docs/04-REFERENCE/readme.md +148 -148
- package/docs/04-REFERENCE/resolver-signature/examples/advanced-resolvers.ts +482 -482
- package/docs/04-REFERENCE/resolver-signature/examples/async-resolvers.ts +496 -496
- package/docs/04-REFERENCE/resolver-signature/examples/basic-resolvers.ts +343 -343
- package/docs/04-REFERENCE/resolver-signature/examples/resolver-signature-readme.md +188 -188
- package/docs/04-REFERENCE/resolver-signature/examples/testing-resolvers.ts +463 -463
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-01-foundations.md +286 -286
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-02-parameter-reference.md +643 -643
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-03-basic-examples.md +521 -521
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-04-advanced-patterns.md +739 -739
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-05-sdk-resolvers.md +531 -531
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-06-migration-guide.md +650 -650
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-06-testing.md +125 -125
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-07-api-reference.md +794 -794
- package/docs/04-REFERENCE/resolver-signature/readme.md +64 -64
- package/docs/04-REFERENCE/resolver-signature/resolver-signature-quick-reference.md +270 -270
- package/docs/04-REFERENCE/resolver-signature/resolver-signature-readme.md +351 -351
- package/docs/04-REFERENCE/schema/fluent-commerce-schema.json +764 -764
- package/docs/04-REFERENCE/schema/readme.md +141 -141
- package/docs/04-REFERENCE/testing/examples/04-reference-testing-readme.md +158 -158
- package/docs/04-REFERENCE/testing/examples/fluent-testing.ts +62 -62
- package/docs/04-REFERENCE/testing/examples/health-check.ts +155 -155
- package/docs/04-REFERENCE/testing/examples/integration-test.ts +119 -119
- package/docs/04-REFERENCE/testing/examples/performance-test.ts +183 -183
- package/docs/04-REFERENCE/testing/examples/s3-testing.ts +127 -127
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-01-foundations.md +267 -267
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-02-s3-testing.md +599 -599
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-03-fluent-testing.md +589 -589
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-04-integration-testing.md +699 -699
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-05-debugging.md +478 -478
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-06-cicd-integration.md +463 -463
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-06-preflight-validation.md +131 -131
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-07-best-practices.md +499 -499
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-07-coverage-ci.md +165 -165
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-08-api-reference.md +634 -634
- package/docs/04-REFERENCE/testing/readme.md +86 -86
- package/docs/04-REFERENCE/testing/testing-quick-reference.md +667 -667
- package/docs/04-REFERENCE/testing/testing-readme.md +286 -286
- package/docs/04-REFERENCE/troubleshooting/readme.md +144 -144
- package/docs/04-REFERENCE/troubleshooting/troubleshooting-deno-sftp-compatibility.md +392 -392
- package/docs/template-loading-matrix.md +242 -242
- package/package.json +5 -3
|
@@ -1,383 +1,383 @@
|
|
|
1
|
-
# Arguments vs Nodes
|
|
2
|
-
|
|
3
|
-
[← Back to GraphQL Mutation Mapping Guide](../graphql-mutation-mapping-readme.md)
|
|
4
|
-
|
|
5
|
-
**Module 12 of 13** | **Level**: Advanced | **Time**: 15 minutes
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Two Mapping Patterns: Simple vs Advanced
|
|
10
|
-
|
|
11
|
-
The mapper supports two configuration patterns depending on your use case:
|
|
12
|
-
|
|
13
|
-
- **Pattern 1 - Simple (arguments-based)**: Direct field mapping from source to GraphQL
|
|
14
|
-
- **Pattern 2 - Advanced (nodes + fields)**: Extract embedded/nested data first, then map fields
|
|
15
|
-
|
|
16
|
-
**Both patterns are fully supported and current.** Choose based on your data structure and requirements.
|
|
17
|
-
|
|
18
|
-
## Pattern Comparison
|
|
19
|
-
|
|
20
|
-
| Feature | Pattern 1: Simple (Arguments) | Pattern 2: Advanced (Nodes + Fields) |
|
|
21
|
-
| -------------------- | ----------------------------- | ------------------------------------ |
|
|
22
|
-
| **Best For** | Straightforward JSON→GraphQL | Complex XML with embedded data |
|
|
23
|
-
| **Config Root** | `config.arguments` | `config.nodes` + `config.fields` |
|
|
24
|
-
| **Type Annotations** | `_type` metadata | Inferred from schema |
|
|
25
|
-
| **Embedded Data** | Limited (direct paths only) | Full support with extraction |
|
|
26
|
-
| **Method** | `mapper.map()` | `mapper.mapWithNodes()` |
|
|
27
|
-
| **Use Case** | Simple, flat structures | Nested, encoded, multi-source data |
|
|
28
|
-
|
|
29
|
-
## Pattern 2 Example: Advanced (nodes + fields)
|
|
30
|
-
|
|
31
|
-
✅ **Validated against schema:** [`docs/schema/fluent-commerce-schema.json`](../../../../04-REFERENCE/schema/fluent-commerce-schema.json) → `Mutation.createOrder`
|
|
32
|
-
|
|
33
|
-
**Business Context:** Shopify webhook integration - Orders from Shopify store to Fluent Commerce fulfillment.
|
|
34
|
-
|
|
35
|
-
```json
|
|
36
|
-
{
|
|
37
|
-
"mutation": "createOrder",
|
|
38
|
-
"sourceFormat": "xml",
|
|
39
|
-
"comment": "✅ Shopify Order Webhook → Fluent Commerce Order Management",
|
|
40
|
-
"nodes": {
|
|
41
|
-
"orderXml": {
|
|
42
|
-
"extract": "orders.order",
|
|
43
|
-
"required": true,
|
|
44
|
-
"unescape": true,
|
|
45
|
-
"comment": "Extract order XML from webhook payload"
|
|
46
|
-
}
|
|
47
|
-
},
|
|
48
|
-
"fields": {
|
|
49
|
-
"ref": {
|
|
50
|
-
"source": "$orderXml@order-no",
|
|
51
|
-
"required": true,
|
|
52
|
-
"comment": "✅ Maps to CreateOrderInput.ref (String! required) - Shopify order number"
|
|
53
|
-
},
|
|
54
|
-
"type": {
|
|
55
|
-
"value": "STANDARD",
|
|
56
|
-
"required": true,
|
|
57
|
-
"comment": "✅ Maps to CreateOrderInput.type (OrderType! required)"
|
|
58
|
-
},
|
|
59
|
-
"retailer": {
|
|
60
|
-
"fields": {
|
|
61
|
-
"id": {
|
|
62
|
-
"value": "1",
|
|
63
|
-
"comment": "✅ Maps to CreateOrderInput.retailer.id (ID! required)"
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
},
|
|
67
|
-
"customer": {
|
|
68
|
-
"fields": {
|
|
69
|
-
"ref": {
|
|
70
|
-
"source": "$orderXml.customer.customer-no",
|
|
71
|
-
"required": true,
|
|
72
|
-
"comment": "✅ Maps to CreateOrderInput.customer.ref (String! required) - Shopify customer ID"
|
|
73
|
-
},
|
|
74
|
-
"email": {
|
|
75
|
-
"source": "$orderXml.customer.email",
|
|
76
|
-
"resolver": "sdk.lowercase",
|
|
77
|
-
"comment": "✅ Maps to CreateOrderInput.customer.email (String optional)"
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
},
|
|
81
|
-
"items": {
|
|
82
|
-
"_array": true,
|
|
83
|
-
"source": "$orderXml.product-lineitems.product-lineitem",
|
|
84
|
-
"comment": "✅ Maps to CreateOrderInput.items ([OrderItemInput]! required)",
|
|
85
|
-
"fields": {
|
|
86
|
-
"ref": {
|
|
87
|
-
"source": "product-id",
|
|
88
|
-
"required": true,
|
|
89
|
-
"comment": "✅ Maps to OrderItemInput.ref (String! required) - Shopify line item ID"
|
|
90
|
-
},
|
|
91
|
-
"productRef": {
|
|
92
|
-
"source": "product-id",
|
|
93
|
-
"required": true,
|
|
94
|
-
"comment": "✅ Maps to OrderItemInput.productRef (String! required) - Product SKU"
|
|
95
|
-
},
|
|
96
|
-
"quantity": {
|
|
97
|
-
"source": "quantity",
|
|
98
|
-
"resolver": "sdk.parseInt",
|
|
99
|
-
"required": true,
|
|
100
|
-
"comment": "✅ Maps to OrderItemInput.quantity (Int! required)"
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
### Using mapWithNodes()
|
|
109
|
-
|
|
110
|
-
```typescript
|
|
111
|
-
import { GraphQLMutationMapper } from '@fluentcommerce/fc-connect-sdk';
|
|
112
|
-
|
|
113
|
-
const mapper = new GraphQLMutationMapper(mappingConfig, logger, { fluentClient: fluentClient });
|
|
114
|
-
const result = await mapper.mapWithNodes(xmlData, customResolvers, { fluentClient });
|
|
115
|
-
|
|
116
|
-
if (!result.success) {
|
|
117
|
-
throw new Error('Mapping failed: ' + result.errors?.join(', '));
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
// Execute mutation (query is auto-generated in result)
|
|
121
|
-
const response = await fluentClient.graphql({
|
|
122
|
-
query: result.query,
|
|
123
|
-
variables: result.variables, // ✅ Use variables (wrapped if fields pattern)
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
// Access mapped fields directly (unwrapped)
|
|
127
|
-
const orderRef = result.data.ref; // ✅ Use data for direct field access
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
**Benefits of Nodes + Fields Pattern:**
|
|
131
|
-
|
|
132
|
-
- ✅ **Embedded Data Extraction**: Extract and parse HTML-encoded XML/JSON
|
|
133
|
-
- ✅ **Cleaner Config**: No `_type` annotations needed
|
|
134
|
-
- ✅ **Node References**: `$nodeName.path` syntax for extracted data
|
|
135
|
-
- ✅ **Better Validation**: Automatic type inference from schema
|
|
136
|
-
- ✅ **More Flexible**: Supports complex data transformations
|
|
137
|
-
|
|
138
|
-
## Pattern 1 Example: Simple (arguments)
|
|
139
|
-
|
|
140
|
-
✅ **Validated against schema:** [`docs/schema/fluent-commerce-schema.json`](../../../../04-REFERENCE/schema/fluent-commerce-schema.json) → `Mutation.createOrder`
|
|
141
|
-
|
|
142
|
-
**Business Context:** Magento order integration - Simple pattern for straightforward JSON mapping.
|
|
143
|
-
|
|
144
|
-
```json
|
|
145
|
-
{
|
|
146
|
-
"version": "1.0",
|
|
147
|
-
"mutation": "createOrder",
|
|
148
|
-
"operationName": "CreateOrderFromMagento",
|
|
149
|
-
"sourceFormat": "xml",
|
|
150
|
-
"returnFields": ["id", "ref", "status"],
|
|
151
|
-
"comment": "✅ Simple arguments pattern - Magento Order → Fluent Commerce",
|
|
152
|
-
"arguments": {
|
|
153
|
-
"input": {
|
|
154
|
-
"_type": "CreateOrderInput!",
|
|
155
|
-
"ref": {
|
|
156
|
-
"source": "order@order-no",
|
|
157
|
-
"required": true,
|
|
158
|
-
"comment": "✅ Maps to CreateOrderInput.ref (String! required) - Magento order number"
|
|
159
|
-
},
|
|
160
|
-
"type": {
|
|
161
|
-
"value": "STANDARD",
|
|
162
|
-
"required": true,
|
|
163
|
-
"comment": "✅ Maps to CreateOrderInput.type (OrderType! required)"
|
|
164
|
-
},
|
|
165
|
-
"retailer": {
|
|
166
|
-
"fields": {
|
|
167
|
-
"id": {
|
|
168
|
-
"value": "1",
|
|
169
|
-
"comment": "✅ Maps to CreateOrderInput.retailer.id (ID! required)"
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
},
|
|
173
|
-
"items": {
|
|
174
|
-
"_array": true,
|
|
175
|
-
"_type": "[OrderItemInput]!",
|
|
176
|
-
"source": "product-lineitems.product-lineitem",
|
|
177
|
-
"comment": "✅ Maps to CreateOrderInput.items ([OrderItemInput]! required)",
|
|
178
|
-
"ref": {
|
|
179
|
-
"source": "product-id",
|
|
180
|
-
"required": true,
|
|
181
|
-
"comment": "✅ Maps to OrderItemInput.ref (String! required) - Magento line item ID"
|
|
182
|
-
},
|
|
183
|
-
"productRef": {
|
|
184
|
-
"source": "product-id",
|
|
185
|
-
"required": true,
|
|
186
|
-
"comment": "✅ Maps to OrderItemInput.productRef (String! required)"
|
|
187
|
-
},
|
|
188
|
-
"quantity": {
|
|
189
|
-
"source": "quantity",
|
|
190
|
-
"resolver": "sdk.parseInt",
|
|
191
|
-
"required": true,
|
|
192
|
-
"comment": "✅ Maps to OrderItemInput.quantity (Int! required)"
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
```typescript
|
|
201
|
-
const mapper = new GraphQLMutationMapper(mappingConfig, logger, { fluentClient: fluentClient });
|
|
202
|
-
const payload = await mapper.map(xmlData); // returns { query, variables }
|
|
203
|
-
const result = await fluentClient.graphql(payload);
|
|
204
|
-
```
|
|
205
|
-
|
|
206
|
-
**Pattern 1 Characteristics:**
|
|
207
|
-
|
|
208
|
-
- ✅ **Simple Mappings**: Works well for straightforward transformations
|
|
209
|
-
- ✅ **Explicit Types**: `_type` annotations document GraphQL types
|
|
210
|
-
- ✅ **Straightforward**: Minimal configuration for basic cases
|
|
211
|
-
- ⚠️ **Limited Extraction**: No built-in support for embedded data
|
|
212
|
-
- ⚠️ **Verbose**: Requires `_type` annotations
|
|
213
|
-
|
|
214
|
-
## SDK Resolvers vs Custom Resolvers
|
|
215
|
-
|
|
216
|
-
### SDK Resolvers (built-in)
|
|
217
|
-
|
|
218
|
-
Available in **both patterns** via `resolver` property:
|
|
219
|
-
|
|
220
|
-
**Built-in SDK resolvers:**
|
|
221
|
-
|
|
222
|
-
- `sdk.parseInt` - Convert to integer (safe, returns 0 on invalid)
|
|
223
|
-
- `sdk.parseFloat` - Convert to float (safe, returns 0 on invalid)
|
|
224
|
-
- `sdk.number` - Parse as number (alias for parseFloat)
|
|
225
|
-
- `sdk.uppercase` - Uppercase string
|
|
226
|
-
- `sdk.lowercase` - Lowercase string
|
|
227
|
-
- `sdk.trim` - Remove whitespace
|
|
228
|
-
- `sdk.toString` - Convert to string
|
|
229
|
-
- `sdk.boolean` - Convert to boolean
|
|
230
|
-
- `sdk.formatDate` - Format to ISO8601
|
|
231
|
-
- `sdk.formatDateShort` - Format to YYYY-MM-DD
|
|
232
|
-
- `sdk.parseDate` - Parse date string
|
|
233
|
-
- `sdk.parseJson` - Parse JSON string
|
|
234
|
-
- `sdk.toJson` - Stringify to JSON
|
|
235
|
-
- `sdk.identity` - Pass-through (no transformation)
|
|
236
|
-
- `sdk.coalesce` - Return first non-null value
|
|
237
|
-
|
|
238
|
-
**Arguments Pattern:**
|
|
239
|
-
|
|
240
|
-
```json
|
|
241
|
-
{
|
|
242
|
-
"quantity": {
|
|
243
|
-
"source": "qty",
|
|
244
|
-
"resolver": "sdk.parseInt"
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
```
|
|
248
|
-
|
|
249
|
-
**Nodes + Fields Pattern:**
|
|
250
|
-
|
|
251
|
-
```json
|
|
252
|
-
{
|
|
253
|
-
"quantity": {
|
|
254
|
-
"source": "$orderXml.qty",
|
|
255
|
-
"resolver": "sdk.parseInt"
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
```
|
|
259
|
-
|
|
260
|
-
### Resolvers (custom)
|
|
261
|
-
|
|
262
|
-
Run during resolver pass in `mapWithNodes` after fields are built.
|
|
263
|
-
|
|
264
|
-
**Custom resolvers** provide:
|
|
265
|
-
|
|
266
|
-
- ✅ Complex logic on extracted values
|
|
267
|
-
- ✅ Access to helper functions
|
|
268
|
-
- ✅ Async operations
|
|
269
|
-
- ✅ Full source data context
|
|
270
|
-
|
|
271
|
-
```typescript
|
|
272
|
-
const customResolvers = {
|
|
273
|
-
'custom.calculateTotal': (value, data, config, helpers) => {
|
|
274
|
-
const items = helpers.get(data, 'order.items');
|
|
275
|
-
return helpers.sum(items, 'price');
|
|
276
|
-
},
|
|
277
|
-
};
|
|
278
|
-
```
|
|
279
|
-
|
|
280
|
-
**Use in config:**
|
|
281
|
-
|
|
282
|
-
```json
|
|
283
|
-
{
|
|
284
|
-
"totalPrice": {
|
|
285
|
-
"resolver": "custom.calculateTotal"
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
```
|
|
289
|
-
|
|
290
|
-
## Source Format and Path Resolution
|
|
291
|
-
|
|
292
|
-
The `sourceFormat` field determines which path resolver to use:
|
|
293
|
-
|
|
294
|
-
### XML Source Format
|
|
295
|
-
|
|
296
|
-
```json
|
|
297
|
-
{
|
|
298
|
-
"sourceFormat": "xml"
|
|
299
|
-
}
|
|
300
|
-
```
|
|
301
|
-
|
|
302
|
-
**Uses:** `XMLPathResolver`
|
|
303
|
-
|
|
304
|
-
**Path Syntax:**
|
|
305
|
-
|
|
306
|
-
- Elements: `order.customer.email`
|
|
307
|
-
- Attributes: `order@order-no`
|
|
308
|
-
- Arrays: `items.item[0].sku`
|
|
309
|
-
- Wildcards: `items.item.*.sku`
|
|
310
|
-
|
|
311
|
-
**Supports:**
|
|
312
|
-
|
|
313
|
-
- Raw XML strings (auto-parses)
|
|
314
|
-
- Pre-parsed objects (Versori format with `$` attributes)
|
|
315
|
-
|
|
316
|
-
### JSON Source Format
|
|
317
|
-
|
|
318
|
-
```json
|
|
319
|
-
{
|
|
320
|
-
"sourceFormat": "json"
|
|
321
|
-
}
|
|
322
|
-
```
|
|
323
|
-
|
|
324
|
-
**Uses:** `JSONPathResolver`
|
|
325
|
-
|
|
326
|
-
**Path Syntax:**
|
|
327
|
-
|
|
328
|
-
- Properties: `order.customer.email`
|
|
329
|
-
- Arrays: `items[0].sku`
|
|
330
|
-
- Wildcards: `items.*.sku`
|
|
331
|
-
|
|
332
|
-
## Node References
|
|
333
|
-
|
|
334
|
-
In the nodes + fields pattern, use `$nodeName.` to reference extracted nodes:
|
|
335
|
-
|
|
336
|
-
```json
|
|
337
|
-
{
|
|
338
|
-
"nodes": {
|
|
339
|
-
"metadata": {
|
|
340
|
-
"extract": "order.customData.metadata",
|
|
341
|
-
"parse": "xml"
|
|
342
|
-
}
|
|
343
|
-
},
|
|
344
|
-
"fields": {
|
|
345
|
-
"priority": {
|
|
346
|
-
"source": "$metadata.priority"
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
```
|
|
351
|
-
|
|
352
|
-
**Without `$` prefix:** Path resolves from root data
|
|
353
|
-
**With `$` prefix:** Path resolves from named node
|
|
354
|
-
|
|
355
|
-
## When to Use Each Pattern
|
|
356
|
-
|
|
357
|
-
### Use Nodes + Fields Pattern When:
|
|
358
|
-
|
|
359
|
-
- ✅ Working with embedded/encoded data
|
|
360
|
-
- ✅ Building new integrations
|
|
361
|
-
- ✅ Complex data transformations needed
|
|
362
|
-
- ✅ Multiple data sources in one mapping
|
|
363
|
-
- ✅ Want cleaner, more maintainable configs
|
|
364
|
-
|
|
365
|
-
### Use Pattern 1 (Arguments) When:
|
|
366
|
-
|
|
367
|
-
- ✅ Working with simple, flat data structures
|
|
368
|
-
- ✅ Direct JSON to GraphQL mapping
|
|
369
|
-
- ✅ Explicit type documentation preferred
|
|
370
|
-
- ✅ No embedded data extraction required
|
|
371
|
-
|
|
372
|
-
---
|
|
373
|
-
|
|
374
|
-
## Navigation
|
|
375
|
-
|
|
376
|
-
[← Previous: Error Handling](./graphql-mutation-mapping-11-error-handling.md) | [Back to Guide](../graphql-mutation-mapping-readme.md) | [Next: Best Practices →](./graphql-mutation-mapping-13-best-practices.md)
|
|
377
|
-
|
|
378
|
-
## Related Documentation
|
|
379
|
-
|
|
380
|
-
- [Module 09: Advanced Patterns](./graphql-mutation-mapping-09-advanced-patterns.md) - Embedded XML/JSON extraction
|
|
381
|
-
- [Module 08: Custom Resolvers](./graphql-mutation-mapping-08-custom-resolvers.md) - Custom transformation functions
|
|
382
|
-
- [Nodes Pattern Guide](./graphql-mutation-mapping-07-array-handling.md) - Complete nodes pattern documentation
|
|
383
|
-
- [API Reference](../../../api-reference/api-reference-readme.md) - Complete API documentation
|
|
1
|
+
# Arguments vs Nodes
|
|
2
|
+
|
|
3
|
+
[← Back to GraphQL Mutation Mapping Guide](../graphql-mutation-mapping-readme.md)
|
|
4
|
+
|
|
5
|
+
**Module 12 of 13** | **Level**: Advanced | **Time**: 15 minutes
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Two Mapping Patterns: Simple vs Advanced
|
|
10
|
+
|
|
11
|
+
The mapper supports two configuration patterns depending on your use case:
|
|
12
|
+
|
|
13
|
+
- **Pattern 1 - Simple (arguments-based)**: Direct field mapping from source to GraphQL
|
|
14
|
+
- **Pattern 2 - Advanced (nodes + fields)**: Extract embedded/nested data first, then map fields
|
|
15
|
+
|
|
16
|
+
**Both patterns are fully supported and current.** Choose based on your data structure and requirements.
|
|
17
|
+
|
|
18
|
+
## Pattern Comparison
|
|
19
|
+
|
|
20
|
+
| Feature | Pattern 1: Simple (Arguments) | Pattern 2: Advanced (Nodes + Fields) |
|
|
21
|
+
| -------------------- | ----------------------------- | ------------------------------------ |
|
|
22
|
+
| **Best For** | Straightforward JSON→GraphQL | Complex XML with embedded data |
|
|
23
|
+
| **Config Root** | `config.arguments` | `config.nodes` + `config.fields` |
|
|
24
|
+
| **Type Annotations** | `_type` metadata | Inferred from schema |
|
|
25
|
+
| **Embedded Data** | Limited (direct paths only) | Full support with extraction |
|
|
26
|
+
| **Method** | `mapper.map()` | `mapper.mapWithNodes()` |
|
|
27
|
+
| **Use Case** | Simple, flat structures | Nested, encoded, multi-source data |
|
|
28
|
+
|
|
29
|
+
## Pattern 2 Example: Advanced (nodes + fields)
|
|
30
|
+
|
|
31
|
+
✅ **Validated against schema:** [`docs/schema/fluent-commerce-schema.json`](../../../../04-REFERENCE/schema/fluent-commerce-schema.json) → `Mutation.createOrder`
|
|
32
|
+
|
|
33
|
+
**Business Context:** Shopify webhook integration - Orders from Shopify store to Fluent Commerce fulfillment.
|
|
34
|
+
|
|
35
|
+
```json
|
|
36
|
+
{
|
|
37
|
+
"mutation": "createOrder",
|
|
38
|
+
"sourceFormat": "xml",
|
|
39
|
+
"comment": "✅ Shopify Order Webhook → Fluent Commerce Order Management",
|
|
40
|
+
"nodes": {
|
|
41
|
+
"orderXml": {
|
|
42
|
+
"extract": "orders.order",
|
|
43
|
+
"required": true,
|
|
44
|
+
"unescape": true,
|
|
45
|
+
"comment": "Extract order XML from webhook payload"
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"fields": {
|
|
49
|
+
"ref": {
|
|
50
|
+
"source": "$orderXml@order-no",
|
|
51
|
+
"required": true,
|
|
52
|
+
"comment": "✅ Maps to CreateOrderInput.ref (String! required) - Shopify order number"
|
|
53
|
+
},
|
|
54
|
+
"type": {
|
|
55
|
+
"value": "STANDARD",
|
|
56
|
+
"required": true,
|
|
57
|
+
"comment": "✅ Maps to CreateOrderInput.type (OrderType! required)"
|
|
58
|
+
},
|
|
59
|
+
"retailer": {
|
|
60
|
+
"fields": {
|
|
61
|
+
"id": {
|
|
62
|
+
"value": "1",
|
|
63
|
+
"comment": "✅ Maps to CreateOrderInput.retailer.id (ID! required)"
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
"customer": {
|
|
68
|
+
"fields": {
|
|
69
|
+
"ref": {
|
|
70
|
+
"source": "$orderXml.customer.customer-no",
|
|
71
|
+
"required": true,
|
|
72
|
+
"comment": "✅ Maps to CreateOrderInput.customer.ref (String! required) - Shopify customer ID"
|
|
73
|
+
},
|
|
74
|
+
"email": {
|
|
75
|
+
"source": "$orderXml.customer.email",
|
|
76
|
+
"resolver": "sdk.lowercase",
|
|
77
|
+
"comment": "✅ Maps to CreateOrderInput.customer.email (String optional)"
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
"items": {
|
|
82
|
+
"_array": true,
|
|
83
|
+
"source": "$orderXml.product-lineitems.product-lineitem",
|
|
84
|
+
"comment": "✅ Maps to CreateOrderInput.items ([OrderItemInput]! required)",
|
|
85
|
+
"fields": {
|
|
86
|
+
"ref": {
|
|
87
|
+
"source": "product-id",
|
|
88
|
+
"required": true,
|
|
89
|
+
"comment": "✅ Maps to OrderItemInput.ref (String! required) - Shopify line item ID"
|
|
90
|
+
},
|
|
91
|
+
"productRef": {
|
|
92
|
+
"source": "product-id",
|
|
93
|
+
"required": true,
|
|
94
|
+
"comment": "✅ Maps to OrderItemInput.productRef (String! required) - Product SKU"
|
|
95
|
+
},
|
|
96
|
+
"quantity": {
|
|
97
|
+
"source": "quantity",
|
|
98
|
+
"resolver": "sdk.parseInt",
|
|
99
|
+
"required": true,
|
|
100
|
+
"comment": "✅ Maps to OrderItemInput.quantity (Int! required)"
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Using mapWithNodes()
|
|
109
|
+
|
|
110
|
+
```typescript
|
|
111
|
+
import { GraphQLMutationMapper } from '@fluentcommerce/fc-connect-sdk';
|
|
112
|
+
|
|
113
|
+
const mapper = new GraphQLMutationMapper(mappingConfig, logger, { fluentClient: fluentClient });
|
|
114
|
+
const result = await mapper.mapWithNodes(xmlData, customResolvers, { fluentClient });
|
|
115
|
+
|
|
116
|
+
if (!result.success) {
|
|
117
|
+
throw new Error('Mapping failed: ' + result.errors?.join(', '));
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// Execute mutation (query is auto-generated in result)
|
|
121
|
+
const response = await fluentClient.graphql({
|
|
122
|
+
query: result.query,
|
|
123
|
+
variables: result.variables, // ✅ Use variables (wrapped if fields pattern)
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
// Access mapped fields directly (unwrapped)
|
|
127
|
+
const orderRef = result.data.ref; // ✅ Use data for direct field access
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
**Benefits of Nodes + Fields Pattern:**
|
|
131
|
+
|
|
132
|
+
- ✅ **Embedded Data Extraction**: Extract and parse HTML-encoded XML/JSON
|
|
133
|
+
- ✅ **Cleaner Config**: No `_type` annotations needed
|
|
134
|
+
- ✅ **Node References**: `$nodeName.path` syntax for extracted data
|
|
135
|
+
- ✅ **Better Validation**: Automatic type inference from schema
|
|
136
|
+
- ✅ **More Flexible**: Supports complex data transformations
|
|
137
|
+
|
|
138
|
+
## Pattern 1 Example: Simple (arguments)
|
|
139
|
+
|
|
140
|
+
✅ **Validated against schema:** [`docs/schema/fluent-commerce-schema.json`](../../../../04-REFERENCE/schema/fluent-commerce-schema.json) → `Mutation.createOrder`
|
|
141
|
+
|
|
142
|
+
**Business Context:** Magento order integration - Simple pattern for straightforward JSON mapping.
|
|
143
|
+
|
|
144
|
+
```json
|
|
145
|
+
{
|
|
146
|
+
"version": "1.0",
|
|
147
|
+
"mutation": "createOrder",
|
|
148
|
+
"operationName": "CreateOrderFromMagento",
|
|
149
|
+
"sourceFormat": "xml",
|
|
150
|
+
"returnFields": ["id", "ref", "status"],
|
|
151
|
+
"comment": "✅ Simple arguments pattern - Magento Order → Fluent Commerce",
|
|
152
|
+
"arguments": {
|
|
153
|
+
"input": {
|
|
154
|
+
"_type": "CreateOrderInput!",
|
|
155
|
+
"ref": {
|
|
156
|
+
"source": "order@order-no",
|
|
157
|
+
"required": true,
|
|
158
|
+
"comment": "✅ Maps to CreateOrderInput.ref (String! required) - Magento order number"
|
|
159
|
+
},
|
|
160
|
+
"type": {
|
|
161
|
+
"value": "STANDARD",
|
|
162
|
+
"required": true,
|
|
163
|
+
"comment": "✅ Maps to CreateOrderInput.type (OrderType! required)"
|
|
164
|
+
},
|
|
165
|
+
"retailer": {
|
|
166
|
+
"fields": {
|
|
167
|
+
"id": {
|
|
168
|
+
"value": "1",
|
|
169
|
+
"comment": "✅ Maps to CreateOrderInput.retailer.id (ID! required)"
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
"items": {
|
|
174
|
+
"_array": true,
|
|
175
|
+
"_type": "[OrderItemInput]!",
|
|
176
|
+
"source": "product-lineitems.product-lineitem",
|
|
177
|
+
"comment": "✅ Maps to CreateOrderInput.items ([OrderItemInput]! required)",
|
|
178
|
+
"ref": {
|
|
179
|
+
"source": "product-id",
|
|
180
|
+
"required": true,
|
|
181
|
+
"comment": "✅ Maps to OrderItemInput.ref (String! required) - Magento line item ID"
|
|
182
|
+
},
|
|
183
|
+
"productRef": {
|
|
184
|
+
"source": "product-id",
|
|
185
|
+
"required": true,
|
|
186
|
+
"comment": "✅ Maps to OrderItemInput.productRef (String! required)"
|
|
187
|
+
},
|
|
188
|
+
"quantity": {
|
|
189
|
+
"source": "quantity",
|
|
190
|
+
"resolver": "sdk.parseInt",
|
|
191
|
+
"required": true,
|
|
192
|
+
"comment": "✅ Maps to OrderItemInput.quantity (Int! required)"
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
```typescript
|
|
201
|
+
const mapper = new GraphQLMutationMapper(mappingConfig, logger, { fluentClient: fluentClient });
|
|
202
|
+
const payload = await mapper.map(xmlData); // returns { query, variables }
|
|
203
|
+
const result = await fluentClient.graphql(payload);
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
**Pattern 1 Characteristics:**
|
|
207
|
+
|
|
208
|
+
- ✅ **Simple Mappings**: Works well for straightforward transformations
|
|
209
|
+
- ✅ **Explicit Types**: `_type` annotations document GraphQL types
|
|
210
|
+
- ✅ **Straightforward**: Minimal configuration for basic cases
|
|
211
|
+
- ⚠️ **Limited Extraction**: No built-in support for embedded data
|
|
212
|
+
- ⚠️ **Verbose**: Requires `_type` annotations
|
|
213
|
+
|
|
214
|
+
## SDK Resolvers vs Custom Resolvers
|
|
215
|
+
|
|
216
|
+
### SDK Resolvers (built-in)
|
|
217
|
+
|
|
218
|
+
Available in **both patterns** via `resolver` property:
|
|
219
|
+
|
|
220
|
+
**Built-in SDK resolvers:**
|
|
221
|
+
|
|
222
|
+
- `sdk.parseInt` - Convert to integer (safe, returns 0 on invalid)
|
|
223
|
+
- `sdk.parseFloat` - Convert to float (safe, returns 0 on invalid)
|
|
224
|
+
- `sdk.number` - Parse as number (alias for parseFloat)
|
|
225
|
+
- `sdk.uppercase` - Uppercase string
|
|
226
|
+
- `sdk.lowercase` - Lowercase string
|
|
227
|
+
- `sdk.trim` - Remove whitespace
|
|
228
|
+
- `sdk.toString` - Convert to string
|
|
229
|
+
- `sdk.boolean` - Convert to boolean
|
|
230
|
+
- `sdk.formatDate` - Format to ISO8601
|
|
231
|
+
- `sdk.formatDateShort` - Format to YYYY-MM-DD
|
|
232
|
+
- `sdk.parseDate` - Parse date string
|
|
233
|
+
- `sdk.parseJson` - Parse JSON string
|
|
234
|
+
- `sdk.toJson` - Stringify to JSON
|
|
235
|
+
- `sdk.identity` - Pass-through (no transformation)
|
|
236
|
+
- `sdk.coalesce` - Return first non-null value
|
|
237
|
+
|
|
238
|
+
**Arguments Pattern:**
|
|
239
|
+
|
|
240
|
+
```json
|
|
241
|
+
{
|
|
242
|
+
"quantity": {
|
|
243
|
+
"source": "qty",
|
|
244
|
+
"resolver": "sdk.parseInt"
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
**Nodes + Fields Pattern:**
|
|
250
|
+
|
|
251
|
+
```json
|
|
252
|
+
{
|
|
253
|
+
"quantity": {
|
|
254
|
+
"source": "$orderXml.qty",
|
|
255
|
+
"resolver": "sdk.parseInt"
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
### Resolvers (custom)
|
|
261
|
+
|
|
262
|
+
Run during resolver pass in `mapWithNodes` after fields are built.
|
|
263
|
+
|
|
264
|
+
**Custom resolvers** provide:
|
|
265
|
+
|
|
266
|
+
- ✅ Complex logic on extracted values
|
|
267
|
+
- ✅ Access to helper functions
|
|
268
|
+
- ✅ Async operations
|
|
269
|
+
- ✅ Full source data context
|
|
270
|
+
|
|
271
|
+
```typescript
|
|
272
|
+
const customResolvers = {
|
|
273
|
+
'custom.calculateTotal': (value, data, config, helpers) => {
|
|
274
|
+
const items = helpers.get(data, 'order.items');
|
|
275
|
+
return helpers.sum(items, 'price');
|
|
276
|
+
},
|
|
277
|
+
};
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
**Use in config:**
|
|
281
|
+
|
|
282
|
+
```json
|
|
283
|
+
{
|
|
284
|
+
"totalPrice": {
|
|
285
|
+
"resolver": "custom.calculateTotal"
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
## Source Format and Path Resolution
|
|
291
|
+
|
|
292
|
+
The `sourceFormat` field determines which path resolver to use:
|
|
293
|
+
|
|
294
|
+
### XML Source Format
|
|
295
|
+
|
|
296
|
+
```json
|
|
297
|
+
{
|
|
298
|
+
"sourceFormat": "xml"
|
|
299
|
+
}
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
**Uses:** `XMLPathResolver`
|
|
303
|
+
|
|
304
|
+
**Path Syntax:**
|
|
305
|
+
|
|
306
|
+
- Elements: `order.customer.email`
|
|
307
|
+
- Attributes: `order@order-no`
|
|
308
|
+
- Arrays: `items.item[0].sku`
|
|
309
|
+
- Wildcards: `items.item.*.sku`
|
|
310
|
+
|
|
311
|
+
**Supports:**
|
|
312
|
+
|
|
313
|
+
- Raw XML strings (auto-parses)
|
|
314
|
+
- Pre-parsed objects (Versori format with `$` attributes)
|
|
315
|
+
|
|
316
|
+
### JSON Source Format
|
|
317
|
+
|
|
318
|
+
```json
|
|
319
|
+
{
|
|
320
|
+
"sourceFormat": "json"
|
|
321
|
+
}
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
**Uses:** `JSONPathResolver`
|
|
325
|
+
|
|
326
|
+
**Path Syntax:**
|
|
327
|
+
|
|
328
|
+
- Properties: `order.customer.email`
|
|
329
|
+
- Arrays: `items[0].sku`
|
|
330
|
+
- Wildcards: `items.*.sku`
|
|
331
|
+
|
|
332
|
+
## Node References
|
|
333
|
+
|
|
334
|
+
In the nodes + fields pattern, use `$nodeName.` to reference extracted nodes:
|
|
335
|
+
|
|
336
|
+
```json
|
|
337
|
+
{
|
|
338
|
+
"nodes": {
|
|
339
|
+
"metadata": {
|
|
340
|
+
"extract": "order.customData.metadata",
|
|
341
|
+
"parse": "xml"
|
|
342
|
+
}
|
|
343
|
+
},
|
|
344
|
+
"fields": {
|
|
345
|
+
"priority": {
|
|
346
|
+
"source": "$metadata.priority"
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
**Without `$` prefix:** Path resolves from root data
|
|
353
|
+
**With `$` prefix:** Path resolves from named node
|
|
354
|
+
|
|
355
|
+
## When to Use Each Pattern
|
|
356
|
+
|
|
357
|
+
### Use Nodes + Fields Pattern When:
|
|
358
|
+
|
|
359
|
+
- ✅ Working with embedded/encoded data
|
|
360
|
+
- ✅ Building new integrations
|
|
361
|
+
- ✅ Complex data transformations needed
|
|
362
|
+
- ✅ Multiple data sources in one mapping
|
|
363
|
+
- ✅ Want cleaner, more maintainable configs
|
|
364
|
+
|
|
365
|
+
### Use Pattern 1 (Arguments) When:
|
|
366
|
+
|
|
367
|
+
- ✅ Working with simple, flat data structures
|
|
368
|
+
- ✅ Direct JSON to GraphQL mapping
|
|
369
|
+
- ✅ Explicit type documentation preferred
|
|
370
|
+
- ✅ No embedded data extraction required
|
|
371
|
+
|
|
372
|
+
---
|
|
373
|
+
|
|
374
|
+
## Navigation
|
|
375
|
+
|
|
376
|
+
[← Previous: Error Handling](./graphql-mutation-mapping-11-error-handling.md) | [Back to Guide](../graphql-mutation-mapping-readme.md) | [Next: Best Practices →](./graphql-mutation-mapping-13-best-practices.md)
|
|
377
|
+
|
|
378
|
+
## Related Documentation
|
|
379
|
+
|
|
380
|
+
- [Module 09: Advanced Patterns](./graphql-mutation-mapping-09-advanced-patterns.md) - Embedded XML/JSON extraction
|
|
381
|
+
- [Module 08: Custom Resolvers](./graphql-mutation-mapping-08-custom-resolvers.md) - Custom transformation functions
|
|
382
|
+
- [Nodes Pattern Guide](./graphql-mutation-mapping-07-array-handling.md) - Complete nodes pattern documentation
|
|
383
|
+
- [API Reference](../../../api-reference/api-reference-readme.md) - Complete API documentation
|