aws-iam-language-server 0.0.8 → 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 (493) hide show
  1. package/package.json +1 -1
  2. package/readme.md +9 -0
  3. package/src/data/servicereference/actions.json +1 -1
  4. package/src/data/servicereference/services/a2c.json +1 -1
  5. package/src/data/servicereference/services/a4b.json +1 -1
  6. package/src/data/servicereference/services/access-analyzer.json +1 -1
  7. package/src/data/servicereference/services/account.json +1 -1
  8. package/src/data/servicereference/services/acm-pca.json +1 -1
  9. package/src/data/servicereference/services/acm.json +1 -1
  10. package/src/data/servicereference/services/aco-automation.json +1 -1
  11. package/src/data/servicereference/services/action-recommendations.json +1 -1
  12. package/src/data/servicereference/services/activate.json +1 -1
  13. package/src/data/servicereference/services/aidevops.json +1 -1
  14. package/src/data/servicereference/services/aiops.json +1 -1
  15. package/src/data/servicereference/services/airflow-serverless.json +1 -1
  16. package/src/data/servicereference/services/airflow.json +1 -1
  17. package/src/data/servicereference/services/amplify.json +1 -1
  18. package/src/data/servicereference/services/amplifybackend.json +1 -1
  19. package/src/data/servicereference/services/amplifyuibuilder.json +1 -1
  20. package/src/data/servicereference/services/aoss.json +1 -1
  21. package/src/data/servicereference/services/apigateway.json +1 -1
  22. package/src/data/servicereference/services/app-integrations.json +1 -1
  23. package/src/data/servicereference/services/appconfig.json +1 -1
  24. package/src/data/servicereference/services/appfabric.json +1 -1
  25. package/src/data/servicereference/services/appflow.json +1 -1
  26. package/src/data/servicereference/services/application-autoscaling.json +1 -1
  27. package/src/data/servicereference/services/application-signals.json +1 -1
  28. package/src/data/servicereference/services/application-transformation.json +1 -1
  29. package/src/data/servicereference/services/applicationinsights.json +1 -1
  30. package/src/data/servicereference/services/appmesh-preview.json +1 -1
  31. package/src/data/servicereference/services/appmesh.json +1 -1
  32. package/src/data/servicereference/services/apprunner.json +1 -1
  33. package/src/data/servicereference/services/appstream.json +1 -1
  34. package/src/data/servicereference/services/appstudio.json +1 -1
  35. package/src/data/servicereference/services/appsync.json +1 -1
  36. package/src/data/servicereference/services/apptest.json +1 -1
  37. package/src/data/servicereference/services/aps.json +1 -1
  38. package/src/data/servicereference/services/arc-region-switch.json +1 -1
  39. package/src/data/servicereference/services/arc-zonal-shift.json +1 -1
  40. package/src/data/servicereference/services/arsenal.json +1 -1
  41. package/src/data/servicereference/services/artifact.json +1 -1
  42. package/src/data/servicereference/services/athena.json +1 -1
  43. package/src/data/servicereference/services/auditmanager.json +1 -1
  44. package/src/data/servicereference/services/autoscaling-plans.json +1 -1
  45. package/src/data/servicereference/services/autoscaling.json +1 -1
  46. package/src/data/servicereference/services/aws-marketplace-management.json +1 -1
  47. package/src/data/servicereference/services/aws-marketplace.json +1 -1
  48. package/src/data/servicereference/services/aws-mcp.json +1 -1
  49. package/src/data/servicereference/services/aws-portal.json +1 -1
  50. package/src/data/servicereference/services/awsconnector.json +1 -1
  51. package/src/data/servicereference/services/b2bi.json +1 -1
  52. package/src/data/servicereference/services/backup-gateway.json +1 -1
  53. package/src/data/servicereference/services/backup-search.json +1 -1
  54. package/src/data/servicereference/services/backup-storage.json +1 -1
  55. package/src/data/servicereference/services/backup.json +1 -1
  56. package/src/data/servicereference/services/batch.json +1 -1
  57. package/src/data/servicereference/services/bcm-dashboards.json +1 -1
  58. package/src/data/servicereference/services/bcm-data-exports.json +1 -1
  59. package/src/data/servicereference/services/bcm-pricing-calculator.json +1 -1
  60. package/src/data/servicereference/services/bcm-recommended-actions.json +1 -1
  61. package/src/data/servicereference/services/bedrock-agentcore.json +1 -1
  62. package/src/data/servicereference/services/bedrock-mantle.json +1 -1
  63. package/src/data/servicereference/services/bedrock.json +1 -1
  64. package/src/data/servicereference/services/billing.json +1 -1
  65. package/src/data/servicereference/services/billingconductor.json +1 -1
  66. package/src/data/servicereference/services/braket.json +1 -1
  67. package/src/data/servicereference/services/budgets.json +1 -1
  68. package/src/data/servicereference/services/bugbust.json +1 -1
  69. package/src/data/servicereference/services/cases.json +1 -1
  70. package/src/data/servicereference/services/cassandra.json +1 -1
  71. package/src/data/servicereference/services/ce.json +1 -1
  72. package/src/data/servicereference/services/chatbot.json +1 -1
  73. package/src/data/servicereference/services/chime.json +1 -1
  74. package/src/data/servicereference/services/cleanrooms-ml.json +1 -1
  75. package/src/data/servicereference/services/cleanrooms.json +1 -1
  76. package/src/data/servicereference/services/cloud9.json +1 -1
  77. package/src/data/servicereference/services/clouddirectory.json +1 -1
  78. package/src/data/servicereference/services/cloudformation.json +1 -1
  79. package/src/data/servicereference/services/cloudfront-keyvaluestore.json +1 -1
  80. package/src/data/servicereference/services/cloudfront.json +1 -1
  81. package/src/data/servicereference/services/cloudhsm.json +1 -1
  82. package/src/data/servicereference/services/cloudsearch.json +1 -1
  83. package/src/data/servicereference/services/cloudshell.json +1 -1
  84. package/src/data/servicereference/services/cloudtrail-data.json +1 -1
  85. package/src/data/servicereference/services/cloudtrail.json +1 -1
  86. package/src/data/servicereference/services/cloudwatch.json +1 -1
  87. package/src/data/servicereference/services/codeartifact.json +1 -1
  88. package/src/data/servicereference/services/codebuild.json +1 -1
  89. package/src/data/servicereference/services/codecatalyst.json +1 -1
  90. package/src/data/servicereference/services/codecommit.json +1 -1
  91. package/src/data/servicereference/services/codeconnections.json +1 -1
  92. package/src/data/servicereference/services/codedeploy-commands-secure.json +1 -1
  93. package/src/data/servicereference/services/codedeploy.json +1 -1
  94. package/src/data/servicereference/services/codeguru-profiler.json +1 -1
  95. package/src/data/servicereference/services/codeguru-reviewer.json +1 -1
  96. package/src/data/servicereference/services/codeguru-security.json +1 -1
  97. package/src/data/servicereference/services/codeguru.json +1 -1
  98. package/src/data/servicereference/services/codepipeline.json +1 -1
  99. package/src/data/servicereference/services/codestar-connections.json +1 -1
  100. package/src/data/servicereference/services/codestar-notifications.json +1 -1
  101. package/src/data/servicereference/services/codestar.json +1 -1
  102. package/src/data/servicereference/services/codewhisperer.json +1 -1
  103. package/src/data/servicereference/services/cognito-identity.json +1 -1
  104. package/src/data/servicereference/services/cognito-idp.json +1 -1
  105. package/src/data/servicereference/services/cognito-sync.json +1 -1
  106. package/src/data/servicereference/services/comprehend.json +1 -1
  107. package/src/data/servicereference/services/comprehendmedical.json +1 -1
  108. package/src/data/servicereference/services/compute-optimizer.json +1 -1
  109. package/src/data/servicereference/services/config.json +1 -1
  110. package/src/data/servicereference/services/connect-campaigns.json +1 -1
  111. package/src/data/servicereference/services/connect.json +1 -1
  112. package/src/data/servicereference/services/consoleapp.json +1 -1
  113. package/src/data/servicereference/services/consolidatedbilling.json +1 -1
  114. package/src/data/servicereference/services/controlcatalog.json +1 -1
  115. package/src/data/servicereference/services/controltower.json +1 -1
  116. package/src/data/servicereference/services/cost-optimization-hub.json +1 -1
  117. package/src/data/servicereference/services/cur.json +1 -1
  118. package/src/data/servicereference/services/customer-verification.json +1 -1
  119. package/src/data/servicereference/services/databrew.json +1 -1
  120. package/src/data/servicereference/services/dataexchange.json +1 -1
  121. package/src/data/servicereference/services/datapipeline.json +1 -1
  122. package/src/data/servicereference/services/datasync.json +1 -1
  123. package/src/data/servicereference/services/datazone.json +1 -1
  124. package/src/data/servicereference/services/dax.json +1 -1
  125. package/src/data/servicereference/services/dbqms.json +1 -1
  126. package/src/data/servicereference/services/deadline.json +1 -1
  127. package/src/data/servicereference/services/detective.json +1 -1
  128. package/src/data/servicereference/services/devicefarm.json +1 -1
  129. package/src/data/servicereference/services/devops-guru.json +1 -1
  130. package/src/data/servicereference/services/directconnect.json +1 -1
  131. package/src/data/servicereference/services/discovery.json +1 -1
  132. package/src/data/servicereference/services/dlm.json +1 -1
  133. package/src/data/servicereference/services/dms.json +1 -1
  134. package/src/data/servicereference/services/docdb-elastic.json +1 -1
  135. package/src/data/servicereference/services/drs.json +1 -1
  136. package/src/data/servicereference/services/ds-data.json +1 -1
  137. package/src/data/servicereference/services/ds.json +1 -1
  138. package/src/data/servicereference/services/dsql.json +1 -1
  139. package/src/data/servicereference/services/dynamodb.json +1 -1
  140. package/src/data/servicereference/services/ebs.json +1 -1
  141. package/src/data/servicereference/services/ec2-instance-connect.json +1 -1
  142. package/src/data/servicereference/services/ec2.json +1 -1
  143. package/src/data/servicereference/services/ec2messages.json +1 -1
  144. package/src/data/servicereference/services/ecr-public.json +1 -1
  145. package/src/data/servicereference/services/ecr.json +1 -1
  146. package/src/data/servicereference/services/ecs-mcp.json +1 -1
  147. package/src/data/servicereference/services/ecs.json +1 -1
  148. package/src/data/servicereference/services/eks-auth.json +1 -1
  149. package/src/data/servicereference/services/eks-mcp.json +1 -1
  150. package/src/data/servicereference/services/eks.json +1 -1
  151. package/src/data/servicereference/services/elasticache.json +1 -1
  152. package/src/data/servicereference/services/elasticbeanstalk.json +1 -1
  153. package/src/data/servicereference/services/elasticfilesystem.json +1 -1
  154. package/src/data/servicereference/services/elasticloadbalancing.json +1 -1
  155. package/src/data/servicereference/services/elasticmapreduce.json +1 -1
  156. package/src/data/servicereference/services/elastictranscoder.json +1 -1
  157. package/src/data/servicereference/services/elemental-activations.json +1 -1
  158. package/src/data/servicereference/services/elemental-appliances-software.json +1 -1
  159. package/src/data/servicereference/services/elemental-inference.json +1 -1
  160. package/src/data/servicereference/services/elemental-support-cases.json +1 -1
  161. package/src/data/servicereference/services/elemental-support-content.json +1 -1
  162. package/src/data/servicereference/services/emr-containers.json +1 -1
  163. package/src/data/servicereference/services/emr-serverless.json +1 -1
  164. package/src/data/servicereference/services/entityresolution.json +1 -1
  165. package/src/data/servicereference/services/es.json +1 -1
  166. package/src/data/servicereference/services/events.json +1 -1
  167. package/src/data/servicereference/services/evidently.json +1 -1
  168. package/src/data/servicereference/services/evs.json +1 -1
  169. package/src/data/servicereference/services/execute-api.json +1 -1
  170. package/src/data/servicereference/services/finspace-api.json +1 -1
  171. package/src/data/servicereference/services/finspace.json +1 -1
  172. package/src/data/servicereference/services/firehose.json +1 -1
  173. package/src/data/servicereference/services/fis.json +1 -1
  174. package/src/data/servicereference/services/fms.json +1 -1
  175. package/src/data/servicereference/services/forecast.json +1 -1
  176. package/src/data/servicereference/services/frauddetector.json +1 -1
  177. package/src/data/servicereference/services/freertos.json +1 -1
  178. package/src/data/servicereference/services/freetier.json +1 -1
  179. package/src/data/servicereference/services/fsx.json +1 -1
  180. package/src/data/servicereference/services/gamelift.json +1 -1
  181. package/src/data/servicereference/services/gameliftstreams.json +1 -1
  182. package/src/data/servicereference/services/geo-maps.json +1 -1
  183. package/src/data/servicereference/services/geo-places.json +1 -1
  184. package/src/data/servicereference/services/geo-routes.json +1 -1
  185. package/src/data/servicereference/services/geo.json +1 -1
  186. package/src/data/servicereference/services/glacier.json +1 -1
  187. package/src/data/servicereference/services/globalaccelerator.json +1 -1
  188. package/src/data/servicereference/services/glue.json +1 -1
  189. package/src/data/servicereference/services/grafana.json +1 -1
  190. package/src/data/servicereference/services/greengrass.json +1 -1
  191. package/src/data/servicereference/services/groundstation.json +1 -1
  192. package/src/data/servicereference/services/groundtruthlabeling.json +1 -1
  193. package/src/data/servicereference/services/guardduty.json +1 -1
  194. package/src/data/servicereference/services/health-agent.json +1 -1
  195. package/src/data/servicereference/services/health.json +1 -1
  196. package/src/data/servicereference/services/healthlake.json +1 -1
  197. package/src/data/servicereference/services/honeycode.json +1 -1
  198. package/src/data/servicereference/services/iam.json +1 -1
  199. package/src/data/servicereference/services/identity-sync.json +1 -1
  200. package/src/data/servicereference/services/identitystore-auth.json +1 -1
  201. package/src/data/servicereference/services/identitystore.json +1 -1
  202. package/src/data/servicereference/services/imagebuilder.json +1 -1
  203. package/src/data/servicereference/services/importexport.json +1 -1
  204. package/src/data/servicereference/services/inspector-scan.json +1 -1
  205. package/src/data/servicereference/services/inspector.json +1 -1
  206. package/src/data/servicereference/services/inspector2-telemetry.json +1 -1
  207. package/src/data/servicereference/services/inspector2.json +1 -1
  208. package/src/data/servicereference/services/interconnect.json +1 -1
  209. package/src/data/servicereference/services/internetmonitor.json +1 -1
  210. package/src/data/servicereference/services/invoicing.json +1 -1
  211. package/src/data/servicereference/services/iot-device-tester.json +1 -1
  212. package/src/data/servicereference/services/iot.json +1 -1
  213. package/src/data/servicereference/services/iotanalytics.json +1 -1
  214. package/src/data/servicereference/services/iotdeviceadvisor.json +1 -1
  215. package/src/data/servicereference/services/iotevents.json +1 -1
  216. package/src/data/servicereference/services/iotfleethub.json +1 -1
  217. package/src/data/servicereference/services/iotfleetwise.json +1 -1
  218. package/src/data/servicereference/services/iotjobsdata.json +1 -1
  219. package/src/data/servicereference/services/iotmanagedintegrations.json +1 -1
  220. package/src/data/servicereference/services/iotsitewise.json +1 -1
  221. package/src/data/servicereference/services/iottwinmaker.json +1 -1
  222. package/src/data/servicereference/services/iotwireless.json +1 -1
  223. package/src/data/servicereference/services/iq-permission.json +1 -1
  224. package/src/data/servicereference/services/iq.json +1 -1
  225. package/src/data/servicereference/services/ivs.json +1 -1
  226. package/src/data/servicereference/services/ivschat.json +1 -1
  227. package/src/data/servicereference/services/kafka-cluster.json +1 -1
  228. package/src/data/servicereference/services/kafka.json +1 -1
  229. package/src/data/servicereference/services/kafkaconnect.json +1 -1
  230. package/src/data/servicereference/services/kendra-ranking.json +1 -1
  231. package/src/data/servicereference/services/kendra.json +1 -1
  232. package/src/data/servicereference/services/kinesis.json +1 -1
  233. package/src/data/servicereference/services/kinesisanalytics.json +1 -1
  234. package/src/data/servicereference/services/kinesisvideo.json +1 -1
  235. package/src/data/servicereference/services/kms.json +1 -1
  236. package/src/data/servicereference/services/lakeformation.json +1 -1
  237. package/src/data/servicereference/services/lambda.json +1 -1
  238. package/src/data/servicereference/services/launchwizard.json +1 -1
  239. package/src/data/servicereference/services/lex.json +1 -1
  240. package/src/data/servicereference/services/license-manager-linux-subscriptions.json +1 -1
  241. package/src/data/servicereference/services/license-manager-user-subscriptions.json +1 -1
  242. package/src/data/servicereference/services/license-manager.json +1 -1
  243. package/src/data/servicereference/services/lightsail.json +1 -1
  244. package/src/data/servicereference/services/logs.json +1 -1
  245. package/src/data/servicereference/services/lookoutequipment.json +1 -1
  246. package/src/data/servicereference/services/lookoutmetrics.json +1 -1
  247. package/src/data/servicereference/services/lookoutvision.json +1 -1
  248. package/src/data/servicereference/services/m2.json +1 -1
  249. package/src/data/servicereference/services/machinelearning.json +1 -1
  250. package/src/data/servicereference/services/macie2.json +1 -1
  251. package/src/data/servicereference/services/managedblockchain-query.json +1 -1
  252. package/src/data/servicereference/services/managedblockchain.json +1 -1
  253. package/src/data/servicereference/services/mapcredits.json +1 -1
  254. package/src/data/servicereference/services/marketplacecommerceanalytics.json +1 -1
  255. package/src/data/servicereference/services/mechanicalturk.json +1 -1
  256. package/src/data/servicereference/services/mediaconnect.json +1 -1
  257. package/src/data/servicereference/services/mediaconvert.json +1 -1
  258. package/src/data/servicereference/services/mediaimport.json +1 -1
  259. package/src/data/servicereference/services/medialive.json +1 -1
  260. package/src/data/servicereference/services/mediapackage-vod.json +1 -1
  261. package/src/data/servicereference/services/mediapackage.json +1 -1
  262. package/src/data/servicereference/services/mediapackagev2.json +1 -1
  263. package/src/data/servicereference/services/mediastore.json +1 -1
  264. package/src/data/servicereference/services/mediatailor.json +1 -1
  265. package/src/data/servicereference/services/medical-imaging.json +1 -1
  266. package/src/data/servicereference/services/memorydb.json +1 -1
  267. package/src/data/servicereference/services/mgh.json +1 -1
  268. package/src/data/servicereference/services/mgn.json +1 -1
  269. package/src/data/servicereference/services/migrationhub-orchestrator.json +1 -1
  270. package/src/data/servicereference/services/migrationhub-strategy.json +1 -1
  271. package/src/data/servicereference/services/mobileanalytics.json +1 -1
  272. package/src/data/servicereference/services/mobiletargeting.json +1 -1
  273. package/src/data/servicereference/services/monitron.json +1 -1
  274. package/src/data/servicereference/services/mpa.json +1 -1
  275. package/src/data/servicereference/services/mq.json +1 -1
  276. package/src/data/servicereference/services/neptune-db.json +1 -1
  277. package/src/data/servicereference/services/neptune-graph.json +1 -1
  278. package/src/data/servicereference/services/network-firewall.json +1 -1
  279. package/src/data/servicereference/services/network-security-director.json +1 -1
  280. package/src/data/servicereference/services/networkflowmonitor.json +1 -1
  281. package/src/data/servicereference/services/networkmanager-chat.json +1 -1
  282. package/src/data/servicereference/services/networkmanager.json +1 -1
  283. package/src/data/servicereference/services/networkmonitor.json +1 -1
  284. package/src/data/servicereference/services/nimble.json +1 -1
  285. package/src/data/servicereference/services/notifications-contacts.json +1 -1
  286. package/src/data/servicereference/services/notifications.json +1 -1
  287. package/src/data/servicereference/services/nova-act.json +1 -1
  288. package/src/data/servicereference/services/oam.json +1 -1
  289. package/src/data/servicereference/services/observabilityadmin.json +1 -1
  290. package/src/data/servicereference/services/odb.json +1 -1
  291. package/src/data/servicereference/services/omics.json +1 -1
  292. package/src/data/servicereference/services/one.json +1 -1
  293. package/src/data/servicereference/services/opensearch.json +1 -1
  294. package/src/data/servicereference/services/opsworks-cm.json +1 -1
  295. package/src/data/servicereference/services/opsworks.json +1 -1
  296. package/src/data/servicereference/services/organizations.json +1 -1
  297. package/src/data/servicereference/services/osis.json +1 -1
  298. package/src/data/servicereference/services/outposts.json +1 -1
  299. package/src/data/servicereference/services/panorama.json +1 -1
  300. package/src/data/servicereference/services/partnercentral-account-management.json +1 -1
  301. package/src/data/servicereference/services/partnercentral.json +1 -1
  302. package/src/data/servicereference/services/payment-cryptography.json +1 -1
  303. package/src/data/servicereference/services/payments.json +1 -1
  304. package/src/data/servicereference/services/pca-connector-ad.json +1 -1
  305. package/src/data/servicereference/services/pca-connector-scep.json +1 -1
  306. package/src/data/servicereference/services/pcs.json +1 -1
  307. package/src/data/servicereference/services/personalize.json +1 -1
  308. package/src/data/servicereference/services/pi.json +1 -1
  309. package/src/data/servicereference/services/pipes.json +1 -1
  310. package/src/data/servicereference/services/polly.json +1 -1
  311. package/src/data/servicereference/services/pricing.json +1 -1
  312. package/src/data/servicereference/services/pricingplanmanager.json +1 -1
  313. package/src/data/servicereference/services/private-networks.json +1 -1
  314. package/src/data/servicereference/services/profile.json +1 -1
  315. package/src/data/servicereference/services/proton.json +1 -1
  316. package/src/data/servicereference/services/purchase-orders.json +1 -1
  317. package/src/data/servicereference/services/q.json +1 -1
  318. package/src/data/servicereference/services/qapps.json +1 -1
  319. package/src/data/servicereference/services/qbusiness.json +1 -1
  320. package/src/data/servicereference/services/qdeveloper.json +1 -1
  321. package/src/data/servicereference/services/qldb.json +1 -1
  322. package/src/data/servicereference/services/quicksight.json +1 -1
  323. package/src/data/servicereference/services/ram.json +1 -1
  324. package/src/data/servicereference/services/rbin.json +1 -1
  325. package/src/data/servicereference/services/rds-data.json +1 -1
  326. package/src/data/servicereference/services/rds-db.json +1 -1
  327. package/src/data/servicereference/services/rds.json +1 -1
  328. package/src/data/servicereference/services/redshift-data.json +1 -1
  329. package/src/data/servicereference/services/redshift-serverless.json +1 -1
  330. package/src/data/servicereference/services/redshift.json +1 -1
  331. package/src/data/servicereference/services/refactor-spaces.json +1 -1
  332. package/src/data/servicereference/services/rekognition.json +1 -1
  333. package/src/data/servicereference/services/repostspace.json +1 -1
  334. package/src/data/servicereference/services/resiliencehub.json +1 -1
  335. package/src/data/servicereference/services/resource-explorer-2.json +1 -1
  336. package/src/data/servicereference/services/resource-explorer.json +1 -1
  337. package/src/data/servicereference/services/resource-groups.json +1 -1
  338. package/src/data/servicereference/services/rhelkb.json +1 -1
  339. package/src/data/servicereference/services/robomaker.json +1 -1
  340. package/src/data/servicereference/services/rolesanywhere.json +1 -1
  341. package/src/data/servicereference/services/route53-recovery-cluster.json +1 -1
  342. package/src/data/servicereference/services/route53-recovery-control-config.json +1 -1
  343. package/src/data/servicereference/services/route53-recovery-readiness.json +1 -1
  344. package/src/data/servicereference/services/route53.json +1 -1
  345. package/src/data/servicereference/services/route53domains.json +1 -1
  346. package/src/data/servicereference/services/route53globalresolver.json +1 -1
  347. package/src/data/servicereference/services/route53profiles.json +1 -1
  348. package/src/data/servicereference/services/route53resolver.json +1 -1
  349. package/src/data/servicereference/services/rtbfabric.json +1 -1
  350. package/src/data/servicereference/services/rum.json +1 -1
  351. package/src/data/servicereference/services/s3-object-lambda.json +1 -1
  352. package/src/data/servicereference/services/s3-outposts.json +1 -1
  353. package/src/data/servicereference/services/s3.json +1 -1
  354. package/src/data/servicereference/services/s3express.json +1 -1
  355. package/src/data/servicereference/services/s3tables.json +1 -1
  356. package/src/data/servicereference/services/s3vectors.json +1 -1
  357. package/src/data/servicereference/services/sagemaker-data-science-assistant.json +1 -1
  358. package/src/data/servicereference/services/sagemaker-geospatial.json +1 -1
  359. package/src/data/servicereference/services/sagemaker-mlflow.json +1 -1
  360. package/src/data/servicereference/services/sagemaker-unified-studio-mcp.json +1 -1
  361. package/src/data/servicereference/services/sagemaker.json +1 -1
  362. package/src/data/servicereference/services/savingsplans.json +1 -1
  363. package/src/data/servicereference/services/scheduler.json +1 -1
  364. package/src/data/servicereference/services/schemas.json +1 -1
  365. package/src/data/servicereference/services/scn.json +1 -1
  366. package/src/data/servicereference/services/sdb.json +1 -1
  367. package/src/data/servicereference/services/secretsmanager.json +1 -1
  368. package/src/data/servicereference/services/security-ir.json +1 -1
  369. package/src/data/servicereference/services/securityagent.json +1 -1
  370. package/src/data/servicereference/services/securityhub.json +1 -1
  371. package/src/data/servicereference/services/securitylake.json +1 -1
  372. package/src/data/servicereference/services/serverlessrepo.json +1 -1
  373. package/src/data/servicereference/services/servicecatalog.json +1 -1
  374. package/src/data/servicereference/services/servicediscovery.json +1 -1
  375. package/src/data/servicereference/services/serviceextract.json +1 -1
  376. package/src/data/servicereference/services/servicequotas.json +1 -1
  377. package/src/data/servicereference/services/ses.json +1 -1
  378. package/src/data/servicereference/services/shield.json +1 -1
  379. package/src/data/servicereference/services/signer.json +1 -1
  380. package/src/data/servicereference/services/signin.json +1 -1
  381. package/src/data/servicereference/services/simspaceweaver.json +1 -1
  382. package/src/data/servicereference/services/sms-voice.json +1 -1
  383. package/src/data/servicereference/services/sms.json +1 -1
  384. package/src/data/servicereference/services/snow-device-management.json +1 -1
  385. package/src/data/servicereference/services/snowball.json +1 -1
  386. package/src/data/servicereference/services/sns.json +1 -1
  387. package/src/data/servicereference/services/social-messaging.json +1 -1
  388. package/src/data/servicereference/services/sqlworkbench.json +1 -1
  389. package/src/data/servicereference/services/sqs.json +1 -1
  390. package/src/data/servicereference/services/ssm-contacts.json +1 -1
  391. package/src/data/servicereference/services/ssm-guiconnect.json +1 -1
  392. package/src/data/servicereference/services/ssm-incidents.json +1 -1
  393. package/src/data/servicereference/services/ssm-quicksetup.json +1 -1
  394. package/src/data/servicereference/services/ssm-sap.json +1 -1
  395. package/src/data/servicereference/services/ssm.json +1 -1
  396. package/src/data/servicereference/services/ssmmessages.json +1 -1
  397. package/src/data/servicereference/services/sso-directory.json +1 -1
  398. package/src/data/servicereference/services/sso-oauth.json +1 -1
  399. package/src/data/servicereference/services/sso.json +1 -1
  400. package/src/data/servicereference/services/states.json +1 -1
  401. package/src/data/servicereference/services/storagegateway.json +1 -1
  402. package/src/data/servicereference/services/sts.json +1 -1
  403. package/src/data/servicereference/services/support-console.json +1 -1
  404. package/src/data/servicereference/services/support.json +1 -1
  405. package/src/data/servicereference/services/supportapp.json +1 -1
  406. package/src/data/servicereference/services/supportplans.json +1 -1
  407. package/src/data/servicereference/services/sustainability.json +1 -1
  408. package/src/data/servicereference/services/swf.json +1 -1
  409. package/src/data/servicereference/services/synthetics.json +1 -1
  410. package/src/data/servicereference/services/tag.json +1 -1
  411. package/src/data/servicereference/services/tax.json +1 -1
  412. package/src/data/servicereference/services/textract.json +1 -1
  413. package/src/data/servicereference/services/thinclient.json +1 -1
  414. package/src/data/servicereference/services/timestream-influxdb.json +1 -1
  415. package/src/data/servicereference/services/timestream.json +1 -1
  416. package/src/data/servicereference/services/tiros.json +1 -1
  417. package/src/data/servicereference/services/tnb.json +1 -1
  418. package/src/data/servicereference/services/transcribe.json +1 -1
  419. package/src/data/servicereference/services/transfer.json +1 -1
  420. package/src/data/servicereference/services/transform-custom.json +1 -1
  421. package/src/data/servicereference/services/transform.json +1 -1
  422. package/src/data/servicereference/services/translate.json +1 -1
  423. package/src/data/servicereference/services/trustedadvisor.json +1 -1
  424. package/src/data/servicereference/services/ts.json +1 -1
  425. package/src/data/servicereference/services/user-subscriptions.json +1 -1
  426. package/src/data/servicereference/services/uxc.json +1 -1
  427. package/src/data/servicereference/services/vendor-insights.json +1 -1
  428. package/src/data/servicereference/services/verified-access.json +1 -1
  429. package/src/data/servicereference/services/verifiedpermissions.json +1 -1
  430. package/src/data/servicereference/services/voiceid.json +1 -1
  431. package/src/data/servicereference/services/vpc-lattice-svcs.json +1 -1
  432. package/src/data/servicereference/services/vpc-lattice.json +1 -1
  433. package/src/data/servicereference/services/vpce.json +1 -1
  434. package/src/data/servicereference/services/waf-regional.json +1 -1
  435. package/src/data/servicereference/services/waf.json +1 -1
  436. package/src/data/servicereference/services/wafv2.json +1 -1
  437. package/src/data/servicereference/services/wam.json +1 -1
  438. package/src/data/servicereference/services/wellarchitected.json +1 -1
  439. package/src/data/servicereference/services/wickr.json +1 -1
  440. package/src/data/servicereference/services/wisdom.json +1 -1
  441. package/src/data/servicereference/services/workdocs.json +1 -1
  442. package/src/data/servicereference/services/worklink.json +1 -1
  443. package/src/data/servicereference/services/workmail.json +1 -1
  444. package/src/data/servicereference/services/workmailmessageflow.json +1 -1
  445. package/src/data/servicereference/services/workspaces-instances.json +1 -1
  446. package/src/data/servicereference/services/workspaces-web.json +1 -1
  447. package/src/data/servicereference/services/workspaces.json +1 -1
  448. package/src/data/servicereference/services/xray.json +1 -1
  449. package/src/extension.js +1 -6
  450. package/src/handlers/completion/action-value.d.ts +2 -2
  451. package/src/handlers/completion/action-value.js +37 -20
  452. package/src/handlers/completion/condition-block.d.ts +1 -1
  453. package/src/handlers/completion/condition-block.js +3 -0
  454. package/src/handlers/completion/condition-key.d.ts +1 -1
  455. package/src/handlers/completion/condition-key.js +4 -0
  456. package/src/handlers/completion/condition-operator.d.ts +1 -1
  457. package/src/handlers/completion/condition-operator.js +3 -0
  458. package/src/handlers/completion/effect-value.d.ts +2 -2
  459. package/src/handlers/completion/effect-value.js +4 -1
  460. package/src/handlers/completion/index.d.ts +15 -2
  461. package/src/handlers/completion/index.js +21 -3
  462. package/src/handlers/completion/principal-block-identifier.d.ts +1 -1
  463. package/src/handlers/completion/principal-block-identifier.js +2 -2
  464. package/src/handlers/completion/principal-block-type.d.ts +2 -2
  465. package/src/handlers/completion/principal-block-type.js +4 -1
  466. package/src/handlers/completion/principal-block.d.ts +1 -1
  467. package/src/handlers/completion/principal-block.js +3 -0
  468. package/src/handlers/completion/principal-identifier-completions.d.ts +4 -1
  469. package/src/handlers/completion/principal-identifier-completions.js +10 -6
  470. package/src/handlers/completion/principal-type.d.ts +1 -1
  471. package/src/handlers/completion/principal-type.js +3 -0
  472. package/src/handlers/completion/principal-typed-value.d.ts +1 -1
  473. package/src/handlers/completion/principal-typed-value.js +2 -2
  474. package/src/handlers/completion/principal-value.d.ts +2 -2
  475. package/src/handlers/completion/principal-value.js +4 -1
  476. package/src/handlers/completion/resource-value.d.ts +1 -1
  477. package/src/handlers/completion/resource-value.js +8 -1
  478. package/src/handlers/completion/statement-block.d.ts +1 -1
  479. package/src/handlers/completion/statement-block.js +3 -0
  480. package/src/handlers/completion/statement-key.d.ts +1 -1
  481. package/src/handlers/completion/statement-key.js +3 -0
  482. package/src/handlers/document-link/document-link.d.ts +4 -0
  483. package/src/handlers/document-link/document-link.js +37 -0
  484. package/src/lib/iam-policy/reference/services.d.ts +1 -1
  485. package/src/lib/iam-policy/reference/services.js +5 -1
  486. package/src/lib/iam-policy/reference/types.d.ts +5 -0
  487. package/src/lib/treesitter/base.d.ts +1 -0
  488. package/src/lib/treesitter/hcl.js +43 -29
  489. package/src/lib/treesitter/json.js +9 -8
  490. package/src/lib/treesitter/manager.d.ts +2 -0
  491. package/src/lib/treesitter/manager.js +7 -0
  492. package/src/lib/treesitter/yaml.js +54 -23
  493. package/src/server.js +6 -3
@@ -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,
@@ -0,0 +1,4 @@
1
+ import type { Connection, DocumentLink, DocumentLinkParams, TextDocuments } from 'vscode-languageserver';
2
+ import type { TextDocument } from 'vscode-languageserver-textdocument';
3
+ import type { TreeManager } from '../../lib/treesitter/manager.ts';
4
+ export declare function documentLinkHandler(params: DocumentLinkParams, documents: TextDocuments<TextDocument>, _treeManager: TreeManager, connection: Connection): DocumentLink[];
@@ -0,0 +1,37 @@
1
+ import { ServiceReference } from "../../lib/iam-policy/reference/services.js";
2
+ export function documentLinkHandler(params, documents, _treeManager, connection) {
3
+ const document = documents.get(params.textDocument.uri);
4
+ if (!document)
5
+ return [];
6
+ const text = document.getText();
7
+ const links = [];
8
+ const actionSet = new Set(ServiceReference.getAllActions().map((a) => a.toLowerCase()));
9
+ const pattern = /[a-z0-9-]+:[A-Za-z0-9*?]+/g;
10
+ for (const match of text.matchAll(pattern)) {
11
+ if (!actionSet.has(match[0].toLowerCase()))
12
+ continue;
13
+ const [serviceName, actionName] = match[0].split(':');
14
+ const action = ServiceReference.getAction(serviceName, actionName);
15
+ if (!action)
16
+ continue;
17
+ const index = match.index ?? 0;
18
+ const start = document.positionAt(index);
19
+ const end = document.positionAt(index + match[0].length);
20
+ if (action.iamUrl) {
21
+ links.push({
22
+ range: { start, end },
23
+ target: action.iamUrl,
24
+ tooltip: 'IAM Actions, Conditions, and Context Keys',
25
+ });
26
+ }
27
+ if (action.operationUrl) {
28
+ links.push({
29
+ range: { start, end },
30
+ target: action.operationUrl,
31
+ tooltip: 'API Operation Documentation',
32
+ });
33
+ }
34
+ }
35
+ connection.console.debug(`Found ${links.length} document links in ${params.textDocument.uri}`);
36
+ return links;
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[];
@@ -30,7 +30,11 @@ export class ServiceReference {
30
30
  return ServiceReference.#allServices;
31
31
  }
32
32
  static getActionsForService(service) {
33
- return Object.keys(ServiceReference.getServiceData(service).actions);
33
+ return Object.entries(ServiceReference.getServiceData(service).actions).map(([actionName, action]) => {
34
+ if (!action.name)
35
+ action.name = `${service}:${actionName}`;
36
+ return action;
37
+ });
34
38
  }
35
39
  static getConditionKeysForActions(actions) {
36
40
  const keys = new Map();
@@ -43,6 +43,7 @@ export type RawReference = {
43
43
  };
44
44
  export type ServiceData = {
45
45
  name: string;
46
+ url?: string;
46
47
  actions: Record<string, Action>;
47
48
  resources: Array<{
48
49
  name: string;
@@ -52,6 +53,8 @@ export type ServiceData = {
52
53
  conditionKeys: Record<string, ConditionKey>;
53
54
  };
54
55
  export type Action = {
56
+ name: string;
57
+ service: string;
55
58
  conditionKeys: Array<string>;
56
59
  resources: Array<{
57
60
  name: string;
@@ -64,6 +67,8 @@ export type Action = {
64
67
  }>;
65
68
  dependentActions?: Array<string>;
66
69
  permissionOnly?: boolean;
70
+ operationUrl?: string;
71
+ iamUrl?: string;
67
72
  };
68
73
  export type ConditionKey = {
69
74
  types: Array<string>;
@@ -8,6 +8,7 @@ export type CursorContext = {
8
8
  keys: string[];
9
9
  role: 'key' | 'value';
10
10
  partial: string;
11
+ value: string;
11
12
  policyFormat: PolicyFormat;
12
13
  };
13
14
  export type StatementContext = {
@@ -163,8 +163,8 @@ export class TreeHcl extends TreeBase {
163
163
  }
164
164
  if (role === null)
165
165
  role = 'key';
166
- const partial = this.#extractJsonencodePartial(cursorNode, position);
167
- return { keys, role, partial };
166
+ const { partial, value } = this.#extractJsonencodePartialAndValue(cursorNode, position);
167
+ return { keys, role, partial, value };
168
168
  }
169
169
  #getObjectElemKey(element) {
170
170
  const keyExpression = element.namedChildren.find((child) => child.type === 'expression');
@@ -191,20 +191,21 @@ export class TreeHcl extends TreeBase {
191
191
  .map((element) => this.#getObjectElemKey(element))
192
192
  .filter((key) => key !== null);
193
193
  }
194
- #extractJsonencodePartial(node, position) {
194
+ #extractJsonencodePartialAndValue(node, position) {
195
195
  let current = node;
196
196
  while (current) {
197
197
  if (current.type === 'identifier' || current.type === 'template_literal') {
198
+ const value = current.text;
198
199
  if (position.line === current.startPosition.row) {
199
- return current.text.slice(0, position.column - current.startPosition.column);
200
+ return { partial: value.slice(0, position.column - current.startPosition.column), value };
200
201
  }
201
- return current.text;
202
+ return { partial: value, value };
202
203
  }
203
204
  if (current.type === 'object' || current.type === 'object_elem')
204
205
  break;
205
206
  current = current.parent;
206
207
  }
207
- return '';
208
+ return { partial: '', value: '' };
208
209
  }
209
210
  // ---------------------------------------------------------------------------
210
211
  // Block mode — block/body/attribute, snake_case keys
@@ -226,7 +227,7 @@ export class TreeHcl extends TreeBase {
226
227
  return this.#pickBestCursorContext(context1, context2);
227
228
  }
228
229
  // Cursor is on the block itself (outside body span) — statement-key level
229
- const partial = this.#extractBlockPartial(node, position);
230
+ const { partial, value } = this.#extractBlockPartialAndValue(node, position);
230
231
  // Check for incomplete attributes on the same line (may be in ERROR nodes
231
232
  // when tree-sitter can't parse the body due to a missing value)
232
233
  const searchParent = statementBody ?? statementBlock;
@@ -242,6 +243,7 @@ export class TreeHcl extends TreeBase {
242
243
  keys: [id.text],
243
244
  role: 'value',
244
245
  partial: '',
246
+ value: '',
245
247
  policyFormat: 'hcl-block',
246
248
  };
247
249
  }
@@ -251,6 +253,7 @@ export class TreeHcl extends TreeBase {
251
253
  keys: [],
252
254
  role: 'key',
253
255
  partial,
256
+ value,
254
257
  policyFormat: 'hcl-block',
255
258
  };
256
259
  }
@@ -339,8 +342,8 @@ export class TreeHcl extends TreeBase {
339
342
  }
340
343
  if (role === null)
341
344
  role = 'key';
342
- const partial = this.#extractBlockPartial(cursorNode, position);
343
- return { keys, role, partial };
345
+ const { partial, value } = this.#extractBlockPartialAndValue(cursorNode, position);
346
+ return { keys, role, partial, value };
344
347
  }
345
348
  #findEnclosingBlock(node, blockName, statementBody) {
346
349
  let current = node;
@@ -390,20 +393,21 @@ export class TreeHcl extends TreeBase {
390
393
  #hasBodyAttribute(body, name) {
391
394
  return body.namedChildren.some((child) => child.type === 'attribute' && child.namedChildren.some((id) => id.type === 'identifier' && id.text === name));
392
395
  }
393
- #extractBlockPartial(node, position) {
396
+ #extractBlockPartialAndValue(node, position) {
394
397
  let current = node;
395
398
  while (current) {
396
399
  if (current.type === 'identifier' || current.type === 'template_literal') {
400
+ const value = current.text;
397
401
  if (position.line === current.startPosition.row) {
398
- return current.text.slice(0, position.column - current.startPosition.column);
402
+ return { partial: value.slice(0, position.column - current.startPosition.column), value };
399
403
  }
400
- return current.text;
404
+ return { partial: value, value };
401
405
  }
402
406
  if (current.type === 'body' || current.type === 'attribute' || current.type === 'block')
403
407
  break;
404
408
  current = current.parent;
405
409
  }
406
- return '';
410
+ return { partial: '', value: '' };
407
411
  }
408
412
  // ---------------------------------------------------------------------------
409
413
  // Shared
@@ -533,20 +537,21 @@ export class TreeHcl extends TreeBase {
533
537
  }
534
538
  if (!foundStatement || !lastKey || !policyFormat)
535
539
  return null;
536
- // Extract partial: when the key came from an attribute/object_elem that
537
- // contains the quote (e.g., `effect = "`), it's empty. When the cursor node
538
- // is inside a string (open quote slurped subsequent lines), extract from the
539
- // template_literal. Otherwise extract from ERROR node text.
540
+ // Extract partial and value: when the key came from an attribute/object_elem
541
+ // that contains the quote (e.g., `effect = "`), they're empty. When the
542
+ // cursor node is inside a string (open quote slurped subsequent lines),
543
+ // extract from the template_literal. Otherwise extract from ERROR node text.
540
544
  let partial = '';
545
+ let value = '';
541
546
  if (!lastKeyFromAttribute) {
542
547
  if (this.#isInsideQuote(node)) {
543
- partial = this.#extractQuotedPartial(node, position);
548
+ ({ partial, value } = this.#extractQuotedPartialAndValue(node, position));
544
549
  }
545
550
  else if (nodeBefore && this.#isInsideQuote(nodeBefore)) {
546
- partial = this.#extractQuotedPartial(nodeBefore, position);
551
+ ({ partial, value } = this.#extractQuotedPartialAndValue(nodeBefore, position));
547
552
  }
548
553
  else {
549
- partial = this.#extractPartialFromErrorNode(errorNode, position);
554
+ ({ partial, value } = this.#extractPartialAndValueFromErrorNode(errorNode, position));
550
555
  }
551
556
  }
552
557
  // Build keys with sub-block prefix when inside a sub-block
@@ -561,6 +566,7 @@ export class TreeHcl extends TreeBase {
561
566
  keys,
562
567
  role: 'value',
563
568
  partial,
569
+ value,
564
570
  policyFormat,
565
571
  };
566
572
  }
@@ -568,27 +574,29 @@ export class TreeHcl extends TreeBase {
568
574
  * Extract partial from inside a quoted string (when the open quote caused
569
575
  * tree-sitter to slurp subsequent lines into a string_lit).
570
576
  */
571
- #extractQuotedPartial(node, position) {
577
+ #extractQuotedPartialAndValue(node, position) {
572
578
  let current = node;
573
579
  while (current) {
574
580
  if (current.type === 'template_literal') {
581
+ const value = current.text;
575
582
  if (position.line === current.startPosition.row) {
576
- return current.text.slice(0, position.column - current.startPosition.column);
583
+ return { partial: value.slice(0, position.column - current.startPosition.column), value };
577
584
  }
578
- return '';
585
+ return { partial: '', value };
579
586
  }
580
587
  if (current.type === 'quoted_template_start')
581
- return '';
588
+ return { partial: '', value: '' };
582
589
  if (current.type === 'string_lit') {
583
590
  // Cursor is right after the opening quote, no template_literal yet
584
- return '';
591
+ return { partial: '', value: '' };
585
592
  }
586
593
  current = current.parent;
587
594
  }
588
- return '';
595
+ return { partial: '', value: '' };
589
596
  }
590
- #extractPartialFromErrorNode(errorNode, position) {
597
+ #extractPartialAndValueFromErrorNode(errorNode, position) {
591
598
  let afterColumn = 0;
599
+ let nextChildColumn = null;
592
600
  for (const child of errorNode.children) {
593
601
  if (child.startPosition.row !== position.line)
594
602
  continue;
@@ -599,14 +607,20 @@ export class TreeHcl extends TreeBase {
599
607
  if (child.endPosition.column <= position.column) {
600
608
  afterColumn = child.endPosition.column;
601
609
  }
610
+ else if (nextChildColumn === null && child.startPosition.column > position.column) {
611
+ nextChildColumn = child.startPosition.column;
612
+ }
602
613
  }
603
614
  const lines = errorNode.text.split('\n');
604
615
  const lineIndex = position.line - errorNode.startPosition.row;
605
616
  if (lineIndex < 0 || lineIndex >= lines.length)
606
- return '';
617
+ return { partial: '', value: '' };
607
618
  const line = lines[lineIndex];
608
619
  const startColumn = lineIndex === 0 ? errorNode.startPosition.column : 0;
609
- return line.slice(afterColumn - startColumn, position.column - startColumn);
620
+ const partial = line.slice(afterColumn - startColumn, position.column - startColumn);
621
+ const valueEnd = nextChildColumn !== null ? nextChildColumn - startColumn : line.length;
622
+ const value = line.slice(afterColumn - startColumn, valueEnd);
623
+ return { partial, value };
610
624
  }
611
625
  #getExpressionIdentifier(expression) {
612
626
  const variableExpression = expression.namedChildren.find((child) => child.type === 'variable_expr');
@@ -122,8 +122,8 @@ export class TreeJson extends TreeBase {
122
122
  }
123
123
  if (role === null)
124
124
  role = 'key';
125
- const partial = this.#extractPartial(cursorNode, position);
126
- return { keys, role, partial };
125
+ const { partial, value } = this.#extractPartialAndValue(cursorNode, position);
126
+ return { keys, role, partial, value };
127
127
  }
128
128
  /**
129
129
  * Walk up from a node to find an object that sits inside a Statement array.
@@ -234,23 +234,24 @@ export class TreeJson extends TreeBase {
234
234
  return false;
235
235
  }
236
236
  /**
237
- * Extract the partial text the user has typed, from the nearest string_content
238
- * node up to the cursor position.
237
+ * Extract the partial text (up to cursor) and full value from the nearest
238
+ * string_content node.
239
239
  */
240
- #extractPartial(node, position) {
240
+ #extractPartialAndValue(node, position) {
241
241
  let current = node;
242
242
  while (current) {
243
243
  if (current.type === 'string_content') {
244
+ const value = current.text;
244
245
  if (position.line === current.startPosition.row) {
245
- return current.text.slice(0, position.column - current.startPosition.column);
246
+ return { partial: value.slice(0, position.column - current.startPosition.column), value };
246
247
  }
247
- return current.text;
248
+ return { partial: value, value };
248
249
  }
249
250
  if (current.type === 'object' || current.type === 'pair')
250
251
  break;
251
252
  current = current.parent;
252
253
  }
253
- return '';
254
+ return { partial: '', value: '' };
254
255
  }
255
256
  /**
256
257
  * Read string values from a JSON pair's value (string or array of strings).
@@ -1,7 +1,9 @@
1
+ import type { Connection } from 'vscode-languageserver';
1
2
  import type { TreeBase } from './base.ts';
2
3
  export type DocumentFormat = 'yaml' | 'json' | 'hcl';
3
4
  export declare class TreeManager {
4
5
  #private;
6
+ constructor(connection: Connection);
5
7
  openDocument(uri: string, content: string, languageId: string): Promise<void>;
6
8
  updateDocument(uri: string, content: string): Promise<void>;
7
9
  closeDocument(uri: string): void;
@@ -13,7 +13,12 @@ export class TreeManager {
13
13
  hcl: null,
14
14
  };
15
15
  #uriToFormat = new Map();
16
+ #connection;
17
+ constructor(connection) {
18
+ this.#connection = connection;
19
+ }
16
20
  async openDocument(uri, content, languageId) {
21
+ this.#connection.console.info(`Opening document: ${uri} with language ID: ${languageId}`);
17
22
  const format = TreeManager.#detectFormat(uri, languageId);
18
23
  if (!format)
19
24
  return;
@@ -24,6 +29,7 @@ export class TreeManager {
24
29
  this.#trees[format].openDocument(uri, content);
25
30
  }
26
31
  async updateDocument(uri, content) {
32
+ this.#connection.console.debug(`Updating document: ${uri} with length: ${content.length}`);
27
33
  const format = this.#uriToFormat.get(uri);
28
34
  if (!format)
29
35
  return;
@@ -33,6 +39,7 @@ export class TreeManager {
33
39
  this.#trees[format].updateDocument(uri, content);
34
40
  }
35
41
  closeDocument(uri) {
42
+ this.#connection.console.info(`Closing document: ${uri}`);
36
43
  const format = this.#uriToFormat.get(uri);
37
44
  if (!format)
38
45
  return;