@kensio/yulin 1.19.2 → 1.19.3

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 (705) hide show
  1. package/README.md +12 -0
  2. package/dist/serve/http/local-server/sim-aws-local-server.d.ts +31 -0
  3. package/dist/serve/http/local-server/sim-aws-local-server.d.ts.map +1 -1
  4. package/dist/serve/http/local-server/sim-aws-local-server.js +15 -1
  5. package/dist/serve/http/local-server/sim-aws-local-server.js.map +1 -1
  6. package/dist/serve/index.d.ts +1 -0
  7. package/dist/serve/index.d.ts.map +1 -1
  8. package/dist/serve/index.js.map +1 -1
  9. package/dist/serve/message/sim-local-message-logging.d.ts +39 -0
  10. package/dist/serve/message/sim-local-message-logging.d.ts.map +1 -0
  11. package/dist/serve/message/sim-local-message-logging.js +45 -0
  12. package/dist/serve/message/sim-local-message-logging.js.map +1 -0
  13. package/dist/serve/message/sim-message-log-console.d.ts +43 -0
  14. package/dist/serve/message/sim-message-log-console.d.ts.map +1 -0
  15. package/dist/serve/message/sim-message-log-console.js +71 -0
  16. package/dist/serve/message/sim-message-log-console.js.map +1 -0
  17. package/dist/serve/message/sim-message-logging.d.ts +42 -0
  18. package/dist/serve/message/sim-message-logging.d.ts.map +1 -0
  19. package/dist/serve/message/sim-message-logging.js +31 -0
  20. package/dist/serve/message/sim-message-logging.js.map +1 -0
  21. package/dist/service/aws/factory/sim-aws-account-region-service-builder.d.ts +3 -0
  22. package/dist/service/aws/factory/sim-aws-account-region-service-builder.d.ts.map +1 -1
  23. package/dist/service/aws/factory/sim-aws-account-region-service-builder.js +12 -1
  24. package/dist/service/aws/factory/sim-aws-account-region-service-builder.js.map +1 -1
  25. package/dist/service/aws/factory/sim-aws-service-factory.d.ts +9 -0
  26. package/dist/service/aws/factory/sim-aws-service-factory.d.ts.map +1 -1
  27. package/dist/service/aws/factory/sim-aws-service-factory.js +10 -0
  28. package/dist/service/aws/factory/sim-aws-service-factory.js.map +1 -1
  29. package/dist/service/aws/message/sim-aws-logged-message.d.ts +46 -0
  30. package/dist/service/aws/message/sim-aws-logged-message.d.ts.map +1 -0
  31. package/dist/service/aws/message/sim-aws-logged-message.js +2 -0
  32. package/dist/service/aws/message/sim-aws-logged-message.js.map +1 -0
  33. package/dist/service/aws/message/sim-aws-message-log.d.ts +40 -0
  34. package/dist/service/aws/message/sim-aws-message-log.d.ts.map +1 -0
  35. package/dist/service/aws/message/sim-aws-message-log.js +40 -0
  36. package/dist/service/aws/message/sim-aws-message-log.js.map +1 -0
  37. package/dist/service/cloudformation/cdk/s3/bucket-notifications/property/sim-cdk-bucket-notification-properties.d.ts +4 -3
  38. package/dist/service/cloudformation/cdk/s3/bucket-notifications/property/sim-cdk-bucket-notification-properties.d.ts.map +1 -1
  39. package/dist/service/cloudformation/cdk/s3/bucket-notifications/property/sim-cdk-bucket-notification-properties.js +4 -3
  40. package/dist/service/cloudformation/cdk/s3/bucket-notifications/property/sim-cdk-bucket-notification-properties.js.map +1 -1
  41. package/dist/service/cloudformation/cdk/s3/bucket-notifications/sim-cdk-bucket-notifications.d.ts +5 -0
  42. package/dist/service/cloudformation/cdk/s3/bucket-notifications/sim-cdk-bucket-notifications.d.ts.map +1 -1
  43. package/dist/service/cloudformation/cdk/s3/bucket-notifications/sim-cdk-bucket-notifications.js +5 -0
  44. package/dist/service/cloudformation/cdk/s3/bucket-notifications/sim-cdk-bucket-notifications.js.map +1 -1
  45. package/dist/service/cloudformation/resource/cfn/ses/sim-ses-cfn-value-adapter.d.ts.map +1 -1
  46. package/dist/service/cloudformation/resource/cfn/ses/sim-ses-cfn-value-adapter.js +8 -0
  47. package/dist/service/cloudformation/resource/cfn/ses/sim-ses-cfn-value-adapter.js.map +1 -1
  48. package/dist/service/cloudformation/resource/cfn/ses/sim-ses-configuration-set-cfn.d.ts +30 -0
  49. package/dist/service/cloudformation/resource/cfn/ses/sim-ses-configuration-set-cfn.d.ts.map +1 -0
  50. package/dist/service/cloudformation/resource/cfn/ses/sim-ses-configuration-set-cfn.js +29 -0
  51. package/dist/service/cloudformation/resource/cfn/ses/sim-ses-configuration-set-cfn.js.map +1 -0
  52. package/dist/service/cloudformation/resource/cfn/ses/sim-ses-identity-cfn.js +1 -1
  53. package/dist/service/cloudformation/resource/cfn/ses/sim-ses-identity-cfn.js.map +1 -1
  54. package/dist/service/cognito/cfn/client/sim-cfn-cognito-client-properties.d.ts.map +1 -1
  55. package/dist/service/cognito/cfn/client/sim-cfn-cognito-client-properties.js +2 -0
  56. package/dist/service/cognito/cfn/client/sim-cfn-cognito-client-properties.js.map +1 -1
  57. package/dist/service/cognito/cfn/sim-cfn-cognito-property-parser.d.ts +7 -0
  58. package/dist/service/cognito/cfn/sim-cfn-cognito-property-parser.d.ts.map +1 -1
  59. package/dist/service/cognito/cfn/sim-cfn-cognito-property-parser.js +14 -0
  60. package/dist/service/cognito/cfn/sim-cfn-cognito-property-parser.js.map +1 -1
  61. package/dist/service/cognito/cfn/user-pool/sim-cfn-cognito-user-pool-properties.d.ts.map +1 -1
  62. package/dist/service/cognito/cfn/user-pool/sim-cfn-cognito-user-pool-properties.js +10 -0
  63. package/dist/service/cognito/cfn/user-pool/sim-cfn-cognito-user-pool-properties.js.map +1 -1
  64. package/dist/service/cognito/command/auth/sim-cognito-available-challenges.d.ts.map +1 -1
  65. package/dist/service/cognito/command/auth/sim-cognito-available-challenges.js +7 -6
  66. package/dist/service/cognito/command/auth/sim-cognito-available-challenges.js.map +1 -1
  67. package/dist/service/cognito/command/client/sim-cognito-unsimulated-client-options.d.ts +20 -0
  68. package/dist/service/cognito/command/client/sim-cognito-unsimulated-client-options.d.ts.map +1 -1
  69. package/dist/service/cognito/command/client/sim-cognito-unsimulated-client-options.js +24 -4
  70. package/dist/service/cognito/command/client/sim-cognito-unsimulated-client-options.js.map +1 -1
  71. package/dist/service/cognito/command/sim-cognito-commands.d.ts +4 -0
  72. package/dist/service/cognito/command/sim-cognito-commands.d.ts.map +1 -1
  73. package/dist/service/cognito/command/sim-cognito-commands.js +8 -2
  74. package/dist/service/cognito/command/sim-cognito-commands.js.map +1 -1
  75. package/dist/service/cognito/command/sim-cognito-unsimulated-input.d.ts +9 -0
  76. package/dist/service/cognito/command/sim-cognito-unsimulated-input.d.ts.map +1 -1
  77. package/dist/service/cognito/command/sim-cognito-unsimulated-input.js +13 -3
  78. package/dist/service/cognito/command/sim-cognito-unsimulated-input.js.map +1 -1
  79. package/dist/service/cognito/command/user/sim-cognito-user-mfa-commands.d.ts.map +1 -1
  80. package/dist/service/cognito/command/user/sim-cognito-user-mfa-commands.js +2 -1
  81. package/dist/service/cognito/command/user/sim-cognito-user-mfa-commands.js.map +1 -1
  82. package/dist/service/cognito/command/user/user-mfa.command.d.ts +4 -3
  83. package/dist/service/cognito/command/user/user-mfa.command.d.ts.map +1 -1
  84. package/dist/service/cognito/command/user-pool/sim-cognito-unsimulated-pool-messaging.d.ts +22 -8
  85. package/dist/service/cognito/command/user-pool/sim-cognito-unsimulated-pool-messaging.d.ts.map +1 -1
  86. package/dist/service/cognito/command/user-pool/sim-cognito-unsimulated-pool-messaging.js +24 -11
  87. package/dist/service/cognito/command/user-pool/sim-cognito-unsimulated-pool-messaging.js.map +1 -1
  88. package/dist/service/cognito/command/user-pool/sim-cognito-user-pool-mfa-commands.d.ts +3 -3
  89. package/dist/service/cognito/command/user-pool/sim-cognito-user-pool-mfa-commands.d.ts.map +1 -1
  90. package/dist/service/cognito/command/user-pool/sim-cognito-user-pool-mfa-commands.js +5 -4
  91. package/dist/service/cognito/command/user-pool/sim-cognito-user-pool-mfa-commands.js.map +1 -1
  92. package/dist/service/cognito/command/user-pool/sim-cognito-user-pool-view.d.ts +6 -0
  93. package/dist/service/cognito/command/user-pool/sim-cognito-user-pool-view.d.ts.map +1 -1
  94. package/dist/service/cognito/command/user-pool/sim-cognito-user-pool-view.js +7 -0
  95. package/dist/service/cognito/command/user-pool/sim-cognito-user-pool-view.js.map +1 -1
  96. package/dist/service/cognito/command/user-pool/user-pool-mfa.command.d.ts +7 -6
  97. package/dist/service/cognito/command/user-pool/user-pool-mfa.command.d.ts.map +1 -1
  98. package/dist/service/cognito/command/user-pool/user-pool.command.d.ts +4 -2
  99. package/dist/service/cognito/command/user-pool/user-pool.command.d.ts.map +1 -1
  100. package/dist/service/cognito/error/sim-cognito.error.d.ts +23 -0
  101. package/dist/service/cognito/error/sim-cognito.error.d.ts.map +1 -1
  102. package/dist/service/cognito/error/sim-cognito.error.js +27 -0
  103. package/dist/service/cognito/error/sim-cognito.error.js.map +1 -1
  104. package/dist/service/cognito/index.d.ts +4 -0
  105. package/dist/service/cognito/index.d.ts.map +1 -1
  106. package/dist/service/cognito/index.js +4 -0
  107. package/dist/service/cognito/index.js.map +1 -1
  108. package/dist/service/cognito/sim-cognito-identity-provider.d.ts +14 -0
  109. package/dist/service/cognito/sim-cognito-identity-provider.d.ts.map +1 -1
  110. package/dist/service/cognito/sim-cognito-identity-provider.js +5 -1
  111. package/dist/service/cognito/sim-cognito-identity-provider.js.map +1 -1
  112. package/dist/service/cognito/user-pool/message/sim-aws-cognito-email-senders.d.ts +42 -0
  113. package/dist/service/cognito/user-pool/message/sim-aws-cognito-email-senders.d.ts.map +1 -0
  114. package/dist/service/cognito/user-pool/message/sim-aws-cognito-email-senders.js +84 -0
  115. package/dist/service/cognito/user-pool/message/sim-aws-cognito-email-senders.js.map +1 -0
  116. package/dist/service/cognito/user-pool/message/sim-cognito-email-configuration-reader.d.ts +31 -0
  117. package/dist/service/cognito/user-pool/message/sim-cognito-email-configuration-reader.d.ts.map +1 -0
  118. package/dist/service/cognito/user-pool/message/sim-cognito-email-configuration-reader.js +72 -0
  119. package/dist/service/cognito/user-pool/message/sim-cognito-email-configuration-reader.js.map +1 -0
  120. package/dist/service/cognito/user-pool/message/sim-cognito-email-configuration.d.ts +85 -0
  121. package/dist/service/cognito/user-pool/message/sim-cognito-email-configuration.d.ts.map +1 -0
  122. package/dist/service/cognito/user-pool/message/sim-cognito-email-configuration.js +117 -0
  123. package/dist/service/cognito/user-pool/message/sim-cognito-email-configuration.js.map +1 -0
  124. package/dist/service/cognito/user-pool/message/sim-cognito-email-senders.d.ts +73 -0
  125. package/dist/service/cognito/user-pool/message/sim-cognito-email-senders.d.ts.map +1 -0
  126. package/dist/service/cognito/user-pool/message/sim-cognito-email-senders.js +23 -0
  127. package/dist/service/cognito/user-pool/message/sim-cognito-email-senders.js.map +1 -0
  128. package/dist/service/cognito/user-pool/message/sim-cognito-email-source-arn.d.ts +39 -0
  129. package/dist/service/cognito/user-pool/message/sim-cognito-email-source-arn.d.ts.map +1 -0
  130. package/dist/service/cognito/user-pool/message/sim-cognito-email-source-arn.js +33 -0
  131. package/dist/service/cognito/user-pool/message/sim-cognito-email-source-arn.js.map +1 -0
  132. package/dist/service/cognito/user-pool/message/sim-cognito-pool-email-delivery.d.ts +41 -0
  133. package/dist/service/cognito/user-pool/message/sim-cognito-pool-email-delivery.d.ts.map +1 -0
  134. package/dist/service/cognito/user-pool/message/sim-cognito-pool-email-delivery.js +66 -0
  135. package/dist/service/cognito/user-pool/message/sim-cognito-pool-email-delivery.js.map +1 -0
  136. package/dist/service/cognito/user-pool/message/sim-cognito-pool-messenger.d.ts +19 -4
  137. package/dist/service/cognito/user-pool/message/sim-cognito-pool-messenger.d.ts.map +1 -1
  138. package/dist/service/cognito/user-pool/message/sim-cognito-pool-messenger.js +30 -8
  139. package/dist/service/cognito/user-pool/message/sim-cognito-pool-messenger.js.map +1 -1
  140. package/dist/service/cognito/user-pool/message/sim-cognito-sent-message.d.ts +9 -3
  141. package/dist/service/cognito/user-pool/message/sim-cognito-sent-message.d.ts.map +1 -1
  142. package/dist/service/cognito/user-pool/message/sim-cognito-sent-message.js +9 -3
  143. package/dist/service/cognito/user-pool/message/sim-cognito-sent-message.js.map +1 -1
  144. package/dist/service/cognito/user-pool/mfa/sim-cognito-user-pool-mfa.d.ts +2 -3
  145. package/dist/service/cognito/user-pool/mfa/sim-cognito-user-pool-mfa.d.ts.map +1 -1
  146. package/dist/service/cognito/user-pool/mfa/sim-cognito-user-pool-mfa.js.map +1 -1
  147. package/dist/service/cognito/user-pool/sim-cognito-user-pool-arn.d.ts +4 -2
  148. package/dist/service/cognito/user-pool/sim-cognito-user-pool-arn.d.ts.map +1 -1
  149. package/dist/service/cognito/user-pool/sim-cognito-user-pool-arn.js +2 -1
  150. package/dist/service/cognito/user-pool/sim-cognito-user-pool-arn.js.map +1 -1
  151. package/dist/service/cognito/user-pool/sim-cognito-user-pool-settings.d.ts +13 -0
  152. package/dist/service/cognito/user-pool/sim-cognito-user-pool-settings.d.ts.map +1 -1
  153. package/dist/service/cognito/user-pool/sim-cognito-user-pool-settings.js +7 -0
  154. package/dist/service/cognito/user-pool/sim-cognito-user-pool-settings.js.map +1 -1
  155. package/dist/service/iam/index.d.ts +1 -0
  156. package/dist/service/iam/index.d.ts.map +1 -1
  157. package/dist/service/iam/index.js.map +1 -1
  158. package/dist/service/ses/account/sim-ses-account.d.ts +22 -0
  159. package/dist/service/ses/account/sim-ses-account.d.ts.map +1 -1
  160. package/dist/service/ses/account/sim-ses-account.js +31 -0
  161. package/dist/service/ses/account/sim-ses-account.js.map +1 -1
  162. package/dist/service/ses/cfn/configuration-set/sim-cfn-ses-configuration-set-creator.d.ts +30 -0
  163. package/dist/service/ses/cfn/configuration-set/sim-cfn-ses-configuration-set-creator.d.ts.map +1 -0
  164. package/dist/service/ses/cfn/configuration-set/sim-cfn-ses-configuration-set-creator.js +47 -0
  165. package/dist/service/ses/cfn/configuration-set/sim-cfn-ses-configuration-set-creator.js.map +1 -0
  166. package/dist/service/ses/cfn/configuration-set/sim-cfn-ses-configuration-set-option-groups.d.ts +23 -0
  167. package/dist/service/ses/cfn/configuration-set/sim-cfn-ses-configuration-set-option-groups.d.ts.map +1 -0
  168. package/dist/service/ses/cfn/configuration-set/sim-cfn-ses-configuration-set-option-groups.js +52 -0
  169. package/dist/service/ses/cfn/configuration-set/sim-cfn-ses-configuration-set-option-groups.js.map +1 -0
  170. package/dist/service/ses/cfn/configuration-set/sim-cfn-ses-configuration-set-properties.d.ts +39 -0
  171. package/dist/service/ses/cfn/configuration-set/sim-cfn-ses-configuration-set-properties.d.ts.map +1 -0
  172. package/dist/service/ses/cfn/configuration-set/sim-cfn-ses-configuration-set-properties.js +71 -0
  173. package/dist/service/ses/cfn/configuration-set/sim-cfn-ses-configuration-set-properties.js.map +1 -0
  174. package/dist/service/ses/cfn/configuration-set/sim-cfn-ses-configuration-set-unsimulated-properties.d.ts +17 -0
  175. package/dist/service/ses/cfn/configuration-set/sim-cfn-ses-configuration-set-unsimulated-properties.d.ts.map +1 -0
  176. package/dist/service/ses/cfn/configuration-set/sim-cfn-ses-configuration-set-unsimulated-properties.js +34 -0
  177. package/dist/service/ses/cfn/configuration-set/sim-cfn-ses-configuration-set-unsimulated-properties.js.map +1 -0
  178. package/dist/service/ses/cfn/identity/sim-cfn-ses-identity-creator.d.ts +5 -0
  179. package/dist/service/ses/cfn/identity/sim-cfn-ses-identity-creator.d.ts.map +1 -1
  180. package/dist/service/ses/cfn/identity/sim-cfn-ses-identity-creator.js +7 -0
  181. package/dist/service/ses/cfn/identity/sim-cfn-ses-identity-creator.js.map +1 -1
  182. package/dist/service/ses/cfn/identity/sim-cfn-ses-identity-properties.d.ts +13 -8
  183. package/dist/service/ses/cfn/identity/sim-cfn-ses-identity-properties.d.ts.map +1 -1
  184. package/dist/service/ses/cfn/identity/sim-cfn-ses-identity-properties.js +29 -14
  185. package/dist/service/ses/cfn/identity/sim-cfn-ses-identity-properties.js.map +1 -1
  186. package/dist/service/ses/cfn/identity/sim-cfn-ses-identity-settings.d.ts +18 -0
  187. package/dist/service/ses/cfn/identity/sim-cfn-ses-identity-settings.d.ts.map +1 -0
  188. package/dist/service/ses/cfn/identity/sim-cfn-ses-identity-settings.js +77 -0
  189. package/dist/service/ses/cfn/identity/sim-cfn-ses-identity-settings.js.map +1 -0
  190. package/dist/service/ses/cfn/identity/sim-cfn-ses-identity-values.d.ts +25 -0
  191. package/dist/service/ses/cfn/identity/sim-cfn-ses-identity-values.d.ts.map +1 -0
  192. package/dist/service/ses/cfn/identity/sim-cfn-ses-identity-values.js +49 -0
  193. package/dist/service/ses/cfn/identity/sim-cfn-ses-identity-values.js.map +1 -0
  194. package/dist/service/ses/cfn/sim-cfn-ses-property-scalars.d.ts +25 -0
  195. package/dist/service/ses/cfn/sim-cfn-ses-property-scalars.d.ts.map +1 -0
  196. package/dist/service/ses/cfn/sim-cfn-ses-property-scalars.js +69 -0
  197. package/dist/service/ses/cfn/sim-cfn-ses-property-scalars.js.map +1 -0
  198. package/dist/service/ses/cfn/sim-cfn-ses-resource-types.d.ts +2 -0
  199. package/dist/service/ses/cfn/sim-cfn-ses-resource-types.d.ts.map +1 -1
  200. package/dist/service/ses/cfn/sim-cfn-ses-resource-types.js +2 -0
  201. package/dist/service/ses/cfn/sim-cfn-ses-resource-types.js.map +1 -1
  202. package/dist/service/ses/cfn/sim-ses-cfn-resource-factory.d.ts +3 -2
  203. package/dist/service/ses/cfn/sim-ses-cfn-resource-factory.d.ts.map +1 -1
  204. package/dist/service/ses/cfn/sim-ses-cfn-resource-factory.js +43 -40
  205. package/dist/service/ses/cfn/sim-ses-cfn-resource-factory.js.map +1 -1
  206. package/dist/service/ses/command/account/account.command.d.ts +22 -0
  207. package/dist/service/ses/command/account/account.command.d.ts.map +1 -1
  208. package/dist/service/ses/command/account/sim-ses-account-commands.d.ts +12 -4
  209. package/dist/service/ses/command/account/sim-ses-account-commands.d.ts.map +1 -1
  210. package/dist/service/ses/command/account/sim-ses-account-commands.js +16 -3
  211. package/dist/service/ses/command/account/sim-ses-account-commands.js.map +1 -1
  212. package/dist/service/ses/command/account/sim-ses-account-report.d.ts +3 -0
  213. package/dist/service/ses/command/account/sim-ses-account-report.d.ts.map +1 -1
  214. package/dist/service/ses/command/account/sim-ses-account-report.js +4 -0
  215. package/dist/service/ses/command/account/sim-ses-account-report.js.map +1 -1
  216. package/dist/service/ses/command/authorize/sim-ses-authorizer.d.ts +8 -0
  217. package/dist/service/ses/command/authorize/sim-ses-authorizer.d.ts.map +1 -1
  218. package/dist/service/ses/command/authorize/sim-ses-authorizer.js +11 -1
  219. package/dist/service/ses/command/authorize/sim-ses-authorizer.js.map +1 -1
  220. package/dist/service/ses/command/configuration-set/configuration-set.command.d.ts +100 -0
  221. package/dist/service/ses/command/configuration-set/configuration-set.command.d.ts.map +1 -0
  222. package/dist/service/ses/command/configuration-set/configuration-set.command.js +2 -0
  223. package/dist/service/ses/command/configuration-set/configuration-set.command.js.map +1 -0
  224. package/dist/service/ses/command/configuration-set/sim-ses-configuration-set-commands.d.ts +55 -0
  225. package/dist/service/ses/command/configuration-set/sim-ses-configuration-set-commands.d.ts.map +1 -0
  226. package/dist/service/ses/command/configuration-set/sim-ses-configuration-set-commands.js +105 -0
  227. package/dist/service/ses/command/configuration-set/sim-ses-configuration-set-commands.js.map +1 -0
  228. package/dist/service/ses/command/configuration-set/sim-ses-configuration-set-options.d.ts +11 -0
  229. package/dist/service/ses/command/configuration-set/sim-ses-configuration-set-options.d.ts.map +1 -0
  230. package/dist/service/ses/command/configuration-set/sim-ses-configuration-set-options.js +83 -0
  231. package/dist/service/ses/command/configuration-set/sim-ses-configuration-set-options.js.map +1 -0
  232. package/dist/service/ses/command/configuration-set/sim-ses-unsimulated-configuration-set-input.d.ts +12 -0
  233. package/dist/service/ses/command/configuration-set/sim-ses-unsimulated-configuration-set-input.d.ts.map +1 -0
  234. package/dist/service/ses/command/configuration-set/sim-ses-unsimulated-configuration-set-input.js +27 -0
  235. package/dist/service/ses/command/configuration-set/sim-ses-unsimulated-configuration-set-input.js.map +1 -0
  236. package/dist/service/ses/command/identity/identity.command.d.ts +55 -2
  237. package/dist/service/ses/command/identity/identity.command.d.ts.map +1 -1
  238. package/dist/service/ses/command/identity/sim-ses-identity-attributes.d.ts +29 -0
  239. package/dist/service/ses/command/identity/sim-ses-identity-attributes.d.ts.map +1 -0
  240. package/dist/service/ses/command/identity/sim-ses-identity-attributes.js +60 -0
  241. package/dist/service/ses/command/identity/sim-ses-identity-attributes.js.map +1 -0
  242. package/dist/service/ses/command/identity/sim-ses-identity-commands.d.ts +6 -1
  243. package/dist/service/ses/command/identity/sim-ses-identity-commands.d.ts.map +1 -1
  244. package/dist/service/ses/command/identity/sim-ses-identity-commands.js +12 -12
  245. package/dist/service/ses/command/identity/sim-ses-identity-commands.js.map +1 -1
  246. package/dist/service/ses/command/identity/sim-ses-identity-input-settings.d.ts +16 -0
  247. package/dist/service/ses/command/identity/sim-ses-identity-input-settings.d.ts.map +1 -0
  248. package/dist/service/ses/command/identity/sim-ses-identity-input-settings.js +57 -0
  249. package/dist/service/ses/command/identity/sim-ses-identity-input-settings.js.map +1 -0
  250. package/dist/service/ses/command/send/sim-ses-send-email.d.ts +6 -0
  251. package/dist/service/ses/command/send/sim-ses-send-email.d.ts.map +1 -1
  252. package/dist/service/ses/command/send/sim-ses-send-email.js +7 -0
  253. package/dist/service/ses/command/send/sim-ses-send-email.js.map +1 -1
  254. package/dist/service/ses/command/send/sim-ses-service-send.d.ts +68 -0
  255. package/dist/service/ses/command/send/sim-ses-service-send.d.ts.map +1 -0
  256. package/dist/service/ses/command/send/sim-ses-service-send.js +69 -0
  257. package/dist/service/ses/command/send/sim-ses-service-send.js.map +1 -0
  258. package/dist/service/ses/command/send/sim-ses-suppression-check.d.ts +31 -0
  259. package/dist/service/ses/command/send/sim-ses-suppression-check.d.ts.map +1 -0
  260. package/dist/service/ses/command/send/sim-ses-suppression-check.js +37 -0
  261. package/dist/service/ses/command/send/sim-ses-suppression-check.js.map +1 -0
  262. package/dist/service/ses/command/send/sim-ses-verified-identities.d.ts +8 -0
  263. package/dist/service/ses/command/send/sim-ses-verified-identities.d.ts.map +1 -1
  264. package/dist/service/ses/command/send/sim-ses-verified-identities.js +15 -2
  265. package/dist/service/ses/command/send/sim-ses-verified-identities.js.map +1 -1
  266. package/dist/service/ses/command/sim-ses-command.types.d.ts +4 -2
  267. package/dist/service/ses/command/sim-ses-command.types.d.ts.map +1 -1
  268. package/dist/service/ses/command/suppression/sim-ses-suppression-commands.d.ts +44 -0
  269. package/dist/service/ses/command/suppression/sim-ses-suppression-commands.d.ts.map +1 -0
  270. package/dist/service/ses/command/suppression/sim-ses-suppression-commands.js +79 -0
  271. package/dist/service/ses/command/suppression/sim-ses-suppression-commands.js.map +1 -0
  272. package/dist/service/ses/command/suppression/sim-ses-suppression-listing.d.ts +15 -0
  273. package/dist/service/ses/command/suppression/sim-ses-suppression-listing.d.ts.map +1 -0
  274. package/dist/service/ses/command/suppression/sim-ses-suppression-listing.js +29 -0
  275. package/dist/service/ses/command/suppression/sim-ses-suppression-listing.js.map +1 -0
  276. package/dist/service/ses/command/suppression/sim-ses-unsimulated-suppression-input.d.ts +9 -0
  277. package/dist/service/ses/command/suppression/sim-ses-unsimulated-suppression-input.d.ts.map +1 -0
  278. package/dist/service/ses/command/suppression/sim-ses-unsimulated-suppression-input.js +16 -0
  279. package/dist/service/ses/command/suppression/sim-ses-unsimulated-suppression-input.js.map +1 -0
  280. package/dist/service/ses/command/suppression/suppression.command.d.ts +90 -0
  281. package/dist/service/ses/command/suppression/suppression.command.d.ts.map +1 -0
  282. package/dist/service/ses/command/suppression/suppression.command.js +2 -0
  283. package/dist/service/ses/command/suppression/suppression.command.js.map +1 -0
  284. package/dist/service/ses/configuration-set/sim-ses-configuration-set-store.d.ts +44 -0
  285. package/dist/service/ses/configuration-set/sim-ses-configuration-set-store.d.ts.map +1 -0
  286. package/dist/service/ses/configuration-set/sim-ses-configuration-set-store.js +91 -0
  287. package/dist/service/ses/configuration-set/sim-ses-configuration-set-store.js.map +1 -0
  288. package/dist/service/ses/configuration-set/sim-ses-configuration-set.d.ts +75 -0
  289. package/dist/service/ses/configuration-set/sim-ses-configuration-set.d.ts.map +1 -0
  290. package/dist/service/ses/configuration-set/sim-ses-configuration-set.js +44 -0
  291. package/dist/service/ses/configuration-set/sim-ses-configuration-set.js.map +1 -0
  292. package/dist/service/ses/email/sim-ses-sent-email.d.ts +29 -0
  293. package/dist/service/ses/email/sim-ses-sent-email.d.ts.map +1 -1
  294. package/dist/service/ses/email/sim-ses-sent-email.js +21 -0
  295. package/dist/service/ses/email/sim-ses-sent-email.js.map +1 -1
  296. package/dist/service/ses/identity/sim-ses-dkim-tokens.d.ts.map +1 -0
  297. package/dist/service/ses/identity/sim-ses-dkim-tokens.js.map +1 -0
  298. package/dist/service/ses/identity/sim-ses-identity-name.d.ts +5 -0
  299. package/dist/service/ses/identity/sim-ses-identity-name.d.ts.map +1 -1
  300. package/dist/service/ses/identity/sim-ses-identity-name.js +5 -1
  301. package/dist/service/ses/identity/sim-ses-identity-name.js.map +1 -1
  302. package/dist/service/ses/identity/sim-ses-identity-settings.d.ts +64 -0
  303. package/dist/service/ses/identity/sim-ses-identity-settings.d.ts.map +1 -0
  304. package/dist/service/ses/identity/sim-ses-identity-settings.js +21 -0
  305. package/dist/service/ses/identity/sim-ses-identity-settings.js.map +1 -0
  306. package/dist/service/ses/identity/sim-ses-identity-store.d.ts +2 -1
  307. package/dist/service/ses/identity/sim-ses-identity-store.d.ts.map +1 -1
  308. package/dist/service/ses/identity/sim-ses-identity-store.js +2 -1
  309. package/dist/service/ses/identity/sim-ses-identity-store.js.map +1 -1
  310. package/dist/service/ses/identity/sim-ses-identity.d.ts +38 -0
  311. package/dist/service/ses/identity/sim-ses-identity.d.ts.map +1 -1
  312. package/dist/service/ses/identity/sim-ses-identity.js +54 -0
  313. package/dist/service/ses/identity/sim-ses-identity.js.map +1 -1
  314. package/dist/service/ses/index.d.ts +10 -3
  315. package/dist/service/ses/index.d.ts.map +1 -1
  316. package/dist/service/ses/index.js +7 -1
  317. package/dist/service/ses/index.js.map +1 -1
  318. package/dist/service/ses/sdk/sim-ses-sdk-command-router.d.ts.map +1 -1
  319. package/dist/service/ses/sdk/sim-ses-sdk-command-router.js +36 -0
  320. package/dist/service/ses/sdk/sim-ses-sdk-command-router.js.map +1 -1
  321. package/dist/service/ses/sim-ses-arn.d.ts +7 -0
  322. package/dist/service/ses/sim-ses-arn.d.ts.map +1 -1
  323. package/dist/service/ses/sim-ses-arn.js +9 -0
  324. package/dist/service/ses/sim-ses-arn.js.map +1 -1
  325. package/dist/service/ses/sim-ses-commands.d.ts +14 -0
  326. package/dist/service/ses/sim-ses-commands.d.ts.map +1 -1
  327. package/dist/service/ses/sim-ses-commands.js +47 -5
  328. package/dist/service/ses/sim-ses-commands.js.map +1 -1
  329. package/dist/service/ses/sim-ses-configuration-sets.d.ts +47 -0
  330. package/dist/service/ses/sim-ses-configuration-sets.d.ts.map +1 -0
  331. package/dist/service/ses/sim-ses-configuration-sets.js +60 -0
  332. package/dist/service/ses/sim-ses-configuration-sets.js.map +1 -0
  333. package/dist/service/ses/sim-ses-suppression.d.ts +52 -0
  334. package/dist/service/ses/sim-ses-suppression.d.ts.map +1 -0
  335. package/dist/service/ses/sim-ses-suppression.js +63 -0
  336. package/dist/service/ses/sim-ses-suppression.js.map +1 -0
  337. package/dist/service/ses/sim-ses-v2.d.ts +14 -1
  338. package/dist/service/ses/sim-ses-v2.d.ts.map +1 -1
  339. package/dist/service/ses/sim-ses-v2.js +48 -35
  340. package/dist/service/ses/sim-ses-v2.js.map +1 -1
  341. package/dist/service/ses/suppression/sim-ses-suppressed-destination.d.ts +24 -0
  342. package/dist/service/ses/suppression/sim-ses-suppressed-destination.d.ts.map +1 -0
  343. package/dist/service/ses/suppression/sim-ses-suppressed-destination.js +21 -0
  344. package/dist/service/ses/suppression/sim-ses-suppressed-destination.js.map +1 -0
  345. package/dist/service/ses/suppression/sim-ses-suppression-address.d.ts +9 -0
  346. package/dist/service/ses/suppression/sim-ses-suppression-address.d.ts.map +1 -0
  347. package/dist/service/ses/suppression/sim-ses-suppression-address.js +21 -0
  348. package/dist/service/ses/suppression/sim-ses-suppression-address.js.map +1 -0
  349. package/dist/service/ses/suppression/sim-ses-suppression-list.d.ts +57 -0
  350. package/dist/service/ses/suppression/sim-ses-suppression-list.d.ts.map +1 -0
  351. package/dist/service/ses/suppression/sim-ses-suppression-list.js +82 -0
  352. package/dist/service/ses/suppression/sim-ses-suppression-list.js.map +1 -0
  353. package/dist/service/ses/suppression/sim-ses-suppression-reason.d.ts +20 -0
  354. package/dist/service/ses/suppression/sim-ses-suppression-reason.d.ts.map +1 -0
  355. package/dist/service/ses/suppression/sim-ses-suppression-reason.js +24 -0
  356. package/dist/service/ses/suppression/sim-ses-suppression-reason.js.map +1 -0
  357. package/dist/service/sns/command/sim-sns-commands.d.ts +2 -0
  358. package/dist/service/sns/command/sim-sns-commands.d.ts.map +1 -1
  359. package/dist/service/sns/command/sim-sns-commands.js +4 -1
  360. package/dist/service/sns/command/sim-sns-commands.js.map +1 -1
  361. package/dist/service/sns/sim-sns.d.ts +7 -0
  362. package/dist/service/sns/sim-sns.d.ts.map +1 -1
  363. package/dist/service/sns/sim-sns.js +3 -1
  364. package/dist/service/sns/sim-sns.js.map +1 -1
  365. package/dist/service/sns/sms/sim-sns-sent-sms-store.d.ts +13 -0
  366. package/dist/service/sns/sms/sim-sns-sent-sms-store.d.ts.map +1 -1
  367. package/dist/service/sns/sms/sim-sns-sent-sms-store.js +15 -0
  368. package/dist/service/sns/sms/sim-sns-sent-sms-store.js.map +1 -1
  369. package/dist/terraform/index.d.ts +6 -0
  370. package/dist/terraform/index.d.ts.map +1 -0
  371. package/dist/terraform/index.js +2 -0
  372. package/dist/terraform/index.js.map +1 -0
  373. package/dist/terraform/map/sim-tf-map-cloudwatch-dimensions.d.ts +20 -0
  374. package/dist/terraform/map/sim-tf-map-cloudwatch-dimensions.d.ts.map +1 -0
  375. package/dist/terraform/map/sim-tf-map-cloudwatch-dimensions.js +36 -0
  376. package/dist/terraform/map/sim-tf-map-cloudwatch-dimensions.js.map +1 -0
  377. package/dist/terraform/map/sim-tf-map-cloudwatch.d.ts +12 -0
  378. package/dist/terraform/map/sim-tf-map-cloudwatch.d.ts.map +1 -0
  379. package/dist/terraform/map/sim-tf-map-cloudwatch.js +69 -0
  380. package/dist/terraform/map/sim-tf-map-cloudwatch.js.map +1 -0
  381. package/dist/terraform/map/sim-tf-map-cognito-client.d.ts +15 -0
  382. package/dist/terraform/map/sim-tf-map-cognito-client.d.ts.map +1 -0
  383. package/dist/terraform/map/sim-tf-map-cognito-client.js +37 -0
  384. package/dist/terraform/map/sim-tf-map-cognito-client.js.map +1 -0
  385. package/dist/terraform/map/sim-tf-map-cognito-pool.d.ts +26 -0
  386. package/dist/terraform/map/sim-tf-map-cognito-pool.d.ts.map +1 -0
  387. package/dist/terraform/map/sim-tf-map-cognito-pool.js +70 -0
  388. package/dist/terraform/map/sim-tf-map-cognito-pool.js.map +1 -0
  389. package/dist/terraform/map/sim-tf-map-cognito.d.ts +13 -0
  390. package/dist/terraform/map/sim-tf-map-cognito.d.ts.map +1 -0
  391. package/dist/terraform/map/sim-tf-map-cognito.js +39 -0
  392. package/dist/terraform/map/sim-tf-map-cognito.js.map +1 -0
  393. package/dist/terraform/map/sim-tf-map-dynamodb-keys.d.ts +31 -0
  394. package/dist/terraform/map/sim-tf-map-dynamodb-keys.d.ts.map +1 -0
  395. package/dist/{service/cloudformation/terraform/sim-tf-map-dynamodb.js → terraform/map/sim-tf-map-dynamodb-keys.js} +27 -30
  396. package/dist/terraform/map/sim-tf-map-dynamodb-keys.js.map +1 -0
  397. package/dist/terraform/map/sim-tf-map-dynamodb.d.ts +5 -0
  398. package/dist/terraform/map/sim-tf-map-dynamodb.d.ts.map +1 -0
  399. package/dist/terraform/map/sim-tf-map-dynamodb.js +31 -0
  400. package/dist/terraform/map/sim-tf-map-dynamodb.js.map +1 -0
  401. package/dist/terraform/map/sim-tf-map-ecr.d.ts +12 -0
  402. package/dist/terraform/map/sim-tf-map-ecr.d.ts.map +1 -0
  403. package/dist/terraform/map/sim-tf-map-ecr.js +34 -0
  404. package/dist/terraform/map/sim-tf-map-ecr.js.map +1 -0
  405. package/dist/terraform/map/sim-tf-map-events.d.ts +24 -0
  406. package/dist/terraform/map/sim-tf-map-events.d.ts.map +1 -0
  407. package/dist/terraform/map/sim-tf-map-events.js +151 -0
  408. package/dist/terraform/map/sim-tf-map-events.js.map +1 -0
  409. package/dist/terraform/map/sim-tf-map-http-api-routes.d.ts +10 -0
  410. package/dist/terraform/map/sim-tf-map-http-api-routes.d.ts.map +1 -0
  411. package/dist/{service/cloudformation/terraform/sim-tf-map-http-api-route.js → terraform/map/sim-tf-map-http-api-routes.js} +19 -3
  412. package/dist/terraform/map/sim-tf-map-http-api-routes.js.map +1 -0
  413. package/dist/terraform/map/sim-tf-map-http-api.d.ts +7 -0
  414. package/dist/terraform/map/sim-tf-map-http-api.d.ts.map +1 -0
  415. package/dist/{service/cloudformation/terraform → terraform/map}/sim-tf-map-http-api.js +3 -17
  416. package/dist/terraform/map/sim-tf-map-http-api.js.map +1 -0
  417. package/dist/terraform/map/sim-tf-map-iam-policy.d.ts +32 -0
  418. package/dist/terraform/map/sim-tf-map-iam-policy.d.ts.map +1 -0
  419. package/dist/terraform/map/sim-tf-map-iam-policy.js +85 -0
  420. package/dist/terraform/map/sim-tf-map-iam-policy.js.map +1 -0
  421. package/dist/{service/cloudformation/terraform → terraform/map}/sim-tf-map-iam.d.ts +2 -4
  422. package/dist/terraform/map/sim-tf-map-iam.d.ts.map +1 -0
  423. package/dist/terraform/map/sim-tf-map-iam.js +37 -0
  424. package/dist/terraform/map/sim-tf-map-iam.js.map +1 -0
  425. package/dist/terraform/map/sim-tf-map-kms.d.ts +25 -0
  426. package/dist/terraform/map/sim-tf-map-kms.d.ts.map +1 -0
  427. package/dist/terraform/map/sim-tf-map-kms.js +75 -0
  428. package/dist/terraform/map/sim-tf-map-kms.js.map +1 -0
  429. package/dist/terraform/map/sim-tf-map-lambda-environment.d.ts +20 -0
  430. package/dist/terraform/map/sim-tf-map-lambda-environment.d.ts.map +1 -0
  431. package/dist/terraform/map/sim-tf-map-lambda-environment.js +52 -0
  432. package/dist/terraform/map/sim-tf-map-lambda-environment.js.map +1 -0
  433. package/dist/{service/cloudformation/terraform → terraform/map}/sim-tf-map-lambda.d.ts +2 -2
  434. package/dist/terraform/map/sim-tf-map-lambda.d.ts.map +1 -0
  435. package/dist/{service/cloudformation/terraform → terraform/map}/sim-tf-map-lambda.js +19 -36
  436. package/dist/terraform/map/sim-tf-map-lambda.js.map +1 -0
  437. package/dist/terraform/map/sim-tf-map-logs.d.ts +12 -0
  438. package/dist/terraform/map/sim-tf-map-logs.d.ts.map +1 -0
  439. package/dist/terraform/map/sim-tf-map-logs.js +22 -0
  440. package/dist/terraform/map/sim-tf-map-logs.js.map +1 -0
  441. package/dist/{service/cloudformation/terraform → terraform/map}/sim-tf-map-s3-folds.d.ts +1 -1
  442. package/dist/terraform/map/sim-tf-map-s3-folds.d.ts.map +1 -0
  443. package/dist/{service/cloudformation/terraform → terraform/map}/sim-tf-map-s3-folds.js +2 -3
  444. package/dist/terraform/map/sim-tf-map-s3-folds.js.map +1 -0
  445. package/dist/terraform/map/sim-tf-map-s3-lifecycle.d.ts +4 -0
  446. package/dist/terraform/map/sim-tf-map-s3-lifecycle.d.ts.map +1 -0
  447. package/dist/terraform/map/sim-tf-map-s3-lifecycle.js +92 -0
  448. package/dist/terraform/map/sim-tf-map-s3-lifecycle.js.map +1 -0
  449. package/dist/terraform/map/sim-tf-map-s3-notification-destinations.d.ts +5 -0
  450. package/dist/terraform/map/sim-tf-map-s3-notification-destinations.d.ts.map +1 -0
  451. package/dist/terraform/map/sim-tf-map-s3-notification-destinations.js +30 -0
  452. package/dist/terraform/map/sim-tf-map-s3-notification-destinations.js.map +1 -0
  453. package/dist/terraform/map/sim-tf-map-s3-notification-filter.d.ts +12 -0
  454. package/dist/terraform/map/sim-tf-map-s3-notification-filter.d.ts.map +1 -0
  455. package/dist/terraform/map/sim-tf-map-s3-notification-filter.js +21 -0
  456. package/dist/terraform/map/sim-tf-map-s3-notification-filter.js.map +1 -0
  457. package/dist/terraform/map/sim-tf-map-s3-notification.d.ts +50 -0
  458. package/dist/terraform/map/sim-tf-map-s3-notification.d.ts.map +1 -0
  459. package/dist/terraform/map/sim-tf-map-s3-notification.js +80 -0
  460. package/dist/terraform/map/sim-tf-map-s3-notification.js.map +1 -0
  461. package/dist/terraform/map/sim-tf-map-s3-rules.d.ts +7 -0
  462. package/dist/terraform/map/sim-tf-map-s3-rules.d.ts.map +1 -0
  463. package/dist/{service/cloudformation/terraform/sim-tf-map-s3-encryption.js → terraform/map/sim-tf-map-s3-rules.js} +20 -3
  464. package/dist/terraform/map/sim-tf-map-s3-rules.js.map +1 -0
  465. package/dist/terraform/map/sim-tf-map-s3.d.ts +5 -0
  466. package/dist/terraform/map/sim-tf-map-s3.d.ts.map +1 -0
  467. package/dist/{service/cloudformation/terraform → terraform/map}/sim-tf-map-s3.js +1 -1
  468. package/dist/terraform/map/sim-tf-map-s3.js.map +1 -0
  469. package/dist/{service/cloudformation/terraform/sim-tf-map-config.d.ts → terraform/map/sim-tf-map-secretsmanager.d.ts} +3 -5
  470. package/dist/terraform/map/sim-tf-map-secretsmanager.d.ts.map +1 -0
  471. package/dist/{service/cloudformation/terraform/sim-tf-map-config.js → terraform/map/sim-tf-map-secretsmanager.js} +2 -14
  472. package/dist/terraform/map/sim-tf-map-secretsmanager.js.map +1 -0
  473. package/dist/{service/cloudformation/terraform → terraform/map}/sim-tf-map-sns.d.ts +2 -2
  474. package/dist/terraform/map/sim-tf-map-sns.d.ts.map +1 -0
  475. package/dist/{service/cloudformation/terraform → terraform/map}/sim-tf-map-sns.js +1 -1
  476. package/dist/terraform/map/sim-tf-map-sns.js.map +1 -0
  477. package/dist/terraform/map/sim-tf-map-sqs-redrive.d.ts +32 -0
  478. package/dist/terraform/map/sim-tf-map-sqs-redrive.d.ts.map +1 -0
  479. package/dist/terraform/map/sim-tf-map-sqs-redrive.js +68 -0
  480. package/dist/terraform/map/sim-tf-map-sqs-redrive.js.map +1 -0
  481. package/dist/terraform/map/sim-tf-map-sqs.d.ts +11 -0
  482. package/dist/terraform/map/sim-tf-map-sqs.d.ts.map +1 -0
  483. package/dist/terraform/map/sim-tf-map-sqs.js +26 -0
  484. package/dist/terraform/map/sim-tf-map-sqs.js.map +1 -0
  485. package/dist/terraform/map/sim-tf-map-ssm.d.ts +13 -0
  486. package/dist/terraform/map/sim-tf-map-ssm.d.ts.map +1 -0
  487. package/dist/terraform/map/sim-tf-map-ssm.js +24 -0
  488. package/dist/terraform/map/sim-tf-map-ssm.js.map +1 -0
  489. package/dist/terraform/sim-tf-adapter.d.ts +80 -0
  490. package/dist/terraform/sim-tf-adapter.d.ts.map +1 -0
  491. package/dist/terraform/sim-tf-adapter.js +44 -0
  492. package/dist/terraform/sim-tf-adapter.js.map +1 -0
  493. package/dist/terraform/sim-tf-attribute-reads.d.ts.map +1 -0
  494. package/dist/terraform/sim-tf-attribute-reads.js.map +1 -0
  495. package/dist/{service/cloudformation/terraform → terraform}/sim-tf-attributes.d.ts +13 -4
  496. package/dist/terraform/sim-tf-attributes.d.ts.map +1 -0
  497. package/dist/{service/cloudformation/terraform → terraform}/sim-tf-attributes.js +1 -1
  498. package/dist/terraform/sim-tf-attributes.js.map +1 -0
  499. package/dist/terraform/sim-tf-declare.d.ts +37 -0
  500. package/dist/terraform/sim-tf-declare.d.ts.map +1 -0
  501. package/dist/{service/cloudformation/terraform/sim-tf-template-graph.js → terraform/sim-tf-declare.js} +35 -23
  502. package/dist/terraform/sim-tf-declare.js.map +1 -0
  503. package/dist/terraform/sim-tf-fold.d.ts +26 -0
  504. package/dist/terraform/sim-tf-fold.d.ts.map +1 -0
  505. package/dist/terraform/sim-tf-fold.js +72 -0
  506. package/dist/terraform/sim-tf-fold.js.map +1 -0
  507. package/dist/terraform/sim-tf-import.d.ts +31 -0
  508. package/dist/terraform/sim-tf-import.d.ts.map +1 -0
  509. package/dist/terraform/sim-tf-import.js +38 -0
  510. package/dist/terraform/sim-tf-import.js.map +1 -0
  511. package/dist/terraform/sim-tf-logical-id.d.ts +27 -0
  512. package/dist/terraform/sim-tf-logical-id.d.ts.map +1 -0
  513. package/dist/terraform/sim-tf-logical-id.js +83 -0
  514. package/dist/terraform/sim-tf-logical-id.js.map +1 -0
  515. package/dist/terraform/sim-tf-mapping.type.d.ts +73 -0
  516. package/dist/terraform/sim-tf-mapping.type.d.ts.map +1 -0
  517. package/dist/terraform/sim-tf-mapping.type.js.map +1 -0
  518. package/dist/{service/cloudformation/terraform → terraform}/sim-tf-module-outputs.d.ts +1 -9
  519. package/dist/terraform/sim-tf-module-outputs.d.ts.map +1 -0
  520. package/dist/terraform/sim-tf-module-outputs.js +33 -0
  521. package/dist/terraform/sim-tf-module-outputs.js.map +1 -0
  522. package/dist/terraform/sim-tf-nested-attributes.d.ts +33 -0
  523. package/dist/terraform/sim-tf-nested-attributes.d.ts.map +1 -0
  524. package/dist/terraform/sim-tf-nested-attributes.js +97 -0
  525. package/dist/terraform/sim-tf-nested-attributes.js.map +1 -0
  526. package/dist/terraform/sim-tf-override.type.d.ts +36 -0
  527. package/dist/terraform/sim-tf-override.type.d.ts.map +1 -0
  528. package/dist/terraform/sim-tf-override.type.js +2 -0
  529. package/dist/terraform/sim-tf-override.type.js.map +1 -0
  530. package/dist/terraform/sim-tf-overrides.d.ts +21 -0
  531. package/dist/terraform/sim-tf-overrides.d.ts.map +1 -0
  532. package/dist/terraform/sim-tf-overrides.js +40 -0
  533. package/dist/terraform/sim-tf-overrides.js.map +1 -0
  534. package/dist/terraform/sim-tf-plan-file.d.ts +23 -0
  535. package/dist/terraform/sim-tf-plan-file.d.ts.map +1 -0
  536. package/dist/terraform/sim-tf-plan-file.js +58 -0
  537. package/dist/terraform/sim-tf-plan-file.js.map +1 -0
  538. package/dist/terraform/sim-tf-plan-resources.d.ts +18 -0
  539. package/dist/terraform/sim-tf-plan-resources.d.ts.map +1 -0
  540. package/dist/{service/cloudformation/terraform → terraform}/sim-tf-plan-resources.js +18 -10
  541. package/dist/terraform/sim-tf-plan-resources.js.map +1 -0
  542. package/dist/terraform/sim-tf-plan-sections.d.ts +31 -0
  543. package/dist/terraform/sim-tf-plan-sections.d.ts.map +1 -0
  544. package/dist/terraform/sim-tf-plan-sections.js +60 -0
  545. package/dist/terraform/sim-tf-plan-sections.js.map +1 -0
  546. package/dist/{service/cloudformation/terraform → terraform}/sim-tf-plan.type.d.ts +5 -1
  547. package/dist/terraform/sim-tf-plan.type.d.ts.map +1 -0
  548. package/dist/terraform/sim-tf-plan.type.js.map +1 -0
  549. package/dist/terraform/sim-tf-reference-address.d.ts +52 -0
  550. package/dist/terraform/sim-tf-reference-address.d.ts.map +1 -0
  551. package/dist/terraform/sim-tf-reference-address.js +102 -0
  552. package/dist/terraform/sim-tf-reference-address.js.map +1 -0
  553. package/dist/terraform/sim-tf-reference.d.ts +82 -0
  554. package/dist/terraform/sim-tf-reference.d.ts.map +1 -0
  555. package/dist/terraform/sim-tf-reference.js +153 -0
  556. package/dist/terraform/sim-tf-reference.js.map +1 -0
  557. package/dist/terraform/sim-tf-referenced.d.ts +18 -0
  558. package/dist/terraform/sim-tf-referenced.d.ts.map +1 -0
  559. package/dist/terraform/sim-tf-referenced.js +40 -0
  560. package/dist/terraform/sim-tf-referenced.js.map +1 -0
  561. package/dist/terraform/sim-tf-refusal.d.ts +23 -0
  562. package/dist/terraform/sim-tf-refusal.d.ts.map +1 -0
  563. package/dist/terraform/sim-tf-refusal.js +44 -0
  564. package/dist/terraform/sim-tf-refusal.js.map +1 -0
  565. package/dist/{service/cloudformation/terraform → terraform}/sim-tf-registry.d.ts +2 -1
  566. package/dist/terraform/sim-tf-registry.d.ts.map +1 -0
  567. package/dist/terraform/sim-tf-registry.js +67 -0
  568. package/dist/terraform/sim-tf-registry.js.map +1 -0
  569. package/dist/terraform/sim-tf-report.d.ts +21 -0
  570. package/dist/terraform/sim-tf-report.d.ts.map +1 -0
  571. package/dist/terraform/sim-tf-report.js +57 -0
  572. package/dist/terraform/sim-tf-report.js.map +1 -0
  573. package/dist/{service/cloudformation/terraform → terraform}/sim-tf-report.type.d.ts +10 -4
  574. package/dist/terraform/sim-tf-report.type.d.ts.map +1 -0
  575. package/dist/terraform/sim-tf-report.type.js.map +1 -0
  576. package/dist/{service/cloudformation/terraform/sim-tf-plan-resources.d.ts → terraform/sim-tf-resource.type.d.ts} +6 -12
  577. package/dist/terraform/sim-tf-resource.type.d.ts.map +1 -0
  578. package/dist/terraform/sim-tf-resource.type.js +3 -0
  579. package/dist/terraform/sim-tf-resource.type.js.map +1 -0
  580. package/dist/terraform/sim-tf-settle.d.ts +36 -0
  581. package/dist/terraform/sim-tf-settle.d.ts.map +1 -0
  582. package/dist/terraform/sim-tf-settle.js +63 -0
  583. package/dist/terraform/sim-tf-settle.js.map +1 -0
  584. package/dist/util/filesystem/test-terraform-project.d.ts +11 -0
  585. package/dist/util/filesystem/test-terraform-project.d.ts.map +1 -1
  586. package/dist/util/filesystem/test-terraform-project.js +30 -1
  587. package/dist/util/filesystem/test-terraform-project.js.map +1 -1
  588. package/package.json +5 -1
  589. package/dist/service/cloudformation/resource/cfn/ses/sim-ses-dkim-tokens.d.ts.map +0 -1
  590. package/dist/service/cloudformation/resource/cfn/ses/sim-ses-dkim-tokens.js.map +0 -1
  591. package/dist/service/cloudformation/terraform/sim-tf-attribute-reads.d.ts.map +0 -1
  592. package/dist/service/cloudformation/terraform/sim-tf-attribute-reads.js.map +0 -1
  593. package/dist/service/cloudformation/terraform/sim-tf-attributes.d.ts.map +0 -1
  594. package/dist/service/cloudformation/terraform/sim-tf-attributes.js.map +0 -1
  595. package/dist/service/cloudformation/terraform/sim-tf-map-config.d.ts.map +0 -1
  596. package/dist/service/cloudformation/terraform/sim-tf-map-config.js.map +0 -1
  597. package/dist/service/cloudformation/terraform/sim-tf-map-dynamodb.d.ts +0 -15
  598. package/dist/service/cloudformation/terraform/sim-tf-map-dynamodb.d.ts.map +0 -1
  599. package/dist/service/cloudformation/terraform/sim-tf-map-dynamodb.js.map +0 -1
  600. package/dist/service/cloudformation/terraform/sim-tf-map-http-api-route.d.ts +0 -5
  601. package/dist/service/cloudformation/terraform/sim-tf-map-http-api-route.d.ts.map +0 -1
  602. package/dist/service/cloudformation/terraform/sim-tf-map-http-api-route.js.map +0 -1
  603. package/dist/service/cloudformation/terraform/sim-tf-map-http-api.d.ts +0 -12
  604. package/dist/service/cloudformation/terraform/sim-tf-map-http-api.d.ts.map +0 -1
  605. package/dist/service/cloudformation/terraform/sim-tf-map-http-api.js.map +0 -1
  606. package/dist/service/cloudformation/terraform/sim-tf-map-iam.d.ts.map +0 -1
  607. package/dist/service/cloudformation/terraform/sim-tf-map-iam.js +0 -80
  608. package/dist/service/cloudformation/terraform/sim-tf-map-iam.js.map +0 -1
  609. package/dist/service/cloudformation/terraform/sim-tf-map-lambda.d.ts.map +0 -1
  610. package/dist/service/cloudformation/terraform/sim-tf-map-lambda.js.map +0 -1
  611. package/dist/service/cloudformation/terraform/sim-tf-map-s3-cors.d.ts +0 -5
  612. package/dist/service/cloudformation/terraform/sim-tf-map-s3-cors.d.ts.map +0 -1
  613. package/dist/service/cloudformation/terraform/sim-tf-map-s3-cors.js +0 -12
  614. package/dist/service/cloudformation/terraform/sim-tf-map-s3-cors.js.map +0 -1
  615. package/dist/service/cloudformation/terraform/sim-tf-map-s3-encryption.d.ts +0 -5
  616. package/dist/service/cloudformation/terraform/sim-tf-map-s3-encryption.d.ts.map +0 -1
  617. package/dist/service/cloudformation/terraform/sim-tf-map-s3-encryption.js.map +0 -1
  618. package/dist/service/cloudformation/terraform/sim-tf-map-s3-folds.d.ts.map +0 -1
  619. package/dist/service/cloudformation/terraform/sim-tf-map-s3-folds.js.map +0 -1
  620. package/dist/service/cloudformation/terraform/sim-tf-map-s3.d.ts +0 -5
  621. package/dist/service/cloudformation/terraform/sim-tf-map-s3.d.ts.map +0 -1
  622. package/dist/service/cloudformation/terraform/sim-tf-map-s3.js.map +0 -1
  623. package/dist/service/cloudformation/terraform/sim-tf-map-sns.d.ts.map +0 -1
  624. package/dist/service/cloudformation/terraform/sim-tf-map-sns.js.map +0 -1
  625. package/dist/service/cloudformation/terraform/sim-tf-map-sqs.d.ts +0 -5
  626. package/dist/service/cloudformation/terraform/sim-tf-map-sqs.d.ts.map +0 -1
  627. package/dist/service/cloudformation/terraform/sim-tf-map-sqs.js +0 -56
  628. package/dist/service/cloudformation/terraform/sim-tf-map-sqs.js.map +0 -1
  629. package/dist/service/cloudformation/terraform/sim-tf-mapping.type.d.ts +0 -41
  630. package/dist/service/cloudformation/terraform/sim-tf-mapping.type.d.ts.map +0 -1
  631. package/dist/service/cloudformation/terraform/sim-tf-mapping.type.js.map +0 -1
  632. package/dist/service/cloudformation/terraform/sim-tf-module-outputs.d.ts.map +0 -1
  633. package/dist/service/cloudformation/terraform/sim-tf-module-outputs.js +0 -63
  634. package/dist/service/cloudformation/terraform/sim-tf-module-outputs.js.map +0 -1
  635. package/dist/service/cloudformation/terraform/sim-tf-plan-index.d.ts +0 -26
  636. package/dist/service/cloudformation/terraform/sim-tf-plan-index.d.ts.map +0 -1
  637. package/dist/service/cloudformation/terraform/sim-tf-plan-index.js +0 -45
  638. package/dist/service/cloudformation/terraform/sim-tf-plan-index.js.map +0 -1
  639. package/dist/service/cloudformation/terraform/sim-tf-plan-resources.d.ts.map +0 -1
  640. package/dist/service/cloudformation/terraform/sim-tf-plan-resources.js.map +0 -1
  641. package/dist/service/cloudformation/terraform/sim-tf-plan.type.d.ts.map +0 -1
  642. package/dist/service/cloudformation/terraform/sim-tf-plan.type.js.map +0 -1
  643. package/dist/service/cloudformation/terraform/sim-tf-reference-address.d.ts +0 -27
  644. package/dist/service/cloudformation/terraform/sim-tf-reference-address.d.ts.map +0 -1
  645. package/dist/service/cloudformation/terraform/sim-tf-reference-address.js +0 -58
  646. package/dist/service/cloudformation/terraform/sim-tf-reference-address.js.map +0 -1
  647. package/dist/service/cloudformation/terraform/sim-tf-reference.d.ts +0 -64
  648. package/dist/service/cloudformation/terraform/sim-tf-reference.d.ts.map +0 -1
  649. package/dist/service/cloudformation/terraform/sim-tf-reference.js +0 -122
  650. package/dist/service/cloudformation/terraform/sim-tf-reference.js.map +0 -1
  651. package/dist/service/cloudformation/terraform/sim-tf-registry.d.ts.map +0 -1
  652. package/dist/service/cloudformation/terraform/sim-tf-registry.js +0 -40
  653. package/dist/service/cloudformation/terraform/sim-tf-registry.js.map +0 -1
  654. package/dist/service/cloudformation/terraform/sim-tf-report.type.d.ts.map +0 -1
  655. package/dist/service/cloudformation/terraform/sim-tf-report.type.js.map +0 -1
  656. package/dist/service/cloudformation/terraform/sim-tf-template-folds.d.ts +0 -20
  657. package/dist/service/cloudformation/terraform/sim-tf-template-folds.d.ts.map +0 -1
  658. package/dist/service/cloudformation/terraform/sim-tf-template-folds.js +0 -28
  659. package/dist/service/cloudformation/terraform/sim-tf-template-folds.js.map +0 -1
  660. package/dist/service/cloudformation/terraform/sim-tf-template-graph.d.ts +0 -29
  661. package/dist/service/cloudformation/terraform/sim-tf-template-graph.d.ts.map +0 -1
  662. package/dist/service/cloudformation/terraform/sim-tf-template-graph.js.map +0 -1
  663. package/dist/service/cloudformation/terraform/sim-tf-template-mappings.d.ts +0 -23
  664. package/dist/service/cloudformation/terraform/sim-tf-template-mappings.d.ts.map +0 -1
  665. package/dist/service/cloudformation/terraform/sim-tf-template-mappings.js +0 -72
  666. package/dist/service/cloudformation/terraform/sim-tf-template-mappings.js.map +0 -1
  667. package/dist/service/cloudformation/terraform/sim-tf-template-merge.d.ts +0 -21
  668. package/dist/service/cloudformation/terraform/sim-tf-template-merge.d.ts.map +0 -1
  669. package/dist/service/cloudformation/terraform/sim-tf-template-merge.js +0 -33
  670. package/dist/service/cloudformation/terraform/sim-tf-template-merge.js.map +0 -1
  671. package/dist/service/cloudformation/terraform/sim-tf-template-prune.d.ts +0 -21
  672. package/dist/service/cloudformation/terraform/sim-tf-template-prune.d.ts.map +0 -1
  673. package/dist/service/cloudformation/terraform/sim-tf-template-prune.js +0 -51
  674. package/dist/service/cloudformation/terraform/sim-tf-template-prune.js.map +0 -1
  675. package/dist/service/cloudformation/terraform/sim-tf-template-pruned.d.ts +0 -18
  676. package/dist/service/cloudformation/terraform/sim-tf-template-pruned.d.ts.map +0 -1
  677. package/dist/service/cloudformation/terraform/sim-tf-template-pruned.js +0 -23
  678. package/dist/service/cloudformation/terraform/sim-tf-template-pruned.js.map +0 -1
  679. package/dist/service/cloudformation/terraform/sim-tf-template-references.d.ts +0 -10
  680. package/dist/service/cloudformation/terraform/sim-tf-template-references.d.ts.map +0 -1
  681. package/dist/service/cloudformation/terraform/sim-tf-template-references.js +0 -39
  682. package/dist/service/cloudformation/terraform/sim-tf-template-references.js.map +0 -1
  683. package/dist/service/cloudformation/terraform/sim-tf-template-resolver.d.ts +0 -12
  684. package/dist/service/cloudformation/terraform/sim-tf-template-resolver.d.ts.map +0 -1
  685. package/dist/service/cloudformation/terraform/sim-tf-template-resolver.js +0 -17
  686. package/dist/service/cloudformation/terraform/sim-tf-template-resolver.js.map +0 -1
  687. package/dist/service/cloudformation/terraform/sim-tf-template.d.ts +0 -26
  688. package/dist/service/cloudformation/terraform/sim-tf-template.d.ts.map +0 -1
  689. package/dist/service/cloudformation/terraform/sim-tf-template.js +0 -54
  690. package/dist/service/cloudformation/terraform/sim-tf-template.js.map +0 -1
  691. package/dist/service/ses/cfn/identity/sim-cfn-ses-identity-unsimulated-properties.d.ts +0 -17
  692. package/dist/service/ses/cfn/identity/sim-cfn-ses-identity-unsimulated-properties.d.ts.map +0 -1
  693. package/dist/service/ses/cfn/identity/sim-cfn-ses-identity-unsimulated-properties.js +0 -48
  694. package/dist/service/ses/cfn/identity/sim-cfn-ses-identity-unsimulated-properties.js.map +0 -1
  695. package/dist/service/ses/command/identity/sim-ses-unsimulated-identity-input.d.ts +0 -12
  696. package/dist/service/ses/command/identity/sim-ses-unsimulated-identity-input.d.ts.map +0 -1
  697. package/dist/service/ses/command/identity/sim-ses-unsimulated-identity-input.js +0 -26
  698. package/dist/service/ses/command/identity/sim-ses-unsimulated-identity-input.js.map +0 -1
  699. /package/dist/service/{cloudformation/resource/cfn/ses → ses/identity}/sim-ses-dkim-tokens.d.ts +0 -0
  700. /package/dist/service/{cloudformation/resource/cfn/ses → ses/identity}/sim-ses-dkim-tokens.js +0 -0
  701. /package/dist/{service/cloudformation/terraform → terraform}/sim-tf-attribute-reads.d.ts +0 -0
  702. /package/dist/{service/cloudformation/terraform → terraform}/sim-tf-attribute-reads.js +0 -0
  703. /package/dist/{service/cloudformation/terraform → terraform}/sim-tf-mapping.type.js +0 -0
  704. /package/dist/{service/cloudformation/terraform → terraform}/sim-tf-plan.type.js +0 -0
  705. /package/dist/{service/cloudformation/terraform → terraform}/sim-tf-report.type.js +0 -0
@@ -4,29 +4,41 @@
4
4
  * lookup. The records are parsed JSON with no prototype of their own.
5
5
  */
6
6
  // oxlint-disable security/detect-object-injection
7
- import { isRecord } from "../../../util/type-guard/record.js";
8
- import { terraformLogicalId, } from "./sim-tf-reference.js";
9
- import { longestFirst } from "./sim-tf-reference-address.js";
7
+ import { isRecord } from "../util/type-guard/record.js";
10
8
  /**
11
- * The logical ID of the resource a fold belongs to.
9
+ * Build one CloudFormation Resource for each resource the plan settled on.
12
10
  *
13
- * The fold's parent attribute holds a reference rather than a value, because a
14
- * bucket or a role being created by the same plan has no name until it exists.
15
- * The reference names the resource directly, which is what a fold needs.
11
+ * Every reference resolves against that same settled set, so this runs once
12
+ * and nothing it produces is taken back afterwards.
16
13
  */
17
- export function foldTargetLogicalId(resource, parentAttribute, resolver) {
18
- const expression = resource.expressions[parentAttribute];
19
- if (!isRecord(expression)) {
20
- return undefined;
14
+ export function terraformDeclaredResources(settled) {
15
+ const templates = new Map();
16
+ const mapped = [];
17
+ const lost = [];
18
+ for (const { resource, mapping } of settled.declared) {
19
+ const built = mapping({
20
+ resource,
21
+ resolver: settled.resolver,
22
+ overrides: settled.overrides,
23
+ });
24
+ const logicalId = settled.resolver.logicalId(resource.address);
25
+ templates.set(logicalId, {
26
+ Type: built.Type,
27
+ Properties: built.Properties,
28
+ ...terraformDependsOn(resource, settled.resolver),
29
+ });
30
+ mapped.push({
31
+ address: resource.address,
32
+ type: resource.type,
33
+ cfnType: built.Type,
34
+ logicalId,
35
+ });
36
+ lost.push(...(built.lost ?? []).map((attribute) => ({
37
+ address: resource.address,
38
+ attribute,
39
+ })));
21
40
  }
22
- const references = longestFirst(expression.references ?? []);
23
- for (const reference of references) {
24
- const address = resolver.targetAddress(reference, resource.modulePath);
25
- if (address !== undefined) {
26
- return terraformLogicalId(address);
27
- }
28
- }
29
- return undefined;
41
+ return { templates, mapped, lost };
30
42
  }
31
43
  /**
32
44
  * The Resources one Resource has to be created after.
@@ -43,15 +55,15 @@ export function foldTargetLogicalId(resource, parentAttribute, resolver) {
43
55
  * into `DependsOn` gives the Stack the graph it would have read off a template
44
56
  * written by hand.
45
57
  */
46
- export function dependsOn(resource, resolver) {
47
- const own = terraformLogicalId(resource.address);
58
+ export function terraformDependsOn(resource, resolver) {
59
+ const own = resolver.logicalId(resource.address);
48
60
  const referenced = [
49
61
  ...resource.dependsOn,
50
62
  ...expressionReferences(resource.expressions),
51
63
  ]
52
64
  .map((reference) => resolver.targetAddress(reference, resource.modulePath))
53
65
  .filter((address) => address !== undefined)
54
- .map((address) => terraformLogicalId(address))
66
+ .map((address) => resolver.logicalId(address))
55
67
  .filter((logicalId) => logicalId !== own);
56
68
  const declared = [...new Set(referenced)];
57
69
  return declared.length === 0 ? {} : { DependsOn: declared };
@@ -68,4 +80,4 @@ function expressionReferences(value) {
68
80
  ? nested.filter((entry) => typeof entry === "string")
69
81
  : expressionReferences(nested));
70
82
  }
71
- //# sourceMappingURL=sim-tf-template-graph.js.map
83
+ //# sourceMappingURL=sim-tf-declare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-tf-declare.js","sourceRoot":"","sources":["../../src/terraform/sim-tf-declare.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,kDAAkD;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAiBxD;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CACxC,OAA6B;IAE7B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAqC,CAAC;IAC/D,MAAM,MAAM,GAAgC,EAAE,CAAC;IAC/C,MAAM,IAAI,GAA6B,EAAE,CAAC;IAE1C,KAAK,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrD,MAAM,KAAK,GAAG,OAAO,CAAC;YACpB,QAAQ;YACR,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAE/D,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE;YACvB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,GAAG,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC;SAClD,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC;YACV,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,OAAO,EAAE,KAAK,CAAC,IAAI;YACnB,SAAS;SACV,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CACP,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YACxC,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,SAAS;SACV,CAAC,CAAC,CACJ,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AACrC,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAA2B,EAC3B,QAAoC;IAEpC,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAEjD,MAAM,UAAU,GAAG;QACjB,GAAG,QAAQ,CAAC,SAAS;QACrB,GAAG,oBAAoB,CAAC,QAAQ,CAAC,WAAW,CAAC;KAC9C;SACE,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;SAC1E,MAAM,CAAC,CAAC,OAAO,EAAqB,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC;SAC7D,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;SAC7C,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,KAAK,GAAG,CAAC,CAAC;IAE5C,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IAE1C,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AAC9D,CAAC;AAED,yEAAyE;AACzE,SAAS,oBAAoB,CAAC,KAAc;IAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,CACrD,GAAG,KAAK,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAC3C,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC;QACtE,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,CACjC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { SimCfnTemplateValueRecord } from "../service/cloudformation/template/value/sim-cfn-template-value.js";
2
+ import { type TerraformResource } from "./sim-tf-resource.type.js";
3
+ import type { TerraformReferenceResolver } from "./sim-tf-reference.js";
4
+ import type { TerraformPlanOverrides } from "./sim-tf-overrides.js";
5
+ import type { TerraformImportedResource, TerraformLostAttribute, TerraformSkippedResource } from "./sim-tf-report.type.js";
6
+ /** The template with every folding resource merged into what it configures. */
7
+ export interface TerraformFoldedResources {
8
+ readonly templates: ReadonlyMap<string, SimCfnTemplateValueRecord>;
9
+ readonly folded: readonly TerraformImportedResource[];
10
+ readonly skipped: readonly TerraformSkippedResource[];
11
+ readonly lost: readonly TerraformLostAttribute[];
12
+ }
13
+ /**
14
+ * Merge every folding resource into the Resource it configures.
15
+ *
16
+ * The AWS provider splits one CloudFormation Resource across several Terraform
17
+ * resources. Six `aws_s3_bucket_*` resources configure one bucket, and
18
+ * CloudFormation carries all six as properties of one `AWS::S3::Bucket`.
19
+ *
20
+ * This runs after the Resources are declared, because a fold has nothing to
21
+ * merge into until its parent is in the template. A fold whose parent is not
22
+ * there is recorded rather than dropped, so the report still adds up to the
23
+ * plan.
24
+ */
25
+ export declare function terraformFoldedResources(resources: readonly TerraformResource[], templates: ReadonlyMap<string, SimCfnTemplateValueRecord>, resolver: TerraformReferenceResolver, overrides: TerraformPlanOverrides): TerraformFoldedResources;
26
+ //# sourceMappingURL=sim-tf-fold.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-tf-fold.d.ts","sourceRoot":"","sources":["../../src/terraform/sim-tf-fold.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oEAAoE,CAAC;AACpH,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAExE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAEpE,OAAO,KAAK,EACV,yBAAyB,EACzB,sBAAsB,EACtB,wBAAwB,EACzB,MAAM,yBAAyB,CAAC;AAEjC,+EAA+E;AAC/E,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IACnE,QAAQ,CAAC,MAAM,EAAE,SAAS,yBAAyB,EAAE,CAAC;IACtD,QAAQ,CAAC,OAAO,EAAE,SAAS,wBAAwB,EAAE,CAAC;IACtD,QAAQ,CAAC,IAAI,EAAE,SAAS,sBAAsB,EAAE,CAAC;CAClD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,SAAS,iBAAiB,EAAE,EACvC,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,yBAAyB,CAAC,EACzD,QAAQ,EAAE,0BAA0B,EACpC,SAAS,EAAE,sBAAsB,GAChC,wBAAwB,CA8C1B"}
@@ -0,0 +1,72 @@
1
+ /*
2
+ * Reading a plan means reading records whose keys come from the document
3
+ * rather than from this code, so the object-injection rule fires on every
4
+ * lookup. The records are parsed JSON with no prototype of their own.
5
+ */
6
+ // oxlint-disable security/detect-object-injection
7
+ import { isRecord } from "../util/type-guard/record.js";
8
+ import { terraformAwsProvider, } from "./sim-tf-resource.type.js";
9
+ import { terraformReferencedAddress } from "./sim-tf-referenced.js";
10
+ import { terraformResourceFolds } from "./sim-tf-registry.js";
11
+ /**
12
+ * Merge every folding resource into the Resource it configures.
13
+ *
14
+ * The AWS provider splits one CloudFormation Resource across several Terraform
15
+ * resources. Six `aws_s3_bucket_*` resources configure one bucket, and
16
+ * CloudFormation carries all six as properties of one `AWS::S3::Bucket`.
17
+ *
18
+ * This runs after the Resources are declared, because a fold has nothing to
19
+ * merge into until its parent is in the template. A fold whose parent is not
20
+ * there is recorded rather than dropped, so the report still adds up to the
21
+ * plan.
22
+ */
23
+ export function terraformFoldedResources(resources, templates, resolver, overrides) {
24
+ const merged = new Map(templates);
25
+ const folded = [];
26
+ const skipped = [];
27
+ const lost = [];
28
+ for (const resource of resources) {
29
+ const fold = terraformResourceFolds.get(resource.type);
30
+ if (fold === undefined || resource.provider !== terraformAwsProvider) {
31
+ continue;
32
+ }
33
+ const address = terraformReferencedAddress(resource, fold.parentAttribute, resolver);
34
+ const parentId = address === undefined ? undefined : resolver.logicalId(address);
35
+ const parent = parentId === undefined ? undefined : merged.get(parentId);
36
+ if (parentId === undefined || parent === undefined) {
37
+ skipped.push({
38
+ address: resource.address,
39
+ type: resource.type,
40
+ reason: "fold target not found",
41
+ });
42
+ continue;
43
+ }
44
+ const context = { resource, resolver, overrides };
45
+ const existing = parent["Properties"];
46
+ const added = fold.properties(context, isRecord(existing) ? existing : {});
47
+ merged.set(parentId, mergedParent(parent, added));
48
+ folded.push({ address: resource.address, type: resource.type });
49
+ lost.push(...(fold.lost?.(context) ?? []).map((attribute) => ({
50
+ address: resource.address,
51
+ attribute,
52
+ })));
53
+ }
54
+ return { templates: merged, folded, skipped, lost };
55
+ }
56
+ /**
57
+ * A resource template with a fold's properties merged into it.
58
+ *
59
+ * The fold contributes whole CloudFormation properties, so a later fold on the
60
+ * same parent replaces a property an earlier one set rather than merging into
61
+ * it. Two folds writing the same property are two of one Terraform type, and a
62
+ * fold whose property is a list is handed what the parent already carries so
63
+ * it can add to it.
64
+ */
65
+ function mergedParent(parent, added) {
66
+ const existing = parent["Properties"];
67
+ return {
68
+ ...parent,
69
+ Properties: { ...(isRecord(existing) && existing), ...added },
70
+ };
71
+ }
72
+ //# sourceMappingURL=sim-tf-fold.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-tf-fold.js","sourceRoot":"","sources":["../../src/terraform/sim-tf-fold.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { CfnTemplateBodyRecord } from "../service/cloudformation/template/sim-cfn-template.js";
2
+ import type { TerraformPlan } from "./sim-tf-plan.type.js";
3
+ import type { TerraformPlanOverride } from "./sim-tf-override.type.js";
4
+ import type { TerraformImportReport } from "./sim-tf-report.type.js";
5
+ /** A CloudFormation template built from a plan, and what building it did. */
6
+ export interface TerraformImportResult {
7
+ readonly template: CfnTemplateBodyRecord;
8
+ readonly report: TerraformImportReport;
9
+ }
10
+ /**
11
+ * A CloudFormation template body built from a Terraform plan.
12
+ *
13
+ * The plan is the JSON `terraform show -json` writes for a saved plan file.
14
+ * What comes back is the body `deployTemplate` takes, so everything below the
15
+ * template is the machinery a CloudFormation, CDK or SAM deployment already
16
+ * goes through.
17
+ *
18
+ * It is read in three passes. Settling decides which resources the template
19
+ * will declare, and it is what makes the two after it single passes. Every
20
+ * reference then resolves against a set that has stopped changing, so no
21
+ * Resource is built and then taken back, and no property is left naming a
22
+ * logical ID the template does not hold. Declaring builds those Resources.
23
+ * Folding merges in the resources that configure another resource.
24
+ *
25
+ * The report alongside the template says what happened to every resource of
26
+ * the plan. A type with no mapping is skipped and named, in the same spirit as
27
+ * the skipped Resources a Stack records for a CloudFormation type no simulated
28
+ * service models.
29
+ */
30
+ export declare function cfnTemplateFromTerraformPlan(plan: TerraformPlan, supplied?: readonly TerraformPlanOverride[]): TerraformImportResult;
31
+ //# sourceMappingURL=sim-tf-import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-tf-import.d.ts","sourceRoot":"","sources":["../../src/terraform/sim-tf-import.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAC;AACpG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAO3D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAErE,6EAA6E;AAC7E,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;CACxC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,aAAa,EACnB,QAAQ,GAAE,SAAS,qBAAqB,EAAO,GAC9C,qBAAqB,CAgBvB"}
@@ -0,0 +1,38 @@
1
+ import { terraformPlanResources } from "./sim-tf-plan-resources.js";
2
+ import { settledTerraformPlan } from "./sim-tf-settle.js";
3
+ import { terraformDeclaredResources } from "./sim-tf-declare.js";
4
+ import { terraformFoldedResources } from "./sim-tf-fold.js";
5
+ import { terraformImportReport } from "./sim-tf-report.js";
6
+ import { TerraformPlanOverrides } from "./sim-tf-overrides.js";
7
+ /**
8
+ * A CloudFormation template body built from a Terraform plan.
9
+ *
10
+ * The plan is the JSON `terraform show -json` writes for a saved plan file.
11
+ * What comes back is the body `deployTemplate` takes, so everything below the
12
+ * template is the machinery a CloudFormation, CDK or SAM deployment already
13
+ * goes through.
14
+ *
15
+ * It is read in three passes. Settling decides which resources the template
16
+ * will declare, and it is what makes the two after it single passes. Every
17
+ * reference then resolves against a set that has stopped changing, so no
18
+ * Resource is built and then taken back, and no property is left naming a
19
+ * logical ID the template does not hold. Declaring builds those Resources.
20
+ * Folding merges in the resources that configure another resource.
21
+ *
22
+ * The report alongside the template says what happened to every resource of
23
+ * the plan. A type with no mapping is skipped and named, in the same spirit as
24
+ * the skipped Resources a Stack records for a CloudFormation type no simulated
25
+ * service models.
26
+ */
27
+ export function cfnTemplateFromTerraformPlan(plan, supplied = []) {
28
+ const overrides = new TerraformPlanOverrides(supplied);
29
+ const resources = terraformPlanResources(plan);
30
+ const settled = settledTerraformPlan(plan, resources, overrides);
31
+ const declared = terraformDeclaredResources(settled);
32
+ const folded = terraformFoldedResources(resources, declared.templates, settled.resolver, overrides);
33
+ return {
34
+ template: { Resources: Object.fromEntries(folded.templates) },
35
+ report: terraformImportReport({ resources, settled, declared, folded }),
36
+ };
37
+ }
38
+ //# sourceMappingURL=sim-tf-import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-tf-import.js","sourceRoot":"","sources":["../../src/terraform/sim-tf-import.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAU/D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,4BAA4B,CAC1C,IAAmB,EACnB,QAAQ,GAAqC,EAAE;IAE/C,MAAM,SAAS,GAAG,IAAI,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,wBAAwB,CACrC,SAAS,EACT,QAAQ,CAAC,SAAS,EAClB,OAAO,CAAC,QAAQ,EAChB,SAAS,CACV,CAAC;IAEF,OAAO;QACL,QAAQ,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;QAC7D,MAAM,EAAE,qBAAqB,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;KACxE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * The CloudFormation logical IDs standing for the addresses of one plan.
3
+ *
4
+ * A logical ID is alphanumeric, so the module path, the resource type, the
5
+ * name and any `count` or `for_each` key are folded into one camel-run.
6
+ * Folding loses the separators, and two addresses can therefore arrive at the
7
+ * same run. `aws_s3_bucket.foo_bar` and `aws_s3_bucket.fooBar` both give
8
+ * `AwsS3BucketFooBar`, and so do the `for_each` keys `a-b` and `a_b`.
9
+ *
10
+ * The addresses of a plan are named together rather than one at a time, so a
11
+ * collision can be given a number instead of refusing the plan. Addresses are
12
+ * sorted before they are named, so which of a colliding pair keeps the plain
13
+ * ID is decided by the plan rather than by the order the resources were read
14
+ * in.
15
+ */
16
+ export declare class TerraformLogicalIds {
17
+ private readonly byAddress;
18
+ constructor(addresses: Iterable<string>);
19
+ /**
20
+ * The logical ID standing for one address.
21
+ *
22
+ * An address this was not built with is named as though it stood alone,
23
+ * which is what a caller asking about a resource outside the template wants.
24
+ */
25
+ of(address: string): string;
26
+ }
27
+ //# sourceMappingURL=sim-tf-logical-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-tf-logical-id.d.ts","sourceRoot":"","sources":["../../src/terraform/sim-tf-logical-id.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8B;IAExD,YAAY,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,EAEtC;IAED;;;;;OAKG;IACI,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEjC;CACF"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * The CloudFormation logical IDs standing for the addresses of one plan.
3
+ *
4
+ * A logical ID is alphanumeric, so the module path, the resource type, the
5
+ * name and any `count` or `for_each` key are folded into one camel-run.
6
+ * Folding loses the separators, and two addresses can therefore arrive at the
7
+ * same run. `aws_s3_bucket.foo_bar` and `aws_s3_bucket.fooBar` both give
8
+ * `AwsS3BucketFooBar`, and so do the `for_each` keys `a-b` and `a_b`.
9
+ *
10
+ * The addresses of a plan are named together rather than one at a time, so a
11
+ * collision can be given a number instead of refusing the plan. Addresses are
12
+ * sorted before they are named, so which of a colliding pair keeps the plain
13
+ * ID is decided by the plan rather than by the order the resources were read
14
+ * in.
15
+ */
16
+ export class TerraformLogicalIds {
17
+ byAddress;
18
+ constructor(addresses) {
19
+ this.byAddress = namedAddresses([...addresses].toSorted(byCodeUnit));
20
+ }
21
+ /**
22
+ * The logical ID standing for one address.
23
+ *
24
+ * An address this was not built with is named as though it stood alone,
25
+ * which is what a caller asking about a resource outside the template wants.
26
+ */
27
+ of(address) {
28
+ return this.byAddress.get(address) ?? camelRun(address);
29
+ }
30
+ }
31
+ /**
32
+ * Address order by code unit, over addresses that are already distinct.
33
+ *
34
+ * Which of a colliding pair keeps the plain logical ID follows from this, so
35
+ * it has to be the same everywhere. `localeCompare` orders by the collation
36
+ * rules of whatever locale the process is running under, and a template whose
37
+ * logical IDs move with the machine is one a test cannot name a Resource in.
38
+ */
39
+ function byCodeUnit(a, b) {
40
+ return a < b ? -1 : 1;
41
+ }
42
+ function namedAddresses(addresses) {
43
+ const groups = new Map();
44
+ for (const address of addresses) {
45
+ const base = camelRun(address);
46
+ groups.set(base, [...(groups.get(base) ?? []), address]);
47
+ }
48
+ const taken = new Set(groups.keys());
49
+ const named = new Map();
50
+ for (const [base, group] of groups) {
51
+ for (const [position, address] of group.entries()) {
52
+ named.set(address, position === 0 ? base : numbered(base, taken));
53
+ }
54
+ }
55
+ return named;
56
+ }
57
+ /**
58
+ * The next free numbered form of a logical ID.
59
+ *
60
+ * Numbering starts at two, so the first of a colliding group keeps the name
61
+ * the address gives and the second reads as the second of that name. The
62
+ * search steps past a number already taken, since a numbered ID can collide
63
+ * with one an address arrived at on its own.
64
+ */
65
+ function numbered(base, taken) {
66
+ for (let suffix = 2;; suffix += 1) {
67
+ const candidate = `${base}${suffix}`;
68
+ if (!taken.has(candidate)) {
69
+ taken.add(candidate);
70
+ return candidate;
71
+ }
72
+ }
73
+ }
74
+ /** One address as a single alphanumeric camel-run. */
75
+ function camelRun(address) {
76
+ const alphanumeric = address
77
+ .split(/[^A-Za-z0-9]+/)
78
+ .filter((part) => part.length > 0)
79
+ .map((part) => part.charAt(0).toUpperCase() + part.slice(1))
80
+ .join("");
81
+ return alphanumeric.length > 0 ? alphanumeric : "Resource";
82
+ }
83
+ //# sourceMappingURL=sim-tf-logical-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-tf-logical-id.js","sourceRoot":"","sources":["../../src/terraform/sim-tf-logical-id.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,mBAAmB;IACb,SAAS,CAA8B;IAExD,YAAY,SAA2B;QACrC,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IACvE,CAAC;IAED;;;;;OAKG;IACI,EAAE,CAAC,OAAe;QACvB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC;CACF;AAED;;;;;;;GAOG;AACH,SAAS,UAAU,CAAC,CAAS,EAAE,CAAS;IACtC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,cAAc,CAAC,SAA4B;IAClD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;IAE3C,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;QAE/B,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IAExC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;QACnC,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAClD,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,QAAQ,CAAC,IAAY,EAAE,KAAkB;IAChD,KAAK,IAAI,MAAM,GAAG,CAAC,GAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,GAAG,IAAI,GAAG,MAAM,EAAE,CAAC;QAErC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAErB,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;AACH,CAAC;AAED,sDAAsD;AACtD,SAAS,QAAQ,CAAC,OAAe;IAC/B,MAAM,YAAY,GAAG,OAAO;SACzB,KAAK,CAAC,eAAe,CAAC;SACtB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC3D,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,OAAO,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC;AAC7D,CAAC"}
@@ -0,0 +1,73 @@
1
+ import type { SimCfnTemplateValue } from "../service/cloudformation/template/value/sim-cfn-template-value.js";
2
+ import type { TerraformMappingContext } from "./sim-tf-attributes.js";
3
+ import type { TerraformResource } from "./sim-tf-resource.type.js";
4
+ import type { TerraformSkipReason } from "./sim-tf-report.type.js";
5
+ /**
6
+ * One CloudFormation Resource built from one Terraform resource.
7
+ *
8
+ * `lost` names the Terraform attributes the mapping could not carry across.
9
+ * A mapping records them rather than dropping them quietly, because an
10
+ * attribute that goes missing without a word is the kind of gap that only turns
11
+ * up later as a test passing for the wrong reason.
12
+ */
13
+ export interface TerraformMappedResource {
14
+ readonly Type: string;
15
+ readonly Properties: Record<string, SimCfnTemplateValue>;
16
+ readonly lost?: readonly string[];
17
+ /**
18
+ * Properties the simulated service will refuse the Resource without.
19
+ *
20
+ * A plan can leave a required value unresolvable, and a Resource built
21
+ * without it fails and takes the Stack's other Resources with it. Naming the
22
+ * properties here lets the import drop that one Resource and record it,
23
+ * which is what sim CloudFormation already does with a Resource type it
24
+ * cannot create.
25
+ */
26
+ readonly requires?: readonly string[];
27
+ /**
28
+ * Why this Resource is one the simulated service would refuse whatever the
29
+ * plan resolved.
30
+ *
31
+ * `requires` covers a property the service needs and the plan could not
32
+ * fill. This covers the other shape, where every property is there and one
33
+ * of them holds a value the target refuses. Terraform's `SecureString`
34
+ * parameter is the example. Real CloudFormation refuses that type on an
35
+ * `AWS::SSM::Parameter` because the plaintext would sit in the template, and
36
+ * so does the simulation, so a Resource built for one fails the Stack around
37
+ * it rather than only itself.
38
+ */
39
+ readonly refused?: TerraformSkipReason | undefined;
40
+ }
41
+ export type TerraformResourceMapping = (context: TerraformMappingContext) => TerraformMappedResource;
42
+ /** One resource of a plan, with the mapping that will build its Resource. */
43
+ export interface TerraformDeclaration {
44
+ readonly resource: TerraformResource;
45
+ readonly mapping: TerraformResourceMapping;
46
+ }
47
+ /**
48
+ * How one Terraform resource contributes to another resource's properties.
49
+ *
50
+ * The AWS provider splits a single CloudFormation Resource across several
51
+ * Terraform resources. Six `aws_s3_bucket_*` resources configure one bucket,
52
+ * and CloudFormation carries all six as properties of one `AWS::S3::Bucket`.
53
+ * A fold names the attribute holding the parent's address, and returns the
54
+ * properties to merge into the parent.
55
+ *
56
+ * The properties the parent already carries are given along with the resource,
57
+ * for the fold that adds to a list rather than setting a property outright. An
58
+ * EventBridge rule's targets are one Terraform resource each and one `Targets`
59
+ * list on the Resource, so the second target of a rule has to find the first.
60
+ * A fold writing a property of its own ignores them.
61
+ */
62
+ export interface TerraformResourceFold {
63
+ /** The attribute naming the resource these properties belong to. */
64
+ readonly parentAttribute: string;
65
+ readonly properties: (context: TerraformMappingContext, parent?: Record<string, SimCfnTemplateValue>) => Record<string, SimCfnTemplateValue>;
66
+ /**
67
+ * The Terraform attributes this fold could not carry across, as a mapping's
68
+ * own `lost` names them. A fold that carries everything it was given
69
+ * declares none.
70
+ */
71
+ readonly lost?: (context: TerraformMappingContext) => readonly string[];
72
+ }
73
+ //# sourceMappingURL=sim-tf-mapping.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-tf-mapping.type.d.ts","sourceRoot":"","sources":["../../src/terraform/sim-tf-mapping.type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oEAAoE,CAAC;AAC9G,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE;;;;;;;GAOG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACzD,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC;;;;;;;;OAQG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEtC;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;CACpD;AAED,MAAM,MAAM,wBAAwB,GAAG,CACrC,OAAO,EAAE,uBAAuB,KAC7B,uBAAuB,CAAC;AAE7B,6EAA6E;AAC7E,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,wBAAwB,CAAC;CAC5C;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,qBAAqB;IACpC,oEAAoE;IACpE,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,CACnB,OAAO,EAAE,uBAAuB,EAChC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,KACzC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAEzC;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,uBAAuB,KAAK,SAAS,MAAM,EAAE,CAAC;CACzE"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-tf-mapping.type.js","sourceRoot":"","sources":["../../src/terraform/sim-tf-mapping.type.ts"],"names":[],"mappings":""}
@@ -1,12 +1,4 @@
1
1
  import type { TerraformPlan } from "./sim-tf-plan.type.js";
2
- /**
3
- * What one module output is, in terms of the module that declares it.
4
- */
5
- export interface TerraformModuleOutput {
6
- /** The module path the output's references are relative to. */
7
- readonly modulePath: readonly string[];
8
- readonly references: readonly string[];
9
- }
10
2
  /**
11
3
  * Every module output a plan declares, keyed by the address that reads it.
12
4
  *
@@ -15,5 +7,5 @@ export interface TerraformModuleOutput {
15
7
  * has, and the plan resolves nothing for it, so following it means reading the
16
8
  * output's own expression and continuing from the module that declares it.
17
9
  */
18
- export declare function terraformModuleOutputs(plan: TerraformPlan): ReadonlyMap<string, TerraformModuleOutput>;
10
+ export declare function terraformModuleOutputs(plan: TerraformPlan): ReadonlyMap<string, readonly string[]>;
19
11
  //# sourceMappingURL=sim-tf-module-outputs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-tf-module-outputs.d.ts","sourceRoot":"","sources":["../../src/terraform/sim-tf-module-outputs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,aAAa,EACd,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,aAAa,GAClB,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CASxC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Every module output a plan declares, keyed by the address that reads it.
3
+ *
4
+ * A resource in one module reaching a resource in another goes through an
5
+ * output. `module.processor.lambda_function_arn` is not an address any resource
6
+ * has, and the plan resolves nothing for it, so following it means reading the
7
+ * output's own expression and continuing from the module that declares it.
8
+ */
9
+ export function terraformModuleOutputs(plan) {
10
+ const outputs = new Map();
11
+ const root = plan.configuration?.root_module;
12
+ if (root !== undefined) {
13
+ collect(root, [], outputs);
14
+ }
15
+ return outputs;
16
+ }
17
+ function collect(config, modulePath, outputs) {
18
+ const calls = Object.entries(config.module_calls ?? {});
19
+ for (const [callName, call] of calls) {
20
+ const child = call.module;
21
+ if (child === undefined) {
22
+ continue;
23
+ }
24
+ const childPath = [...modulePath, callName];
25
+ const address = childPath.map((name) => `module.${name}`).join(".");
26
+ const declared = Object.entries(child.outputs ?? {});
27
+ for (const [name, output] of declared) {
28
+ outputs.set(`${address}.${name}`, output.expression?.references ?? []);
29
+ }
30
+ collect(child, childPath, outputs);
31
+ }
32
+ }
33
+ //# sourceMappingURL=sim-tf-module-outputs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-tf-module-outputs.js","sourceRoot":"","sources":["../../src/terraform/sim-tf-module-outputs.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAAmB;IAEnB,MAAM,OAAO,GAAG,IAAI,GAAG,EAA6B,CAAC;IACrD,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC;IAE7C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,OAAO,CACd,MAA6B,EAC7B,UAA6B,EAC7B,OAAuC;IAEvC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IAExD,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAE1B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,SAAS;QACX,CAAC;QAED,MAAM,SAAS,GAAG,CAAC,GAAG,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEpE,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAErD,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,IAAI,IAAI,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC;QACzE,CAAC;QAED,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;AACH,CAAC"}
@@ -0,0 +1,33 @@
1
+ import type { SimCfnTemplateValue } from "../service/cloudformation/template/value/sim-cfn-template-value.js";
2
+ import { type TerraformMappingContext } from "./sim-tf-attributes.js";
3
+ /**
4
+ * A list attribute whose entries name other resources.
5
+ *
6
+ * An alarm's `alarm_actions` holding one topic ARN of the same plan is marked
7
+ * unknown as a whole list, and the entries are gone with it. What survives is
8
+ * the reference behind each entry, and Terraform lists both the attribute form
9
+ * and the bare resource form of one reference. Both forms of a topic resolve to
10
+ * the same `Ref`, so the resolved values are deduplicated rather than the
11
+ * references, which is the only place the two forms can be told apart.
12
+ *
13
+ * A list the plan resolved is carried across as it stands.
14
+ */
15
+ export declare function attributeList(context: TerraformMappingContext, key: string): SimCfnTemplateValue | undefined;
16
+ /**
17
+ * One attribute of one entry of a repeating nested block.
18
+ *
19
+ * A bucket notification names the function it calls inside a `lambda_function`
20
+ * block, and the function's ARN is unknown whenever the same plan creates it.
21
+ * The mark and the references both sit at the same position in a list mirroring
22
+ * the block, so the entry's index is what finds them.
23
+ */
24
+ export declare function blockAttribute(context: TerraformMappingContext, key: string, index: number, name: string): SimCfnTemplateValue | undefined;
25
+ /**
26
+ * The fields of one nested block, under the names CloudFormation gives them.
27
+ *
28
+ * The provider writes every field of a block that was declared, filling the
29
+ * ones the configuration left out with null, so the table says what each field
30
+ * is called on either side and `properties` takes the nulls back out.
31
+ */
32
+ export declare function blockFields(record: Record<string, unknown>, names: Readonly<Record<string, string>>): Record<string, SimCfnTemplateValue>;
33
+ //# sourceMappingURL=sim-tf-nested-attributes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-tf-nested-attributes.d.ts","sourceRoot":"","sources":["../../src/terraform/sim-tf-nested-attributes.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oEAAoE,CAAC;AAC9G,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,wBAAwB,CAAC;AAIhC;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,uBAAuB,EAChC,GAAG,EAAE,MAAM,GACV,mBAAmB,GAAG,SAAS,CAqBjC;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,uBAAuB,EAChC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,mBAAmB,GAAG,SAAS,CAmBjC;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GACtC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CASrC"}