@fluentcommerce/fc-connect-sdk 0.1.54 → 0.1.55
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/dist/cjs/clients/fluent-client.js +13 -6
- package/dist/cjs/utils/pagination-helpers.js +38 -2
- package/dist/cjs/versori/fluent-versori-client.js +11 -5
- package/dist/esm/clients/fluent-client.js +13 -6
- package/dist/esm/utils/pagination-helpers.js +38 -2
- package/dist/esm/versori/fluent-versori-client.js +11 -5
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/tsconfig.types.tsbuildinfo +1 -1
- package/docs/00-START-HERE/EXPORT-VALIDATION.md +158 -158
- package/docs/00-START-HERE/cli-analyze-source-structure-guide.md +655 -655
- package/docs/00-START-HERE/cli-documentation-index.md +202 -202
- package/docs/00-START-HERE/cli-quick-reference.md +252 -252
- package/docs/00-START-HERE/decision-tree.md +552 -552
- package/docs/00-START-HERE/getting-started.md +1070 -1070
- package/docs/00-START-HERE/mapper-quick-decision-guide.md +235 -235
- package/docs/00-START-HERE/readme.md +237 -237
- package/docs/00-START-HERE/retailerid-configuration.md +404 -404
- package/docs/00-START-HERE/sdk-philosophy.md +794 -794
- package/docs/00-START-HERE/troubleshooting-quick-reference.md +1086 -1086
- package/docs/01-TEMPLATES/faq.md +686 -686
- package/docs/01-TEMPLATES/patterns/pattern-templates-guide.md +68 -68
- package/docs/01-TEMPLATES/patterns/patterns-csv-schema-validation-and-rejection-report.md +233 -233
- package/docs/01-TEMPLATES/patterns/patterns-custom-resolvers.md +407 -407
- package/docs/01-TEMPLATES/patterns/patterns-error-handling-retry.md +511 -511
- package/docs/01-TEMPLATES/patterns/patterns-field-mapping-universal.md +701 -701
- package/docs/01-TEMPLATES/patterns/patterns-large-file-splitting.md +1430 -1430
- package/docs/01-TEMPLATES/patterns/patterns-master-data-etl.md +2399 -2399
- package/docs/01-TEMPLATES/patterns/patterns-pagination-streaming.md +447 -447
- package/docs/01-TEMPLATES/patterns/patterns-state-duplicate-prevention.md +385 -385
- package/docs/01-TEMPLATES/readme.md +957 -957
- package/docs/01-TEMPLATES/standalone/standalone-asn-inbound-processing.md +1209 -1209
- package/docs/01-TEMPLATES/standalone/standalone-graphql-query-export.md +1140 -1140
- package/docs/01-TEMPLATES/standalone/standalone-graphql-to-parquet-partitioned-s3.md +432 -432
- package/docs/01-TEMPLATES/standalone/standalone-multi-channel-inventory-sync.md +1185 -1185
- package/docs/01-TEMPLATES/standalone/standalone-multi-source-aggregation.md +1462 -1462
- package/docs/01-TEMPLATES/standalone/standalone-s3-csv-batch-api.md +1390 -1390
- package/docs/01-TEMPLATES/standalone/standalone-s3-csv-inventory-to-batch.md +330 -330
- package/docs/01-TEMPLATES/standalone/standalone-scripts-guide.md +87 -87
- package/docs/01-TEMPLATES/standalone/standalone-sftp-xml-graphql.md +1444 -1444
- package/docs/01-TEMPLATES/standalone/standalone-webhook-payload-processing.md +688 -688
- package/docs/01-TEMPLATES/versori/business-examples/business-examples-dropship-order-routing.md +193 -193
- package/docs/01-TEMPLATES/versori/business-examples/business-examples-graphql-parquet-extraction.md +518 -518
- package/docs/01-TEMPLATES/versori/business-examples/business-examples-inter-location-transfers.md +2162 -2162
- package/docs/01-TEMPLATES/versori/business-examples/business-examples-pre-order-allocation.md +2226 -2226
- package/docs/01-TEMPLATES/versori/business-examples/business-scenarios-guide.md +87 -87
- package/docs/01-TEMPLATES/versori/patterns/versori-patterns-connection-validation-pattern.md +656 -656
- package/docs/01-TEMPLATES/versori/patterns/versori-patterns-dual-workflow-connector.md +835 -835
- package/docs/01-TEMPLATES/versori/patterns/versori-patterns-guide.md +108 -108
- package/docs/01-TEMPLATES/versori/patterns/versori-patterns-kv-state-management.md +1533 -1533
- package/docs/01-TEMPLATES/versori/patterns/versori-patterns-xml-response-patterns.md +1160 -1160
- package/docs/01-TEMPLATES/versori/versori-platform-guide.md +201 -201
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-asn-purchase-order.md +1906 -1906
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-dropship-routing.md +1074 -1074
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-flash-sale-reserve.md +1395 -1395
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-generic-xml-order.md +888 -888
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-payment-gateway-integration.md +2478 -2478
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-rma-returns-comprehensive.md +2240 -2240
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-xml-order-ingestion.md +2029 -2029
- package/docs/01-TEMPLATES/versori/webhooks/webhook-templates-guide.md +140 -140
- package/docs/01-TEMPLATES/versori/workflows/_examples/sample-data/inventory-mapping.json +20 -20
- package/docs/01-TEMPLATES/versori/workflows/_examples/sample-data/products_2025-01-22.csv +11 -11
- package/docs/01-TEMPLATES/versori/workflows/_examples/sample-data/sample-data-guide.md +34 -34
- package/docs/01-TEMPLATES/versori/workflows/_examples/workflow-examples-guide.md +36 -36
- package/docs/01-TEMPLATES/versori/workflows/extraction/extraction-modes-guide.md +1038 -1038
- package/docs/01-TEMPLATES/versori/workflows/extraction/extraction-workflows-guide.md +138 -138
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/graphql-extraction-guide.md +63 -63
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-fulfillments-to-sftp-csv.md +2062 -2062
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-fulfillments-to-sftp-xml.md +2294 -2294
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-inventory-positions-to-s3-csv.md +2461 -2461
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-inventory-positions-to-sftp-xml.md +2529 -2529
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-inventory-quantities-to-s3-csv.md +2464 -2464
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-inventory-quantities-to-s3-json.md +1959 -1959
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-orders-to-s3-csv.md +1953 -1953
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-orders-to-sftp-xml.md +2541 -2541
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-products-to-s3-json.md +2384 -2384
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-products-to-sftp-xml.md +2445 -2445
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-virtual-positions-to-s3-csv.md +2355 -2355
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-virtual-positions-to-s3-json.md +2042 -2042
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-virtual-positions-to-sftp-xml.md +2726 -2726
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/batch-api-guide.md +206 -206
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-cycle-count-reconciliation.md +2030 -2030
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-multi-channel-inventory-sync.md +1882 -1882
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-s3-csv-inventory-batch.md +2827 -2827
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-s3-json-inventory-batch.md +1952 -1952
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-s3-xml-inventory-batch.md +3289 -3289
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-sftp-csv-inventory-batch.md +3064 -3064
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-sftp-json-inventory-batch.md +3238 -3238
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-sftp-xml-inventory-batch.md +2977 -2977
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/event-api-guide.md +321 -321
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-payload-json-order-cancel-event.md +959 -959
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-payload-xml-order-cancel-event.md +1170 -1170
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-s3-csv-product-event.md +2312 -2312
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-s3-json-product-event.md +2999 -2999
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-s3-parquet-product-event.md +2836 -2836
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-s3-xml-product-event.md +2395 -2395
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-sftp-csv-product-event.md +2295 -2295
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-sftp-json-product-event.md +2602 -2602
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-sftp-parquet-product-event.md +2589 -2589
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-sftp-xml-product-event.md +3578 -3578
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/graphql-mutations-guide.md +93 -93
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-payload-json-order-update-graphql.md +1260 -1260
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-payload-xml-order-update-graphql.md +1472 -1472
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-csv-control-graphql.md +2417 -2417
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-csv-location-graphql.md +2811 -2811
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-csv-price-graphql.md +2619 -2619
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-json-location-graphql.md +2807 -2807
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-xml-location-graphql.md +2373 -2373
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-sftp-csv-control-graphql.md +2740 -2740
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-sftp-csv-location-graphql.md +2760 -2760
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-sftp-json-location-graphql.md +1710 -1710
- package/docs/01-TEMPLATES/versori/workflows/ingestion/ingestion-workflows-guide.md +136 -136
- package/docs/01-TEMPLATES/versori/workflows/rubix-webhooks/rubix-webhooks-guide.md +520 -520
- package/docs/01-TEMPLATES/versori/workflows/rubix-webhooks/template-webhook-rubix-fulfilment-to-sftp-xml-inline.md +1418 -1418
- package/docs/01-TEMPLATES/versori/workflows/rubix-webhooks/template-webhook-rubix-fulfilment-to-sftp-xml-universal-mapper.md +1785 -1785
- package/docs/01-TEMPLATES/versori/workflows/rubix-webhooks/template-webhook-rubix-order-attribute-update.md +824 -824
- package/docs/01-TEMPLATES/versori/workflows/workflows-overview-guide.md +646 -646
- package/docs/02-CORE-GUIDES/advanced-services/advanced-services-batch-archival.md +724 -724
- package/docs/02-CORE-GUIDES/advanced-services/advanced-services-job-tracker.md +627 -627
- package/docs/02-CORE-GUIDES/advanced-services/advanced-services-partial-batch-recovery.md +561 -561
- package/docs/02-CORE-GUIDES/advanced-services/advanced-services-quick-reference.md +367 -367
- package/docs/02-CORE-GUIDES/advanced-services/advanced-services-readme.md +407 -407
- package/docs/02-CORE-GUIDES/advanced-services/readme.md +49 -49
- package/docs/02-CORE-GUIDES/api-reference/api-reference-quick-reference.md +548 -548
- package/docs/02-CORE-GUIDES/api-reference/event-api-input-output-reference.md +702 -1171
- package/docs/02-CORE-GUIDES/api-reference/examples/client-initialization.ts +286 -286
- package/docs/02-CORE-GUIDES/api-reference/graphql-error-classification.md +337 -337
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-01-client-api.md +399 -520
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-03-authentication.md +199 -199
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-04-graphql-mapping.md +925 -925
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-05-services.md +1198 -1198
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-06-data-sources.md +1083 -1083
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-07-parsers.md +1097 -1097
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-08-pagination.md +513 -513
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-08-types.md +545 -597
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-09-error-handling.md +527 -527
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-09-webhook-validation.md +514 -514
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-10-extraction.md +557 -557
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-10-utilities.md +412 -412
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-11-cli-tools.md +423 -423
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-11-error-handling.md +716 -716
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-12-analyze-source-structure.md +518 -518
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-12-partial-responses.md +212 -212
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-12-testing.md +300 -300
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-13-resolver-builder.md +322 -322
- package/docs/02-CORE-GUIDES/api-reference/readme.md +279 -279
- package/docs/02-CORE-GUIDES/auto-pagination/auto-pagination-quick-reference.md +351 -351
- package/docs/02-CORE-GUIDES/auto-pagination/auto-pagination-readme.md +277 -277
- package/docs/02-CORE-GUIDES/auto-pagination/examples/auto-pagination-readme.md +178 -178
- package/docs/02-CORE-GUIDES/auto-pagination/examples/common-patterns.ts +351 -351
- package/docs/02-CORE-GUIDES/auto-pagination/examples/paginate-products.ts +384 -384
- package/docs/02-CORE-GUIDES/auto-pagination/examples/paginate-virtual-positions.ts +308 -308
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-01-foundations.md +470 -470
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-02-quick-start.md +713 -713
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-03-configuration.md +754 -754
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-04-advanced-patterns.md +732 -732
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-05-sdk-integration.md +847 -847
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-06-troubleshooting.md +359 -359
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-07-api-reference.md +462 -462
- package/docs/02-CORE-GUIDES/auto-pagination/readme.md +54 -54
- package/docs/02-CORE-GUIDES/data-sources/data-sources-file-operations-error-handling.md +1487 -1487
- package/docs/02-CORE-GUIDES/data-sources/data-sources-quick-reference.md +836 -836
- package/docs/02-CORE-GUIDES/data-sources/data-sources-readme.md +276 -276
- package/docs/02-CORE-GUIDES/data-sources/data-sources-sftp-credential-access-security.md +553 -553
- package/docs/02-CORE-GUIDES/data-sources/examples/common-patterns.ts +409 -409
- package/docs/02-CORE-GUIDES/data-sources/examples/data-sources-readme.md +178 -178
- package/docs/02-CORE-GUIDES/data-sources/examples/s3-operations.ts +308 -308
- package/docs/02-CORE-GUIDES/data-sources/examples/sftp-operations.ts +371 -371
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-01-foundations.md +735 -735
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-02-s3-operations.md +1302 -1302
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-03-sftp-operations.md +1379 -1379
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-04-file-patterns.md +941 -941
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-05-advanced-topics.md +813 -813
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-06-integration-patterns.md +486 -486
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-07-troubleshooting.md +387 -387
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-08-api-reference.md +417 -417
- package/docs/02-CORE-GUIDES/data-sources/readme.md +77 -77
- package/docs/02-CORE-GUIDES/error-handling-guide.md +936 -936
- package/docs/02-CORE-GUIDES/extraction/examples/02-core-guides-extraction-readme.md +116 -116
- package/docs/02-CORE-GUIDES/extraction/examples/common-patterns.ts +428 -428
- package/docs/02-CORE-GUIDES/extraction/examples/extract-inventory-basic.ts +187 -187
- package/docs/02-CORE-GUIDES/extraction/extraction-quick-reference.md +596 -596
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-01-foundations.md +514 -514
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-02-basic-extraction.md +823 -823
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-03-parquet-processing.md +507 -507
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-04-data-enrichment.md +546 -546
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-05-transformation.md +494 -494
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-06-export-formats.md +458 -458
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-06-performance.md +138 -138
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-07-api-reference.md +148 -148
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-07-optimization.md +692 -692
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-08-extraction-orchestrator.md +1008 -1008
- package/docs/02-CORE-GUIDES/extraction/readme.md +151 -151
- package/docs/02-CORE-GUIDES/ingestion/examples/_simple-kv-store.ts +40 -40
- package/docs/02-CORE-GUIDES/ingestion/examples/error-recovery.ts +728 -728
- package/docs/02-CORE-GUIDES/ingestion/examples/event-driven.ts +501 -501
- package/docs/02-CORE-GUIDES/ingestion/examples/local-file-ingestion.ts +88 -88
- package/docs/02-CORE-GUIDES/ingestion/examples/parquet-ingestion.ts +117 -117
- package/docs/02-CORE-GUIDES/ingestion/examples/performance-optimized.ts +647 -647
- package/docs/02-CORE-GUIDES/ingestion/examples/s3-csv-ingestion.ts +169 -169
- package/docs/02-CORE-GUIDES/ingestion/examples/sftp-csv-ingestion.ts +134 -134
- package/docs/02-CORE-GUIDES/ingestion/ingestion-quick-reference.md +546 -546
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-01-introduction.md +626 -626
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-02-quick-start.md +658 -658
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-03-data-sources.md +1052 -1052
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-04-field-mapping.md +763 -763
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-05-advanced-parsers.md +676 -676
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-06-batch-api.md +1295 -1295
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-07-api-reference.md +138 -138
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-07-state-management.md +1037 -1037
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-08-performance-optimization.md +1349 -1349
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-09-best-practices.md +1893 -1893
- package/docs/02-CORE-GUIDES/ingestion/readme.md +160 -160
- package/docs/02-CORE-GUIDES/logging-guide.md +585 -585
- package/docs/02-CORE-GUIDES/mapping/error-handling-patterns.md +401 -401
- package/docs/02-CORE-GUIDES/mapping/examples/02-core-guides-mapping-readme.md +128 -128
- package/docs/02-CORE-GUIDES/mapping/examples/common-patterns.ts +273 -273
- package/docs/02-CORE-GUIDES/mapping/examples/csv-location-ingestion.json +36 -36
- package/docs/02-CORE-GUIDES/mapping/examples/csv-mapping.ts +242 -242
- package/docs/02-CORE-GUIDES/mapping/examples/graphql-to-parquet-extraction.json +36 -36
- package/docs/02-CORE-GUIDES/mapping/examples/json-mapping.ts +213 -213
- package/docs/02-CORE-GUIDES/mapping/examples/json-product-to-mutation.json +48 -48
- package/docs/02-CORE-GUIDES/mapping/examples/xml-mapping.ts +291 -291
- package/docs/02-CORE-GUIDES/mapping/examples/xml-order-to-mutation.json +45 -45
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/graphql-mutation-mapping-quick-reference.md +463 -463
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/graphql-mutation-mapping-readme.md +227 -227
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-01-introduction.md +222 -222
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-02-quick-start.md +351 -351
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-03-schema-validation.md +569 -569
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-04-mapping-patterns.md +471 -471
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-05-configuration-reference.md +611 -611
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-06-advanced-xpath.md +148 -148
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-06-path-syntax.md +464 -464
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-07-api-reference.md +94 -94
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-07-array-handling.md +307 -307
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-08-custom-resolvers.md +544 -544
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-09-advanced-patterns.md +427 -427
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-10-hooks-and-variables.md +336 -336
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-11-error-handling.md +488 -488
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-12-arguments-vs-nodes.md +383 -383
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-13-best-practices.md +477 -477
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/readme.md +62 -62
- package/docs/02-CORE-GUIDES/mapping/mapping-format-decision-tree.md +480 -480
- package/docs/02-CORE-GUIDES/mapping/mapping-graphql-alias-batching-guide.md +820 -820
- package/docs/02-CORE-GUIDES/mapping/mapping-javascript-objects.md +2369 -2369
- package/docs/02-CORE-GUIDES/mapping/mapping-mapper-comparison-guide.md +682 -682
- package/docs/02-CORE-GUIDES/mapping/modules/02-core-guides-mapping-07-api-reference.md +1327 -1327
- package/docs/02-CORE-GUIDES/mapping/modules/02-core-guides-mapping-08-error-handling.md +1142 -1142
- package/docs/02-CORE-GUIDES/mapping/modules/mapping-04-use-cases.md +891 -891
- package/docs/02-CORE-GUIDES/mapping/modules/mapping-06-helpers-resolvers.md +1126 -1126
- package/docs/02-CORE-GUIDES/mapping/modules/mapping-06-sdk-resolvers.md +199 -199
- package/docs/02-CORE-GUIDES/mapping/modules/mapping-07-api-reference.md +1319 -1319
- package/docs/02-CORE-GUIDES/mapping/readme.md +178 -178
- package/docs/02-CORE-GUIDES/mapping/resolver-registration.md +410 -410
- package/docs/02-CORE-GUIDES/mapping/resolvers/examples/common-patterns.ts +226 -226
- package/docs/02-CORE-GUIDES/mapping/resolvers/examples/custom-resolvers.ts +227 -227
- package/docs/02-CORE-GUIDES/mapping/resolvers/examples/sdk-resolvers-usage.ts +203 -203
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-readme.md +274 -274
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-api-reference.md +679 -679
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-cookbook.md +826 -826
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-guide.md +1330 -1330
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-helpers-reference.md +1437 -1437
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-parameters-reference.md +553 -553
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-troubleshooting.md +854 -854
- package/docs/02-CORE-GUIDES/mapping/resolvers/readme.md +75 -75
- package/docs/02-CORE-GUIDES/parsers/examples/02-core-guides-parsers-readme.md +161 -161
- package/docs/02-CORE-GUIDES/parsers/examples/csv-parser-examples.ts +110 -110
- package/docs/02-CORE-GUIDES/parsers/examples/json-parser-examples.ts +33 -33
- package/docs/02-CORE-GUIDES/parsers/examples/parquet-parser-examples.ts +47 -47
- package/docs/02-CORE-GUIDES/parsers/examples/xml-parser-examples.ts +38 -38
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-01-foundations.md +355 -355
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-02-csv-parser.md +772 -772
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-03-json-parser.md +789 -789
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-04-xml-parser.md +857 -857
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-05-parquet-parser.md +603 -603
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-06-integration-patterns.md +702 -702
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-06-streaming.md +121 -121
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-07-api-reference.md +89 -89
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-07-troubleshooting.md +727 -727
- package/docs/02-CORE-GUIDES/parsers/parsers-quick-reference.md +482 -482
- package/docs/02-CORE-GUIDES/parsers/parsers-readme.md +258 -258
- package/docs/02-CORE-GUIDES/parsers/readme.md +65 -65
- package/docs/02-CORE-GUIDES/readme.md +194 -194
- package/docs/02-CORE-GUIDES/webhook-validation/examples/basic-validation.ts +108 -108
- package/docs/02-CORE-GUIDES/webhook-validation/examples/common-patterns.ts +316 -316
- package/docs/02-CORE-GUIDES/webhook-validation/examples/webhook-validation-readme.md +61 -61
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-01-foundations.md +440 -440
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-02-quick-start.md +525 -525
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-03-versori-integration.md +741 -741
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-04-platform-integration.md +629 -629
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-05-configuration.md +535 -535
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-06-error-handling.md +611 -611
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-06-troubleshooting.md +124 -124
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-07-api-reference.md +511 -511
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-08-rubix-webhooks.md +590 -590
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-09-rubix-event-vs-http-call.md +432 -432
- package/docs/02-CORE-GUIDES/webhook-validation/readme.md +239 -239
- package/docs/02-CORE-GUIDES/webhook-validation/webhook-validation-quick-reference.md +392 -392
- package/docs/03-PATTERN-GUIDES/connector-scenarios/connector-scenarios-quick-reference.md +498 -498
- package/docs/03-PATTERN-GUIDES/connector-scenarios/connector-scenarios-readme.md +313 -313
- package/docs/03-PATTERN-GUIDES/connector-scenarios/examples/common-patterns.ts +612 -612
- package/docs/03-PATTERN-GUIDES/connector-scenarios/examples/connector-scenarios-readme.md +253 -253
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-01-foundations.md +452 -452
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-02-simple-scenarios.md +681 -681
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-03-intermediate-scenarios.md +637 -637
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-04-advanced-scenarios.md +650 -650
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-05-bidirectional-sync.md +233 -233
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-06-production-patterns.md +442 -442
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-07-reference.md +445 -445
- package/docs/03-PATTERN-GUIDES/connector-scenarios/readme.md +31 -31
- package/docs/03-PATTERN-GUIDES/enterprise-integration-patterns.md +1528 -1528
- package/docs/03-PATTERN-GUIDES/error-handling/comprehensive-error-handling-guide.md +1437 -1437
- package/docs/03-PATTERN-GUIDES/error-handling/error-handling-quick-reference.md +390 -390
- package/docs/03-PATTERN-GUIDES/error-handling/examples/common-patterns.ts +438 -438
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-01-foundations.md +362 -362
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-02-error-types.md +850 -850
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-03-utf8-handling.md +456 -456
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-04-error-scenarios.md +658 -658
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-05-calling-patterns.md +671 -671
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-06-retry-strategies.md +1034 -1034
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-07-monitoring.md +653 -653
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-08-api-reference.md +847 -847
- package/docs/03-PATTERN-GUIDES/error-handling/readme.md +36 -36
- package/docs/03-PATTERN-GUIDES/examples/__tests__/readme.md +40 -40
- package/docs/03-PATTERN-GUIDES/examples/__tests__/resolver-examples.test.js +282 -282
- package/docs/03-PATTERN-GUIDES/examples/test-data/03-pattern-guides-readme.md +110 -110
- package/docs/03-PATTERN-GUIDES/examples/test-data/canonical-inventory.json +123 -123
- package/docs/03-PATTERN-GUIDES/examples/test-data/canonical-order.json +171 -171
- package/docs/03-PATTERN-GUIDES/examples/test-data/readme.md +28 -28
- package/docs/03-PATTERN-GUIDES/extraction/extraction-readme.md +15 -15
- package/docs/03-PATTERN-GUIDES/extraction/readme.md +25 -25
- package/docs/03-PATTERN-GUIDES/file-operations/examples/common-patterns.ts +407 -407
- package/docs/03-PATTERN-GUIDES/file-operations/examples/file-operations-readme.md +142 -142
- package/docs/03-PATTERN-GUIDES/file-operations/file-operations-quick-reference.md +462 -462
- package/docs/03-PATTERN-GUIDES/file-operations/file-operations-readme.md +379 -379
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-01-foundations.md +430 -430
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-02-quick-start.md +484 -484
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-03-s3-operations.md +507 -507
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-04-sftp-operations.md +963 -963
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-05-streaming-performance.md +503 -503
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-06-archive-patterns.md +386 -386
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-06-error-handling.md +117 -117
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-07-api-reference.md +78 -78
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-07-testing-troubleshooting.md +567 -567
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-08-api-reference.md +1055 -1055
- package/docs/03-PATTERN-GUIDES/file-operations/readme.md +32 -32
- package/docs/03-PATTERN-GUIDES/ingestion/ingestion-readme.md +15 -15
- package/docs/03-PATTERN-GUIDES/ingestion/readme.md +25 -25
- package/docs/03-PATTERN-GUIDES/integration-patterns/examples/batch-processing.ts +130 -130
- package/docs/03-PATTERN-GUIDES/integration-patterns/examples/common-patterns.ts +360 -360
- package/docs/03-PATTERN-GUIDES/integration-patterns/examples/delta-sync.ts +130 -130
- package/docs/03-PATTERN-GUIDES/integration-patterns/examples/integration-patterns-readme.md +100 -100
- package/docs/03-PATTERN-GUIDES/integration-patterns/examples/real-time-webhook.ts +398 -398
- package/docs/03-PATTERN-GUIDES/integration-patterns/integration-patterns-quick-reference.md +962 -962
- package/docs/03-PATTERN-GUIDES/integration-patterns/integration-patterns-readme.md +134 -134
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-01-real-time-processing.md +991 -991
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-02-batch-processing.md +1547 -1547
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-03-delta-sync.md +1108 -1108
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-04-webhook-patterns.md +1181 -1181
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-05-error-handling.md +1061 -1061
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-06-advanced-integration-services.md +1547 -1547
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-06-performance.md +109 -109
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-07-api-reference.md +34 -34
- package/docs/03-PATTERN-GUIDES/integration-patterns/readme.md +30 -30
- package/docs/03-PATTERN-GUIDES/logging-minimal-mode.md +128 -128
- package/docs/03-PATTERN-GUIDES/multiple-connections/examples/common-patterns.ts +380 -380
- package/docs/03-PATTERN-GUIDES/multiple-connections/examples/multiple-connections-readme.md +139 -139
- package/docs/03-PATTERN-GUIDES/multiple-connections/examples/parallel-root-connections.ts +149 -149
- package/docs/03-PATTERN-GUIDES/multiple-connections/examples/real-world-scenarios.ts +405 -405
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-01-foundations.md +378 -378
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-02-quick-start.md +566 -566
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-03-targeting-connections.md +659 -659
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-04-parallel-queries.md +656 -656
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-05-best-practices.md +624 -624
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-06-api-reference.md +824 -824
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-06-versori.md +119 -119
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-07-api-reference.md +87 -87
- package/docs/03-PATTERN-GUIDES/multiple-connections/multiple-connections-quick-reference.md +353 -353
- package/docs/03-PATTERN-GUIDES/multiple-connections/multiple-connections-readme.md +270 -270
- package/docs/03-PATTERN-GUIDES/multiple-connections/readme.md +30 -30
- package/docs/03-PATTERN-GUIDES/pagination/pagination-readme.md +14 -14
- package/docs/03-PATTERN-GUIDES/pagination/readme.md +24 -24
- package/docs/03-PATTERN-GUIDES/parquet/examples/common-patterns.ts +180 -180
- package/docs/03-PATTERN-GUIDES/parquet/examples/read-parquet.ts +48 -48
- package/docs/03-PATTERN-GUIDES/parquet/examples/write-parquet.ts +65 -65
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-01-introduction.md +393 -393
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-02-quick-start.md +572 -572
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-03-reading-parquet.md +525 -525
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-04-writing-parquet.md +554 -554
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-05-graphql-extraction.md +405 -405
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-06-performance.md +104 -104
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-06-s3-integration.md +511 -511
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-07-api-reference.md +90 -90
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-07-performance-optimization.md +525 -525
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-08-best-practices.md +712 -712
- package/docs/03-PATTERN-GUIDES/parquet/parquet-quick-reference.md +683 -683
- package/docs/03-PATTERN-GUIDES/parquet/parquet-readme.md +248 -248
- package/docs/03-PATTERN-GUIDES/parquet/readme.md +32 -32
- package/docs/03-PATTERN-GUIDES/parsers/parsers-readme.md +12 -12
- package/docs/03-PATTERN-GUIDES/parsers/readme.md +24 -24
- package/docs/03-PATTERN-GUIDES/readme.md +159 -159
- package/docs/03-PATTERN-GUIDES/webhooks/readme.md +24 -24
- package/docs/03-PATTERN-GUIDES/webhooks/webhooks-readme.md +8 -8
- package/docs/04-REFERENCE/architecture/architecture-01-overview.md +427 -427
- package/docs/04-REFERENCE/architecture/architecture-02-client-architecture.md +424 -424
- package/docs/04-REFERENCE/architecture/architecture-03-data-flow.md +690 -690
- package/docs/04-REFERENCE/architecture/architecture-04-service-layer.md +834 -834
- package/docs/04-REFERENCE/architecture/architecture-05-integration-architecture.md +655 -655
- package/docs/04-REFERENCE/architecture/architecture-06-state-management.md +653 -653
- package/docs/04-REFERENCE/architecture/architecture-adding-new-data-sources.md +686 -686
- package/docs/04-REFERENCE/architecture/readme.md +279 -279
- package/docs/04-REFERENCE/platforms/deno/readme.md +117 -117
- package/docs/04-REFERENCE/platforms/nodejs/readme.md +146 -146
- package/docs/04-REFERENCE/platforms/readme.md +135 -135
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-01-introduction.md +398 -398
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-02-quick-start.md +560 -560
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-03-authentication.md +757 -757
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-04-workflows.md +2476 -2476
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-05-connections.md +1167 -1167
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-06-kv-storage.md +990 -990
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-06-state-management.md +121 -121
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-07-api-reference.md +68 -68
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-07-deployment.md +731 -731
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-08-best-practices.md +1111 -1111
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-09-signature-reference.md +766 -766
- package/docs/04-REFERENCE/platforms/versori/platforms-versori-readme.md +299 -299
- package/docs/04-REFERENCE/platforms/versori/platforms-versori-s3-sftp-configuration-guide.md +1425 -1425
- package/docs/04-REFERENCE/platforms/versori/platforms-versori-webhook-api-key-security.md +816 -816
- package/docs/04-REFERENCE/platforms/versori/platforms-versori-webhook-connection-security.md +681 -681
- package/docs/04-REFERENCE/platforms/versori/platforms-versori-workflow-task-types.md +708 -708
- package/docs/04-REFERENCE/platforms/versori/readme.md +108 -108
- package/docs/04-REFERENCE/readme.md +148 -148
- package/docs/04-REFERENCE/resolver-signature/examples/advanced-resolvers.ts +482 -482
- package/docs/04-REFERENCE/resolver-signature/examples/async-resolvers.ts +496 -496
- package/docs/04-REFERENCE/resolver-signature/examples/basic-resolvers.ts +343 -343
- package/docs/04-REFERENCE/resolver-signature/examples/resolver-signature-readme.md +188 -188
- package/docs/04-REFERENCE/resolver-signature/examples/testing-resolvers.ts +463 -463
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-01-foundations.md +286 -286
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-02-parameter-reference.md +643 -643
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-03-basic-examples.md +521 -521
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-04-advanced-patterns.md +739 -739
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-05-sdk-resolvers.md +531 -531
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-06-migration-guide.md +650 -650
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-06-testing.md +125 -125
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-07-api-reference.md +794 -794
- package/docs/04-REFERENCE/resolver-signature/readme.md +64 -64
- package/docs/04-REFERENCE/resolver-signature/resolver-signature-quick-reference.md +270 -270
- package/docs/04-REFERENCE/resolver-signature/resolver-signature-readme.md +351 -351
- package/docs/04-REFERENCE/schema/fluent-commerce-schema.json +764 -764
- package/docs/04-REFERENCE/schema/readme.md +141 -141
- package/docs/04-REFERENCE/testing/examples/04-reference-testing-readme.md +158 -158
- package/docs/04-REFERENCE/testing/examples/fluent-testing.ts +62 -62
- package/docs/04-REFERENCE/testing/examples/health-check.ts +155 -155
- package/docs/04-REFERENCE/testing/examples/integration-test.ts +119 -119
- package/docs/04-REFERENCE/testing/examples/performance-test.ts +183 -183
- package/docs/04-REFERENCE/testing/examples/s3-testing.ts +127 -127
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-01-foundations.md +267 -267
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-02-s3-testing.md +599 -599
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-03-fluent-testing.md +589 -589
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-04-integration-testing.md +699 -699
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-05-debugging.md +478 -478
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-06-cicd-integration.md +463 -463
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-06-preflight-validation.md +131 -131
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-07-best-practices.md +499 -499
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-07-coverage-ci.md +165 -165
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-08-api-reference.md +634 -634
- package/docs/04-REFERENCE/testing/readme.md +86 -86
- package/docs/04-REFERENCE/testing/testing-quick-reference.md +667 -667
- package/docs/04-REFERENCE/testing/testing-readme.md +286 -286
- package/docs/04-REFERENCE/troubleshooting/readme.md +144 -144
- package/docs/04-REFERENCE/troubleshooting/troubleshooting-deno-sftp-compatibility.md +392 -392
- package/docs/template-loading-matrix.md +242 -242
- package/package.json +5 -3
- package/docs/02-CORE-GUIDES/api-reference/cli-profile-integration.md +0 -377
package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-12-analyze-source-structure.md
CHANGED
|
@@ -1,518 +1,518 @@
|
|
|
1
|
-
# Module 12: Analyze Source Structure
|
|
2
|
-
|
|
3
|
-
**Level:** Beginner
|
|
4
|
-
**Category:** Command Line
|
|
5
|
-
**Time:** 10 minutes
|
|
6
|
-
|
|
7
|
-
## Overview
|
|
8
|
-
|
|
9
|
-
The `analyze-source-structure` CLI tool helps you understand your source data structure and generate mapping configuration suggestions. It supports XML, JSON, CSV, and Parquet files.
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
## Why Use This Tool?
|
|
14
|
-
|
|
15
|
-
**Common Problems:**
|
|
16
|
-
- ❌ "I don't know what paths to use in my mapping config"
|
|
17
|
-
- ❌ "How does this XML get parsed by the SDK?"
|
|
18
|
-
- ❌ "I need to understand the structure before writing mappings"
|
|
19
|
-
- ❌ "My mapping isn't working - is the path correct?"
|
|
20
|
-
|
|
21
|
-
**Solution:**
|
|
22
|
-
- ✅ Analyze your source file first
|
|
23
|
-
- ✅ See the exact parsed structure
|
|
24
|
-
- ✅ Get suggested mapping paths
|
|
25
|
-
- ✅ Generate a starter template
|
|
26
|
-
|
|
27
|
-
---
|
|
28
|
-
|
|
29
|
-
## Quick Start
|
|
30
|
-
|
|
31
|
-
### Basic Analysis
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
# Analyze XML file (auto-detects format)
|
|
35
|
-
fc-connect analyze-source-structure --file ./sample.xml
|
|
36
|
-
|
|
37
|
-
# Analyze JSON
|
|
38
|
-
fc-connect analyze-source-structure --file ./data.json
|
|
39
|
-
|
|
40
|
-
# Analyze CSV
|
|
41
|
-
fc-connect analyze-source-structure --file ./inventory.csv --format csv
|
|
42
|
-
|
|
43
|
-
# Analyze Parquet
|
|
44
|
-
fc-connect analyze-source-structure --file ./data.parquet --format parquet
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
---
|
|
48
|
-
|
|
49
|
-
## Command Reference
|
|
50
|
-
|
|
51
|
-
### Required Options
|
|
52
|
-
|
|
53
|
-
| Option | Description | Example |
|
|
54
|
-
|--------|-------------|---------|
|
|
55
|
-
| `--file, -f` | Source file to analyze | `--file ./order.xml` |
|
|
56
|
-
|
|
57
|
-
### Optional Options
|
|
58
|
-
|
|
59
|
-
| Option | Description | Default | Example |
|
|
60
|
-
|--------|-------------|---------|---------|
|
|
61
|
-
| `--format` | File format (auto-detected if not provided) | Auto-detect | `--format xml` |
|
|
62
|
-
| `--output, -o` | Generate mapping template file | None | `--output ./mapping.json` |
|
|
63
|
-
| `--show-structure` | Display parsed structure | `false` | `--show-structure` |
|
|
64
|
-
| `--show-json` | Display structure as JSON | `false` | `--show-json` |
|
|
65
|
-
| `--direction` | Mapping direction | `extract` | `--direction ingest` |
|
|
66
|
-
| `--mapper` | Mapper type | `universal` | `--mapper graphql` |
|
|
67
|
-
| `--markdown [path]` | Generate comprehensive markdown documentation | None | `--markdown` or `--markdown ./docs/analysis.md` |
|
|
68
|
-
| `--docs [path]` | Alias for `--markdown` | None | `--docs` |
|
|
69
|
-
| `--help, -h` | Show help message | - | `--help` |
|
|
70
|
-
|
|
71
|
-
---
|
|
72
|
-
|
|
73
|
-
## Examples by Format
|
|
74
|
-
|
|
75
|
-
### XML Analysis
|
|
76
|
-
|
|
77
|
-
**Input XML (`order.xml`):**
|
|
78
|
-
```xml
|
|
79
|
-
<Order id="ORD-001">
|
|
80
|
-
<Customer>
|
|
81
|
-
<Name>John Doe</Name>
|
|
82
|
-
<Email>john@example.com</Email>
|
|
83
|
-
</Customer>
|
|
84
|
-
<Items>
|
|
85
|
-
<Item sku="SKU-001" qty="2" />
|
|
86
|
-
<Item sku="SKU-002" qty="1" />
|
|
87
|
-
</Items>
|
|
88
|
-
</Order>
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
**Command:**
|
|
92
|
-
```bash
|
|
93
|
-
fc-connect analyze-source-structure --file ./order.xml --show-structure
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
**Output:**
|
|
97
|
-
```
|
|
98
|
-
╔═══════════════════════════════════════════════════════════════════════╗
|
|
99
|
-
║ Source Structure Analysis ║
|
|
100
|
-
╚═══════════════════════════════════════════════════════════════════════╝
|
|
101
|
-
|
|
102
|
-
📊 Parsed JavaScript Object Structure:
|
|
103
|
-
|
|
104
|
-
{
|
|
105
|
-
"Order": {
|
|
106
|
-
"@id": "ORD-001",
|
|
107
|
-
"Customer": {
|
|
108
|
-
"Name": "John Doe",
|
|
109
|
-
"Email": "john@example.com"
|
|
110
|
-
},
|
|
111
|
-
"Items": {
|
|
112
|
-
"Item": [
|
|
113
|
-
{ "@sku": "SKU-001", "@qty": "2" },
|
|
114
|
-
{ "@sku": "SKU-002", "@qty": "1" }
|
|
115
|
-
]
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
🔍 Available Mapping Paths:
|
|
121
|
-
|
|
122
|
-
🏷️ Order.@id
|
|
123
|
-
📄 Order.Customer.Name
|
|
124
|
-
📄 Order.Customer.Email
|
|
125
|
-
📋 Order.Items.Item[] (array)
|
|
126
|
-
🏷️ @sku
|
|
127
|
-
🏷️ @qty
|
|
128
|
-
|
|
129
|
-
📋 Structure Insights:
|
|
130
|
-
|
|
131
|
-
Root Element(s): Order
|
|
132
|
-
Arrays Detected: 1
|
|
133
|
-
- Order.Items.Item[] (array)
|
|
134
|
-
Attributes Detected: 3
|
|
135
|
-
- Order.@id
|
|
136
|
-
- @sku
|
|
137
|
-
- @qty
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
---
|
|
141
|
-
|
|
142
|
-
### JSON Analysis
|
|
143
|
-
|
|
144
|
-
**Input JSON (`products.json`):**
|
|
145
|
-
```json
|
|
146
|
-
{
|
|
147
|
-
"products": [
|
|
148
|
-
{
|
|
149
|
-
"id": "PROD-001",
|
|
150
|
-
"name": "Widget",
|
|
151
|
-
"price": 19.99,
|
|
152
|
-
"category": {
|
|
153
|
-
"id": "CAT-001",
|
|
154
|
-
"name": "Electronics"
|
|
155
|
-
}
|
|
156
|
-
},
|
|
157
|
-
{
|
|
158
|
-
"id": "PROD-002",
|
|
159
|
-
"name": "Gadget",
|
|
160
|
-
"price": 29.99,
|
|
161
|
-
"category": {
|
|
162
|
-
"id": "CAT-001",
|
|
163
|
-
"name": "Electronics"
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
]
|
|
167
|
-
}
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
**Command:**
|
|
171
|
-
```bash
|
|
172
|
-
fc-connect analyze-source-structure --file ./products.json --show-json
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
**Output:**
|
|
176
|
-
```
|
|
177
|
-
🔍 Available Mapping Paths:
|
|
178
|
-
|
|
179
|
-
📋 products[] (array)
|
|
180
|
-
📄 id
|
|
181
|
-
📄 name
|
|
182
|
-
📄 price
|
|
183
|
-
📄 category.id
|
|
184
|
-
📄 category.name
|
|
185
|
-
|
|
186
|
-
📋 Structure Insights:
|
|
187
|
-
|
|
188
|
-
Root Element(s): products
|
|
189
|
-
Arrays Detected: 1
|
|
190
|
-
- products[] (array)
|
|
191
|
-
```
|
|
192
|
-
|
|
193
|
-
---
|
|
194
|
-
|
|
195
|
-
### CSV Analysis
|
|
196
|
-
|
|
197
|
-
**Input CSV (`inventory.csv`):**
|
|
198
|
-
```csv
|
|
199
|
-
sku,location,quantity,status
|
|
200
|
-
SKU-001,WH-001,100,available
|
|
201
|
-
SKU-002,WH-001,50,reserved
|
|
202
|
-
SKU-003,WH-002,200,available
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
**Command:**
|
|
206
|
-
```bash
|
|
207
|
-
fc-connect analyze-source-structure --file ./inventory.csv --format csv --show-structure
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
**Output:**
|
|
211
|
-
```
|
|
212
|
-
ℹ️ CSV has 3 rows - analyzing first 100 rows only
|
|
213
|
-
|
|
214
|
-
📊 Parsed JavaScript Object Structure:
|
|
215
|
-
|
|
216
|
-
Array of records (showing first record):
|
|
217
|
-
|
|
218
|
-
{
|
|
219
|
-
"sku": "SKU-001",
|
|
220
|
-
"location": "WH-001",
|
|
221
|
-
"quantity": "100",
|
|
222
|
-
"status": "available"
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
... and 2 more record(s)
|
|
226
|
-
|
|
227
|
-
🔍 Available Mapping Paths:
|
|
228
|
-
|
|
229
|
-
📄 sku
|
|
230
|
-
📄 location
|
|
231
|
-
📄 quantity
|
|
232
|
-
📄 status
|
|
233
|
-
|
|
234
|
-
📋 Structure Insights:
|
|
235
|
-
|
|
236
|
-
Format: Array of records (3 record(s) analyzed)
|
|
237
|
-
Record Fields: sku, location, quantity, status
|
|
238
|
-
Total Fields: 4
|
|
239
|
-
```
|
|
240
|
-
|
|
241
|
-
---
|
|
242
|
-
|
|
243
|
-
### Parquet Analysis
|
|
244
|
-
|
|
245
|
-
**Command:**
|
|
246
|
-
```bash
|
|
247
|
-
fc-connect analyze-source-structure --file ./inventory.parquet --format parquet
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
**Output:**
|
|
251
|
-
```
|
|
252
|
-
🔍 Available Mapping Paths:
|
|
253
|
-
|
|
254
|
-
📄 productRef
|
|
255
|
-
📄 locationRef
|
|
256
|
-
📄 quantity
|
|
257
|
-
📄 availableQuantity
|
|
258
|
-
📄 reservedQuantity
|
|
259
|
-
|
|
260
|
-
📋 Structure Insights:
|
|
261
|
-
|
|
262
|
-
Format: Array of records (100 record(s) analyzed)
|
|
263
|
-
Record Fields: productRef, locationRef, quantity, availableQuantity, reservedQuantity
|
|
264
|
-
Total Fields: 5
|
|
265
|
-
```
|
|
266
|
-
|
|
267
|
-
---
|
|
268
|
-
|
|
269
|
-
## Generating Mapping Templates
|
|
270
|
-
|
|
271
|
-
### Generate UniversalMapper Template (Extract)
|
|
272
|
-
|
|
273
|
-
```bash
|
|
274
|
-
fc-connect analyze-source-structure \
|
|
275
|
-
--file ./inventory.xml \
|
|
276
|
-
--format xml \
|
|
277
|
-
--direction extract \
|
|
278
|
-
--mapper universal \
|
|
279
|
-
--output ./inventory-mapping.json
|
|
280
|
-
```
|
|
281
|
-
|
|
282
|
-
**Generated Template (`inventory-mapping.json`):**
|
|
283
|
-
```json
|
|
284
|
-
{
|
|
285
|
-
"version": "1.0.0",
|
|
286
|
-
"description": "Generated mapping template from XML analysis",
|
|
287
|
-
"direction": "extract",
|
|
288
|
-
"sourceFormat": "graphql",
|
|
289
|
-
"fields": {
|
|
290
|
-
"locationRef": {
|
|
291
|
-
"source": "ItemInventory.FacilityId",
|
|
292
|
-
"comment": "Extracted from ItemInventory.FacilityId",
|
|
293
|
-
"resolver": "sdk.trim"
|
|
294
|
-
},
|
|
295
|
-
"productRef": {
|
|
296
|
-
"source": "ItemInventory.Item.ItemId.ClientItemId",
|
|
297
|
-
"comment": "Extracted from ItemInventory.Item.ItemId.ClientItemId",
|
|
298
|
-
"resolver": "sdk.trim"
|
|
299
|
-
},
|
|
300
|
-
"quantity": {
|
|
301
|
-
"source": "ItemInventory.Item.SellableQuantity",
|
|
302
|
-
"comment": "Extracted from ItemInventory.Item.SellableQuantity",
|
|
303
|
-
"resolver": "sdk.parseInt"
|
|
304
|
-
},
|
|
305
|
-
"items": {
|
|
306
|
-
"source": "ItemInventory.Item[]",
|
|
307
|
-
"isArray": true,
|
|
308
|
-
"comment": "Array field - extracted from ItemInventory.Item[]",
|
|
309
|
-
"fields": {
|
|
310
|
-
"SellableQuantity": {
|
|
311
|
-
"source": "SellableQuantity",
|
|
312
|
-
"comment": "Array item field - extracted from ItemInventory.Item.SellableQuantity (item is already context)",
|
|
313
|
-
"resolver": "sdk.parseInt"
|
|
314
|
-
},
|
|
315
|
-
"ItemId": {
|
|
316
|
-
"source": "ItemId",
|
|
317
|
-
"comment": "Array item field - extracted from ItemInventory.Item.ItemId.ClientItemId (item is already context)"
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
```
|
|
324
|
-
|
|
325
|
-
**Note:** Resolvers are automatically detected and included based on data types:
|
|
326
|
-
- Numbers → `sdk.parseInt` or `sdk.parseFloat`
|
|
327
|
-
- Dates → `sdk.parseDate`
|
|
328
|
-
- Strings → `sdk.trim` (or `sdk.lowercase` for emails/codes)
|
|
329
|
-
|
|
330
|
-
---
|
|
331
|
-
|
|
332
|
-
### Generate GraphQLMutationMapper Template (Ingest)
|
|
333
|
-
|
|
334
|
-
```bash
|
|
335
|
-
fc-connect analyze-source-structure \
|
|
336
|
-
--file ./order.xml \
|
|
337
|
-
--format xml \
|
|
338
|
-
--direction ingest \
|
|
339
|
-
--mapper graphql \
|
|
340
|
-
--output ./order-mapping.json
|
|
341
|
-
```
|
|
342
|
-
|
|
343
|
-
**Generated Template (`order-mapping.json`):**
|
|
344
|
-
```json
|
|
345
|
-
{
|
|
346
|
-
"version": "1.0.0",
|
|
347
|
-
"description": "Generated mapping template from XML analysis",
|
|
348
|
-
"direction": "ingest",
|
|
349
|
-
"sourceFormat": "xml",
|
|
350
|
-
"mutation": "TODO_MUTATION_NAME",
|
|
351
|
-
"comment": "TODO: Replace TODO_MUTATION_NAME with actual GraphQL mutation name",
|
|
352
|
-
"fields": {
|
|
353
|
-
"orderId[]": {
|
|
354
|
-
"source": "Order.Items.Item",
|
|
355
|
-
"comment": "Array field - extracted from Order.Items.Item",
|
|
356
|
-
"fields": {
|
|
357
|
-
"itemField": {
|
|
358
|
-
"source": "$.fieldName",
|
|
359
|
-
"comment": "TODO: Map fields from array items - use $. prefix for item context"
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
```
|
|
366
|
-
|
|
367
|
-
**Note:** For GraphQLMutationMapper Pattern 2 (`mapWithNodes()`), arrays support both syntaxes:
|
|
368
|
-
- **Recommended:** `isArray: true` property (consistent with UniversalMapper and Pattern 1)
|
|
369
|
-
- **Legacy:** `fieldName[]` suffix (still supported for backward compatibility)
|
|
370
|
-
|
|
371
|
-
Both produce identical results. Use `isArray: true` for consistency across all mappers.
|
|
372
|
-
|
|
373
|
-
---
|
|
374
|
-
|
|
375
|
-
## Workflow Integration
|
|
376
|
-
|
|
377
|
-
### Complete Mapping Workflow
|
|
378
|
-
|
|
379
|
-
```bash
|
|
380
|
-
# Step 1: Analyze source file
|
|
381
|
-
fc-connect analyze-source-structure \
|
|
382
|
-
--file ./order.xml \
|
|
383
|
-
--show-structure \
|
|
384
|
-
--output ./order-template.json
|
|
385
|
-
|
|
386
|
-
# Step 2: Review and edit template
|
|
387
|
-
# ... manually edit order-template.json ...
|
|
388
|
-
|
|
389
|
-
# Step 3: (Optional) Generate target mapping from GraphQL mutation
|
|
390
|
-
fc-connect generate-mutation-mapping \
|
|
391
|
-
--file ./createOrder.graphql \
|
|
392
|
-
--schema ./fluent-schema.json \
|
|
393
|
-
--output ./target-mapping.json
|
|
394
|
-
|
|
395
|
-
# Step 4: Combine source analysis + target schema
|
|
396
|
-
# ... merge paths from order-template.json into target-mapping.json ...
|
|
397
|
-
|
|
398
|
-
# Step 5: Validate mapping
|
|
399
|
-
fc-connect validate-schema \
|
|
400
|
-
--mapping ./order-mapping.json \
|
|
401
|
-
--schema ./fluent-schema.json
|
|
402
|
-
```
|
|
403
|
-
|
|
404
|
-
---
|
|
405
|
-
|
|
406
|
-
## Understanding Output
|
|
407
|
-
|
|
408
|
-
### Mapping Paths Format
|
|
409
|
-
|
|
410
|
-
| Icon | Meaning | Example |
|
|
411
|
-
|------|---------|---------|
|
|
412
|
-
| 📄 | Regular field | `Order.Customer.Name` |
|
|
413
|
-
| 🏷️ | XML attribute | `Order.@id` |
|
|
414
|
-
| 📋 | Array field | `Order.Items.Item[] (array)` |
|
|
415
|
-
|
|
416
|
-
### Path Syntax
|
|
417
|
-
|
|
418
|
-
- **Regular fields:** `Order.Customer.Name` → Use as-is: `"source": "Order.Customer.Name"`
|
|
419
|
-
- **XML attributes:** `Order.@id` → Use with `@`: `"source": "Order.@id"`
|
|
420
|
-
- **Arrays:** `Order.Items.Item[]` → Use `isArray: true` (UniversalMapper) or `fieldName[]` (GraphQLMutationMapper Pattern 2)
|
|
421
|
-
- **Array item fields:** Inside array context, use `$.fieldName` prefix
|
|
422
|
-
|
|
423
|
-
---
|
|
424
|
-
|
|
425
|
-
## Tips & Best Practices
|
|
426
|
-
|
|
427
|
-
### 1. Always Analyze First
|
|
428
|
-
|
|
429
|
-
```bash
|
|
430
|
-
# ✅ Good: Analyze before writing mapping
|
|
431
|
-
fc-connect analyze-source-structure --file ./data.xml --show-structure
|
|
432
|
-
|
|
433
|
-
# ❌ Bad: Guessing paths without analysis
|
|
434
|
-
```
|
|
435
|
-
|
|
436
|
-
### 2. Use Generated Templates as Starting Point
|
|
437
|
-
|
|
438
|
-
```bash
|
|
439
|
-
# Generate template (resolvers are automatically included!)
|
|
440
|
-
fc-connect analyze-source-structure \
|
|
441
|
-
--file ./data.xml \
|
|
442
|
-
--output ./mapping-template.json
|
|
443
|
-
|
|
444
|
-
# Edit template:
|
|
445
|
-
# - Replace field names with target names
|
|
446
|
-
# - Review and adjust suggested resolvers (already included based on data types)
|
|
447
|
-
# - Configure array item mappings
|
|
448
|
-
# - Add required/defaultValue flags
|
|
449
|
-
```
|
|
450
|
-
|
|
451
|
-
**Automatic Resolver Detection:**
|
|
452
|
-
The tool automatically detects data types and suggests appropriate resolvers:
|
|
453
|
-
- **Numbers** → `sdk.parseInt` (integers) or `sdk.parseFloat` (decimals)
|
|
454
|
-
- **Dates** → `sdk.parseDate` (detects ISO8601 and common date formats)
|
|
455
|
-
- **Strings** → `sdk.trim` (most strings) or `sdk.lowercase` (emails/codes)
|
|
456
|
-
- Detection uses both field values and field names (e.g., "quantity" → parseInt, "price" → parseFloat)
|
|
457
|
-
|
|
458
|
-
### 3. Verify Complex Structures
|
|
459
|
-
|
|
460
|
-
```bash
|
|
461
|
-
# For complex XML with attributes
|
|
462
|
-
fc-connect analyze-source-structure \
|
|
463
|
-
--file ./complex.xml \
|
|
464
|
-
--show-json
|
|
465
|
-
```
|
|
466
|
-
|
|
467
|
-
### 4. Understand Array Normalization
|
|
468
|
-
|
|
469
|
-
The tool helps identify arrays, but remember:
|
|
470
|
-
- XML: Single element = object, Multiple = array
|
|
471
|
-
- Always normalize: `Array.isArray(items) ? items : items ? [items] : []`
|
|
472
|
-
|
|
473
|
-
---
|
|
474
|
-
|
|
475
|
-
## Troubleshooting
|
|
476
|
-
|
|
477
|
-
### Issue: "File not found"
|
|
478
|
-
|
|
479
|
-
**Solution:**
|
|
480
|
-
```bash
|
|
481
|
-
# Use absolute path or check current directory
|
|
482
|
-
fc-connect analyze-source-structure --file /full/path/to/file.xml
|
|
483
|
-
```
|
|
484
|
-
|
|
485
|
-
### Issue: "Could not detect file format"
|
|
486
|
-
|
|
487
|
-
**Solution:**
|
|
488
|
-
```bash
|
|
489
|
-
# Explicitly specify format
|
|
490
|
-
fc-connect analyze-source-structure --file ./data --format xml
|
|
491
|
-
```
|
|
492
|
-
|
|
493
|
-
### Issue: CSV/Parquet shows limited records
|
|
494
|
-
|
|
495
|
-
**Explanation:**
|
|
496
|
-
- Tool analyzes first 100 rows/records to avoid huge outputs
|
|
497
|
-
- Structure is consistent across all records
|
|
498
|
-
- You can analyze full file in your code
|
|
499
|
-
|
|
500
|
-
### Issue: Generated template has incomplete array mappings
|
|
501
|
-
|
|
502
|
-
**Explanation:**
|
|
503
|
-
- Template shows placeholder for array item fields
|
|
504
|
-
- You need to manually configure nested `fields` for array items
|
|
505
|
-
- See array mapping documentation for details
|
|
506
|
-
|
|
507
|
-
---
|
|
508
|
-
|
|
509
|
-
## Related Documentation
|
|
510
|
-
|
|
511
|
-
- **[Mapping JavaScript Objects](../../mapping/mapping-javascript-objects.md)** - Understanding how mapping works and ETL flow
|
|
512
|
-
- **[Generate Mutation Mapping](./api-reference-11-cli-tools.md#generate-mutation-mapping)** - Generate target-side templates
|
|
513
|
-
- **[XML Parser Guide](../../parsers/modules/02-core-guides-parsers-04-xml-parser.md)** - XML parsing details
|
|
514
|
-
|
|
515
|
-
---
|
|
516
|
-
|
|
517
|
-
**Last Updated:** 2025-01-16
|
|
518
|
-
|
|
1
|
+
# Module 12: Analyze Source Structure
|
|
2
|
+
|
|
3
|
+
**Level:** Beginner
|
|
4
|
+
**Category:** Command Line
|
|
5
|
+
**Time:** 10 minutes
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
The `analyze-source-structure` CLI tool helps you understand your source data structure and generate mapping configuration suggestions. It supports XML, JSON, CSV, and Parquet files.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Why Use This Tool?
|
|
14
|
+
|
|
15
|
+
**Common Problems:**
|
|
16
|
+
- ❌ "I don't know what paths to use in my mapping config"
|
|
17
|
+
- ❌ "How does this XML get parsed by the SDK?"
|
|
18
|
+
- ❌ "I need to understand the structure before writing mappings"
|
|
19
|
+
- ❌ "My mapping isn't working - is the path correct?"
|
|
20
|
+
|
|
21
|
+
**Solution:**
|
|
22
|
+
- ✅ Analyze your source file first
|
|
23
|
+
- ✅ See the exact parsed structure
|
|
24
|
+
- ✅ Get suggested mapping paths
|
|
25
|
+
- ✅ Generate a starter template
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Quick Start
|
|
30
|
+
|
|
31
|
+
### Basic Analysis
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# Analyze XML file (auto-detects format)
|
|
35
|
+
fc-connect analyze-source-structure --file ./sample.xml
|
|
36
|
+
|
|
37
|
+
# Analyze JSON
|
|
38
|
+
fc-connect analyze-source-structure --file ./data.json
|
|
39
|
+
|
|
40
|
+
# Analyze CSV
|
|
41
|
+
fc-connect analyze-source-structure --file ./inventory.csv --format csv
|
|
42
|
+
|
|
43
|
+
# Analyze Parquet
|
|
44
|
+
fc-connect analyze-source-structure --file ./data.parquet --format parquet
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Command Reference
|
|
50
|
+
|
|
51
|
+
### Required Options
|
|
52
|
+
|
|
53
|
+
| Option | Description | Example |
|
|
54
|
+
|--------|-------------|---------|
|
|
55
|
+
| `--file, -f` | Source file to analyze | `--file ./order.xml` |
|
|
56
|
+
|
|
57
|
+
### Optional Options
|
|
58
|
+
|
|
59
|
+
| Option | Description | Default | Example |
|
|
60
|
+
|--------|-------------|---------|---------|
|
|
61
|
+
| `--format` | File format (auto-detected if not provided) | Auto-detect | `--format xml` |
|
|
62
|
+
| `--output, -o` | Generate mapping template file | None | `--output ./mapping.json` |
|
|
63
|
+
| `--show-structure` | Display parsed structure | `false` | `--show-structure` |
|
|
64
|
+
| `--show-json` | Display structure as JSON | `false` | `--show-json` |
|
|
65
|
+
| `--direction` | Mapping direction | `extract` | `--direction ingest` |
|
|
66
|
+
| `--mapper` | Mapper type | `universal` | `--mapper graphql` |
|
|
67
|
+
| `--markdown [path]` | Generate comprehensive markdown documentation | None | `--markdown` or `--markdown ./docs/analysis.md` |
|
|
68
|
+
| `--docs [path]` | Alias for `--markdown` | None | `--docs` |
|
|
69
|
+
| `--help, -h` | Show help message | - | `--help` |
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Examples by Format
|
|
74
|
+
|
|
75
|
+
### XML Analysis
|
|
76
|
+
|
|
77
|
+
**Input XML (`order.xml`):**
|
|
78
|
+
```xml
|
|
79
|
+
<Order id="ORD-001">
|
|
80
|
+
<Customer>
|
|
81
|
+
<Name>John Doe</Name>
|
|
82
|
+
<Email>john@example.com</Email>
|
|
83
|
+
</Customer>
|
|
84
|
+
<Items>
|
|
85
|
+
<Item sku="SKU-001" qty="2" />
|
|
86
|
+
<Item sku="SKU-002" qty="1" />
|
|
87
|
+
</Items>
|
|
88
|
+
</Order>
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
**Command:**
|
|
92
|
+
```bash
|
|
93
|
+
fc-connect analyze-source-structure --file ./order.xml --show-structure
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**Output:**
|
|
97
|
+
```
|
|
98
|
+
╔═══════════════════════════════════════════════════════════════════════╗
|
|
99
|
+
║ Source Structure Analysis ║
|
|
100
|
+
╚═══════════════════════════════════════════════════════════════════════╝
|
|
101
|
+
|
|
102
|
+
📊 Parsed JavaScript Object Structure:
|
|
103
|
+
|
|
104
|
+
{
|
|
105
|
+
"Order": {
|
|
106
|
+
"@id": "ORD-001",
|
|
107
|
+
"Customer": {
|
|
108
|
+
"Name": "John Doe",
|
|
109
|
+
"Email": "john@example.com"
|
|
110
|
+
},
|
|
111
|
+
"Items": {
|
|
112
|
+
"Item": [
|
|
113
|
+
{ "@sku": "SKU-001", "@qty": "2" },
|
|
114
|
+
{ "@sku": "SKU-002", "@qty": "1" }
|
|
115
|
+
]
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
🔍 Available Mapping Paths:
|
|
121
|
+
|
|
122
|
+
🏷️ Order.@id
|
|
123
|
+
📄 Order.Customer.Name
|
|
124
|
+
📄 Order.Customer.Email
|
|
125
|
+
📋 Order.Items.Item[] (array)
|
|
126
|
+
🏷️ @sku
|
|
127
|
+
🏷️ @qty
|
|
128
|
+
|
|
129
|
+
📋 Structure Insights:
|
|
130
|
+
|
|
131
|
+
Root Element(s): Order
|
|
132
|
+
Arrays Detected: 1
|
|
133
|
+
- Order.Items.Item[] (array)
|
|
134
|
+
Attributes Detected: 3
|
|
135
|
+
- Order.@id
|
|
136
|
+
- @sku
|
|
137
|
+
- @qty
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
### JSON Analysis
|
|
143
|
+
|
|
144
|
+
**Input JSON (`products.json`):**
|
|
145
|
+
```json
|
|
146
|
+
{
|
|
147
|
+
"products": [
|
|
148
|
+
{
|
|
149
|
+
"id": "PROD-001",
|
|
150
|
+
"name": "Widget",
|
|
151
|
+
"price": 19.99,
|
|
152
|
+
"category": {
|
|
153
|
+
"id": "CAT-001",
|
|
154
|
+
"name": "Electronics"
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"id": "PROD-002",
|
|
159
|
+
"name": "Gadget",
|
|
160
|
+
"price": 29.99,
|
|
161
|
+
"category": {
|
|
162
|
+
"id": "CAT-001",
|
|
163
|
+
"name": "Electronics"
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
]
|
|
167
|
+
}
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
**Command:**
|
|
171
|
+
```bash
|
|
172
|
+
fc-connect analyze-source-structure --file ./products.json --show-json
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
**Output:**
|
|
176
|
+
```
|
|
177
|
+
🔍 Available Mapping Paths:
|
|
178
|
+
|
|
179
|
+
📋 products[] (array)
|
|
180
|
+
📄 id
|
|
181
|
+
📄 name
|
|
182
|
+
📄 price
|
|
183
|
+
📄 category.id
|
|
184
|
+
📄 category.name
|
|
185
|
+
|
|
186
|
+
📋 Structure Insights:
|
|
187
|
+
|
|
188
|
+
Root Element(s): products
|
|
189
|
+
Arrays Detected: 1
|
|
190
|
+
- products[] (array)
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
### CSV Analysis
|
|
196
|
+
|
|
197
|
+
**Input CSV (`inventory.csv`):**
|
|
198
|
+
```csv
|
|
199
|
+
sku,location,quantity,status
|
|
200
|
+
SKU-001,WH-001,100,available
|
|
201
|
+
SKU-002,WH-001,50,reserved
|
|
202
|
+
SKU-003,WH-002,200,available
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
**Command:**
|
|
206
|
+
```bash
|
|
207
|
+
fc-connect analyze-source-structure --file ./inventory.csv --format csv --show-structure
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
**Output:**
|
|
211
|
+
```
|
|
212
|
+
ℹ️ CSV has 3 rows - analyzing first 100 rows only
|
|
213
|
+
|
|
214
|
+
📊 Parsed JavaScript Object Structure:
|
|
215
|
+
|
|
216
|
+
Array of records (showing first record):
|
|
217
|
+
|
|
218
|
+
{
|
|
219
|
+
"sku": "SKU-001",
|
|
220
|
+
"location": "WH-001",
|
|
221
|
+
"quantity": "100",
|
|
222
|
+
"status": "available"
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
... and 2 more record(s)
|
|
226
|
+
|
|
227
|
+
🔍 Available Mapping Paths:
|
|
228
|
+
|
|
229
|
+
📄 sku
|
|
230
|
+
📄 location
|
|
231
|
+
📄 quantity
|
|
232
|
+
📄 status
|
|
233
|
+
|
|
234
|
+
📋 Structure Insights:
|
|
235
|
+
|
|
236
|
+
Format: Array of records (3 record(s) analyzed)
|
|
237
|
+
Record Fields: sku, location, quantity, status
|
|
238
|
+
Total Fields: 4
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
### Parquet Analysis
|
|
244
|
+
|
|
245
|
+
**Command:**
|
|
246
|
+
```bash
|
|
247
|
+
fc-connect analyze-source-structure --file ./inventory.parquet --format parquet
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
**Output:**
|
|
251
|
+
```
|
|
252
|
+
🔍 Available Mapping Paths:
|
|
253
|
+
|
|
254
|
+
📄 productRef
|
|
255
|
+
📄 locationRef
|
|
256
|
+
📄 quantity
|
|
257
|
+
📄 availableQuantity
|
|
258
|
+
📄 reservedQuantity
|
|
259
|
+
|
|
260
|
+
📋 Structure Insights:
|
|
261
|
+
|
|
262
|
+
Format: Array of records (100 record(s) analyzed)
|
|
263
|
+
Record Fields: productRef, locationRef, quantity, availableQuantity, reservedQuantity
|
|
264
|
+
Total Fields: 5
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
---
|
|
268
|
+
|
|
269
|
+
## Generating Mapping Templates
|
|
270
|
+
|
|
271
|
+
### Generate UniversalMapper Template (Extract)
|
|
272
|
+
|
|
273
|
+
```bash
|
|
274
|
+
fc-connect analyze-source-structure \
|
|
275
|
+
--file ./inventory.xml \
|
|
276
|
+
--format xml \
|
|
277
|
+
--direction extract \
|
|
278
|
+
--mapper universal \
|
|
279
|
+
--output ./inventory-mapping.json
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
**Generated Template (`inventory-mapping.json`):**
|
|
283
|
+
```json
|
|
284
|
+
{
|
|
285
|
+
"version": "1.0.0",
|
|
286
|
+
"description": "Generated mapping template from XML analysis",
|
|
287
|
+
"direction": "extract",
|
|
288
|
+
"sourceFormat": "graphql",
|
|
289
|
+
"fields": {
|
|
290
|
+
"locationRef": {
|
|
291
|
+
"source": "ItemInventory.FacilityId",
|
|
292
|
+
"comment": "Extracted from ItemInventory.FacilityId",
|
|
293
|
+
"resolver": "sdk.trim"
|
|
294
|
+
},
|
|
295
|
+
"productRef": {
|
|
296
|
+
"source": "ItemInventory.Item.ItemId.ClientItemId",
|
|
297
|
+
"comment": "Extracted from ItemInventory.Item.ItemId.ClientItemId",
|
|
298
|
+
"resolver": "sdk.trim"
|
|
299
|
+
},
|
|
300
|
+
"quantity": {
|
|
301
|
+
"source": "ItemInventory.Item.SellableQuantity",
|
|
302
|
+
"comment": "Extracted from ItemInventory.Item.SellableQuantity",
|
|
303
|
+
"resolver": "sdk.parseInt"
|
|
304
|
+
},
|
|
305
|
+
"items": {
|
|
306
|
+
"source": "ItemInventory.Item[]",
|
|
307
|
+
"isArray": true,
|
|
308
|
+
"comment": "Array field - extracted from ItemInventory.Item[]",
|
|
309
|
+
"fields": {
|
|
310
|
+
"SellableQuantity": {
|
|
311
|
+
"source": "SellableQuantity",
|
|
312
|
+
"comment": "Array item field - extracted from ItemInventory.Item.SellableQuantity (item is already context)",
|
|
313
|
+
"resolver": "sdk.parseInt"
|
|
314
|
+
},
|
|
315
|
+
"ItemId": {
|
|
316
|
+
"source": "ItemId",
|
|
317
|
+
"comment": "Array item field - extracted from ItemInventory.Item.ItemId.ClientItemId (item is already context)"
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
**Note:** Resolvers are automatically detected and included based on data types:
|
|
326
|
+
- Numbers → `sdk.parseInt` or `sdk.parseFloat`
|
|
327
|
+
- Dates → `sdk.parseDate`
|
|
328
|
+
- Strings → `sdk.trim` (or `sdk.lowercase` for emails/codes)
|
|
329
|
+
|
|
330
|
+
---
|
|
331
|
+
|
|
332
|
+
### Generate GraphQLMutationMapper Template (Ingest)
|
|
333
|
+
|
|
334
|
+
```bash
|
|
335
|
+
fc-connect analyze-source-structure \
|
|
336
|
+
--file ./order.xml \
|
|
337
|
+
--format xml \
|
|
338
|
+
--direction ingest \
|
|
339
|
+
--mapper graphql \
|
|
340
|
+
--output ./order-mapping.json
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
**Generated Template (`order-mapping.json`):**
|
|
344
|
+
```json
|
|
345
|
+
{
|
|
346
|
+
"version": "1.0.0",
|
|
347
|
+
"description": "Generated mapping template from XML analysis",
|
|
348
|
+
"direction": "ingest",
|
|
349
|
+
"sourceFormat": "xml",
|
|
350
|
+
"mutation": "TODO_MUTATION_NAME",
|
|
351
|
+
"comment": "TODO: Replace TODO_MUTATION_NAME with actual GraphQL mutation name",
|
|
352
|
+
"fields": {
|
|
353
|
+
"orderId[]": {
|
|
354
|
+
"source": "Order.Items.Item",
|
|
355
|
+
"comment": "Array field - extracted from Order.Items.Item",
|
|
356
|
+
"fields": {
|
|
357
|
+
"itemField": {
|
|
358
|
+
"source": "$.fieldName",
|
|
359
|
+
"comment": "TODO: Map fields from array items - use $. prefix for item context"
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
**Note:** For GraphQLMutationMapper Pattern 2 (`mapWithNodes()`), arrays support both syntaxes:
|
|
368
|
+
- **Recommended:** `isArray: true` property (consistent with UniversalMapper and Pattern 1)
|
|
369
|
+
- **Legacy:** `fieldName[]` suffix (still supported for backward compatibility)
|
|
370
|
+
|
|
371
|
+
Both produce identical results. Use `isArray: true` for consistency across all mappers.
|
|
372
|
+
|
|
373
|
+
---
|
|
374
|
+
|
|
375
|
+
## Workflow Integration
|
|
376
|
+
|
|
377
|
+
### Complete Mapping Workflow
|
|
378
|
+
|
|
379
|
+
```bash
|
|
380
|
+
# Step 1: Analyze source file
|
|
381
|
+
fc-connect analyze-source-structure \
|
|
382
|
+
--file ./order.xml \
|
|
383
|
+
--show-structure \
|
|
384
|
+
--output ./order-template.json
|
|
385
|
+
|
|
386
|
+
# Step 2: Review and edit template
|
|
387
|
+
# ... manually edit order-template.json ...
|
|
388
|
+
|
|
389
|
+
# Step 3: (Optional) Generate target mapping from GraphQL mutation
|
|
390
|
+
fc-connect generate-mutation-mapping \
|
|
391
|
+
--file ./createOrder.graphql \
|
|
392
|
+
--schema ./fluent-schema.json \
|
|
393
|
+
--output ./target-mapping.json
|
|
394
|
+
|
|
395
|
+
# Step 4: Combine source analysis + target schema
|
|
396
|
+
# ... merge paths from order-template.json into target-mapping.json ...
|
|
397
|
+
|
|
398
|
+
# Step 5: Validate mapping
|
|
399
|
+
fc-connect validate-schema \
|
|
400
|
+
--mapping ./order-mapping.json \
|
|
401
|
+
--schema ./fluent-schema.json
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
---
|
|
405
|
+
|
|
406
|
+
## Understanding Output
|
|
407
|
+
|
|
408
|
+
### Mapping Paths Format
|
|
409
|
+
|
|
410
|
+
| Icon | Meaning | Example |
|
|
411
|
+
|------|---------|---------|
|
|
412
|
+
| 📄 | Regular field | `Order.Customer.Name` |
|
|
413
|
+
| 🏷️ | XML attribute | `Order.@id` |
|
|
414
|
+
| 📋 | Array field | `Order.Items.Item[] (array)` |
|
|
415
|
+
|
|
416
|
+
### Path Syntax
|
|
417
|
+
|
|
418
|
+
- **Regular fields:** `Order.Customer.Name` → Use as-is: `"source": "Order.Customer.Name"`
|
|
419
|
+
- **XML attributes:** `Order.@id` → Use with `@`: `"source": "Order.@id"`
|
|
420
|
+
- **Arrays:** `Order.Items.Item[]` → Use `isArray: true` (UniversalMapper) or `fieldName[]` (GraphQLMutationMapper Pattern 2)
|
|
421
|
+
- **Array item fields:** Inside array context, use `$.fieldName` prefix
|
|
422
|
+
|
|
423
|
+
---
|
|
424
|
+
|
|
425
|
+
## Tips & Best Practices
|
|
426
|
+
|
|
427
|
+
### 1. Always Analyze First
|
|
428
|
+
|
|
429
|
+
```bash
|
|
430
|
+
# ✅ Good: Analyze before writing mapping
|
|
431
|
+
fc-connect analyze-source-structure --file ./data.xml --show-structure
|
|
432
|
+
|
|
433
|
+
# ❌ Bad: Guessing paths without analysis
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
### 2. Use Generated Templates as Starting Point
|
|
437
|
+
|
|
438
|
+
```bash
|
|
439
|
+
# Generate template (resolvers are automatically included!)
|
|
440
|
+
fc-connect analyze-source-structure \
|
|
441
|
+
--file ./data.xml \
|
|
442
|
+
--output ./mapping-template.json
|
|
443
|
+
|
|
444
|
+
# Edit template:
|
|
445
|
+
# - Replace field names with target names
|
|
446
|
+
# - Review and adjust suggested resolvers (already included based on data types)
|
|
447
|
+
# - Configure array item mappings
|
|
448
|
+
# - Add required/defaultValue flags
|
|
449
|
+
```
|
|
450
|
+
|
|
451
|
+
**Automatic Resolver Detection:**
|
|
452
|
+
The tool automatically detects data types and suggests appropriate resolvers:
|
|
453
|
+
- **Numbers** → `sdk.parseInt` (integers) or `sdk.parseFloat` (decimals)
|
|
454
|
+
- **Dates** → `sdk.parseDate` (detects ISO8601 and common date formats)
|
|
455
|
+
- **Strings** → `sdk.trim` (most strings) or `sdk.lowercase` (emails/codes)
|
|
456
|
+
- Detection uses both field values and field names (e.g., "quantity" → parseInt, "price" → parseFloat)
|
|
457
|
+
|
|
458
|
+
### 3. Verify Complex Structures
|
|
459
|
+
|
|
460
|
+
```bash
|
|
461
|
+
# For complex XML with attributes
|
|
462
|
+
fc-connect analyze-source-structure \
|
|
463
|
+
--file ./complex.xml \
|
|
464
|
+
--show-json
|
|
465
|
+
```
|
|
466
|
+
|
|
467
|
+
### 4. Understand Array Normalization
|
|
468
|
+
|
|
469
|
+
The tool helps identify arrays, but remember:
|
|
470
|
+
- XML: Single element = object, Multiple = array
|
|
471
|
+
- Always normalize: `Array.isArray(items) ? items : items ? [items] : []`
|
|
472
|
+
|
|
473
|
+
---
|
|
474
|
+
|
|
475
|
+
## Troubleshooting
|
|
476
|
+
|
|
477
|
+
### Issue: "File not found"
|
|
478
|
+
|
|
479
|
+
**Solution:**
|
|
480
|
+
```bash
|
|
481
|
+
# Use absolute path or check current directory
|
|
482
|
+
fc-connect analyze-source-structure --file /full/path/to/file.xml
|
|
483
|
+
```
|
|
484
|
+
|
|
485
|
+
### Issue: "Could not detect file format"
|
|
486
|
+
|
|
487
|
+
**Solution:**
|
|
488
|
+
```bash
|
|
489
|
+
# Explicitly specify format
|
|
490
|
+
fc-connect analyze-source-structure --file ./data --format xml
|
|
491
|
+
```
|
|
492
|
+
|
|
493
|
+
### Issue: CSV/Parquet shows limited records
|
|
494
|
+
|
|
495
|
+
**Explanation:**
|
|
496
|
+
- Tool analyzes first 100 rows/records to avoid huge outputs
|
|
497
|
+
- Structure is consistent across all records
|
|
498
|
+
- You can analyze full file in your code
|
|
499
|
+
|
|
500
|
+
### Issue: Generated template has incomplete array mappings
|
|
501
|
+
|
|
502
|
+
**Explanation:**
|
|
503
|
+
- Template shows placeholder for array item fields
|
|
504
|
+
- You need to manually configure nested `fields` for array items
|
|
505
|
+
- See array mapping documentation for details
|
|
506
|
+
|
|
507
|
+
---
|
|
508
|
+
|
|
509
|
+
## Related Documentation
|
|
510
|
+
|
|
511
|
+
- **[Mapping JavaScript Objects](../../mapping/mapping-javascript-objects.md)** - Understanding how mapping works and ETL flow
|
|
512
|
+
- **[Generate Mutation Mapping](./api-reference-11-cli-tools.md#generate-mutation-mapping)** - Generate target-side templates
|
|
513
|
+
- **[XML Parser Guide](../../parsers/modules/02-core-guides-parsers-04-xml-parser.md)** - XML parsing details
|
|
514
|
+
|
|
515
|
+
---
|
|
516
|
+
|
|
517
|
+
**Last Updated:** 2025-01-16
|
|
518
|
+
|