aws-iam-language-server 0.0.7 → 0.0.9

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 (457) hide show
  1. package/package.json +1 -1
  2. package/src/data/servicereference/actions.json +1 -1
  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/handlers/document-link/document-link.d.ts +4 -0
  449. package/src/handlers/document-link/document-link.js +36 -0
  450. package/src/lib/iam-policy/reference/types.d.ts +3 -0
  451. package/src/lib/treesitter/base.d.ts +1 -0
  452. package/src/lib/treesitter/hcl.js +43 -29
  453. package/src/lib/treesitter/json.js +9 -8
  454. package/src/lib/treesitter/yaml.js +39 -23
  455. package/src/server.js +3 -0
  456. package/.direnv/bin/nix-direnv-reload +0 -19
  457. package/.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa.rc +0 -2156
@@ -1 +1 @@
1
- {"name":"xray","actions":{"BatchGetTraceSummaryById":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve metadata for a list of traces specified by ID","accessLevel":"Read","resourceTypes":[],"permissionOnly":true},"BatchGetTraces":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve a list of traces specified by ID. Each trace is a collection of segment documents that originates from a single request. Use GetTraceSummaries to get a list of trace IDs","accessLevel":"List","resourceTypes":[]},"CancelTraceRetrieval":{"conditionKeys":[],"resources":[],"description":"Grants permission to cancel an ongoing trace retrieval job initiated by StartTraceRetrieval using the provided RetrievalToken. A successful cancellation will return an HTTP 200 response","accessLevel":"Read","resourceTypes":[]},"CreateGroup":{"conditionKeys":["aws:RequestTag/${TagKey}","aws:TagKeys"],"resources":[{"name":"group"}],"description":"Grants permission to create a group resource with a name and a filter expression","accessLevel":"Write","resourceTypes":[{"name":"group","required":true}]},"CreateSamplingRule":{"conditionKeys":["aws:RequestTag/${TagKey}","aws:TagKeys"],"resources":[{"name":"sampling-rule"}],"description":"Grants permission to create a rule to control sampling behavior for instrumented applications","accessLevel":"Write","resourceTypes":[{"name":"sampling-rule","required":true}]},"DeleteGroup":{"conditionKeys":["aws:ResourceTag/${TagKey}"],"resources":[{"name":"group"}],"description":"Grants permission to delete a group resource","accessLevel":"Write","resourceTypes":[{"name":"group","required":true}]},"DeleteResourcePolicy":{"conditionKeys":["xray:ResourcePolicyName"],"resources":[],"description":"Grants permission to delete resource policies","accessLevel":"Write","resourceTypes":[]},"DeleteSamplingRule":{"conditionKeys":["aws:ResourceTag/${TagKey}"],"resources":[{"name":"sampling-rule"}],"description":"Grants permission to delete a sampling rule","accessLevel":"Write","resourceTypes":[{"name":"sampling-rule","required":true}]},"GetDistinctTraceGraphs":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve distinct service graphs for one or more specific trace IDs","accessLevel":"Read","resourceTypes":[],"permissionOnly":true},"GetEncryptionConfig":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve the current encryption configuration for X-Ray data","accessLevel":"Read","resourceTypes":[]},"GetGroup":{"conditionKeys":["aws:ResourceTag/${TagKey}"],"resources":[{"name":"group"}],"description":"Grants permission to retrieve group resource details","accessLevel":"Read","resourceTypes":[{"name":"group","required":true}]},"GetGroups":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve all active group details","accessLevel":"Read","resourceTypes":[]},"GetIndexingRules":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve all indexing rules. Indexing rules are used to determine the server-side sampling rate for spans ingested through the CloudWatchLogs destination and indexed by X-Ray","accessLevel":"Read","resourceTypes":[]},"GetInsight":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve the details of a specific insight","accessLevel":"Read","resourceTypes":[]},"GetInsightEvents":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve the events of a specific insight","accessLevel":"Read","resourceTypes":[]},"GetInsightImpactGraph":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve the part of the service graph which is impacted for a specific insight","accessLevel":"Read","resourceTypes":[]},"GetInsightSummaries":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve the summary of all insights for a group and time range with optional filters","accessLevel":"Read","resourceTypes":[]},"GetRetrievedTracesGraph":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve a service graph for traces based on the specified RetrievalToken from the Transaction Search CloudWatch log group","accessLevel":"Read","resourceTypes":[]},"GetSamplingRules":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve all sampling rules","accessLevel":"Read","resourceTypes":[]},"GetSamplingStatisticSummaries":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve information about recent sampling results for all sampling rules","accessLevel":"Read","resourceTypes":[]},"GetSamplingTargets":{"conditionKeys":[],"resources":[],"description":"Grants permission to request a sampling quota for rules that the service is using to sample requests","accessLevel":"Read","resourceTypes":[]},"GetServiceGraph":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve a document that describes services that process incoming requests, and downstream services that they call as a result","accessLevel":"Read","resourceTypes":[]},"GetTimeSeriesServiceStatistics":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve an aggregation of service statistics defined by a specific time range bucketed into time intervals","accessLevel":"Read","resourceTypes":[]},"GetTraceGraph":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve a service graph for one or more specific trace IDs","accessLevel":"Read","resourceTypes":[]},"GetTraceSegmentDestination":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve the current destination of data sent to PutTraceSegments and OpenTelemetry API","accessLevel":"Read","resourceTypes":[]},"GetTraceSummaries":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve IDs and metadata for traces available for a specified time frame using an optional filter. To get the full traces, pass the trace IDs to BatchGetTraces","accessLevel":"Read","resourceTypes":[]},"Link":{"conditionKeys":[],"resources":[],"description":"Grants permission to share X-Ray resources with a monitoring account","accessLevel":"Write","resourceTypes":[],"permissionOnly":true},"ListResourcePolicies":{"conditionKeys":[],"resources":[],"description":"Grants permission to list resource policies","accessLevel":"List","resourceTypes":[]},"ListRetrievedTraces":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve a list of traces for a given RetrievalToken from the Transaction Search CloudWatch log group","accessLevel":"List","resourceTypes":[]},"ListTagsForResource":{"conditionKeys":[],"resources":[{"name":"group"},{"name":"sampling-rule"}],"description":"Grants permission to list tags for an X-Ray resource","accessLevel":"List","resourceTypes":[{"name":"group","required":false},{"name":"sampling-rule","required":false}]},"PutEncryptionConfig":{"conditionKeys":[],"resources":[],"description":"Grants permission to update the encryption configuration for X-Ray data","accessLevel":"Permissions management","resourceTypes":[]},"PutResourcePolicy":{"conditionKeys":["xray:ResourcePolicyName"],"resources":[],"description":"Grants permission to create or update resource policies","accessLevel":"Write","resourceTypes":[]},"PutSpans":{"conditionKeys":["logs:LogGeneratingResourceArns"],"resources":[],"description":"Grants permission to upload OpenTelemetry spans to AWS X-Ray","accessLevel":"Write","resourceTypes":[]},"PutSpansForIndexing":{"conditionKeys":[],"resources":[],"description":"Grants permission to upload spans to AWS X-Ray to be indexed","accessLevel":"Write","resourceTypes":[],"permissionOnly":true},"PutTelemetryRecords":{"conditionKeys":[],"resources":[],"description":"Grants permission to send AWS X-Ray daemon telemetry to the service","accessLevel":"Write","resourceTypes":[]},"PutTraceSegments":{"conditionKeys":["logs:LogGeneratingResourceArns"],"resources":[],"description":"Grants permission to upload segment documents to AWS X-Ray. The X-Ray SDK generates segment documents and sends them to the X-Ray daemon, which uploads them in batches","accessLevel":"Write","resourceTypes":[]},"StartTraceRetrieval":{"conditionKeys":[],"resources":[],"description":"Grants permission to initiate a trace retrieval process using the specified time range and for the given trace IDs on the Transaction Search CloudWatch log group","accessLevel":"Read","resourceTypes":[]},"TagResource":{"conditionKeys":["aws:RequestTag/${TagKey}","aws:TagKeys"],"resources":[{"name":"group"},{"name":"sampling-rule"}],"description":"Grants permission to add tags to an X-Ray resource","accessLevel":"Tagging","resourceTypes":[{"name":"group","required":false},{"name":"sampling-rule","required":false}]},"UntagResource":{"conditionKeys":["aws:TagKeys"],"resources":[{"name":"group"},{"name":"sampling-rule"}],"description":"Grants permission to remove tags from an X-Ray resource","accessLevel":"Tagging","resourceTypes":[{"name":"group","required":false},{"name":"sampling-rule","required":false}]},"UpdateGroup":{"conditionKeys":["aws:ResourceTag/${TagKey}"],"resources":[{"name":"group"}],"description":"Grants permission to update a group resource","accessLevel":"Write","resourceTypes":[{"name":"group","required":true}]},"UpdateIndexingRule":{"conditionKeys":[],"resources":[],"description":"Grants permission to modify an indexing rule's configuration","accessLevel":"Write","resourceTypes":[]},"UpdateSamplingRule":{"conditionKeys":["aws:ResourceTag/${TagKey}"],"resources":[{"name":"sampling-rule"}],"description":"Grants permission to modify a sampling rule's configuration","accessLevel":"Write","resourceTypes":[{"name":"sampling-rule","required":true}]},"UpdateTraceSegmentDestination":{"conditionKeys":["xray:TraceSegmentDestination"],"resources":[],"description":"Grants permission to modify the destination of data sent to PutTraceSegments and OpenTelemetry API","accessLevel":"Write","resourceTypes":[]}},"resources":[{"name":"group","arnFormats":["arn:${Partition}:xray:${Region}:${Account}:group/${GroupName}/${Id}"],"conditionKeys":["aws:ResourceTag/${TagKey}"]},{"name":"sampling-rule","arnFormats":["arn:${Partition}:xray:${Region}:${Account}:sampling-rule/${SamplingRuleName}"],"conditionKeys":["aws:ResourceTag/${TagKey}"]}],"conditionKeys":{"aws:RequestTag/${TagKey}":{"types":["String"],"description":"Filters access by the tags that are passed in the request"},"aws:ResourceTag/${TagKey}":{"types":["String"],"description":"Filters access by the tags associated with the resource"},"aws:TagKeys":{"types":["ArrayOfString"],"description":"Filters access by the tag keys that are passed in the request"},"logs:LogGeneratingResourceArns":{"types":["ArrayOfARN"],"description":"Filters access by LogGeneratingResourceArn in the request"},"xray:ResourcePolicyName":{"types":["String"],"description":"Filters access by PolicyName in the request"},"xray:TraceSegmentDestination":{"types":["String"],"description":"Filters access by TraceSegmentDestination type in the request"}}}
1
+ {"name":"xray","actions":{"BatchGetTraceSummaryById":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve metadata for a list of traces specified by ID","accessLevel":"Read","resourceTypes":[],"permissionOnly":true,"operationUrl":"https://docs.aws.amazon.com/xray/latest/devguide/security_iam_id-based-policy-examples.html#security_iam_id-based-policy-examples-console","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-BatchGetTraceSummaryById"},"BatchGetTraces":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve a list of traces specified by ID. Each trace is a collection of segment documents that originates from a single request. Use GetTraceSummaries to get a list of trace IDs","accessLevel":"List","resourceTypes":[],"operationUrl":"https://docs.aws.amazon.com/xray/latest/api/API_BatchGetTraces.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-BatchGetTraces"},"CancelTraceRetrieval":{"conditionKeys":[],"resources":[],"description":"Grants permission to cancel an ongoing trace retrieval job initiated by StartTraceRetrieval using the provided RetrievalToken. A successful cancellation will return an HTTP 200 response","accessLevel":"Read","resourceTypes":[],"operationUrl":"API_CancelTraceRetrieval.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-CancelTraceRetrieval"},"CreateGroup":{"conditionKeys":["aws:RequestTag/${TagKey}","aws:TagKeys"],"resources":[{"name":"group"}],"description":"Grants permission to create a group resource with a name and a filter expression","accessLevel":"Write","resourceTypes":[{"name":"group","required":true}],"operationUrl":"https://docs.aws.amazon.com/xray/latest/api/API_CreateGroup.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-CreateGroup"},"CreateSamplingRule":{"conditionKeys":["aws:RequestTag/${TagKey}","aws:TagKeys"],"resources":[{"name":"sampling-rule"}],"description":"Grants permission to create a rule to control sampling behavior for instrumented applications","accessLevel":"Write","resourceTypes":[{"name":"sampling-rule","required":true}],"operationUrl":"https://docs.aws.amazon.com/xray/latest/api/API_CreateSamplingRule.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-CreateSamplingRule"},"DeleteGroup":{"conditionKeys":["aws:ResourceTag/${TagKey}"],"resources":[{"name":"group"}],"description":"Grants permission to delete a group resource","accessLevel":"Write","resourceTypes":[{"name":"group","required":true}],"operationUrl":"https://docs.aws.amazon.com/xray/latest/api/API_DeleteGroup.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-DeleteGroup"},"DeleteResourcePolicy":{"conditionKeys":["xray:ResourcePolicyName"],"resources":[],"description":"Grants permission to delete resource policies","accessLevel":"Write","resourceTypes":[],"operationUrl":"https://docs.aws.amazon.com/xray/latest/api/API_DeleteResourcePolicy.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-DeleteResourcePolicy"},"DeleteSamplingRule":{"conditionKeys":["aws:ResourceTag/${TagKey}"],"resources":[{"name":"sampling-rule"}],"description":"Grants permission to delete a sampling rule","accessLevel":"Write","resourceTypes":[{"name":"sampling-rule","required":true}],"operationUrl":"https://docs.aws.amazon.com/xray/latest/api/API_DeleteSamplingRule.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-DeleteSamplingRule"},"GetDistinctTraceGraphs":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve distinct service graphs for one or more specific trace IDs","accessLevel":"Read","resourceTypes":[],"permissionOnly":true,"operationUrl":"https://docs.aws.amazon.com/xray/latest/devguide/security_iam_id-based-policy-examples.html#security_iam_id-based-policy-examples-console","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-GetDistinctTraceGraphs"},"GetEncryptionConfig":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve the current encryption configuration for X-Ray data","accessLevel":"Read","resourceTypes":[],"operationUrl":"https://docs.aws.amazon.com/xray/latest/api/API_GetEncryptionConfig.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-GetEncryptionConfig"},"GetGroup":{"conditionKeys":["aws:ResourceTag/${TagKey}"],"resources":[{"name":"group"}],"description":"Grants permission to retrieve group resource details","accessLevel":"Read","resourceTypes":[{"name":"group","required":true}],"operationUrl":"https://docs.aws.amazon.com/xray/latest/api/API_GetGroup.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-GetGroup"},"GetGroups":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve all active group details","accessLevel":"Read","resourceTypes":[],"operationUrl":"https://docs.aws.amazon.com/xray/latest/api/API_GetGroups.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-GetGroups"},"GetIndexingRules":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve all indexing rules. Indexing rules are used to determine the server-side sampling rate for spans ingested through the CloudWatchLogs destination and indexed by X-Ray","accessLevel":"Read","resourceTypes":[],"operationUrl":"https://docs.aws.amazon.com/xray/latest/api/API_GetIndexingRules.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-GetIndexingRules"},"GetInsight":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve the details of a specific insight","accessLevel":"Read","resourceTypes":[],"operationUrl":"https://docs.aws.amazon.com/xray/latest/api/API_GetInsight.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-GetInsight"},"GetInsightEvents":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve the events of a specific insight","accessLevel":"Read","resourceTypes":[],"operationUrl":"https://docs.aws.amazon.com/xray/latest/api/API_GetInsightEvents.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-GetInsightEvents"},"GetInsightImpactGraph":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve the part of the service graph which is impacted for a specific insight","accessLevel":"Read","resourceTypes":[],"operationUrl":"https://docs.aws.amazon.com/xray/latest/api/API_GetInsightImpactGraph.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-GetInsightImpactGraph"},"GetInsightSummaries":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve the summary of all insights for a group and time range with optional filters","accessLevel":"Read","resourceTypes":[],"operationUrl":"https://docs.aws.amazon.com/xray/latest/api/API_GetInsightSummaries.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-GetInsightSummaries"},"GetRetrievedTracesGraph":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve a service graph for traces based on the specified RetrievalToken from the Transaction Search CloudWatch log group","accessLevel":"Read","resourceTypes":[],"operationUrl":"API_GetRetrievedTracesGraph.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-GetRetrievedTracesGraph"},"GetSamplingRules":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve all sampling rules","accessLevel":"Read","resourceTypes":[],"operationUrl":"https://docs.aws.amazon.com/xray/latest/api/API_GetSamplingRules.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-GetSamplingRules"},"GetSamplingStatisticSummaries":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve information about recent sampling results for all sampling rules","accessLevel":"Read","resourceTypes":[],"operationUrl":"https://docs.aws.amazon.com/xray/latest/api/API_GetSamplingStatisticSummaries.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-GetSamplingStatisticSummaries"},"GetSamplingTargets":{"conditionKeys":[],"resources":[],"description":"Grants permission to request a sampling quota for rules that the service is using to sample requests","accessLevel":"Read","resourceTypes":[],"operationUrl":"https://docs.aws.amazon.com/xray/latest/api/API_GetSamplingTargets.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-GetSamplingTargets"},"GetServiceGraph":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve a document that describes services that process incoming requests, and downstream services that they call as a result","accessLevel":"Read","resourceTypes":[],"operationUrl":"https://docs.aws.amazon.com/xray/latest/api/API_GetServiceGraph.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-GetServiceGraph"},"GetTimeSeriesServiceStatistics":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve an aggregation of service statistics defined by a specific time range bucketed into time intervals","accessLevel":"Read","resourceTypes":[],"operationUrl":"https://docs.aws.amazon.com/xray/latest/api/API_GetTimeSeriesServiceStatistics.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-GetTimeSeriesServiceStatistics"},"GetTraceGraph":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve a service graph for one or more specific trace IDs","accessLevel":"Read","resourceTypes":[],"operationUrl":"https://docs.aws.amazon.com/xray/latest/api/API_GetTraceGraph.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-GetTraceGraph"},"GetTraceSegmentDestination":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve the current destination of data sent to PutTraceSegments and OpenTelemetry API","accessLevel":"Read","resourceTypes":[],"operationUrl":"https://docs.aws.amazon.com/xray/latest/api/API_GetTraceSegmentDestination.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-GetTraceSegmentDestination"},"GetTraceSummaries":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve IDs and metadata for traces available for a specified time frame using an optional filter. To get the full traces, pass the trace IDs to BatchGetTraces","accessLevel":"Read","resourceTypes":[],"operationUrl":"https://docs.aws.amazon.com/xray/latest/api/API_GetTraceSummaries.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-GetTraceSummaries"},"Link":{"conditionKeys":[],"resources":[],"description":"Grants permission to share X-Ray resources with a monitoring account","accessLevel":"Write","resourceTypes":[],"permissionOnly":true,"operationUrl":"https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Unified-Cross-Account-Setup.html#CloudWatch-Unified-Cross-Account-Setup-permissions","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-Link"},"ListResourcePolicies":{"conditionKeys":[],"resources":[],"description":"Grants permission to list resource policies","accessLevel":"List","resourceTypes":[],"operationUrl":"https://docs.aws.amazon.com/xray/latest/api/API_ListResourcePolicies.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-ListResourcePolicies"},"ListRetrievedTraces":{"conditionKeys":[],"resources":[],"description":"Grants permission to retrieve a list of traces for a given RetrievalToken from the Transaction Search CloudWatch log group","accessLevel":"List","resourceTypes":[],"operationUrl":"API_ListRetrievedTraces.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-ListRetrievedTraces"},"ListTagsForResource":{"conditionKeys":[],"resources":[{"name":"group"},{"name":"sampling-rule"}],"description":"Grants permission to list tags for an X-Ray resource","accessLevel":"List","resourceTypes":[{"name":"group","required":false},{"name":"sampling-rule","required":false}],"operationUrl":"https://docs.aws.amazon.com/xray/latest/api/API_ListTagsForResource.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-ListTagsForResource"},"PutEncryptionConfig":{"conditionKeys":[],"resources":[],"description":"Grants permission to update the encryption configuration for X-Ray data","accessLevel":"Permissions management","resourceTypes":[],"operationUrl":"https://docs.aws.amazon.com/xray/latest/api/API_PutEncryptionConfig.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-PutEncryptionConfig"},"PutResourcePolicy":{"conditionKeys":["xray:ResourcePolicyName"],"resources":[],"description":"Grants permission to create or update resource policies","accessLevel":"Write","resourceTypes":[],"operationUrl":"https://docs.aws.amazon.com/xray/latest/api/API_PutResourcePolicy.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-PutResourcePolicy"},"PutSpans":{"conditionKeys":["logs:LogGeneratingResourceArns"],"resources":[],"description":"Grants permission to upload OpenTelemetry spans to AWS X-Ray","accessLevel":"Write","resourceTypes":[],"operationUrl":"https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-OTLPEndpoint.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-PutSpans"},"PutSpansForIndexing":{"conditionKeys":[],"resources":[],"description":"Grants permission to upload spans to AWS X-Ray to be indexed","accessLevel":"Write","resourceTypes":[],"permissionOnly":true,"operationUrl":"https://docs.aws.amazon.com/xray/latest/devguide/security_iam_id-based-policy-examples.html#security_iam_id-based-policy-examples-console","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-PutSpansForIndexing"},"PutTelemetryRecords":{"conditionKeys":[],"resources":[],"description":"Grants permission to send AWS X-Ray daemon telemetry to the service","accessLevel":"Write","resourceTypes":[],"operationUrl":"https://docs.aws.amazon.com/xray/latest/api/API_PutTelemetryRecords.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-PutTelemetryRecords"},"PutTraceSegments":{"conditionKeys":["logs:LogGeneratingResourceArns"],"resources":[],"description":"Grants permission to upload segment documents to AWS X-Ray. The X-Ray SDK generates segment documents and sends them to the X-Ray daemon, which uploads them in batches","accessLevel":"Write","resourceTypes":[],"operationUrl":"https://docs.aws.amazon.com/xray/latest/api/API_PutTraceSegments.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-PutTraceSegments"},"StartTraceRetrieval":{"conditionKeys":[],"resources":[],"description":"Grants permission to initiate a trace retrieval process using the specified time range and for the given trace IDs on the Transaction Search CloudWatch log group","accessLevel":"Read","resourceTypes":[],"operationUrl":"API_StartTraceRetrieval","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-StartTraceRetrieval"},"TagResource":{"conditionKeys":["aws:RequestTag/${TagKey}","aws:TagKeys"],"resources":[{"name":"group"},{"name":"sampling-rule"}],"description":"Grants permission to add tags to an X-Ray resource","accessLevel":"Tagging","resourceTypes":[{"name":"group","required":false},{"name":"sampling-rule","required":false}],"operationUrl":"https://docs.aws.amazon.com/xray/latest/api/API_TagResource.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-TagResource"},"UntagResource":{"conditionKeys":["aws:TagKeys"],"resources":[{"name":"group"},{"name":"sampling-rule"}],"description":"Grants permission to remove tags from an X-Ray resource","accessLevel":"Tagging","resourceTypes":[{"name":"group","required":false},{"name":"sampling-rule","required":false}],"operationUrl":"https://docs.aws.amazon.com/xray/latest/api/API_UntagResource.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-UntagResource"},"UpdateGroup":{"conditionKeys":["aws:ResourceTag/${TagKey}"],"resources":[{"name":"group"}],"description":"Grants permission to update a group resource","accessLevel":"Write","resourceTypes":[{"name":"group","required":true}],"operationUrl":"https://docs.aws.amazon.com/xray/latest/api/API_UpdateGroup.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-UpdateGroup"},"UpdateIndexingRule":{"conditionKeys":[],"resources":[],"description":"Grants permission to modify an indexing rule's configuration","accessLevel":"Write","resourceTypes":[],"operationUrl":"https://docs.aws.amazon.com/xray/latest/api/API_UpdateIndexingRule.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-UpdateIndexingRule"},"UpdateSamplingRule":{"conditionKeys":["aws:ResourceTag/${TagKey}"],"resources":[{"name":"sampling-rule"}],"description":"Grants permission to modify a sampling rule's configuration","accessLevel":"Write","resourceTypes":[{"name":"sampling-rule","required":true}],"operationUrl":"https://docs.aws.amazon.com/xray/latest/api/API_UpdateSamplingRule.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-UpdateSamplingRule"},"UpdateTraceSegmentDestination":{"conditionKeys":["xray:TraceSegmentDestination"],"resources":[],"description":"Grants permission to modify the destination of data sent to PutTraceSegments and OpenTelemetry API","accessLevel":"Write","resourceTypes":[],"operationUrl":"https://docs.aws.amazon.com/xray/latest/api/API_UpdateTraceSegmentDestination.html","iamUrl":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html#awsx-ray-UpdateTraceSegmentDestination"}},"resources":[{"name":"group","arnFormats":["arn:${Partition}:xray:${Region}:${Account}:group/${GroupName}/${Id}"],"conditionKeys":["aws:ResourceTag/${TagKey}"]},{"name":"sampling-rule","arnFormats":["arn:${Partition}:xray:${Region}:${Account}:sampling-rule/${SamplingRuleName}"],"conditionKeys":["aws:ResourceTag/${TagKey}"]}],"conditionKeys":{"aws:RequestTag/${TagKey}":{"types":["String"],"description":"Filters access by the tags that are passed in the request"},"aws:ResourceTag/${TagKey}":{"types":["String"],"description":"Filters access by the tags associated with the resource"},"aws:TagKeys":{"types":["ArrayOfString"],"description":"Filters access by the tag keys that are passed in the request"},"logs:LogGeneratingResourceArns":{"types":["ArrayOfARN"],"description":"Filters access by LogGeneratingResourceArn in the request"},"xray:ResourcePolicyName":{"types":["String"],"description":"Filters access by PolicyName in the request"},"xray:TraceSegmentDestination":{"types":["String"],"description":"Filters access by TraceSegmentDestination type in the request"}},"url":"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html"}
@@ -0,0 +1,4 @@
1
+ import type { 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): DocumentLink[];
@@ -0,0 +1,36 @@
1
+ import { ServiceReference } from "../../lib/iam-policy/reference/services.js";
2
+ export function documentLinkHandler(params, documents, _treeManager) {
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
+ return links;
36
+ }
@@ -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;
@@ -64,6 +65,8 @@ export type Action = {
64
65
  }>;
65
66
  dependentActions?: Array<string>;
66
67
  permissionOnly?: boolean;
68
+ operationUrl?: string;
69
+ iamUrl?: string;
67
70
  };
68
71
  export type ConditionKey = {
69
72
  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).
@@ -150,11 +150,12 @@ export class TreeYaml extends TreeBase {
150
150
  const resolved = this.#resolveWithinMapping(statementMapping, position);
151
151
  if (!resolved)
152
152
  return null;
153
- const partial = this.#extractPartial(cursorNode, position);
153
+ const { partial, value } = this.#extractPartialAndValue(cursorNode, position);
154
154
  return {
155
155
  keys: resolved.keys,
156
156
  role: resolved.role,
157
157
  partial,
158
+ value,
158
159
  policyFormat: 'standard',
159
160
  };
160
161
  }
@@ -194,7 +195,7 @@ export class TreeYaml extends TreeBase {
194
195
  return {
195
196
  keys: [],
196
197
  role: 'key',
197
- partial: this.#extractPartial(node, position),
198
+ ...this.#extractPartialAndValue(node, position),
198
199
  policyFormat: 'standard',
199
200
  };
200
201
  }
@@ -203,7 +204,7 @@ export class TreeYaml extends TreeBase {
203
204
  return {
204
205
  keys: [],
205
206
  role: 'key',
206
- partial: this.#extractPartial(node, position),
207
+ ...this.#extractPartialAndValue(node, position),
207
208
  policyFormat: 'standard',
208
209
  };
209
210
  }
@@ -229,7 +230,7 @@ export class TreeYaml extends TreeBase {
229
230
  return {
230
231
  keys: [],
231
232
  role: 'key',
232
- partial: this.#extractPartial(node, position),
233
+ ...this.#extractPartialAndValue(node, position),
233
234
  policyFormat: 'standard',
234
235
  };
235
236
  }
@@ -397,8 +398,10 @@ export class TreeYaml extends TreeBase {
397
398
  }
398
399
  if (role === null)
399
400
  role = 'key';
400
- const partial = colonPartial || this.#extractPartial(cursorNode, position);
401
- return { keys, role, partial };
401
+ const { partial: extractedPartial, value: extractedValue } = this.#extractPartialAndValue(cursorNode, position);
402
+ const partial = colonPartial || extractedPartial;
403
+ const value = colonPartial ? colonPartial : extractedValue;
404
+ return { keys, role, partial, value };
402
405
  }
403
406
  /**
404
407
  * Resolve the cursor's position within a block_mapping by finding the pair covering
@@ -593,29 +596,29 @@ export class TreeYaml extends TreeBase {
593
596
  .filter((key) => key !== null);
594
597
  }
595
598
  /**
596
- * Extract the partial text the user has typed, from the nearest scalar node
597
- * up to the cursor position.
599
+ * Extract the partial text (up to cursor) and full value from the nearest
600
+ * scalar node.
598
601
  */
599
- #extractPartial(node, position) {
602
+ #extractPartialAndValue(node, position) {
600
603
  let current = node;
601
604
  while (current) {
602
605
  if (current.type === 'string_scalar') {
603
- return this.#sliceToPosition(current.text, current.startPosition.column, position, node);
606
+ return this.#sliceToPositionAndValue(current.text, current.startPosition.column, position, node);
604
607
  }
605
608
  if (current.type === 'double_quote_scalar' || current.type === 'single_quote_scalar') {
606
- return this.#sliceToPosition(current.text.slice(1, -1), current.startPosition.column + 1, position, node);
609
+ return this.#sliceToPositionAndValue(current.text.slice(1, -1), current.startPosition.column + 1, position, node);
607
610
  }
608
611
  if (current.type === 'block_mapping' || current.type === 'block_mapping_pair')
609
612
  break;
610
613
  current = current.parent;
611
614
  }
612
- return '';
615
+ return { partial: '', value: '' };
613
616
  }
614
- #sliceToPosition(text, startColumn, position, node) {
617
+ #sliceToPositionAndValue(text, startColumn, position, node) {
615
618
  if (position.line === node.startPosition.row) {
616
- return text.slice(0, position.column - startColumn);
619
+ return { partial: text.slice(0, position.column - startColumn), value: text };
617
620
  }
618
- return text;
621
+ return { partial: text, value: text };
619
622
  }
620
623
  /**
621
624
  * When tree-sitter produces a root-level ERROR (e.g., unterminated quote in
@@ -662,6 +665,7 @@ export class TreeYaml extends TreeBase {
662
665
  keys: [keyText],
663
666
  role: 'value',
664
667
  partial: '',
668
+ value: '',
665
669
  policyFormat: 'standard',
666
670
  };
667
671
  }
@@ -674,10 +678,12 @@ export class TreeYaml extends TreeBase {
674
678
  const valueText = this.#getPairValueText(child) ?? '';
675
679
  // If cursor is past the ERROR end (colon continuation), append ":"
676
680
  const colonSuffix = errorNode.endPosition.row === position.line && position.column > errorNode.endPosition.column ? ':' : '';
681
+ const fullValue = valueText + colonSuffix;
677
682
  return {
678
683
  keys: [pairKey],
679
684
  role: 'value',
680
- partial: valueText + colonSuffix,
685
+ partial: fullValue,
686
+ value: fullValue,
681
687
  policyFormat: 'standard',
682
688
  };
683
689
  }
@@ -693,39 +699,49 @@ export class TreeYaml extends TreeBase {
693
699
  // If we found a key before cursor line and the cursor is in its value area
694
700
  // (e.g., `Resource:\n - !Sub "arn:` where the open quote breaks the parse)
695
701
  if (lastKey) {
696
- const partial = this.#extractPartialFromErrorNode(errorNode, position);
702
+ const { partial, value } = this.#extractPartialAndValueFromErrorNode(errorNode, position);
697
703
  return {
698
704
  keys: [lastKey],
699
705
  role: 'value',
700
706
  partial,
707
+ value,
701
708
  policyFormat: 'standard',
702
709
  };
703
710
  }
704
711
  return null;
705
712
  }
706
713
  /**
707
- * Extract the partial text from an ERROR node for the cursor line.
714
+ * Extract the partial text and full value from an ERROR node for the cursor line.
708
715
  * Scans ERROR children on the cursor line to find the last child before/at the
709
- * cursor, then takes the substring from its end to the cursor column.
716
+ * cursor, then takes the substring from its end to the cursor column (partial)
717
+ * and to the next child or end of content (value).
710
718
  */
711
- #extractPartialFromErrorNode(errorNode, position) {
712
- // Find the rightmost child on the cursor line that ends at or before the cursor
719
+ #extractPartialAndValueFromErrorNode(errorNode, position) {
720
+ // Find the rightmost child on the cursor line that ends at or before the cursor,
721
+ // and the leftmost child that starts after the cursor
713
722
  let afterColumn = 0;
723
+ let nextChildColumn = null;
714
724
  for (const child of errorNode.children) {
715
725
  if (child.startPosition.row !== position.line)
716
726
  continue;
717
727
  if (child.endPosition.column <= position.column) {
718
728
  afterColumn = child.endPosition.column;
719
729
  }
730
+ else if (nextChildColumn === null && child.startPosition.column > position.column) {
731
+ nextChildColumn = child.startPosition.column;
732
+ }
720
733
  }
721
734
  // Extract from the ERROR node's text: find the cursor line and slice
722
735
  const lines = errorNode.text.split('\n');
723
736
  const lineIndex = position.line - errorNode.startPosition.row;
724
737
  if (lineIndex < 0 || lineIndex >= lines.length)
725
- return '';
738
+ return { partial: '', value: '' };
726
739
  const line = lines[lineIndex];
727
740
  const startColumn = lineIndex === 0 ? errorNode.startPosition.column : 0;
728
- return line.slice(afterColumn - startColumn, position.column - startColumn);
741
+ const partial = line.slice(afterColumn - startColumn, position.column - startColumn);
742
+ const valueEnd = nextChildColumn !== null ? nextChildColumn - startColumn : line.length;
743
+ const value = line.slice(afterColumn - startColumn, valueEnd);
744
+ return { partial, value };
729
745
  }
730
746
  #getPairValueText(pair) {
731
747
  const flowNodes = pair.namedChildren.filter((child) => child.type === 'flow_node');
package/src/server.js CHANGED
@@ -2,6 +2,7 @@
2
2
  import { createConnection, ProposedFeatures, TextDocumentSyncKind, TextDocuments } from 'vscode-languageserver/node.js';
3
3
  import { TextDocument } from 'vscode-languageserver-textdocument';
4
4
  import { handleCompletionRequest } from "./handlers/completion/index.js";
5
+ import { documentLinkHandler } from "./handlers/document-link/document-link.js";
5
6
  import { TreeManager } from "./lib/treesitter/manager.js";
6
7
  const connection = createConnection(ProposedFeatures.all);
7
8
  const documents = new TextDocuments(TextDocument);
@@ -15,6 +16,7 @@ connection.onInitialize(async () => {
15
16
  triggerCharacters: ['"', ':', '*'],
16
17
  },
17
18
  hoverProvider: false,
19
+ documentLinkProvider: {},
18
20
  },
19
21
  };
20
22
  });
@@ -22,5 +24,6 @@ documents.onDidOpen(({ document }) => treeManager.openDocument(document.uri, doc
22
24
  documents.onDidChangeContent(({ document }) => treeManager.updateDocument(document.uri, document.getText()));
23
25
  documents.onDidClose(({ document }) => treeManager.closeDocument(document.uri));
24
26
  connection.onCompletion((params) => handleCompletionRequest(params, documents, treeManager));
27
+ connection.onDocumentLinks((params) => documentLinkHandler(params, documents, treeManager));
25
28
  documents.listen(connection);
26
29
  connection.listen();
@@ -1,19 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -e
3
- if [[ ! -d "/Users/mbarney/dev/personal/aws-iam-ls" ]]; then
4
- echo "Cannot find source directory; Did you move it?"
5
- echo "(Looking for "/Users/mbarney/dev/personal/aws-iam-ls")"
6
- echo 'Cannot force reload with this script - use "direnv reload" manually and then try again'
7
- exit 1
8
- fi
9
-
10
- # rebuild the cache forcefully
11
- _nix_direnv_force_reload=1 direnv exec "/Users/mbarney/dev/personal/aws-iam-ls" true
12
-
13
- # Update the mtime for .envrc.
14
- # This will cause direnv to reload again - but without re-building.
15
- touch "/Users/mbarney/dev/personal/aws-iam-ls/.envrc"
16
-
17
- # Also update the timestamp of whatever profile_rc we have.
18
- # This makes sure that we know we are up to date.
19
- touch -r "/Users/mbarney/dev/personal/aws-iam-ls/.envrc" "/Users/mbarney/dev/personal/aws-iam-ls/.direnv"/*.rc