aws-iam-language-server 0.0.9 → 0.0.10

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.
Files changed (489) hide show
  1. package/package.json +1 -1
  2. package/readme.md +9 -0
  3. package/src/data/servicereference/services/a2c.json +1 -1
  4. package/src/data/servicereference/services/a4b.json +1 -1
  5. package/src/data/servicereference/services/access-analyzer.json +1 -1
  6. package/src/data/servicereference/services/account.json +1 -1
  7. package/src/data/servicereference/services/acm-pca.json +1 -1
  8. package/src/data/servicereference/services/acm.json +1 -1
  9. package/src/data/servicereference/services/aco-automation.json +1 -1
  10. package/src/data/servicereference/services/action-recommendations.json +1 -1
  11. package/src/data/servicereference/services/activate.json +1 -1
  12. package/src/data/servicereference/services/aidevops.json +1 -1
  13. package/src/data/servicereference/services/aiops.json +1 -1
  14. package/src/data/servicereference/services/airflow-serverless.json +1 -1
  15. package/src/data/servicereference/services/airflow.json +1 -1
  16. package/src/data/servicereference/services/amplify.json +1 -1
  17. package/src/data/servicereference/services/amplifybackend.json +1 -1
  18. package/src/data/servicereference/services/amplifyuibuilder.json +1 -1
  19. package/src/data/servicereference/services/aoss.json +1 -1
  20. package/src/data/servicereference/services/apigateway.json +1 -1
  21. package/src/data/servicereference/services/app-integrations.json +1 -1
  22. package/src/data/servicereference/services/appconfig.json +1 -1
  23. package/src/data/servicereference/services/appfabric.json +1 -1
  24. package/src/data/servicereference/services/appflow.json +1 -1
  25. package/src/data/servicereference/services/application-autoscaling.json +1 -1
  26. package/src/data/servicereference/services/application-signals.json +1 -1
  27. package/src/data/servicereference/services/application-transformation.json +1 -1
  28. package/src/data/servicereference/services/applicationinsights.json +1 -1
  29. package/src/data/servicereference/services/appmesh-preview.json +1 -1
  30. package/src/data/servicereference/services/appmesh.json +1 -1
  31. package/src/data/servicereference/services/apprunner.json +1 -1
  32. package/src/data/servicereference/services/appstream.json +1 -1
  33. package/src/data/servicereference/services/appstudio.json +1 -1
  34. package/src/data/servicereference/services/appsync.json +1 -1
  35. package/src/data/servicereference/services/apptest.json +1 -1
  36. package/src/data/servicereference/services/aps.json +1 -1
  37. package/src/data/servicereference/services/arc-region-switch.json +1 -1
  38. package/src/data/servicereference/services/arc-zonal-shift.json +1 -1
  39. package/src/data/servicereference/services/arsenal.json +1 -1
  40. package/src/data/servicereference/services/artifact.json +1 -1
  41. package/src/data/servicereference/services/athena.json +1 -1
  42. package/src/data/servicereference/services/auditmanager.json +1 -1
  43. package/src/data/servicereference/services/autoscaling-plans.json +1 -1
  44. package/src/data/servicereference/services/autoscaling.json +1 -1
  45. package/src/data/servicereference/services/aws-marketplace-management.json +1 -1
  46. package/src/data/servicereference/services/aws-marketplace.json +1 -1
  47. package/src/data/servicereference/services/aws-mcp.json +1 -1
  48. package/src/data/servicereference/services/aws-portal.json +1 -1
  49. package/src/data/servicereference/services/awsconnector.json +1 -1
  50. package/src/data/servicereference/services/b2bi.json +1 -1
  51. package/src/data/servicereference/services/backup-gateway.json +1 -1
  52. package/src/data/servicereference/services/backup-search.json +1 -1
  53. package/src/data/servicereference/services/backup-storage.json +1 -1
  54. package/src/data/servicereference/services/backup.json +1 -1
  55. package/src/data/servicereference/services/batch.json +1 -1
  56. package/src/data/servicereference/services/bcm-dashboards.json +1 -1
  57. package/src/data/servicereference/services/bcm-data-exports.json +1 -1
  58. package/src/data/servicereference/services/bcm-pricing-calculator.json +1 -1
  59. package/src/data/servicereference/services/bcm-recommended-actions.json +1 -1
  60. package/src/data/servicereference/services/bedrock-agentcore.json +1 -1
  61. package/src/data/servicereference/services/bedrock-mantle.json +1 -1
  62. package/src/data/servicereference/services/bedrock.json +1 -1
  63. package/src/data/servicereference/services/billing.json +1 -1
  64. package/src/data/servicereference/services/billingconductor.json +1 -1
  65. package/src/data/servicereference/services/braket.json +1 -1
  66. package/src/data/servicereference/services/budgets.json +1 -1
  67. package/src/data/servicereference/services/bugbust.json +1 -1
  68. package/src/data/servicereference/services/cases.json +1 -1
  69. package/src/data/servicereference/services/cassandra.json +1 -1
  70. package/src/data/servicereference/services/ce.json +1 -1
  71. package/src/data/servicereference/services/chatbot.json +1 -1
  72. package/src/data/servicereference/services/chime.json +1 -1
  73. package/src/data/servicereference/services/cleanrooms-ml.json +1 -1
  74. package/src/data/servicereference/services/cleanrooms.json +1 -1
  75. package/src/data/servicereference/services/cloud9.json +1 -1
  76. package/src/data/servicereference/services/clouddirectory.json +1 -1
  77. package/src/data/servicereference/services/cloudformation.json +1 -1
  78. package/src/data/servicereference/services/cloudfront-keyvaluestore.json +1 -1
  79. package/src/data/servicereference/services/cloudfront.json +1 -1
  80. package/src/data/servicereference/services/cloudhsm.json +1 -1
  81. package/src/data/servicereference/services/cloudsearch.json +1 -1
  82. package/src/data/servicereference/services/cloudshell.json +1 -1
  83. package/src/data/servicereference/services/cloudtrail-data.json +1 -1
  84. package/src/data/servicereference/services/cloudtrail.json +1 -1
  85. package/src/data/servicereference/services/cloudwatch.json +1 -1
  86. package/src/data/servicereference/services/codeartifact.json +1 -1
  87. package/src/data/servicereference/services/codebuild.json +1 -1
  88. package/src/data/servicereference/services/codecatalyst.json +1 -1
  89. package/src/data/servicereference/services/codecommit.json +1 -1
  90. package/src/data/servicereference/services/codeconnections.json +1 -1
  91. package/src/data/servicereference/services/codedeploy-commands-secure.json +1 -1
  92. package/src/data/servicereference/services/codedeploy.json +1 -1
  93. package/src/data/servicereference/services/codeguru-profiler.json +1 -1
  94. package/src/data/servicereference/services/codeguru-reviewer.json +1 -1
  95. package/src/data/servicereference/services/codeguru-security.json +1 -1
  96. package/src/data/servicereference/services/codeguru.json +1 -1
  97. package/src/data/servicereference/services/codepipeline.json +1 -1
  98. package/src/data/servicereference/services/codestar-connections.json +1 -1
  99. package/src/data/servicereference/services/codestar-notifications.json +1 -1
  100. package/src/data/servicereference/services/codestar.json +1 -1
  101. package/src/data/servicereference/services/codewhisperer.json +1 -1
  102. package/src/data/servicereference/services/cognito-identity.json +1 -1
  103. package/src/data/servicereference/services/cognito-idp.json +1 -1
  104. package/src/data/servicereference/services/cognito-sync.json +1 -1
  105. package/src/data/servicereference/services/comprehend.json +1 -1
  106. package/src/data/servicereference/services/comprehendmedical.json +1 -1
  107. package/src/data/servicereference/services/compute-optimizer.json +1 -1
  108. package/src/data/servicereference/services/config.json +1 -1
  109. package/src/data/servicereference/services/connect-campaigns.json +1 -1
  110. package/src/data/servicereference/services/connect.json +1 -1
  111. package/src/data/servicereference/services/consoleapp.json +1 -1
  112. package/src/data/servicereference/services/consolidatedbilling.json +1 -1
  113. package/src/data/servicereference/services/controlcatalog.json +1 -1
  114. package/src/data/servicereference/services/controltower.json +1 -1
  115. package/src/data/servicereference/services/cost-optimization-hub.json +1 -1
  116. package/src/data/servicereference/services/cur.json +1 -1
  117. package/src/data/servicereference/services/customer-verification.json +1 -1
  118. package/src/data/servicereference/services/databrew.json +1 -1
  119. package/src/data/servicereference/services/dataexchange.json +1 -1
  120. package/src/data/servicereference/services/datapipeline.json +1 -1
  121. package/src/data/servicereference/services/datasync.json +1 -1
  122. package/src/data/servicereference/services/datazone.json +1 -1
  123. package/src/data/servicereference/services/dax.json +1 -1
  124. package/src/data/servicereference/services/dbqms.json +1 -1
  125. package/src/data/servicereference/services/deadline.json +1 -1
  126. package/src/data/servicereference/services/detective.json +1 -1
  127. package/src/data/servicereference/services/devicefarm.json +1 -1
  128. package/src/data/servicereference/services/devops-guru.json +1 -1
  129. package/src/data/servicereference/services/directconnect.json +1 -1
  130. package/src/data/servicereference/services/discovery.json +1 -1
  131. package/src/data/servicereference/services/dlm.json +1 -1
  132. package/src/data/servicereference/services/dms.json +1 -1
  133. package/src/data/servicereference/services/docdb-elastic.json +1 -1
  134. package/src/data/servicereference/services/drs.json +1 -1
  135. package/src/data/servicereference/services/ds-data.json +1 -1
  136. package/src/data/servicereference/services/ds.json +1 -1
  137. package/src/data/servicereference/services/dsql.json +1 -1
  138. package/src/data/servicereference/services/dynamodb.json +1 -1
  139. package/src/data/servicereference/services/ebs.json +1 -1
  140. package/src/data/servicereference/services/ec2-instance-connect.json +1 -1
  141. package/src/data/servicereference/services/ec2.json +1 -1
  142. package/src/data/servicereference/services/ec2messages.json +1 -1
  143. package/src/data/servicereference/services/ecr-public.json +1 -1
  144. package/src/data/servicereference/services/ecr.json +1 -1
  145. package/src/data/servicereference/services/ecs-mcp.json +1 -1
  146. package/src/data/servicereference/services/ecs.json +1 -1
  147. package/src/data/servicereference/services/eks-auth.json +1 -1
  148. package/src/data/servicereference/services/eks-mcp.json +1 -1
  149. package/src/data/servicereference/services/eks.json +1 -1
  150. package/src/data/servicereference/services/elasticache.json +1 -1
  151. package/src/data/servicereference/services/elasticbeanstalk.json +1 -1
  152. package/src/data/servicereference/services/elasticfilesystem.json +1 -1
  153. package/src/data/servicereference/services/elasticloadbalancing.json +1 -1
  154. package/src/data/servicereference/services/elasticmapreduce.json +1 -1
  155. package/src/data/servicereference/services/elastictranscoder.json +1 -1
  156. package/src/data/servicereference/services/elemental-activations.json +1 -1
  157. package/src/data/servicereference/services/elemental-appliances-software.json +1 -1
  158. package/src/data/servicereference/services/elemental-inference.json +1 -1
  159. package/src/data/servicereference/services/elemental-support-cases.json +1 -1
  160. package/src/data/servicereference/services/elemental-support-content.json +1 -1
  161. package/src/data/servicereference/services/emr-containers.json +1 -1
  162. package/src/data/servicereference/services/emr-serverless.json +1 -1
  163. package/src/data/servicereference/services/entityresolution.json +1 -1
  164. package/src/data/servicereference/services/es.json +1 -1
  165. package/src/data/servicereference/services/events.json +1 -1
  166. package/src/data/servicereference/services/evidently.json +1 -1
  167. package/src/data/servicereference/services/evs.json +1 -1
  168. package/src/data/servicereference/services/execute-api.json +1 -1
  169. package/src/data/servicereference/services/finspace-api.json +1 -1
  170. package/src/data/servicereference/services/finspace.json +1 -1
  171. package/src/data/servicereference/services/firehose.json +1 -1
  172. package/src/data/servicereference/services/fis.json +1 -1
  173. package/src/data/servicereference/services/fms.json +1 -1
  174. package/src/data/servicereference/services/forecast.json +1 -1
  175. package/src/data/servicereference/services/frauddetector.json +1 -1
  176. package/src/data/servicereference/services/freertos.json +1 -1
  177. package/src/data/servicereference/services/freetier.json +1 -1
  178. package/src/data/servicereference/services/fsx.json +1 -1
  179. package/src/data/servicereference/services/gamelift.json +1 -1
  180. package/src/data/servicereference/services/gameliftstreams.json +1 -1
  181. package/src/data/servicereference/services/geo-maps.json +1 -1
  182. package/src/data/servicereference/services/geo-places.json +1 -1
  183. package/src/data/servicereference/services/geo-routes.json +1 -1
  184. package/src/data/servicereference/services/geo.json +1 -1
  185. package/src/data/servicereference/services/glacier.json +1 -1
  186. package/src/data/servicereference/services/globalaccelerator.json +1 -1
  187. package/src/data/servicereference/services/glue.json +1 -1
  188. package/src/data/servicereference/services/grafana.json +1 -1
  189. package/src/data/servicereference/services/greengrass.json +1 -1
  190. package/src/data/servicereference/services/groundstation.json +1 -1
  191. package/src/data/servicereference/services/groundtruthlabeling.json +1 -1
  192. package/src/data/servicereference/services/guardduty.json +1 -1
  193. package/src/data/servicereference/services/health-agent.json +1 -1
  194. package/src/data/servicereference/services/health.json +1 -1
  195. package/src/data/servicereference/services/healthlake.json +1 -1
  196. package/src/data/servicereference/services/honeycode.json +1 -1
  197. package/src/data/servicereference/services/iam.json +1 -1
  198. package/src/data/servicereference/services/identity-sync.json +1 -1
  199. package/src/data/servicereference/services/identitystore-auth.json +1 -1
  200. package/src/data/servicereference/services/identitystore.json +1 -1
  201. package/src/data/servicereference/services/imagebuilder.json +1 -1
  202. package/src/data/servicereference/services/importexport.json +1 -1
  203. package/src/data/servicereference/services/inspector-scan.json +1 -1
  204. package/src/data/servicereference/services/inspector.json +1 -1
  205. package/src/data/servicereference/services/inspector2-telemetry.json +1 -1
  206. package/src/data/servicereference/services/inspector2.json +1 -1
  207. package/src/data/servicereference/services/interconnect.json +1 -1
  208. package/src/data/servicereference/services/internetmonitor.json +1 -1
  209. package/src/data/servicereference/services/invoicing.json +1 -1
  210. package/src/data/servicereference/services/iot-device-tester.json +1 -1
  211. package/src/data/servicereference/services/iot.json +1 -1
  212. package/src/data/servicereference/services/iotanalytics.json +1 -1
  213. package/src/data/servicereference/services/iotdeviceadvisor.json +1 -1
  214. package/src/data/servicereference/services/iotevents.json +1 -1
  215. package/src/data/servicereference/services/iotfleethub.json +1 -1
  216. package/src/data/servicereference/services/iotfleetwise.json +1 -1
  217. package/src/data/servicereference/services/iotjobsdata.json +1 -1
  218. package/src/data/servicereference/services/iotmanagedintegrations.json +1 -1
  219. package/src/data/servicereference/services/iotsitewise.json +1 -1
  220. package/src/data/servicereference/services/iottwinmaker.json +1 -1
  221. package/src/data/servicereference/services/iotwireless.json +1 -1
  222. package/src/data/servicereference/services/iq-permission.json +1 -1
  223. package/src/data/servicereference/services/iq.json +1 -1
  224. package/src/data/servicereference/services/ivs.json +1 -1
  225. package/src/data/servicereference/services/ivschat.json +1 -1
  226. package/src/data/servicereference/services/kafka-cluster.json +1 -1
  227. package/src/data/servicereference/services/kafka.json +1 -1
  228. package/src/data/servicereference/services/kafkaconnect.json +1 -1
  229. package/src/data/servicereference/services/kendra-ranking.json +1 -1
  230. package/src/data/servicereference/services/kendra.json +1 -1
  231. package/src/data/servicereference/services/kinesis.json +1 -1
  232. package/src/data/servicereference/services/kinesisanalytics.json +1 -1
  233. package/src/data/servicereference/services/kinesisvideo.json +1 -1
  234. package/src/data/servicereference/services/kms.json +1 -1
  235. package/src/data/servicereference/services/lakeformation.json +1 -1
  236. package/src/data/servicereference/services/lambda.json +1 -1
  237. package/src/data/servicereference/services/launchwizard.json +1 -1
  238. package/src/data/servicereference/services/lex.json +1 -1
  239. package/src/data/servicereference/services/license-manager-linux-subscriptions.json +1 -1
  240. package/src/data/servicereference/services/license-manager-user-subscriptions.json +1 -1
  241. package/src/data/servicereference/services/license-manager.json +1 -1
  242. package/src/data/servicereference/services/lightsail.json +1 -1
  243. package/src/data/servicereference/services/logs.json +1 -1
  244. package/src/data/servicereference/services/lookoutequipment.json +1 -1
  245. package/src/data/servicereference/services/lookoutmetrics.json +1 -1
  246. package/src/data/servicereference/services/lookoutvision.json +1 -1
  247. package/src/data/servicereference/services/m2.json +1 -1
  248. package/src/data/servicereference/services/machinelearning.json +1 -1
  249. package/src/data/servicereference/services/macie2.json +1 -1
  250. package/src/data/servicereference/services/managedblockchain-query.json +1 -1
  251. package/src/data/servicereference/services/managedblockchain.json +1 -1
  252. package/src/data/servicereference/services/mapcredits.json +1 -1
  253. package/src/data/servicereference/services/marketplacecommerceanalytics.json +1 -1
  254. package/src/data/servicereference/services/mechanicalturk.json +1 -1
  255. package/src/data/servicereference/services/mediaconnect.json +1 -1
  256. package/src/data/servicereference/services/mediaconvert.json +1 -1
  257. package/src/data/servicereference/services/mediaimport.json +1 -1
  258. package/src/data/servicereference/services/medialive.json +1 -1
  259. package/src/data/servicereference/services/mediapackage-vod.json +1 -1
  260. package/src/data/servicereference/services/mediapackage.json +1 -1
  261. package/src/data/servicereference/services/mediapackagev2.json +1 -1
  262. package/src/data/servicereference/services/mediastore.json +1 -1
  263. package/src/data/servicereference/services/mediatailor.json +1 -1
  264. package/src/data/servicereference/services/medical-imaging.json +1 -1
  265. package/src/data/servicereference/services/memorydb.json +1 -1
  266. package/src/data/servicereference/services/mgh.json +1 -1
  267. package/src/data/servicereference/services/mgn.json +1 -1
  268. package/src/data/servicereference/services/migrationhub-orchestrator.json +1 -1
  269. package/src/data/servicereference/services/migrationhub-strategy.json +1 -1
  270. package/src/data/servicereference/services/mobileanalytics.json +1 -1
  271. package/src/data/servicereference/services/mobiletargeting.json +1 -1
  272. package/src/data/servicereference/services/monitron.json +1 -1
  273. package/src/data/servicereference/services/mpa.json +1 -1
  274. package/src/data/servicereference/services/mq.json +1 -1
  275. package/src/data/servicereference/services/neptune-db.json +1 -1
  276. package/src/data/servicereference/services/neptune-graph.json +1 -1
  277. package/src/data/servicereference/services/network-firewall.json +1 -1
  278. package/src/data/servicereference/services/network-security-director.json +1 -1
  279. package/src/data/servicereference/services/networkflowmonitor.json +1 -1
  280. package/src/data/servicereference/services/networkmanager-chat.json +1 -1
  281. package/src/data/servicereference/services/networkmanager.json +1 -1
  282. package/src/data/servicereference/services/networkmonitor.json +1 -1
  283. package/src/data/servicereference/services/nimble.json +1 -1
  284. package/src/data/servicereference/services/notifications-contacts.json +1 -1
  285. package/src/data/servicereference/services/notifications.json +1 -1
  286. package/src/data/servicereference/services/nova-act.json +1 -1
  287. package/src/data/servicereference/services/oam.json +1 -1
  288. package/src/data/servicereference/services/observabilityadmin.json +1 -1
  289. package/src/data/servicereference/services/odb.json +1 -1
  290. package/src/data/servicereference/services/omics.json +1 -1
  291. package/src/data/servicereference/services/one.json +1 -1
  292. package/src/data/servicereference/services/opensearch.json +1 -1
  293. package/src/data/servicereference/services/opsworks-cm.json +1 -1
  294. package/src/data/servicereference/services/opsworks.json +1 -1
  295. package/src/data/servicereference/services/organizations.json +1 -1
  296. package/src/data/servicereference/services/osis.json +1 -1
  297. package/src/data/servicereference/services/outposts.json +1 -1
  298. package/src/data/servicereference/services/panorama.json +1 -1
  299. package/src/data/servicereference/services/partnercentral-account-management.json +1 -1
  300. package/src/data/servicereference/services/partnercentral.json +1 -1
  301. package/src/data/servicereference/services/payment-cryptography.json +1 -1
  302. package/src/data/servicereference/services/payments.json +1 -1
  303. package/src/data/servicereference/services/pca-connector-ad.json +1 -1
  304. package/src/data/servicereference/services/pca-connector-scep.json +1 -1
  305. package/src/data/servicereference/services/pcs.json +1 -1
  306. package/src/data/servicereference/services/personalize.json +1 -1
  307. package/src/data/servicereference/services/pi.json +1 -1
  308. package/src/data/servicereference/services/pipes.json +1 -1
  309. package/src/data/servicereference/services/polly.json +1 -1
  310. package/src/data/servicereference/services/pricing.json +1 -1
  311. package/src/data/servicereference/services/pricingplanmanager.json +1 -1
  312. package/src/data/servicereference/services/private-networks.json +1 -1
  313. package/src/data/servicereference/services/profile.json +1 -1
  314. package/src/data/servicereference/services/proton.json +1 -1
  315. package/src/data/servicereference/services/purchase-orders.json +1 -1
  316. package/src/data/servicereference/services/q.json +1 -1
  317. package/src/data/servicereference/services/qapps.json +1 -1
  318. package/src/data/servicereference/services/qbusiness.json +1 -1
  319. package/src/data/servicereference/services/qdeveloper.json +1 -1
  320. package/src/data/servicereference/services/qldb.json +1 -1
  321. package/src/data/servicereference/services/quicksight.json +1 -1
  322. package/src/data/servicereference/services/ram.json +1 -1
  323. package/src/data/servicereference/services/rbin.json +1 -1
  324. package/src/data/servicereference/services/rds-data.json +1 -1
  325. package/src/data/servicereference/services/rds-db.json +1 -1
  326. package/src/data/servicereference/services/rds.json +1 -1
  327. package/src/data/servicereference/services/redshift-data.json +1 -1
  328. package/src/data/servicereference/services/redshift-serverless.json +1 -1
  329. package/src/data/servicereference/services/redshift.json +1 -1
  330. package/src/data/servicereference/services/refactor-spaces.json +1 -1
  331. package/src/data/servicereference/services/rekognition.json +1 -1
  332. package/src/data/servicereference/services/repostspace.json +1 -1
  333. package/src/data/servicereference/services/resiliencehub.json +1 -1
  334. package/src/data/servicereference/services/resource-explorer-2.json +1 -1
  335. package/src/data/servicereference/services/resource-explorer.json +1 -1
  336. package/src/data/servicereference/services/resource-groups.json +1 -1
  337. package/src/data/servicereference/services/rhelkb.json +1 -1
  338. package/src/data/servicereference/services/robomaker.json +1 -1
  339. package/src/data/servicereference/services/rolesanywhere.json +1 -1
  340. package/src/data/servicereference/services/route53-recovery-cluster.json +1 -1
  341. package/src/data/servicereference/services/route53-recovery-control-config.json +1 -1
  342. package/src/data/servicereference/services/route53-recovery-readiness.json +1 -1
  343. package/src/data/servicereference/services/route53.json +1 -1
  344. package/src/data/servicereference/services/route53domains.json +1 -1
  345. package/src/data/servicereference/services/route53globalresolver.json +1 -1
  346. package/src/data/servicereference/services/route53profiles.json +1 -1
  347. package/src/data/servicereference/services/route53resolver.json +1 -1
  348. package/src/data/servicereference/services/rtbfabric.json +1 -1
  349. package/src/data/servicereference/services/rum.json +1 -1
  350. package/src/data/servicereference/services/s3-object-lambda.json +1 -1
  351. package/src/data/servicereference/services/s3-outposts.json +1 -1
  352. package/src/data/servicereference/services/s3.json +1 -1
  353. package/src/data/servicereference/services/s3express.json +1 -1
  354. package/src/data/servicereference/services/s3tables.json +1 -1
  355. package/src/data/servicereference/services/s3vectors.json +1 -1
  356. package/src/data/servicereference/services/sagemaker-data-science-assistant.json +1 -1
  357. package/src/data/servicereference/services/sagemaker-geospatial.json +1 -1
  358. package/src/data/servicereference/services/sagemaker-mlflow.json +1 -1
  359. package/src/data/servicereference/services/sagemaker-unified-studio-mcp.json +1 -1
  360. package/src/data/servicereference/services/sagemaker.json +1 -1
  361. package/src/data/servicereference/services/savingsplans.json +1 -1
  362. package/src/data/servicereference/services/scheduler.json +1 -1
  363. package/src/data/servicereference/services/schemas.json +1 -1
  364. package/src/data/servicereference/services/scn.json +1 -1
  365. package/src/data/servicereference/services/sdb.json +1 -1
  366. package/src/data/servicereference/services/secretsmanager.json +1 -1
  367. package/src/data/servicereference/services/security-ir.json +1 -1
  368. package/src/data/servicereference/services/securityagent.json +1 -1
  369. package/src/data/servicereference/services/securityhub.json +1 -1
  370. package/src/data/servicereference/services/securitylake.json +1 -1
  371. package/src/data/servicereference/services/serverlessrepo.json +1 -1
  372. package/src/data/servicereference/services/servicecatalog.json +1 -1
  373. package/src/data/servicereference/services/servicediscovery.json +1 -1
  374. package/src/data/servicereference/services/serviceextract.json +1 -1
  375. package/src/data/servicereference/services/servicequotas.json +1 -1
  376. package/src/data/servicereference/services/ses.json +1 -1
  377. package/src/data/servicereference/services/shield.json +1 -1
  378. package/src/data/servicereference/services/signer.json +1 -1
  379. package/src/data/servicereference/services/signin.json +1 -1
  380. package/src/data/servicereference/services/simspaceweaver.json +1 -1
  381. package/src/data/servicereference/services/sms-voice.json +1 -1
  382. package/src/data/servicereference/services/sms.json +1 -1
  383. package/src/data/servicereference/services/snow-device-management.json +1 -1
  384. package/src/data/servicereference/services/snowball.json +1 -1
  385. package/src/data/servicereference/services/sns.json +1 -1
  386. package/src/data/servicereference/services/social-messaging.json +1 -1
  387. package/src/data/servicereference/services/sqlworkbench.json +1 -1
  388. package/src/data/servicereference/services/sqs.json +1 -1
  389. package/src/data/servicereference/services/ssm-contacts.json +1 -1
  390. package/src/data/servicereference/services/ssm-guiconnect.json +1 -1
  391. package/src/data/servicereference/services/ssm-incidents.json +1 -1
  392. package/src/data/servicereference/services/ssm-quicksetup.json +1 -1
  393. package/src/data/servicereference/services/ssm-sap.json +1 -1
  394. package/src/data/servicereference/services/ssm.json +1 -1
  395. package/src/data/servicereference/services/ssmmessages.json +1 -1
  396. package/src/data/servicereference/services/sso-directory.json +1 -1
  397. package/src/data/servicereference/services/sso-oauth.json +1 -1
  398. package/src/data/servicereference/services/sso.json +1 -1
  399. package/src/data/servicereference/services/states.json +1 -1
  400. package/src/data/servicereference/services/storagegateway.json +1 -1
  401. package/src/data/servicereference/services/sts.json +1 -1
  402. package/src/data/servicereference/services/support-console.json +1 -1
  403. package/src/data/servicereference/services/support.json +1 -1
  404. package/src/data/servicereference/services/supportapp.json +1 -1
  405. package/src/data/servicereference/services/supportplans.json +1 -1
  406. package/src/data/servicereference/services/sustainability.json +1 -1
  407. package/src/data/servicereference/services/swf.json +1 -1
  408. package/src/data/servicereference/services/synthetics.json +1 -1
  409. package/src/data/servicereference/services/tag.json +1 -1
  410. package/src/data/servicereference/services/tax.json +1 -1
  411. package/src/data/servicereference/services/textract.json +1 -1
  412. package/src/data/servicereference/services/thinclient.json +1 -1
  413. package/src/data/servicereference/services/timestream-influxdb.json +1 -1
  414. package/src/data/servicereference/services/timestream.json +1 -1
  415. package/src/data/servicereference/services/tiros.json +1 -1
  416. package/src/data/servicereference/services/tnb.json +1 -1
  417. package/src/data/servicereference/services/transcribe.json +1 -1
  418. package/src/data/servicereference/services/transfer.json +1 -1
  419. package/src/data/servicereference/services/transform-custom.json +1 -1
  420. package/src/data/servicereference/services/transform.json +1 -1
  421. package/src/data/servicereference/services/translate.json +1 -1
  422. package/src/data/servicereference/services/trustedadvisor.json +1 -1
  423. package/src/data/servicereference/services/ts.json +1 -1
  424. package/src/data/servicereference/services/user-subscriptions.json +1 -1
  425. package/src/data/servicereference/services/uxc.json +1 -1
  426. package/src/data/servicereference/services/vendor-insights.json +1 -1
  427. package/src/data/servicereference/services/verified-access.json +1 -1
  428. package/src/data/servicereference/services/verifiedpermissions.json +1 -1
  429. package/src/data/servicereference/services/voiceid.json +1 -1
  430. package/src/data/servicereference/services/vpc-lattice-svcs.json +1 -1
  431. package/src/data/servicereference/services/vpc-lattice.json +1 -1
  432. package/src/data/servicereference/services/vpce.json +1 -1
  433. package/src/data/servicereference/services/waf-regional.json +1 -1
  434. package/src/data/servicereference/services/waf.json +1 -1
  435. package/src/data/servicereference/services/wafv2.json +1 -1
  436. package/src/data/servicereference/services/wam.json +1 -1
  437. package/src/data/servicereference/services/wellarchitected.json +1 -1
  438. package/src/data/servicereference/services/wickr.json +1 -1
  439. package/src/data/servicereference/services/wisdom.json +1 -1
  440. package/src/data/servicereference/services/workdocs.json +1 -1
  441. package/src/data/servicereference/services/worklink.json +1 -1
  442. package/src/data/servicereference/services/workmail.json +1 -1
  443. package/src/data/servicereference/services/workmailmessageflow.json +1 -1
  444. package/src/data/servicereference/services/workspaces-instances.json +1 -1
  445. package/src/data/servicereference/services/workspaces-web.json +1 -1
  446. package/src/data/servicereference/services/workspaces.json +1 -1
  447. package/src/data/servicereference/services/xray.json +1 -1
  448. package/src/extension.js +1 -6
  449. package/src/handlers/completion/action-value.d.ts +2 -2
  450. package/src/handlers/completion/action-value.js +37 -20
  451. package/src/handlers/completion/condition-block.d.ts +1 -1
  452. package/src/handlers/completion/condition-block.js +3 -0
  453. package/src/handlers/completion/condition-key.d.ts +1 -1
  454. package/src/handlers/completion/condition-key.js +4 -0
  455. package/src/handlers/completion/condition-operator.d.ts +1 -1
  456. package/src/handlers/completion/condition-operator.js +3 -0
  457. package/src/handlers/completion/effect-value.d.ts +2 -2
  458. package/src/handlers/completion/effect-value.js +4 -1
  459. package/src/handlers/completion/index.d.ts +15 -2
  460. package/src/handlers/completion/index.js +21 -3
  461. package/src/handlers/completion/principal-block-identifier.d.ts +1 -1
  462. package/src/handlers/completion/principal-block-identifier.js +2 -2
  463. package/src/handlers/completion/principal-block-type.d.ts +2 -2
  464. package/src/handlers/completion/principal-block-type.js +4 -1
  465. package/src/handlers/completion/principal-block.d.ts +1 -1
  466. package/src/handlers/completion/principal-block.js +3 -0
  467. package/src/handlers/completion/principal-identifier-completions.d.ts +4 -1
  468. package/src/handlers/completion/principal-identifier-completions.js +10 -6
  469. package/src/handlers/completion/principal-type.d.ts +1 -1
  470. package/src/handlers/completion/principal-type.js +3 -0
  471. package/src/handlers/completion/principal-typed-value.d.ts +1 -1
  472. package/src/handlers/completion/principal-typed-value.js +2 -2
  473. package/src/handlers/completion/principal-value.d.ts +2 -2
  474. package/src/handlers/completion/principal-value.js +4 -1
  475. package/src/handlers/completion/resource-value.d.ts +1 -1
  476. package/src/handlers/completion/resource-value.js +8 -1
  477. package/src/handlers/completion/statement-block.d.ts +1 -1
  478. package/src/handlers/completion/statement-block.js +3 -0
  479. package/src/handlers/completion/statement-key.d.ts +1 -1
  480. package/src/handlers/completion/statement-key.js +3 -0
  481. package/src/handlers/document-link/document-link.d.ts +2 -2
  482. package/src/handlers/document-link/document-link.js +2 -1
  483. package/src/lib/iam-policy/reference/services.d.ts +1 -1
  484. package/src/lib/iam-policy/reference/services.js +5 -1
  485. package/src/lib/iam-policy/reference/types.d.ts +2 -0
  486. package/src/lib/treesitter/manager.d.ts +2 -0
  487. package/src/lib/treesitter/manager.js +7 -0
  488. package/src/lib/treesitter/yaml.js +15 -0
  489. package/src/server.js +4 -4
@@ -1,29 +1,46 @@
1
1
  import { CompletionItemKind, MarkupKind } from 'vscode-languageserver';
2
2
  import { ServiceReference } from "../../lib/iam-policy/reference/services.js";
3
- export function completeActionValue(location, _context) {
4
- const potentialLabels = ServiceReference.getAllActions();
3
+ import { partialRange } from "./index.js";
4
+ export function completeActionValue(location, context) {
5
+ const range = partialRange(context.position, location.partial.length);
5
6
  const items = [];
6
- for (const label of potentialLabels) {
7
- if (location.partial && !label.toLowerCase().startsWith(location.partial.toLowerCase()))
8
- continue;
9
- const item = {
10
- label,
11
- kind: CompletionItemKind.Enum,
12
- };
13
- const [service, actionName] = label.split(':');
14
- if (service && actionName) {
15
- const action = ServiceReference.getAction(service, actionName);
16
- if (action) {
7
+ const parts = location.partial.split(':');
8
+ if (parts.length === 1) {
9
+ // suggest services
10
+ const potentialServices = ServiceReference.getAllServices();
11
+ for (const service of potentialServices) {
12
+ if (!service.toLowerCase().startsWith(location.partial.toLowerCase()))
13
+ continue;
14
+ const item = {
15
+ label: service,
16
+ kind: CompletionItemKind.Enum,
17
+ textEdit: { range, newText: service },
18
+ };
19
+ items.push(item);
20
+ }
21
+ }
22
+ else if (parts.length === 2) {
23
+ // suggest actions
24
+ const serviceName = parts[0];
25
+ const potentialActions = ServiceReference.getActionsForService(serviceName);
26
+ for (const action of potentialActions) {
27
+ const label = `${action.service}:${action.name}`;
28
+ if (!label.toLowerCase().startsWith(location.partial.toLowerCase()))
29
+ continue;
30
+ const item = {
31
+ label,
32
+ kind: CompletionItemKind.Enum,
33
+ textEdit: { range, newText: label },
34
+ };
35
+ if (action.description) {
17
36
  item.detail = action.description;
18
- if (action.description) {
19
- item.documentation = {
20
- kind: MarkupKind.Markdown,
21
- value: formatActionDocumentation(action),
22
- };
23
- }
37
+ item.documentation = {
38
+ kind: MarkupKind.Markdown,
39
+ value: formatActionDocumentation(action),
40
+ };
24
41
  }
42
+ items.push(item);
25
43
  }
26
- items.push(item);
27
44
  }
28
45
  return { items, isIncomplete: false };
29
46
  }
@@ -1,4 +1,4 @@
1
1
  import type { CompletionList } from 'vscode-languageserver';
2
2
  import type { ConditionBlockLocation } from '../../lib/iam-policy/location.ts';
3
- import type { CompletionContext } from './index.ts';
3
+ import { type CompletionContext } from './index.ts';
4
4
  export declare function completeConditionBlock(location: ConditionBlockLocation, context: CompletionContext): CompletionList;
@@ -1,4 +1,5 @@
1
1
  import { CompletionItemKind, MarkupKind } from 'vscode-languageserver';
2
+ import { partialRange } from "./index.js";
2
3
  const conditionBlockAttributes = {
3
4
  test: {
4
5
  description: 'The condition operator to evaluate (e.g., `StringEquals`, `ArnLike`, `IpAddress`).',
@@ -12,6 +13,7 @@ const conditionBlockAttributes = {
12
13
  };
13
14
  export function completeConditionBlock(location, context) {
14
15
  const siblingKeys = context.handler.getSiblingKeys(context.uri, context.position);
16
+ const range = partialRange(context.position, location.partial.length);
15
17
  const items = [];
16
18
  for (const [name, attr] of Object.entries(conditionBlockAttributes)) {
17
19
  if (siblingKeys.includes(name))
@@ -21,6 +23,7 @@ export function completeConditionBlock(location, context) {
21
23
  items.push({
22
24
  label: name,
23
25
  kind: CompletionItemKind.Field,
26
+ textEdit: { range, newText: name },
24
27
  documentation: {
25
28
  kind: MarkupKind.Markdown,
26
29
  value: attr.description,
@@ -1,4 +1,4 @@
1
1
  import type { CompletionList } from 'vscode-languageserver';
2
2
  import type { ConditionKeyLocation } from '../../lib/iam-policy/location.ts';
3
- import type { CompletionContext } from './index.ts';
3
+ import { type CompletionContext } from './index.ts';
4
4
  export declare function completeConditionKey(location: ConditionKeyLocation, context: CompletionContext): CompletionList;
@@ -1,9 +1,11 @@
1
1
  import { CompletionItemKind, MarkupKind } from 'vscode-languageserver';
2
2
  import { ServiceReference } from "../../lib/iam-policy/reference/services.js";
3
3
  import { expandActionPattern } from "../../lib/iam-policy/wildcard.js";
4
+ import { partialRange } from "./index.js";
4
5
  export function completeConditionKey(location, context) {
5
6
  const statement = context.handler.getStatementContext(context.uri, context.position);
6
7
  const existingKeys = location.operator ? Object.keys(statement?.Condition?.[location.operator] ?? {}) : [];
8
+ const range = partialRange(context.position, location.partial.length);
7
9
  const items = [];
8
10
  const seen = new Set();
9
11
  // Build a lookup for global keys so we can enrich service-specific keys with descriptions
@@ -34,6 +36,7 @@ export function completeConditionKey(location, context) {
34
36
  items.push({
35
37
  label: key.name,
36
38
  kind: CompletionItemKind.Property,
39
+ textEdit: { range, newText: key.name },
37
40
  documentation: {
38
41
  kind: MarkupKind.Markdown,
39
42
  value: formatDocumentation(key.types, global, conditionKeyData),
@@ -53,6 +56,7 @@ export function completeConditionKey(location, context) {
53
56
  items.push({
54
57
  label: global.name,
55
58
  kind: CompletionItemKind.Property,
59
+ textEdit: { range, newText: global.name },
56
60
  documentation: {
57
61
  kind: MarkupKind.Markdown,
58
62
  value: formatDocumentation([], global),
@@ -1,4 +1,4 @@
1
1
  import type { CompletionList } from 'vscode-languageserver';
2
2
  import type { ConditionOperatorLocation } from '../../lib/iam-policy/location.ts';
3
- import type { CompletionContext } from './index.ts';
3
+ import { type CompletionContext } from './index.ts';
4
4
  export declare function completeConditionOperator(location: ConditionOperatorLocation, context: CompletionContext): CompletionList;
@@ -1,8 +1,10 @@
1
1
  import { CompletionItemKind, MarkupKind } from 'vscode-languageserver';
2
2
  import { conditionOperators } from "../../lib/iam-policy/condition-operators.js";
3
+ import { partialRange } from "./index.js";
3
4
  export function completeConditionOperator(location, context) {
4
5
  const statement = context.handler.getStatementContext(context.uri, context.position);
5
6
  const existingOperators = Object.keys(statement?.Condition ?? {});
7
+ const range = partialRange(context.position, location.partial.length);
6
8
  const items = [];
7
9
  for (const [name, operator] of Object.entries(conditionOperators)) {
8
10
  if (existingOperators.includes(name))
@@ -12,6 +14,7 @@ export function completeConditionOperator(location, context) {
12
14
  items.push({
13
15
  label: name,
14
16
  kind: CompletionItemKind.Operator,
17
+ textEdit: { range, newText: name },
15
18
  documentation: {
16
19
  kind: MarkupKind.Markdown,
17
20
  value: operator.description,
@@ -1,4 +1,4 @@
1
1
  import type { CompletionList } from 'vscode-languageserver';
2
2
  import type { EffectValueLocation } from '../../lib/iam-policy/location.ts';
3
- import type { CompletionContext } from './index.ts';
4
- export declare function completeEffectValue(location: EffectValueLocation, _context: CompletionContext): CompletionList;
3
+ import { type CompletionContext } from './index.ts';
4
+ export declare function completeEffectValue(location: EffectValueLocation, context: CompletionContext): CompletionList;
@@ -1,6 +1,8 @@
1
1
  import { CompletionItemKind } from 'vscode-languageserver';
2
- export function completeEffectValue(location, _context) {
2
+ import { partialRange } from "./index.js";
3
+ export function completeEffectValue(location, context) {
3
4
  const potentialLabels = ['Allow', 'Deny'];
5
+ const range = partialRange(context.position, location.partial.length);
4
6
  const items = [];
5
7
  for (const label of potentialLabels) {
6
8
  if (location.partial && !label.toLowerCase().startsWith(location.partial.toLowerCase()))
@@ -8,6 +10,7 @@ export function completeEffectValue(location, _context) {
8
10
  items.push({
9
11
  label,
10
12
  kind: CompletionItemKind.Enum,
13
+ textEdit: { range, newText: label },
11
14
  });
12
15
  }
13
16
  return { items, isIncomplete: false };
@@ -1,4 +1,4 @@
1
- import type { CompletionList, CompletionParams } from 'vscode-languageserver';
1
+ import type { CompletionList, CompletionParams, Connection } from 'vscode-languageserver';
2
2
  import type { TextDocuments } from 'vscode-languageserver/node.js';
3
3
  import type { TextDocument } from 'vscode-languageserver-textdocument';
4
4
  import type { TreeBase } from '../../lib/treesitter/base.ts';
@@ -11,4 +11,17 @@ export type CompletionContext = {
11
11
  column: number;
12
12
  };
13
13
  };
14
- export declare function handleCompletionRequest(params: CompletionParams, _documents: TextDocuments<TextDocument>, treeManager: TreeManager): Promise<CompletionList>;
14
+ export declare function partialRange(position: {
15
+ line: number;
16
+ column: number;
17
+ }, partialLength: number): {
18
+ start: {
19
+ line: number;
20
+ character: number;
21
+ };
22
+ end: {
23
+ line: number;
24
+ character: number;
25
+ };
26
+ };
27
+ export declare function handleCompletionRequest(params: CompletionParams, _documents: TextDocuments<TextDocument>, treeManager: TreeManager, connection: Connection): Promise<CompletionList>;
@@ -15,7 +15,13 @@ import { completeResourceValue } from "./resource-value.js";
15
15
  import { completeStatementBlock } from "./statement-block.js";
16
16
  import { completeStatementKey } from "./statement-key.js";
17
17
  const emptyResult = { items: [], isIncomplete: false };
18
- export async function handleCompletionRequest(params, _documents, treeManager) {
18
+ export function partialRange(position, partialLength) {
19
+ return {
20
+ start: { line: position.line, character: position.column - partialLength },
21
+ end: { line: position.line, character: position.column },
22
+ };
23
+ }
24
+ export async function handleCompletionRequest(params, _documents, treeManager, connection) {
19
25
  const handler = treeManager.getLanguageHandler(params.textDocument.uri);
20
26
  if (!handler)
21
27
  return emptyResult;
@@ -24,12 +30,19 @@ export async function handleCompletionRequest(params, _documents, treeManager) {
24
30
  if (!cursorContext)
25
31
  return emptyResult;
26
32
  const location = resolvePolicyLocation(cursorContext);
33
+ connection.console.debug(`Completion debug: ${JSON.stringify({
34
+ uri: params.textDocument.uri,
35
+ cursorContext,
36
+ location,
37
+ position: params.position,
38
+ })}`);
27
39
  const result = handleLocationCompletion(location, {
28
40
  handler,
29
41
  uri: params.textDocument.uri,
30
42
  position,
31
43
  });
32
44
  result.items = result.items.map(toSnippet);
45
+ connection.console.debug(`Found ${result.items.length} completion items for ${params.textDocument.uri} at line ${position.line}, column ${position.column}`);
33
46
  return result;
34
47
  }
35
48
  function handleLocationCompletion(location, context) {
@@ -78,7 +91,7 @@ function handleLocationCompletion(location, context) {
78
91
  return emptyResult;
79
92
  }
80
93
  function toSnippet(item) {
81
- const text = item.insertText ?? item.label;
94
+ const text = item.textEdit && 'range' in item.textEdit ? item.textEdit.newText : (item.insertText ?? item.label);
82
95
  const snippetPlaceholderPattern = /\$\{([^}]+)\}/g;
83
96
  if (!snippetPlaceholderPattern.test(text))
84
97
  return item;
@@ -90,7 +103,12 @@ function toSnippet(item) {
90
103
  }
91
104
  return `\${${seen.get(name)}:${name}}`;
92
105
  });
93
- item.insertText = snippetText;
106
+ if (item.textEdit && 'range' in item.textEdit) {
107
+ item.textEdit.newText = snippetText;
108
+ }
109
+ else {
110
+ item.insertText = snippetText;
111
+ }
94
112
  item.insertTextFormat = InsertTextFormat.Snippet;
95
113
  return item;
96
114
  }
@@ -1,4 +1,4 @@
1
1
  import type { CompletionList } from 'vscode-languageserver';
2
2
  import type { PrincipalBlockIdentifierLocation } from '../../lib/iam-policy/location.ts';
3
3
  import type { CompletionContext } from './index.ts';
4
- export declare function completePrincipalBlockIdentifier(location: PrincipalBlockIdentifierLocation, _context: CompletionContext): CompletionList;
4
+ export declare function completePrincipalBlockIdentifier(location: PrincipalBlockIdentifierLocation, context: CompletionContext): CompletionList;
@@ -1,4 +1,4 @@
1
1
  import { completePrincipalIdentifier } from "./principal-identifier-completions.js";
2
- export function completePrincipalBlockIdentifier(location, _context) {
3
- return completePrincipalIdentifier(location.principalType, location.partial);
2
+ export function completePrincipalBlockIdentifier(location, context) {
3
+ return completePrincipalIdentifier(location.principalType, location.partial, context.position);
4
4
  }
@@ -1,4 +1,4 @@
1
1
  import type { CompletionList } from 'vscode-languageserver';
2
2
  import type { PrincipalBlockTypeLocation } from '../../lib/iam-policy/location.ts';
3
- import type { CompletionContext } from './index.ts';
4
- export declare function completePrincipalBlockType(location: PrincipalBlockTypeLocation, _context: CompletionContext): CompletionList;
3
+ import { type CompletionContext } from './index.ts';
4
+ export declare function completePrincipalBlockType(location: PrincipalBlockTypeLocation, context: CompletionContext): CompletionList;
@@ -1,6 +1,8 @@
1
1
  import { CompletionItemKind } from 'vscode-languageserver';
2
2
  import { principalTypes } from "../../lib/iam-policy/principals.js";
3
- export function completePrincipalBlockType(location, _context) {
3
+ import { partialRange } from "./index.js";
4
+ export function completePrincipalBlockType(location, context) {
5
+ const range = partialRange(context.position, location.partial.length);
4
6
  const items = [];
5
7
  for (const [_id, principalType] of Object.entries(Object.assign({}, principalTypes, {
6
8
  '*': {
@@ -14,6 +16,7 @@ export function completePrincipalBlockType(location, _context) {
14
16
  items.push({
15
17
  label: principalType.value,
16
18
  kind: CompletionItemKind.Enum,
19
+ textEdit: { range, newText: principalType.value },
17
20
  documentation: {
18
21
  kind: 'markdown',
19
22
  value: principalType.description,
@@ -1,4 +1,4 @@
1
1
  import type { CompletionList } from 'vscode-languageserver';
2
2
  import type { PrincipalBlockLocation } from '../../lib/iam-policy/location.ts';
3
- import type { CompletionContext } from './index.ts';
3
+ import { type CompletionContext } from './index.ts';
4
4
  export declare function completePrincipalBlock(location: PrincipalBlockLocation, context: CompletionContext): CompletionList;
@@ -1,4 +1,5 @@
1
1
  import { CompletionItemKind, MarkupKind } from 'vscode-languageserver';
2
+ import { partialRange } from "./index.js";
2
3
  const principalBlockAttributes = {
3
4
  type: {
4
5
  description: 'The type of principal. Valid values: `*`, `AWS`, `Service`, `Federated`, `CanonicalUser`.',
@@ -9,6 +10,7 @@ const principalBlockAttributes = {
9
10
  };
10
11
  export function completePrincipalBlock(location, context) {
11
12
  const siblingKeys = context.handler.getSiblingKeys(context.uri, context.position);
13
+ const range = partialRange(context.position, location.partial.length);
12
14
  const items = [];
13
15
  for (const [name, attr] of Object.entries(principalBlockAttributes)) {
14
16
  if (siblingKeys.includes(name))
@@ -18,6 +20,7 @@ export function completePrincipalBlock(location, context) {
18
20
  items.push({
19
21
  label: name,
20
22
  kind: CompletionItemKind.Field,
23
+ textEdit: { range, newText: name },
21
24
  documentation: {
22
25
  kind: MarkupKind.Markdown,
23
26
  value: attr.description,
@@ -1,2 +1,5 @@
1
1
  import type { CompletionList } from 'vscode-languageserver';
2
- export declare function completePrincipalIdentifier(principalType: string | null, partial: string): CompletionList;
2
+ export declare function completePrincipalIdentifier(principalType: string | null, partial: string, position: {
3
+ line: number;
4
+ column: number;
5
+ }): CompletionList;
@@ -1,6 +1,7 @@
1
1
  import { CompletionItemKind } from 'vscode-languageserver';
2
2
  import { partitions } from "../../lib/iam-policy/partitions.js";
3
3
  import { principalTypes } from "../../lib/iam-policy/principals.js";
4
+ import { partialRange } from "./index.js";
4
5
  const PARTITION_PLACEHOLDER = `\${Partition}`;
5
6
  const REGION_PLACEHOLDER = `\${Region}`;
6
7
  const ACCOUNT_PLACEHOLDER = `\${Account}`;
@@ -24,27 +25,28 @@ function getPatternsForType(principalType) {
24
25
  return null;
25
26
  }
26
27
  }
27
- export function completePrincipalIdentifier(principalType, partial) {
28
+ export function completePrincipalIdentifier(principalType, partial, position) {
28
29
  if (!principalType)
29
30
  return { items: [], isIncomplete: false };
30
31
  const config = getPatternsForType(principalType);
31
32
  if (!config)
32
33
  return { items: [], isIncomplete: false };
34
+ const range = partialRange(position, partial.length);
33
35
  const items = [];
34
36
  if (!partial) {
35
37
  for (const pattern of [...config.nonArn, ...config.arn]) {
36
- items.push({ label: pattern, kind: CompletionItemKind.Value });
38
+ items.push({ label: pattern, kind: CompletionItemKind.Value, textEdit: { range, newText: pattern } });
37
39
  }
38
40
  return { items, isIncomplete: false };
39
41
  }
40
42
  const parts = partial.split(':');
41
43
  if (parts.length === 1) {
42
44
  if (config.arn.length > 0 && 'arn'.startsWith(partial.toLowerCase())) {
43
- items.push({ label: 'arn', kind: CompletionItemKind.Constant });
45
+ items.push({ label: 'arn', kind: CompletionItemKind.Constant, textEdit: { range, newText: 'arn' } });
44
46
  }
45
47
  for (const pattern of config.nonArn) {
46
48
  if (pattern.toLowerCase().startsWith(partial.toLowerCase())) {
47
- items.push({ label: pattern, kind: CompletionItemKind.Value });
49
+ items.push({ label: pattern, kind: CompletionItemKind.Value, textEdit: { range, newText: pattern } });
48
50
  }
49
51
  }
50
52
  }
@@ -97,9 +99,11 @@ export function completePrincipalIdentifier(principalType, partial) {
97
99
  }
98
100
  }
99
101
  else if (parts.length === 5) {
102
+ const label = `${partial}:`;
100
103
  items.push({
101
- label: `${partial}:`,
104
+ label,
102
105
  kind: CompletionItemKind.Enum,
106
+ textEdit: { range, newText: label },
103
107
  documentation: { kind: 'markdown', value: 'AWS Account ID' },
104
108
  });
105
109
  }
@@ -124,7 +128,7 @@ export function completePrincipalIdentifier(principalType, partial) {
124
128
  .replace(ACCOUNT_PLACEHOLDER, account);
125
129
  if (!label.toLowerCase().startsWith(partial.toLowerCase()))
126
130
  continue;
127
- items.push({ label, kind: CompletionItemKind.Value });
131
+ items.push({ label, kind: CompletionItemKind.Value, textEdit: { range, newText: label } });
128
132
  }
129
133
  }
130
134
  return { items, isIncomplete: false };
@@ -1,4 +1,4 @@
1
1
  import type { CompletionList } from 'vscode-languageserver';
2
2
  import type { PrincipalTypeLocation } from '../../lib/iam-policy/location.ts';
3
- import type { CompletionContext } from './index.ts';
3
+ import { type CompletionContext } from './index.ts';
4
4
  export declare function completePrincipalType(location: PrincipalTypeLocation, context: CompletionContext): CompletionList;
@@ -1,9 +1,11 @@
1
1
  import { CompletionItemKind } from 'vscode-languageserver';
2
2
  import { principalTypes } from "../../lib/iam-policy/principals.js";
3
+ import { partialRange } from "./index.js";
3
4
  export function completePrincipalType(location, context) {
4
5
  const statement = context.handler.getStatementContext(context.uri, context.position);
5
6
  const principal = statement?.Principal ?? statement?.NotPrincipal;
6
7
  const existingTypes = principal && typeof principal === 'object' ? Object.keys(principal) : [];
8
+ const range = partialRange(context.position, location.partial.length);
7
9
  const items = [];
8
10
  for (const [_id, principalType] of Object.entries(principalTypes)) {
9
11
  if (existingTypes.includes(principalType.value))
@@ -13,6 +15,7 @@ export function completePrincipalType(location, context) {
13
15
  items.push({
14
16
  label: principalType.value,
15
17
  kind: CompletionItemKind.Enum,
18
+ textEdit: { range, newText: principalType.value },
16
19
  documentation: {
17
20
  kind: 'markdown',
18
21
  value: principalType.description,
@@ -1,4 +1,4 @@
1
1
  import type { CompletionList } from 'vscode-languageserver';
2
2
  import type { PrincipalTypedValueLocation } from '../../lib/iam-policy/location.ts';
3
3
  import type { CompletionContext } from './index.ts';
4
- export declare function completePrincipalTypedValue(location: PrincipalTypedValueLocation, _context: CompletionContext): CompletionList;
4
+ export declare function completePrincipalTypedValue(location: PrincipalTypedValueLocation, context: CompletionContext): CompletionList;
@@ -1,4 +1,4 @@
1
1
  import { completePrincipalIdentifier } from "./principal-identifier-completions.js";
2
- export function completePrincipalTypedValue(location, _context) {
3
- return completePrincipalIdentifier(location.principalType, location.partial);
2
+ export function completePrincipalTypedValue(location, context) {
3
+ return completePrincipalIdentifier(location.principalType, location.partial, context.position);
4
4
  }
@@ -1,4 +1,4 @@
1
1
  import type { CompletionList } from 'vscode-languageserver';
2
2
  import type { PrincipalValueLocation } from '../../lib/iam-policy/location.ts';
3
- import type { CompletionContext } from './index.ts';
4
- export declare function completePrincipalValue(location: PrincipalValueLocation, _context: CompletionContext): CompletionList;
3
+ import { type CompletionContext } from './index.ts';
4
+ export declare function completePrincipalValue(location: PrincipalValueLocation, context: CompletionContext): CompletionList;
@@ -1,6 +1,8 @@
1
1
  import { CompletionItemKind } from 'vscode-languageserver';
2
- export function completePrincipalValue(location, _context) {
2
+ import { partialRange } from "./index.js";
3
+ export function completePrincipalValue(location, context) {
3
4
  const potentialLabels = ['*'];
5
+ const range = partialRange(context.position, location.partial.length);
4
6
  const items = [];
5
7
  for (const label of potentialLabels) {
6
8
  if (location.partial && !label.toLowerCase().startsWith(location.partial.toLowerCase()))
@@ -8,6 +10,7 @@ export function completePrincipalValue(location, _context) {
8
10
  items.push({
9
11
  label,
10
12
  kind: CompletionItemKind.Enum,
13
+ textEdit: { range, newText: label },
11
14
  documentation: {
12
15
  kind: 'markdown',
13
16
  value: 'Public Unauthenticated Access',
@@ -1,4 +1,4 @@
1
1
  import type { CompletionList } from 'vscode-languageserver';
2
2
  import type { ResourceValueLocation } from '../../lib/iam-policy/location.ts';
3
- import type { CompletionContext } from './index.ts';
3
+ import { type CompletionContext } from './index.ts';
4
4
  export declare function completeResourceValue(location: ResourceValueLocation, context: CompletionContext): CompletionList;
@@ -2,8 +2,10 @@ import { CompletionItemKind } from 'vscode-languageserver';
2
2
  import { partitions } from "../../lib/iam-policy/partitions.js";
3
3
  import { ServiceReference } from "../../lib/iam-policy/reference/services.js";
4
4
  import { expandActionPattern } from "../../lib/iam-policy/wildcard.js";
5
+ import { partialRange } from "./index.js";
5
6
  export function completeResourceValue(location, context) {
6
7
  const parts = location.partial.split(':');
8
+ const range = partialRange(context.position, location.partial.length);
7
9
  const items = [];
8
10
  const statement = context.handler.getStatementContext(context.uri, context.position);
9
11
  const statementActions = statement?.Action ?? statement?.NotAction ?? [];
@@ -16,6 +18,7 @@ export function completeResourceValue(location, context) {
16
18
  label: arn,
17
19
  sortText: `0-${arn}`,
18
20
  kind: CompletionItemKind.Value,
21
+ textEdit: { range, newText: arn },
19
22
  detail: `${resource.service}/${resource.name}`,
20
23
  documentation: {
21
24
  kind: 'markdown',
@@ -30,6 +33,7 @@ export function completeResourceValue(location, context) {
30
33
  items.push({
31
34
  label,
32
35
  kind: CompletionItemKind.Constant,
36
+ textEdit: { range, newText: label },
33
37
  });
34
38
  }
35
39
  }
@@ -100,9 +104,11 @@ export function completeResourceValue(location, context) {
100
104
  }
101
105
  else if (parts.length === 5) {
102
106
  // suggest account
107
+ const label = `${location.partial}:`;
103
108
  items.push({
104
- label: `${location.partial}:`,
109
+ label,
105
110
  kind: CompletionItemKind.Enum,
111
+ textEdit: { range, newText: label },
106
112
  documentation: {
107
113
  kind: 'markdown',
108
114
  value: 'AWS Account ID',
@@ -132,6 +138,7 @@ export function completeResourceValue(location, context) {
132
138
  items.push({
133
139
  label,
134
140
  kind: CompletionItemKind.Enum,
141
+ textEdit: { range, newText: label },
135
142
  detail: resource.name,
136
143
  documentation: {
137
144
  kind: 'markdown',
@@ -1,6 +1,6 @@
1
1
  import type { CompletionList } from 'vscode-languageserver';
2
2
  import type { StatementBlockLocation } from '../../lib/iam-policy/location.ts';
3
- import type { CompletionContext } from './index.ts';
3
+ import { type CompletionContext } from './index.ts';
4
4
  export declare function completeStatementBlock(location: StatementBlockLocation, context: CompletionContext): CompletionList;
5
5
  export declare function findHclElement(key: string): {
6
6
  policyTypes: Array<"identity" | "resource">;
@@ -1,5 +1,6 @@
1
1
  import { CompletionItemKind, MarkupKind } from 'vscode-languageserver';
2
2
  import { StatementKeys } from "../../lib/iam-policy/statement-keys.js";
3
+ import { partialRange } from "./index.js";
3
4
  export function completeStatementBlock(location, context) {
4
5
  const statement = context.handler.getStatementContext(context.uri, context.position);
5
6
  const existingKeys = deriveExistingKeys(statement);
@@ -9,6 +10,7 @@ export function completeStatementBlock(location, context) {
9
10
  if (element)
10
11
  existingGroups.add(element.group);
11
12
  }
13
+ const range = partialRange(context.position, location.partial.length);
12
14
  const items = [];
13
15
  for (const [, element] of Object.entries(StatementKeys)) {
14
16
  if (existingKeys.includes(element.hclKey))
@@ -20,6 +22,7 @@ export function completeStatementBlock(location, context) {
20
22
  items.push({
21
23
  label: element.hclKey,
22
24
  kind: CompletionItemKind.Field,
25
+ textEdit: { range, newText: element.hclKey },
23
26
  documentation: {
24
27
  kind: MarkupKind.Markdown,
25
28
  value: element.description,
@@ -1,4 +1,4 @@
1
1
  import type { CompletionList } from 'vscode-languageserver';
2
2
  import type { StatementKeyLocation } from '../../lib/iam-policy/location.ts';
3
- import type { CompletionContext } from './index.ts';
3
+ import { type CompletionContext } from './index.ts';
4
4
  export declare function completeStatementKey(location: StatementKeyLocation, context: CompletionContext): CompletionList;
@@ -1,5 +1,6 @@
1
1
  import { CompletionItemKind, MarkupKind } from 'vscode-languageserver';
2
2
  import { StatementKeys } from "../../lib/iam-policy/statement-keys.js";
3
+ import { partialRange } from "./index.js";
3
4
  export function completeStatementKey(location, context) {
4
5
  const statement = context.handler.getStatementContext(context.uri, context.position);
5
6
  const existingKeys = deriveExistingKeys(statement);
@@ -9,6 +10,7 @@ export function completeStatementKey(location, context) {
9
10
  if (element)
10
11
  existingGroups.add(element.group);
11
12
  }
13
+ const range = partialRange(context.position, location.partial.length);
12
14
  const items = [];
13
15
  for (const [name, element] of Object.entries(StatementKeys)) {
14
16
  if (existingKeys.includes(name))
@@ -20,6 +22,7 @@ export function completeStatementKey(location, context) {
20
22
  items.push({
21
23
  label: name,
22
24
  kind: CompletionItemKind.Field,
25
+ textEdit: { range, newText: name },
23
26
  documentation: {
24
27
  kind: MarkupKind.Markdown,
25
28
  value: element.description,
@@ -1,4 +1,4 @@
1
- import type { DocumentLink, DocumentLinkParams, TextDocuments } from 'vscode-languageserver';
1
+ import type { Connection, DocumentLink, DocumentLinkParams, TextDocuments } from 'vscode-languageserver';
2
2
  import type { TextDocument } from 'vscode-languageserver-textdocument';
3
3
  import type { TreeManager } from '../../lib/treesitter/manager.ts';
4
- export declare function documentLinkHandler(params: DocumentLinkParams, documents: TextDocuments<TextDocument>, _treeManager: TreeManager): DocumentLink[];
4
+ export declare function documentLinkHandler(params: DocumentLinkParams, documents: TextDocuments<TextDocument>, _treeManager: TreeManager, connection: Connection): DocumentLink[];
@@ -1,5 +1,5 @@
1
1
  import { ServiceReference } from "../../lib/iam-policy/reference/services.js";
2
- export function documentLinkHandler(params, documents, _treeManager) {
2
+ export function documentLinkHandler(params, documents, _treeManager, connection) {
3
3
  const document = documents.get(params.textDocument.uri);
4
4
  if (!document)
5
5
  return [];
@@ -32,5 +32,6 @@ export function documentLinkHandler(params, documents, _treeManager) {
32
32
  });
33
33
  }
34
34
  }
35
+ connection.console.debug(`Found ${links.length} document links in ${params.textDocument.uri}`);
35
36
  return links;
36
37
  }
@@ -5,7 +5,7 @@ export declare class ServiceReference {
5
5
  static getServicePrincipals(): string[];
6
6
  static getAllActions(): Array<string>;
7
7
  static getAllServices(): Array<string>;
8
- static getActionsForService(service: string): Array<string>;
8
+ static getActionsForService(service: string): Array<Action>;
9
9
  static getConditionKeysForActions(actions: string[]): Array<{
10
10
  name: string;
11
11
  types: string[];