Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 3 additions & 3 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,9 @@ There is no separate lint step — `dune build` catches type errors and `dune fm

| Protocol | Generation | Runtime impl | Covers |
|----------|-----------|--------------|--------|
| AwsJson 1.0 | Done | `smaws_lib/protocols_impl/AwsJson.ml` | ~32 services (SQS, DynamoDB, …) |
| AwsJson 1.1 | Done | same | ~138 services total with 1.0 |
| AwsQuery | Done (core) | `smaws_lib/protocols_impl/AwsQuery.ml` | STS generated; CloudFormation, IAM, SNS, … pending. Passes smithy `aws.protocoltests.query` suite. Pending: idempotency-token auto-fill, request compression |
| AwsJson 1.0 | Done | `smaws_lib/protocols_impl/AwsJson.ml` | All modelled services using this protocol are generated |
| AwsJson 1.1 | Done | same | All modelled services using AwsJson 1.0/1.1 are generated (168 total) |
| AwsQuery | Done (core) | `smaws_lib/protocols_impl/AwsQuery.ml` | All modelled services using this protocol are generated (CloudFormation, IAM, SNS, …). Passes smithy `aws.protocoltests.query` suite. Pending: idempotency-token auto-fill, request compression |
| restJson 1 | Not started | — | ~224 services |
| restXml | Not started | — | S3, CloudFront |
| EC2 Query | Not started | — | EC2 |
Expand Down
123 changes: 123 additions & 0 deletions bin/AwsGenerator.ml
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,129 @@ let main () =
("com.amazonaws.waf", "WAF");
("com.amazonaws.wafv2", "WAFv2");
("com.amazonaws.workmail", "WorkMail");
("com.amazonaws.acmpca", "ACMPCA");
("com.amazonaws.applicationautoscaling", "ApplicationAutoScaling");
("com.amazonaws.applicationdiscoveryservice", "ApplicationDiscoveryService");
("com.amazonaws.applicationinsights", "ApplicationInsights");
("com.amazonaws.appstream", "AppStream");
("com.amazonaws.arcregionswitch", "ARCRegionswitch");
("com.amazonaws.athena", "Athena");
("com.amazonaws.autoscaling", "AutoScaling");
("com.amazonaws.autoscalingplans", "AutoScalingPlans");
("com.amazonaws.b2bi", "B2bi");
("com.amazonaws.bcmdashboards", "BCMDashboards");
("com.amazonaws.bcmdataexports", "BCMDataExports");
("com.amazonaws.bcmpricingcalculator", "BCMPricingCalculator");
("com.amazonaws.bcmrecommendedactions", "BCMRecommendedActions");
("com.amazonaws.bedrockdataautomationruntime", "BedrockDataAutomationRuntime");
("com.amazonaws.billing", "Billing");
("com.amazonaws.budgets", "Budgets");
("com.amazonaws.cloud9", "Cloud9");
("com.amazonaws.cloudcontrol", "CloudControl");
("com.amazonaws.cloudformation", "CloudFormation");
("com.amazonaws.cloudhsm", "CloudHSM");
("com.amazonaws.cloudhsmv2", "CloudHSMV2");
("com.amazonaws.cloudsearch", "CloudSearch");
("com.amazonaws.cloudwatch", "CloudWatch");
("com.amazonaws.cloudwatchevents", "CloudWatchEvents");
("com.amazonaws.cloudwatchlogs", "CloudWatchLogs");
("com.amazonaws.codebuild", "CodeBuild");
("com.amazonaws.codecommit", "CodeCommit");
("com.amazonaws.codedeploy", "CodeDeploy");
("com.amazonaws.codepipeline", "CodePipeline");
("com.amazonaws.codestarconnections", "CodeStarconnections");
("com.amazonaws.cognitoidentityprovider", "CognitoIdentityProvider");
("com.amazonaws.comprehend", "Comprehend");
("com.amazonaws.comprehendmedical", "ComprehendMedical");
("com.amazonaws.computeoptimizer", "ComputeOptimizer");
("com.amazonaws.computeoptimizerautomation", "ComputeOptimizerAutomation");
("com.amazonaws.costandusagereportservice", "CostandUsageReportService");
("com.amazonaws.costexplorer", "CostExplorer");
("com.amazonaws.costoptimizationhub", "CostOptimizationHub");
("com.amazonaws.databasemigrationservice", "DatabaseMigrationService");
("com.amazonaws.datapipeline", "DataPipeline");
("com.amazonaws.datasync", "DataSync");
("com.amazonaws.devicefarm", "DeviceFarm");
("com.amazonaws.directconnect", "DirectConnect");
("com.amazonaws.docdb", "DocDB");
("com.amazonaws.ec2instanceconnect", "EC2InstanceConnect");
("com.amazonaws.ecr", "ECR");
("com.amazonaws.ecrpublic", "ECRPUBLIC");
("com.amazonaws.ecs", "ECS");
("com.amazonaws.elasticache", "ElastiCache");
("com.amazonaws.elasticbeanstalk", "ElasticBeanstalk");
("com.amazonaws.elasticloadbalancing", "ElasticLoadBalancing");
("com.amazonaws.elasticloadbalancingv2", "ElasticLoadBalancingv2");
("com.amazonaws.emr", "EMR");
("com.amazonaws.evs", "Evs");
("com.amazonaws.forecast", "Forecast");
("com.amazonaws.forecastquery", "Forecastquery");
("com.amazonaws.frauddetector", "FraudDetector");
("com.amazonaws.freetier", "FreeTier");
("com.amazonaws.fsx", "FSx");
("com.amazonaws.gamelift", "GameLift");
("com.amazonaws.globalaccelerator", "GlobalAccelerator");
("com.amazonaws.glue", "Glue");
("com.amazonaws.health", "Health");
("com.amazonaws.healthlake", "HealthLake");
("com.amazonaws.iam", "IAM");
("com.amazonaws.identitystore", "Identitystore");
("com.amazonaws.inspector", "Inspector");
("com.amazonaws.interconnect", "Interconnect");
("com.amazonaws.invoicing", "Invoicing");
("com.amazonaws.iotfleetwise", "IoTFleetWise");
("com.amazonaws.iotsecuretunneling", "IoTSecureTunneling");
("com.amazonaws.iotthingsgraph", "IoTThingsGraph");
("com.amazonaws.kendraranking", "KendraRanking");
("com.amazonaws.keyspacesstreams", "KeyspacesStreams");
("com.amazonaws.licensemanager", "LicenseManager");
("com.amazonaws.lookoutequipment", "LookoutEquipment");
("com.amazonaws.machinelearning", "MachineLearning");
("com.amazonaws.mailmanager", "MailManager");
("com.amazonaws.marketplacecommerceanalytics", "MarketplaceCommerceAnalytics");
("com.amazonaws.marketplaceentitlementservice", "MarketplaceEntitlementService");
("com.amazonaws.marketplacemetering", "MarketplaceMetering");
("com.amazonaws.memorydb", "MemoryDB");
("com.amazonaws.migrationhubconfig", "MigrationHubConfig");
("com.amazonaws.mturk", "MTurk");
("com.amazonaws.mwaaserverless", "MWAAServerless");
("com.amazonaws.networkfirewall", "NetworkFirewall");
("com.amazonaws.odb", "Odb");
("com.amazonaws.organizations", "Organizations");
("com.amazonaws.partnercentralaccount", "PartnerCentralAccount");
("com.amazonaws.partnercentralbenefits", "PartnerCentralBenefits");
("com.amazonaws.partnercentralchannel", "PartnerCentralChannel");
("com.amazonaws.partnercentralselling", "PartnerCentralSelling");
("com.amazonaws.paymentcryptography", "PaymentCryptography");
("com.amazonaws.pcs", "PCS");
("com.amazonaws.pinpointsmsvoicev2", "PinpointSMSVoiceV2");
("com.amazonaws.pricing", "Pricing");
("com.amazonaws.rds", "RDS");
("com.amazonaws.redshift", "Redshift");
("com.amazonaws.redshiftdata", "RedshiftData");
("com.amazonaws.redshiftserverless", "RedshiftServerless");
("com.amazonaws.route53domains", "Route53Domains");
("com.amazonaws.route53resolver", "Route53Resolver");
("com.amazonaws.secretsmanager", "SecretsManager");
("com.amazonaws.servicecatalog", "ServiceCatalog");
("com.amazonaws.servicequotas", "ServiceQuotas");
("com.amazonaws.ses", "SES");
("com.amazonaws.sns", "SNS");
("com.amazonaws.ssmcontacts", "SSMContacts");
("com.amazonaws.ssoadmin", "SSOAdmin");
("com.amazonaws.storagegateway", "StorageGateway");
("com.amazonaws.support", "Support");
("com.amazonaws.textract", "Textract");
("com.amazonaws.timestreaminfluxdb", "TimestreamInfluxDB");
("com.amazonaws.timestreamquery", "TimestreamQuery");
("com.amazonaws.timestreamwrite", "TimestreamWrite");
("com.amazonaws.transfer", "Transfer");
("com.amazonaws.translate", "Translate");
("com.amazonaws.verifiedpermissions", "VerifiedPermissions");
("com.amazonaws.voiceid", "VoiceID");
("com.amazonaws.wafregional", "WAFRegional");
("com.amazonaws.workspaces", "WorkSpaces");
("com.amazonaws.workspacesinstances", "WorkspacesInstances");
]
in
let* generator_map =
Expand Down
10 changes: 7 additions & 3 deletions codegen/AwsProtocolQuery.ml
Original file line number Diff line number Diff line change
Expand Up @@ -541,7 +541,11 @@ module Deserialiser = struct
let key_expr =
match parse_primitive_from_string ms.mapKey.target (read_element key_tag) with
| Some e -> e
| None -> read_element key_tag
| None ->
let kf =
B.pexp_ident (Location.mknoloc (func_longident ~namespace_resolver ms.mapKey.target))
in
read_sequence key_tag (B.pexp_apply kf [ (Nolabel, exp_ident "i") ])
in
let val_expr =
match parse_primitive_from_string ms.mapValue.target (read_element val_tag) with
Expand Down Expand Up @@ -874,8 +878,8 @@ module Deserialiser = struct
(B.pexp_ident (Location.mknoloc (make_lident ~names:(deser_mod @ [ helper ]))))
[ (Nolabel, s_expr) ])))
else Some (read_data_lambda ())
| IntegerShape _ | LongShape _ | ShortShape _ | ByteShape _ ->
Some (primitive_of_xml_lambda "int_of_string")
| LongShape _ -> Some (primitive_of_xml_lambda "long_of_string")
| IntegerShape _ | ShortShape _ | ByteShape _ -> Some (primitive_of_xml_lambda "int_of_string")
| BigIntegerShape _ -> Some (primitive_of_xml_lambda "big_int_of_string")
| BigDecimalShape _ -> Some (primitive_of_xml_lambda "big_decimal_of_string")
| BooleanShape _ -> Some (primitive_of_xml_lambda "bool_of_string")
Expand Down
8 changes: 7 additions & 1 deletion codegen/SafeNames.ml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,12 @@ let reservedWords =
"Some";
"None";
"Result";
"result";
"list";
"array";
"ref";
"exn";
"char";
"Ok";
"Error";
"constraint";
Expand Down Expand Up @@ -120,7 +126,7 @@ let camelCase name =
String.uppercase (String.sub name ~pos:0 ~len:1)
^ String.sub name ~pos:1 ~len:(String.length name - 1)

let safeConstructorName name = name |> symbolName |> camelCase
let safeConstructorName name = name |> symbolName |> camelCase |> translateReserved
let variantReplaceRe = Str.regexp "-|#|:|\\.|/| |\\(|\\)|\\\\`"

let safeVariantName name =
Expand Down
2 changes: 1 addition & 1 deletion codegen_test/trait_test.ml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

let json_ref s =
let open Smaws_parse.Json.Decode in
Ok { tree = Yojson.Basic.from_string s; path = "$" }
Ok { tree = Yojson.Safe.from_string s; path = "$" }

let parse_trait name s = Smaws_parse.Smithy.parseTrait name (json_ref s)
let show_err = Smaws_parse.Json.Decode.jsonParseErrorToString
Expand Down
5 changes: 2 additions & 3 deletions sdkgen/gen_protocol_tests.ml
Original file line number Diff line number Diff line change
Expand Up @@ -279,12 +279,11 @@ and value_mapper ~shape_resolver ~target ~value =
[
( Ppxlib.Nolabel,
B.pexp_constant
Ppxlib.(Pconst_string (value |> Yojson.Basic.pretty_to_string, Location.none, None))
);
Ppxlib.(Pconst_string (value |> Yojson.Safe.pretty_to_string, Location.none, None)) );
]
| _ ->
failwith
("Unsupported shape type: " ^ target ^ " for value " ^ Yojson.Basic.pretty_to_string value)
("Unsupported shape type: " ^ target ^ " for value " ^ Yojson.Safe.pretty_to_string value)

let make_input_expr ~shape_resolver input_shape_name params =
let params = Option.value ~default:(`Assoc []) params in
Expand Down
131 changes: 130 additions & 1 deletion sdks/Smaws_Clients.ml
Original file line number Diff line number Diff line change
@@ -1,39 +1,168 @@
module ACM = Smaws_Client_ACM
module ACMPCA = Smaws_Client_ACMPCA
module ApplicationAutoScaling = Smaws_Client_ApplicationAutoScaling
module ApplicationDiscoveryService = Smaws_Client_ApplicationDiscoveryService
module ApplicationInsights = Smaws_Client_ApplicationInsights
module AppRunner = Smaws_Client_AppRunner
module AppStream = Smaws_Client_AppStream
module ARCRegionswitch = Smaws_Client_ARCRegionswitch
module Athena = Smaws_Client_Athena
module AutoScaling = Smaws_Client_AutoScaling
module AutoScalingPlans = Smaws_Client_AutoScalingPlans
module B2bi = Smaws_Client_B2bi
module BackupGateway = Smaws_Client_BackupGateway
module BCMDashboards = Smaws_Client_BCMDashboards
module BCMDataExports = Smaws_Client_BCMDataExports
module BCMPricingCalculator = Smaws_Client_BCMPricingCalculator
module BCMRecommendedActions = Smaws_Client_BCMRecommendedActions
module BedrockDataAutomationRuntime = Smaws_Client_BedrockDataAutomationRuntime
module Billing = Smaws_Client_Billing
module Budgets = Smaws_Client_Budgets
module Cloud9 = Smaws_Client_Cloud9
module CloudControl = Smaws_Client_CloudControl
module CloudFormation = Smaws_Client_CloudFormation
module CloudHSM = Smaws_Client_CloudHSM
module CloudHSMV2 = Smaws_Client_CloudHSMV2
module CloudSearch = Smaws_Client_CloudSearch
module CloudTrail = Smaws_Client_CloudTrail
module CloudWatch = Smaws_Client_CloudWatch
module CloudWatchEvents = Smaws_Client_CloudWatchEvents
module CloudWatchLogs = Smaws_Client_CloudWatchLogs
module CodeBuild = Smaws_Client_CodeBuild
module CodeCommit = Smaws_Client_CodeCommit
module CodeConnections = Smaws_Client_CodeConnections
module CodeDeploy = Smaws_Client_CodeDeploy
module CodePipeline = Smaws_Client_CodePipeline
module CodeStarconnections = Smaws_Client_CodeStarconnections
module CognitoIdentity = Smaws_Client_CognitoIdentity
module CognitoIdentityProvider = Smaws_Client_CognitoIdentityProvider
module Comprehend = Smaws_Client_Comprehend
module ComprehendMedical = Smaws_Client_ComprehendMedical
module ComputeOptimizer = Smaws_Client_ComputeOptimizer
module ComputeOptimizerAutomation = Smaws_Client_ComputeOptimizerAutomation
module ConfigService = Smaws_Client_ConfigService
module CostandUsageReportService = Smaws_Client_CostandUsageReportService
module CostExplorer = Smaws_Client_CostExplorer
module CostOptimizationHub = Smaws_Client_CostOptimizationHub
module DataPipeline = Smaws_Client_DataPipeline
module DatabaseMigrationService = Smaws_Client_DatabaseMigrationService
module DataSync = Smaws_Client_DataSync
module DAX = Smaws_Client_DAX
module DeviceFarm = Smaws_Client_DeviceFarm
module DirectConnect = Smaws_Client_DirectConnect
module DirectoryService = Smaws_Client_DirectoryService
module DocDB = Smaws_Client_DocDB
module DynamoDB = Smaws_Client_DynamoDB
module DynamoDBStreams = Smaws_Client_DynamoDBStreams
module EC2InstanceConnect = Smaws_Client_EC2InstanceConnect
module ECR = Smaws_Client_ECR
module ECRPUBLIC = Smaws_Client_ECRPUBLIC
module ECS = Smaws_Client_ECS
module ElasticBeanstalk = Smaws_Client_ElasticBeanstalk
module ElasticLoadBalancing = Smaws_Client_ElasticLoadBalancing
module ElasticLoadBalancingv2 = Smaws_Client_ElasticLoadBalancingv2
module ElastiCache = Smaws_Client_ElastiCache
module EMR = Smaws_Client_EMR
module EventBridge = Smaws_Client_EventBridge
module Evs = Smaws_Client_Evs
module Firehose = Smaws_Client_Firehose
module FMS = Smaws_Client_FMS
module Forecast = Smaws_Client_Forecast
module Forecastquery = Smaws_Client_Forecastquery
module FraudDetector = Smaws_Client_FraudDetector
module FreeTier = Smaws_Client_FreeTier
module FSx = Smaws_Client_FSx
module GameLift = Smaws_Client_GameLift
module GlobalAccelerator = Smaws_Client_GlobalAccelerator
module Glue = Smaws_Client_Glue
module Health = Smaws_Client_Health
module HealthLake = Smaws_Client_HealthLake
module IAM = Smaws_Client_IAM
module Identitystore = Smaws_Client_Identitystore
module Inspector = Smaws_Client_Inspector
module Interconnect = Smaws_Client_Interconnect
module Invoicing = Smaws_Client_Invoicing
module IoTFleetWise = Smaws_Client_IoTFleetWise
module IoTSecureTunneling = Smaws_Client_IoTSecureTunneling
module IoTThingsGraph = Smaws_Client_IoTThingsGraph
module Kendra = Smaws_Client_Kendra
module KendraRanking = Smaws_Client_KendraRanking
module Keyspaces = Smaws_Client_Keyspaces
module KeyspacesStreams = Smaws_Client_KeyspacesStreams
module Kinesis = Smaws_Client_Kinesis
module KinesisAnalytics = Smaws_Client_KinesisAnalytics
module KinesisAnalyticsV2 = Smaws_Client_KinesisAnalyticsV2
module Kinesis = Smaws_Client_Kinesis
module KMS = Smaws_Client_KMS
module LicenseManager = Smaws_Client_LicenseManager
module Lightsail = Smaws_Client_Lightsail
module LookoutEquipment = Smaws_Client_LookoutEquipment
module MachineLearning = Smaws_Client_MachineLearning
module MailManager = Smaws_Client_MailManager
module MarketplaceAgreement = Smaws_Client_MarketplaceAgreement
module MarketplaceCommerceAnalytics = Smaws_Client_MarketplaceCommerceAnalytics
module MarketplaceEntitlementService = Smaws_Client_MarketplaceEntitlementService
module MarketplaceMetering = Smaws_Client_MarketplaceMetering
module MediaStore = Smaws_Client_MediaStore
module MemoryDB = Smaws_Client_MemoryDB
module MigrationHub = Smaws_Client_MigrationHub
module MigrationHubConfig = Smaws_Client_MigrationHubConfig
module MTurk = Smaws_Client_MTurk
module MWAAServerless = Smaws_Client_MWAAServerless
module Neptune = Smaws_Client_Neptune
module NetworkFirewall = Smaws_Client_NetworkFirewall
module Odb = Smaws_Client_Odb
module OpenSearchServerless = Smaws_Client_OpenSearchServerless
module Organizations = Smaws_Client_Organizations
module PartnerCentralAccount = Smaws_Client_PartnerCentralAccount
module PartnerCentralBenefits = Smaws_Client_PartnerCentralBenefits
module PartnerCentralChannel = Smaws_Client_PartnerCentralChannel
module PartnerCentralSelling = Smaws_Client_PartnerCentralSelling
module PaymentCryptography = Smaws_Client_PaymentCryptography
module PCS = Smaws_Client_PCS
module Personalize = Smaws_Client_Personalize
module PI = Smaws_Client_PI
module PinpointSMSVoiceV2 = Smaws_Client_PinpointSMSVoiceV2
module Pricing = Smaws_Client_Pricing
module Proton = Smaws_Client_Proton
module RDS = Smaws_Client_RDS
module Redshift = Smaws_Client_Redshift
module RedshiftData = Smaws_Client_RedshiftData
module RedshiftServerless = Smaws_Client_RedshiftServerless
module Rekognition = Smaws_Client_Rekognition
module ResourceGroupsTaggingAPI = Smaws_Client_ResourceGroupsTaggingAPI
module Route53Domains = Smaws_Client_Route53Domains
module Route53RecoveryCluster = Smaws_Client_Route53RecoveryCluster
module Route53Resolver = Smaws_Client_Route53Resolver
module SageMaker = Smaws_Client_SageMaker
module SecretsManager = Smaws_Client_SecretsManager
module ServiceCatalog = Smaws_Client_ServiceCatalog
module ServiceQuotas = Smaws_Client_ServiceQuotas
module ServiceDiscovery = Smaws_Client_ServiceDiscovery
module SES = Smaws_Client_SES
module SFN = Smaws_Client_SFN
module Shield = Smaws_Client_Shield
module Snowball = Smaws_Client_Snowball
module SNS = Smaws_Client_SNS
module SQS = Smaws_Client_SQS
module SSM = Smaws_Client_SSM
module SSMContacts = Smaws_Client_SSMContacts
module SSOAdmin = Smaws_Client_SSOAdmin
module StorageGateway = Smaws_Client_StorageGateway
module STS = Smaws_Client_STS
module Support = Smaws_Client_Support
module SWF = Smaws_Client_SWF
module Textract = Smaws_Client_Textract
module TimestreamInfluxDB = Smaws_Client_TimestreamInfluxDB
module TimestreamQuery = Smaws_Client_TimestreamQuery
module TimestreamWrite = Smaws_Client_TimestreamWrite
module Transcribe = Smaws_Client_Transcribe
module Transfer = Smaws_Client_Transfer
module Translate = Smaws_Client_Translate
module VerifiedPermissions = Smaws_Client_VerifiedPermissions
module VoiceID = Smaws_Client_VoiceID
module WAF = Smaws_Client_WAF
module WAFRegional = Smaws_Client_WAFRegional
module WAFV2 = Smaws_Client_WAFV2
module WorkMail = Smaws_Client_WorkMail
module WorkSpaces = Smaws_Client_WorkSpaces
module WorkspacesInstances = Smaws_Client_WorkspacesInstances
5 changes: 5 additions & 0 deletions sdks/acm-pca/Smaws_Client_ACMPCA.ml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
module Types = Types
include Builders
include Operations
module Json_serializers = Json_serializers
module Json_deserializers = Json_deserializers
Loading
Loading