@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,392 +1,392 @@
|
|
|
1
|
-
# Deno SFTP Compatibility Fix
|
|
2
|
-
|
|
3
|
-
**Issue**: `setAutoPadding(false) not supported for Aes128Gcm yet`
|
|
4
|
-
|
|
5
|
-
**Impact**: SFTP connections fail when deployed to Versori platform (Deno runtime)
|
|
6
|
-
|
|
7
|
-
**Root Cause**: Deno's crypto implementation doesn't support `setAutoPadding(false)` for AES-GCM ciphers. When the SSH2 library tries to negotiate `aes128-gcm@openssh.com` with AWS Transfer Family or other SFTP servers, the connection fails.
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## Architecture Decision
|
|
12
|
-
|
|
13
|
-
**SDK handles platform compatibility, not connectors.**
|
|
14
|
-
|
|
15
|
-
The SDK automatically detects Deno runtime and configures compatible SSH algorithms. Connectors don't need any special configuration.
|
|
16
|
-
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
## How It Works
|
|
20
|
-
|
|
21
|
-
### Automatic Detection
|
|
22
|
-
|
|
23
|
-
The SDK detects Deno at runtime:
|
|
24
|
-
|
|
25
|
-
```typescript
|
|
26
|
-
const isDeno = typeof (globalThis as any).Deno !== 'undefined';
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
### Complete Algorithm Configuration
|
|
30
|
-
|
|
31
|
-
When Deno is detected, the SDK configures all four SSH negotiation phases:
|
|
32
|
-
|
|
33
|
-
1. **Cipher Algorithms** - Encryption (no AES-GCM)
|
|
34
|
-
2. **Server Host Key** - Server authentication
|
|
35
|
-
3. **Key Exchange (KEX)** - Session key negotiation
|
|
36
|
-
4. **HMAC** - Message authentication codes
|
|
37
|
-
|
|
38
|
-
**Why all four?** SSH negotiation requires compatible algorithms across all phases. Configuring only ciphers isn't enough—the server can still force AES-GCM during the handshake if other phases aren't restricted.
|
|
39
|
-
|
|
40
|
-
---
|
|
41
|
-
|
|
42
|
-
## Implementation Details
|
|
43
|
-
|
|
44
|
-
**Location**: `fc-connect-sdk/src/data-sources/sftp-data-source.ts` (search for `isDeno` to find current implementation)
|
|
45
|
-
|
|
46
|
-
> **Note:** Line numbers may change between SDK versions. Search for `isDeno` in the source file to locate the algorithm detection logic (currently around lines 2083-2143).
|
|
47
|
-
|
|
48
|
-
```typescript
|
|
49
|
-
// Auto-detect Deno and use compatible algorithms
|
|
50
|
-
const isDeno = typeof (globalThis as any).Deno !== 'undefined';
|
|
51
|
-
if (isDeno) {
|
|
52
|
-
connectConfig.algorithms = {
|
|
53
|
-
// Encryption ciphers (ONLY Deno-supported - no GCM, no aes192/256-cbc)
|
|
54
|
-
// ⚠️ CRITICAL: Deno crypto limitations - only aes128-ctr and aes128-cbc fully supported
|
|
55
|
-
cipher: [
|
|
56
|
-
'aes128-ctr', // Primary - most secure + fully supported
|
|
57
|
-
'aes128-cbc', // Fallback - supported in Deno
|
|
58
|
-
],
|
|
59
|
-
// Server authentication methods (most secure first)
|
|
60
|
-
serverHostKey: [
|
|
61
|
-
'rsa-sha2-512', // Most secure (preferred)
|
|
62
|
-
'rsa-sha2-256', // Modern standard
|
|
63
|
-
'ssh-rsa', // Older standard (avoid if possible)
|
|
64
|
-
'ecdsa-sha2-nistp256',
|
|
65
|
-
'ecdsa-sha2-nistp384',
|
|
66
|
-
'ecdsa-sha2-nistp521',
|
|
67
|
-
'ssh-ed25519',
|
|
68
|
-
],
|
|
69
|
-
// Key exchange algorithms
|
|
70
|
-
kex: [
|
|
71
|
-
'curve25519-sha256',
|
|
72
|
-
'curve25519-sha256@libssh.org',
|
|
73
|
-
'ecdh-sha2-nistp256',
|
|
74
|
-
'ecdh-sha2-nistp384',
|
|
75
|
-
'ecdh-sha2-nistp521',
|
|
76
|
-
'diffie-hellman-group14-sha256',
|
|
77
|
-
'diffie-hellman-group16-sha512',
|
|
78
|
-
'diffie-hellman-group18-sha512',
|
|
79
|
-
'diffie-hellman-group-exchange-sha256',
|
|
80
|
-
'diffie-hellman-group14-sha1',
|
|
81
|
-
],
|
|
82
|
-
// Message authentication codes (including ETM variants for AWS Transfer Family)
|
|
83
|
-
hmac: [
|
|
84
|
-
'hmac-sha2-256-etm@openssh.com',
|
|
85
|
-
'hmac-sha2-512-etm@openssh.com',
|
|
86
|
-
'hmac-sha2-256',
|
|
87
|
-
'hmac-sha2-512',
|
|
88
|
-
'hmac-sha1-etm@openssh.com',
|
|
89
|
-
'hmac-sha1',
|
|
90
|
-
],
|
|
91
|
-
// Compression
|
|
92
|
-
compress: ['none'],
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
### Algorithm Support Details
|
|
98
|
-
|
|
99
|
-
**Supported Ciphers (Deno-Compatible):**
|
|
100
|
-
- `aes128-ctr` ✅ Fully supported (recommended)
|
|
101
|
-
- `aes128-cbc` ✅ Fully supported (fallback)
|
|
102
|
-
|
|
103
|
-
> **⚠️ IMPORTANT:** Only AES-128 variants are fully supported in Deno runtime.
|
|
104
|
-
> AES-192 and AES-256 variants are NOT supported due to Deno's crypto limitations.
|
|
105
|
-
|
|
106
|
-
**Supported ServerHostKey (Preferred Order):**
|
|
107
|
-
- `rsa-sha2-512` ✅ Most secure (preferred for production)
|
|
108
|
-
- `rsa-sha2-256` ✅ Modern standard
|
|
109
|
-
- `ssh-rsa` ⚠️ Older standard (least secure, avoid if possible)
|
|
110
|
-
- `ecdsa-sha2-nistp256` ✅ ECDSA variant
|
|
111
|
-
- `ecdsa-sha2-nistp384` ✅ ECDSA variant
|
|
112
|
-
- `ecdsa-sha2-nistp521` ✅ ECDSA variant
|
|
113
|
-
- `ssh-ed25519` ✅ Modern elliptic curve
|
|
114
|
-
|
|
115
|
-
> **Best Practice:** Use `rsa-sha2-512` or `rsa-sha2-256` for modern SFTP servers.
|
|
116
|
-
|
|
117
|
-
**Supported HMAC Algorithms:**
|
|
118
|
-
- `hmac-sha2-256-etm@openssh.com` ✅ AWS Transfer Family compatible
|
|
119
|
-
- `hmac-sha2-512-etm@openssh.com` ✅ AWS Transfer Family compatible
|
|
120
|
-
- `hmac-sha2-256` ✅ Standard
|
|
121
|
-
- `hmac-sha2-512` ✅ Standard
|
|
122
|
-
- `hmac-sha1-etm@openssh.com` ✅ Older ETM variant
|
|
123
|
-
- `hmac-sha1` ⚠️ Older standard (avoid if possible)
|
|
124
|
-
|
|
125
|
-
> **Note:** ETM (Encrypt-Then-MAC) variants are required for AWS Transfer Family compatibility.
|
|
126
|
-
|
|
127
|
-
### Algorithm Compatibility Matrix
|
|
128
|
-
|
|
129
|
-
| Algorithm Type | Node.js | Deno | Notes |
|
|
130
|
-
|----------------|---------|------|-------|
|
|
131
|
-
| **Ciphers** | | | |
|
|
132
|
-
| aes128-ctr | ✅ | ✅ | Fully supported (recommended) |
|
|
133
|
-
| aes128-cbc | ✅ | ✅ | Fully supported (fallback) |
|
|
134
|
-
| aes192-ctr | ✅ | ❌ | Deno crypto limitation |
|
|
135
|
-
| aes192-cbc | ✅ | ❌ | Deno crypto limitation |
|
|
136
|
-
| aes256-ctr | ✅ | ❌ | Deno crypto limitation |
|
|
137
|
-
| aes256-cbc | ✅ | ❌ | Deno crypto limitation |
|
|
138
|
-
| aes128-gcm@openssh.com | ✅ | ❌ | Deno doesn't support setAutoPadding(false) |
|
|
139
|
-
| **HMAC** | | | |
|
|
140
|
-
| hmac-sha2-256 | ✅ | ✅ | Recommended |
|
|
141
|
-
| hmac-sha2-512 | ✅ | ✅ | Recommended |
|
|
142
|
-
| hmac-sha1 | ✅ | ✅ | Older systems compatibility |
|
|
143
|
-
| hmac-*-etm@openssh.com | ✅ | ✅ | AWS Transfer Family required |
|
|
144
|
-
| **ServerHostKey** | | | |
|
|
145
|
-
| rsa-sha2-512 | ✅ | ✅ | Most secure (preferred) |
|
|
146
|
-
| rsa-sha2-256 | ✅ | ✅ | Modern standard |
|
|
147
|
-
| ssh-rsa | ✅ | ✅ | Older standard (avoid if possible) |
|
|
148
|
-
| ecdsa-sha2-nistp* | ✅ | ✅ | ECDSA variants |
|
|
149
|
-
| ssh-ed25519 | ✅ | ✅ | Modern elliptic curve |
|
|
150
|
-
|
|
151
|
-
**Verification Commands:**
|
|
152
|
-
```bash
|
|
153
|
-
# Verify supported ciphers in source code
|
|
154
|
-
cd fc-connect-sdk
|
|
155
|
-
grep -A20 "isDeno" src/data-sources/sftp-data-source.ts | grep "cipher"
|
|
156
|
-
# Expected: Only aes128-ctr and aes128-cbc
|
|
157
|
-
|
|
158
|
-
# Find current line numbers
|
|
159
|
-
grep -n "isDeno" src/data-sources/sftp-data-source.ts
|
|
160
|
-
# Note: Currently around lines 2083-2143
|
|
161
|
-
|
|
162
|
-
# Verify HMAC algorithms
|
|
163
|
-
grep -A20 "isDeno" src/data-sources/sftp-data-source.ts | grep "hmac"
|
|
164
|
-
# Expected: 6 algorithms including ETM variants
|
|
165
|
-
|
|
166
|
-
# Verify ServerHostKey list
|
|
167
|
-
grep -A20 "isDeno" src/data-sources/sftp-data-source.ts | grep "serverHostKey"
|
|
168
|
-
# Expected: rsa-sha2-512 first, includes ECDSA variants
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
---
|
|
172
|
-
|
|
173
|
-
## Connector Usage
|
|
174
|
-
|
|
175
|
-
**No configuration needed!** Just use `SftpDataSource` as normal:
|
|
176
|
-
|
|
177
|
-
```typescript
|
|
178
|
-
import { SftpDataSource } from '@fluentcommerce/fc-connect-sdk';
|
|
179
|
-
|
|
180
|
-
const sftp = new SftpDataSource(
|
|
181
|
-
{
|
|
182
|
-
type: 'SFTP_XML',
|
|
183
|
-
connectionId: 'my-sftp',
|
|
184
|
-
name: 'My SFTP Connection',
|
|
185
|
-
settings: {
|
|
186
|
-
host: 's-xxxxx.server.transfer.ap-southeast-2.amazonaws.com',
|
|
187
|
-
port: 22,
|
|
188
|
-
username: 'myuser',
|
|
189
|
-
privateKey: sftpPrivateKey,
|
|
190
|
-
remotePath: '/upload',
|
|
191
|
-
filePattern: '*.xml',
|
|
192
|
-
// NO algorithms config needed - SDK handles it!
|
|
193
|
-
}
|
|
194
|
-
},
|
|
195
|
-
logger
|
|
196
|
-
);
|
|
197
|
-
|
|
198
|
-
// Works on both Node.js and Deno
|
|
199
|
-
await sftp.uploadFile('/upload/file.xml', xmlData);
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
---
|
|
203
|
-
|
|
204
|
-
## Override if Needed
|
|
205
|
-
|
|
206
|
-
For special cases, you can override the algorithms:
|
|
207
|
-
|
|
208
|
-
```typescript
|
|
209
|
-
// Algorithm configuration is an inline interface in SftpConnection
|
|
210
|
-
// (there is no exported SftpAlgorithms type to import)
|
|
211
|
-
const sftp = new SftpDataSource(
|
|
212
|
-
{
|
|
213
|
-
type: 'SFTP_XML',
|
|
214
|
-
settings: {
|
|
215
|
-
host: 'sftp.example.com',
|
|
216
|
-
// ... other settings
|
|
217
|
-
algorithms: {
|
|
218
|
-
cipher: ['aes128-ctr'], // Deno-compatible only!
|
|
219
|
-
serverHostKey: ['rsa-sha2-512', 'rsa-sha2-256'],
|
|
220
|
-
hmac: ['hmac-sha2-256-etm@openssh.com', 'hmac-sha2-256'],
|
|
221
|
-
// ... custom kex if needed
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
},
|
|
225
|
-
logger
|
|
226
|
-
);
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
> **Note:** There is no exported `SftpAlgorithms` type. The algorithms configuration
|
|
230
|
-
> is defined inline in the `SftpConnection` interface at `src/types/index.ts:626-632`.
|
|
231
|
-
|
|
232
|
-
**When to override:**
|
|
233
|
-
- Corporate SFTP server with restricted algorithm list
|
|
234
|
-
- Security policy requires specific algorithms
|
|
235
|
-
- Testing specific cipher combinations
|
|
236
|
-
- Need to force a particular algorithm order
|
|
237
|
-
|
|
238
|
-
**When NOT to override:**
|
|
239
|
-
- Normal AWS Transfer Family connections ✅
|
|
240
|
-
- Standard SFTP servers ✅
|
|
241
|
-
- Versori platform deployment ✅
|
|
242
|
-
- Default auto-detection works for your use case ✅
|
|
243
|
-
|
|
244
|
-
---
|
|
245
|
-
|
|
246
|
-
## Verified Compatibility
|
|
247
|
-
|
|
248
|
-
This configuration works with:
|
|
249
|
-
|
|
250
|
-
- ✅ AWS Transfer Family SFTP
|
|
251
|
-
- ✅ OpenSSH servers
|
|
252
|
-
- ✅ Versori platform (Deno runtime)
|
|
253
|
-
- ✅ Node.js runtime (no impact)
|
|
254
|
-
|
|
255
|
-
---
|
|
256
|
-
|
|
257
|
-
## Error Messages
|
|
258
|
-
|
|
259
|
-
### Before Fix
|
|
260
|
-
```
|
|
261
|
-
Error: Failed to create SFTP connection
|
|
262
|
-
getConnection: setAutoPadding(false) not supported for Aes128Gcm yet
|
|
263
|
-
```
|
|
264
|
-
|
|
265
|
-
### After Fix
|
|
266
|
-
```
|
|
267
|
-
✓ Deno runtime detected - using compatible SFTP algorithms
|
|
268
|
-
✓ SFTP connection initialized
|
|
269
|
-
✓ XML file uploaded successfully
|
|
270
|
-
```
|
|
271
|
-
|
|
272
|
-
---
|
|
273
|
-
|
|
274
|
-
## Testing
|
|
275
|
-
|
|
276
|
-
### Manual Test
|
|
277
|
-
1. Deploy connector to Versori
|
|
278
|
-
2. Check logs for: `"Deno runtime detected - using compatible SFTP algorithms"`
|
|
279
|
-
3. Verify successful SFTP connection and upload
|
|
280
|
-
|
|
281
|
-
### Automated Test
|
|
282
|
-
```bash
|
|
283
|
-
cd fc-connect-sdk
|
|
284
|
-
npm run test:deno
|
|
285
|
-
```
|
|
286
|
-
|
|
287
|
-
---
|
|
288
|
-
|
|
289
|
-
## Related Files
|
|
290
|
-
|
|
291
|
-
- `src/data-sources/sftp-data-source.ts` - Auto-detection logic (search for `isDeno`, currently around lines 2083-2143)
|
|
292
|
-
- `src/types/index.ts:626-632` - SftpConnection interface with inline algorithms configuration (no separate SftpAlgorithms type)
|
|
293
|
-
|
|
294
|
-
---
|
|
295
|
-
|
|
296
|
-
## References
|
|
297
|
-
|
|
298
|
-
- **Issue**: Deno crypto doesn't support `setAutoPadding(false)` for AES-GCM
|
|
299
|
-
- **Solution**: Complete SSH algorithm configuration for Deno runtime
|
|
300
|
-
- **Upstream**: Deno issue [denoland/deno#xxxxx](https://github.com/denoland/deno/issues) (when AES-GCM support is added, SDK will continue to work)
|
|
301
|
-
|
|
302
|
-
---
|
|
303
|
-
|
|
304
|
-
## Migration Guide: Node.js to Deno
|
|
305
|
-
|
|
306
|
-
### Before (Node.js - All Ciphers Work)
|
|
307
|
-
|
|
308
|
-
In Node.js, you can use any cipher algorithm without restrictions:
|
|
309
|
-
|
|
310
|
-
```typescript
|
|
311
|
-
// Node.js - no algorithm restrictions
|
|
312
|
-
const sftp = new SftpDataSource({
|
|
313
|
-
settings: {
|
|
314
|
-
host: 's-xxxxx.server.transfer.ap-southeast-2.amazonaws.com',
|
|
315
|
-
port: 22,
|
|
316
|
-
username: 'myuser',
|
|
317
|
-
privateKey: sftpPrivateKey,
|
|
318
|
-
// Optional: Custom algorithms (all work in Node.js)
|
|
319
|
-
algorithms: {
|
|
320
|
-
cipher: ['aes256-ctr', 'aes192-ctr', 'aes128-ctr'], // All work in Node.js
|
|
321
|
-
serverHostKey: ['ssh-rsa', 'rsa-sha2-256'],
|
|
322
|
-
hmac: ['hmac-sha2-256', 'hmac-sha1'],
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
}, logger);
|
|
326
|
-
```
|
|
327
|
-
|
|
328
|
-
### After (Deno - Only AES-128 Supported)
|
|
329
|
-
|
|
330
|
-
In Deno, you MUST restrict to AES-128 ciphers only:
|
|
331
|
-
|
|
332
|
-
```typescript
|
|
333
|
-
// Deno - restrict to compatible algorithms
|
|
334
|
-
const sftp = new SftpDataSource({
|
|
335
|
-
settings: {
|
|
336
|
-
host: 's-xxxxx.server.transfer.ap-southeast-2.amazonaws.com',
|
|
337
|
-
port: 22,
|
|
338
|
-
username: 'myuser',
|
|
339
|
-
privateKey: sftpPrivateKey,
|
|
340
|
-
// Required in Deno: Only AES-128 ciphers work
|
|
341
|
-
algorithms: {
|
|
342
|
-
cipher: ['aes128-ctr', 'aes128-cbc'], // ONLY these work in Deno!
|
|
343
|
-
serverHostKey: ['rsa-sha2-512', 'rsa-sha2-256'],
|
|
344
|
-
hmac: ['hmac-sha2-256-etm@openssh.com', 'hmac-sha2-256'],
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
}, logger);
|
|
348
|
-
```
|
|
349
|
-
|
|
350
|
-
### Recommended (Auto-Detection - Works Everywhere)
|
|
351
|
-
|
|
352
|
-
**Best approach**: Let the SDK handle it automatically:
|
|
353
|
-
|
|
354
|
-
```typescript
|
|
355
|
-
// ✅ RECOMMENDED - SDK auto-detects Deno and adjusts algorithms
|
|
356
|
-
const sftp = new SftpDataSource({
|
|
357
|
-
settings: {
|
|
358
|
-
host: 's-xxxxx.server.transfer.ap-southeast-2.amazonaws.com',
|
|
359
|
-
port: 22,
|
|
360
|
-
username: 'myuser',
|
|
361
|
-
privateKey: sftpPrivateKey,
|
|
362
|
-
// No algorithms specified - SDK handles it automatically!
|
|
363
|
-
// Works on both Node.js and Deno without changes
|
|
364
|
-
}
|
|
365
|
-
}, logger);
|
|
366
|
-
```
|
|
367
|
-
|
|
368
|
-
**Why this is best:**
|
|
369
|
-
- ✅ Same code works in Node.js and Deno
|
|
370
|
-
- ✅ SDK automatically restricts algorithms in Deno
|
|
371
|
-
- ✅ SDK uses all available algorithms in Node.js
|
|
372
|
-
- ✅ No manual configuration needed
|
|
373
|
-
- ✅ Future-proof (SDK updates automatically)
|
|
374
|
-
|
|
375
|
-
### Migration Checklist
|
|
376
|
-
|
|
377
|
-
When migrating connectors from Node.js to Deno/Versori:
|
|
378
|
-
|
|
379
|
-
- [ ] Remove manual algorithm configuration (let SDK auto-detect)
|
|
380
|
-
- [ ] Test SFTP connection on Versori platform
|
|
381
|
-
- [ ] Check logs for: `"Deno runtime detected - using compatible SFTP algorithms"`
|
|
382
|
-
- [ ] Verify successful file upload/download
|
|
383
|
-
- [ ] Remove AES-192/256 ciphers if manually configured
|
|
384
|
-
- [ ] Add ETM HMAC variants for AWS Transfer Family if needed
|
|
385
|
-
|
|
386
|
-
---
|
|
387
|
-
|
|
388
|
-
## Summary
|
|
389
|
-
|
|
390
|
-
**Before**: Complex algorithm configuration required in every connector
|
|
391
|
-
**After**: SDK automatically handles Deno compatibility
|
|
392
|
-
**Benefit**: Write once, deploy anywhere (Node.js or Deno)
|
|
1
|
+
# Deno SFTP Compatibility Fix
|
|
2
|
+
|
|
3
|
+
**Issue**: `setAutoPadding(false) not supported for Aes128Gcm yet`
|
|
4
|
+
|
|
5
|
+
**Impact**: SFTP connections fail when deployed to Versori platform (Deno runtime)
|
|
6
|
+
|
|
7
|
+
**Root Cause**: Deno's crypto implementation doesn't support `setAutoPadding(false)` for AES-GCM ciphers. When the SSH2 library tries to negotiate `aes128-gcm@openssh.com` with AWS Transfer Family or other SFTP servers, the connection fails.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Architecture Decision
|
|
12
|
+
|
|
13
|
+
**SDK handles platform compatibility, not connectors.**
|
|
14
|
+
|
|
15
|
+
The SDK automatically detects Deno runtime and configures compatible SSH algorithms. Connectors don't need any special configuration.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## How It Works
|
|
20
|
+
|
|
21
|
+
### Automatic Detection
|
|
22
|
+
|
|
23
|
+
The SDK detects Deno at runtime:
|
|
24
|
+
|
|
25
|
+
```typescript
|
|
26
|
+
const isDeno = typeof (globalThis as any).Deno !== 'undefined';
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Complete Algorithm Configuration
|
|
30
|
+
|
|
31
|
+
When Deno is detected, the SDK configures all four SSH negotiation phases:
|
|
32
|
+
|
|
33
|
+
1. **Cipher Algorithms** - Encryption (no AES-GCM)
|
|
34
|
+
2. **Server Host Key** - Server authentication
|
|
35
|
+
3. **Key Exchange (KEX)** - Session key negotiation
|
|
36
|
+
4. **HMAC** - Message authentication codes
|
|
37
|
+
|
|
38
|
+
**Why all four?** SSH negotiation requires compatible algorithms across all phases. Configuring only ciphers isn't enough—the server can still force AES-GCM during the handshake if other phases aren't restricted.
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Implementation Details
|
|
43
|
+
|
|
44
|
+
**Location**: `fc-connect-sdk/src/data-sources/sftp-data-source.ts` (search for `isDeno` to find current implementation)
|
|
45
|
+
|
|
46
|
+
> **Note:** Line numbers may change between SDK versions. Search for `isDeno` in the source file to locate the algorithm detection logic (currently around lines 2083-2143).
|
|
47
|
+
|
|
48
|
+
```typescript
|
|
49
|
+
// Auto-detect Deno and use compatible algorithms
|
|
50
|
+
const isDeno = typeof (globalThis as any).Deno !== 'undefined';
|
|
51
|
+
if (isDeno) {
|
|
52
|
+
connectConfig.algorithms = {
|
|
53
|
+
// Encryption ciphers (ONLY Deno-supported - no GCM, no aes192/256-cbc)
|
|
54
|
+
// ⚠️ CRITICAL: Deno crypto limitations - only aes128-ctr and aes128-cbc fully supported
|
|
55
|
+
cipher: [
|
|
56
|
+
'aes128-ctr', // Primary - most secure + fully supported
|
|
57
|
+
'aes128-cbc', // Fallback - supported in Deno
|
|
58
|
+
],
|
|
59
|
+
// Server authentication methods (most secure first)
|
|
60
|
+
serverHostKey: [
|
|
61
|
+
'rsa-sha2-512', // Most secure (preferred)
|
|
62
|
+
'rsa-sha2-256', // Modern standard
|
|
63
|
+
'ssh-rsa', // Older standard (avoid if possible)
|
|
64
|
+
'ecdsa-sha2-nistp256',
|
|
65
|
+
'ecdsa-sha2-nistp384',
|
|
66
|
+
'ecdsa-sha2-nistp521',
|
|
67
|
+
'ssh-ed25519',
|
|
68
|
+
],
|
|
69
|
+
// Key exchange algorithms
|
|
70
|
+
kex: [
|
|
71
|
+
'curve25519-sha256',
|
|
72
|
+
'curve25519-sha256@libssh.org',
|
|
73
|
+
'ecdh-sha2-nistp256',
|
|
74
|
+
'ecdh-sha2-nistp384',
|
|
75
|
+
'ecdh-sha2-nistp521',
|
|
76
|
+
'diffie-hellman-group14-sha256',
|
|
77
|
+
'diffie-hellman-group16-sha512',
|
|
78
|
+
'diffie-hellman-group18-sha512',
|
|
79
|
+
'diffie-hellman-group-exchange-sha256',
|
|
80
|
+
'diffie-hellman-group14-sha1',
|
|
81
|
+
],
|
|
82
|
+
// Message authentication codes (including ETM variants for AWS Transfer Family)
|
|
83
|
+
hmac: [
|
|
84
|
+
'hmac-sha2-256-etm@openssh.com',
|
|
85
|
+
'hmac-sha2-512-etm@openssh.com',
|
|
86
|
+
'hmac-sha2-256',
|
|
87
|
+
'hmac-sha2-512',
|
|
88
|
+
'hmac-sha1-etm@openssh.com',
|
|
89
|
+
'hmac-sha1',
|
|
90
|
+
],
|
|
91
|
+
// Compression
|
|
92
|
+
compress: ['none'],
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Algorithm Support Details
|
|
98
|
+
|
|
99
|
+
**Supported Ciphers (Deno-Compatible):**
|
|
100
|
+
- `aes128-ctr` ✅ Fully supported (recommended)
|
|
101
|
+
- `aes128-cbc` ✅ Fully supported (fallback)
|
|
102
|
+
|
|
103
|
+
> **⚠️ IMPORTANT:** Only AES-128 variants are fully supported in Deno runtime.
|
|
104
|
+
> AES-192 and AES-256 variants are NOT supported due to Deno's crypto limitations.
|
|
105
|
+
|
|
106
|
+
**Supported ServerHostKey (Preferred Order):**
|
|
107
|
+
- `rsa-sha2-512` ✅ Most secure (preferred for production)
|
|
108
|
+
- `rsa-sha2-256` ✅ Modern standard
|
|
109
|
+
- `ssh-rsa` ⚠️ Older standard (least secure, avoid if possible)
|
|
110
|
+
- `ecdsa-sha2-nistp256` ✅ ECDSA variant
|
|
111
|
+
- `ecdsa-sha2-nistp384` ✅ ECDSA variant
|
|
112
|
+
- `ecdsa-sha2-nistp521` ✅ ECDSA variant
|
|
113
|
+
- `ssh-ed25519` ✅ Modern elliptic curve
|
|
114
|
+
|
|
115
|
+
> **Best Practice:** Use `rsa-sha2-512` or `rsa-sha2-256` for modern SFTP servers.
|
|
116
|
+
|
|
117
|
+
**Supported HMAC Algorithms:**
|
|
118
|
+
- `hmac-sha2-256-etm@openssh.com` ✅ AWS Transfer Family compatible
|
|
119
|
+
- `hmac-sha2-512-etm@openssh.com` ✅ AWS Transfer Family compatible
|
|
120
|
+
- `hmac-sha2-256` ✅ Standard
|
|
121
|
+
- `hmac-sha2-512` ✅ Standard
|
|
122
|
+
- `hmac-sha1-etm@openssh.com` ✅ Older ETM variant
|
|
123
|
+
- `hmac-sha1` ⚠️ Older standard (avoid if possible)
|
|
124
|
+
|
|
125
|
+
> **Note:** ETM (Encrypt-Then-MAC) variants are required for AWS Transfer Family compatibility.
|
|
126
|
+
|
|
127
|
+
### Algorithm Compatibility Matrix
|
|
128
|
+
|
|
129
|
+
| Algorithm Type | Node.js | Deno | Notes |
|
|
130
|
+
|----------------|---------|------|-------|
|
|
131
|
+
| **Ciphers** | | | |
|
|
132
|
+
| aes128-ctr | ✅ | ✅ | Fully supported (recommended) |
|
|
133
|
+
| aes128-cbc | ✅ | ✅ | Fully supported (fallback) |
|
|
134
|
+
| aes192-ctr | ✅ | ❌ | Deno crypto limitation |
|
|
135
|
+
| aes192-cbc | ✅ | ❌ | Deno crypto limitation |
|
|
136
|
+
| aes256-ctr | ✅ | ❌ | Deno crypto limitation |
|
|
137
|
+
| aes256-cbc | ✅ | ❌ | Deno crypto limitation |
|
|
138
|
+
| aes128-gcm@openssh.com | ✅ | ❌ | Deno doesn't support setAutoPadding(false) |
|
|
139
|
+
| **HMAC** | | | |
|
|
140
|
+
| hmac-sha2-256 | ✅ | ✅ | Recommended |
|
|
141
|
+
| hmac-sha2-512 | ✅ | ✅ | Recommended |
|
|
142
|
+
| hmac-sha1 | ✅ | ✅ | Older systems compatibility |
|
|
143
|
+
| hmac-*-etm@openssh.com | ✅ | ✅ | AWS Transfer Family required |
|
|
144
|
+
| **ServerHostKey** | | | |
|
|
145
|
+
| rsa-sha2-512 | ✅ | ✅ | Most secure (preferred) |
|
|
146
|
+
| rsa-sha2-256 | ✅ | ✅ | Modern standard |
|
|
147
|
+
| ssh-rsa | ✅ | ✅ | Older standard (avoid if possible) |
|
|
148
|
+
| ecdsa-sha2-nistp* | ✅ | ✅ | ECDSA variants |
|
|
149
|
+
| ssh-ed25519 | ✅ | ✅ | Modern elliptic curve |
|
|
150
|
+
|
|
151
|
+
**Verification Commands:**
|
|
152
|
+
```bash
|
|
153
|
+
# Verify supported ciphers in source code
|
|
154
|
+
cd fc-connect-sdk
|
|
155
|
+
grep -A20 "isDeno" src/data-sources/sftp-data-source.ts | grep "cipher"
|
|
156
|
+
# Expected: Only aes128-ctr and aes128-cbc
|
|
157
|
+
|
|
158
|
+
# Find current line numbers
|
|
159
|
+
grep -n "isDeno" src/data-sources/sftp-data-source.ts
|
|
160
|
+
# Note: Currently around lines 2083-2143
|
|
161
|
+
|
|
162
|
+
# Verify HMAC algorithms
|
|
163
|
+
grep -A20 "isDeno" src/data-sources/sftp-data-source.ts | grep "hmac"
|
|
164
|
+
# Expected: 6 algorithms including ETM variants
|
|
165
|
+
|
|
166
|
+
# Verify ServerHostKey list
|
|
167
|
+
grep -A20 "isDeno" src/data-sources/sftp-data-source.ts | grep "serverHostKey"
|
|
168
|
+
# Expected: rsa-sha2-512 first, includes ECDSA variants
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## Connector Usage
|
|
174
|
+
|
|
175
|
+
**No configuration needed!** Just use `SftpDataSource` as normal:
|
|
176
|
+
|
|
177
|
+
```typescript
|
|
178
|
+
import { SftpDataSource } from '@fluentcommerce/fc-connect-sdk';
|
|
179
|
+
|
|
180
|
+
const sftp = new SftpDataSource(
|
|
181
|
+
{
|
|
182
|
+
type: 'SFTP_XML',
|
|
183
|
+
connectionId: 'my-sftp',
|
|
184
|
+
name: 'My SFTP Connection',
|
|
185
|
+
settings: {
|
|
186
|
+
host: 's-xxxxx.server.transfer.ap-southeast-2.amazonaws.com',
|
|
187
|
+
port: 22,
|
|
188
|
+
username: 'myuser',
|
|
189
|
+
privateKey: sftpPrivateKey,
|
|
190
|
+
remotePath: '/upload',
|
|
191
|
+
filePattern: '*.xml',
|
|
192
|
+
// NO algorithms config needed - SDK handles it!
|
|
193
|
+
}
|
|
194
|
+
},
|
|
195
|
+
logger
|
|
196
|
+
);
|
|
197
|
+
|
|
198
|
+
// Works on both Node.js and Deno
|
|
199
|
+
await sftp.uploadFile('/upload/file.xml', xmlData);
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## Override if Needed
|
|
205
|
+
|
|
206
|
+
For special cases, you can override the algorithms:
|
|
207
|
+
|
|
208
|
+
```typescript
|
|
209
|
+
// Algorithm configuration is an inline interface in SftpConnection
|
|
210
|
+
// (there is no exported SftpAlgorithms type to import)
|
|
211
|
+
const sftp = new SftpDataSource(
|
|
212
|
+
{
|
|
213
|
+
type: 'SFTP_XML',
|
|
214
|
+
settings: {
|
|
215
|
+
host: 'sftp.example.com',
|
|
216
|
+
// ... other settings
|
|
217
|
+
algorithms: {
|
|
218
|
+
cipher: ['aes128-ctr'], // Deno-compatible only!
|
|
219
|
+
serverHostKey: ['rsa-sha2-512', 'rsa-sha2-256'],
|
|
220
|
+
hmac: ['hmac-sha2-256-etm@openssh.com', 'hmac-sha2-256'],
|
|
221
|
+
// ... custom kex if needed
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
},
|
|
225
|
+
logger
|
|
226
|
+
);
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
> **Note:** There is no exported `SftpAlgorithms` type. The algorithms configuration
|
|
230
|
+
> is defined inline in the `SftpConnection` interface at `src/types/index.ts:626-632`.
|
|
231
|
+
|
|
232
|
+
**When to override:**
|
|
233
|
+
- Corporate SFTP server with restricted algorithm list
|
|
234
|
+
- Security policy requires specific algorithms
|
|
235
|
+
- Testing specific cipher combinations
|
|
236
|
+
- Need to force a particular algorithm order
|
|
237
|
+
|
|
238
|
+
**When NOT to override:**
|
|
239
|
+
- Normal AWS Transfer Family connections ✅
|
|
240
|
+
- Standard SFTP servers ✅
|
|
241
|
+
- Versori platform deployment ✅
|
|
242
|
+
- Default auto-detection works for your use case ✅
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
## Verified Compatibility
|
|
247
|
+
|
|
248
|
+
This configuration works with:
|
|
249
|
+
|
|
250
|
+
- ✅ AWS Transfer Family SFTP
|
|
251
|
+
- ✅ OpenSSH servers
|
|
252
|
+
- ✅ Versori platform (Deno runtime)
|
|
253
|
+
- ✅ Node.js runtime (no impact)
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
## Error Messages
|
|
258
|
+
|
|
259
|
+
### Before Fix
|
|
260
|
+
```
|
|
261
|
+
Error: Failed to create SFTP connection
|
|
262
|
+
getConnection: setAutoPadding(false) not supported for Aes128Gcm yet
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
### After Fix
|
|
266
|
+
```
|
|
267
|
+
✓ Deno runtime detected - using compatible SFTP algorithms
|
|
268
|
+
✓ SFTP connection initialized
|
|
269
|
+
✓ XML file uploaded successfully
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
## Testing
|
|
275
|
+
|
|
276
|
+
### Manual Test
|
|
277
|
+
1. Deploy connector to Versori
|
|
278
|
+
2. Check logs for: `"Deno runtime detected - using compatible SFTP algorithms"`
|
|
279
|
+
3. Verify successful SFTP connection and upload
|
|
280
|
+
|
|
281
|
+
### Automated Test
|
|
282
|
+
```bash
|
|
283
|
+
cd fc-connect-sdk
|
|
284
|
+
npm run test:deno
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
## Related Files
|
|
290
|
+
|
|
291
|
+
- `src/data-sources/sftp-data-source.ts` - Auto-detection logic (search for `isDeno`, currently around lines 2083-2143)
|
|
292
|
+
- `src/types/index.ts:626-632` - SftpConnection interface with inline algorithms configuration (no separate SftpAlgorithms type)
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
|
|
296
|
+
## References
|
|
297
|
+
|
|
298
|
+
- **Issue**: Deno crypto doesn't support `setAutoPadding(false)` for AES-GCM
|
|
299
|
+
- **Solution**: Complete SSH algorithm configuration for Deno runtime
|
|
300
|
+
- **Upstream**: Deno issue [denoland/deno#xxxxx](https://github.com/denoland/deno/issues) (when AES-GCM support is added, SDK will continue to work)
|
|
301
|
+
|
|
302
|
+
---
|
|
303
|
+
|
|
304
|
+
## Migration Guide: Node.js to Deno
|
|
305
|
+
|
|
306
|
+
### Before (Node.js - All Ciphers Work)
|
|
307
|
+
|
|
308
|
+
In Node.js, you can use any cipher algorithm without restrictions:
|
|
309
|
+
|
|
310
|
+
```typescript
|
|
311
|
+
// Node.js - no algorithm restrictions
|
|
312
|
+
const sftp = new SftpDataSource({
|
|
313
|
+
settings: {
|
|
314
|
+
host: 's-xxxxx.server.transfer.ap-southeast-2.amazonaws.com',
|
|
315
|
+
port: 22,
|
|
316
|
+
username: 'myuser',
|
|
317
|
+
privateKey: sftpPrivateKey,
|
|
318
|
+
// Optional: Custom algorithms (all work in Node.js)
|
|
319
|
+
algorithms: {
|
|
320
|
+
cipher: ['aes256-ctr', 'aes192-ctr', 'aes128-ctr'], // All work in Node.js
|
|
321
|
+
serverHostKey: ['ssh-rsa', 'rsa-sha2-256'],
|
|
322
|
+
hmac: ['hmac-sha2-256', 'hmac-sha1'],
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}, logger);
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
### After (Deno - Only AES-128 Supported)
|
|
329
|
+
|
|
330
|
+
In Deno, you MUST restrict to AES-128 ciphers only:
|
|
331
|
+
|
|
332
|
+
```typescript
|
|
333
|
+
// Deno - restrict to compatible algorithms
|
|
334
|
+
const sftp = new SftpDataSource({
|
|
335
|
+
settings: {
|
|
336
|
+
host: 's-xxxxx.server.transfer.ap-southeast-2.amazonaws.com',
|
|
337
|
+
port: 22,
|
|
338
|
+
username: 'myuser',
|
|
339
|
+
privateKey: sftpPrivateKey,
|
|
340
|
+
// Required in Deno: Only AES-128 ciphers work
|
|
341
|
+
algorithms: {
|
|
342
|
+
cipher: ['aes128-ctr', 'aes128-cbc'], // ONLY these work in Deno!
|
|
343
|
+
serverHostKey: ['rsa-sha2-512', 'rsa-sha2-256'],
|
|
344
|
+
hmac: ['hmac-sha2-256-etm@openssh.com', 'hmac-sha2-256'],
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
}, logger);
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
### Recommended (Auto-Detection - Works Everywhere)
|
|
351
|
+
|
|
352
|
+
**Best approach**: Let the SDK handle it automatically:
|
|
353
|
+
|
|
354
|
+
```typescript
|
|
355
|
+
// ✅ RECOMMENDED - SDK auto-detects Deno and adjusts algorithms
|
|
356
|
+
const sftp = new SftpDataSource({
|
|
357
|
+
settings: {
|
|
358
|
+
host: 's-xxxxx.server.transfer.ap-southeast-2.amazonaws.com',
|
|
359
|
+
port: 22,
|
|
360
|
+
username: 'myuser',
|
|
361
|
+
privateKey: sftpPrivateKey,
|
|
362
|
+
// No algorithms specified - SDK handles it automatically!
|
|
363
|
+
// Works on both Node.js and Deno without changes
|
|
364
|
+
}
|
|
365
|
+
}, logger);
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
**Why this is best:**
|
|
369
|
+
- ✅ Same code works in Node.js and Deno
|
|
370
|
+
- ✅ SDK automatically restricts algorithms in Deno
|
|
371
|
+
- ✅ SDK uses all available algorithms in Node.js
|
|
372
|
+
- ✅ No manual configuration needed
|
|
373
|
+
- ✅ Future-proof (SDK updates automatically)
|
|
374
|
+
|
|
375
|
+
### Migration Checklist
|
|
376
|
+
|
|
377
|
+
When migrating connectors from Node.js to Deno/Versori:
|
|
378
|
+
|
|
379
|
+
- [ ] Remove manual algorithm configuration (let SDK auto-detect)
|
|
380
|
+
- [ ] Test SFTP connection on Versori platform
|
|
381
|
+
- [ ] Check logs for: `"Deno runtime detected - using compatible SFTP algorithms"`
|
|
382
|
+
- [ ] Verify successful file upload/download
|
|
383
|
+
- [ ] Remove AES-192/256 ciphers if manually configured
|
|
384
|
+
- [ ] Add ETM HMAC variants for AWS Transfer Family if needed
|
|
385
|
+
|
|
386
|
+
---
|
|
387
|
+
|
|
388
|
+
## Summary
|
|
389
|
+
|
|
390
|
+
**Before**: Complex algorithm configuration required in every connector
|
|
391
|
+
**After**: SDK automatically handles Deno compatibility
|
|
392
|
+
**Benefit**: Write once, deploy anywhere (Node.js or Deno)
|