@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,480 +1,480 @@
|
|
|
1
|
-
# Mapping Configuration Format Decision Tree
|
|
2
|
-
|
|
3
|
-
**FC Connect SDK - Choosing the Right Mapping Pattern**
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Quick Decision Tree
|
|
8
|
-
|
|
9
|
-
```
|
|
10
|
-
START: I need to configure field mappings
|
|
11
|
-
│
|
|
12
|
-
├─ Is this a tutorial, example, or proof-of-concept?
|
|
13
|
-
│ └─ YES → ✅ Use INLINE MAPPING (simple object)
|
|
14
|
-
│
|
|
15
|
-
├─ Is this a webhook with dynamic transformation logic?
|
|
16
|
-
│ └─ YES → ✅ Use INLINE MAPPING (programmatic)
|
|
17
|
-
│
|
|
18
|
-
├─ Is this a production template with <10 simple fields?
|
|
19
|
-
│ └─ YES → ✅ Use INLINE MAPPING (acceptable)
|
|
20
|
-
│
|
|
21
|
-
└─ Is this a production template with 10+ fields OR reusable config?
|
|
22
|
-
└─ YES → ✅ Use EXTERNAL JSON FILE
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## Three Valid Patterns
|
|
28
|
-
|
|
29
|
-
### ✅ Pattern 1: External JSON File (Production Standard)
|
|
30
|
-
|
|
31
|
-
**When to use:**
|
|
32
|
-
- Production templates with 10+ fields
|
|
33
|
-
- Reusable configurations across multiple workflows
|
|
34
|
-
- Multi-environment deployments (dev, staging, prod)
|
|
35
|
-
- Complex mappings requiring maintenance
|
|
36
|
-
- Team collaboration (non-developers can edit JSON)
|
|
37
|
-
|
|
38
|
-
**Syntax:**
|
|
39
|
-
```typescript
|
|
40
|
-
import mappingConfig from './config/inventory.batch.json' with { type: 'json' };
|
|
41
|
-
|
|
42
|
-
const mapper = new UniversalMapper(mappingConfig);
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
**File structure:**
|
|
46
|
-
```
|
|
47
|
-
src/
|
|
48
|
-
├── workflows/
|
|
49
|
-
│ └── inventory-ingestion.ts # Workflow code
|
|
50
|
-
└── config/
|
|
51
|
-
└── inventory.batch.json # Mapping configuration
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
**Example JSON:**
|
|
55
|
-
```json
|
|
56
|
-
{
|
|
57
|
-
"version": "1.0.0",
|
|
58
|
-
"fields": {
|
|
59
|
-
"skuRef": {
|
|
60
|
-
"source": "sku_id",
|
|
61
|
-
"required": true
|
|
62
|
-
},
|
|
63
|
-
"qty": {
|
|
64
|
-
"source": "quantity",
|
|
65
|
-
"resolver": "sdk.parseInt"
|
|
66
|
-
},
|
|
67
|
-
"expectedOn": {
|
|
68
|
-
"source": "expected_date",
|
|
69
|
-
"resolver": "sdk.formatDate"
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
**Benefits:**
|
|
76
|
-
- ✅ Clean separation of code and configuration
|
|
77
|
-
- ✅ Easy to maintain and update without code changes
|
|
78
|
-
- ✅ Non-developers can modify mappings
|
|
79
|
-
- ✅ Supports environment-specific configs
|
|
80
|
-
- ✅ Better for version control (clear diffs)
|
|
81
|
-
|
|
82
|
-
**Drawbacks:**
|
|
83
|
-
- ❌ Requires separate file
|
|
84
|
-
- ❌ No TypeScript validation at compile time
|
|
85
|
-
|
|
86
|
-
---
|
|
87
|
-
|
|
88
|
-
### ✅ Pattern 2: Inline Mapping (Examples & Simple Cases)
|
|
89
|
-
|
|
90
|
-
**When to use:**
|
|
91
|
-
- Documentation examples and tutorials
|
|
92
|
-
- Proof-of-concepts and quick prototypes
|
|
93
|
-
- Simple mappings with <10 fields
|
|
94
|
-
- Webhooks with dynamic transformation logic
|
|
95
|
-
- One-off scripts or tests
|
|
96
|
-
|
|
97
|
-
**Syntax:**
|
|
98
|
-
```typescript
|
|
99
|
-
const mapper = new UniversalMapper({
|
|
100
|
-
version: '1.0.0',
|
|
101
|
-
fields: {
|
|
102
|
-
skuRef: { source: 'sku_id', required: true },
|
|
103
|
-
qty: { source: 'quantity', resolver: 'sdk.parseInt' },
|
|
104
|
-
expectedOn: { source: 'expected_date', resolver: 'sdk.formatDate' }
|
|
105
|
-
}
|
|
106
|
-
});
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
**Benefits:**
|
|
110
|
-
- ✅ Everything in one file (self-contained)
|
|
111
|
-
- ✅ Quick to write and iterate
|
|
112
|
-
- ✅ Good for learning and examples
|
|
113
|
-
- ✅ TypeScript type checking for structure
|
|
114
|
-
|
|
115
|
-
**Drawbacks:**
|
|
116
|
-
- ❌ Harder to maintain for large configs
|
|
117
|
-
- ❌ Code changes required for mapping updates
|
|
118
|
-
- ❌ Mixes configuration with business logic
|
|
119
|
-
|
|
120
|
-
**Valid use cases:**
|
|
121
|
-
1. **Documentation/Tutorials**: Teaching SDK usage
|
|
122
|
-
```typescript
|
|
123
|
-
// Example: Quick CSV ingestion tutorial
|
|
124
|
-
const mapper = new UniversalMapper({
|
|
125
|
-
fields: {
|
|
126
|
-
sku: { source: 'product_code' },
|
|
127
|
-
qty: { source: 'stock_level', resolver: 'sdk.parseInt' }
|
|
128
|
-
}
|
|
129
|
-
});
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
2. **Dynamic Webhooks**: Logic-based transformations
|
|
133
|
-
```typescript
|
|
134
|
-
// Example: Webhook with conditional logic
|
|
135
|
-
export const orderWebhook = webhook('order-created', async (ctx) => {
|
|
136
|
-
const { data } = ctx;
|
|
137
|
-
|
|
138
|
-
// Dynamic mapping based on order type
|
|
139
|
-
const fields = data.type === 'WHOLESALE'
|
|
140
|
-
? { discount: { source: 'wholesale_discount' } }
|
|
141
|
-
: { discount: { source: 'retail_discount' } };
|
|
142
|
-
|
|
143
|
-
const mapper = new UniversalMapper({ fields });
|
|
144
|
-
return mapper.map(data);
|
|
145
|
-
});
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
3. **Simple One-Off Scripts**: Quick data transformations
|
|
149
|
-
```typescript
|
|
150
|
-
// Example: One-time data migration
|
|
151
|
-
const mapper = new UniversalMapper({
|
|
152
|
-
fields: {
|
|
153
|
-
id: { source: 'old_id' },
|
|
154
|
-
name: { source: 'product_name' }
|
|
155
|
-
}
|
|
156
|
-
});
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
---
|
|
160
|
-
|
|
161
|
-
### ❌ Pattern 3: TypeScript Config Import (Non-Standard)
|
|
162
|
-
|
|
163
|
-
**Status:** ⚠️ **NOT RECOMMENDED** - Older pattern being phased out
|
|
164
|
-
|
|
165
|
-
**What it looks like:**
|
|
166
|
-
```typescript
|
|
167
|
-
// ❌ WRONG - TypeScript module import (no 'with' clause)
|
|
168
|
-
import { inventoryMapping } from './config/inventory-mapping.config';
|
|
169
|
-
|
|
170
|
-
// ❌ WRONG - Old assert syntax
|
|
171
|
-
import mappingConfig from './config/inventory.json' assert { type: 'json' };
|
|
172
|
-
|
|
173
|
-
// ❌ WRONG - TypeScript file extension
|
|
174
|
-
import mappingConfig from './config/inventory.config.ts';
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
**Why not to use:**
|
|
178
|
-
- ❌ Not a standard JavaScript pattern
|
|
179
|
-
- ❌ Inconsistent with SDK conventions
|
|
180
|
-
- ❌ Requires TypeScript transpilation (breaks Deno)
|
|
181
|
-
- ❌ Harder for non-developers to maintain
|
|
182
|
-
- ❌ Mixes configuration with code structure
|
|
183
|
-
|
|
184
|
-
**Migration path:**
|
|
185
|
-
```typescript
|
|
186
|
-
// BEFORE (TypeScript config import)
|
|
187
|
-
import { inventoryMapping } from './config/inventory-mapping.config';
|
|
188
|
-
const mapper = new UniversalMapper(inventoryMapping);
|
|
189
|
-
|
|
190
|
-
// AFTER (External JSON)
|
|
191
|
-
import inventoryMapping from './config/inventory.batch.json' with { type: 'json' };
|
|
192
|
-
const mapper = new UniversalMapper(inventoryMapping);
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
---
|
|
196
|
-
|
|
197
|
-
## Decision Matrix
|
|
198
|
-
|
|
199
|
-
| Scenario | Recommended Pattern | Reasoning |
|
|
200
|
-
|----------|-------------------|-----------|
|
|
201
|
-
| **Production inventory ingestion** | External JSON | 50+ fields, reusable across environments |
|
|
202
|
-
| **Production order extraction** | External JSON | Complex nested structure, team maintenance |
|
|
203
|
-
| **Tutorial: "Your First Ingestion"** | Inline | Self-contained example, <10 fields |
|
|
204
|
-
| **Webhook: Order created event** | Inline | Dynamic logic based on payload |
|
|
205
|
-
| **Prototype: Testing new data source** | Inline | Quick iteration, proof-of-concept |
|
|
206
|
-
| **Multi-tenant connector** | External JSON | Environment-specific configs (dev/prod) |
|
|
207
|
-
| **GraphQL mutation template** | External JSON | Reusable across multiple mutations |
|
|
208
|
-
| **Test fixture generation** | Inline | Test-specific, isolated data |
|
|
209
|
-
| **Documentation pattern guide** | Inline | Teaching concept, self-contained |
|
|
210
|
-
| **Enterprise production workflow** | External JSON | Governance, change management, auditing |
|
|
211
|
-
|
|
212
|
-
---
|
|
213
|
-
|
|
214
|
-
## Template Categories Analysis
|
|
215
|
-
|
|
216
|
-
**Verified Statistics (2025-10-31):**
|
|
217
|
-
|
|
218
|
-
| Pattern | Count | Percentage | Primary Use |
|
|
219
|
-
|---------|-------|------------|-------------|
|
|
220
|
-
| ✅ External JSON | 20 | 40.0% | Production ingestion/extraction |
|
|
221
|
-
| ⚠️ TypeScript Import | 7 | 14.0% | Older approach (being migrated) |
|
|
222
|
-
| ✅ Inline Mapping | 17 | 34.0% | Examples, webhooks, simple cases |
|
|
223
|
-
| ℹ️ No Mapping | 6 | 12.0% | Architecture guides, non-mapping patterns |
|
|
224
|
-
| **Total** | **50** | **100%** | All Versori production templates |
|
|
225
|
-
|
|
226
|
-
---
|
|
227
|
-
|
|
228
|
-
## Best Practices
|
|
229
|
-
|
|
230
|
-
### For External JSON Files
|
|
231
|
-
|
|
232
|
-
1. **Use descriptive filenames:**
|
|
233
|
-
```
|
|
234
|
-
✅ inventory.batch.json
|
|
235
|
-
✅ products.export.csv.json
|
|
236
|
-
✅ orders.import.xml.json
|
|
237
|
-
|
|
238
|
-
❌ mapping.json
|
|
239
|
-
❌ config.json
|
|
240
|
-
❌ data.json
|
|
241
|
-
```
|
|
242
|
-
|
|
243
|
-
2. **Include version and metadata:**
|
|
244
|
-
```json
|
|
245
|
-
{
|
|
246
|
-
"version": "1.0.0",
|
|
247
|
-
"description": "Inventory batch ingestion mapping",
|
|
248
|
-
"lastUpdated": "2025-10-31",
|
|
249
|
-
"fields": { ... }
|
|
250
|
-
}
|
|
251
|
-
```
|
|
252
|
-
|
|
253
|
-
3. **Use consistent structure:**
|
|
254
|
-
```json
|
|
255
|
-
{
|
|
256
|
-
"version": "1.0.0",
|
|
257
|
-
"fields": {
|
|
258
|
-
"fieldName": {
|
|
259
|
-
"source": "source_path",
|
|
260
|
-
"required": true|false,
|
|
261
|
-
"resolver": "sdk.resolverName",
|
|
262
|
-
"defaultValue": "value"
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
```
|
|
267
|
-
|
|
268
|
-
4. **Document custom resolvers:**
|
|
269
|
-
```json
|
|
270
|
-
{
|
|
271
|
-
"version": "1.0.0",
|
|
272
|
-
"customResolvers": [
|
|
273
|
-
"custom.calculateTax",
|
|
274
|
-
"custom.formatAddress"
|
|
275
|
-
],
|
|
276
|
-
"fields": { ... }
|
|
277
|
-
}
|
|
278
|
-
```
|
|
279
|
-
|
|
280
|
-
### For Inline Mappings
|
|
281
|
-
|
|
282
|
-
1. **Keep it simple (<10 fields):**
|
|
283
|
-
```typescript
|
|
284
|
-
// ✅ GOOD - Simple, readable
|
|
285
|
-
const mapper = new UniversalMapper({
|
|
286
|
-
fields: {
|
|
287
|
-
sku: { source: 'product_code' },
|
|
288
|
-
qty: { source: 'stock', resolver: 'sdk.parseInt' }
|
|
289
|
-
}
|
|
290
|
-
});
|
|
291
|
-
|
|
292
|
-
// ❌ BAD - Too complex for inline
|
|
293
|
-
const mapper = new UniversalMapper({
|
|
294
|
-
fields: {
|
|
295
|
-
// 50 fields here...
|
|
296
|
-
}
|
|
297
|
-
});
|
|
298
|
-
```
|
|
299
|
-
|
|
300
|
-
2. **Add comments for clarity:**
|
|
301
|
-
```typescript
|
|
302
|
-
const mapper = new UniversalMapper({
|
|
303
|
-
fields: {
|
|
304
|
-
// Primary identifier from source system
|
|
305
|
-
skuRef: { source: 'sku_id', required: true },
|
|
306
|
-
|
|
307
|
-
// Stock quantity (parse as integer)
|
|
308
|
-
qty: { source: 'quantity', resolver: 'sdk.parseInt' }
|
|
309
|
-
}
|
|
310
|
-
});
|
|
311
|
-
```
|
|
312
|
-
|
|
313
|
-
3. **Extract to variable for reusability:**
|
|
314
|
-
```typescript
|
|
315
|
-
// ✅ GOOD - Reusable within file
|
|
316
|
-
const inventoryFields = {
|
|
317
|
-
skuRef: { source: 'sku_id' },
|
|
318
|
-
qty: { source: 'quantity', resolver: 'sdk.parseInt' }
|
|
319
|
-
};
|
|
320
|
-
|
|
321
|
-
const mapper1 = new UniversalMapper({ fields: inventoryFields });
|
|
322
|
-
const mapper2 = new UniversalMapper({ fields: inventoryFields });
|
|
323
|
-
```
|
|
324
|
-
|
|
325
|
-
---
|
|
326
|
-
|
|
327
|
-
## Environment-Specific Configurations
|
|
328
|
-
|
|
329
|
-
### External JSON Pattern
|
|
330
|
-
|
|
331
|
-
**Directory structure:**
|
|
332
|
-
```
|
|
333
|
-
config/
|
|
334
|
-
├── dev/
|
|
335
|
-
│ ├── inventory.batch.json
|
|
336
|
-
│ └── products.export.json
|
|
337
|
-
├── staging/
|
|
338
|
-
│ ├── inventory.batch.json
|
|
339
|
-
│ └── products.export.json
|
|
340
|
-
└── prod/
|
|
341
|
-
├── inventory.batch.json
|
|
342
|
-
└── products.export.json
|
|
343
|
-
```
|
|
344
|
-
|
|
345
|
-
**Dynamic import:**
|
|
346
|
-
```typescript
|
|
347
|
-
import { activation } from '@versori/run';
|
|
348
|
-
|
|
349
|
-
// Load environment-specific config
|
|
350
|
-
const env = activation.environment || 'dev';
|
|
351
|
-
const mappingConfig = await import(`./config/${env}/inventory.batch.json`, {
|
|
352
|
-
with: { type: 'json' }
|
|
353
|
-
});
|
|
354
|
-
|
|
355
|
-
const mapper = new UniversalMapper(mappingConfig.default);
|
|
356
|
-
```
|
|
357
|
-
|
|
358
|
-
---
|
|
359
|
-
|
|
360
|
-
## Migration Guide
|
|
361
|
-
|
|
362
|
-
### Migrating from TypeScript Import to External JSON
|
|
363
|
-
|
|
364
|
-
**Step 1: Extract TypeScript config to JSON**
|
|
365
|
-
```typescript
|
|
366
|
-
// OLD: config/inventory-mapping.config.ts
|
|
367
|
-
export const inventoryMapping = {
|
|
368
|
-
version: '1.0.0',
|
|
369
|
-
fields: {
|
|
370
|
-
skuRef: { source: 'sku_id', required: true },
|
|
371
|
-
qty: { source: 'quantity', resolver: 'sdk.parseInt' }
|
|
372
|
-
}
|
|
373
|
-
};
|
|
374
|
-
```
|
|
375
|
-
|
|
376
|
-
**Step 2: Create JSON file**
|
|
377
|
-
```json
|
|
378
|
-
// NEW: config/inventory.batch.json
|
|
379
|
-
{
|
|
380
|
-
"version": "1.0.0",
|
|
381
|
-
"fields": {
|
|
382
|
-
"skuRef": { "source": "sku_id", "required": true },
|
|
383
|
-
"qty": { "source": "quantity", "resolver": "sdk.parseInt" }
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
```
|
|
387
|
-
|
|
388
|
-
**Step 3: Update import statement**
|
|
389
|
-
```typescript
|
|
390
|
-
// OLD
|
|
391
|
-
import { inventoryMapping } from './config/inventory-mapping.config';
|
|
392
|
-
const mapper = new UniversalMapper(inventoryMapping);
|
|
393
|
-
|
|
394
|
-
// NEW
|
|
395
|
-
import inventoryMapping from './config/inventory.batch.json' with { type: 'json' };
|
|
396
|
-
const mapper = new UniversalMapper(inventoryMapping);
|
|
397
|
-
```
|
|
398
|
-
|
|
399
|
-
**Step 4: Delete old TypeScript config file**
|
|
400
|
-
```bash
|
|
401
|
-
rm config/inventory-mapping.config.ts
|
|
402
|
-
```
|
|
403
|
-
|
|
404
|
-
---
|
|
405
|
-
|
|
406
|
-
## Common Pitfalls
|
|
407
|
-
|
|
408
|
-
### ❌ Pitfall 1: Using TypeScript for production configs
|
|
409
|
-
```typescript
|
|
410
|
-
// ❌ WRONG
|
|
411
|
-
import { config } from './inventory.config';
|
|
412
|
-
|
|
413
|
-
// ✅ CORRECT
|
|
414
|
-
import config from './inventory.batch.json' with { type: 'json' };
|
|
415
|
-
```
|
|
416
|
-
|
|
417
|
-
### ❌ Pitfall 2: Inline mappings with 50+ fields
|
|
418
|
-
```typescript
|
|
419
|
-
// ❌ WRONG - Too large for inline
|
|
420
|
-
const mapper = new UniversalMapper({
|
|
421
|
-
fields: {
|
|
422
|
-
field1: { ... },
|
|
423
|
-
field2: { ... },
|
|
424
|
-
// 48 more fields...
|
|
425
|
-
}
|
|
426
|
-
});
|
|
427
|
-
|
|
428
|
-
// ✅ CORRECT - Use external JSON
|
|
429
|
-
import mappingConfig from './config/large-mapping.json' with { type: 'json' };
|
|
430
|
-
const mapper = new UniversalMapper(mappingConfig);
|
|
431
|
-
```
|
|
432
|
-
|
|
433
|
-
### ❌ Pitfall 3: Missing 'with { type: 'json' }' clause
|
|
434
|
-
```typescript
|
|
435
|
-
// ❌ WRONG - TypeScript import
|
|
436
|
-
import mappingConfig from './config/mapping.json';
|
|
437
|
-
|
|
438
|
-
// ❌ WRONG - Old assert syntax
|
|
439
|
-
import mappingConfig from './config/mapping.json' assert { type: 'json' };
|
|
440
|
-
|
|
441
|
-
// ✅ CORRECT - Standard JSON import
|
|
442
|
-
import mappingConfig from './config/mapping.json' with { type: 'json' };
|
|
443
|
-
```
|
|
444
|
-
|
|
445
|
-
---
|
|
446
|
-
|
|
447
|
-
## Related Documentation
|
|
448
|
-
|
|
449
|
-
- [Universal Mapping Guide](mapping-readme.md) - Complete mapping patterns
|
|
450
|
-
- [SDK Resolvers](./resolvers/mapping-resolvers-readme.md) - Built-in field transformations
|
|
451
|
-
- [GraphQL Mutation Mapping](./graphql-mutation-mapping/graphql-mutation-mapping-readme.md) - XML/JSON → GraphQL
|
|
452
|
-
- [Template Loading Matrix](../../template-loading-matrix.md) - Template selection guide
|
|
453
|
-
|
|
454
|
-
---
|
|
455
|
-
|
|
456
|
-
## FAQ
|
|
457
|
-
|
|
458
|
-
**Q: Can I use inline mappings in production?**
|
|
459
|
-
A: Yes, for simple cases (<10 fields) or webhooks with dynamic logic. For larger configs, use external JSON.
|
|
460
|
-
|
|
461
|
-
**Q: Why not use TypeScript for type safety?**
|
|
462
|
-
A: External JSON files are easier for non-developers to maintain and support runtime configuration changes without code deployment.
|
|
463
|
-
|
|
464
|
-
**Q: What's the difference between `assert` and `with`?**
|
|
465
|
-
A: `assert { type: 'json' }` is older syntax. Use `with { type: 'json' }` for current JavaScript/TypeScript standards.
|
|
466
|
-
|
|
467
|
-
**Q: Can I have both inline and external mappings?**
|
|
468
|
-
A: Yes! Use external for large/reusable configs and inline for dynamic logic or simple examples.
|
|
469
|
-
|
|
470
|
-
**Q: How do I validate my JSON mapping file?**
|
|
471
|
-
A: Use the SDK's validation tools:
|
|
472
|
-
```bash
|
|
473
|
-
npx fc-connect validate-schema --mapping config/inventory.batch.json
|
|
474
|
-
```
|
|
475
|
-
|
|
476
|
-
---
|
|
477
|
-
|
|
478
|
-
**Last Updated:** 2025-10-31
|
|
479
|
-
**SDK Version:** ≥0.1.31
|
|
480
|
-
**Verified Against:** 50 production Versori templates
|
|
1
|
+
# Mapping Configuration Format Decision Tree
|
|
2
|
+
|
|
3
|
+
**FC Connect SDK - Choosing the Right Mapping Pattern**
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Quick Decision Tree
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
START: I need to configure field mappings
|
|
11
|
+
│
|
|
12
|
+
├─ Is this a tutorial, example, or proof-of-concept?
|
|
13
|
+
│ └─ YES → ✅ Use INLINE MAPPING (simple object)
|
|
14
|
+
│
|
|
15
|
+
├─ Is this a webhook with dynamic transformation logic?
|
|
16
|
+
│ └─ YES → ✅ Use INLINE MAPPING (programmatic)
|
|
17
|
+
│
|
|
18
|
+
├─ Is this a production template with <10 simple fields?
|
|
19
|
+
│ └─ YES → ✅ Use INLINE MAPPING (acceptable)
|
|
20
|
+
│
|
|
21
|
+
└─ Is this a production template with 10+ fields OR reusable config?
|
|
22
|
+
└─ YES → ✅ Use EXTERNAL JSON FILE
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Three Valid Patterns
|
|
28
|
+
|
|
29
|
+
### ✅ Pattern 1: External JSON File (Production Standard)
|
|
30
|
+
|
|
31
|
+
**When to use:**
|
|
32
|
+
- Production templates with 10+ fields
|
|
33
|
+
- Reusable configurations across multiple workflows
|
|
34
|
+
- Multi-environment deployments (dev, staging, prod)
|
|
35
|
+
- Complex mappings requiring maintenance
|
|
36
|
+
- Team collaboration (non-developers can edit JSON)
|
|
37
|
+
|
|
38
|
+
**Syntax:**
|
|
39
|
+
```typescript
|
|
40
|
+
import mappingConfig from './config/inventory.batch.json' with { type: 'json' };
|
|
41
|
+
|
|
42
|
+
const mapper = new UniversalMapper(mappingConfig);
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**File structure:**
|
|
46
|
+
```
|
|
47
|
+
src/
|
|
48
|
+
├── workflows/
|
|
49
|
+
│ └── inventory-ingestion.ts # Workflow code
|
|
50
|
+
└── config/
|
|
51
|
+
└── inventory.batch.json # Mapping configuration
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Example JSON:**
|
|
55
|
+
```json
|
|
56
|
+
{
|
|
57
|
+
"version": "1.0.0",
|
|
58
|
+
"fields": {
|
|
59
|
+
"skuRef": {
|
|
60
|
+
"source": "sku_id",
|
|
61
|
+
"required": true
|
|
62
|
+
},
|
|
63
|
+
"qty": {
|
|
64
|
+
"source": "quantity",
|
|
65
|
+
"resolver": "sdk.parseInt"
|
|
66
|
+
},
|
|
67
|
+
"expectedOn": {
|
|
68
|
+
"source": "expected_date",
|
|
69
|
+
"resolver": "sdk.formatDate"
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**Benefits:**
|
|
76
|
+
- ✅ Clean separation of code and configuration
|
|
77
|
+
- ✅ Easy to maintain and update without code changes
|
|
78
|
+
- ✅ Non-developers can modify mappings
|
|
79
|
+
- ✅ Supports environment-specific configs
|
|
80
|
+
- ✅ Better for version control (clear diffs)
|
|
81
|
+
|
|
82
|
+
**Drawbacks:**
|
|
83
|
+
- ❌ Requires separate file
|
|
84
|
+
- ❌ No TypeScript validation at compile time
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
### ✅ Pattern 2: Inline Mapping (Examples & Simple Cases)
|
|
89
|
+
|
|
90
|
+
**When to use:**
|
|
91
|
+
- Documentation examples and tutorials
|
|
92
|
+
- Proof-of-concepts and quick prototypes
|
|
93
|
+
- Simple mappings with <10 fields
|
|
94
|
+
- Webhooks with dynamic transformation logic
|
|
95
|
+
- One-off scripts or tests
|
|
96
|
+
|
|
97
|
+
**Syntax:**
|
|
98
|
+
```typescript
|
|
99
|
+
const mapper = new UniversalMapper({
|
|
100
|
+
version: '1.0.0',
|
|
101
|
+
fields: {
|
|
102
|
+
skuRef: { source: 'sku_id', required: true },
|
|
103
|
+
qty: { source: 'quantity', resolver: 'sdk.parseInt' },
|
|
104
|
+
expectedOn: { source: 'expected_date', resolver: 'sdk.formatDate' }
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**Benefits:**
|
|
110
|
+
- ✅ Everything in one file (self-contained)
|
|
111
|
+
- ✅ Quick to write and iterate
|
|
112
|
+
- ✅ Good for learning and examples
|
|
113
|
+
- ✅ TypeScript type checking for structure
|
|
114
|
+
|
|
115
|
+
**Drawbacks:**
|
|
116
|
+
- ❌ Harder to maintain for large configs
|
|
117
|
+
- ❌ Code changes required for mapping updates
|
|
118
|
+
- ❌ Mixes configuration with business logic
|
|
119
|
+
|
|
120
|
+
**Valid use cases:**
|
|
121
|
+
1. **Documentation/Tutorials**: Teaching SDK usage
|
|
122
|
+
```typescript
|
|
123
|
+
// Example: Quick CSV ingestion tutorial
|
|
124
|
+
const mapper = new UniversalMapper({
|
|
125
|
+
fields: {
|
|
126
|
+
sku: { source: 'product_code' },
|
|
127
|
+
qty: { source: 'stock_level', resolver: 'sdk.parseInt' }
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
2. **Dynamic Webhooks**: Logic-based transformations
|
|
133
|
+
```typescript
|
|
134
|
+
// Example: Webhook with conditional logic
|
|
135
|
+
export const orderWebhook = webhook('order-created', async (ctx) => {
|
|
136
|
+
const { data } = ctx;
|
|
137
|
+
|
|
138
|
+
// Dynamic mapping based on order type
|
|
139
|
+
const fields = data.type === 'WHOLESALE'
|
|
140
|
+
? { discount: { source: 'wholesale_discount' } }
|
|
141
|
+
: { discount: { source: 'retail_discount' } };
|
|
142
|
+
|
|
143
|
+
const mapper = new UniversalMapper({ fields });
|
|
144
|
+
return mapper.map(data);
|
|
145
|
+
});
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
3. **Simple One-Off Scripts**: Quick data transformations
|
|
149
|
+
```typescript
|
|
150
|
+
// Example: One-time data migration
|
|
151
|
+
const mapper = new UniversalMapper({
|
|
152
|
+
fields: {
|
|
153
|
+
id: { source: 'old_id' },
|
|
154
|
+
name: { source: 'product_name' }
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
### ❌ Pattern 3: TypeScript Config Import (Non-Standard)
|
|
162
|
+
|
|
163
|
+
**Status:** ⚠️ **NOT RECOMMENDED** - Older pattern being phased out
|
|
164
|
+
|
|
165
|
+
**What it looks like:**
|
|
166
|
+
```typescript
|
|
167
|
+
// ❌ WRONG - TypeScript module import (no 'with' clause)
|
|
168
|
+
import { inventoryMapping } from './config/inventory-mapping.config';
|
|
169
|
+
|
|
170
|
+
// ❌ WRONG - Old assert syntax
|
|
171
|
+
import mappingConfig from './config/inventory.json' assert { type: 'json' };
|
|
172
|
+
|
|
173
|
+
// ❌ WRONG - TypeScript file extension
|
|
174
|
+
import mappingConfig from './config/inventory.config.ts';
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
**Why not to use:**
|
|
178
|
+
- ❌ Not a standard JavaScript pattern
|
|
179
|
+
- ❌ Inconsistent with SDK conventions
|
|
180
|
+
- ❌ Requires TypeScript transpilation (breaks Deno)
|
|
181
|
+
- ❌ Harder for non-developers to maintain
|
|
182
|
+
- ❌ Mixes configuration with code structure
|
|
183
|
+
|
|
184
|
+
**Migration path:**
|
|
185
|
+
```typescript
|
|
186
|
+
// BEFORE (TypeScript config import)
|
|
187
|
+
import { inventoryMapping } from './config/inventory-mapping.config';
|
|
188
|
+
const mapper = new UniversalMapper(inventoryMapping);
|
|
189
|
+
|
|
190
|
+
// AFTER (External JSON)
|
|
191
|
+
import inventoryMapping from './config/inventory.batch.json' with { type: 'json' };
|
|
192
|
+
const mapper = new UniversalMapper(inventoryMapping);
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## Decision Matrix
|
|
198
|
+
|
|
199
|
+
| Scenario | Recommended Pattern | Reasoning |
|
|
200
|
+
|----------|-------------------|-----------|
|
|
201
|
+
| **Production inventory ingestion** | External JSON | 50+ fields, reusable across environments |
|
|
202
|
+
| **Production order extraction** | External JSON | Complex nested structure, team maintenance |
|
|
203
|
+
| **Tutorial: "Your First Ingestion"** | Inline | Self-contained example, <10 fields |
|
|
204
|
+
| **Webhook: Order created event** | Inline | Dynamic logic based on payload |
|
|
205
|
+
| **Prototype: Testing new data source** | Inline | Quick iteration, proof-of-concept |
|
|
206
|
+
| **Multi-tenant connector** | External JSON | Environment-specific configs (dev/prod) |
|
|
207
|
+
| **GraphQL mutation template** | External JSON | Reusable across multiple mutations |
|
|
208
|
+
| **Test fixture generation** | Inline | Test-specific, isolated data |
|
|
209
|
+
| **Documentation pattern guide** | Inline | Teaching concept, self-contained |
|
|
210
|
+
| **Enterprise production workflow** | External JSON | Governance, change management, auditing |
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
## Template Categories Analysis
|
|
215
|
+
|
|
216
|
+
**Verified Statistics (2025-10-31):**
|
|
217
|
+
|
|
218
|
+
| Pattern | Count | Percentage | Primary Use |
|
|
219
|
+
|---------|-------|------------|-------------|
|
|
220
|
+
| ✅ External JSON | 20 | 40.0% | Production ingestion/extraction |
|
|
221
|
+
| ⚠️ TypeScript Import | 7 | 14.0% | Older approach (being migrated) |
|
|
222
|
+
| ✅ Inline Mapping | 17 | 34.0% | Examples, webhooks, simple cases |
|
|
223
|
+
| ℹ️ No Mapping | 6 | 12.0% | Architecture guides, non-mapping patterns |
|
|
224
|
+
| **Total** | **50** | **100%** | All Versori production templates |
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## Best Practices
|
|
229
|
+
|
|
230
|
+
### For External JSON Files
|
|
231
|
+
|
|
232
|
+
1. **Use descriptive filenames:**
|
|
233
|
+
```
|
|
234
|
+
✅ inventory.batch.json
|
|
235
|
+
✅ products.export.csv.json
|
|
236
|
+
✅ orders.import.xml.json
|
|
237
|
+
|
|
238
|
+
❌ mapping.json
|
|
239
|
+
❌ config.json
|
|
240
|
+
❌ data.json
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
2. **Include version and metadata:**
|
|
244
|
+
```json
|
|
245
|
+
{
|
|
246
|
+
"version": "1.0.0",
|
|
247
|
+
"description": "Inventory batch ingestion mapping",
|
|
248
|
+
"lastUpdated": "2025-10-31",
|
|
249
|
+
"fields": { ... }
|
|
250
|
+
}
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
3. **Use consistent structure:**
|
|
254
|
+
```json
|
|
255
|
+
{
|
|
256
|
+
"version": "1.0.0",
|
|
257
|
+
"fields": {
|
|
258
|
+
"fieldName": {
|
|
259
|
+
"source": "source_path",
|
|
260
|
+
"required": true|false,
|
|
261
|
+
"resolver": "sdk.resolverName",
|
|
262
|
+
"defaultValue": "value"
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
4. **Document custom resolvers:**
|
|
269
|
+
```json
|
|
270
|
+
{
|
|
271
|
+
"version": "1.0.0",
|
|
272
|
+
"customResolvers": [
|
|
273
|
+
"custom.calculateTax",
|
|
274
|
+
"custom.formatAddress"
|
|
275
|
+
],
|
|
276
|
+
"fields": { ... }
|
|
277
|
+
}
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
### For Inline Mappings
|
|
281
|
+
|
|
282
|
+
1. **Keep it simple (<10 fields):**
|
|
283
|
+
```typescript
|
|
284
|
+
// ✅ GOOD - Simple, readable
|
|
285
|
+
const mapper = new UniversalMapper({
|
|
286
|
+
fields: {
|
|
287
|
+
sku: { source: 'product_code' },
|
|
288
|
+
qty: { source: 'stock', resolver: 'sdk.parseInt' }
|
|
289
|
+
}
|
|
290
|
+
});
|
|
291
|
+
|
|
292
|
+
// ❌ BAD - Too complex for inline
|
|
293
|
+
const mapper = new UniversalMapper({
|
|
294
|
+
fields: {
|
|
295
|
+
// 50 fields here...
|
|
296
|
+
}
|
|
297
|
+
});
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
2. **Add comments for clarity:**
|
|
301
|
+
```typescript
|
|
302
|
+
const mapper = new UniversalMapper({
|
|
303
|
+
fields: {
|
|
304
|
+
// Primary identifier from source system
|
|
305
|
+
skuRef: { source: 'sku_id', required: true },
|
|
306
|
+
|
|
307
|
+
// Stock quantity (parse as integer)
|
|
308
|
+
qty: { source: 'quantity', resolver: 'sdk.parseInt' }
|
|
309
|
+
}
|
|
310
|
+
});
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
3. **Extract to variable for reusability:**
|
|
314
|
+
```typescript
|
|
315
|
+
// ✅ GOOD - Reusable within file
|
|
316
|
+
const inventoryFields = {
|
|
317
|
+
skuRef: { source: 'sku_id' },
|
|
318
|
+
qty: { source: 'quantity', resolver: 'sdk.parseInt' }
|
|
319
|
+
};
|
|
320
|
+
|
|
321
|
+
const mapper1 = new UniversalMapper({ fields: inventoryFields });
|
|
322
|
+
const mapper2 = new UniversalMapper({ fields: inventoryFields });
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
---
|
|
326
|
+
|
|
327
|
+
## Environment-Specific Configurations
|
|
328
|
+
|
|
329
|
+
### External JSON Pattern
|
|
330
|
+
|
|
331
|
+
**Directory structure:**
|
|
332
|
+
```
|
|
333
|
+
config/
|
|
334
|
+
├── dev/
|
|
335
|
+
│ ├── inventory.batch.json
|
|
336
|
+
│ └── products.export.json
|
|
337
|
+
├── staging/
|
|
338
|
+
│ ├── inventory.batch.json
|
|
339
|
+
│ └── products.export.json
|
|
340
|
+
└── prod/
|
|
341
|
+
├── inventory.batch.json
|
|
342
|
+
└── products.export.json
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
**Dynamic import:**
|
|
346
|
+
```typescript
|
|
347
|
+
import { activation } from '@versori/run';
|
|
348
|
+
|
|
349
|
+
// Load environment-specific config
|
|
350
|
+
const env = activation.environment || 'dev';
|
|
351
|
+
const mappingConfig = await import(`./config/${env}/inventory.batch.json`, {
|
|
352
|
+
with: { type: 'json' }
|
|
353
|
+
});
|
|
354
|
+
|
|
355
|
+
const mapper = new UniversalMapper(mappingConfig.default);
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
---
|
|
359
|
+
|
|
360
|
+
## Migration Guide
|
|
361
|
+
|
|
362
|
+
### Migrating from TypeScript Import to External JSON
|
|
363
|
+
|
|
364
|
+
**Step 1: Extract TypeScript config to JSON**
|
|
365
|
+
```typescript
|
|
366
|
+
// OLD: config/inventory-mapping.config.ts
|
|
367
|
+
export const inventoryMapping = {
|
|
368
|
+
version: '1.0.0',
|
|
369
|
+
fields: {
|
|
370
|
+
skuRef: { source: 'sku_id', required: true },
|
|
371
|
+
qty: { source: 'quantity', resolver: 'sdk.parseInt' }
|
|
372
|
+
}
|
|
373
|
+
};
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
**Step 2: Create JSON file**
|
|
377
|
+
```json
|
|
378
|
+
// NEW: config/inventory.batch.json
|
|
379
|
+
{
|
|
380
|
+
"version": "1.0.0",
|
|
381
|
+
"fields": {
|
|
382
|
+
"skuRef": { "source": "sku_id", "required": true },
|
|
383
|
+
"qty": { "source": "quantity", "resolver": "sdk.parseInt" }
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
**Step 3: Update import statement**
|
|
389
|
+
```typescript
|
|
390
|
+
// OLD
|
|
391
|
+
import { inventoryMapping } from './config/inventory-mapping.config';
|
|
392
|
+
const mapper = new UniversalMapper(inventoryMapping);
|
|
393
|
+
|
|
394
|
+
// NEW
|
|
395
|
+
import inventoryMapping from './config/inventory.batch.json' with { type: 'json' };
|
|
396
|
+
const mapper = new UniversalMapper(inventoryMapping);
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
**Step 4: Delete old TypeScript config file**
|
|
400
|
+
```bash
|
|
401
|
+
rm config/inventory-mapping.config.ts
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
---
|
|
405
|
+
|
|
406
|
+
## Common Pitfalls
|
|
407
|
+
|
|
408
|
+
### ❌ Pitfall 1: Using TypeScript for production configs
|
|
409
|
+
```typescript
|
|
410
|
+
// ❌ WRONG
|
|
411
|
+
import { config } from './inventory.config';
|
|
412
|
+
|
|
413
|
+
// ✅ CORRECT
|
|
414
|
+
import config from './inventory.batch.json' with { type: 'json' };
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
### ❌ Pitfall 2: Inline mappings with 50+ fields
|
|
418
|
+
```typescript
|
|
419
|
+
// ❌ WRONG - Too large for inline
|
|
420
|
+
const mapper = new UniversalMapper({
|
|
421
|
+
fields: {
|
|
422
|
+
field1: { ... },
|
|
423
|
+
field2: { ... },
|
|
424
|
+
// 48 more fields...
|
|
425
|
+
}
|
|
426
|
+
});
|
|
427
|
+
|
|
428
|
+
// ✅ CORRECT - Use external JSON
|
|
429
|
+
import mappingConfig from './config/large-mapping.json' with { type: 'json' };
|
|
430
|
+
const mapper = new UniversalMapper(mappingConfig);
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
### ❌ Pitfall 3: Missing 'with { type: 'json' }' clause
|
|
434
|
+
```typescript
|
|
435
|
+
// ❌ WRONG - TypeScript import
|
|
436
|
+
import mappingConfig from './config/mapping.json';
|
|
437
|
+
|
|
438
|
+
// ❌ WRONG - Old assert syntax
|
|
439
|
+
import mappingConfig from './config/mapping.json' assert { type: 'json' };
|
|
440
|
+
|
|
441
|
+
// ✅ CORRECT - Standard JSON import
|
|
442
|
+
import mappingConfig from './config/mapping.json' with { type: 'json' };
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
---
|
|
446
|
+
|
|
447
|
+
## Related Documentation
|
|
448
|
+
|
|
449
|
+
- [Universal Mapping Guide](mapping-readme.md) - Complete mapping patterns
|
|
450
|
+
- [SDK Resolvers](./resolvers/mapping-resolvers-readme.md) - Built-in field transformations
|
|
451
|
+
- [GraphQL Mutation Mapping](./graphql-mutation-mapping/graphql-mutation-mapping-readme.md) - XML/JSON → GraphQL
|
|
452
|
+
- [Template Loading Matrix](../../template-loading-matrix.md) - Template selection guide
|
|
453
|
+
|
|
454
|
+
---
|
|
455
|
+
|
|
456
|
+
## FAQ
|
|
457
|
+
|
|
458
|
+
**Q: Can I use inline mappings in production?**
|
|
459
|
+
A: Yes, for simple cases (<10 fields) or webhooks with dynamic logic. For larger configs, use external JSON.
|
|
460
|
+
|
|
461
|
+
**Q: Why not use TypeScript for type safety?**
|
|
462
|
+
A: External JSON files are easier for non-developers to maintain and support runtime configuration changes without code deployment.
|
|
463
|
+
|
|
464
|
+
**Q: What's the difference between `assert` and `with`?**
|
|
465
|
+
A: `assert { type: 'json' }` is older syntax. Use `with { type: 'json' }` for current JavaScript/TypeScript standards.
|
|
466
|
+
|
|
467
|
+
**Q: Can I have both inline and external mappings?**
|
|
468
|
+
A: Yes! Use external for large/reusable configs and inline for dynamic logic or simple examples.
|
|
469
|
+
|
|
470
|
+
**Q: How do I validate my JSON mapping file?**
|
|
471
|
+
A: Use the SDK's validation tools:
|
|
472
|
+
```bash
|
|
473
|
+
npx fc-connect validate-schema --mapping config/inventory.batch.json
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
---
|
|
477
|
+
|
|
478
|
+
**Last Updated:** 2025-10-31
|
|
479
|
+
**SDK Version:** ≥0.1.31
|
|
480
|
+
**Verified Against:** 50 production Versori templates
|