@kensio/yulin 1.16.0 → 1.16.1

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 (196) hide show
  1. package/README.md +44 -46
  2. package/dist/service/aws/factory/sim-aws-account-region-service-builder.js +2 -2
  3. package/dist/service/aws/factory/sim-aws-account-region-service-builder.js.map +1 -1
  4. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-request.d.ts +3 -2
  5. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-request.d.ts.map +1 -1
  6. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-request.js.map +1 -1
  7. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-signer.d.ts +5 -2
  8. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-signer.d.ts.map +1 -1
  9. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-signer.js +38 -2
  10. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-signer.js.map +1 -1
  11. package/dist/service/cloudfront/origin/custom/sim-cf-function-url-origin-template.factory.d.ts.map +1 -1
  12. package/dist/service/cloudfront/origin/custom/sim-cf-function-url-origin-template.factory.js +5 -2
  13. package/dist/service/cloudfront/origin/custom/sim-cf-function-url-origin-template.factory.js.map +1 -1
  14. package/dist/service/cognito/command/hosted/hosted-auth.command.d.ts +10 -0
  15. package/dist/service/cognito/command/hosted/hosted-auth.command.d.ts.map +1 -1
  16. package/dist/service/cognito/command/hosted/sim-cognito-authorize-endpoint.d.ts +14 -13
  17. package/dist/service/cognito/command/hosted/sim-cognito-authorize-endpoint.d.ts.map +1 -1
  18. package/dist/service/cognito/command/hosted/sim-cognito-authorize-endpoint.js +14 -18
  19. package/dist/service/cognito/command/hosted/sim-cognito-authorize-endpoint.js.map +1 -1
  20. package/dist/service/cognito/command/hosted/sim-cognito-authorize-request.d.ts +15 -6
  21. package/dist/service/cognito/command/hosted/sim-cognito-authorize-request.d.ts.map +1 -1
  22. package/dist/service/cognito/command/hosted/sim-cognito-authorize-request.js +26 -19
  23. package/dist/service/cognito/command/hosted/sim-cognito-authorize-request.js.map +1 -1
  24. package/dist/service/cognito/command/hosted/sim-cognito-hosted-commands.d.ts.map +1 -1
  25. package/dist/service/cognito/command/hosted/sim-cognito-hosted-commands.js +5 -1
  26. package/dist/service/cognito/command/hosted/sim-cognito-hosted-commands.js.map +1 -1
  27. package/dist/service/cognito/command/hosted/sim-cognito-hosted-password-sign-in.d.ts +41 -0
  28. package/dist/service/cognito/command/hosted/sim-cognito-hosted-password-sign-in.d.ts.map +1 -0
  29. package/dist/service/cognito/command/hosted/sim-cognito-hosted-password-sign-in.js +71 -0
  30. package/dist/service/cognito/command/hosted/sim-cognito-hosted-password-sign-in.js.map +1 -0
  31. package/dist/service/cognito/command/hosted/sim-cognito-hosted-sign-in.d.ts +32 -0
  32. package/dist/service/cognito/command/hosted/sim-cognito-hosted-sign-in.d.ts.map +1 -0
  33. package/dist/service/cognito/command/hosted/sim-cognito-hosted-sign-in.js +36 -0
  34. package/dist/service/cognito/command/hosted/sim-cognito-hosted-sign-in.js.map +1 -0
  35. package/dist/service/cognito/error/sim-cognito-managed-login.error.d.ts +22 -0
  36. package/dist/service/cognito/error/sim-cognito-managed-login.error.d.ts.map +1 -0
  37. package/dist/service/cognito/error/sim-cognito-managed-login.error.js +32 -0
  38. package/dist/service/cognito/error/sim-cognito-managed-login.error.js.map +1 -0
  39. package/dist/service/cognito/serve/page/sim-cognito-confirm-page.d.ts +29 -0
  40. package/dist/service/cognito/serve/page/sim-cognito-confirm-page.d.ts.map +1 -0
  41. package/dist/service/cognito/serve/page/sim-cognito-confirm-page.js +90 -0
  42. package/dist/service/cognito/serve/page/sim-cognito-confirm-page.js.map +1 -0
  43. package/dist/service/cognito/serve/page/sim-cognito-managed-login.d.ts +38 -0
  44. package/dist/service/cognito/serve/page/sim-cognito-managed-login.d.ts.map +1 -0
  45. package/dist/service/cognito/serve/page/sim-cognito-managed-login.js +62 -0
  46. package/dist/service/cognito/serve/page/sim-cognito-managed-login.js.map +1 -0
  47. package/dist/service/cognito/serve/page/sim-cognito-page-form.d.ts +47 -0
  48. package/dist/service/cognito/serve/page/sim-cognito-page-form.d.ts.map +1 -0
  49. package/dist/service/cognito/serve/page/sim-cognito-page-form.js +76 -0
  50. package/dist/service/cognito/serve/page/sim-cognito-page-form.js.map +1 -0
  51. package/dist/service/cognito/serve/page/sim-cognito-page-markup.d.ts +69 -0
  52. package/dist/service/cognito/serve/page/sim-cognito-page-markup.d.ts.map +1 -0
  53. package/dist/service/cognito/serve/page/sim-cognito-page-markup.js +111 -0
  54. package/dist/service/cognito/serve/page/sim-cognito-page-markup.js.map +1 -0
  55. package/dist/service/cognito/serve/page/sim-cognito-page-paths.d.ts +39 -0
  56. package/dist/service/cognito/serve/page/sim-cognito-page-paths.d.ts.map +1 -0
  57. package/dist/service/cognito/serve/page/sim-cognito-page-paths.js +59 -0
  58. package/dist/service/cognito/serve/page/sim-cognito-page-paths.js.map +1 -0
  59. package/dist/service/cognito/serve/page/sim-cognito-page-request.d.ts +22 -0
  60. package/dist/service/cognito/serve/page/sim-cognito-page-request.d.ts.map +1 -0
  61. package/dist/service/cognito/serve/page/sim-cognito-page-request.js +30 -0
  62. package/dist/service/cognito/serve/page/sim-cognito-page-request.js.map +1 -0
  63. package/dist/service/cognito/serve/page/sim-cognito-sign-in-page.d.ts +28 -0
  64. package/dist/service/cognito/serve/page/sim-cognito-sign-in-page.d.ts.map +1 -0
  65. package/dist/service/cognito/serve/page/sim-cognito-sign-in-page.js +45 -0
  66. package/dist/service/cognito/serve/page/sim-cognito-sign-in-page.js.map +1 -0
  67. package/dist/service/cognito/serve/page/sim-cognito-sign-up-page.d.ts +35 -0
  68. package/dist/service/cognito/serve/page/sim-cognito-sign-up-page.d.ts.map +1 -0
  69. package/dist/service/cognito/serve/page/sim-cognito-sign-up-page.js +85 -0
  70. package/dist/service/cognito/serve/page/sim-cognito-sign-up-page.js.map +1 -0
  71. package/dist/service/cognito/serve/sim-cognito-domain-endpoints.d.ts +20 -23
  72. package/dist/service/cognito/serve/sim-cognito-domain-endpoints.d.ts.map +1 -1
  73. package/dist/service/cognito/serve/sim-cognito-domain-endpoints.js +40 -19
  74. package/dist/service/cognito/serve/sim-cognito-domain-endpoints.js.map +1 -1
  75. package/dist/service/cognito/serve/sim-cognito-domain-request.d.ts +14 -0
  76. package/dist/service/cognito/serve/sim-cognito-domain-request.d.ts.map +1 -0
  77. package/dist/service/cognito/serve/sim-cognito-domain-request.js +2 -0
  78. package/dist/service/cognito/serve/sim-cognito-domain-request.js.map +1 -0
  79. package/dist/service/iam/sigv4/canonical/sim-iam-sigv4-payload-hash.d.ts +8 -0
  80. package/dist/service/iam/sigv4/canonical/sim-iam-sigv4-payload-hash.d.ts.map +1 -1
  81. package/dist/service/iam/sigv4/canonical/sim-iam-sigv4-payload-hash.js +14 -6
  82. package/dist/service/iam/sigv4/canonical/sim-iam-sigv4-payload-hash.js.map +1 -1
  83. package/dist/service/lambda/serve/auth/sim-lambda-url-payload-hash.d.ts +28 -0
  84. package/dist/service/lambda/serve/auth/sim-lambda-url-payload-hash.d.ts.map +1 -0
  85. package/dist/service/lambda/serve/auth/sim-lambda-url-payload-hash.js +56 -0
  86. package/dist/service/lambda/serve/auth/sim-lambda-url-payload-hash.js.map +1 -0
  87. package/dist/service/lambda/serve/response/sim-lambda-url-error-response.d.ts +16 -0
  88. package/dist/service/lambda/serve/response/sim-lambda-url-error-response.d.ts.map +1 -1
  89. package/dist/service/lambda/serve/response/sim-lambda-url-error-response.js +24 -0
  90. package/dist/service/lambda/serve/response/sim-lambda-url-error-response.js.map +1 -1
  91. package/dist/service/lambda/serve/sim-lambda-controller.d.ts +6 -0
  92. package/dist/service/lambda/serve/sim-lambda-controller.d.ts.map +1 -1
  93. package/dist/service/lambda/serve/sim-lambda-controller.js +11 -0
  94. package/dist/service/lambda/serve/sim-lambda-controller.js.map +1 -1
  95. package/dist/service/sns/cfn/subscription/sim-cfn-sns-subscription-properties.d.ts +4 -3
  96. package/dist/service/sns/cfn/subscription/sim-cfn-sns-subscription-properties.d.ts.map +1 -1
  97. package/dist/service/sns/cfn/subscription/sim-cfn-sns-subscription-properties.js +4 -3
  98. package/dist/service/sns/cfn/subscription/sim-cfn-sns-subscription-properties.js.map +1 -1
  99. package/dist/service/sns/cfn/subscription/sim-cfn-sns-subscription-property-names.d.ts +2 -2
  100. package/dist/service/sns/cfn/subscription/sim-cfn-sns-subscription-property-names.js +2 -2
  101. package/dist/service/sns/command/publish/sim-sns-publish-commands.d.ts +3 -0
  102. package/dist/service/sns/command/publish/sim-sns-publish-commands.d.ts.map +1 -1
  103. package/dist/service/sns/command/publish/sim-sns-publish-commands.js +4 -2
  104. package/dist/service/sns/command/publish/sim-sns-publish-commands.js.map +1 -1
  105. package/dist/service/sns/command/publish/sim-sns-publish-dispatch.d.ts +39 -0
  106. package/dist/service/sns/command/publish/sim-sns-publish-dispatch.d.ts.map +1 -0
  107. package/dist/service/sns/command/publish/sim-sns-publish-dispatch.js +42 -0
  108. package/dist/service/sns/command/publish/sim-sns-publish-dispatch.js.map +1 -0
  109. package/dist/service/sns/command/publish/sim-sns-publish-input.d.ts +3 -3
  110. package/dist/service/sns/command/publish/sim-sns-publish-input.d.ts.map +1 -1
  111. package/dist/service/sns/command/publish/sim-sns-publish-input.js +8 -8
  112. package/dist/service/sns/command/publish/sim-sns-publish-input.js.map +1 -1
  113. package/dist/service/sns/command/publish/sim-sns-publish-sms.d.ts +38 -0
  114. package/dist/service/sns/command/publish/sim-sns-publish-sms.d.ts.map +1 -0
  115. package/dist/service/sns/command/publish/sim-sns-publish-sms.js +53 -0
  116. package/dist/service/sns/command/publish/sim-sns-publish-sms.js.map +1 -0
  117. package/dist/service/sns/command/sim-sns-command.types.d.ts +1 -0
  118. package/dist/service/sns/command/sim-sns-command.types.d.ts.map +1 -1
  119. package/dist/service/sns/command/sim-sns-commands.d.ts +12 -4
  120. package/dist/service/sns/command/sim-sns-commands.d.ts.map +1 -1
  121. package/dist/service/sns/command/sim-sns-commands.js +39 -4
  122. package/dist/service/sns/command/sim-sns-commands.js.map +1 -1
  123. package/dist/service/sns/command/sms/sim-sns-opt-out-commands.d.ts +41 -0
  124. package/dist/service/sns/command/sms/sim-sns-opt-out-commands.d.ts.map +1 -0
  125. package/dist/service/sns/command/sms/sim-sns-opt-out-commands.js +56 -0
  126. package/dist/service/sns/command/sms/sim-sns-opt-out-commands.js.map +1 -0
  127. package/dist/service/sns/command/sms/sms.command.d.ts +50 -0
  128. package/dist/service/sns/command/sms/sms.command.d.ts.map +1 -0
  129. package/dist/service/sns/command/sms/sms.command.js +2 -0
  130. package/dist/service/sns/command/sms/sms.command.js.map +1 -0
  131. package/dist/service/sns/delivery/sim-aws-sns-delivery-endpoints.d.ts +5 -6
  132. package/dist/service/sns/delivery/sim-aws-sns-delivery-endpoints.d.ts.map +1 -1
  133. package/dist/service/sns/delivery/sim-aws-sns-delivery-endpoints.js +8 -12
  134. package/dist/service/sns/delivery/sim-aws-sns-delivery-endpoints.js.map +1 -1
  135. package/dist/service/sns/delivery/sim-sns-no-delivery-endpoints.d.ts +6 -13
  136. package/dist/service/sns/delivery/sim-sns-no-delivery-endpoints.d.ts.map +1 -1
  137. package/dist/service/sns/delivery/sim-sns-no-delivery-endpoints.js +13 -2
  138. package/dist/service/sns/delivery/sim-sns-no-delivery-endpoints.js.map +1 -1
  139. package/dist/service/sns/delivery/sim-sns-protocol-delivery-endpoints.d.ts +10 -1
  140. package/dist/service/sns/delivery/sim-sns-protocol-delivery-endpoints.d.ts.map +1 -1
  141. package/dist/service/sns/delivery/sim-sns-protocol-delivery-endpoints.js.map +1 -1
  142. package/dist/service/sns/delivery/sms/sim-sns-delivery-sms.d.ts +34 -0
  143. package/dist/service/sns/delivery/sms/sim-sns-delivery-sms.d.ts.map +1 -0
  144. package/dist/service/sns/delivery/sms/sim-sns-delivery-sms.js +46 -0
  145. package/dist/service/sns/delivery/sms/sim-sns-delivery-sms.js.map +1 -0
  146. package/dist/service/sns/index.d.ts +5 -1
  147. package/dist/service/sns/index.d.ts.map +1 -1
  148. package/dist/service/sns/index.js +4 -1
  149. package/dist/service/sns/index.js.map +1 -1
  150. package/dist/service/sns/message/sim-sns-message-attribute-rules.d.ts.map +1 -1
  151. package/dist/service/sns/message/sim-sns-message-attribute-rules.js +9 -1
  152. package/dist/service/sns/message/sim-sns-message-attribute-rules.js.map +1 -1
  153. package/dist/service/sns/message/sim-sns-message-attributes.d.ts +8 -0
  154. package/dist/service/sns/message/sim-sns-message-attributes.d.ts.map +1 -1
  155. package/dist/service/sns/message/sim-sns-message-attributes.js +10 -0
  156. package/dist/service/sns/message/sim-sns-message-attributes.js.map +1 -1
  157. package/dist/service/sns/message/sim-sns-sms-attributes.d.ts +25 -0
  158. package/dist/service/sns/message/sim-sns-sms-attributes.d.ts.map +1 -0
  159. package/dist/service/sns/message/sim-sns-sms-attributes.js +46 -0
  160. package/dist/service/sns/message/sim-sns-sms-attributes.js.map +1 -0
  161. package/dist/service/sns/sdk/sim-sns-sdk-command-router.d.ts.map +1 -1
  162. package/dist/service/sns/sdk/sim-sns-sdk-command-router.js +12 -0
  163. package/dist/service/sns/sdk/sim-sns-sdk-command-router.js.map +1 -1
  164. package/dist/service/sns/sim-sns-sms.d.ts +63 -0
  165. package/dist/service/sns/sim-sns-sms.d.ts.map +1 -0
  166. package/dist/service/sns/sim-sns-sms.js +76 -0
  167. package/dist/service/sns/sim-sns-sms.js.map +1 -0
  168. package/dist/service/sns/sim-sns.d.ts +7 -15
  169. package/dist/service/sns/sim-sns.d.ts.map +1 -1
  170. package/dist/service/sns/sim-sns.js +23 -30
  171. package/dist/service/sns/sim-sns.js.map +1 -1
  172. package/dist/service/sns/sms/sim-sns-opt-out-list.d.ts +40 -0
  173. package/dist/service/sns/sms/sim-sns-opt-out-list.d.ts.map +1 -0
  174. package/dist/service/sns/sms/sim-sns-opt-out-list.js +47 -0
  175. package/dist/service/sns/sms/sim-sns-opt-out-list.js.map +1 -0
  176. package/dist/service/sns/sms/sim-sns-phone-number.d.ts +21 -0
  177. package/dist/service/sns/sms/sim-sns-phone-number.d.ts.map +1 -0
  178. package/dist/service/sns/sms/sim-sns-phone-number.js +41 -0
  179. package/dist/service/sns/sms/sim-sns-phone-number.js.map +1 -0
  180. package/dist/service/sns/sms/sim-sns-sent-sms-message.d.ts +69 -0
  181. package/dist/service/sns/sms/sim-sns-sent-sms-message.d.ts.map +1 -0
  182. package/dist/service/sns/sms/sim-sns-sent-sms-message.js +71 -0
  183. package/dist/service/sns/sms/sim-sns-sent-sms-message.js.map +1 -0
  184. package/dist/service/sns/sms/sim-sns-sent-sms-store.d.ts +25 -0
  185. package/dist/service/sns/sms/sim-sns-sent-sms-store.d.ts.map +1 -0
  186. package/dist/service/sns/sms/sim-sns-sent-sms-store.js +28 -0
  187. package/dist/service/sns/sms/sim-sns-sent-sms-store.js.map +1 -0
  188. package/dist/service/sns/subscription/sim-sns-subscription-endpoint.d.ts +9 -7
  189. package/dist/service/sns/subscription/sim-sns-subscription-endpoint.d.ts.map +1 -1
  190. package/dist/service/sns/subscription/sim-sns-subscription-endpoint.js +7 -2
  191. package/dist/service/sns/subscription/sim-sns-subscription-endpoint.js.map +1 -1
  192. package/dist/service/sns/subscription/sim-sns-subscription-protocol.d.ts +19 -1
  193. package/dist/service/sns/subscription/sim-sns-subscription-protocol.d.ts.map +1 -1
  194. package/dist/service/sns/subscription/sim-sns-subscription-protocol.js +26 -5
  195. package/dist/service/sns/subscription/sim-sns-subscription-protocol.js.map +1 -1
  196. package/package.json +1 -1
@@ -5,6 +5,7 @@ import { simLambdaUrlEndpoint } from "./event/sim-lambda-url-endpoint.js";
5
5
  import { SimLambdaUrlErrorResponse } from "./response/sim-lambda-url-error-response.js";
6
6
  import { SimLambdaUrlRouter, } from "./sim-lambda-url-router.js";
7
7
  import { SimLambdaUrlAuthorizer } from "./auth/sim-lambda-url-authorizer.js";
8
+ import { simLambdaUrlPayloadRefusal } from "./auth/sim-lambda-url-payload-hash.js";
8
9
  /**
9
10
  * Localhost HTTP controller for simulated Lambda Function URLs.
10
11
  *
@@ -57,9 +58,19 @@ export class SimLambdaServiceController {
57
58
  * What the request is being made on behalf of travels with it, so a
58
59
  * CloudFront Distribution reaching this URL through an origin access control
59
60
  * is judged against the Distribution the permission names.
61
+ *
62
+ * What the request declares its body hashes to is settled first, as real
63
+ * Lambda authenticates a request before it authorizes one. A POST or PUT
64
+ * arriving through an origin access control declares an unsigned payload
65
+ * unless the viewer sent a hash of its own, and Lambda takes no unsigned
66
+ * payload, so it is refused here rather than reaching the function.
60
67
  */
61
68
  async invokeAuthenticated(route, serviceRequest) {
62
69
  const { caller } = serviceRequest;
70
+ const payloadRefusal = await simLambdaUrlPayloadRefusal(serviceRequest.request);
71
+ if (payloadRefusal !== undefined) {
72
+ return this.errorResponse.signatureDoesNotMatch(payloadRefusal);
73
+ }
63
74
  const decision = new SimLambdaUrlAuthorizer({ iam: route.iam }).authorize({
64
75
  simFunction: route.simFunction,
65
76
  functionUrl: route.functionUrl,
@@ -1 +1 @@
1
- {"version":3,"file":"sim-lambda-controller.js","sourceRoot":"","sources":["../../../../src/service/lambda/serve/sim-lambda-controller.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,uBAAuB,EAAE,MAAM,yDAAyD,CAAC;AAClG,OAAO,EAAE,0BAA0B,EAAE,MAAM,4DAA4D,CAAC;AACxG,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AACxF,OAAO,EAEL,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAQ7E;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,0BAA0B;IACpB,MAAM,CAAqB;IAC3B,YAAY,CAA0B;IACtC,eAAe,GAAG,IAAI,0BAA0B,EAAE,CAAC;IACnD,aAAa,GAAG,IAAI,yBAAyB,EAAE,CAAC;IAEjE,YAAY,UAAU,GAAyC,EAAE;QAC/D,MAAM,EAAE,MAAM,GAAG,IAAI,MAAM,EAAE,EAAE,GAAG,UAAU,CAAC;QAC7C,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,IAAI,IAAI,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACtE,0EAA0E;QAC1E,iEAAiE;QACjE,IAAI,CAAC,YAAY,GAAG,IAAI,uBAAuB,CAAC;YAC9C,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;SAC1B,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,cAAoC;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAEvD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;QACvC,CAAC;QAED,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;YAC1C,uEAAuE;YACvE,+DAA+D;YAC/D,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAC/D,CAAC;IAED;;;;;;;;;;;OAWG;IACK,KAAK,CAAC,mBAAmB,CAC/B,KAAgC,EAChC,cAAoC;QAEpC,MAAM,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,sBAAsB,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC;YACxE,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;YACzB,MAAM,EAAE,cAAc,CAAC,MAAM;SAC9B,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;QACxC,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAClE,CAAC;IAEO,KAAK,CAAC,MAAM,CAClB,KAAgC,EAChC,OAAgB,EAChB,mBAAyC;QAEzC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CACzC,OAAO,EACP,oBAAoB,CAAC,KAAK,CAAC,WAAW,CAAC,EACvC,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAChC,CAAC;YAEF,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3E,CAAC;QAAC,MAAM,CAAC;YACP,iEAAiE;YACjE,sEAAsE;YACtE,wEAAwE;YACxE,sBAAsB;YACtB,OAAO,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC;QAClD,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"sim-lambda-controller.js","sourceRoot":"","sources":["../../../../src/service/lambda/serve/sim-lambda-controller.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,uBAAuB,EAAE,MAAM,yDAAyD,CAAC;AAClG,OAAO,EAAE,0BAA0B,EAAE,MAAM,4DAA4D,CAAC;AACxG,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AACxF,OAAO,EAEL,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AAQnF;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,0BAA0B;IACpB,MAAM,CAAqB;IAC3B,YAAY,CAA0B;IACtC,eAAe,GAAG,IAAI,0BAA0B,EAAE,CAAC;IACnD,aAAa,GAAG,IAAI,yBAAyB,EAAE,CAAC;IAEjE,YAAY,UAAU,GAAyC,EAAE;QAC/D,MAAM,EAAE,MAAM,GAAG,IAAI,MAAM,EAAE,EAAE,GAAG,UAAU,CAAC;QAC7C,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,IAAI,IAAI,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACtE,0EAA0E;QAC1E,iEAAiE;QACjE,IAAI,CAAC,YAAY,GAAG,IAAI,uBAAuB,CAAC;YAC9C,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;SAC1B,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,cAAoC;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAEvD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;QACvC,CAAC;QAED,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;YAC1C,uEAAuE;YACvE,+DAA+D;YAC/D,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAC/D,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACK,KAAK,CAAC,mBAAmB,CAC/B,KAAgC,EAChC,cAAoC;QAEpC,MAAM,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC;QAClC,MAAM,cAAc,GAAG,MAAM,0BAA0B,CACrD,cAAc,CAAC,OAAO,CACvB,CAAC;QAEF,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,sBAAsB,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC;YACxE,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;YACzB,MAAM,EAAE,cAAc,CAAC,MAAM;SAC9B,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;QACxC,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAClE,CAAC;IAEO,KAAK,CAAC,MAAM,CAClB,KAAgC,EAChC,OAAgB,EAChB,mBAAyC;QAEzC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CACzC,OAAO,EACP,oBAAoB,CAAC,KAAK,CAAC,WAAW,CAAC,EACvC,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAChC,CAAC;YAEF,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3E,CAAC;QAAC,MAAM,CAAC;YACP,iEAAiE;YACjE,sEAAsE;YACtE,wEAAwE;YACxE,sBAAsB;YACtB,OAAO,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC;QAClD,CAAC;IACH,CAAC;CACF"}
@@ -26,9 +26,10 @@ export declare class SimCfnSnsSubscriptionProperties {
26
26
  /**
27
27
  * What the subscription delivers to.
28
28
  *
29
- * Real CloudFormation leaves it optional, because a protocol such as `sms`
30
- * carries the destination elsewhere. Neither protocol simulated here is one
31
- * of those, so an absent endpoint is refused by Subscribe rather than here.
29
+ * Real CloudFormation leaves it optional, because a protocol such as
30
+ * `application` carries the destination elsewhere. No protocol simulated here
31
+ * is one of those, so an absent endpoint is refused by Subscribe rather than
32
+ * here.
32
33
  */
33
34
  private endpoint;
34
35
  private attributes;
@@ -1 +1 @@
1
- {"version":3,"file":"sim-cfn-sns-subscription-properties.d.ts","sourceRoot":"","sources":["../../../../../src/service/sns/cfn/subscription/sim-cfn-sns-subscription-properties.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sDAAsD,CAAC;AAC3F,OAAO,KAAK,EAEV,yBAAyB,EAC1B,MAAM,kEAAkE,CAAC;AAC1E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AAcnG,UAAU,yCAAyC;IACjD,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,yBAAyB,CAAC;CAChD;AAED;;;;;;;;;GASG;AACH,qBAAa,+BAA+B;IAC1C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2C;IAEtE,YAAY,UAAU,EAAE,yCAAyC,EAGhE;IAED;;OAEG;IACH,KAAK,IAAI,wBAAwB,CAOhC;IAED;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ;IAgBhB,OAAO,CAAC,UAAU;IASlB;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;IAuB3B,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,aAAa;CAOtB"}
1
+ {"version":3,"file":"sim-cfn-sns-subscription-properties.d.ts","sourceRoot":"","sources":["../../../../../src/service/sns/cfn/subscription/sim-cfn-sns-subscription-properties.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sDAAsD,CAAC;AAC3F,OAAO,KAAK,EAEV,yBAAyB,EAC1B,MAAM,kEAAkE,CAAC;AAC1E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AAcnG,UAAU,yCAAyC;IACjD,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,yBAAyB,CAAC;CAChD;AAED;;;;;;;;;GASG;AACH,qBAAa,+BAA+B;IAC1C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2C;IAEtE,YAAY,UAAU,EAAE,yCAAyC,EAGhE;IAED;;OAEG;IACH,KAAK,IAAI,wBAAwB,CAOhC;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ;IAgBhB,OAAO,CAAC,UAAU;IASlB;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;IAuB3B,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,aAAa;CAOtB"}
@@ -33,9 +33,10 @@ export class SimCfnSnsSubscriptionProperties {
33
33
  /**
34
34
  * What the subscription delivers to.
35
35
  *
36
- * Real CloudFormation leaves it optional, because a protocol such as `sms`
37
- * carries the destination elsewhere. Neither protocol simulated here is one
38
- * of those, so an absent endpoint is refused by Subscribe rather than here.
36
+ * Real CloudFormation leaves it optional, because a protocol such as
37
+ * `application` carries the destination elsewhere. No protocol simulated here
38
+ * is one of those, so an absent endpoint is refused by Subscribe rather than
39
+ * here.
39
40
  */
40
41
  endpoint() {
41
42
  const endpoint = this.properties.get(subscriptionEndpointPropertyName);
@@ -1 +1 @@
1
- {"version":3,"file":"sim-cfn-sns-subscription-properties.js","sourceRoot":"","sources":["../../../../../src/service/sns/cfn/subscription/sim-cfn-sns-subscription-properties.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EACL,sBAAsB,EACtB,gCAAgC,EAChC,yBAAyB,EACzB,gCAAgC,EAChC,gCAAgC,EAChC,0BAA0B,GAC3B,MAAM,8CAA8C,CAAC;AAOtD;;;;;;;;;GASG;AACH,MAAM,OAAO,+BAA+B;IACzB,QAAQ,CAAiB;IACzB,UAAU,CAA2C;IAEtE,YAAY,UAAqD;QAC/D,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IACnE,CAAC;IAED;;OAEG;IACH,KAAK;QACH,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,gCAAgC,CAAC;YAC/D,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,gCAAgC,CAAC;YAC/D,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;YACzB,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;SAC9B,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACK,QAAQ;QACd,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAEvE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,aAAa,CACtB,GAAG,gCAAgC,mBAAmB,CACvD,CAAC;QACJ,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,UAAU;QAChB,OAAO,MAAM,CAAC,WAAW,CACvB,IAAI,CAAC,UAAU;aACZ,OAAO,EAAE;aACT,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;aAClD,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC,CAClE,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACK,mBAAmB,CAAC,IAAY;QACtC,IAAI,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,iBAAiB,GAAG,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAE/D,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;YACpC,MAAM,IAAI,CAAC,aAAa,CACtB,GAAG,IAAI,cAAc,2BAA2B,sBAAsB;gBACpE,wBAAwB,iBAAiB,EAAE,CAC9C,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,CAAC,aAAa,CACtB,GAAG,IAAI,yBAAyB,2BAA2B,EAAE,CAC9D,CAAC;IACJ,CAAC;IAEO,cAAc,CAAC,IAAY;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAExC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,mCAAmC,CAAC,CAAC;QACvE,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,aAAa,CAAC,MAAc;QAClC,OAAO,sBAAsB,CAC3B,2BAA2B,EAC3B,IAAI,CAAC,QAAQ,CAAC,SAAS,EACvB,MAAM,CACP,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"sim-cfn-sns-subscription-properties.js","sourceRoot":"","sources":["../../../../../src/service/sns/cfn/subscription/sim-cfn-sns-subscription-properties.ts"],"names":[],"mappings":"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"}
@@ -7,8 +7,8 @@ export declare const subscriptionTopicArnPropertyName = "TopicArn";
7
7
  */
8
8
  export declare const subscriptionProtocolPropertyName = "Protocol";
9
9
  /**
10
- * What the subscription is delivered to, which is a queue ARN or a function
11
- * ARN for the two protocols simulated.
10
+ * What the subscription is delivered to, which is a queue ARN, a function ARN
11
+ * or a phone number for the three protocols simulated.
12
12
  */
13
13
  export declare const subscriptionEndpointPropertyName = "Endpoint";
14
14
  /**
@@ -7,8 +7,8 @@ export const subscriptionTopicArnPropertyName = "TopicArn";
7
7
  */
8
8
  export const subscriptionProtocolPropertyName = "Protocol";
9
9
  /**
10
- * What the subscription is delivered to, which is a queue ARN or a function
11
- * ARN for the two protocols simulated.
10
+ * What the subscription is delivered to, which is a queue ARN, a function ARN
11
+ * or a phone number for the three protocols simulated.
12
12
  */
13
13
  export const subscriptionEndpointPropertyName = "Endpoint";
14
14
  /**
@@ -11,6 +11,9 @@ interface SimSnsPublishCommandsProperties {
11
11
  /**
12
12
  * The commands that publish messages to a topic.
13
13
  *
14
+ * A publish reaches this once `SimSnsPublishDispatch` has decided it names a
15
+ * topic. Publishing to a phone number never arrives here.
16
+ *
14
17
  * A topic keeps nothing a publish sends it. Real SNS hands a message to the
15
18
  * topic's subscriptions and forgets it, so a topic with no subscriptions
16
19
  * accepts a publish, answers with a message id, and the message goes nowhere.
@@ -1 +1 @@
1
- {"version":3,"file":"sim-sns-publish-commands.d.ts","sourceRoot":"","sources":["../../../../../src/service/sns/command/publish/sim-sns-publish-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AACrF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAMtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAU1E,OAAO,KAAK,EACV,sBAAsB,EACtB,4BAA4B,EAC5B,iBAAiB,EACjB,uBAAuB,EAGxB,MAAM,sBAAsB,CAAC;AAQ9B,UAAU,+BAA+B;IACvC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;CAC/B;AAED;;;;;;;;GAQG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsB;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IAEtC,YAAY,UAAU,EAAE,+BAA+B,EAItD;IAED;;OAEG;IACH,OAAO,CACL,OAAO,EAAE,iBAAiB,EAC1B,OAAO,CAAC,EAAE,oBAAoB,GAC7B,uBAAuB,CAiBzB;IAED;;;;;;;;OAQG;IACH,YAAY,CACV,OAAO,EAAE,sBAAsB,EAC/B,OAAO,CAAC,EAAE,oBAAoB,GAC7B,4BAA4B,CAwB9B;IAED;;;;;;OAMG;IACH,OAAO,CAAC,WAAW;IASnB;;OAEG;IACH,OAAO,CAAC,SAAS;CAMlB"}
1
+ {"version":3,"file":"sim-sns-publish-commands.d.ts","sourceRoot":"","sources":["../../../../../src/service/sns/command/publish/sim-sns-publish-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AACrF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAMtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAO1E,OAAO,KAAK,EACV,sBAAsB,EACtB,4BAA4B,EAC5B,iBAAiB,EACjB,uBAAuB,EAGxB,MAAM,sBAAsB,CAAC;AAQ9B,UAAU,+BAA+B;IACvC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;CAC/B;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsB;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IAEtC,YAAY,UAAU,EAAE,+BAA+B,EAItD;IAED;;OAEG;IACH,OAAO,CACL,OAAO,EAAE,iBAAiB,EAC1B,OAAO,CAAC,EAAE,oBAAoB,GAC7B,uBAAuB,CAezB;IAED;;;;;;;;OAQG;IACH,YAAY,CACV,OAAO,EAAE,sBAAsB,EAC/B,OAAO,CAAC,EAAE,oBAAoB,GAC7B,4BAA4B,CAwB9B;IAED;;;;;;OAMG;IACH,OAAO,CAAC,WAAW;IASnB;;OAEG;IACH,OAAO,CAAC,SAAS;CAMlB"}
@@ -1,6 +1,6 @@
1
1
  import { assertSimSnsMessageWithinLimit, SimSnsPublishedMessage, } from "../../message/sim-sns-published-message.js";
2
2
  import { assertSnsBatchWithinSizeLimit, requireSnsBatchEntries, runSnsBatch, } from "./sim-sns-batch-entries.js";
3
- import { refuseUnsimulatedPublishTarget, simSnsPublishedMessageInput, } from "./sim-sns-publish-input.js";
3
+ import { simSnsPublishedMessageInput } from "./sim-sns-publish-input.js";
4
4
  /**
5
5
  * Real SNS authorizes a batch publish as `sns:Publish`. There is no
6
6
  * `sns:PublishBatch` action, so a policy naming one grants nothing.
@@ -9,6 +9,9 @@ const publishAction = "sns:Publish";
9
9
  /**
10
10
  * The commands that publish messages to a topic.
11
11
  *
12
+ * A publish reaches this once `SimSnsPublishDispatch` has decided it names a
13
+ * topic. Publishing to a phone number never arrives here.
14
+ *
12
15
  * A topic keeps nothing a publish sends it. Real SNS hands a message to the
13
16
  * topic's subscriptions and forgets it, so a topic with no subscriptions
14
17
  * accepts a publish, answers with a message id, and the message goes nowhere.
@@ -28,7 +31,6 @@ export class SimSnsPublishCommands {
28
31
  * Publish one message to a topic.
29
32
  */
30
33
  publish(command, options) {
31
- refuseUnsimulatedPublishTarget(command.input);
32
34
  // The topic has to be there and the caller has to be allowed to publish to
33
35
  // it before anything is read out of the message.
34
36
  const topic = this.access.requireByArn(publishAction, command.input.TopicArn, options);
@@ -1 +1 @@
1
- {"version":3,"file":"sim-sns-publish-commands.js","sourceRoot":"","sources":["../../../../../src/service/sns/command/publish/sim-sns-publish-commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sim-sns-publish-commands.js","sourceRoot":"","sources":["../../../../../src/service/sns/command/publish/sim-sns-publish-commands.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,8BAA8B,EAC9B,sBAAsB,GACvB,MAAM,4CAA4C,CAAC;AAIpD,OAAO,EACL,6BAA6B,EAC7B,sBAAsB,EACtB,WAAW,GACZ,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAUzE;;;GAGG;AACH,MAAM,aAAa,GAAG,aAAa,CAAC;AAQpC;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,qBAAqB;IACf,MAAM,CAAoB;IAC1B,KAAK,CAAsB;IAC3B,MAAM,CAAe;IAEtC,YAAY,UAA2C;QACrD,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,OAAO,CACL,OAA0B,EAC1B,OAA8B;QAE9B,2EAA2E;QAC3E,iDAAiD;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CACpC,aAAa,EACb,OAAO,CAAC,KAAK,CAAC,QAAQ,EACtB,OAAO,CACR,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAE9C,8BAA8B,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEjD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAEpC,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;IACzD,CAAC;IAED;;;;;;;;OAQG;IACH,YAAY,CACV,OAA+B,EAC/B,OAA8B;QAE9B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CACpC,aAAa,EACb,OAAO,CAAC,KAAK,CAAC,QAAQ,EACtB,OAAO,CACR,CAAC;QACF,MAAM,OAAO,GAAG,sBAAsB,CACpC,OAAO,CAAC,KAAK,CAAC,0BAA0B,CACzC,CAAC;QACF,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YACnD,EAAE;YACF,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;SAC/B,CAAC,CAAC,CAAC;QAEJ,6BAA6B,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAClD,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QAE5C,MAAM,UAAU,GACd,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YAC3C,EAAE,EAAE,EAAE;YACN,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC,CAAC,CAAC;QAEN,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IAC3E,CAAC;IAED;;;;;;OAMG;IACK,WAAW,CACjB,KAAkB,EAClB,SAAkE;QAElE,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,SAAS,EAAE,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,SAAS,CAAC,SAAgC;QAChD,OAAO,sBAAsB,CAAC,EAAE,CAC9B,2BAA2B,CAAC,SAAS,CAAC,EACtC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CACjB,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,39 @@
1
+ import type { SimSnsRequestOptions } from "../sim-sns-request-options.js";
2
+ import type { SimSnsPublishCommands } from "./sim-sns-publish-commands.js";
3
+ import type { SimSnsPublishSms } from "./sim-sns-publish-sms.js";
4
+ import type { SimPublishBatchCommand, SimPublishBatchCommandOutput, SimPublishCommand, SimPublishCommandOutput } from "./publish.command.js";
5
+ interface SimSnsPublishDispatchProperties {
6
+ readonly topic: SimSnsPublishCommands;
7
+ readonly sms: SimSnsPublishSms;
8
+ }
9
+ /**
10
+ * Which of the two publishes a `Publish` request is.
11
+ *
12
+ * One SDK command name covers two operations that share a message and nothing
13
+ * else. A publish to a topic goes to the topic's subscriptions. A publish to a
14
+ * phone number reaches no topic, no subscription and no delivery endpoint, and
15
+ * is recorded as an SMS. Each has its own handler, and this is what reads the
16
+ * request to decide.
17
+ *
18
+ * The target refusals belong here, ahead of the decision, so that a request
19
+ * naming an unsimulated target is refused whichever way it would otherwise
20
+ * have gone.
21
+ *
22
+ * `PublishBatch` is only ever a topic publish, since the SNS API gives a batch
23
+ * entry no phone number field.
24
+ */
25
+ export declare class SimSnsPublishDispatch {
26
+ private readonly topic;
27
+ private readonly sms;
28
+ constructor(properties: SimSnsPublishDispatchProperties);
29
+ /**
30
+ * Publish one message to a topic or to a phone number.
31
+ */
32
+ publish(command: SimPublishCommand, options?: SimSnsRequestOptions): SimPublishCommandOutput;
33
+ /**
34
+ * Publish up to ten messages to a topic at once.
35
+ */
36
+ publishBatch(command: SimPublishBatchCommand, options?: SimSnsRequestOptions): SimPublishBatchCommandOutput;
37
+ }
38
+ export {};
39
+ //# sourceMappingURL=sim-sns-publish-dispatch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-sns-publish-dispatch.d.ts","sourceRoot":"","sources":["../../../../../src/service/sns/command/publish/sim-sns-publish-dispatch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAE3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EACV,sBAAsB,EACtB,4BAA4B,EAC5B,iBAAiB,EACjB,uBAAuB,EACxB,MAAM,sBAAsB,CAAC;AAE9B,UAAU,+BAA+B;IACvC,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC;IACtC,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAC;CAChC;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwB;IAC9C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAmB;IAEvC,YAAY,UAAU,EAAE,+BAA+B,EAGtD;IAED;;OAEG;IACH,OAAO,CACL,OAAO,EAAE,iBAAiB,EAC1B,OAAO,CAAC,EAAE,oBAAoB,GAC7B,uBAAuB,CAQzB;IAED;;OAEG;IACH,YAAY,CACV,OAAO,EAAE,sBAAsB,EAC/B,OAAO,CAAC,EAAE,oBAAoB,GAC7B,4BAA4B,CAE9B;CACF"}
@@ -0,0 +1,42 @@
1
+ import { refuseUnsimulatedPublishTarget } from "./sim-sns-publish-input.js";
2
+ /**
3
+ * Which of the two publishes a `Publish` request is.
4
+ *
5
+ * One SDK command name covers two operations that share a message and nothing
6
+ * else. A publish to a topic goes to the topic's subscriptions. A publish to a
7
+ * phone number reaches no topic, no subscription and no delivery endpoint, and
8
+ * is recorded as an SMS. Each has its own handler, and this is what reads the
9
+ * request to decide.
10
+ *
11
+ * The target refusals belong here, ahead of the decision, so that a request
12
+ * naming an unsimulated target is refused whichever way it would otherwise
13
+ * have gone.
14
+ *
15
+ * `PublishBatch` is only ever a topic publish, since the SNS API gives a batch
16
+ * entry no phone number field.
17
+ */
18
+ export class SimSnsPublishDispatch {
19
+ topic;
20
+ sms;
21
+ constructor(properties) {
22
+ this.topic = properties.topic;
23
+ this.sms = properties.sms;
24
+ }
25
+ /**
26
+ * Publish one message to a topic or to a phone number.
27
+ */
28
+ publish(command, options) {
29
+ refuseUnsimulatedPublishTarget(command.input);
30
+ if (command.input.PhoneNumber === undefined) {
31
+ return this.topic.publish(command, options);
32
+ }
33
+ return this.sms.publish(command.input, options);
34
+ }
35
+ /**
36
+ * Publish up to ten messages to a topic at once.
37
+ */
38
+ publishBatch(command, options) {
39
+ return this.topic.publishBatch(command, options);
40
+ }
41
+ }
42
+ //# sourceMappingURL=sim-sns-publish-dispatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-sns-publish-dispatch.js","sourceRoot":"","sources":["../../../../../src/service/sns/command/publish/sim-sns-publish-dispatch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAc5E;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,qBAAqB;IACf,KAAK,CAAwB;IAC7B,GAAG,CAAmB;IAEvC,YAAY,UAA2C;QACrD,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,OAAO,CACL,OAA0B,EAC1B,OAA8B;QAE9B,8BAA8B,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAE9C,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9C,CAAC;QAED,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,YAAY,CACV,OAA+B,EAC/B,OAA8B;QAE9B,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;CACF"}
@@ -1,10 +1,10 @@
1
1
  import type { SimSnsPublishedMessageInput } from "../../message/sim-sns-published-message.js";
2
2
  import type { SimPublishCommandInput, SimSnsPublishedFields } from "./publish.command.js";
3
3
  /**
4
- * Refuse a publish to somewhere other than a topic.
4
+ * Refuse a publish to somewhere other than a topic or a phone number.
5
5
  *
6
- * Real SNS publishes to a topic, to a mobile application endpoint, or to a
7
- * phone number. Only the topic is simulated, so the other two are refused
6
+ * Real SNS publishes to a topic, to a phone number, or to a mobile application
7
+ * endpoint. The endpoint is the one that is not simulated, so it is refused
8
8
  * rather than answered with a message id for a message that reached nothing.
9
9
  */
10
10
  export declare function refuseUnsimulatedPublishTarget(input: SimPublishCommandInput): void;
@@ -1 +1 @@
1
- {"version":3,"file":"sim-sns-publish-input.d.ts","sourceRoot":"","sources":["../../../../../src/service/sns/command/publish/sim-sns-publish-input.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AAC9F,OAAO,KAAK,EACV,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,sBAAsB,CAAC;AAE9B;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,sBAAsB,GAC5B,IAAI,CAcN;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,qBAAqB,GAC/B,2BAA2B,CAuB7B"}
1
+ {"version":3,"file":"sim-sns-publish-input.d.ts","sourceRoot":"","sources":["../../../../../src/service/sns/command/publish/sim-sns-publish-input.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AAC9F,OAAO,KAAK,EACV,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,sBAAsB,CAAC;AAE9B;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,sBAAsB,GAC5B,IAAI,CAcN;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,qBAAqB,GAC/B,2BAA2B,CAuB7B"}
@@ -1,20 +1,20 @@
1
- import { SimSnsUnsimulatedInputException } from "../../error/sim-sns.error.js";
1
+ import { SimSnsInvalidParameterException, SimSnsUnsimulatedInputException, } from "../../error/sim-sns.error.js";
2
2
  import { SimSnsMessageAttributes } from "../../message/sim-sns-message-attributes.js";
3
3
  /**
4
- * Refuse a publish to somewhere other than a topic.
4
+ * Refuse a publish to somewhere other than a topic or a phone number.
5
5
  *
6
- * Real SNS publishes to a topic, to a mobile application endpoint, or to a
7
- * phone number. Only the topic is simulated, so the other two are refused
6
+ * Real SNS publishes to a topic, to a phone number, or to a mobile application
7
+ * endpoint. The endpoint is the one that is not simulated, so it is refused
8
8
  * rather than answered with a message id for a message that reached nothing.
9
9
  */
10
10
  export function refuseUnsimulatedPublishTarget(input) {
11
11
  if (input.TargetArn !== undefined) {
12
12
  throw new SimSnsUnsimulatedInputException("TargetArn publishes to a mobile application endpoint, which simulated " +
13
- "SNS does not support. Publish to a TopicArn instead.");
13
+ "SNS does not support. Publish to a TopicArn or a PhoneNumber instead.");
14
14
  }
15
- if (input.PhoneNumber !== undefined) {
16
- throw new SimSnsUnsimulatedInputException("PhoneNumber publishes an SMS message, which simulated SNS does not " +
17
- "support. Publish to a TopicArn instead.");
15
+ if (input.TopicArn !== undefined && input.PhoneNumber !== undefined) {
16
+ throw new SimSnsInvalidParameterException("Invalid parameter: A publish names a TopicArn or a PhoneNumber, and " +
17
+ "this one names both");
18
18
  }
19
19
  }
20
20
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"sim-sns-publish-input.js","sourceRoot":"","sources":["../../../../../src/service/sns/command/publish/sim-sns-publish-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AAOtF;;;;;;GAMG;AACH,MAAM,UAAU,8BAA8B,CAC5C,KAA6B;IAE7B,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,IAAI,+BAA+B,CACvC,wEAAwE;YACtE,sDAAsD,CACzD,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,IAAI,+BAA+B,CACvC,qEAAqE;YACnE,yCAAyC,CAC5C,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,2BAA2B,CACzC,SAAgC;IAEhC,IACE,SAAS,CAAC,sBAAsB,KAAK,SAAS;QAC9C,SAAS,CAAC,cAAc,KAAK,SAAS,EACtC,CAAC;QACD,MAAM,IAAI,+BAA+B,CACvC,wEAAwE;YACtE,gCAAgC,CACnC,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;QAC7C,MAAM,IAAI,+BAA+B,CACvC,wEAAwE;YACtE,8BAA8B,CACjC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,UAAU,EAAE,uBAAuB,CAAC,EAAE,CAAC,SAAS,CAAC,iBAAiB,CAAC;KACpE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"sim-sns-publish-input.js","sourceRoot":"","sources":["../../../../../src/service/sns/command/publish/sim-sns-publish-input.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,+BAA+B,GAChC,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AAOtF;;;;;;GAMG;AACH,MAAM,UAAU,8BAA8B,CAC5C,KAA6B;IAE7B,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,IAAI,+BAA+B,CACvC,wEAAwE;YACtE,uEAAuE,CAC1E,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACpE,MAAM,IAAI,+BAA+B,CACvC,sEAAsE;YACpE,qBAAqB,CACxB,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,2BAA2B,CACzC,SAAgC;IAEhC,IACE,SAAS,CAAC,sBAAsB,KAAK,SAAS;QAC9C,SAAS,CAAC,cAAc,KAAK,SAAS,EACtC,CAAC;QACD,MAAM,IAAI,+BAA+B,CACvC,wEAAwE;YACtE,gCAAgC,CACnC,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;QAC7C,MAAM,IAAI,+BAA+B,CACvC,wEAAwE;YACtE,8BAA8B,CACjC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,UAAU,EAAE,uBAAuB,CAAC,EAAE,CAAC,SAAS,CAAC,iBAAiB,CAAC;KACpE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,38 @@
1
+ import type { BackgroundScheduler } from "../../../../util/background/background.js";
2
+ import type { SimSnsOptOutList } from "../../sms/sim-sns-opt-out-list.js";
3
+ import type { SimSnsSentSmsStore } from "../../sms/sim-sns-sent-sms-store.js";
4
+ import type { SimSnsRequestOptions } from "../sim-sns-request-options.js";
5
+ import type { SimSnsTopicAccess } from "../topic/sim-sns-topic-access.js";
6
+ import type { SimPublishCommandInput, SimPublishCommandOutput } from "./publish.command.js";
7
+ interface SimSnsPublishSmsProperties {
8
+ readonly access: SimSnsTopicAccess;
9
+ readonly clock: BackgroundScheduler;
10
+ readonly optOutList: SimSnsOptOutList;
11
+ readonly sent: SimSnsSentSmsStore;
12
+ }
13
+ /**
14
+ * Publishing straight to a phone number.
15
+ *
16
+ * This is the half of `Publish` that reaches no topic. Real SNS hands the
17
+ * message to a carrier and tells the publisher a message id, and the publisher
18
+ * hears nothing more about it. There is no carrier here to hand it to. The
19
+ * message is recorded, and the publisher gets the same message id it would
20
+ * have got on AWS.
21
+ */
22
+ export declare class SimSnsPublishSms {
23
+ private readonly access;
24
+ private readonly clock;
25
+ private readonly optOutList;
26
+ private readonly sent;
27
+ constructor(properties: SimSnsPublishSmsProperties);
28
+ /**
29
+ * Publish one SMS to a phone number.
30
+ *
31
+ * A number on the opt-out list still gets a message id, because that is what
32
+ * real SNS answers a publish it accepts and then delivers nowhere. The
33
+ * record says the opt-out list stopped it.
34
+ */
35
+ publish(input: SimPublishCommandInput, options?: SimSnsRequestOptions): SimPublishCommandOutput;
36
+ }
37
+ export {};
38
+ //# sourceMappingURL=sim-sns-publish-sms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-sns-publish-sms.d.ts","sourceRoot":"","sources":["../../../../../src/service/sns/command/publish/sim-sns-publish-sms.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAKrF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAG1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAE1E,OAAO,KAAK,EACV,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,sBAAsB,CAAC;AAQ9B,UAAU,0BAA0B;IAClC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;CACnC;AAED;;;;;;;;GAQG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsB;IAC5C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAC9C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqB;IAE1C,YAAY,UAAU,EAAE,0BAA0B,EAKjD;IAED;;;;;;OAMG;IACH,OAAO,CACL,KAAK,EAAE,sBAAsB,EAC7B,OAAO,CAAC,EAAE,oBAAoB,GAC7B,uBAAuB,CAuBzB;CACF"}
@@ -0,0 +1,53 @@
1
+ import { assertSimSnsMessageWithinLimit, SimSnsPublishedMessage, } from "../../message/sim-sns-published-message.js";
2
+ import { SimSnsPhoneNumber } from "../../sms/sim-sns-phone-number.js";
3
+ import { SimSnsSentSmsMessage } from "../../sms/sim-sns-sent-sms-message.js";
4
+ import { simSnsPublishedMessageInput } from "./sim-sns-publish-input.js";
5
+ /**
6
+ * Real SNS authorizes an SMS publish as `sns:Publish` against `*`, since there
7
+ * is no topic in the request for a policy to name.
8
+ */
9
+ const publishAction = "sns:Publish";
10
+ /**
11
+ * Publishing straight to a phone number.
12
+ *
13
+ * This is the half of `Publish` that reaches no topic. Real SNS hands the
14
+ * message to a carrier and tells the publisher a message id, and the publisher
15
+ * hears nothing more about it. There is no carrier here to hand it to. The
16
+ * message is recorded, and the publisher gets the same message id it would
17
+ * have got on AWS.
18
+ */
19
+ export class SimSnsPublishSms {
20
+ access;
21
+ clock;
22
+ optOutList;
23
+ sent;
24
+ constructor(properties) {
25
+ this.access = properties.access;
26
+ this.clock = properties.clock;
27
+ this.optOutList = properties.optOutList;
28
+ this.sent = properties.sent;
29
+ }
30
+ /**
31
+ * Publish one SMS to a phone number.
32
+ *
33
+ * A number on the opt-out list still gets a message id, because that is what
34
+ * real SNS answers a publish it accepts and then delivers nowhere. The
35
+ * record says the opt-out list stopped it.
36
+ */
37
+ publish(input, options) {
38
+ this.access.authorizeAnyTopic(publishAction, options);
39
+ const phoneNumber = SimSnsPhoneNumber.of(input.PhoneNumber);
40
+ const message = SimSnsPublishedMessage.of(simSnsPublishedMessageInput(input), this.clock.now());
41
+ assertSimSnsMessageWithinLimit(message.byteSize);
42
+ this.sent.add(new SimSnsSentSmsMessage({
43
+ messageId: message.messageId,
44
+ phoneNumber: phoneNumber.value,
45
+ message: message.body.value,
46
+ attributes: message.attributes,
47
+ suppressed: this.optOutList.isOptedOut(phoneNumber),
48
+ sentDate: message.publishedAt,
49
+ }));
50
+ return { $metadata: {}, MessageId: message.messageId };
51
+ }
52
+ }
53
+ //# sourceMappingURL=sim-sns-publish-sms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-sns-publish-sms.js","sourceRoot":"","sources":["../../../../../src/service/sns/command/publish/sim-sns-publish-sms.ts"],"names":[],"mappings":"AACA,OAAO,EACL,8BAA8B,EAC9B,sBAAsB,GACvB,MAAM,4CAA4C,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAI7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAMzE;;;GAGG;AACH,MAAM,aAAa,GAAG,aAAa,CAAC;AASpC;;;;;;;;GAQG;AACH,MAAM,OAAO,gBAAgB;IACV,MAAM,CAAoB;IAC1B,KAAK,CAAsB;IAC3B,UAAU,CAAmB;IAC7B,IAAI,CAAqB;IAE1C,YAAY,UAAsC;QAChD,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;IAC9B,CAAC;IAED;;;;;;OAMG;IACH,OAAO,CACL,KAA6B,EAC7B,OAA8B;QAE9B,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAEtD,MAAM,WAAW,GAAG,iBAAiB,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,sBAAsB,CAAC,EAAE,CACvC,2BAA2B,CAAC,KAAK,CAAC,EAClC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CACjB,CAAC;QAEF,8BAA8B,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEjD,IAAI,CAAC,IAAI,CAAC,GAAG,CACX,IAAI,oBAAoB,CAAC;YACvB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,WAAW,EAAE,WAAW,CAAC,KAAK;YAC9B,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK;YAC3B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC;YACnD,QAAQ,EAAE,OAAO,CAAC,WAAW;SAC9B,CAAC,CACH,CAAC;QAEF,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;IACzD,CAAC;CACF"}
@@ -3,5 +3,6 @@
3
3
  */
4
4
  export type { SimCreateTopicCommand, SimCreateTopicCommandInput, SimCreateTopicCommandOutput, SimDeleteTopicCommand, SimDeleteTopicCommandInput, SimDeleteTopicCommandOutput, SimGetTopicAttributesCommand, SimGetTopicAttributesCommandInput, SimGetTopicAttributesCommandOutput, SimListTopicsCommand, SimListTopicsCommandInput, SimListTopicsCommandOutput, SimSetTopicAttributesCommand, SimSetTopicAttributesCommandInput, SimSetTopicAttributesCommandOutput, SimSnsListedTopic, SimSnsTag, } from "./topic/topic.command.js";
5
5
  export type { SimGetSubscriptionAttributesCommand, SimGetSubscriptionAttributesCommandInput, SimGetSubscriptionAttributesCommandOutput, SimListSubscriptionsByTopicCommand, SimListSubscriptionsByTopicCommandInput, SimListSubscriptionsByTopicCommandOutput, SimListSubscriptionsCommand, SimListSubscriptionsCommandInput, SimListSubscriptionsCommandOutput, SimSetSubscriptionAttributesCommand, SimSetSubscriptionAttributesCommandInput, SimSetSubscriptionAttributesCommandOutput, SimSnsListedSubscription, SimSubscribeCommand, SimSubscribeCommandInput, SimSubscribeCommandOutput, SimUnsubscribeCommand, SimUnsubscribeCommandInput, SimUnsubscribeCommandOutput, } from "./subscription/subscription.command.js";
6
+ export type { SimCheckIfPhoneNumberIsOptedOutCommand, SimCheckIfPhoneNumberIsOptedOutCommandInput, SimCheckIfPhoneNumberIsOptedOutCommandOutput, SimListPhoneNumbersOptedOutCommand, SimListPhoneNumbersOptedOutCommandInput, SimListPhoneNumbersOptedOutCommandOutput, SimOptInPhoneNumberCommand, SimOptInPhoneNumberCommandInput, SimOptInPhoneNumberCommandOutput, } from "./sms/sms.command.js";
6
7
  export type { SimPublishBatchCommand, SimPublishBatchCommandInput, SimPublishBatchCommandOutput, SimPublishCommand, SimPublishCommandInput, SimPublishCommandOutput, SimSnsBatchResultErrorEntry, SimSnsPublishBatchRequestEntry, SimSnsPublishBatchResultEntry, SimSnsPublishedFields, } from "./publish/publish.command.js";
7
8
  //# sourceMappingURL=sim-sns-command.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sim-sns-command.types.d.ts","sourceRoot":"","sources":["../../../../src/service/sns/command/sim-sns-command.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,YAAY,EACV,qBAAqB,EACrB,0BAA0B,EAC1B,2BAA2B,EAC3B,qBAAqB,EACrB,0BAA0B,EAC1B,2BAA2B,EAC3B,4BAA4B,EAC5B,iCAAiC,EACjC,kCAAkC,EAClC,oBAAoB,EACpB,yBAAyB,EACzB,0BAA0B,EAC1B,4BAA4B,EAC5B,iCAAiC,EACjC,kCAAkC,EAClC,iBAAiB,EACjB,SAAS,GACV,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,mCAAmC,EACnC,wCAAwC,EACxC,yCAAyC,EACzC,kCAAkC,EAClC,uCAAuC,EACvC,wCAAwC,EACxC,2BAA2B,EAC3B,gCAAgC,EAChC,iCAAiC,EACjC,mCAAmC,EACnC,wCAAwC,EACxC,yCAAyC,EACzC,wBAAwB,EACxB,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,qBAAqB,EACrB,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,wCAAwC,CAAC;AAChD,YAAY,EACV,sBAAsB,EACtB,2BAA2B,EAC3B,4BAA4B,EAC5B,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,2BAA2B,EAC3B,8BAA8B,EAC9B,6BAA6B,EAC7B,qBAAqB,GACtB,MAAM,8BAA8B,CAAC"}
1
+ {"version":3,"file":"sim-sns-command.types.d.ts","sourceRoot":"","sources":["../../../../src/service/sns/command/sim-sns-command.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,YAAY,EACV,qBAAqB,EACrB,0BAA0B,EAC1B,2BAA2B,EAC3B,qBAAqB,EACrB,0BAA0B,EAC1B,2BAA2B,EAC3B,4BAA4B,EAC5B,iCAAiC,EACjC,kCAAkC,EAClC,oBAAoB,EACpB,yBAAyB,EACzB,0BAA0B,EAC1B,4BAA4B,EAC5B,iCAAiC,EACjC,kCAAkC,EAClC,iBAAiB,EACjB,SAAS,GACV,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,mCAAmC,EACnC,wCAAwC,EACxC,yCAAyC,EACzC,kCAAkC,EAClC,uCAAuC,EACvC,wCAAwC,EACxC,2BAA2B,EAC3B,gCAAgC,EAChC,iCAAiC,EACjC,mCAAmC,EACnC,wCAAwC,EACxC,yCAAyC,EACzC,wBAAwB,EACxB,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,qBAAqB,EACrB,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,wCAAwC,CAAC;AAChD,YAAY,EACV,sCAAsC,EACtC,2CAA2C,EAC3C,4CAA4C,EAC5C,kCAAkC,EAClC,uCAAuC,EACvC,wCAAwC,EACxC,0BAA0B,EAC1B,+BAA+B,EAC/B,gCAAgC,GACjC,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,sBAAsB,EACtB,2BAA2B,EAC3B,4BAA4B,EAC5B,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,2BAA2B,EAC3B,8BAA8B,EAC9B,6BAA6B,EAC7B,qBAAqB,GACtB,MAAM,8BAA8B,CAAC"}
@@ -1,12 +1,15 @@
1
1
  import type { BackgroundScheduler } from "../../../util/background/background.js";
2
2
  import type { SimAwsAccountRegionScope } from "../../aws/sim-aws-account-region-scope.js";
3
3
  import type { SimIamInterServiceAuthZ } from "../../iam/authorize/sim-iam-inter-service-auth-z.js";
4
- import type { SimSnsDeliveryEndpoints } from "../delivery/sim-sns-delivery.js";
5
4
  import { SimSnsFanOut } from "../delivery/sim-sns-fan-out.js";
5
+ import { type SimSnsOutwardDeliveryEndpoints } from "../delivery/sim-sns-protocol-delivery-endpoints.js";
6
6
  import { SimSnsMessageSigner } from "../signature/sim-sns-message-signer.js";
7
7
  import type { SimSnsSubscriptionStore } from "../subscription/sim-sns-subscription-store.js";
8
8
  import type { SimSnsTopicStore } from "../topic/sim-sns-topic-store.js";
9
- import { SimSnsPublishCommands } from "./publish/sim-sns-publish-commands.js";
9
+ import { SimSnsOptOutList } from "../sms/sim-sns-opt-out-list.js";
10
+ import { SimSnsSentSmsStore } from "../sms/sim-sns-sent-sms-store.js";
11
+ import { SimSnsPublishDispatch } from "./publish/sim-sns-publish-dispatch.js";
12
+ import { SimSnsOptOutCommands } from "./sms/sim-sns-opt-out-commands.js";
10
13
  import { SimSnsSubscriptionAttributeCommands } from "./subscription/sim-sns-subscription-attribute-commands.js";
11
14
  import { SimSnsSubscriptionCommands } from "./subscription/sim-sns-subscription-commands.js";
12
15
  import { SimSnsSubscriptionListings } from "./subscription/sim-sns-subscription-listings.js";
@@ -18,7 +21,7 @@ interface SimSnsCommandsProperties {
18
21
  readonly subscriptions: SimSnsSubscriptionStore;
19
22
  readonly iam: SimIamInterServiceAuthZ;
20
23
  readonly background: BackgroundScheduler;
21
- readonly deliveryEndpoints: SimSnsDeliveryEndpoints;
24
+ readonly deliveryEndpoints: SimSnsOutwardDeliveryEndpoints;
22
25
  readonly accountRegionScope: SimAwsAccountRegionScope;
23
26
  }
24
27
  /**
@@ -36,9 +39,14 @@ export declare class SimSnsCommands {
36
39
  readonly subscriptions: SimSnsSubscriptionCommands;
37
40
  readonly subscriptionListings: SimSnsSubscriptionListings;
38
41
  readonly subscriptionAttributes: SimSnsSubscriptionAttributeCommands;
39
- readonly publish: SimSnsPublishCommands;
42
+ readonly publish: SimSnsPublishDispatch;
43
+ readonly optOut: SimSnsOptOutCommands;
40
44
  readonly fanOut: SimSnsFanOut;
41
45
  readonly signer: SimSnsMessageSigner;
46
+ /** Every SMS this scope would have sent, delivered or suppressed. */
47
+ readonly sentSms: SimSnsSentSmsStore;
48
+ /** The numbers this scope will send no SMS to. */
49
+ readonly optOutList: SimSnsOptOutList;
42
50
  constructor(properties: SimSnsCommandsProperties);
43
51
  }
44
52
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"sim-sns-commands.d.ts","sourceRoot":"","sources":["../../../../src/service/sns/command/sim-sns-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AAC1F,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qDAAqD,CAAC;AACnG,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAE/E,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AAC7F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAExE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAE9E,OAAO,EAAE,mCAAmC,EAAE,MAAM,2DAA2D,CAAC;AAChH,OAAO,EAAE,0BAA0B,EAAE,MAAM,iDAAiD,CAAC;AAC7F,OAAO,EAAE,0BAA0B,EAAE,MAAM,iDAAiD,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAExE,UAAU,wBAAwB;IAChC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,uBAAuB,CAAC;IAChD,QAAQ,CAAC,GAAG,EAAE,uBAAuB,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC;IACzC,QAAQ,CAAC,iBAAiB,EAAE,uBAAuB,CAAC;IACpD,QAAQ,CAAC,kBAAkB,EAAE,wBAAwB,CAAC;CACvD;AAED;;;;;;;GAOG;AACH,qBAAa,cAAc;IACzB,SAAgB,aAAa,EAAE,iBAAiB,CAAC;IACjD,SAAgB,MAAM,EAAE,mBAAmB,CAAC;IAC5C,SAAgB,eAAe,EAAE,4BAA4B,CAAC;IAC9D,SAAgB,aAAa,EAAE,0BAA0B,CAAC;IAC1D,SAAgB,oBAAoB,EAAE,0BAA0B,CAAC;IACjE,SAAgB,sBAAsB,EAAE,mCAAmC,CAAC;IAC5E,SAAgB,OAAO,EAAE,qBAAqB,CAAC;IAC/C,SAAgB,MAAM,EAAE,YAAY,CAAC;IACrC,SAAgB,MAAM,EAAE,mBAAmB,CAAC;IAE5C,YAAY,UAAU,EAAE,wBAAwB,EAmD/C;CACF"}
1
+ {"version":3,"file":"sim-sns-commands.d.ts","sourceRoot":"","sources":["../../../../src/service/sns/command/sim-sns-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AAC1F,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qDAAqD,CAAC;AAEnG,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EACL,KAAK,8BAA8B,EAEpC,MAAM,oDAAoD,CAAC;AAE5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AAC7F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAGtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAE9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAEzE,OAAO,EAAE,mCAAmC,EAAE,MAAM,2DAA2D,CAAC;AAChH,OAAO,EAAE,0BAA0B,EAAE,MAAM,iDAAiD,CAAC;AAC7F,OAAO,EAAE,0BAA0B,EAAE,MAAM,iDAAiD,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAExE,UAAU,wBAAwB;IAChC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,uBAAuB,CAAC;IAChD,QAAQ,CAAC,GAAG,EAAE,uBAAuB,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC;IACzC,QAAQ,CAAC,iBAAiB,EAAE,8BAA8B,CAAC;IAC3D,QAAQ,CAAC,kBAAkB,EAAE,wBAAwB,CAAC;CACvD;AAED;;;;;;;GAOG;AACH,qBAAa,cAAc;IACzB,SAAgB,aAAa,EAAE,iBAAiB,CAAC;IACjD,SAAgB,MAAM,EAAE,mBAAmB,CAAC;IAC5C,SAAgB,eAAe,EAAE,4BAA4B,CAAC;IAC9D,SAAgB,aAAa,EAAE,0BAA0B,CAAC;IAC1D,SAAgB,oBAAoB,EAAE,0BAA0B,CAAC;IACjE,SAAgB,sBAAsB,EAAE,mCAAmC,CAAC;IAC5E,SAAgB,OAAO,EAAE,qBAAqB,CAAC;IAC/C,SAAgB,MAAM,EAAE,oBAAoB,CAAC;IAC7C,SAAgB,MAAM,EAAE,YAAY,CAAC;IACrC,SAAgB,MAAM,EAAE,mBAAmB,CAAC;IAE5C,qEAAqE;IACrE,SAAgB,OAAO,qBAA4B;IAEnD,kDAAkD;IAClD,SAAgB,UAAU,mBAA0B;IAEpD,YAAY,UAAU,EAAE,wBAAwB,EA0E/C;CACF"}
@@ -1,8 +1,15 @@
1
1
  import { SimSnsDeliveryRequests } from "../delivery/sim-sns-delivery-request.js";
2
2
  import { SimSnsFanOut } from "../delivery/sim-sns-fan-out.js";
3
+ import { SimSnsProtocolDeliveryEndpoints, } from "../delivery/sim-sns-protocol-delivery-endpoints.js";
4
+ import { SimSnsDeliverySms } from "../delivery/sms/sim-sns-delivery-sms.js";
3
5
  import { SimSnsMessageSigner } from "../signature/sim-sns-message-signer.js";
6
+ import { SimSnsOptOutList } from "../sms/sim-sns-opt-out-list.js";
7
+ import { SimSnsSentSmsStore } from "../sms/sim-sns-sent-sms-store.js";
4
8
  import { SimSnsAuthorizer } from "./authorize/sim-sns-authorizer.js";
5
9
  import { SimSnsPublishCommands } from "./publish/sim-sns-publish-commands.js";
10
+ import { SimSnsPublishDispatch } from "./publish/sim-sns-publish-dispatch.js";
11
+ import { SimSnsPublishSms } from "./publish/sim-sns-publish-sms.js";
12
+ import { SimSnsOptOutCommands } from "./sms/sim-sns-opt-out-commands.js";
6
13
  import { SimSnsSubscriptionAccess } from "./subscription/sim-sns-subscription-access.js";
7
14
  import { SimSnsSubscriptionAttributeCommands } from "./subscription/sim-sns-subscription-attribute-commands.js";
8
15
  import { SimSnsSubscriptionCommands } from "./subscription/sim-sns-subscription-commands.js";
@@ -27,8 +34,13 @@ export class SimSnsCommands {
27
34
  subscriptionListings;
28
35
  subscriptionAttributes;
29
36
  publish;
37
+ optOut;
30
38
  fanOut;
31
39
  signer;
40
+ /** Every SMS this scope would have sent, delivered or suppressed. */
41
+ sentSms = new SimSnsSentSmsStore();
42
+ /** The numbers this scope will send no SMS to. */
43
+ optOutList = new SimSnsOptOutList();
32
44
  constructor(properties) {
33
45
  const { topics, subscriptions, accountRegionScope, background } = properties;
34
46
  const access = new SimSnsTopicAccess({
@@ -44,7 +56,18 @@ export class SimSnsCommands {
44
56
  this.signer = new SimSnsMessageSigner({ accountRegionScope });
45
57
  this.fanOut = new SimSnsFanOut({
46
58
  subscriptions,
47
- endpoints: properties.deliveryEndpoints,
59
+ // The protocols reaching another service are supplied from outside, and
60
+ // the one that reaches nothing is filled in here, where the store it
61
+ // records on lives.
62
+ endpoints: new SimSnsProtocolDeliveryEndpoints({
63
+ byProtocol: {
64
+ ...properties.deliveryEndpoints,
65
+ sms: new SimSnsDeliverySms({
66
+ optOutList: this.optOutList,
67
+ sent: this.sentSms,
68
+ }),
69
+ },
70
+ }),
48
71
  requests: new SimSnsDeliveryRequests({
49
72
  signer: this.signer,
50
73
  accountRegionScope,
@@ -73,10 +96,22 @@ export class SimSnsCommands {
73
96
  this.subscriptionAttributes = new SimSnsSubscriptionAttributeCommands({
74
97
  access: subscriptionAccess,
75
98
  });
76
- this.publish = new SimSnsPublishCommands({
99
+ this.publish = new SimSnsPublishDispatch({
100
+ topic: new SimSnsPublishCommands({
101
+ access,
102
+ clock: background,
103
+ fanOut: this.fanOut,
104
+ }),
105
+ sms: new SimSnsPublishSms({
106
+ access,
107
+ clock: background,
108
+ optOutList: this.optOutList,
109
+ sent: this.sentSms,
110
+ }),
111
+ });
112
+ this.optOut = new SimSnsOptOutCommands({
77
113
  access,
78
- clock: background,
79
- fanOut: this.fanOut,
114
+ optOutList: this.optOutList,
80
115
  });
81
116
  }
82
117
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sim-sns-commands.js","sourceRoot":"","sources":["../../../../src/service/sns/command/sim-sns-commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sim-sns-commands.js","sourceRoot":"","sources":["../../../../src/service/sns/command/sim-sns-commands.ts"],"names":[],"mappings":"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"}