aws-iam-ls 0.0.0

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 (522) hide show
  1. package/.direnv/bin/nix-direnv-reload +19 -0
  2. package/.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa.rc +2156 -0
  3. package/.github/workflows/publish.yml +37 -0
  4. package/.github/workflows/test.yml +16 -0
  5. package/.vscodeignore +17 -0
  6. package/LICENSE +21 -0
  7. package/package.json +53 -0
  8. package/readme.md +25 -0
  9. package/src/data/condition-keys/global.json +362 -0
  10. package/src/data/servicereference/actions.json +1 -0
  11. package/src/data/servicereference/service-principals.json +1 -0
  12. package/src/data/servicereference/services/a2c.json +1 -0
  13. package/src/data/servicereference/services/a4b.json +1 -0
  14. package/src/data/servicereference/services/access-analyzer.json +1 -0
  15. package/src/data/servicereference/services/account.json +1 -0
  16. package/src/data/servicereference/services/acm-pca.json +1 -0
  17. package/src/data/servicereference/services/acm.json +1 -0
  18. package/src/data/servicereference/services/aco-automation.json +1 -0
  19. package/src/data/servicereference/services/action-recommendations.json +1 -0
  20. package/src/data/servicereference/services/activate.json +1 -0
  21. package/src/data/servicereference/services/aidevops.json +1 -0
  22. package/src/data/servicereference/services/aiops.json +1 -0
  23. package/src/data/servicereference/services/airflow-serverless.json +1 -0
  24. package/src/data/servicereference/services/airflow.json +1 -0
  25. package/src/data/servicereference/services/amplify.json +1 -0
  26. package/src/data/servicereference/services/amplifybackend.json +1 -0
  27. package/src/data/servicereference/services/amplifyuibuilder.json +1 -0
  28. package/src/data/servicereference/services/aoss.json +1 -0
  29. package/src/data/servicereference/services/apigateway.json +1 -0
  30. package/src/data/servicereference/services/app-integrations.json +1 -0
  31. package/src/data/servicereference/services/appconfig.json +1 -0
  32. package/src/data/servicereference/services/appfabric.json +1 -0
  33. package/src/data/servicereference/services/appflow.json +1 -0
  34. package/src/data/servicereference/services/application-autoscaling.json +1 -0
  35. package/src/data/servicereference/services/application-signals.json +1 -0
  36. package/src/data/servicereference/services/application-transformation.json +1 -0
  37. package/src/data/servicereference/services/applicationinsights.json +1 -0
  38. package/src/data/servicereference/services/appmesh-preview.json +1 -0
  39. package/src/data/servicereference/services/appmesh.json +1 -0
  40. package/src/data/servicereference/services/apprunner.json +1 -0
  41. package/src/data/servicereference/services/appstream.json +1 -0
  42. package/src/data/servicereference/services/appstudio.json +1 -0
  43. package/src/data/servicereference/services/appsync.json +1 -0
  44. package/src/data/servicereference/services/apptest.json +1 -0
  45. package/src/data/servicereference/services/aps.json +1 -0
  46. package/src/data/servicereference/services/arc-region-switch.json +1 -0
  47. package/src/data/servicereference/services/arc-zonal-shift.json +1 -0
  48. package/src/data/servicereference/services/arsenal.json +1 -0
  49. package/src/data/servicereference/services/artifact.json +1 -0
  50. package/src/data/servicereference/services/athena.json +1 -0
  51. package/src/data/servicereference/services/auditmanager.json +1 -0
  52. package/src/data/servicereference/services/autoscaling-plans.json +1 -0
  53. package/src/data/servicereference/services/autoscaling.json +1 -0
  54. package/src/data/servicereference/services/aws-marketplace-management.json +1 -0
  55. package/src/data/servicereference/services/aws-marketplace.json +1 -0
  56. package/src/data/servicereference/services/aws-mcp.json +1 -0
  57. package/src/data/servicereference/services/aws-portal.json +1 -0
  58. package/src/data/servicereference/services/awsconnector.json +1 -0
  59. package/src/data/servicereference/services/b2bi.json +1 -0
  60. package/src/data/servicereference/services/backup-gateway.json +1 -0
  61. package/src/data/servicereference/services/backup-search.json +1 -0
  62. package/src/data/servicereference/services/backup-storage.json +1 -0
  63. package/src/data/servicereference/services/backup.json +1 -0
  64. package/src/data/servicereference/services/batch.json +1 -0
  65. package/src/data/servicereference/services/bcm-dashboards.json +1 -0
  66. package/src/data/servicereference/services/bcm-data-exports.json +1 -0
  67. package/src/data/servicereference/services/bcm-pricing-calculator.json +1 -0
  68. package/src/data/servicereference/services/bcm-recommended-actions.json +1 -0
  69. package/src/data/servicereference/services/bedrock-agentcore.json +1 -0
  70. package/src/data/servicereference/services/bedrock-mantle.json +1 -0
  71. package/src/data/servicereference/services/bedrock.json +1 -0
  72. package/src/data/servicereference/services/billing.json +1 -0
  73. package/src/data/servicereference/services/billingconductor.json +1 -0
  74. package/src/data/servicereference/services/braket.json +1 -0
  75. package/src/data/servicereference/services/budgets.json +1 -0
  76. package/src/data/servicereference/services/bugbust.json +1 -0
  77. package/src/data/servicereference/services/cases.json +1 -0
  78. package/src/data/servicereference/services/cassandra.json +1 -0
  79. package/src/data/servicereference/services/ce.json +1 -0
  80. package/src/data/servicereference/services/chatbot.json +1 -0
  81. package/src/data/servicereference/services/chime.json +1 -0
  82. package/src/data/servicereference/services/cleanrooms-ml.json +1 -0
  83. package/src/data/servicereference/services/cleanrooms.json +1 -0
  84. package/src/data/servicereference/services/cloud9.json +1 -0
  85. package/src/data/servicereference/services/clouddirectory.json +1 -0
  86. package/src/data/servicereference/services/cloudformation.json +1 -0
  87. package/src/data/servicereference/services/cloudfront-keyvaluestore.json +1 -0
  88. package/src/data/servicereference/services/cloudfront.json +1 -0
  89. package/src/data/servicereference/services/cloudhsm.json +1 -0
  90. package/src/data/servicereference/services/cloudsearch.json +1 -0
  91. package/src/data/servicereference/services/cloudshell.json +1 -0
  92. package/src/data/servicereference/services/cloudtrail-data.json +1 -0
  93. package/src/data/servicereference/services/cloudtrail.json +1 -0
  94. package/src/data/servicereference/services/cloudwatch.json +1 -0
  95. package/src/data/servicereference/services/codeartifact.json +1 -0
  96. package/src/data/servicereference/services/codebuild.json +1 -0
  97. package/src/data/servicereference/services/codecatalyst.json +1 -0
  98. package/src/data/servicereference/services/codecommit.json +1 -0
  99. package/src/data/servicereference/services/codeconnections.json +1 -0
  100. package/src/data/servicereference/services/codedeploy-commands-secure.json +1 -0
  101. package/src/data/servicereference/services/codedeploy.json +1 -0
  102. package/src/data/servicereference/services/codeguru-profiler.json +1 -0
  103. package/src/data/servicereference/services/codeguru-reviewer.json +1 -0
  104. package/src/data/servicereference/services/codeguru-security.json +1 -0
  105. package/src/data/servicereference/services/codeguru.json +1 -0
  106. package/src/data/servicereference/services/codepipeline.json +1 -0
  107. package/src/data/servicereference/services/codestar-connections.json +1 -0
  108. package/src/data/servicereference/services/codestar-notifications.json +1 -0
  109. package/src/data/servicereference/services/codestar.json +1 -0
  110. package/src/data/servicereference/services/codewhisperer.json +1 -0
  111. package/src/data/servicereference/services/cognito-identity.json +1 -0
  112. package/src/data/servicereference/services/cognito-idp.json +1 -0
  113. package/src/data/servicereference/services/cognito-sync.json +1 -0
  114. package/src/data/servicereference/services/comprehend.json +1 -0
  115. package/src/data/servicereference/services/comprehendmedical.json +1 -0
  116. package/src/data/servicereference/services/compute-optimizer.json +1 -0
  117. package/src/data/servicereference/services/config.json +1 -0
  118. package/src/data/servicereference/services/connect-campaigns.json +1 -0
  119. package/src/data/servicereference/services/connect.json +1 -0
  120. package/src/data/servicereference/services/consoleapp.json +1 -0
  121. package/src/data/servicereference/services/consolidatedbilling.json +1 -0
  122. package/src/data/servicereference/services/controlcatalog.json +1 -0
  123. package/src/data/servicereference/services/controltower.json +1 -0
  124. package/src/data/servicereference/services/cost-optimization-hub.json +1 -0
  125. package/src/data/servicereference/services/cur.json +1 -0
  126. package/src/data/servicereference/services/customer-verification.json +1 -0
  127. package/src/data/servicereference/services/databrew.json +1 -0
  128. package/src/data/servicereference/services/dataexchange.json +1 -0
  129. package/src/data/servicereference/services/datapipeline.json +1 -0
  130. package/src/data/servicereference/services/datasync.json +1 -0
  131. package/src/data/servicereference/services/datazone.json +1 -0
  132. package/src/data/servicereference/services/dax.json +1 -0
  133. package/src/data/servicereference/services/dbqms.json +1 -0
  134. package/src/data/servicereference/services/deadline.json +1 -0
  135. package/src/data/servicereference/services/detective.json +1 -0
  136. package/src/data/servicereference/services/devicefarm.json +1 -0
  137. package/src/data/servicereference/services/devops-guru.json +1 -0
  138. package/src/data/servicereference/services/directconnect.json +1 -0
  139. package/src/data/servicereference/services/discovery.json +1 -0
  140. package/src/data/servicereference/services/dlm.json +1 -0
  141. package/src/data/servicereference/services/dms.json +1 -0
  142. package/src/data/servicereference/services/docdb-elastic.json +1 -0
  143. package/src/data/servicereference/services/drs.json +1 -0
  144. package/src/data/servicereference/services/ds-data.json +1 -0
  145. package/src/data/servicereference/services/ds.json +1 -0
  146. package/src/data/servicereference/services/dsql.json +1 -0
  147. package/src/data/servicereference/services/dynamodb.json +1 -0
  148. package/src/data/servicereference/services/ebs.json +1 -0
  149. package/src/data/servicereference/services/ec2-instance-connect.json +1 -0
  150. package/src/data/servicereference/services/ec2.json +1 -0
  151. package/src/data/servicereference/services/ec2messages.json +1 -0
  152. package/src/data/servicereference/services/ecr-public.json +1 -0
  153. package/src/data/servicereference/services/ecr.json +1 -0
  154. package/src/data/servicereference/services/ecs-mcp.json +1 -0
  155. package/src/data/servicereference/services/ecs.json +1 -0
  156. package/src/data/servicereference/services/eks-auth.json +1 -0
  157. package/src/data/servicereference/services/eks-mcp.json +1 -0
  158. package/src/data/servicereference/services/eks.json +1 -0
  159. package/src/data/servicereference/services/elasticache.json +1 -0
  160. package/src/data/servicereference/services/elasticbeanstalk.json +1 -0
  161. package/src/data/servicereference/services/elasticfilesystem.json +1 -0
  162. package/src/data/servicereference/services/elasticloadbalancing.json +1 -0
  163. package/src/data/servicereference/services/elasticmapreduce.json +1 -0
  164. package/src/data/servicereference/services/elastictranscoder.json +1 -0
  165. package/src/data/servicereference/services/elemental-activations.json +1 -0
  166. package/src/data/servicereference/services/elemental-appliances-software.json +1 -0
  167. package/src/data/servicereference/services/elemental-inference.json +1 -0
  168. package/src/data/servicereference/services/elemental-support-cases.json +1 -0
  169. package/src/data/servicereference/services/elemental-support-content.json +1 -0
  170. package/src/data/servicereference/services/emr-containers.json +1 -0
  171. package/src/data/servicereference/services/emr-serverless.json +1 -0
  172. package/src/data/servicereference/services/entityresolution.json +1 -0
  173. package/src/data/servicereference/services/es.json +1 -0
  174. package/src/data/servicereference/services/events.json +1 -0
  175. package/src/data/servicereference/services/evidently.json +1 -0
  176. package/src/data/servicereference/services/evs.json +1 -0
  177. package/src/data/servicereference/services/execute-api.json +1 -0
  178. package/src/data/servicereference/services/finspace-api.json +1 -0
  179. package/src/data/servicereference/services/finspace.json +1 -0
  180. package/src/data/servicereference/services/firehose.json +1 -0
  181. package/src/data/servicereference/services/fis.json +1 -0
  182. package/src/data/servicereference/services/fms.json +1 -0
  183. package/src/data/servicereference/services/forecast.json +1 -0
  184. package/src/data/servicereference/services/frauddetector.json +1 -0
  185. package/src/data/servicereference/services/freertos.json +1 -0
  186. package/src/data/servicereference/services/freetier.json +1 -0
  187. package/src/data/servicereference/services/fsx.json +1 -0
  188. package/src/data/servicereference/services/gamelift.json +1 -0
  189. package/src/data/servicereference/services/gameliftstreams.json +1 -0
  190. package/src/data/servicereference/services/geo-maps.json +1 -0
  191. package/src/data/servicereference/services/geo-places.json +1 -0
  192. package/src/data/servicereference/services/geo-routes.json +1 -0
  193. package/src/data/servicereference/services/geo.json +1 -0
  194. package/src/data/servicereference/services/glacier.json +1 -0
  195. package/src/data/servicereference/services/globalaccelerator.json +1 -0
  196. package/src/data/servicereference/services/glue.json +1 -0
  197. package/src/data/servicereference/services/grafana.json +1 -0
  198. package/src/data/servicereference/services/greengrass.json +1 -0
  199. package/src/data/servicereference/services/groundstation.json +1 -0
  200. package/src/data/servicereference/services/groundtruthlabeling.json +1 -0
  201. package/src/data/servicereference/services/guardduty.json +1 -0
  202. package/src/data/servicereference/services/health-agent.json +1 -0
  203. package/src/data/servicereference/services/health.json +1 -0
  204. package/src/data/servicereference/services/healthlake.json +1 -0
  205. package/src/data/servicereference/services/honeycode.json +1 -0
  206. package/src/data/servicereference/services/iam.json +1 -0
  207. package/src/data/servicereference/services/identity-sync.json +1 -0
  208. package/src/data/servicereference/services/identitystore-auth.json +1 -0
  209. package/src/data/servicereference/services/identitystore.json +1 -0
  210. package/src/data/servicereference/services/imagebuilder.json +1 -0
  211. package/src/data/servicereference/services/importexport.json +1 -0
  212. package/src/data/servicereference/services/inspector-scan.json +1 -0
  213. package/src/data/servicereference/services/inspector.json +1 -0
  214. package/src/data/servicereference/services/inspector2-telemetry.json +1 -0
  215. package/src/data/servicereference/services/inspector2.json +1 -0
  216. package/src/data/servicereference/services/interconnect.json +1 -0
  217. package/src/data/servicereference/services/internetmonitor.json +1 -0
  218. package/src/data/servicereference/services/invoicing.json +1 -0
  219. package/src/data/servicereference/services/iot-device-tester.json +1 -0
  220. package/src/data/servicereference/services/iot.json +1 -0
  221. package/src/data/servicereference/services/iotanalytics.json +1 -0
  222. package/src/data/servicereference/services/iotdeviceadvisor.json +1 -0
  223. package/src/data/servicereference/services/iotevents.json +1 -0
  224. package/src/data/servicereference/services/iotfleethub.json +1 -0
  225. package/src/data/servicereference/services/iotfleetwise.json +1 -0
  226. package/src/data/servicereference/services/iotjobsdata.json +1 -0
  227. package/src/data/servicereference/services/iotmanagedintegrations.json +1 -0
  228. package/src/data/servicereference/services/iotsitewise.json +1 -0
  229. package/src/data/servicereference/services/iottwinmaker.json +1 -0
  230. package/src/data/servicereference/services/iotwireless.json +1 -0
  231. package/src/data/servicereference/services/iq-permission.json +1 -0
  232. package/src/data/servicereference/services/iq.json +1 -0
  233. package/src/data/servicereference/services/ivs.json +1 -0
  234. package/src/data/servicereference/services/ivschat.json +1 -0
  235. package/src/data/servicereference/services/kafka-cluster.json +1 -0
  236. package/src/data/servicereference/services/kafka.json +1 -0
  237. package/src/data/servicereference/services/kafkaconnect.json +1 -0
  238. package/src/data/servicereference/services/kendra-ranking.json +1 -0
  239. package/src/data/servicereference/services/kendra.json +1 -0
  240. package/src/data/servicereference/services/kinesis.json +1 -0
  241. package/src/data/servicereference/services/kinesisanalytics.json +1 -0
  242. package/src/data/servicereference/services/kinesisvideo.json +1 -0
  243. package/src/data/servicereference/services/kms.json +1 -0
  244. package/src/data/servicereference/services/lakeformation.json +1 -0
  245. package/src/data/servicereference/services/lambda.json +1 -0
  246. package/src/data/servicereference/services/launchwizard.json +1 -0
  247. package/src/data/servicereference/services/lex.json +1 -0
  248. package/src/data/servicereference/services/license-manager-linux-subscriptions.json +1 -0
  249. package/src/data/servicereference/services/license-manager-user-subscriptions.json +1 -0
  250. package/src/data/servicereference/services/license-manager.json +1 -0
  251. package/src/data/servicereference/services/lightsail.json +1 -0
  252. package/src/data/servicereference/services/logs.json +1 -0
  253. package/src/data/servicereference/services/lookoutequipment.json +1 -0
  254. package/src/data/servicereference/services/lookoutmetrics.json +1 -0
  255. package/src/data/servicereference/services/lookoutvision.json +1 -0
  256. package/src/data/servicereference/services/m2.json +1 -0
  257. package/src/data/servicereference/services/machinelearning.json +1 -0
  258. package/src/data/servicereference/services/macie2.json +1 -0
  259. package/src/data/servicereference/services/managedblockchain-query.json +1 -0
  260. package/src/data/servicereference/services/managedblockchain.json +1 -0
  261. package/src/data/servicereference/services/mapcredits.json +1 -0
  262. package/src/data/servicereference/services/marketplacecommerceanalytics.json +1 -0
  263. package/src/data/servicereference/services/mechanicalturk.json +1 -0
  264. package/src/data/servicereference/services/mediaconnect.json +1 -0
  265. package/src/data/servicereference/services/mediaconvert.json +1 -0
  266. package/src/data/servicereference/services/mediaimport.json +1 -0
  267. package/src/data/servicereference/services/medialive.json +1 -0
  268. package/src/data/servicereference/services/mediapackage-vod.json +1 -0
  269. package/src/data/servicereference/services/mediapackage.json +1 -0
  270. package/src/data/servicereference/services/mediapackagev2.json +1 -0
  271. package/src/data/servicereference/services/mediastore.json +1 -0
  272. package/src/data/servicereference/services/mediatailor.json +1 -0
  273. package/src/data/servicereference/services/medical-imaging.json +1 -0
  274. package/src/data/servicereference/services/memorydb.json +1 -0
  275. package/src/data/servicereference/services/mgh.json +1 -0
  276. package/src/data/servicereference/services/mgn.json +1 -0
  277. package/src/data/servicereference/services/migrationhub-orchestrator.json +1 -0
  278. package/src/data/servicereference/services/migrationhub-strategy.json +1 -0
  279. package/src/data/servicereference/services/mobileanalytics.json +1 -0
  280. package/src/data/servicereference/services/mobiletargeting.json +1 -0
  281. package/src/data/servicereference/services/monitron.json +1 -0
  282. package/src/data/servicereference/services/mpa.json +1 -0
  283. package/src/data/servicereference/services/mq.json +1 -0
  284. package/src/data/servicereference/services/neptune-db.json +1 -0
  285. package/src/data/servicereference/services/neptune-graph.json +1 -0
  286. package/src/data/servicereference/services/network-firewall.json +1 -0
  287. package/src/data/servicereference/services/network-security-director.json +1 -0
  288. package/src/data/servicereference/services/networkflowmonitor.json +1 -0
  289. package/src/data/servicereference/services/networkmanager-chat.json +1 -0
  290. package/src/data/servicereference/services/networkmanager.json +1 -0
  291. package/src/data/servicereference/services/networkmonitor.json +1 -0
  292. package/src/data/servicereference/services/nimble.json +1 -0
  293. package/src/data/servicereference/services/notifications-contacts.json +1 -0
  294. package/src/data/servicereference/services/notifications.json +1 -0
  295. package/src/data/servicereference/services/nova-act.json +1 -0
  296. package/src/data/servicereference/services/oam.json +1 -0
  297. package/src/data/servicereference/services/observabilityadmin.json +1 -0
  298. package/src/data/servicereference/services/odb.json +1 -0
  299. package/src/data/servicereference/services/omics.json +1 -0
  300. package/src/data/servicereference/services/one.json +1 -0
  301. package/src/data/servicereference/services/opensearch.json +1 -0
  302. package/src/data/servicereference/services/opsworks-cm.json +1 -0
  303. package/src/data/servicereference/services/opsworks.json +1 -0
  304. package/src/data/servicereference/services/organizations.json +1 -0
  305. package/src/data/servicereference/services/osis.json +1 -0
  306. package/src/data/servicereference/services/outposts.json +1 -0
  307. package/src/data/servicereference/services/panorama.json +1 -0
  308. package/src/data/servicereference/services/partnercentral-account-management.json +1 -0
  309. package/src/data/servicereference/services/partnercentral.json +1 -0
  310. package/src/data/servicereference/services/payment-cryptography.json +1 -0
  311. package/src/data/servicereference/services/payments.json +1 -0
  312. package/src/data/servicereference/services/pca-connector-ad.json +1 -0
  313. package/src/data/servicereference/services/pca-connector-scep.json +1 -0
  314. package/src/data/servicereference/services/pcs.json +1 -0
  315. package/src/data/servicereference/services/personalize.json +1 -0
  316. package/src/data/servicereference/services/pi.json +1 -0
  317. package/src/data/servicereference/services/pipes.json +1 -0
  318. package/src/data/servicereference/services/polly.json +1 -0
  319. package/src/data/servicereference/services/pricing.json +1 -0
  320. package/src/data/servicereference/services/pricingplanmanager.json +1 -0
  321. package/src/data/servicereference/services/private-networks.json +1 -0
  322. package/src/data/servicereference/services/profile.json +1 -0
  323. package/src/data/servicereference/services/proton.json +1 -0
  324. package/src/data/servicereference/services/purchase-orders.json +1 -0
  325. package/src/data/servicereference/services/q.json +1 -0
  326. package/src/data/servicereference/services/qapps.json +1 -0
  327. package/src/data/servicereference/services/qbusiness.json +1 -0
  328. package/src/data/servicereference/services/qdeveloper.json +1 -0
  329. package/src/data/servicereference/services/qldb.json +1 -0
  330. package/src/data/servicereference/services/quicksight.json +1 -0
  331. package/src/data/servicereference/services/ram.json +1 -0
  332. package/src/data/servicereference/services/rbin.json +1 -0
  333. package/src/data/servicereference/services/rds-data.json +1 -0
  334. package/src/data/servicereference/services/rds-db.json +1 -0
  335. package/src/data/servicereference/services/rds.json +1 -0
  336. package/src/data/servicereference/services/redshift-data.json +1 -0
  337. package/src/data/servicereference/services/redshift-serverless.json +1 -0
  338. package/src/data/servicereference/services/redshift.json +1 -0
  339. package/src/data/servicereference/services/refactor-spaces.json +1 -0
  340. package/src/data/servicereference/services/rekognition.json +1 -0
  341. package/src/data/servicereference/services/repostspace.json +1 -0
  342. package/src/data/servicereference/services/resiliencehub.json +1 -0
  343. package/src/data/servicereference/services/resource-explorer-2.json +1 -0
  344. package/src/data/servicereference/services/resource-explorer.json +1 -0
  345. package/src/data/servicereference/services/resource-groups.json +1 -0
  346. package/src/data/servicereference/services/rhelkb.json +1 -0
  347. package/src/data/servicereference/services/robomaker.json +1 -0
  348. package/src/data/servicereference/services/rolesanywhere.json +1 -0
  349. package/src/data/servicereference/services/route53-recovery-cluster.json +1 -0
  350. package/src/data/servicereference/services/route53-recovery-control-config.json +1 -0
  351. package/src/data/servicereference/services/route53-recovery-readiness.json +1 -0
  352. package/src/data/servicereference/services/route53.json +1 -0
  353. package/src/data/servicereference/services/route53domains.json +1 -0
  354. package/src/data/servicereference/services/route53globalresolver.json +1 -0
  355. package/src/data/servicereference/services/route53profiles.json +1 -0
  356. package/src/data/servicereference/services/route53resolver.json +1 -0
  357. package/src/data/servicereference/services/rtbfabric.json +1 -0
  358. package/src/data/servicereference/services/rum.json +1 -0
  359. package/src/data/servicereference/services/s3-object-lambda.json +1 -0
  360. package/src/data/servicereference/services/s3-outposts.json +1 -0
  361. package/src/data/servicereference/services/s3.json +1 -0
  362. package/src/data/servicereference/services/s3express.json +1 -0
  363. package/src/data/servicereference/services/s3tables.json +1 -0
  364. package/src/data/servicereference/services/s3vectors.json +1 -0
  365. package/src/data/servicereference/services/sagemaker-data-science-assistant.json +1 -0
  366. package/src/data/servicereference/services/sagemaker-geospatial.json +1 -0
  367. package/src/data/servicereference/services/sagemaker-mlflow.json +1 -0
  368. package/src/data/servicereference/services/sagemaker-unified-studio-mcp.json +1 -0
  369. package/src/data/servicereference/services/sagemaker.json +1 -0
  370. package/src/data/servicereference/services/savingsplans.json +1 -0
  371. package/src/data/servicereference/services/scheduler.json +1 -0
  372. package/src/data/servicereference/services/schemas.json +1 -0
  373. package/src/data/servicereference/services/scn.json +1 -0
  374. package/src/data/servicereference/services/sdb.json +1 -0
  375. package/src/data/servicereference/services/secretsmanager.json +1 -0
  376. package/src/data/servicereference/services/security-ir.json +1 -0
  377. package/src/data/servicereference/services/securityagent.json +1 -0
  378. package/src/data/servicereference/services/securityhub.json +1 -0
  379. package/src/data/servicereference/services/securitylake.json +1 -0
  380. package/src/data/servicereference/services/serverlessrepo.json +1 -0
  381. package/src/data/servicereference/services/servicecatalog.json +1 -0
  382. package/src/data/servicereference/services/servicediscovery.json +1 -0
  383. package/src/data/servicereference/services/serviceextract.json +1 -0
  384. package/src/data/servicereference/services/servicequotas.json +1 -0
  385. package/src/data/servicereference/services/ses.json +1 -0
  386. package/src/data/servicereference/services/shield.json +1 -0
  387. package/src/data/servicereference/services/signer.json +1 -0
  388. package/src/data/servicereference/services/signin.json +1 -0
  389. package/src/data/servicereference/services/simspaceweaver.json +1 -0
  390. package/src/data/servicereference/services/sms-voice.json +1 -0
  391. package/src/data/servicereference/services/sms.json +1 -0
  392. package/src/data/servicereference/services/snow-device-management.json +1 -0
  393. package/src/data/servicereference/services/snowball.json +1 -0
  394. package/src/data/servicereference/services/sns.json +1 -0
  395. package/src/data/servicereference/services/social-messaging.json +1 -0
  396. package/src/data/servicereference/services/sqlworkbench.json +1 -0
  397. package/src/data/servicereference/services/sqs.json +1 -0
  398. package/src/data/servicereference/services/ssm-contacts.json +1 -0
  399. package/src/data/servicereference/services/ssm-guiconnect.json +1 -0
  400. package/src/data/servicereference/services/ssm-incidents.json +1 -0
  401. package/src/data/servicereference/services/ssm-quicksetup.json +1 -0
  402. package/src/data/servicereference/services/ssm-sap.json +1 -0
  403. package/src/data/servicereference/services/ssm.json +1 -0
  404. package/src/data/servicereference/services/ssmmessages.json +1 -0
  405. package/src/data/servicereference/services/sso-directory.json +1 -0
  406. package/src/data/servicereference/services/sso-oauth.json +1 -0
  407. package/src/data/servicereference/services/sso.json +1 -0
  408. package/src/data/servicereference/services/states.json +1 -0
  409. package/src/data/servicereference/services/storagegateway.json +1 -0
  410. package/src/data/servicereference/services/sts.json +1 -0
  411. package/src/data/servicereference/services/support-console.json +1 -0
  412. package/src/data/servicereference/services/support.json +1 -0
  413. package/src/data/servicereference/services/supportapp.json +1 -0
  414. package/src/data/servicereference/services/supportplans.json +1 -0
  415. package/src/data/servicereference/services/sustainability.json +1 -0
  416. package/src/data/servicereference/services/swf.json +1 -0
  417. package/src/data/servicereference/services/synthetics.json +1 -0
  418. package/src/data/servicereference/services/tag.json +1 -0
  419. package/src/data/servicereference/services/tax.json +1 -0
  420. package/src/data/servicereference/services/textract.json +1 -0
  421. package/src/data/servicereference/services/thinclient.json +1 -0
  422. package/src/data/servicereference/services/timestream-influxdb.json +1 -0
  423. package/src/data/servicereference/services/timestream.json +1 -0
  424. package/src/data/servicereference/services/tiros.json +1 -0
  425. package/src/data/servicereference/services/tnb.json +1 -0
  426. package/src/data/servicereference/services/transcribe.json +1 -0
  427. package/src/data/servicereference/services/transfer.json +1 -0
  428. package/src/data/servicereference/services/transform-custom.json +1 -0
  429. package/src/data/servicereference/services/transform.json +1 -0
  430. package/src/data/servicereference/services/translate.json +1 -0
  431. package/src/data/servicereference/services/trustedadvisor.json +1 -0
  432. package/src/data/servicereference/services/ts.json +1 -0
  433. package/src/data/servicereference/services/user-subscriptions.json +1 -0
  434. package/src/data/servicereference/services/uxc.json +1 -0
  435. package/src/data/servicereference/services/vendor-insights.json +1 -0
  436. package/src/data/servicereference/services/verified-access.json +1 -0
  437. package/src/data/servicereference/services/verifiedpermissions.json +1 -0
  438. package/src/data/servicereference/services/voiceid.json +1 -0
  439. package/src/data/servicereference/services/vpc-lattice-svcs.json +1 -0
  440. package/src/data/servicereference/services/vpc-lattice.json +1 -0
  441. package/src/data/servicereference/services/vpce.json +1 -0
  442. package/src/data/servicereference/services/waf-regional.json +1 -0
  443. package/src/data/servicereference/services/waf.json +1 -0
  444. package/src/data/servicereference/services/wafv2.json +1 -0
  445. package/src/data/servicereference/services/wam.json +1 -0
  446. package/src/data/servicereference/services/wellarchitected.json +1 -0
  447. package/src/data/servicereference/services/wickr.json +1 -0
  448. package/src/data/servicereference/services/wisdom.json +1 -0
  449. package/src/data/servicereference/services/workdocs.json +1 -0
  450. package/src/data/servicereference/services/worklink.json +1 -0
  451. package/src/data/servicereference/services/workmail.json +1 -0
  452. package/src/data/servicereference/services/workmailmessageflow.json +1 -0
  453. package/src/data/servicereference/services/workspaces-instances.json +1 -0
  454. package/src/data/servicereference/services/workspaces-web.json +1 -0
  455. package/src/data/servicereference/services/workspaces.json +1 -0
  456. package/src/data/servicereference/services/xray.json +1 -0
  457. package/src/data/servicereference/services.json +1 -0
  458. package/src/extension.d.ts +3 -0
  459. package/src/extension.js +23 -0
  460. package/src/grammars/tree-sitter-hcl.wasm +0 -0
  461. package/src/grammars/tree-sitter-json.wasm +0 -0
  462. package/src/grammars/tree-sitter-yaml.wasm +0 -0
  463. package/src/handlers/completion/action-value.d.ts +4 -0
  464. package/src/handlers/completion/action-value.js +46 -0
  465. package/src/handlers/completion/condition-block.d.ts +4 -0
  466. package/src/handlers/completion/condition-block.js +31 -0
  467. package/src/handlers/completion/condition-key.d.ts +4 -0
  468. package/src/handlers/completion/condition-key.js +80 -0
  469. package/src/handlers/completion/condition-operator.d.ts +4 -0
  470. package/src/handlers/completion/condition-operator.js +22 -0
  471. package/src/handlers/completion/effect-value.d.ts +4 -0
  472. package/src/handlers/completion/effect-value.js +14 -0
  473. package/src/handlers/completion/index.d.ts +14 -0
  474. package/src/handlers/completion/index.js +96 -0
  475. package/src/handlers/completion/principal-block-identifier.d.ts +4 -0
  476. package/src/handlers/completion/principal-block-identifier.js +4 -0
  477. package/src/handlers/completion/principal-block-type.d.ts +4 -0
  478. package/src/handlers/completion/principal-block-type.js +24 -0
  479. package/src/handlers/completion/principal-block.d.ts +4 -0
  480. package/src/handlers/completion/principal-block.js +28 -0
  481. package/src/handlers/completion/principal-identifier-completions.d.ts +2 -0
  482. package/src/handlers/completion/principal-identifier-completions.js +131 -0
  483. package/src/handlers/completion/principal-type.d.ts +4 -0
  484. package/src/handlers/completion/principal-type.js +23 -0
  485. package/src/handlers/completion/principal-typed-value.d.ts +4 -0
  486. package/src/handlers/completion/principal-typed-value.js +4 -0
  487. package/src/handlers/completion/principal-value.d.ts +4 -0
  488. package/src/handlers/completion/principal-value.js +18 -0
  489. package/src/handlers/completion/resource-value.d.ts +4 -0
  490. package/src/handlers/completion/resource-value.js +144 -0
  491. package/src/handlers/completion/statement-block.d.ts +10 -0
  492. package/src/handlers/completion/statement-block.js +51 -0
  493. package/src/handlers/completion/statement-key.d.ts +4 -0
  494. package/src/handlers/completion/statement-key.js +41 -0
  495. package/src/lib/iam-policy/condition-operators.d.ts +317 -0
  496. package/src/lib/iam-policy/condition-operators.js +129 -0
  497. package/src/lib/iam-policy/location.d.ts +71 -0
  498. package/src/lib/iam-policy/location.js +82 -0
  499. package/src/lib/iam-policy/partitions.d.ts +116 -0
  500. package/src/lib/iam-policy/partitions.js +51 -0
  501. package/src/lib/iam-policy/principals.d.ts +21 -0
  502. package/src/lib/iam-policy/principals.js +37 -0
  503. package/src/lib/iam-policy/reference/services.d.ts +22 -0
  504. package/src/lib/iam-policy/reference/services.js +99 -0
  505. package/src/lib/iam-policy/reference/types.d.ts +71 -0
  506. package/src/lib/iam-policy/reference/types.js +1 -0
  507. package/src/lib/iam-policy/statement-keys.d.ts +8 -0
  508. package/src/lib/iam-policy/statement-keys.js +159 -0
  509. package/src/lib/iam-policy/wildcard.d.ts +2 -0
  510. package/src/lib/iam-policy/wildcard.js +14 -0
  511. package/src/lib/treesitter/base.d.ts +35 -0
  512. package/src/lib/treesitter/base.js +50 -0
  513. package/src/lib/treesitter/hcl.d.ts +9 -0
  514. package/src/lib/treesitter/hcl.js +888 -0
  515. package/src/lib/treesitter/json.d.ts +9 -0
  516. package/src/lib/treesitter/json.js +376 -0
  517. package/src/lib/treesitter/manager.d.ts +9 -0
  518. package/src/lib/treesitter/manager.js +66 -0
  519. package/src/lib/treesitter/yaml.d.ts +9 -0
  520. package/src/lib/treesitter/yaml.js +878 -0
  521. package/src/server.d.ts +2 -0
  522. package/src/server.js +26 -0
@@ -0,0 +1,41 @@
1
+ import { CompletionItemKind, MarkupKind } from 'vscode-languageserver';
2
+ import { StatementKeys } from "../../lib/iam-policy/statement-keys.js";
3
+ export function completeStatementKey(location, context) {
4
+ const statement = context.handler.getStatementContext(context.uri, context.position);
5
+ const existingKeys = deriveExistingKeys(statement);
6
+ const existingGroups = new Set();
7
+ for (const key of existingKeys) {
8
+ const element = StatementKeys[key];
9
+ if (element)
10
+ existingGroups.add(element.group);
11
+ }
12
+ const items = [];
13
+ for (const [name, element] of Object.entries(StatementKeys)) {
14
+ if (existingKeys.includes(name))
15
+ continue;
16
+ if (existingGroups.has(element.group))
17
+ continue;
18
+ if (location.partial && !name.toLowerCase().startsWith(location.partial.toLowerCase()))
19
+ continue;
20
+ items.push({
21
+ label: name,
22
+ kind: CompletionItemKind.Field,
23
+ documentation: {
24
+ kind: MarkupKind.Markdown,
25
+ value: element.description,
26
+ },
27
+ });
28
+ }
29
+ return { items, isIncomplete: false };
30
+ }
31
+ function deriveExistingKeys(statement) {
32
+ if (!statement)
33
+ return [];
34
+ const keys = [];
35
+ for (const name of Object.keys(StatementKeys)) {
36
+ if (name in statement) {
37
+ keys.push(name);
38
+ }
39
+ }
40
+ return keys;
41
+ }
@@ -0,0 +1,317 @@
1
+ export declare const conditionOperators: {
2
+ readonly StringEquals: {
3
+ readonly description: "Exact matching, case sensitive";
4
+ };
5
+ readonly StringEqualsIfExists: {
6
+ readonly description: "Exact matching, case sensitive; true if key is absent";
7
+ };
8
+ readonly 'ForAllValues:StringEquals': {
9
+ readonly description: "All values must match at least one policy value (case sensitive)";
10
+ };
11
+ readonly 'ForAnyValue:StringEquals': {
12
+ readonly description: "At least one value must match a policy value (case sensitive)";
13
+ };
14
+ readonly StringNotEquals: {
15
+ readonly description: "Negated matching, case sensitive";
16
+ };
17
+ readonly StringNotEqualsIfExists: {
18
+ readonly description: "Negated matching, case sensitive; true if key is absent";
19
+ };
20
+ readonly 'ForAllValues:StringNotEquals': {
21
+ readonly description: "None of the values can match any policy value (case sensitive)";
22
+ };
23
+ readonly 'ForAnyValue:StringNotEquals': {
24
+ readonly description: "At least one value must not match any policy value (case sensitive)";
25
+ };
26
+ readonly StringEqualsIgnoreCase: {
27
+ readonly description: "Exact matching, ignoring case";
28
+ };
29
+ readonly StringEqualsIgnoreCaseIfExists: {
30
+ readonly description: "Exact matching, ignoring case; true if key is absent";
31
+ };
32
+ readonly 'ForAllValues:StringEqualsIgnoreCase': {
33
+ readonly description: "All values must match at least one policy value (case insensitive)";
34
+ };
35
+ readonly 'ForAnyValue:StringEqualsIgnoreCase': {
36
+ readonly description: "At least one value must match a policy value (case insensitive)";
37
+ };
38
+ readonly StringNotEqualsIgnoreCase: {
39
+ readonly description: "Negated matching, ignoring case";
40
+ };
41
+ readonly StringNotEqualsIgnoreCaseIfExists: {
42
+ readonly description: "Negated matching, ignoring case; true if key is absent";
43
+ };
44
+ readonly 'ForAllValues:StringNotEqualsIgnoreCase': {
45
+ readonly description: "None of the values can match any policy value (case insensitive)";
46
+ };
47
+ readonly 'ForAnyValue:StringNotEqualsIgnoreCase': {
48
+ readonly description: "At least one value must not match any policy value (case insensitive)";
49
+ };
50
+ readonly StringLike: {
51
+ readonly description: "Case-sensitive matching with wildcard support (* and ?)";
52
+ };
53
+ readonly StringLikeIfExists: {
54
+ readonly description: "Wildcard matching; true if key is absent";
55
+ };
56
+ readonly 'ForAllValues:StringLike': {
57
+ readonly description: "All values must match at least one policy value pattern";
58
+ };
59
+ readonly 'ForAnyValue:StringLike': {
60
+ readonly description: "At least one value must match a policy value pattern";
61
+ };
62
+ readonly StringNotLike: {
63
+ readonly description: "Negated case-sensitive matching with wildcard support";
64
+ };
65
+ readonly StringNotLikeIfExists: {
66
+ readonly description: "Negated wildcard matching; true if key is absent";
67
+ };
68
+ readonly 'ForAllValues:StringNotLike': {
69
+ readonly description: "None of the values can match any policy value pattern";
70
+ };
71
+ readonly 'ForAnyValue:StringNotLike': {
72
+ readonly description: "At least one value must not match any policy value pattern";
73
+ };
74
+ readonly NumericEquals: {
75
+ readonly description: "Exact numeric matching";
76
+ };
77
+ readonly NumericEqualsIfExists: {
78
+ readonly description: "Exact numeric matching; true if key is absent";
79
+ };
80
+ readonly 'ForAllValues:NumericEquals': {
81
+ readonly description: "All values must match at least one policy numeric value";
82
+ };
83
+ readonly 'ForAnyValue:NumericEquals': {
84
+ readonly description: "At least one value must match a policy numeric value";
85
+ };
86
+ readonly NumericNotEquals: {
87
+ readonly description: "Negated numeric matching";
88
+ };
89
+ readonly NumericNotEqualsIfExists: {
90
+ readonly description: "Negated numeric matching; true if key is absent";
91
+ };
92
+ readonly 'ForAllValues:NumericNotEquals': {
93
+ readonly description: "None of the values can match any policy numeric value";
94
+ };
95
+ readonly 'ForAnyValue:NumericNotEquals': {
96
+ readonly description: "At least one value must not match any policy numeric value";
97
+ };
98
+ readonly NumericLessThan: {
99
+ readonly description: "Less than matching";
100
+ };
101
+ readonly NumericLessThanIfExists: {
102
+ readonly description: "Less than matching; true if key is absent";
103
+ };
104
+ readonly 'ForAllValues:NumericLessThan': {
105
+ readonly description: "All values must be less than the policy value";
106
+ };
107
+ readonly 'ForAnyValue:NumericLessThan': {
108
+ readonly description: "At least one value must be less than the policy value";
109
+ };
110
+ readonly NumericLessThanEquals: {
111
+ readonly description: "Less than or equals matching";
112
+ };
113
+ readonly NumericLessThanEqualsIfExists: {
114
+ readonly description: "Less than or equals matching; true if key is absent";
115
+ };
116
+ readonly 'ForAllValues:NumericLessThanEquals': {
117
+ readonly description: "All values must be less than or equal to the policy value";
118
+ };
119
+ readonly 'ForAnyValue:NumericLessThanEquals': {
120
+ readonly description: "At least one value must be less than or equal to the policy value";
121
+ };
122
+ readonly NumericGreaterThan: {
123
+ readonly description: "Greater than matching";
124
+ };
125
+ readonly NumericGreaterThanIfExists: {
126
+ readonly description: "Greater than matching; true if key is absent";
127
+ };
128
+ readonly 'ForAllValues:NumericGreaterThan': {
129
+ readonly description: "All values must be greater than the policy value";
130
+ };
131
+ readonly 'ForAnyValue:NumericGreaterThan': {
132
+ readonly description: "At least one value must be greater than the policy value";
133
+ };
134
+ readonly NumericGreaterThanEquals: {
135
+ readonly description: "Greater than or equals matching";
136
+ };
137
+ readonly NumericGreaterThanEqualsIfExists: {
138
+ readonly description: "Greater than or equals matching; true if key is absent";
139
+ };
140
+ readonly 'ForAllValues:NumericGreaterThanEquals': {
141
+ readonly description: "All values must be greater than or equal to the policy value";
142
+ };
143
+ readonly 'ForAnyValue:NumericGreaterThanEquals': {
144
+ readonly description: "At least one value must be greater than or equal to the policy value";
145
+ };
146
+ readonly DateEquals: {
147
+ readonly description: "Matching a specific date";
148
+ };
149
+ readonly DateEqualsIfExists: {
150
+ readonly description: "Date matching; true if key is absent";
151
+ };
152
+ readonly 'ForAllValues:DateEquals': {
153
+ readonly description: "All values must match a policy date value";
154
+ };
155
+ readonly 'ForAnyValue:DateEquals': {
156
+ readonly description: "At least one value must match a policy date value";
157
+ };
158
+ readonly DateNotEquals: {
159
+ readonly description: "Negated date matching";
160
+ };
161
+ readonly DateNotEqualsIfExists: {
162
+ readonly description: "Negated date matching; true if key is absent";
163
+ };
164
+ readonly 'ForAllValues:DateNotEquals': {
165
+ readonly description: "None of the values can match any policy date value";
166
+ };
167
+ readonly 'ForAnyValue:DateNotEquals': {
168
+ readonly description: "At least one value must not match any policy date value";
169
+ };
170
+ readonly DateLessThan: {
171
+ readonly description: "Matching before a specific date and time";
172
+ };
173
+ readonly DateLessThanIfExists: {
174
+ readonly description: "Before date matching; true if key is absent";
175
+ };
176
+ readonly 'ForAllValues:DateLessThan': {
177
+ readonly description: "All values must be before the policy date";
178
+ };
179
+ readonly 'ForAnyValue:DateLessThan': {
180
+ readonly description: "At least one value must be before the policy date";
181
+ };
182
+ readonly DateLessThanEquals: {
183
+ readonly description: "Matching at or before a specific date and time";
184
+ };
185
+ readonly DateLessThanEqualsIfExists: {
186
+ readonly description: "At or before date matching; true if key is absent";
187
+ };
188
+ readonly 'ForAllValues:DateLessThanEquals': {
189
+ readonly description: "All values must be at or before the policy date";
190
+ };
191
+ readonly 'ForAnyValue:DateLessThanEquals': {
192
+ readonly description: "At least one value must be at or before the policy date";
193
+ };
194
+ readonly DateGreaterThan: {
195
+ readonly description: "Matching after a specific date and time";
196
+ };
197
+ readonly DateGreaterThanIfExists: {
198
+ readonly description: "After date matching; true if key is absent";
199
+ };
200
+ readonly 'ForAllValues:DateGreaterThan': {
201
+ readonly description: "All values must be after the policy date";
202
+ };
203
+ readonly 'ForAnyValue:DateGreaterThan': {
204
+ readonly description: "At least one value must be after the policy date";
205
+ };
206
+ readonly DateGreaterThanEquals: {
207
+ readonly description: "Matching at or after a specific date and time";
208
+ };
209
+ readonly DateGreaterThanEqualsIfExists: {
210
+ readonly description: "At or after date matching; true if key is absent";
211
+ };
212
+ readonly 'ForAllValues:DateGreaterThanEquals': {
213
+ readonly description: "All values must be at or after the policy date";
214
+ };
215
+ readonly 'ForAnyValue:DateGreaterThanEquals': {
216
+ readonly description: "At least one value must be at or after the policy date";
217
+ };
218
+ readonly Bool: {
219
+ readonly description: "Boolean matching (true or false)";
220
+ };
221
+ readonly BoolIfExists: {
222
+ readonly description: "Boolean matching; true if key is absent";
223
+ };
224
+ readonly 'ForAllValues:Bool': {
225
+ readonly description: "All values must match the policy boolean";
226
+ };
227
+ readonly 'ForAnyValue:Bool': {
228
+ readonly description: "At least one value must match the policy boolean";
229
+ };
230
+ readonly BinaryEquals: {
231
+ readonly description: "Byte-for-byte comparison of base-64 encoded binary values";
232
+ };
233
+ readonly BinaryEqualsIfExists: {
234
+ readonly description: "Binary value matching; true if key is absent";
235
+ };
236
+ readonly 'ForAllValues:BinaryEquals': {
237
+ readonly description: "All values must match a policy binary value";
238
+ };
239
+ readonly 'ForAnyValue:BinaryEquals': {
240
+ readonly description: "At least one value must match a policy binary value";
241
+ };
242
+ readonly IpAddress: {
243
+ readonly description: "Matching a specific IP address or CIDR range";
244
+ };
245
+ readonly IpAddressIfExists: {
246
+ readonly description: "IP address matching; true if key is absent";
247
+ };
248
+ readonly 'ForAllValues:IpAddress': {
249
+ readonly description: "All values must match a policy IP address or CIDR range";
250
+ };
251
+ readonly 'ForAnyValue:IpAddress': {
252
+ readonly description: "At least one value must match a policy IP address or CIDR range";
253
+ };
254
+ readonly NotIpAddress: {
255
+ readonly description: "All IP addresses except the specified IP address or CIDR range";
256
+ };
257
+ readonly NotIpAddressIfExists: {
258
+ readonly description: "Negated IP address matching; true if key is absent";
259
+ };
260
+ readonly 'ForAllValues:NotIpAddress': {
261
+ readonly description: "All values must not match any policy IP address or CIDR range";
262
+ };
263
+ readonly 'ForAnyValue:NotIpAddress': {
264
+ readonly description: "At least one value must not match any policy IP address or CIDR range";
265
+ };
266
+ readonly ArnEquals: {
267
+ readonly description: "Case-sensitive ARN matching";
268
+ };
269
+ readonly ArnEqualsIfExists: {
270
+ readonly description: "ARN matching; true if key is absent";
271
+ };
272
+ readonly 'ForAllValues:ArnEquals': {
273
+ readonly description: "All values must match at least one policy ARN";
274
+ };
275
+ readonly 'ForAnyValue:ArnEquals': {
276
+ readonly description: "At least one value must match a policy ARN";
277
+ };
278
+ readonly ArnLike: {
279
+ readonly description: "Case-sensitive ARN matching with wildcard support (* and ?)";
280
+ };
281
+ readonly ArnLikeIfExists: {
282
+ readonly description: "ARN wildcard matching; true if key is absent";
283
+ };
284
+ readonly 'ForAllValues:ArnLike': {
285
+ readonly description: "All values must match at least one policy ARN pattern";
286
+ };
287
+ readonly 'ForAnyValue:ArnLike': {
288
+ readonly description: "At least one value must match a policy ARN pattern";
289
+ };
290
+ readonly ArnNotEquals: {
291
+ readonly description: "Negated case-sensitive ARN matching";
292
+ };
293
+ readonly ArnNotEqualsIfExists: {
294
+ readonly description: "Negated ARN matching; true if key is absent";
295
+ };
296
+ readonly 'ForAllValues:ArnNotEquals': {
297
+ readonly description: "None of the values can match any policy ARN";
298
+ };
299
+ readonly 'ForAnyValue:ArnNotEquals': {
300
+ readonly description: "At least one value must not match any policy ARN";
301
+ };
302
+ readonly ArnNotLike: {
303
+ readonly description: "Negated case-sensitive ARN matching with wildcard support";
304
+ };
305
+ readonly ArnNotLikeIfExists: {
306
+ readonly description: "Negated ARN wildcard matching; true if key is absent";
307
+ };
308
+ readonly 'ForAllValues:ArnNotLike': {
309
+ readonly description: "None of the values can match any policy ARN pattern";
310
+ };
311
+ readonly 'ForAnyValue:ArnNotLike': {
312
+ readonly description: "At least one value must not match any policy ARN pattern";
313
+ };
314
+ readonly Null: {
315
+ readonly description: "Checks whether a condition key is present (true if absent, false if present)";
316
+ };
317
+ };
@@ -0,0 +1,129 @@
1
+ export const conditionOperators = {
2
+ // String
3
+ StringEquals: { description: 'Exact matching, case sensitive' },
4
+ StringEqualsIfExists: { description: 'Exact matching, case sensitive; true if key is absent' },
5
+ 'ForAllValues:StringEquals': { description: 'All values must match at least one policy value (case sensitive)' },
6
+ 'ForAnyValue:StringEquals': { description: 'At least one value must match a policy value (case sensitive)' },
7
+ StringNotEquals: { description: 'Negated matching, case sensitive' },
8
+ StringNotEqualsIfExists: { description: 'Negated matching, case sensitive; true if key is absent' },
9
+ 'ForAllValues:StringNotEquals': { description: 'None of the values can match any policy value (case sensitive)' },
10
+ 'ForAnyValue:StringNotEquals': { description: 'At least one value must not match any policy value (case sensitive)' },
11
+ StringEqualsIgnoreCase: { description: 'Exact matching, ignoring case' },
12
+ StringEqualsIgnoreCaseIfExists: { description: 'Exact matching, ignoring case; true if key is absent' },
13
+ 'ForAllValues:StringEqualsIgnoreCase': {
14
+ description: 'All values must match at least one policy value (case insensitive)',
15
+ },
16
+ 'ForAnyValue:StringEqualsIgnoreCase': {
17
+ description: 'At least one value must match a policy value (case insensitive)',
18
+ },
19
+ StringNotEqualsIgnoreCase: { description: 'Negated matching, ignoring case' },
20
+ StringNotEqualsIgnoreCaseIfExists: { description: 'Negated matching, ignoring case; true if key is absent' },
21
+ 'ForAllValues:StringNotEqualsIgnoreCase': {
22
+ description: 'None of the values can match any policy value (case insensitive)',
23
+ },
24
+ 'ForAnyValue:StringNotEqualsIgnoreCase': {
25
+ description: 'At least one value must not match any policy value (case insensitive)',
26
+ },
27
+ StringLike: { description: 'Case-sensitive matching with wildcard support (* and ?)' },
28
+ StringLikeIfExists: { description: 'Wildcard matching; true if key is absent' },
29
+ 'ForAllValues:StringLike': { description: 'All values must match at least one policy value pattern' },
30
+ 'ForAnyValue:StringLike': { description: 'At least one value must match a policy value pattern' },
31
+ StringNotLike: { description: 'Negated case-sensitive matching with wildcard support' },
32
+ StringNotLikeIfExists: { description: 'Negated wildcard matching; true if key is absent' },
33
+ 'ForAllValues:StringNotLike': { description: 'None of the values can match any policy value pattern' },
34
+ 'ForAnyValue:StringNotLike': { description: 'At least one value must not match any policy value pattern' },
35
+ // Numeric
36
+ NumericEquals: { description: 'Exact numeric matching' },
37
+ NumericEqualsIfExists: { description: 'Exact numeric matching; true if key is absent' },
38
+ 'ForAllValues:NumericEquals': { description: 'All values must match at least one policy numeric value' },
39
+ 'ForAnyValue:NumericEquals': { description: 'At least one value must match a policy numeric value' },
40
+ NumericNotEquals: { description: 'Negated numeric matching' },
41
+ NumericNotEqualsIfExists: { description: 'Negated numeric matching; true if key is absent' },
42
+ 'ForAllValues:NumericNotEquals': { description: 'None of the values can match any policy numeric value' },
43
+ 'ForAnyValue:NumericNotEquals': { description: 'At least one value must not match any policy numeric value' },
44
+ NumericLessThan: { description: 'Less than matching' },
45
+ NumericLessThanIfExists: { description: 'Less than matching; true if key is absent' },
46
+ 'ForAllValues:NumericLessThan': { description: 'All values must be less than the policy value' },
47
+ 'ForAnyValue:NumericLessThan': { description: 'At least one value must be less than the policy value' },
48
+ NumericLessThanEquals: { description: 'Less than or equals matching' },
49
+ NumericLessThanEqualsIfExists: { description: 'Less than or equals matching; true if key is absent' },
50
+ 'ForAllValues:NumericLessThanEquals': { description: 'All values must be less than or equal to the policy value' },
51
+ 'ForAnyValue:NumericLessThanEquals': {
52
+ description: 'At least one value must be less than or equal to the policy value',
53
+ },
54
+ NumericGreaterThan: { description: 'Greater than matching' },
55
+ NumericGreaterThanIfExists: { description: 'Greater than matching; true if key is absent' },
56
+ 'ForAllValues:NumericGreaterThan': { description: 'All values must be greater than the policy value' },
57
+ 'ForAnyValue:NumericGreaterThan': { description: 'At least one value must be greater than the policy value' },
58
+ NumericGreaterThanEquals: { description: 'Greater than or equals matching' },
59
+ NumericGreaterThanEqualsIfExists: { description: 'Greater than or equals matching; true if key is absent' },
60
+ 'ForAllValues:NumericGreaterThanEquals': {
61
+ description: 'All values must be greater than or equal to the policy value',
62
+ },
63
+ 'ForAnyValue:NumericGreaterThanEquals': {
64
+ description: 'At least one value must be greater than or equal to the policy value',
65
+ },
66
+ // Date
67
+ DateEquals: { description: 'Matching a specific date' },
68
+ DateEqualsIfExists: { description: 'Date matching; true if key is absent' },
69
+ 'ForAllValues:DateEquals': { description: 'All values must match a policy date value' },
70
+ 'ForAnyValue:DateEquals': { description: 'At least one value must match a policy date value' },
71
+ DateNotEquals: { description: 'Negated date matching' },
72
+ DateNotEqualsIfExists: { description: 'Negated date matching; true if key is absent' },
73
+ 'ForAllValues:DateNotEquals': { description: 'None of the values can match any policy date value' },
74
+ 'ForAnyValue:DateNotEquals': { description: 'At least one value must not match any policy date value' },
75
+ DateLessThan: { description: 'Matching before a specific date and time' },
76
+ DateLessThanIfExists: { description: 'Before date matching; true if key is absent' },
77
+ 'ForAllValues:DateLessThan': { description: 'All values must be before the policy date' },
78
+ 'ForAnyValue:DateLessThan': { description: 'At least one value must be before the policy date' },
79
+ DateLessThanEquals: { description: 'Matching at or before a specific date and time' },
80
+ DateLessThanEqualsIfExists: { description: 'At or before date matching; true if key is absent' },
81
+ 'ForAllValues:DateLessThanEquals': { description: 'All values must be at or before the policy date' },
82
+ 'ForAnyValue:DateLessThanEquals': { description: 'At least one value must be at or before the policy date' },
83
+ DateGreaterThan: { description: 'Matching after a specific date and time' },
84
+ DateGreaterThanIfExists: { description: 'After date matching; true if key is absent' },
85
+ 'ForAllValues:DateGreaterThan': { description: 'All values must be after the policy date' },
86
+ 'ForAnyValue:DateGreaterThan': { description: 'At least one value must be after the policy date' },
87
+ DateGreaterThanEquals: { description: 'Matching at or after a specific date and time' },
88
+ DateGreaterThanEqualsIfExists: { description: 'At or after date matching; true if key is absent' },
89
+ 'ForAllValues:DateGreaterThanEquals': { description: 'All values must be at or after the policy date' },
90
+ 'ForAnyValue:DateGreaterThanEquals': { description: 'At least one value must be at or after the policy date' },
91
+ // Boolean
92
+ Bool: { description: 'Boolean matching (true or false)' },
93
+ BoolIfExists: { description: 'Boolean matching; true if key is absent' },
94
+ 'ForAllValues:Bool': { description: 'All values must match the policy boolean' },
95
+ 'ForAnyValue:Bool': { description: 'At least one value must match the policy boolean' },
96
+ // Binary
97
+ BinaryEquals: { description: 'Byte-for-byte comparison of base-64 encoded binary values' },
98
+ BinaryEqualsIfExists: { description: 'Binary value matching; true if key is absent' },
99
+ 'ForAllValues:BinaryEquals': { description: 'All values must match a policy binary value' },
100
+ 'ForAnyValue:BinaryEquals': { description: 'At least one value must match a policy binary value' },
101
+ // IP address
102
+ IpAddress: { description: 'Matching a specific IP address or CIDR range' },
103
+ IpAddressIfExists: { description: 'IP address matching; true if key is absent' },
104
+ 'ForAllValues:IpAddress': { description: 'All values must match a policy IP address or CIDR range' },
105
+ 'ForAnyValue:IpAddress': { description: 'At least one value must match a policy IP address or CIDR range' },
106
+ NotIpAddress: { description: 'All IP addresses except the specified IP address or CIDR range' },
107
+ NotIpAddressIfExists: { description: 'Negated IP address matching; true if key is absent' },
108
+ 'ForAllValues:NotIpAddress': { description: 'All values must not match any policy IP address or CIDR range' },
109
+ 'ForAnyValue:NotIpAddress': { description: 'At least one value must not match any policy IP address or CIDR range' },
110
+ // ARN
111
+ ArnEquals: { description: 'Case-sensitive ARN matching' },
112
+ ArnEqualsIfExists: { description: 'ARN matching; true if key is absent' },
113
+ 'ForAllValues:ArnEquals': { description: 'All values must match at least one policy ARN' },
114
+ 'ForAnyValue:ArnEquals': { description: 'At least one value must match a policy ARN' },
115
+ ArnLike: { description: 'Case-sensitive ARN matching with wildcard support (* and ?)' },
116
+ ArnLikeIfExists: { description: 'ARN wildcard matching; true if key is absent' },
117
+ 'ForAllValues:ArnLike': { description: 'All values must match at least one policy ARN pattern' },
118
+ 'ForAnyValue:ArnLike': { description: 'At least one value must match a policy ARN pattern' },
119
+ ArnNotEquals: { description: 'Negated case-sensitive ARN matching' },
120
+ ArnNotEqualsIfExists: { description: 'Negated ARN matching; true if key is absent' },
121
+ 'ForAllValues:ArnNotEquals': { description: 'None of the values can match any policy ARN' },
122
+ 'ForAnyValue:ArnNotEquals': { description: 'At least one value must not match any policy ARN' },
123
+ ArnNotLike: { description: 'Negated case-sensitive ARN matching with wildcard support' },
124
+ ArnNotLikeIfExists: { description: 'Negated ARN wildcard matching; true if key is absent' },
125
+ 'ForAllValues:ArnNotLike': { description: 'None of the values can match any policy ARN pattern' },
126
+ 'ForAnyValue:ArnNotLike': { description: 'At least one value must not match any policy ARN pattern' },
127
+ // Null
128
+ Null: { description: 'Checks whether a condition key is present (true if absent, false if present)' },
129
+ };
@@ -0,0 +1,71 @@
1
+ import type { CursorContext } from '../treesitter/base.ts';
2
+ export type StatementKeyLocation = {
3
+ type: 'statement-key';
4
+ partial: string;
5
+ };
6
+ export type StatementBlockLocation = {
7
+ type: 'statement-block';
8
+ partial: string;
9
+ };
10
+ export type EffectValueLocation = {
11
+ type: 'effect-value';
12
+ partial: string;
13
+ };
14
+ export type ActionValueLocation = {
15
+ type: 'action-value';
16
+ partial: string;
17
+ };
18
+ export type ResourceValueLocation = {
19
+ type: 'resource-value';
20
+ partial: string;
21
+ };
22
+ export type PrincipalValueLocation = {
23
+ type: 'principal-value';
24
+ partial: string;
25
+ };
26
+ export type PrincipalTypeLocation = {
27
+ type: 'principal-type';
28
+ partial: string;
29
+ };
30
+ export type PrincipalBlockLocation = {
31
+ type: 'principal-block';
32
+ partial: string;
33
+ };
34
+ export type PrincipalBlockTypeLocation = {
35
+ type: 'principal-block-type';
36
+ partial: string;
37
+ };
38
+ export type PrincipalBlockIdentifierLocation = {
39
+ type: 'principal-block-identifier';
40
+ principalType: string | null;
41
+ partial: string;
42
+ };
43
+ export type PrincipalTypedValueLocation = {
44
+ type: 'principal-typed-value';
45
+ principalType: string;
46
+ partial: string;
47
+ };
48
+ export type ConditionBlockLocation = {
49
+ type: 'condition-block';
50
+ partial: string;
51
+ };
52
+ export type ConditionOperatorLocation = {
53
+ type: 'condition-operator';
54
+ partial: string;
55
+ };
56
+ export type ConditionKeyLocation = {
57
+ type: 'condition-key';
58
+ operator: string;
59
+ partial: string;
60
+ };
61
+ export type ConditionValueLocation = {
62
+ type: 'condition-value';
63
+ operator: string;
64
+ key: string;
65
+ partial: string;
66
+ };
67
+ export type UnknownLocation = {
68
+ type: 'unknown';
69
+ };
70
+ export type PolicyLocation = StatementKeyLocation | StatementBlockLocation | EffectValueLocation | ActionValueLocation | ResourceValueLocation | PrincipalValueLocation | PrincipalTypeLocation | PrincipalBlockLocation | PrincipalBlockTypeLocation | PrincipalBlockIdentifierLocation | PrincipalTypedValueLocation | ConditionBlockLocation | ConditionOperatorLocation | ConditionKeyLocation | ConditionValueLocation | UnknownLocation;
71
+ export declare function resolvePolicyLocation(context: CursorContext): PolicyLocation;
@@ -0,0 +1,82 @@
1
+ const snakeToPascal = {
2
+ sid: 'Sid',
3
+ effect: 'Effect',
4
+ principals: 'Principal',
5
+ not_principals: 'NotPrincipal',
6
+ actions: 'Action',
7
+ not_actions: 'NotAction',
8
+ resources: 'Resource',
9
+ not_resources: 'NotResource',
10
+ condition: 'Condition',
11
+ };
12
+ const cfnIntrinsicPattern = /^(Fn::|Ref$)/;
13
+ export function resolvePolicyLocation(context) {
14
+ const isHclBlock = context.policyFormat === 'hcl-block';
15
+ const keys = context.keys.filter((key) => !cfnIntrinsicPattern.test(key));
16
+ const statementKey = isHclBlock ? (snakeToPascal[keys[0]] ?? keys[0]) : keys[0];
17
+ if (keys.length === 0 && context.role === 'key') {
18
+ if (isHclBlock)
19
+ return { type: 'statement-block', partial: context.partial };
20
+ return { type: 'statement-key', partial: context.partial };
21
+ }
22
+ if (keys.length === 1 && context.role === 'value') {
23
+ if (statementKey === 'Effect')
24
+ return { type: 'effect-value', partial: context.partial };
25
+ if (statementKey === 'Action' || statementKey === 'NotAction')
26
+ return { type: 'action-value', partial: context.partial };
27
+ if (statementKey === 'Resource' || statementKey === 'NotResource')
28
+ return { type: 'resource-value', partial: context.partial };
29
+ if (statementKey === 'Principal' || statementKey === 'NotPrincipal')
30
+ return { type: 'principal-value', partial: context.partial };
31
+ if (statementKey === 'Condition')
32
+ return { type: 'condition-operator', partial: context.partial };
33
+ }
34
+ if (keys.length === 1 && context.role === 'key') {
35
+ if (statementKey === 'Principal' || statementKey === 'NotPrincipal') {
36
+ if (isHclBlock) {
37
+ return { type: 'principal-block', partial: context.partial };
38
+ }
39
+ return { type: 'principal-type', partial: context.partial };
40
+ }
41
+ if (statementKey === 'Condition') {
42
+ if (isHclBlock)
43
+ return { type: 'condition-block', partial: context.partial };
44
+ return { type: 'condition-operator', partial: context.partial };
45
+ }
46
+ }
47
+ if ((keys.length === 2 || keys.length === 3) && context.role === 'value') {
48
+ if (statementKey === 'Principal' || statementKey === 'NotPrincipal') {
49
+ if (isHclBlock && keys[1] === 'type') {
50
+ return { type: 'principal-block-type', partial: context.partial };
51
+ }
52
+ if (isHclBlock && keys[1] === 'identifiers') {
53
+ return { type: 'principal-block-identifier', principalType: keys[2] ?? null, partial: context.partial };
54
+ }
55
+ if (keys.length === 2) {
56
+ return { type: 'principal-typed-value', principalType: keys[1], partial: context.partial };
57
+ }
58
+ }
59
+ }
60
+ if (keys.length === 2 && context.role === 'value') {
61
+ if (statementKey === 'Condition' && isHclBlock && keys[1] === 'test') {
62
+ return { type: 'condition-operator', partial: context.partial };
63
+ }
64
+ if (statementKey === 'Condition' && isHclBlock && keys[1] === 'variable') {
65
+ return { type: 'condition-key', operator: '', partial: context.partial };
66
+ }
67
+ if (statementKey === 'Condition' && !isHclBlock) {
68
+ return { type: 'condition-key', operator: keys[1], partial: context.partial };
69
+ }
70
+ }
71
+ if (keys.length === 2 && context.role === 'key') {
72
+ if (statementKey === 'Condition') {
73
+ return { type: 'condition-key', operator: keys[1], partial: context.partial };
74
+ }
75
+ }
76
+ if (keys.length === 3 && context.role === 'value') {
77
+ if (statementKey === 'Condition') {
78
+ return { type: 'condition-value', operator: keys[1], key: keys[2], partial: context.partial };
79
+ }
80
+ }
81
+ return { type: 'unknown' };
82
+ }