@fluentcommerce/fc-connect-sdk 0.1.54 → 0.1.55
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/dist/cjs/clients/fluent-client.js +13 -6
- package/dist/cjs/utils/pagination-helpers.js +38 -2
- package/dist/cjs/versori/fluent-versori-client.js +11 -5
- package/dist/esm/clients/fluent-client.js +13 -6
- package/dist/esm/utils/pagination-helpers.js +38 -2
- package/dist/esm/versori/fluent-versori-client.js +11 -5
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/tsconfig.types.tsbuildinfo +1 -1
- package/docs/00-START-HERE/EXPORT-VALIDATION.md +158 -158
- package/docs/00-START-HERE/cli-analyze-source-structure-guide.md +655 -655
- package/docs/00-START-HERE/cli-documentation-index.md +202 -202
- package/docs/00-START-HERE/cli-quick-reference.md +252 -252
- package/docs/00-START-HERE/decision-tree.md +552 -552
- package/docs/00-START-HERE/getting-started.md +1070 -1070
- package/docs/00-START-HERE/mapper-quick-decision-guide.md +235 -235
- package/docs/00-START-HERE/readme.md +237 -237
- package/docs/00-START-HERE/retailerid-configuration.md +404 -404
- package/docs/00-START-HERE/sdk-philosophy.md +794 -794
- package/docs/00-START-HERE/troubleshooting-quick-reference.md +1086 -1086
- package/docs/01-TEMPLATES/faq.md +686 -686
- package/docs/01-TEMPLATES/patterns/pattern-templates-guide.md +68 -68
- package/docs/01-TEMPLATES/patterns/patterns-csv-schema-validation-and-rejection-report.md +233 -233
- package/docs/01-TEMPLATES/patterns/patterns-custom-resolvers.md +407 -407
- package/docs/01-TEMPLATES/patterns/patterns-error-handling-retry.md +511 -511
- package/docs/01-TEMPLATES/patterns/patterns-field-mapping-universal.md +701 -701
- package/docs/01-TEMPLATES/patterns/patterns-large-file-splitting.md +1430 -1430
- package/docs/01-TEMPLATES/patterns/patterns-master-data-etl.md +2399 -2399
- package/docs/01-TEMPLATES/patterns/patterns-pagination-streaming.md +447 -447
- package/docs/01-TEMPLATES/patterns/patterns-state-duplicate-prevention.md +385 -385
- package/docs/01-TEMPLATES/readme.md +957 -957
- package/docs/01-TEMPLATES/standalone/standalone-asn-inbound-processing.md +1209 -1209
- package/docs/01-TEMPLATES/standalone/standalone-graphql-query-export.md +1140 -1140
- package/docs/01-TEMPLATES/standalone/standalone-graphql-to-parquet-partitioned-s3.md +432 -432
- package/docs/01-TEMPLATES/standalone/standalone-multi-channel-inventory-sync.md +1185 -1185
- package/docs/01-TEMPLATES/standalone/standalone-multi-source-aggregation.md +1462 -1462
- package/docs/01-TEMPLATES/standalone/standalone-s3-csv-batch-api.md +1390 -1390
- package/docs/01-TEMPLATES/standalone/standalone-s3-csv-inventory-to-batch.md +330 -330
- package/docs/01-TEMPLATES/standalone/standalone-scripts-guide.md +87 -87
- package/docs/01-TEMPLATES/standalone/standalone-sftp-xml-graphql.md +1444 -1444
- package/docs/01-TEMPLATES/standalone/standalone-webhook-payload-processing.md +688 -688
- package/docs/01-TEMPLATES/versori/business-examples/business-examples-dropship-order-routing.md +193 -193
- package/docs/01-TEMPLATES/versori/business-examples/business-examples-graphql-parquet-extraction.md +518 -518
- package/docs/01-TEMPLATES/versori/business-examples/business-examples-inter-location-transfers.md +2162 -2162
- package/docs/01-TEMPLATES/versori/business-examples/business-examples-pre-order-allocation.md +2226 -2226
- package/docs/01-TEMPLATES/versori/business-examples/business-scenarios-guide.md +87 -87
- package/docs/01-TEMPLATES/versori/patterns/versori-patterns-connection-validation-pattern.md +656 -656
- package/docs/01-TEMPLATES/versori/patterns/versori-patterns-dual-workflow-connector.md +835 -835
- package/docs/01-TEMPLATES/versori/patterns/versori-patterns-guide.md +108 -108
- package/docs/01-TEMPLATES/versori/patterns/versori-patterns-kv-state-management.md +1533 -1533
- package/docs/01-TEMPLATES/versori/patterns/versori-patterns-xml-response-patterns.md +1160 -1160
- package/docs/01-TEMPLATES/versori/versori-platform-guide.md +201 -201
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-asn-purchase-order.md +1906 -1906
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-dropship-routing.md +1074 -1074
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-flash-sale-reserve.md +1395 -1395
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-generic-xml-order.md +888 -888
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-payment-gateway-integration.md +2478 -2478
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-rma-returns-comprehensive.md +2240 -2240
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-xml-order-ingestion.md +2029 -2029
- package/docs/01-TEMPLATES/versori/webhooks/webhook-templates-guide.md +140 -140
- package/docs/01-TEMPLATES/versori/workflows/_examples/sample-data/inventory-mapping.json +20 -20
- package/docs/01-TEMPLATES/versori/workflows/_examples/sample-data/products_2025-01-22.csv +11 -11
- package/docs/01-TEMPLATES/versori/workflows/_examples/sample-data/sample-data-guide.md +34 -34
- package/docs/01-TEMPLATES/versori/workflows/_examples/workflow-examples-guide.md +36 -36
- package/docs/01-TEMPLATES/versori/workflows/extraction/extraction-modes-guide.md +1038 -1038
- package/docs/01-TEMPLATES/versori/workflows/extraction/extraction-workflows-guide.md +138 -138
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/graphql-extraction-guide.md +63 -63
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-fulfillments-to-sftp-csv.md +2062 -2062
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-fulfillments-to-sftp-xml.md +2294 -2294
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-inventory-positions-to-s3-csv.md +2461 -2461
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-inventory-positions-to-sftp-xml.md +2529 -2529
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-inventory-quantities-to-s3-csv.md +2464 -2464
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-inventory-quantities-to-s3-json.md +1959 -1959
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-orders-to-s3-csv.md +1953 -1953
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-orders-to-sftp-xml.md +2541 -2541
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-products-to-s3-json.md +2384 -2384
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-products-to-sftp-xml.md +2445 -2445
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-virtual-positions-to-s3-csv.md +2355 -2355
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-virtual-positions-to-s3-json.md +2042 -2042
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-virtual-positions-to-sftp-xml.md +2726 -2726
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/batch-api-guide.md +206 -206
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-cycle-count-reconciliation.md +2030 -2030
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-multi-channel-inventory-sync.md +1882 -1882
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-s3-csv-inventory-batch.md +2827 -2827
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-s3-json-inventory-batch.md +1952 -1952
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-s3-xml-inventory-batch.md +3289 -3289
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-sftp-csv-inventory-batch.md +3064 -3064
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-sftp-json-inventory-batch.md +3238 -3238
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-sftp-xml-inventory-batch.md +2977 -2977
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/event-api-guide.md +321 -321
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-payload-json-order-cancel-event.md +959 -959
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-payload-xml-order-cancel-event.md +1170 -1170
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-s3-csv-product-event.md +2312 -2312
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-s3-json-product-event.md +2999 -2999
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-s3-parquet-product-event.md +2836 -2836
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-s3-xml-product-event.md +2395 -2395
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-sftp-csv-product-event.md +2295 -2295
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-sftp-json-product-event.md +2602 -2602
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-sftp-parquet-product-event.md +2589 -2589
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-sftp-xml-product-event.md +3578 -3578
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/graphql-mutations-guide.md +93 -93
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-payload-json-order-update-graphql.md +1260 -1260
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-payload-xml-order-update-graphql.md +1472 -1472
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-csv-control-graphql.md +2417 -2417
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-csv-location-graphql.md +2811 -2811
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-csv-price-graphql.md +2619 -2619
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-json-location-graphql.md +2807 -2807
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-xml-location-graphql.md +2373 -2373
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-sftp-csv-control-graphql.md +2740 -2740
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-sftp-csv-location-graphql.md +2760 -2760
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-sftp-json-location-graphql.md +1710 -1710
- package/docs/01-TEMPLATES/versori/workflows/ingestion/ingestion-workflows-guide.md +136 -136
- package/docs/01-TEMPLATES/versori/workflows/rubix-webhooks/rubix-webhooks-guide.md +520 -520
- package/docs/01-TEMPLATES/versori/workflows/rubix-webhooks/template-webhook-rubix-fulfilment-to-sftp-xml-inline.md +1418 -1418
- package/docs/01-TEMPLATES/versori/workflows/rubix-webhooks/template-webhook-rubix-fulfilment-to-sftp-xml-universal-mapper.md +1785 -1785
- package/docs/01-TEMPLATES/versori/workflows/rubix-webhooks/template-webhook-rubix-order-attribute-update.md +824 -824
- package/docs/01-TEMPLATES/versori/workflows/workflows-overview-guide.md +646 -646
- package/docs/02-CORE-GUIDES/advanced-services/advanced-services-batch-archival.md +724 -724
- package/docs/02-CORE-GUIDES/advanced-services/advanced-services-job-tracker.md +627 -627
- package/docs/02-CORE-GUIDES/advanced-services/advanced-services-partial-batch-recovery.md +561 -561
- package/docs/02-CORE-GUIDES/advanced-services/advanced-services-quick-reference.md +367 -367
- package/docs/02-CORE-GUIDES/advanced-services/advanced-services-readme.md +407 -407
- package/docs/02-CORE-GUIDES/advanced-services/readme.md +49 -49
- package/docs/02-CORE-GUIDES/api-reference/api-reference-quick-reference.md +548 -548
- package/docs/02-CORE-GUIDES/api-reference/event-api-input-output-reference.md +702 -1171
- package/docs/02-CORE-GUIDES/api-reference/examples/client-initialization.ts +286 -286
- package/docs/02-CORE-GUIDES/api-reference/graphql-error-classification.md +337 -337
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-01-client-api.md +399 -520
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-03-authentication.md +199 -199
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-04-graphql-mapping.md +925 -925
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-05-services.md +1198 -1198
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-06-data-sources.md +1083 -1083
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-07-parsers.md +1097 -1097
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-08-pagination.md +513 -513
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-08-types.md +545 -597
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-09-error-handling.md +527 -527
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-09-webhook-validation.md +514 -514
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-10-extraction.md +557 -557
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-10-utilities.md +412 -412
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-11-cli-tools.md +423 -423
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-11-error-handling.md +716 -716
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-12-analyze-source-structure.md +518 -518
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-12-partial-responses.md +212 -212
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-12-testing.md +300 -300
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-13-resolver-builder.md +322 -322
- package/docs/02-CORE-GUIDES/api-reference/readme.md +279 -279
- package/docs/02-CORE-GUIDES/auto-pagination/auto-pagination-quick-reference.md +351 -351
- package/docs/02-CORE-GUIDES/auto-pagination/auto-pagination-readme.md +277 -277
- package/docs/02-CORE-GUIDES/auto-pagination/examples/auto-pagination-readme.md +178 -178
- package/docs/02-CORE-GUIDES/auto-pagination/examples/common-patterns.ts +351 -351
- package/docs/02-CORE-GUIDES/auto-pagination/examples/paginate-products.ts +384 -384
- package/docs/02-CORE-GUIDES/auto-pagination/examples/paginate-virtual-positions.ts +308 -308
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-01-foundations.md +470 -470
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-02-quick-start.md +713 -713
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-03-configuration.md +754 -754
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-04-advanced-patterns.md +732 -732
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-05-sdk-integration.md +847 -847
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-06-troubleshooting.md +359 -359
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-07-api-reference.md +462 -462
- package/docs/02-CORE-GUIDES/auto-pagination/readme.md +54 -54
- package/docs/02-CORE-GUIDES/data-sources/data-sources-file-operations-error-handling.md +1487 -1487
- package/docs/02-CORE-GUIDES/data-sources/data-sources-quick-reference.md +836 -836
- package/docs/02-CORE-GUIDES/data-sources/data-sources-readme.md +276 -276
- package/docs/02-CORE-GUIDES/data-sources/data-sources-sftp-credential-access-security.md +553 -553
- package/docs/02-CORE-GUIDES/data-sources/examples/common-patterns.ts +409 -409
- package/docs/02-CORE-GUIDES/data-sources/examples/data-sources-readme.md +178 -178
- package/docs/02-CORE-GUIDES/data-sources/examples/s3-operations.ts +308 -308
- package/docs/02-CORE-GUIDES/data-sources/examples/sftp-operations.ts +371 -371
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-01-foundations.md +735 -735
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-02-s3-operations.md +1302 -1302
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-03-sftp-operations.md +1379 -1379
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-04-file-patterns.md +941 -941
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-05-advanced-topics.md +813 -813
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-06-integration-patterns.md +486 -486
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-07-troubleshooting.md +387 -387
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-08-api-reference.md +417 -417
- package/docs/02-CORE-GUIDES/data-sources/readme.md +77 -77
- package/docs/02-CORE-GUIDES/error-handling-guide.md +936 -936
- package/docs/02-CORE-GUIDES/extraction/examples/02-core-guides-extraction-readme.md +116 -116
- package/docs/02-CORE-GUIDES/extraction/examples/common-patterns.ts +428 -428
- package/docs/02-CORE-GUIDES/extraction/examples/extract-inventory-basic.ts +187 -187
- package/docs/02-CORE-GUIDES/extraction/extraction-quick-reference.md +596 -596
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-01-foundations.md +514 -514
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-02-basic-extraction.md +823 -823
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-03-parquet-processing.md +507 -507
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-04-data-enrichment.md +546 -546
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-05-transformation.md +494 -494
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-06-export-formats.md +458 -458
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-06-performance.md +138 -138
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-07-api-reference.md +148 -148
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-07-optimization.md +692 -692
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-08-extraction-orchestrator.md +1008 -1008
- package/docs/02-CORE-GUIDES/extraction/readme.md +151 -151
- package/docs/02-CORE-GUIDES/ingestion/examples/_simple-kv-store.ts +40 -40
- package/docs/02-CORE-GUIDES/ingestion/examples/error-recovery.ts +728 -728
- package/docs/02-CORE-GUIDES/ingestion/examples/event-driven.ts +501 -501
- package/docs/02-CORE-GUIDES/ingestion/examples/local-file-ingestion.ts +88 -88
- package/docs/02-CORE-GUIDES/ingestion/examples/parquet-ingestion.ts +117 -117
- package/docs/02-CORE-GUIDES/ingestion/examples/performance-optimized.ts +647 -647
- package/docs/02-CORE-GUIDES/ingestion/examples/s3-csv-ingestion.ts +169 -169
- package/docs/02-CORE-GUIDES/ingestion/examples/sftp-csv-ingestion.ts +134 -134
- package/docs/02-CORE-GUIDES/ingestion/ingestion-quick-reference.md +546 -546
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-01-introduction.md +626 -626
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-02-quick-start.md +658 -658
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-03-data-sources.md +1052 -1052
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-04-field-mapping.md +763 -763
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-05-advanced-parsers.md +676 -676
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-06-batch-api.md +1295 -1295
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-07-api-reference.md +138 -138
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-07-state-management.md +1037 -1037
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-08-performance-optimization.md +1349 -1349
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-09-best-practices.md +1893 -1893
- package/docs/02-CORE-GUIDES/ingestion/readme.md +160 -160
- package/docs/02-CORE-GUIDES/logging-guide.md +585 -585
- package/docs/02-CORE-GUIDES/mapping/error-handling-patterns.md +401 -401
- package/docs/02-CORE-GUIDES/mapping/examples/02-core-guides-mapping-readme.md +128 -128
- package/docs/02-CORE-GUIDES/mapping/examples/common-patterns.ts +273 -273
- package/docs/02-CORE-GUIDES/mapping/examples/csv-location-ingestion.json +36 -36
- package/docs/02-CORE-GUIDES/mapping/examples/csv-mapping.ts +242 -242
- package/docs/02-CORE-GUIDES/mapping/examples/graphql-to-parquet-extraction.json +36 -36
- package/docs/02-CORE-GUIDES/mapping/examples/json-mapping.ts +213 -213
- package/docs/02-CORE-GUIDES/mapping/examples/json-product-to-mutation.json +48 -48
- package/docs/02-CORE-GUIDES/mapping/examples/xml-mapping.ts +291 -291
- package/docs/02-CORE-GUIDES/mapping/examples/xml-order-to-mutation.json +45 -45
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/graphql-mutation-mapping-quick-reference.md +463 -463
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/graphql-mutation-mapping-readme.md +227 -227
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-01-introduction.md +222 -222
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-02-quick-start.md +351 -351
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-03-schema-validation.md +569 -569
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-04-mapping-patterns.md +471 -471
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-05-configuration-reference.md +611 -611
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-06-advanced-xpath.md +148 -148
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-06-path-syntax.md +464 -464
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-07-api-reference.md +94 -94
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-07-array-handling.md +307 -307
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-08-custom-resolvers.md +544 -544
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-09-advanced-patterns.md +427 -427
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-10-hooks-and-variables.md +336 -336
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-11-error-handling.md +488 -488
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-12-arguments-vs-nodes.md +383 -383
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-13-best-practices.md +477 -477
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/readme.md +62 -62
- package/docs/02-CORE-GUIDES/mapping/mapping-format-decision-tree.md +480 -480
- package/docs/02-CORE-GUIDES/mapping/mapping-graphql-alias-batching-guide.md +820 -820
- package/docs/02-CORE-GUIDES/mapping/mapping-javascript-objects.md +2369 -2369
- package/docs/02-CORE-GUIDES/mapping/mapping-mapper-comparison-guide.md +682 -682
- package/docs/02-CORE-GUIDES/mapping/modules/02-core-guides-mapping-07-api-reference.md +1327 -1327
- package/docs/02-CORE-GUIDES/mapping/modules/02-core-guides-mapping-08-error-handling.md +1142 -1142
- package/docs/02-CORE-GUIDES/mapping/modules/mapping-04-use-cases.md +891 -891
- package/docs/02-CORE-GUIDES/mapping/modules/mapping-06-helpers-resolvers.md +1126 -1126
- package/docs/02-CORE-GUIDES/mapping/modules/mapping-06-sdk-resolvers.md +199 -199
- package/docs/02-CORE-GUIDES/mapping/modules/mapping-07-api-reference.md +1319 -1319
- package/docs/02-CORE-GUIDES/mapping/readme.md +178 -178
- package/docs/02-CORE-GUIDES/mapping/resolver-registration.md +410 -410
- package/docs/02-CORE-GUIDES/mapping/resolvers/examples/common-patterns.ts +226 -226
- package/docs/02-CORE-GUIDES/mapping/resolvers/examples/custom-resolvers.ts +227 -227
- package/docs/02-CORE-GUIDES/mapping/resolvers/examples/sdk-resolvers-usage.ts +203 -203
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-readme.md +274 -274
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-api-reference.md +679 -679
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-cookbook.md +826 -826
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-guide.md +1330 -1330
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-helpers-reference.md +1437 -1437
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-parameters-reference.md +553 -553
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-troubleshooting.md +854 -854
- package/docs/02-CORE-GUIDES/mapping/resolvers/readme.md +75 -75
- package/docs/02-CORE-GUIDES/parsers/examples/02-core-guides-parsers-readme.md +161 -161
- package/docs/02-CORE-GUIDES/parsers/examples/csv-parser-examples.ts +110 -110
- package/docs/02-CORE-GUIDES/parsers/examples/json-parser-examples.ts +33 -33
- package/docs/02-CORE-GUIDES/parsers/examples/parquet-parser-examples.ts +47 -47
- package/docs/02-CORE-GUIDES/parsers/examples/xml-parser-examples.ts +38 -38
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-01-foundations.md +355 -355
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-02-csv-parser.md +772 -772
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-03-json-parser.md +789 -789
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-04-xml-parser.md +857 -857
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-05-parquet-parser.md +603 -603
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-06-integration-patterns.md +702 -702
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-06-streaming.md +121 -121
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-07-api-reference.md +89 -89
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-07-troubleshooting.md +727 -727
- package/docs/02-CORE-GUIDES/parsers/parsers-quick-reference.md +482 -482
- package/docs/02-CORE-GUIDES/parsers/parsers-readme.md +258 -258
- package/docs/02-CORE-GUIDES/parsers/readme.md +65 -65
- package/docs/02-CORE-GUIDES/readme.md +194 -194
- package/docs/02-CORE-GUIDES/webhook-validation/examples/basic-validation.ts +108 -108
- package/docs/02-CORE-GUIDES/webhook-validation/examples/common-patterns.ts +316 -316
- package/docs/02-CORE-GUIDES/webhook-validation/examples/webhook-validation-readme.md +61 -61
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-01-foundations.md +440 -440
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-02-quick-start.md +525 -525
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-03-versori-integration.md +741 -741
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-04-platform-integration.md +629 -629
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-05-configuration.md +535 -535
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-06-error-handling.md +611 -611
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-06-troubleshooting.md +124 -124
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-07-api-reference.md +511 -511
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-08-rubix-webhooks.md +590 -590
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-09-rubix-event-vs-http-call.md +432 -432
- package/docs/02-CORE-GUIDES/webhook-validation/readme.md +239 -239
- package/docs/02-CORE-GUIDES/webhook-validation/webhook-validation-quick-reference.md +392 -392
- package/docs/03-PATTERN-GUIDES/connector-scenarios/connector-scenarios-quick-reference.md +498 -498
- package/docs/03-PATTERN-GUIDES/connector-scenarios/connector-scenarios-readme.md +313 -313
- package/docs/03-PATTERN-GUIDES/connector-scenarios/examples/common-patterns.ts +612 -612
- package/docs/03-PATTERN-GUIDES/connector-scenarios/examples/connector-scenarios-readme.md +253 -253
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-01-foundations.md +452 -452
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-02-simple-scenarios.md +681 -681
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-03-intermediate-scenarios.md +637 -637
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-04-advanced-scenarios.md +650 -650
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-05-bidirectional-sync.md +233 -233
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-06-production-patterns.md +442 -442
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-07-reference.md +445 -445
- package/docs/03-PATTERN-GUIDES/connector-scenarios/readme.md +31 -31
- package/docs/03-PATTERN-GUIDES/enterprise-integration-patterns.md +1528 -1528
- package/docs/03-PATTERN-GUIDES/error-handling/comprehensive-error-handling-guide.md +1437 -1437
- package/docs/03-PATTERN-GUIDES/error-handling/error-handling-quick-reference.md +390 -390
- package/docs/03-PATTERN-GUIDES/error-handling/examples/common-patterns.ts +438 -438
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-01-foundations.md +362 -362
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-02-error-types.md +850 -850
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-03-utf8-handling.md +456 -456
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-04-error-scenarios.md +658 -658
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-05-calling-patterns.md +671 -671
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-06-retry-strategies.md +1034 -1034
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-07-monitoring.md +653 -653
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-08-api-reference.md +847 -847
- package/docs/03-PATTERN-GUIDES/error-handling/readme.md +36 -36
- package/docs/03-PATTERN-GUIDES/examples/__tests__/readme.md +40 -40
- package/docs/03-PATTERN-GUIDES/examples/__tests__/resolver-examples.test.js +282 -282
- package/docs/03-PATTERN-GUIDES/examples/test-data/03-pattern-guides-readme.md +110 -110
- package/docs/03-PATTERN-GUIDES/examples/test-data/canonical-inventory.json +123 -123
- package/docs/03-PATTERN-GUIDES/examples/test-data/canonical-order.json +171 -171
- package/docs/03-PATTERN-GUIDES/examples/test-data/readme.md +28 -28
- package/docs/03-PATTERN-GUIDES/extraction/extraction-readme.md +15 -15
- package/docs/03-PATTERN-GUIDES/extraction/readme.md +25 -25
- package/docs/03-PATTERN-GUIDES/file-operations/examples/common-patterns.ts +407 -407
- package/docs/03-PATTERN-GUIDES/file-operations/examples/file-operations-readme.md +142 -142
- package/docs/03-PATTERN-GUIDES/file-operations/file-operations-quick-reference.md +462 -462
- package/docs/03-PATTERN-GUIDES/file-operations/file-operations-readme.md +379 -379
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-01-foundations.md +430 -430
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-02-quick-start.md +484 -484
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-03-s3-operations.md +507 -507
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-04-sftp-operations.md +963 -963
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-05-streaming-performance.md +503 -503
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-06-archive-patterns.md +386 -386
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-06-error-handling.md +117 -117
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-07-api-reference.md +78 -78
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-07-testing-troubleshooting.md +567 -567
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-08-api-reference.md +1055 -1055
- package/docs/03-PATTERN-GUIDES/file-operations/readme.md +32 -32
- package/docs/03-PATTERN-GUIDES/ingestion/ingestion-readme.md +15 -15
- package/docs/03-PATTERN-GUIDES/ingestion/readme.md +25 -25
- package/docs/03-PATTERN-GUIDES/integration-patterns/examples/batch-processing.ts +130 -130
- package/docs/03-PATTERN-GUIDES/integration-patterns/examples/common-patterns.ts +360 -360
- package/docs/03-PATTERN-GUIDES/integration-patterns/examples/delta-sync.ts +130 -130
- package/docs/03-PATTERN-GUIDES/integration-patterns/examples/integration-patterns-readme.md +100 -100
- package/docs/03-PATTERN-GUIDES/integration-patterns/examples/real-time-webhook.ts +398 -398
- package/docs/03-PATTERN-GUIDES/integration-patterns/integration-patterns-quick-reference.md +962 -962
- package/docs/03-PATTERN-GUIDES/integration-patterns/integration-patterns-readme.md +134 -134
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-01-real-time-processing.md +991 -991
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-02-batch-processing.md +1547 -1547
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-03-delta-sync.md +1108 -1108
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-04-webhook-patterns.md +1181 -1181
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-05-error-handling.md +1061 -1061
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-06-advanced-integration-services.md +1547 -1547
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-06-performance.md +109 -109
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-07-api-reference.md +34 -34
- package/docs/03-PATTERN-GUIDES/integration-patterns/readme.md +30 -30
- package/docs/03-PATTERN-GUIDES/logging-minimal-mode.md +128 -128
- package/docs/03-PATTERN-GUIDES/multiple-connections/examples/common-patterns.ts +380 -380
- package/docs/03-PATTERN-GUIDES/multiple-connections/examples/multiple-connections-readme.md +139 -139
- package/docs/03-PATTERN-GUIDES/multiple-connections/examples/parallel-root-connections.ts +149 -149
- package/docs/03-PATTERN-GUIDES/multiple-connections/examples/real-world-scenarios.ts +405 -405
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-01-foundations.md +378 -378
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-02-quick-start.md +566 -566
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-03-targeting-connections.md +659 -659
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-04-parallel-queries.md +656 -656
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-05-best-practices.md +624 -624
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-06-api-reference.md +824 -824
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-06-versori.md +119 -119
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-07-api-reference.md +87 -87
- package/docs/03-PATTERN-GUIDES/multiple-connections/multiple-connections-quick-reference.md +353 -353
- package/docs/03-PATTERN-GUIDES/multiple-connections/multiple-connections-readme.md +270 -270
- package/docs/03-PATTERN-GUIDES/multiple-connections/readme.md +30 -30
- package/docs/03-PATTERN-GUIDES/pagination/pagination-readme.md +14 -14
- package/docs/03-PATTERN-GUIDES/pagination/readme.md +24 -24
- package/docs/03-PATTERN-GUIDES/parquet/examples/common-patterns.ts +180 -180
- package/docs/03-PATTERN-GUIDES/parquet/examples/read-parquet.ts +48 -48
- package/docs/03-PATTERN-GUIDES/parquet/examples/write-parquet.ts +65 -65
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-01-introduction.md +393 -393
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-02-quick-start.md +572 -572
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-03-reading-parquet.md +525 -525
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-04-writing-parquet.md +554 -554
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-05-graphql-extraction.md +405 -405
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-06-performance.md +104 -104
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-06-s3-integration.md +511 -511
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-07-api-reference.md +90 -90
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-07-performance-optimization.md +525 -525
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-08-best-practices.md +712 -712
- package/docs/03-PATTERN-GUIDES/parquet/parquet-quick-reference.md +683 -683
- package/docs/03-PATTERN-GUIDES/parquet/parquet-readme.md +248 -248
- package/docs/03-PATTERN-GUIDES/parquet/readme.md +32 -32
- package/docs/03-PATTERN-GUIDES/parsers/parsers-readme.md +12 -12
- package/docs/03-PATTERN-GUIDES/parsers/readme.md +24 -24
- package/docs/03-PATTERN-GUIDES/readme.md +159 -159
- package/docs/03-PATTERN-GUIDES/webhooks/readme.md +24 -24
- package/docs/03-PATTERN-GUIDES/webhooks/webhooks-readme.md +8 -8
- package/docs/04-REFERENCE/architecture/architecture-01-overview.md +427 -427
- package/docs/04-REFERENCE/architecture/architecture-02-client-architecture.md +424 -424
- package/docs/04-REFERENCE/architecture/architecture-03-data-flow.md +690 -690
- package/docs/04-REFERENCE/architecture/architecture-04-service-layer.md +834 -834
- package/docs/04-REFERENCE/architecture/architecture-05-integration-architecture.md +655 -655
- package/docs/04-REFERENCE/architecture/architecture-06-state-management.md +653 -653
- package/docs/04-REFERENCE/architecture/architecture-adding-new-data-sources.md +686 -686
- package/docs/04-REFERENCE/architecture/readme.md +279 -279
- package/docs/04-REFERENCE/platforms/deno/readme.md +117 -117
- package/docs/04-REFERENCE/platforms/nodejs/readme.md +146 -146
- package/docs/04-REFERENCE/platforms/readme.md +135 -135
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-01-introduction.md +398 -398
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-02-quick-start.md +560 -560
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-03-authentication.md +757 -757
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-04-workflows.md +2476 -2476
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-05-connections.md +1167 -1167
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-06-kv-storage.md +990 -990
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-06-state-management.md +121 -121
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-07-api-reference.md +68 -68
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-07-deployment.md +731 -731
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-08-best-practices.md +1111 -1111
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-09-signature-reference.md +766 -766
- package/docs/04-REFERENCE/platforms/versori/platforms-versori-readme.md +299 -299
- package/docs/04-REFERENCE/platforms/versori/platforms-versori-s3-sftp-configuration-guide.md +1425 -1425
- package/docs/04-REFERENCE/platforms/versori/platforms-versori-webhook-api-key-security.md +816 -816
- package/docs/04-REFERENCE/platforms/versori/platforms-versori-webhook-connection-security.md +681 -681
- package/docs/04-REFERENCE/platforms/versori/platforms-versori-workflow-task-types.md +708 -708
- package/docs/04-REFERENCE/platforms/versori/readme.md +108 -108
- package/docs/04-REFERENCE/readme.md +148 -148
- package/docs/04-REFERENCE/resolver-signature/examples/advanced-resolvers.ts +482 -482
- package/docs/04-REFERENCE/resolver-signature/examples/async-resolvers.ts +496 -496
- package/docs/04-REFERENCE/resolver-signature/examples/basic-resolvers.ts +343 -343
- package/docs/04-REFERENCE/resolver-signature/examples/resolver-signature-readme.md +188 -188
- package/docs/04-REFERENCE/resolver-signature/examples/testing-resolvers.ts +463 -463
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-01-foundations.md +286 -286
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-02-parameter-reference.md +643 -643
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-03-basic-examples.md +521 -521
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-04-advanced-patterns.md +739 -739
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-05-sdk-resolvers.md +531 -531
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-06-migration-guide.md +650 -650
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-06-testing.md +125 -125
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-07-api-reference.md +794 -794
- package/docs/04-REFERENCE/resolver-signature/readme.md +64 -64
- package/docs/04-REFERENCE/resolver-signature/resolver-signature-quick-reference.md +270 -270
- package/docs/04-REFERENCE/resolver-signature/resolver-signature-readme.md +351 -351
- package/docs/04-REFERENCE/schema/fluent-commerce-schema.json +764 -764
- package/docs/04-REFERENCE/schema/readme.md +141 -141
- package/docs/04-REFERENCE/testing/examples/04-reference-testing-readme.md +158 -158
- package/docs/04-REFERENCE/testing/examples/fluent-testing.ts +62 -62
- package/docs/04-REFERENCE/testing/examples/health-check.ts +155 -155
- package/docs/04-REFERENCE/testing/examples/integration-test.ts +119 -119
- package/docs/04-REFERENCE/testing/examples/performance-test.ts +183 -183
- package/docs/04-REFERENCE/testing/examples/s3-testing.ts +127 -127
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-01-foundations.md +267 -267
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-02-s3-testing.md +599 -599
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-03-fluent-testing.md +589 -589
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-04-integration-testing.md +699 -699
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-05-debugging.md +478 -478
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-06-cicd-integration.md +463 -463
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-06-preflight-validation.md +131 -131
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-07-best-practices.md +499 -499
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-07-coverage-ci.md +165 -165
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-08-api-reference.md +634 -634
- package/docs/04-REFERENCE/testing/readme.md +86 -86
- package/docs/04-REFERENCE/testing/testing-quick-reference.md +667 -667
- package/docs/04-REFERENCE/testing/testing-readme.md +286 -286
- package/docs/04-REFERENCE/troubleshooting/readme.md +144 -144
- package/docs/04-REFERENCE/troubleshooting/troubleshooting-deno-sftp-compatibility.md +392 -392
- package/docs/template-loading-matrix.md +242 -242
- package/package.json +5 -3
- package/docs/02-CORE-GUIDES/api-reference/cli-profile-integration.md +0 -377
|
@@ -1,482 +1,482 @@
|
|
|
1
|
-
# Parser Quick Reference
|
|
2
|
-
|
|
3
|
-
One-page reference for all parser services in the Fluent Connect SDK.
|
|
4
|
-
|
|
5
|
-
## Parser Comparison
|
|
6
|
-
|
|
7
|
-
| Feature | CSV | JSON | XML | Parquet |
|
|
8
|
-
|---------|-----|------|-----|---------|
|
|
9
|
-
| **Format Type** | Tabular | Nested | Hierarchical | Columnar |
|
|
10
|
-
| **Structure** | Rows & columns | Objects & arrays | Tags & attributes | Column-based |
|
|
11
|
-
| **Human Readable** | ✅ Yes | ✅ Yes | ✅ Yes | ❌ Binary |
|
|
12
|
-
| **File Size** | Medium | Large | Large | Small (compressed) |
|
|
13
|
-
| **Parsing Speed** | Fast | Fast | Medium | Fast (with streaming) |
|
|
14
|
-
| **Nested Data** | ❌ No | ✅ Yes | ✅ Yes | ✅ Yes |
|
|
15
|
-
| **Attributes** | ❌ No | N/A | ✅ Yes | N/A |
|
|
16
|
-
| **Streaming** | ✅ Yes | ✅ JSONL | ✅ Yes | ✅ Yes |
|
|
17
|
-
| **Best For** | Inventory feeds | APIs, webhooks | EDI, B2B | Analytics, extraction |
|
|
18
|
-
| **Common Sources** | Warehouses, Excel | REST APIs | SFCC, EDI | Data warehouses |
|
|
19
|
-
| **Compression** | None | None | None | ✅ Built-in (10:1) |
|
|
20
|
-
|
|
21
|
-
## Quick Start Examples
|
|
22
|
-
|
|
23
|
-
### CSV Parser
|
|
24
|
-
|
|
25
|
-
```typescript
|
|
26
|
-
import { CSVParserService } from '@fluentcommerce/fc-connect-sdk';
|
|
27
|
-
|
|
28
|
-
const csvParser = new CSVParserService();
|
|
29
|
-
|
|
30
|
-
// Parse
|
|
31
|
-
const records = await csvParser.parse(csvContent);
|
|
32
|
-
|
|
33
|
-
// Stream large files
|
|
34
|
-
for await (const batch of csvParser.parseStreaming(csvContent, {}, 1000)) {
|
|
35
|
-
await processBatch(batch);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
// Validate
|
|
39
|
-
const validation = csvParser.validate(csvContent, {
|
|
40
|
-
requiredColumns: ['sku', 'qty']
|
|
41
|
-
});
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
### JSON Parser
|
|
45
|
-
|
|
46
|
-
```typescript
|
|
47
|
-
import { JSONParserService } from '@fluentcommerce/fc-connect-sdk';
|
|
48
|
-
|
|
49
|
-
const jsonParser = new JSONParserService();
|
|
50
|
-
|
|
51
|
-
// Parse
|
|
52
|
-
const data = await jsonParser.parse(jsonContent);
|
|
53
|
-
|
|
54
|
-
// Extract nested data
|
|
55
|
-
const items = await jsonParser.parse(jsonContent, {
|
|
56
|
-
dataPath: 'response.data.items'
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
// Parse JSONL
|
|
60
|
-
for await (const item of jsonParser.parseStreaming(jsonlContent, {
|
|
61
|
-
jsonLines: true
|
|
62
|
-
})) {
|
|
63
|
-
await processItem(item);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// Query data
|
|
67
|
-
const value = jsonParser.query(data, 'store.inventory.items[0]');
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
### XML Parser
|
|
71
|
-
|
|
72
|
-
```typescript
|
|
73
|
-
import { XMLParserService, XMLBuilder } from '@fluentcommerce/fc-connect-sdk';
|
|
74
|
-
|
|
75
|
-
const xmlParser = new XMLParserService();
|
|
76
|
-
|
|
77
|
-
// Parse
|
|
78
|
-
const parsed = await xmlParser.parse(xmlContent);
|
|
79
|
-
|
|
80
|
-
// Access elements and attributes directly
|
|
81
|
-
const orderId = parsed.order?.['@_id'];
|
|
82
|
-
const items = parsed.order?.items?.item; // Array
|
|
83
|
-
|
|
84
|
-
// ℹ️ For advanced path resolution with complex queries:
|
|
85
|
-
// XMLPathResolver is part of the mapping services (NOT exported from parsers)
|
|
86
|
-
// See GraphQLMutationMapper documentation
|
|
87
|
-
|
|
88
|
-
// Generate XML
|
|
89
|
-
import { XMLBuilder } from '@fluentcommerce/fc-connect-sdk';
|
|
90
|
-
|
|
91
|
-
const builder = new XMLBuilder({
|
|
92
|
-
xmlDeclaration: true,
|
|
93
|
-
prettyPrint: true
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
const xml = builder.build({
|
|
97
|
-
Order: {
|
|
98
|
-
'@id': '12345',
|
|
99
|
-
Customer: { Name: 'John Doe' }
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
### Parquet Parser
|
|
105
|
-
|
|
106
|
-
```typescript
|
|
107
|
-
import { ParquetParserService, createConsoleLogger } from '@fluentcommerce/fc-connect-sdk';
|
|
108
|
-
|
|
109
|
-
const logger = createConsoleLogger();
|
|
110
|
-
const parquetParser = new ParquetParserService(logger);
|
|
111
|
-
|
|
112
|
-
// Parse
|
|
113
|
-
const records = await parquetParser.parse(parquetBuffer);
|
|
114
|
-
|
|
115
|
-
// Stream large files
|
|
116
|
-
for await (const batch of parquetParser.parseStreaming(parquetBuffer, {
|
|
117
|
-
batchSize: 1000
|
|
118
|
-
})) {
|
|
119
|
-
await processBatch(batch);
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
// Get column statistics
|
|
123
|
-
const stats = await parquetParser.getColumnStatistics(parquetBuffer);
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
## API Reference
|
|
127
|
-
|
|
128
|
-
### CSVParserService
|
|
129
|
-
|
|
130
|
-
#### Methods
|
|
131
|
-
|
|
132
|
-
| Method | Parameters | Returns | Description |
|
|
133
|
-
|--------|------------|---------|-------------|
|
|
134
|
-
| `parse<T>()` | `csvContent: string, options?: CSVOptions` | `Promise<T[]>` | Parse CSV to array of objects |
|
|
135
|
-
| `parseStreaming<T>()` | `csvContent: string, options?: CSVOptions, batchSize?: number` | `AsyncGenerator<T \| T[]>` | Stream CSV records |
|
|
136
|
-
| `validate()` | `csvContent: string, schema: CSVValidationSchema` | `Promise<CSVValidationResult>` | Validate CSV structure |
|
|
137
|
-
| `stringify()` | `records: any[], options?: StringifyOptions` | `string` | Convert objects to CSV string |
|
|
138
|
-
|
|
139
|
-
#### CSVOptions
|
|
140
|
-
|
|
141
|
-
```typescript
|
|
142
|
-
interface CSVOptions {
|
|
143
|
-
columns?: boolean | string[]; // Column headers
|
|
144
|
-
delimiter?: string; // Field delimiter (default: ',')
|
|
145
|
-
quote?: string; // Quote character (default: '"')
|
|
146
|
-
escape?: string; // Escape character (default: '"')
|
|
147
|
-
skip_empty_lines?: boolean; // Skip empty lines
|
|
148
|
-
trim?: boolean; // Trim whitespace
|
|
149
|
-
from_line?: number; // Start from line N
|
|
150
|
-
relax_column_count?: boolean; // Allow variable columns
|
|
151
|
-
}
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
#### StringifyOptions
|
|
155
|
-
|
|
156
|
-
```typescript
|
|
157
|
-
interface StringifyOptions {
|
|
158
|
-
headers?: boolean; // Include header row (default: true)
|
|
159
|
-
delimiter?: string; // Field delimiter (default: ',')
|
|
160
|
-
quote?: string; // Quote character (default: '"')
|
|
161
|
-
escape?: string; // Escape character (default: '"')
|
|
162
|
-
}
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
#### CSV Stringify Example
|
|
166
|
-
|
|
167
|
-
**Status:** ✅ Available as public method on `CSVParserService`
|
|
168
|
-
|
|
169
|
-
```typescript
|
|
170
|
-
const csvParser = new CSVParserService();
|
|
171
|
-
|
|
172
|
-
const records = [
|
|
173
|
-
{ name: 'Alice', age: 30, city: 'NYC' },
|
|
174
|
-
{ name: 'Bob', age: 25, city: 'LA' }
|
|
175
|
-
];
|
|
176
|
-
|
|
177
|
-
const csvString = csvParser.stringify(records, {
|
|
178
|
-
headers: true, // Include header row
|
|
179
|
-
delimiter: ',', // Field delimiter
|
|
180
|
-
quote: '"', // Quote character
|
|
181
|
-
escape: '"' // Escape character
|
|
182
|
-
});
|
|
183
|
-
|
|
184
|
-
console.log(csvString);
|
|
185
|
-
// Output:
|
|
186
|
-
// name,age,city
|
|
187
|
-
// Alice,30,NYC
|
|
188
|
-
// Bob,25,LA
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
### JSONParserService
|
|
192
|
-
|
|
193
|
-
#### Methods
|
|
194
|
-
|
|
195
|
-
| Method | Parameters | Returns | Description |
|
|
196
|
-
|--------|------------|---------|-------------|
|
|
197
|
-
| `parse<T>()` | `jsonContent: string, options?: JSONParseOptions` | `Promise<T>` | Parse JSON |
|
|
198
|
-
| `parseStreaming<T>()` | `jsonContent: string \| Readable, options?: JSONStreamOptions` | `AsyncGenerator<T>` | Stream JSON/JSONL |
|
|
199
|
-
| `validate()` | `jsonContent: string, options?: JSONParseOptions` | `JSONValidationResult` | Validate JSON |
|
|
200
|
-
| `query()` | `data: any, path: string` | `any` | Query nested data |
|
|
201
|
-
|
|
202
|
-
#### JSONParseOptions
|
|
203
|
-
|
|
204
|
-
```typescript
|
|
205
|
-
interface JSONParseOptions {
|
|
206
|
-
dataPath?: string; // Extract nested path
|
|
207
|
-
parseDates?: boolean; // Auto-parse dates
|
|
208
|
-
dateFormats?: string[]; // Date format patterns
|
|
209
|
-
validateSchema?: boolean; // Validate against schema
|
|
210
|
-
schema?: object; // JSON schema
|
|
211
|
-
reviver?: (key: string, value: any) => any; // Custom reviver
|
|
212
|
-
allowComments?: boolean; // Allow // and /* */
|
|
213
|
-
allowTrailingCommas?: boolean; // Allow trailing commas
|
|
214
|
-
maxDepth?: number; // Max nesting depth
|
|
215
|
-
}
|
|
216
|
-
```
|
|
217
|
-
|
|
218
|
-
#### JSONStreamOptions
|
|
219
|
-
|
|
220
|
-
```typescript
|
|
221
|
-
interface JSONStreamOptions {
|
|
222
|
-
batchSize?: number; // Records per batch
|
|
223
|
-
jsonLines?: boolean; // JSONL format
|
|
224
|
-
memoryLimit?: number; // Memory limit in bytes
|
|
225
|
-
parseDates?: boolean; // Auto-parse dates
|
|
226
|
-
}
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
### XMLParserService
|
|
230
|
-
|
|
231
|
-
#### Methods
|
|
232
|
-
|
|
233
|
-
| Method | Parameters | Returns | Description |
|
|
234
|
-
|--------|------------|---------|-------------|
|
|
235
|
-
| `parse()` | `xmlContent: string, options?: XMLParseOptions` | `Promise<Record<string, unknown>>` | Parse XML |
|
|
236
|
-
| `parseSync()` | `xmlContent: string, options?: XMLParseOptions` | `Record<string, unknown>` | Parse XML synchronously |
|
|
237
|
-
| `parseStreaming()` | `xmlContent: string, options?: XMLStreamOptions` | `AsyncGenerator<Record<string, unknown>>` | Stream XML elements |
|
|
238
|
-
| `validate()` | `xmlContent: string` | `{ valid: boolean; errors: string[] }` | Validate XML |
|
|
239
|
-
| `stringify()` | `data: any, options?: XMLStringifyOptions` | `string` | Convert object to XML |
|
|
240
|
-
|
|
241
|
-
#### XMLParseOptions
|
|
242
|
-
|
|
243
|
-
```typescript
|
|
244
|
-
interface XMLParseOptions {
|
|
245
|
-
lowercaseKeys?: boolean; // Lowercase element names
|
|
246
|
-
normalizeWhitespace?: boolean; // Normalize whitespace
|
|
247
|
-
parseNumbers?: boolean; // Auto-parse numbers
|
|
248
|
-
parseBooleans?: boolean; // Auto-parse booleans
|
|
249
|
-
parseAttributeValues?: boolean; // Auto-parse attribute values (numbers/booleans)
|
|
250
|
-
rootElement?: string; // Start from element
|
|
251
|
-
arrayElements?: string[]; // Elements to treat as arrays
|
|
252
|
-
includeAttributes?: boolean; // Include attributes
|
|
253
|
-
attributePrefix?: string; // Attribute prefix (default: '@')
|
|
254
|
-
textKey?: string; // Text content key (default: '#text')
|
|
255
|
-
maxDepth?: number; // Max nesting depth
|
|
256
|
-
removeNamespacePrefix?: boolean; // Remove ns: prefixes
|
|
257
|
-
}
|
|
258
|
-
```
|
|
259
|
-
|
|
260
|
-
### XML Path Resolution
|
|
261
|
-
|
|
262
|
-
**Note:** `XMLPathResolver` is part of the mapping services layer (NOT exported from parsers). For simple parsing, access parsed structure directly using standard JavaScript property access. For complex mapping scenarios with advanced path queries, use `GraphQLMutationMapper` (see mapping documentation).
|
|
263
|
-
|
|
264
|
-
### XMLBuilder
|
|
265
|
-
|
|
266
|
-
**Status:** ✅ Exported from SDK (`@fluentcommerce/fc-connect-sdk`)
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
#### Methods
|
|
271
|
-
|
|
272
|
-
| Method | Parameters | Returns | Description |
|
|
273
|
-
|--------|------------|---------|-------------|
|
|
274
|
-
| `build()` | `data: any, rootElement?: string` | `string` | Generate XML from object |
|
|
275
|
-
|
|
276
|
-
#### XML Generation Patterns
|
|
277
|
-
|
|
278
|
-
```typescript
|
|
279
|
-
// Simple text
|
|
280
|
-
{ "ItemId": "SKU001" }
|
|
281
|
-
// → <ItemId>SKU001</ItemId>
|
|
282
|
-
|
|
283
|
-
// Attribute only
|
|
284
|
-
{ "Order": { "@id": "123" } }
|
|
285
|
-
// → <Order id="123"/>
|
|
286
|
-
|
|
287
|
-
// Attribute + text (use #text)
|
|
288
|
-
{ "Color": { "@id": "9101", "#text": "Black" } }
|
|
289
|
-
// → <Color id="9101">Black</Color>
|
|
290
|
-
|
|
291
|
-
// Nested children
|
|
292
|
-
{ "Customer": { "Name": { "FirstName": "John" } } }
|
|
293
|
-
// → <Customer><Name><FirstName>John</FirstName></Name></Customer>
|
|
294
|
-
|
|
295
|
-
// Arrays
|
|
296
|
-
{ "Items": { "Item": [{ "Id": "1" }, { "Id": "2" }] } }
|
|
297
|
-
// → <Items><Item><Id>1</Id></Item><Item><Id>2</Id></Item></Items>
|
|
298
|
-
```
|
|
299
|
-
|
|
300
|
-
### ParquetParserService
|
|
301
|
-
|
|
302
|
-
#### Methods
|
|
303
|
-
|
|
304
|
-
| Method | Parameters | Returns | Description |
|
|
305
|
-
|--------|------------|---------|-------------|
|
|
306
|
-
| `parseSimple()` | `arrayBuffer: ArrayBuffer, fileName: string` | `Promise<ParquetDataRecord[]>` | Simple parse (easy mode) |
|
|
307
|
-
| `parse()` | `arrayBuffer: ArrayBuffer, fileName: string, options?: Partial<ParquetParsingOptions>` | `Promise<{records: ParquetDataRecord[]; stats: ParquetParsingStats}>` | Parse with stats |
|
|
308
|
-
| `parseStreaming()` | `arrayBuffer: ArrayBuffer, fileName: string, options?: Partial<ParquetParsingOptions>` | `Promise<ParquetStreamingResult>` | Stream Parquet |
|
|
309
|
-
| `validateFile()` | `arrayBuffer: ArrayBuffer, fileName: string` | `Promise<ValidationResult>` | Validate Parquet |
|
|
310
|
-
| `getPerformanceMetrics()` | none | `ParquetPerformanceMetrics` | Get performance stats |
|
|
311
|
-
|
|
312
|
-
#### ParquetParsingOptions
|
|
313
|
-
|
|
314
|
-
```typescript
|
|
315
|
-
interface ParquetParsingOptions {
|
|
316
|
-
batchSize?: number; // Records per batch
|
|
317
|
-
maxFileSize?: number; // Max file size in bytes
|
|
318
|
-
enableStreaming?: boolean; // Enable streaming mode
|
|
319
|
-
validation?: {
|
|
320
|
-
enabled?: boolean; // Enable validation
|
|
321
|
-
requiredColumns?: string[]; // Required column names
|
|
322
|
-
columnTypes?: Record<string, ParquetDataType>; // Expected types
|
|
323
|
-
allowAdditionalColumns?: boolean; // Allow extra columns
|
|
324
|
-
};
|
|
325
|
-
}
|
|
326
|
-
```
|
|
327
|
-
|
|
328
|
-
## Common Integration Patterns
|
|
329
|
-
|
|
330
|
-
### Pattern 1: CSV → Transform → Fluent
|
|
331
|
-
|
|
332
|
-
```typescript
|
|
333
|
-
import { CSVParserService, UniversalMapper, createClient } from '@fluentcommerce/fc-connect-sdk';
|
|
334
|
-
|
|
335
|
-
const csvParser = new CSVParserService();
|
|
336
|
-
const records = await csvParser.parse(csvContent);
|
|
337
|
-
|
|
338
|
-
const mapper = new UniversalMapper({
|
|
339
|
-
fields: {
|
|
340
|
-
ref: { source: 'sku', required: true },
|
|
341
|
-
qty: { source: 'quantity', resolver: 'sdk.parseInt' },
|
|
342
|
-
locationRef: { source: 'warehouse' }
|
|
343
|
-
}
|
|
344
|
-
});
|
|
345
|
-
|
|
346
|
-
const result = await mapper.map(records);
|
|
347
|
-
|
|
348
|
-
const client = await createClient({ config });
|
|
349
|
-
const job = await client.createJob({
|
|
350
|
-
name: 'inventory-ingestion',
|
|
351
|
-
retailerId: config.retailerId
|
|
352
|
-
});
|
|
353
|
-
await client.sendBatch(job.id, {
|
|
354
|
-
entityType: 'INVENTORY',
|
|
355
|
-
entities: result.data
|
|
356
|
-
});
|
|
357
|
-
```
|
|
358
|
-
|
|
359
|
-
### Pattern 2: JSON Webhook → Fluent
|
|
360
|
-
|
|
361
|
-
```typescript
|
|
362
|
-
import { JSONParserService, createClient } from '@fluentcommerce/fc-connect-sdk';
|
|
363
|
-
|
|
364
|
-
const jsonParser = new JSONParserService();
|
|
365
|
-
const order = await jsonParser.parse(webhookPayload, {
|
|
366
|
-
parseDates: true
|
|
367
|
-
});
|
|
368
|
-
|
|
369
|
-
const client = await createClient({ config });
|
|
370
|
-
await client.graphql({
|
|
371
|
-
query: createOrderMutation,
|
|
372
|
-
variables: { input: order }
|
|
373
|
-
});
|
|
374
|
-
```
|
|
375
|
-
|
|
376
|
-
### Pattern 3: XML → GraphQL Mutation
|
|
377
|
-
|
|
378
|
-
```typescript
|
|
379
|
-
import { XMLParserService, GraphQLMutationMapper, createClient } from '@fluentcommerce/fc-connect-sdk';
|
|
380
|
-
|
|
381
|
-
const xmlParser = new XMLParserService();
|
|
382
|
-
const parsed = await xmlParser.parse(xmlContent);
|
|
383
|
-
|
|
384
|
-
const mapper = new GraphQLMutationMapper(mappingConfig);
|
|
385
|
-
const mutation = await mapper.map(parsed);
|
|
386
|
-
|
|
387
|
-
const client = await createClient({ config });
|
|
388
|
-
await client.graphql({
|
|
389
|
-
query: mutation.query,
|
|
390
|
-
variables: mutation.variables
|
|
391
|
-
});
|
|
392
|
-
```
|
|
393
|
-
|
|
394
|
-
### Pattern 4: Fluent → Parquet → S3
|
|
395
|
-
|
|
396
|
-
```typescript
|
|
397
|
-
import { createClient, ParquetParserService, S3DataSource, createConsoleLogger } from '@fluentcommerce/fc-connect-sdk';
|
|
398
|
-
|
|
399
|
-
const logger = createConsoleLogger();
|
|
400
|
-
const client = await createClient({ config });
|
|
401
|
-
const result = await client.graphql({
|
|
402
|
-
query: extractionQuery,
|
|
403
|
-
pagination: { maxRecords: 1000000 }
|
|
404
|
-
});
|
|
405
|
-
|
|
406
|
-
const records = result.data.virtualPositions.edges.map(e => e.node);
|
|
407
|
-
const parquetBuffer = await convertToParquet(records);
|
|
408
|
-
|
|
409
|
-
const s3DataSource = new S3DataSource({
|
|
410
|
-
type: 'S3_PARQUET',
|
|
411
|
-
connectionId: 's3-parquet-extract',
|
|
412
|
-
name: 'S3 Parquet Extract',
|
|
413
|
-
s3Config: s3Config
|
|
414
|
-
}, logger);
|
|
415
|
-
await s3DataSource.uploadFile('data.parquet', parquetBuffer);
|
|
416
|
-
```
|
|
417
|
-
|
|
418
|
-
## Performance Guidelines
|
|
419
|
-
|
|
420
|
-
| File Size | Parser Strategy | Batch Size | Notes |
|
|
421
|
-
|-----------|----------------|------------|-------|
|
|
422
|
-
| < 10MB | Direct parsing | N/A | Fast, load into memory |
|
|
423
|
-
| 10-100MB | Streaming | 1000-5000 | Balance speed & memory |
|
|
424
|
-
| 100MB-1GB | Streaming | 500-1000 | Smaller batches for safety |
|
|
425
|
-
| > 1GB | Streaming + parallel | 100-500 | Process in parallel when possible |
|
|
426
|
-
|
|
427
|
-
## Error Handling Checklist
|
|
428
|
-
|
|
429
|
-
- ✅ Validate input before parsing
|
|
430
|
-
- ✅ Use try-catch blocks
|
|
431
|
-
- ✅ Log parsing errors with context
|
|
432
|
-
- ✅ Implement retry logic for transient failures
|
|
433
|
-
- ✅ Handle partial successes
|
|
434
|
-
- ✅ Monitor parsing performance metrics
|
|
435
|
-
|
|
436
|
-
## When to Use Each Parser
|
|
437
|
-
|
|
438
|
-
**CSV Parser** - Choose when:
|
|
439
|
-
- ✅ Data is tabular (rows and columns)
|
|
440
|
-
- ✅ Source is warehouse feeds or spreadsheet exports
|
|
441
|
-
- ✅ No nested data structures needed
|
|
442
|
-
- ✅ Universal compatibility required
|
|
443
|
-
|
|
444
|
-
**JSON Parser** - Choose when:
|
|
445
|
-
- ✅ Data comes from REST APIs or webhooks
|
|
446
|
-
- ✅ Need nested object/array structures
|
|
447
|
-
- ✅ Working with modern systems
|
|
448
|
-
- ✅ Type-aware data (strings, numbers, booleans)
|
|
449
|
-
|
|
450
|
-
**XML Parser** - Choose when:
|
|
451
|
-
- ✅ Integrating with EDI or B2B systems
|
|
452
|
-
- ✅ Source is SFCC, Adobe Commerce, or B2B systems
|
|
453
|
-
- ✅ Data has attributes and hierarchical structure
|
|
454
|
-
- ✅ XML schema validation needed
|
|
455
|
-
|
|
456
|
-
**Parquet Parser** - Choose when:
|
|
457
|
-
- ✅ Extracting large datasets (1M+ records)
|
|
458
|
-
- ✅ Need efficient compression (10:1 ratio)
|
|
459
|
-
- ✅ Feeding data warehouses or analytics platforms
|
|
460
|
-
- ✅ Working with columnar data
|
|
461
|
-
|
|
462
|
-
## Quick Troubleshooting
|
|
463
|
-
|
|
464
|
-
| Error | Likely Cause | Solution |
|
|
465
|
-
|-------|--------------|----------|
|
|
466
|
-
| "Invalid CSV format" | Wrong delimiter or malformed quotes | Try different delimiter, use relaxed options |
|
|
467
|
-
| "Memory limit exceeded" | File too large | Use streaming with smaller batches |
|
|
468
|
-
| "Unexpected token" (JSON) | Invalid JSON syntax | Try with `allowComments` and `allowTrailingCommas` |
|
|
469
|
-
| "Mismatched tags" (XML) | Malformed XML | Validate XML first, check for unclosed tags |
|
|
470
|
-
| "Cannot access attribute" (XML) | Wrong path syntax | Use XMLPathResolver with @ prefix for attributes |
|
|
471
|
-
| "Invalid Parquet file" | Corrupted or wrong format | Check file magic bytes, validate before parsing |
|
|
472
|
-
|
|
473
|
-
## See Also
|
|
474
|
-
|
|
475
|
-
- [Parser Foundations](../auto-pagination/modules/auto-pagination-01-foundations.md) - Detailed parser concepts
|
|
476
|
-
- [CSV Parser Guide](./modules/02-core-guides-parsers-02-csv-parser.md) - Complete CSV documentation
|
|
477
|
-
- [JSON Parser Guide](./modules/02-core-guides-parsers-03-json-parser.md) - Complete JSON documentation
|
|
478
|
-
- [XML Parser Guide](./modules/02-core-guides-parsers-04-xml-parser.md) - Complete XML documentation
|
|
479
|
-
- [Parquet Parser Guide](./modules/02-core-guides-parsers-05-parquet-parser.md) - Complete Parquet documentation
|
|
480
|
-
- [Integration Patterns](./modules/02-core-guides-parsers-06-integration-patterns.md) - Real-world examples
|
|
481
|
-
- [Troubleshooting](./modules/02-core-guides-parsers-07-troubleshooting.md) - Error handling and optimization
|
|
482
|
-
- [Examples](./examples/) - Copy-paste ready code
|
|
1
|
+
# Parser Quick Reference
|
|
2
|
+
|
|
3
|
+
One-page reference for all parser services in the Fluent Connect SDK.
|
|
4
|
+
|
|
5
|
+
## Parser Comparison
|
|
6
|
+
|
|
7
|
+
| Feature | CSV | JSON | XML | Parquet |
|
|
8
|
+
|---------|-----|------|-----|---------|
|
|
9
|
+
| **Format Type** | Tabular | Nested | Hierarchical | Columnar |
|
|
10
|
+
| **Structure** | Rows & columns | Objects & arrays | Tags & attributes | Column-based |
|
|
11
|
+
| **Human Readable** | ✅ Yes | ✅ Yes | ✅ Yes | ❌ Binary |
|
|
12
|
+
| **File Size** | Medium | Large | Large | Small (compressed) |
|
|
13
|
+
| **Parsing Speed** | Fast | Fast | Medium | Fast (with streaming) |
|
|
14
|
+
| **Nested Data** | ❌ No | ✅ Yes | ✅ Yes | ✅ Yes |
|
|
15
|
+
| **Attributes** | ❌ No | N/A | ✅ Yes | N/A |
|
|
16
|
+
| **Streaming** | ✅ Yes | ✅ JSONL | ✅ Yes | ✅ Yes |
|
|
17
|
+
| **Best For** | Inventory feeds | APIs, webhooks | EDI, B2B | Analytics, extraction |
|
|
18
|
+
| **Common Sources** | Warehouses, Excel | REST APIs | SFCC, EDI | Data warehouses |
|
|
19
|
+
| **Compression** | None | None | None | ✅ Built-in (10:1) |
|
|
20
|
+
|
|
21
|
+
## Quick Start Examples
|
|
22
|
+
|
|
23
|
+
### CSV Parser
|
|
24
|
+
|
|
25
|
+
```typescript
|
|
26
|
+
import { CSVParserService } from '@fluentcommerce/fc-connect-sdk';
|
|
27
|
+
|
|
28
|
+
const csvParser = new CSVParserService();
|
|
29
|
+
|
|
30
|
+
// Parse
|
|
31
|
+
const records = await csvParser.parse(csvContent);
|
|
32
|
+
|
|
33
|
+
// Stream large files
|
|
34
|
+
for await (const batch of csvParser.parseStreaming(csvContent, {}, 1000)) {
|
|
35
|
+
await processBatch(batch);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Validate
|
|
39
|
+
const validation = csvParser.validate(csvContent, {
|
|
40
|
+
requiredColumns: ['sku', 'qty']
|
|
41
|
+
});
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### JSON Parser
|
|
45
|
+
|
|
46
|
+
```typescript
|
|
47
|
+
import { JSONParserService } from '@fluentcommerce/fc-connect-sdk';
|
|
48
|
+
|
|
49
|
+
const jsonParser = new JSONParserService();
|
|
50
|
+
|
|
51
|
+
// Parse
|
|
52
|
+
const data = await jsonParser.parse(jsonContent);
|
|
53
|
+
|
|
54
|
+
// Extract nested data
|
|
55
|
+
const items = await jsonParser.parse(jsonContent, {
|
|
56
|
+
dataPath: 'response.data.items'
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
// Parse JSONL
|
|
60
|
+
for await (const item of jsonParser.parseStreaming(jsonlContent, {
|
|
61
|
+
jsonLines: true
|
|
62
|
+
})) {
|
|
63
|
+
await processItem(item);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// Query data
|
|
67
|
+
const value = jsonParser.query(data, 'store.inventory.items[0]');
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### XML Parser
|
|
71
|
+
|
|
72
|
+
```typescript
|
|
73
|
+
import { XMLParserService, XMLBuilder } from '@fluentcommerce/fc-connect-sdk';
|
|
74
|
+
|
|
75
|
+
const xmlParser = new XMLParserService();
|
|
76
|
+
|
|
77
|
+
// Parse
|
|
78
|
+
const parsed = await xmlParser.parse(xmlContent);
|
|
79
|
+
|
|
80
|
+
// Access elements and attributes directly
|
|
81
|
+
const orderId = parsed.order?.['@_id'];
|
|
82
|
+
const items = parsed.order?.items?.item; // Array
|
|
83
|
+
|
|
84
|
+
// ℹ️ For advanced path resolution with complex queries:
|
|
85
|
+
// XMLPathResolver is part of the mapping services (NOT exported from parsers)
|
|
86
|
+
// See GraphQLMutationMapper documentation
|
|
87
|
+
|
|
88
|
+
// Generate XML
|
|
89
|
+
import { XMLBuilder } from '@fluentcommerce/fc-connect-sdk';
|
|
90
|
+
|
|
91
|
+
const builder = new XMLBuilder({
|
|
92
|
+
xmlDeclaration: true,
|
|
93
|
+
prettyPrint: true
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
const xml = builder.build({
|
|
97
|
+
Order: {
|
|
98
|
+
'@id': '12345',
|
|
99
|
+
Customer: { Name: 'John Doe' }
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Parquet Parser
|
|
105
|
+
|
|
106
|
+
```typescript
|
|
107
|
+
import { ParquetParserService, createConsoleLogger } from '@fluentcommerce/fc-connect-sdk';
|
|
108
|
+
|
|
109
|
+
const logger = createConsoleLogger();
|
|
110
|
+
const parquetParser = new ParquetParserService(logger);
|
|
111
|
+
|
|
112
|
+
// Parse
|
|
113
|
+
const records = await parquetParser.parse(parquetBuffer);
|
|
114
|
+
|
|
115
|
+
// Stream large files
|
|
116
|
+
for await (const batch of parquetParser.parseStreaming(parquetBuffer, {
|
|
117
|
+
batchSize: 1000
|
|
118
|
+
})) {
|
|
119
|
+
await processBatch(batch);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// Get column statistics
|
|
123
|
+
const stats = await parquetParser.getColumnStatistics(parquetBuffer);
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## API Reference
|
|
127
|
+
|
|
128
|
+
### CSVParserService
|
|
129
|
+
|
|
130
|
+
#### Methods
|
|
131
|
+
|
|
132
|
+
| Method | Parameters | Returns | Description |
|
|
133
|
+
|--------|------------|---------|-------------|
|
|
134
|
+
| `parse<T>()` | `csvContent: string, options?: CSVOptions` | `Promise<T[]>` | Parse CSV to array of objects |
|
|
135
|
+
| `parseStreaming<T>()` | `csvContent: string, options?: CSVOptions, batchSize?: number` | `AsyncGenerator<T \| T[]>` | Stream CSV records |
|
|
136
|
+
| `validate()` | `csvContent: string, schema: CSVValidationSchema` | `Promise<CSVValidationResult>` | Validate CSV structure |
|
|
137
|
+
| `stringify()` | `records: any[], options?: StringifyOptions` | `string` | Convert objects to CSV string |
|
|
138
|
+
|
|
139
|
+
#### CSVOptions
|
|
140
|
+
|
|
141
|
+
```typescript
|
|
142
|
+
interface CSVOptions {
|
|
143
|
+
columns?: boolean | string[]; // Column headers
|
|
144
|
+
delimiter?: string; // Field delimiter (default: ',')
|
|
145
|
+
quote?: string; // Quote character (default: '"')
|
|
146
|
+
escape?: string; // Escape character (default: '"')
|
|
147
|
+
skip_empty_lines?: boolean; // Skip empty lines
|
|
148
|
+
trim?: boolean; // Trim whitespace
|
|
149
|
+
from_line?: number; // Start from line N
|
|
150
|
+
relax_column_count?: boolean; // Allow variable columns
|
|
151
|
+
}
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
#### StringifyOptions
|
|
155
|
+
|
|
156
|
+
```typescript
|
|
157
|
+
interface StringifyOptions {
|
|
158
|
+
headers?: boolean; // Include header row (default: true)
|
|
159
|
+
delimiter?: string; // Field delimiter (default: ',')
|
|
160
|
+
quote?: string; // Quote character (default: '"')
|
|
161
|
+
escape?: string; // Escape character (default: '"')
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
#### CSV Stringify Example
|
|
166
|
+
|
|
167
|
+
**Status:** ✅ Available as public method on `CSVParserService`
|
|
168
|
+
|
|
169
|
+
```typescript
|
|
170
|
+
const csvParser = new CSVParserService();
|
|
171
|
+
|
|
172
|
+
const records = [
|
|
173
|
+
{ name: 'Alice', age: 30, city: 'NYC' },
|
|
174
|
+
{ name: 'Bob', age: 25, city: 'LA' }
|
|
175
|
+
];
|
|
176
|
+
|
|
177
|
+
const csvString = csvParser.stringify(records, {
|
|
178
|
+
headers: true, // Include header row
|
|
179
|
+
delimiter: ',', // Field delimiter
|
|
180
|
+
quote: '"', // Quote character
|
|
181
|
+
escape: '"' // Escape character
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
console.log(csvString);
|
|
185
|
+
// Output:
|
|
186
|
+
// name,age,city
|
|
187
|
+
// Alice,30,NYC
|
|
188
|
+
// Bob,25,LA
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### JSONParserService
|
|
192
|
+
|
|
193
|
+
#### Methods
|
|
194
|
+
|
|
195
|
+
| Method | Parameters | Returns | Description |
|
|
196
|
+
|--------|------------|---------|-------------|
|
|
197
|
+
| `parse<T>()` | `jsonContent: string, options?: JSONParseOptions` | `Promise<T>` | Parse JSON |
|
|
198
|
+
| `parseStreaming<T>()` | `jsonContent: string \| Readable, options?: JSONStreamOptions` | `AsyncGenerator<T>` | Stream JSON/JSONL |
|
|
199
|
+
| `validate()` | `jsonContent: string, options?: JSONParseOptions` | `JSONValidationResult` | Validate JSON |
|
|
200
|
+
| `query()` | `data: any, path: string` | `any` | Query nested data |
|
|
201
|
+
|
|
202
|
+
#### JSONParseOptions
|
|
203
|
+
|
|
204
|
+
```typescript
|
|
205
|
+
interface JSONParseOptions {
|
|
206
|
+
dataPath?: string; // Extract nested path
|
|
207
|
+
parseDates?: boolean; // Auto-parse dates
|
|
208
|
+
dateFormats?: string[]; // Date format patterns
|
|
209
|
+
validateSchema?: boolean; // Validate against schema
|
|
210
|
+
schema?: object; // JSON schema
|
|
211
|
+
reviver?: (key: string, value: any) => any; // Custom reviver
|
|
212
|
+
allowComments?: boolean; // Allow // and /* */
|
|
213
|
+
allowTrailingCommas?: boolean; // Allow trailing commas
|
|
214
|
+
maxDepth?: number; // Max nesting depth
|
|
215
|
+
}
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
#### JSONStreamOptions
|
|
219
|
+
|
|
220
|
+
```typescript
|
|
221
|
+
interface JSONStreamOptions {
|
|
222
|
+
batchSize?: number; // Records per batch
|
|
223
|
+
jsonLines?: boolean; // JSONL format
|
|
224
|
+
memoryLimit?: number; // Memory limit in bytes
|
|
225
|
+
parseDates?: boolean; // Auto-parse dates
|
|
226
|
+
}
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
### XMLParserService
|
|
230
|
+
|
|
231
|
+
#### Methods
|
|
232
|
+
|
|
233
|
+
| Method | Parameters | Returns | Description |
|
|
234
|
+
|--------|------------|---------|-------------|
|
|
235
|
+
| `parse()` | `xmlContent: string, options?: XMLParseOptions` | `Promise<Record<string, unknown>>` | Parse XML |
|
|
236
|
+
| `parseSync()` | `xmlContent: string, options?: XMLParseOptions` | `Record<string, unknown>` | Parse XML synchronously |
|
|
237
|
+
| `parseStreaming()` | `xmlContent: string, options?: XMLStreamOptions` | `AsyncGenerator<Record<string, unknown>>` | Stream XML elements |
|
|
238
|
+
| `validate()` | `xmlContent: string` | `{ valid: boolean; errors: string[] }` | Validate XML |
|
|
239
|
+
| `stringify()` | `data: any, options?: XMLStringifyOptions` | `string` | Convert object to XML |
|
|
240
|
+
|
|
241
|
+
#### XMLParseOptions
|
|
242
|
+
|
|
243
|
+
```typescript
|
|
244
|
+
interface XMLParseOptions {
|
|
245
|
+
lowercaseKeys?: boolean; // Lowercase element names
|
|
246
|
+
normalizeWhitespace?: boolean; // Normalize whitespace
|
|
247
|
+
parseNumbers?: boolean; // Auto-parse numbers
|
|
248
|
+
parseBooleans?: boolean; // Auto-parse booleans
|
|
249
|
+
parseAttributeValues?: boolean; // Auto-parse attribute values (numbers/booleans)
|
|
250
|
+
rootElement?: string; // Start from element
|
|
251
|
+
arrayElements?: string[]; // Elements to treat as arrays
|
|
252
|
+
includeAttributes?: boolean; // Include attributes
|
|
253
|
+
attributePrefix?: string; // Attribute prefix (default: '@')
|
|
254
|
+
textKey?: string; // Text content key (default: '#text')
|
|
255
|
+
maxDepth?: number; // Max nesting depth
|
|
256
|
+
removeNamespacePrefix?: boolean; // Remove ns: prefixes
|
|
257
|
+
}
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
### XML Path Resolution
|
|
261
|
+
|
|
262
|
+
**Note:** `XMLPathResolver` is part of the mapping services layer (NOT exported from parsers). For simple parsing, access parsed structure directly using standard JavaScript property access. For complex mapping scenarios with advanced path queries, use `GraphQLMutationMapper` (see mapping documentation).
|
|
263
|
+
|
|
264
|
+
### XMLBuilder
|
|
265
|
+
|
|
266
|
+
**Status:** ✅ Exported from SDK (`@fluentcommerce/fc-connect-sdk`)
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
#### Methods
|
|
271
|
+
|
|
272
|
+
| Method | Parameters | Returns | Description |
|
|
273
|
+
|--------|------------|---------|-------------|
|
|
274
|
+
| `build()` | `data: any, rootElement?: string` | `string` | Generate XML from object |
|
|
275
|
+
|
|
276
|
+
#### XML Generation Patterns
|
|
277
|
+
|
|
278
|
+
```typescript
|
|
279
|
+
// Simple text
|
|
280
|
+
{ "ItemId": "SKU001" }
|
|
281
|
+
// → <ItemId>SKU001</ItemId>
|
|
282
|
+
|
|
283
|
+
// Attribute only
|
|
284
|
+
{ "Order": { "@id": "123" } }
|
|
285
|
+
// → <Order id="123"/>
|
|
286
|
+
|
|
287
|
+
// Attribute + text (use #text)
|
|
288
|
+
{ "Color": { "@id": "9101", "#text": "Black" } }
|
|
289
|
+
// → <Color id="9101">Black</Color>
|
|
290
|
+
|
|
291
|
+
// Nested children
|
|
292
|
+
{ "Customer": { "Name": { "FirstName": "John" } } }
|
|
293
|
+
// → <Customer><Name><FirstName>John</FirstName></Name></Customer>
|
|
294
|
+
|
|
295
|
+
// Arrays
|
|
296
|
+
{ "Items": { "Item": [{ "Id": "1" }, { "Id": "2" }] } }
|
|
297
|
+
// → <Items><Item><Id>1</Id></Item><Item><Id>2</Id></Item></Items>
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
### ParquetParserService
|
|
301
|
+
|
|
302
|
+
#### Methods
|
|
303
|
+
|
|
304
|
+
| Method | Parameters | Returns | Description |
|
|
305
|
+
|--------|------------|---------|-------------|
|
|
306
|
+
| `parseSimple()` | `arrayBuffer: ArrayBuffer, fileName: string` | `Promise<ParquetDataRecord[]>` | Simple parse (easy mode) |
|
|
307
|
+
| `parse()` | `arrayBuffer: ArrayBuffer, fileName: string, options?: Partial<ParquetParsingOptions>` | `Promise<{records: ParquetDataRecord[]; stats: ParquetParsingStats}>` | Parse with stats |
|
|
308
|
+
| `parseStreaming()` | `arrayBuffer: ArrayBuffer, fileName: string, options?: Partial<ParquetParsingOptions>` | `Promise<ParquetStreamingResult>` | Stream Parquet |
|
|
309
|
+
| `validateFile()` | `arrayBuffer: ArrayBuffer, fileName: string` | `Promise<ValidationResult>` | Validate Parquet |
|
|
310
|
+
| `getPerformanceMetrics()` | none | `ParquetPerformanceMetrics` | Get performance stats |
|
|
311
|
+
|
|
312
|
+
#### ParquetParsingOptions
|
|
313
|
+
|
|
314
|
+
```typescript
|
|
315
|
+
interface ParquetParsingOptions {
|
|
316
|
+
batchSize?: number; // Records per batch
|
|
317
|
+
maxFileSize?: number; // Max file size in bytes
|
|
318
|
+
enableStreaming?: boolean; // Enable streaming mode
|
|
319
|
+
validation?: {
|
|
320
|
+
enabled?: boolean; // Enable validation
|
|
321
|
+
requiredColumns?: string[]; // Required column names
|
|
322
|
+
columnTypes?: Record<string, ParquetDataType>; // Expected types
|
|
323
|
+
allowAdditionalColumns?: boolean; // Allow extra columns
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
## Common Integration Patterns
|
|
329
|
+
|
|
330
|
+
### Pattern 1: CSV → Transform → Fluent
|
|
331
|
+
|
|
332
|
+
```typescript
|
|
333
|
+
import { CSVParserService, UniversalMapper, createClient } from '@fluentcommerce/fc-connect-sdk';
|
|
334
|
+
|
|
335
|
+
const csvParser = new CSVParserService();
|
|
336
|
+
const records = await csvParser.parse(csvContent);
|
|
337
|
+
|
|
338
|
+
const mapper = new UniversalMapper({
|
|
339
|
+
fields: {
|
|
340
|
+
ref: { source: 'sku', required: true },
|
|
341
|
+
qty: { source: 'quantity', resolver: 'sdk.parseInt' },
|
|
342
|
+
locationRef: { source: 'warehouse' }
|
|
343
|
+
}
|
|
344
|
+
});
|
|
345
|
+
|
|
346
|
+
const result = await mapper.map(records);
|
|
347
|
+
|
|
348
|
+
const client = await createClient({ config });
|
|
349
|
+
const job = await client.createJob({
|
|
350
|
+
name: 'inventory-ingestion',
|
|
351
|
+
retailerId: config.retailerId
|
|
352
|
+
});
|
|
353
|
+
await client.sendBatch(job.id, {
|
|
354
|
+
entityType: 'INVENTORY',
|
|
355
|
+
entities: result.data
|
|
356
|
+
});
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
### Pattern 2: JSON Webhook → Fluent
|
|
360
|
+
|
|
361
|
+
```typescript
|
|
362
|
+
import { JSONParserService, createClient } from '@fluentcommerce/fc-connect-sdk';
|
|
363
|
+
|
|
364
|
+
const jsonParser = new JSONParserService();
|
|
365
|
+
const order = await jsonParser.parse(webhookPayload, {
|
|
366
|
+
parseDates: true
|
|
367
|
+
});
|
|
368
|
+
|
|
369
|
+
const client = await createClient({ config });
|
|
370
|
+
await client.graphql({
|
|
371
|
+
query: createOrderMutation,
|
|
372
|
+
variables: { input: order }
|
|
373
|
+
});
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
### Pattern 3: XML → GraphQL Mutation
|
|
377
|
+
|
|
378
|
+
```typescript
|
|
379
|
+
import { XMLParserService, GraphQLMutationMapper, createClient } from '@fluentcommerce/fc-connect-sdk';
|
|
380
|
+
|
|
381
|
+
const xmlParser = new XMLParserService();
|
|
382
|
+
const parsed = await xmlParser.parse(xmlContent);
|
|
383
|
+
|
|
384
|
+
const mapper = new GraphQLMutationMapper(mappingConfig);
|
|
385
|
+
const mutation = await mapper.map(parsed);
|
|
386
|
+
|
|
387
|
+
const client = await createClient({ config });
|
|
388
|
+
await client.graphql({
|
|
389
|
+
query: mutation.query,
|
|
390
|
+
variables: mutation.variables
|
|
391
|
+
});
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
### Pattern 4: Fluent → Parquet → S3
|
|
395
|
+
|
|
396
|
+
```typescript
|
|
397
|
+
import { createClient, ParquetParserService, S3DataSource, createConsoleLogger } from '@fluentcommerce/fc-connect-sdk';
|
|
398
|
+
|
|
399
|
+
const logger = createConsoleLogger();
|
|
400
|
+
const client = await createClient({ config });
|
|
401
|
+
const result = await client.graphql({
|
|
402
|
+
query: extractionQuery,
|
|
403
|
+
pagination: { maxRecords: 1000000 }
|
|
404
|
+
});
|
|
405
|
+
|
|
406
|
+
const records = result.data.virtualPositions.edges.map(e => e.node);
|
|
407
|
+
const parquetBuffer = await convertToParquet(records);
|
|
408
|
+
|
|
409
|
+
const s3DataSource = new S3DataSource({
|
|
410
|
+
type: 'S3_PARQUET',
|
|
411
|
+
connectionId: 's3-parquet-extract',
|
|
412
|
+
name: 'S3 Parquet Extract',
|
|
413
|
+
s3Config: s3Config
|
|
414
|
+
}, logger);
|
|
415
|
+
await s3DataSource.uploadFile('data.parquet', parquetBuffer);
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
## Performance Guidelines
|
|
419
|
+
|
|
420
|
+
| File Size | Parser Strategy | Batch Size | Notes |
|
|
421
|
+
|-----------|----------------|------------|-------|
|
|
422
|
+
| < 10MB | Direct parsing | N/A | Fast, load into memory |
|
|
423
|
+
| 10-100MB | Streaming | 1000-5000 | Balance speed & memory |
|
|
424
|
+
| 100MB-1GB | Streaming | 500-1000 | Smaller batches for safety |
|
|
425
|
+
| > 1GB | Streaming + parallel | 100-500 | Process in parallel when possible |
|
|
426
|
+
|
|
427
|
+
## Error Handling Checklist
|
|
428
|
+
|
|
429
|
+
- ✅ Validate input before parsing
|
|
430
|
+
- ✅ Use try-catch blocks
|
|
431
|
+
- ✅ Log parsing errors with context
|
|
432
|
+
- ✅ Implement retry logic for transient failures
|
|
433
|
+
- ✅ Handle partial successes
|
|
434
|
+
- ✅ Monitor parsing performance metrics
|
|
435
|
+
|
|
436
|
+
## When to Use Each Parser
|
|
437
|
+
|
|
438
|
+
**CSV Parser** - Choose when:
|
|
439
|
+
- ✅ Data is tabular (rows and columns)
|
|
440
|
+
- ✅ Source is warehouse feeds or spreadsheet exports
|
|
441
|
+
- ✅ No nested data structures needed
|
|
442
|
+
- ✅ Universal compatibility required
|
|
443
|
+
|
|
444
|
+
**JSON Parser** - Choose when:
|
|
445
|
+
- ✅ Data comes from REST APIs or webhooks
|
|
446
|
+
- ✅ Need nested object/array structures
|
|
447
|
+
- ✅ Working with modern systems
|
|
448
|
+
- ✅ Type-aware data (strings, numbers, booleans)
|
|
449
|
+
|
|
450
|
+
**XML Parser** - Choose when:
|
|
451
|
+
- ✅ Integrating with EDI or B2B systems
|
|
452
|
+
- ✅ Source is SFCC, Adobe Commerce, or B2B systems
|
|
453
|
+
- ✅ Data has attributes and hierarchical structure
|
|
454
|
+
- ✅ XML schema validation needed
|
|
455
|
+
|
|
456
|
+
**Parquet Parser** - Choose when:
|
|
457
|
+
- ✅ Extracting large datasets (1M+ records)
|
|
458
|
+
- ✅ Need efficient compression (10:1 ratio)
|
|
459
|
+
- ✅ Feeding data warehouses or analytics platforms
|
|
460
|
+
- ✅ Working with columnar data
|
|
461
|
+
|
|
462
|
+
## Quick Troubleshooting
|
|
463
|
+
|
|
464
|
+
| Error | Likely Cause | Solution |
|
|
465
|
+
|-------|--------------|----------|
|
|
466
|
+
| "Invalid CSV format" | Wrong delimiter or malformed quotes | Try different delimiter, use relaxed options |
|
|
467
|
+
| "Memory limit exceeded" | File too large | Use streaming with smaller batches |
|
|
468
|
+
| "Unexpected token" (JSON) | Invalid JSON syntax | Try with `allowComments` and `allowTrailingCommas` |
|
|
469
|
+
| "Mismatched tags" (XML) | Malformed XML | Validate XML first, check for unclosed tags |
|
|
470
|
+
| "Cannot access attribute" (XML) | Wrong path syntax | Use XMLPathResolver with @ prefix for attributes |
|
|
471
|
+
| "Invalid Parquet file" | Corrupted or wrong format | Check file magic bytes, validate before parsing |
|
|
472
|
+
|
|
473
|
+
## See Also
|
|
474
|
+
|
|
475
|
+
- [Parser Foundations](../auto-pagination/modules/auto-pagination-01-foundations.md) - Detailed parser concepts
|
|
476
|
+
- [CSV Parser Guide](./modules/02-core-guides-parsers-02-csv-parser.md) - Complete CSV documentation
|
|
477
|
+
- [JSON Parser Guide](./modules/02-core-guides-parsers-03-json-parser.md) - Complete JSON documentation
|
|
478
|
+
- [XML Parser Guide](./modules/02-core-guides-parsers-04-xml-parser.md) - Complete XML documentation
|
|
479
|
+
- [Parquet Parser Guide](./modules/02-core-guides-parsers-05-parquet-parser.md) - Complete Parquet documentation
|
|
480
|
+
- [Integration Patterns](./modules/02-core-guides-parsers-06-integration-patterns.md) - Real-world examples
|
|
481
|
+
- [Troubleshooting](./modules/02-core-guides-parsers-07-troubleshooting.md) - Error handling and optimization
|
|
482
|
+
- [Examples](./examples/) - Copy-paste ready code
|