From e46999b7f715ab1c61e0b175244a589add53ef43 Mon Sep 17 00:00:00 2001 From: bflynn-cms Date: Tue, 17 Sep 2024 07:48:07 -0500 Subject: [PATCH 01/19] ensure subsequent submission is only for users with access to submit packages (#1503) Co-authored-by: Dark-Knight-1313 <129700162+Dark-Knight-1313@users.noreply.github.com> --- services/app-api/utils/actionDelegate.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/services/app-api/utils/actionDelegate.js b/services/app-api/utils/actionDelegate.js index c74630c7b..68b6acc04 100644 --- a/services/app-api/utils/actionDelegate.js +++ b/services/app-api/utils/actionDelegate.js @@ -24,9 +24,10 @@ function getDefaultActions( break; case Workflow.ONEMAC_STATUS.PENDING_CONCURRENCE: case Workflow.ONEMAC_STATUS.PENDING_APPROVAL: - if (userRole.canAccessForms) + if (userRole.canAccessForms) { actions.push(Workflow.PACKAGE_ACTION.WITHDRAW); - actions.push(Workflow.PACKAGE_ACTION.SUBSEQUENT_SUBMISSION); + actions.push(Workflow.PACKAGE_ACTION.SUBSEQUENT_SUBMISSION); + } break; case Workflow.ONEMAC_STATUS.RAI_ISSUED: if (userRole.canAccessForms) From ff5dab1f6c4bab91d02a28ca205f9180a8bb352b Mon Sep 17 00:00:00 2001 From: bflynn-cms Date: Thu, 19 Sep 2024 06:27:22 -0500 Subject: [PATCH 02/19] Merge develop to masterclone (subsub UAT) (#1508) * Update sub sub email language (#1499) * OY2-28760 - updated language in the sub sub email notifications to match docs --------- Co-authored-by: Andie Swift --------- Signed-off-by: dependabot[bot] Co-authored-by: Kristin Grue Co-authored-by: Valencia McMurray Co-authored-by: bflynn-cms Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Valencia McMurray <46330428+Valencia2019@users.noreply.github.com> Co-authored-by: Dark-Knight-1313 <129700162+Dark-Knight-1313@users.noreply.github.com> Co-authored-by: Mike Dial * ensure subsequent submission is only for users with access to submit packages (#1503) Co-authored-by: Dark-Knight-1313 <129700162+Dark-Knight-1313@users.noreply.github.com> --------- Signed-off-by: dependabot[bot] Co-authored-by: Andie Swift Co-authored-by: Kristin Grue Co-authored-by: Valencia McMurray Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Valencia McMurray <46330428+Valencia2019@users.noreply.github.com> Co-authored-by: Dark-Knight-1313 <129700162+Dark-Knight-1313@users.noreply.github.com> Co-authored-by: Mike Dial --- services/app-api/email/CMSSubsequentSubmissionNotice.js | 2 -- services/app-api/email/stateSubsequentSubmissionReceipt.js | 2 +- services/app-api/utils/actionDelegate.js | 5 +++-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/services/app-api/email/CMSSubsequentSubmissionNotice.js b/services/app-api/email/CMSSubsequentSubmissionNotice.js index 8743ab7b0..3b0ef2e82 100644 --- a/services/app-api/email/CMSSubsequentSubmissionNotice.js +++ b/services/app-api/email/CMSSubsequentSubmissionNotice.js @@ -52,8 +52,6 @@ export const CMSSubsequentSubmissionNotice = async (data, config) => { its details by clicking on its ID number. -
-

If the contents of this email seem suspicious, do not open them, and instead forward this email to SPAM@cms.hhs.gov.

Thank you!

`, }; diff --git a/services/app-api/email/stateSubsequentSubmissionReceipt.js b/services/app-api/email/stateSubsequentSubmissionReceipt.js index 163de810f..10e848d1c 100644 --- a/services/app-api/email/stateSubsequentSubmissionReceipt.js +++ b/services/app-api/email/stateSubsequentSubmissionReceipt.js @@ -25,7 +25,7 @@ export const stateSubsequentSubmissionReceipt = (data, config) => { config.typeLabel } ${data.componentId}:

${formatPackageDetails(data, config)} -

If you have questions or did not expect this email, please contact SPA@CMS.HHS.gov.

+

If you have any questions or did not expect this email, please contact your CPOC.

Thank you.

`, }; }; diff --git a/services/app-api/utils/actionDelegate.js b/services/app-api/utils/actionDelegate.js index c74630c7b..68b6acc04 100644 --- a/services/app-api/utils/actionDelegate.js +++ b/services/app-api/utils/actionDelegate.js @@ -24,9 +24,10 @@ function getDefaultActions( break; case Workflow.ONEMAC_STATUS.PENDING_CONCURRENCE: case Workflow.ONEMAC_STATUS.PENDING_APPROVAL: - if (userRole.canAccessForms) + if (userRole.canAccessForms) { actions.push(Workflow.PACKAGE_ACTION.WITHDRAW); - actions.push(Workflow.PACKAGE_ACTION.SUBSEQUENT_SUBMISSION); + actions.push(Workflow.PACKAGE_ACTION.SUBSEQUENT_SUBMISSION); + } break; case Workflow.ONEMAC_STATUS.RAI_ISSUED: if (userRole.canAccessForms) From 4b705702b2497d4f049d2461158059f6d5ca163a Mon Sep 17 00:00:00 2001 From: bflynn-cms Date: Thu, 19 Sep 2024 07:03:37 -0500 Subject: [PATCH 03/19] trim content before ready check for addl info (#1509) --- services/ui-src/src/page/OneMACForm.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/services/ui-src/src/page/OneMACForm.tsx b/services/ui-src/src/page/OneMACForm.tsx index 57af0d241..7ac971412 100644 --- a/services/ui-src/src/page/OneMACForm.tsx +++ b/services/ui-src/src/page/OneMACForm.tsx @@ -316,7 +316,10 @@ const OneMACForm: React.FC<{ formConfig: OneMACFormConfig }> = ({ ); const isAdditionalInformationReady: boolean = Boolean( - formConfig.addlInfoRequired ? oneMacFormData.additionalInformation : true + formConfig.addlInfoRequired + ? oneMacFormData.additionalInformation && + oneMacFormData.additionalInformation.trim().length > 0 + : true ); setIsSubmissionReady( From 39b38f6e6ef86ac571423c55469cf05e5556d4af Mon Sep 17 00:00:00 2001 From: Alex Youssefinia Date: Fri, 27 Sep 2024 12:56:02 -0500 Subject: [PATCH 04/19] remove svg icon from faq header buttons and filter panel buttons --- services/ui-src/src/index.scss | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/services/ui-src/src/index.scss b/services/ui-src/src/index.scss index 2b99d50f9..7c426555d 100644 --- a/services/ui-src/src/index.scss +++ b/services/ui-src/src/index.scss @@ -2954,3 +2954,9 @@ article.form-container { @extend .ds-c-button; margin: 10px; } +.accordion-button > svg { + display: none; +} +.inversed-accordion-button > svg { + display: none; +} \ No newline at end of file From 5099f46b5b38b3196590340fb8fd7d715f95d2e9 Mon Sep 17 00:00:00 2001 From: Alex Youssefinia Date: Sun, 29 Sep 2024 22:32:02 -0500 Subject: [PATCH 05/19] update text on subsequent submissions banner along with associated cypress tests --- services/ui-src/src/libs/formLib.tsx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/services/ui-src/src/libs/formLib.tsx b/services/ui-src/src/libs/formLib.tsx index ad087b118..10fd29d87 100644 --- a/services/ui-src/src/libs/formLib.tsx +++ b/services/ui-src/src/libs/formLib.tsx @@ -181,11 +181,10 @@ export const defaultConfirmSubmitMessageSubsequentSubmission = ( ); export const defaultConfirmSubsequentSubmission: ConfirmSubmitType = { - confirmSubmitHeading: "OneMAC only for document submission", + confirmSubmitHeading: "Submit additional documents?", confirmSubmitMessage: (

- States and CMS reviewers will communicate about the submission through - email. + These documents will be added to the package and reviewed by CMS.”

), }; From d301fd2a69270e7aea01aa2417d8dc8fcfb8e777 Mon Sep 17 00:00:00 2001 From: Alex Youssefinia Date: Mon, 30 Sep 2024 10:40:08 -0500 Subject: [PATCH 06/19] removed apostrophe --- services/ui-src/src/libs/formLib.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/ui-src/src/libs/formLib.tsx b/services/ui-src/src/libs/formLib.tsx index 10fd29d87..da0344a24 100644 --- a/services/ui-src/src/libs/formLib.tsx +++ b/services/ui-src/src/libs/formLib.tsx @@ -184,7 +184,7 @@ export const defaultConfirmSubsequentSubmission: ConfirmSubmitType = { confirmSubmitHeading: "Submit additional documents?", confirmSubmitMessage: (

- These documents will be added to the package and reviewed by CMS.” + These documents will be added to the package and reviewed by CMS.

), }; From 6a3998ba6fd365b9ab384cddf48c435ddc19ea8a Mon Sep 17 00:00:00 2001 From: Alex Youssefinia Date: Mon, 30 Sep 2024 10:47:35 -0500 Subject: [PATCH 07/19] modify cypres test files to reflect text change --- ...ubmission_1915b_Amendment_Waiver.spec.feature | 16 ++++++++-------- ...uent_Submission_1915c_Appendix_K.spec.feature | 16 ++++++++-------- .../Subsequent_Submission_CHIP_Spa.spec.feature | 16 ++++++++-------- ...equent_Submission_Initial_Waiver.spec.feature | 16 ++++++++-------- ...bsequent_Submission_Medicaid_Spa.spec.feature | 16 ++++++++-------- ...equent_Submission_Renewal_Waiver.spec.feature | 16 ++++++++-------- 6 files changed, 48 insertions(+), 48 deletions(-) diff --git a/tests/cypress/cypress/e2e/Subsequent_Submission_1915b_Amendment_Waiver.spec.feature b/tests/cypress/cypress/e2e/Subsequent_Submission_1915b_Amendment_Waiver.spec.feature index f3d434f99..04617c2ef 100644 --- a/tests/cypress/cypress/e2e/Subsequent_Submission_1915b_Amendment_Waiver.spec.feature +++ b/tests/cypress/cypress/e2e/Subsequent_Submission_1915b_Amendment_Waiver.spec.feature @@ -31,8 +31,8 @@ Feature: Subsequent Submission 1915b Waiver Amendment Then into "Reason for subsequent submission" type "This is an automated subsequent submission test." Then Click the Submit Button without waiting Then verify the modal pop-up is visible - Then verify the dialog title contains "OneMAC only for document submission" - Then verify the detailed text in the modal contains "States and CMS reviewers will communicate about the submission through email." + Then verify the dialog title contains "Submit additional documents?" + Then verify the detailed text in the modal contains "These documents will be added to the package and reviewed by CMS." Then verify the yes, submit modal button is visible and clickable Then click modal cancel button Then click form cancel button @@ -55,8 +55,8 @@ Feature: Subsequent Submission 1915b Waiver Amendment Then into "Reason for subsequent submission" type "This is an automated subsequent submission test." Then Click the Submit Button without waiting Then verify the modal pop-up is visible - Then verify the dialog title contains "OneMAC only for document submission" - Then verify the detailed text in the modal contains "States and CMS reviewers will communicate about the submission through email." + Then verify the dialog title contains "Submit additional documents?" + Then verify the detailed text in the modal contains "These documents will be added to the package and reviewed by CMS." Then verify the yes, submit modal button is visible and clickable Then click modal cancel button Then click form cancel button @@ -71,8 +71,8 @@ Feature: Subsequent Submission 1915b Waiver Amendment Then into "Reason for subsequent submission" type "This is an automated subsequent submission test." Then Click the Submit Button without waiting Then verify the modal pop-up is visible - Then verify the dialog title contains "OneMAC only for document submission" - Then verify the detailed text in the modal contains "States and CMS reviewers will communicate about the submission through email." + Then verify the dialog title contains "Submit additional documents?" + Then verify the detailed text in the modal contains "These documents will be added to the package and reviewed by CMS." Then verify the yes, submit modal button is visible and clickable Then click the yes, submit modal button Then i am on Dashboard Page @@ -87,8 +87,8 @@ Feature: Subsequent Submission 1915b Waiver Amendment Then into "Reason for subsequent submission" type "This is an automated subsequent submission test." Then Click the Submit Button without waiting Then verify the modal pop-up is visible - Then verify the dialog title contains "OneMAC only for document submission" - Then verify the detailed text in the modal contains "States and CMS reviewers will communicate about the submission through email." + Then verify the dialog title contains "Submit additional documents?" + Then verify the detailed text in the modal contains "These documents will be added to the package and reviewed by CMS." Then verify the yes, submit modal button is visible and clickable Then click the yes, submit modal button Then verify the package details page is visible diff --git a/tests/cypress/cypress/e2e/Subsequent_Submission_1915c_Appendix_K.spec.feature b/tests/cypress/cypress/e2e/Subsequent_Submission_1915c_Appendix_K.spec.feature index d6d2a0c99..abaf6c314 100644 --- a/tests/cypress/cypress/e2e/Subsequent_Submission_1915c_Appendix_K.spec.feature +++ b/tests/cypress/cypress/e2e/Subsequent_Submission_1915c_Appendix_K.spec.feature @@ -31,8 +31,8 @@ Feature: Subsequent Submission 1915c App K Waiver Then into "Reason for subsequent submission" type "This is an automated subsequent submission test." Then Click the Submit Button without waiting Then verify the modal pop-up is visible - Then verify the dialog title contains "OneMAC only for document submission" - Then verify the detailed text in the modal contains "States and CMS reviewers will communicate about the submission through email." + Then verify the dialog title contains "Submit additional documents?" + Then verify the detailed text in the modal contains "These documents will be added to the package and reviewed by CMS." Then verify the yes, submit modal button is visible and clickable Then click modal cancel button Then click form cancel button @@ -55,8 +55,8 @@ Feature: Subsequent Submission 1915c App K Waiver Then into "Reason for subsequent submission" type "This is an automated subsequent submission test." Then Click the Submit Button without waiting Then verify the modal pop-up is visible - Then verify the dialog title contains "OneMAC only for document submission" - Then verify the detailed text in the modal contains "States and CMS reviewers will communicate about the submission through email." + Then verify the dialog title contains "Submit additional documents?" + Then verify the detailed text in the modal contains "These documents will be added to the package and reviewed by CMS." Then verify the yes, submit modal button is visible and clickable Then click modal cancel button Then click form cancel button @@ -72,8 +72,8 @@ Feature: Subsequent Submission 1915c App K Waiver Then into "Reason for subsequent submission" type "This is an automated subsequent submission test." Then Click the Submit Button without waiting Then verify the modal pop-up is visible - Then verify the dialog title contains "OneMAC only for document submission" - Then verify the detailed text in the modal contains "States and CMS reviewers will communicate about the submission through email." + Then verify the dialog title contains "Submit additional documents?" + Then verify the detailed text in the modal contains "These documents will be added to the package and reviewed by CMS." Then click the yes, submit modal button Then i am on Dashboard Page Then verify the success message is "Documents submitted" @@ -88,8 +88,8 @@ Feature: Subsequent Submission 1915c App K Waiver Then into "Reason for subsequent submission" type "This is an automated subsequent submission test." Then Click the Submit Button without waiting Then verify the modal pop-up is visible - Then verify the dialog title contains "OneMAC only for document submission" - Then verify the detailed text in the modal contains "States and CMS reviewers will communicate about the submission through email." + Then verify the dialog title contains "Submit additional documents?" + Then verify the detailed text in the modal contains "These documents will be added to the package and reviewed by CMS." Then verify the yes, submit modal button is visible and clickable Then click the yes, submit modal button Then verify the package details page is visible diff --git a/tests/cypress/cypress/e2e/Subsequent_Submission_CHIP_Spa.spec.feature b/tests/cypress/cypress/e2e/Subsequent_Submission_CHIP_Spa.spec.feature index 02dadbfbc..45f1d8da3 100644 --- a/tests/cypress/cypress/e2e/Subsequent_Submission_CHIP_Spa.spec.feature +++ b/tests/cypress/cypress/e2e/Subsequent_Submission_CHIP_Spa.spec.feature @@ -30,8 +30,8 @@ Feature: CHIP SPA State Details View - Card View with Actions Then into "Reason for subsequent submission" type "This is an automated subsequent submission test." Then Click the Submit Button without waiting Then verify the modal pop-up is visible - Then verify the dialog title contains "OneMAC only for document submission" - Then verify the detailed text in the modal contains "States and CMS reviewers will communicate about the submission through email." + Then verify the dialog title contains "Submit additional documents?" + Then verify the detailed text in the modal contains "These documents will be added to the package and reviewed by CMS." Then verify the yes, submit modal button is visible and clickable Then click modal cancel button Then click form cancel button @@ -54,8 +54,8 @@ Feature: CHIP SPA State Details View - Card View with Actions Then into "Reason for subsequent submission" type "This is an automated subsequent submission test." Then Click the Submit Button without waiting Then verify the modal pop-up is visible - Then verify the dialog title contains "OneMAC only for document submission" - Then verify the detailed text in the modal contains "States and CMS reviewers will communicate about the submission through email." + Then verify the dialog title contains "Submit additional documents?" + Then verify the detailed text in the modal contains "These documents will be added to the package and reviewed by CMS." Then verify the yes, submit modal button is visible and clickable Then click modal cancel button Then click form cancel button @@ -71,8 +71,8 @@ Feature: CHIP SPA State Details View - Card View with Actions Then into "Reason for subsequent submission" type "This is an automated subsequent submission test." Then Click the Submit Button without waiting Then verify the modal pop-up is visible - Then verify the dialog title contains "OneMAC only for document submission" - Then verify the detailed text in the modal contains "States and CMS reviewers will communicate about the submission through email." + Then verify the dialog title contains "Submit additional documents?" + Then verify the detailed text in the modal contains "These documents will be added to the package and reviewed by CMS." Then verify the yes, submit modal button is visible and clickable Then click the yes, submit modal button Then i am on Dashboard Page @@ -88,8 +88,8 @@ Feature: CHIP SPA State Details View - Card View with Actions Then into "Reason for subsequent submission" type "This is an automated subsequent submission test." Then Click the Submit Button without waiting Then verify the modal pop-up is visible - Then verify the dialog title contains "OneMAC only for document submission" - Then verify the detailed text in the modal contains "States and CMS reviewers will communicate about the submission through email." + Then verify the dialog title contains "Submit additional documents?" + Then verify the detailed text in the modal contains "These documents will be added to the package and reviewed by CMS." Then verify the yes, submit modal button is visible and clickable Then click the yes, submit modal button Then verify the package details page is visible diff --git a/tests/cypress/cypress/e2e/Subsequent_Submission_Initial_Waiver.spec.feature b/tests/cypress/cypress/e2e/Subsequent_Submission_Initial_Waiver.spec.feature index 52024390f..7404568ce 100644 --- a/tests/cypress/cypress/e2e/Subsequent_Submission_Initial_Waiver.spec.feature +++ b/tests/cypress/cypress/e2e/Subsequent_Submission_Initial_Waiver.spec.feature @@ -31,8 +31,8 @@ Feature: Subsequent Submission 1915b Initial Waiver Then into "Reason for subsequent submission" type "This is an automated subsequent submission test." Then Click the Submit Button without waiting Then verify the modal pop-up is visible - Then verify the dialog title contains "OneMAC only for document submission" - Then verify the detailed text in the modal contains "States and CMS reviewers will communicate about the submission through email." + Then verify the dialog title contains "Submit additional documents?" + Then verify the detailed text in the modal contains "These documents will be added to the package and reviewed by CMS." Then verify the yes, submit modal button is visible and clickable Then click modal cancel button Then click form cancel button @@ -54,8 +54,8 @@ Feature: Subsequent Submission 1915b Initial Waiver Then into "Reason for subsequent submission" type "This is an automated subsequent submission test." Then Click the Submit Button without waiting Then verify the modal pop-up is visible - Then verify the dialog title contains "OneMAC only for document submission" - Then verify the detailed text in the modal contains "States and CMS reviewers will communicate about the submission through email." + Then verify the dialog title contains "Submit additional documents?" + Then verify the detailed text in the modal contains "These documents will be added to the package and reviewed by CMS." Then verify the yes, submit modal button is visible and clickable Then click modal cancel button Then click form cancel button @@ -71,8 +71,8 @@ Feature: Subsequent Submission 1915b Initial Waiver Then into "Reason for subsequent submission" type "This is an automated subsequent submission test." Then Click the Submit Button without waiting Then verify the modal pop-up is visible - Then verify the dialog title contains "OneMAC only for document submission" - Then verify the detailed text in the modal contains "States and CMS reviewers will communicate about the submission through email." + Then verify the dialog title contains "Submit additional documents?" + Then verify the detailed text in the modal contains "These documents will be added to the package and reviewed by CMS." Then verify the yes, submit modal button is visible and clickable Then click the yes, submit modal button Then i am on Dashboard Page @@ -89,8 +89,8 @@ Feature: Subsequent Submission 1915b Initial Waiver Then into "Reason for subsequent submission" type "This is an automated subsequent submission test." Then Click the Submit Button without waiting Then verify the modal pop-up is visible - Then verify the dialog title contains "OneMAC only for document submission" - Then verify the detailed text in the modal contains "States and CMS reviewers will communicate about the submission through email." + Then verify the dialog title contains "Submit additional documents?" + Then verify the detailed text in the modal contains "These documents will be added to the package and reviewed by CMS." Then verify the yes, submit modal button is visible and clickable Then click the yes, submit modal button Then verify the package details page is visible diff --git a/tests/cypress/cypress/e2e/Subsequent_Submission_Medicaid_Spa.spec.feature b/tests/cypress/cypress/e2e/Subsequent_Submission_Medicaid_Spa.spec.feature index 157bd87a1..48f2d65a3 100644 --- a/tests/cypress/cypress/e2e/Subsequent_Submission_Medicaid_Spa.spec.feature +++ b/tests/cypress/cypress/e2e/Subsequent_Submission_Medicaid_Spa.spec.feature @@ -31,8 +31,8 @@ Feature: Medicaid SPA State Details View - Card View with Actions Then into "Reason for subsequent submission" type "This is an automated subsequent submission test." Then Click the Submit Button without waiting Then verify the modal pop-up is visible - Then verify the dialog title contains "OneMAC only for document submission" - Then verify the detailed text in the modal contains "States and CMS reviewers will communicate about the submission through email." + Then verify the dialog title contains "Submit additional documents?" + Then verify the detailed text in the modal contains "These documents will be added to the package and reviewed by CMS." Then verify the yes, submit modal button is visible and clickable Then click modal cancel button Then click form cancel button @@ -56,8 +56,8 @@ Feature: Medicaid SPA State Details View - Card View with Actions Then into "Reason for subsequent submission" type "This is an automated subsequent submission test." Then Click the Submit Button without waiting Then verify the modal pop-up is visible - Then verify the dialog title contains "OneMAC only for document submission" - Then verify the detailed text in the modal contains "States and CMS reviewers will communicate about the submission through email." + Then verify the dialog title contains "Submit additional documents?" + Then verify the detailed text in the modal contains "These documents will be added to the package and reviewed by CMS." Then verify the yes, submit modal button is visible and clickable Then click modal cancel button Then click form cancel button @@ -73,8 +73,8 @@ Feature: Medicaid SPA State Details View - Card View with Actions Then into "Reason for subsequent submission" type "This is an automated subsequent submission test." Then Click the Submit Button without waiting Then verify the modal pop-up is visible - Then verify the dialog title contains "OneMAC only for document submission" - Then verify the detailed text in the modal contains "States and CMS reviewers will communicate about the submission through email." + Then verify the dialog title contains "Submit additional documents?" + Then verify the detailed text in the modal contains "These documents will be added to the package and reviewed by CMS." Then verify the yes, submit modal button is visible and clickable Then click the yes, submit modal button Then i am on Dashboard Page @@ -91,8 +91,8 @@ Feature: Medicaid SPA State Details View - Card View with Actions Then into "Reason for subsequent submission" type "This is an automated subsequent submission test." Then Click the Submit Button without waiting Then verify the modal pop-up is visible - Then verify the dialog title contains "OneMAC only for document submission" - Then verify the detailed text in the modal contains "States and CMS reviewers will communicate about the submission through email." + Then verify the dialog title contains "Submit additional documents?" + Then verify the detailed text in the modal contains "These documents will be added to the package and reviewed by CMS." Then verify the yes, submit modal button is visible and clickable Then click the yes, submit modal button Then verify the package details page is visible diff --git a/tests/cypress/cypress/e2e/Subsequent_Submission_Renewal_Waiver.spec.feature b/tests/cypress/cypress/e2e/Subsequent_Submission_Renewal_Waiver.spec.feature index 03203180e..d8fa82baa 100644 --- a/tests/cypress/cypress/e2e/Subsequent_Submission_Renewal_Waiver.spec.feature +++ b/tests/cypress/cypress/e2e/Subsequent_Submission_Renewal_Waiver.spec.feature @@ -31,8 +31,8 @@ Feature: Subsequent Submission 1915b Renewal Waiver Then into "Reason for subsequent submission" type "This is an automated subsequent submission test." Then Click the Submit Button without waiting Then verify the modal pop-up is visible - Then verify the dialog title contains "OneMAC only for document submission" - Then verify the detailed text in the modal contains "States and CMS reviewers will communicate about the submission through email." + Then verify the dialog title contains "Submit additional documents?" + Then verify the detailed text in the modal contains "These documents will be added to the package and reviewed by CMS." Then verify the yes, submit modal button is visible and clickable Then click modal cancel button Then click form cancel button @@ -55,8 +55,8 @@ Feature: Subsequent Submission 1915b Renewal Waiver Then into "Reason for subsequent submission" type "This is an automated subsequent submission test." Then Click the Submit Button without waiting Then verify the modal pop-up is visible - Then verify the dialog title contains "OneMAC only for document submission" - Then verify the detailed text in the modal contains "States and CMS reviewers will communicate about the submission through email." + Then verify the dialog title contains "Submit additional documents?" + Then verify the detailed text in the modal contains "These documents will be added to the package and reviewed by CMS." Then verify the yes, submit modal button is visible and clickable Then click modal cancel button Then click form cancel button @@ -72,8 +72,8 @@ Feature: Subsequent Submission 1915b Renewal Waiver Then into "Reason for subsequent submission" type "This is an automated subsequent submission test." Then Click the Submit Button without waiting Then verify the modal pop-up is visible - Then verify the dialog title contains "OneMAC only for document submission" - Then verify the detailed text in the modal contains "States and CMS reviewers will communicate about the submission through email." + Then verify the dialog title contains "Submit additional documents?" + Then verify the detailed text in the modal contains "These documents will be added to the package and reviewed by CMS." Then verify the yes, submit modal button is visible and clickable Then click the yes, submit modal button Then i am on Dashboard Page @@ -89,8 +89,8 @@ Feature: Subsequent Submission 1915b Renewal Waiver Then into "Reason for subsequent submission" type "This is an automated subsequent submission test." Then Click the Submit Button without waiting Then verify the modal pop-up is visible - Then verify the dialog title contains "OneMAC only for document submission" - Then verify the detailed text in the modal contains "States and CMS reviewers will communicate about the submission through email." + Then verify the dialog title contains "Submit additional documents?" + Then verify the detailed text in the modal contains "These documents will be added to the package and reviewed by CMS." Then verify the yes, submit modal button is visible and clickable Then click the yes, submit modal button Then verify the package details page is visible From d532c72e402fef821bc42c6fae97e630dd8df2be Mon Sep 17 00:00:00 2001 From: Alex Youssefinia Date: Tue, 1 Oct 2024 09:53:58 -0500 Subject: [PATCH 08/19] added and more as per story request --- services/ui-src/src/libs/formLib.tsx | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/services/ui-src/src/libs/formLib.tsx b/services/ui-src/src/libs/formLib.tsx index ad087b118..28d7dae69 100644 --- a/services/ui-src/src/libs/formLib.tsx +++ b/services/ui-src/src/libs/formLib.tsx @@ -58,7 +58,7 @@ type ConfirmSubmitType = { export const DefaultFileTypesInfo = () => (

- We accept the following file formats: .docx, .jpg, .pdf, .png, .xlsx.{" "} + We accept the following file formats: .docx, .jpg, .pdf, .png, .xlsx, and more:{" "} See the full list on the{" "} FAQ Page @@ -181,11 +181,10 @@ export const defaultConfirmSubmitMessageSubsequentSubmission = ( ); export const defaultConfirmSubsequentSubmission: ConfirmSubmitType = { - confirmSubmitHeading: "OneMAC only for document submission", + confirmSubmitHeading: "Submit additional documents?", confirmSubmitMessage: (

- States and CMS reviewers will communicate about the submission through - email. + These documents will be added to the package and reviewed by CMS.

), }; From 2e91b720e2f68fc7161c9980316e21fd857f718c Mon Sep 17 00:00:00 2001 From: Alex Youssefinia Date: Tue, 1 Oct 2024 21:17:41 -0500 Subject: [PATCH 09/19] added and more to only subsequent submissions related forms as per story request --- services/ui-src/src/libs/formLib.tsx | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/services/ui-src/src/libs/formLib.tsx b/services/ui-src/src/libs/formLib.tsx index 28d7dae69..a6935d507 100644 --- a/services/ui-src/src/libs/formLib.tsx +++ b/services/ui-src/src/libs/formLib.tsx @@ -35,6 +35,7 @@ export type OneMACFormConfig = { proposedEffectiveDate?: boolean; titleLabel?: string; submitInstructionsJSX?: JSX.Element; + subsequentSubmisssionForm?: boolean; } & PackageType & Partial & Partial & @@ -57,6 +58,18 @@ type ConfirmSubmitType = { }; export const DefaultFileTypesInfo = () => ( +

+ We accept the following file formats: .docx, .jpg, .pdf, .png, .xlsx,{" "} + See the full list on the{" "} + + FAQ Page + + . +

+); + + +export const DefaultFileTypesInfoSubSub = () => (

We accept the following file formats: .docx, .jpg, .pdf, .png, .xlsx, and more:{" "} See the full list on the{" "} @@ -67,6 +80,7 @@ export const DefaultFileTypesInfo = () => (

); + export const DefaultFileSizeInfo = ({ route }: { route: string }) => (

Maximum file size of {config.MAX_ATTACHMENT_SIZE_MB} MB per attachment.{" "} @@ -104,7 +118,7 @@ export const defaultSubsequentAttachmentInstructionsJSX = ( ) => ( <> - + ); From 3049e627011122cf5a487f82546674843cd16594 Mon Sep 17 00:00:00 2001 From: Alex Youssefinia Date: Wed, 2 Oct 2024 09:42:10 -0500 Subject: [PATCH 10/19] change comma to period --- services/ui-src/src/libs/formLib.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/ui-src/src/libs/formLib.tsx b/services/ui-src/src/libs/formLib.tsx index a6935d507..fb5a693fc 100644 --- a/services/ui-src/src/libs/formLib.tsx +++ b/services/ui-src/src/libs/formLib.tsx @@ -59,7 +59,7 @@ type ConfirmSubmitType = { export const DefaultFileTypesInfo = () => (

- We accept the following file formats: .docx, .jpg, .pdf, .png, .xlsx,{" "} + We accept the following file formats: .docx, .jpg, .pdf, .png, .xlsx.{" "} See the full list on the{" "} FAQ Page From df95d923a3dce57096707f3dab691f59e4b33c9b Mon Sep 17 00:00:00 2001 From: Alex Youssefinia Date: Wed, 2 Oct 2024 12:08:39 -0500 Subject: [PATCH 11/19] removed boolean config prop --- services/ui-src/src/libs/formLib.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/services/ui-src/src/libs/formLib.tsx b/services/ui-src/src/libs/formLib.tsx index fb5a693fc..3fe5671d6 100644 --- a/services/ui-src/src/libs/formLib.tsx +++ b/services/ui-src/src/libs/formLib.tsx @@ -35,7 +35,6 @@ export type OneMACFormConfig = { proposedEffectiveDate?: boolean; titleLabel?: string; submitInstructionsJSX?: JSX.Element; - subsequentSubmisssionForm?: boolean; } & PackageType & Partial & Partial & From 6c591849ce5a816f1eaf498213d2bfd2d6fdbd97 Mon Sep 17 00:00:00 2001 From: Andie Swift Date: Wed, 2 Oct 2024 16:21:20 -0500 Subject: [PATCH 12/19] changed jpeg to jpg on FAQ (#1522) --- services/ui-src/src/utils/fileTypes.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/ui-src/src/utils/fileTypes.tsx b/services/ui-src/src/utils/fileTypes.tsx index 71534eb22..d3ed8c773 100644 --- a/services/ui-src/src/utils/fileTypes.tsx +++ b/services/ui-src/src/utils/fileTypes.tsx @@ -11,7 +11,7 @@ export const FILE_TYPES: FileTypeInfo[] = [ { extension: ".doc", description: "MS Word Document" }, { extension: ".docx", description: "MS Word Document (xml)" }, { extension: ".gif", description: "Graphics Interchange Format" }, - { extension: ".jpeg", description: "Joint Photographic Experts Group" }, + { extension: ".jpg", description: "Joint Photographic Experts Group" }, { extension: ".odp", description: "OpenDocument Presentation (OpenOffice)" }, { extension: ".ods", description: "OpenDocument Spreadsheet (OpenOffice)" }, { extension: ".odt", description: "OpenDocument Text (OpenOffice)" }, From af516712eee87d6e018f14f37461877794876ffd Mon Sep 17 00:00:00 2001 From: Andie Swift Date: Thu, 3 Oct 2024 11:52:11 -0500 Subject: [PATCH 13/19] Update terminology from "subsequent submission" to "subsequent documents" (#1514) changed subsub to subdoc across app --- services/app-api/email/CMSSubsequentSubmissionNotice.js | 2 +- services/app-api/email/stateSubsequentSubmissionReceipt.js | 2 +- services/common/type/initialWaiverSubsequentSubmission.js | 2 +- services/common/type/medicaidSPASubsequentSubmission.js | 2 +- services/common/type/waiverAmendmentSubsequentSubmission.js | 2 +- services/common/type/waiverAppKSubsequentSubmission.js | 2 +- services/common/type/waiverRenewalSubsequentSubmission.js | 2 +- services/ui-src/src/libs/formLib.tsx | 2 +- .../src/page/chip-spa/ChipSPASubsequentSubmissionForm.test.js | 2 +- .../src/page/chip-spa/ChipSPASubsequentSubmissionForm.tsx | 2 +- .../InitialWaiverSubsequentSubmissionForm.test.js | 2 +- .../initial-waiver/InitialWaiverSubsequentSubmissionForm.tsx | 2 +- .../medicaid-spa/MedicaidSPASubsequentSubmissionForm.test.js | 2 +- .../page/medicaid-spa/MedicaidSPASubsequentSubmissionForm.tsx | 2 +- services/ui-src/src/page/section/AdditionalInfoSection.tsx | 2 +- .../WaiverAmendmentSubsequentSubmissionForm.test.js | 2 +- .../WaiverAmendmentSubsequentSubmissionForm.tsx | 2 +- .../WaiverAppKSubsequentSubmissionForm.test.js | 2 +- .../waiver-appendix-k/WaiverAppKSubsequentSubmissionForm.tsx | 2 +- .../WaiverRenewalSubsequentSubmissionForm.test.js | 2 +- .../waiver-renewal/WaiverRenewalSubsequentSubmissionForm.tsx | 2 +- .../Subsequent_Submission_1915b_Amendment_Waiver.spec.feature | 2 +- .../e2e/Subsequent_Submission_1915c_Appendix_K.spec.feature | 2 +- .../cypress/e2e/Subsequent_Submission_CHIP_Spa.spec.feature | 2 +- .../e2e/Subsequent_Submission_Initial_Waiver.spec.feature | 2 +- .../e2e/Subsequent_Submission_Medicaid_Spa.spec.feature | 2 +- .../e2e/Subsequent_Submission_Renewal_Waiver.spec.feature | 2 +- tests/cypress/cypress/e2e/common/steps.js | 2 +- tests/cypress/support/pages/oneMacFormPage.js | 4 ++-- 29 files changed, 30 insertions(+), 30 deletions(-) diff --git a/services/app-api/email/CMSSubsequentSubmissionNotice.js b/services/app-api/email/CMSSubsequentSubmissionNotice.js index 3b0ef2e82..61215dfc8 100644 --- a/services/app-api/email/CMSSubsequentSubmissionNotice.js +++ b/services/app-api/email/CMSSubsequentSubmissionNotice.js @@ -20,7 +20,7 @@ export const CMSSubsequentSubmissionNotice = async (data, config) => { let typeLabel = config.typeLabel; // cut the type label at sub sub and set that at the new idLabel typeLabel = typeLabel - .substring(0, typeLabel.indexOf("Subsequent Submission")) + .substring(0, typeLabel.indexOf("Subsequent Documents")) .trim(); config.idLabel = `${typeLabel} Package ID`; } diff --git a/services/app-api/email/stateSubsequentSubmissionReceipt.js b/services/app-api/email/stateSubsequentSubmissionReceipt.js index 10e848d1c..35556373c 100644 --- a/services/app-api/email/stateSubsequentSubmissionReceipt.js +++ b/services/app-api/email/stateSubsequentSubmissionReceipt.js @@ -11,7 +11,7 @@ export const stateSubsequentSubmissionReceipt = (data, config) => { let typeLabel = config.typeLabel; // cut the type label at sub sub and set that at the new idLabel typeLabel = typeLabel - .substring(0, typeLabel.indexOf("Subsequent Submission")) + .substring(0, typeLabel.indexOf("Subsequent Documents")) .trim(); config.idLabel = `${typeLabel} Package ID`; } diff --git a/services/common/type/initialWaiverSubsequentSubmission.js b/services/common/type/initialWaiverSubsequentSubmission.js index fbaa04d69..300ebb709 100644 --- a/services/common/type/initialWaiverSubsequentSubmission.js +++ b/services/common/type/initialWaiverSubsequentSubmission.js @@ -9,7 +9,7 @@ import { ONEMAC_TYPE } from "../workflow.js"; export const initialWaiverSubsequentSubmission = { ...initialWaiver, componentType: ONEMAC_TYPE.WAIVER_INITIAL_SUBSEQUENT_SUBMISSION, - typeLabel: "1915(b) Initial Waiver Subsequent Submission", + typeLabel: "1915(b) Initial Waiver Subsequent Documents", idMustExist: true, allowMultiplesWithSameId: true, requiredAttachments: [], //default to empty and let subtype B or B4 override diff --git a/services/common/type/medicaidSPASubsequentSubmission.js b/services/common/type/medicaidSPASubsequentSubmission.js index 7ad688bf2..2dffc3027 100644 --- a/services/common/type/medicaidSPASubsequentSubmission.js +++ b/services/common/type/medicaidSPASubsequentSubmission.js @@ -2,7 +2,7 @@ import { medicaidSPA } from "./medicaidSPA.js"; export const medicaidSPASubsequentSubmission = { ...medicaidSPA, componentType: "medicaidspasubsequent", - typeLabel: "Medicaid SPA Subsequent Submission", + typeLabel: "Medicaid SPA Subsequent Documents", idMustExist: true, allowMultiplesWithSameId: true, requiredAttachments: [], diff --git a/services/common/type/waiverAmendmentSubsequentSubmission.js b/services/common/type/waiverAmendmentSubsequentSubmission.js index 44f17dd74..f475004f8 100644 --- a/services/common/type/waiverAmendmentSubsequentSubmission.js +++ b/services/common/type/waiverAmendmentSubsequentSubmission.js @@ -9,7 +9,7 @@ import { ONEMAC_TYPE } from "../workflow.js"; export const waiverAmendmentSubsequentSubmission = { ...waiverAmendment, componentType: ONEMAC_TYPE.WAIVER_AMENDMENT_SUBSEQUENT_SUBMISSION, - typeLabel: "Waiver Amendment Subsequent Submission", + typeLabel: "Waiver Amendment Subsequent Documents", idMustExist: true, allowMultiplesWithSameId: true, allowedParentStatuses: ["Under Review"], diff --git a/services/common/type/waiverAppKSubsequentSubmission.js b/services/common/type/waiverAppKSubsequentSubmission.js index 3874798b0..eb7a04585 100644 --- a/services/common/type/waiverAppKSubsequentSubmission.js +++ b/services/common/type/waiverAppKSubsequentSubmission.js @@ -4,7 +4,7 @@ import { ONEMAC_TYPE } from "../workflow.js"; export const waiverAppKSubsequentSubmission = { ...waiverAppendixK, componentType: ONEMAC_TYPE.WAIVER_APP_K_SUBSEQUENT_SUBMISSION, - typeLabel: "Waiver Appendix K Subsequent Submission", + typeLabel: "Waiver Appendix K Subsequent Documents", idMustExist: true, allowMultiplesWithSameId: true, requiredAttachments: [], diff --git a/services/common/type/waiverRenewalSubsequentSubmission.js b/services/common/type/waiverRenewalSubsequentSubmission.js index 464d81ba9..e6566223f 100644 --- a/services/common/type/waiverRenewalSubsequentSubmission.js +++ b/services/common/type/waiverRenewalSubsequentSubmission.js @@ -10,7 +10,7 @@ export const waiverRenewalSubsequentSubmission = { ...waiverRenewal, ...waiverRenewalB4, componentType: ONEMAC_TYPE.WAIVER_RENEWAL_SUBSEQUENT_SUBMISSION, - typeLabel: "Waiver Renewal Subsequent Submission", + typeLabel: "Waiver Renewal Subsequent Documents", idMustExist: true, allowMultiplesWithSameId: true, allowedParentTypes: ["waiverrenewal"], diff --git a/services/ui-src/src/libs/formLib.tsx b/services/ui-src/src/libs/formLib.tsx index ad087b118..bc248953b 100644 --- a/services/ui-src/src/libs/formLib.tsx +++ b/services/ui-src/src/libs/formLib.tsx @@ -134,7 +134,7 @@ export const defaultOneMACFormConfig = { export const defaultSubsequentSubmissionFormConfig = { ...defaultOneMACFormConfig, - addlInfoTitle: "Reason for subsequent submission", + addlInfoTitle: "Reason for subsequent documents", addlInfoText: "Explain why additional documents are being submitted.", }; diff --git a/services/ui-src/src/page/chip-spa/ChipSPASubsequentSubmissionForm.test.js b/services/ui-src/src/page/chip-spa/ChipSPASubsequentSubmissionForm.test.js index 5482608be..2dc2b47e2 100644 --- a/services/ui-src/src/page/chip-spa/ChipSPASubsequentSubmissionForm.test.js +++ b/services/ui-src/src/page/chip-spa/ChipSPASubsequentSubmissionForm.test.js @@ -14,7 +14,7 @@ jest.mock("../../utils/PackageApi"); window.HTMLElement.prototype.scrollIntoView = jest.fn(); window.scrollTo = jest.fn(); -describe("Chip SPA Subsequent Submission Form", () => { +describe("Chip SPA Subsequent Documents Form", () => { let history; beforeEach(() => { diff --git a/services/ui-src/src/page/chip-spa/ChipSPASubsequentSubmissionForm.tsx b/services/ui-src/src/page/chip-spa/ChipSPASubsequentSubmissionForm.tsx index dd10362ee..22e67e510 100644 --- a/services/ui-src/src/page/chip-spa/ChipSPASubsequentSubmissionForm.tsx +++ b/services/ui-src/src/page/chip-spa/ChipSPASubsequentSubmissionForm.tsx @@ -17,7 +17,7 @@ export const chipSPASubsequentSubmissionFormInfo: OneMACFormConfig = { ...defaultSubsequentSubmissionFormConfig, ...chipSPASubsequentSubmission, pageTitle: "Upload Subsequent CHIP SPA Documentation", - detailsHeader: "CHIP SPA Subsequent Submission", + detailsHeader: "CHIP SPA Subsequent Documents", landingPage: ONEMAC_ROUTES.PACKAGE_LIST_SPA, confirmSubmit: defaultConfirmSubsequentSubmission, validateParentAPI: "validateParentOfAny", diff --git a/services/ui-src/src/page/initial-waiver/InitialWaiverSubsequentSubmissionForm.test.js b/services/ui-src/src/page/initial-waiver/InitialWaiverSubsequentSubmissionForm.test.js index a9ea6b7fa..bc5649cdc 100644 --- a/services/ui-src/src/page/initial-waiver/InitialWaiverSubsequentSubmissionForm.test.js +++ b/services/ui-src/src/page/initial-waiver/InitialWaiverSubsequentSubmissionForm.test.js @@ -18,7 +18,7 @@ jest.mock("../../utils/PackageApi"); window.HTMLElement.prototype.scrollIntoView = jest.fn(); window.scrollTo = jest.fn(); -describe("1915(b) Initial Waiver Subsequent Submission Form", () => { +describe("1915(b) Initial Waiver Subsequent Documents Form", () => { let history; beforeEach(() => { diff --git a/services/ui-src/src/page/initial-waiver/InitialWaiverSubsequentSubmissionForm.tsx b/services/ui-src/src/page/initial-waiver/InitialWaiverSubsequentSubmissionForm.tsx index 0d9e01090..984b4b237 100644 --- a/services/ui-src/src/page/initial-waiver/InitialWaiverSubsequentSubmissionForm.tsx +++ b/services/ui-src/src/page/initial-waiver/InitialWaiverSubsequentSubmissionForm.tsx @@ -23,7 +23,7 @@ export const initialWaiverSubsequentSubmissionFormInfo: OneMACFormConfig = { ...defaultSubsequentSubmissionFormConfig, ...initialWaiverSubsequentSubmission, pageTitle: "Upload Subsequent Waiver Documentation", - detailsHeader: "Initial Waiver Subsequent Submission", + detailsHeader: "Initial Waiver Subsequent Documents", landingPage: ONEMAC_ROUTES.PACKAGE_LIST_WAIVER, confirmSubmit: defaultConfirmSubsequentSubmission, validateParentAPI: "validateParentOfAny", diff --git a/services/ui-src/src/page/medicaid-spa/MedicaidSPASubsequentSubmissionForm.test.js b/services/ui-src/src/page/medicaid-spa/MedicaidSPASubsequentSubmissionForm.test.js index 5be5eb843..cacc945a3 100644 --- a/services/ui-src/src/page/medicaid-spa/MedicaidSPASubsequentSubmissionForm.test.js +++ b/services/ui-src/src/page/medicaid-spa/MedicaidSPASubsequentSubmissionForm.test.js @@ -14,7 +14,7 @@ jest.mock("../../utils/PackageApi"); window.HTMLElement.prototype.scrollIntoView = jest.fn(); window.scrollTo = jest.fn(); -describe("Medicaid SPA Subsequent Submission Form", () => { +describe("Medicaid SPA Subsequent Documents Form", () => { let history; beforeEach(() => { diff --git a/services/ui-src/src/page/medicaid-spa/MedicaidSPASubsequentSubmissionForm.tsx b/services/ui-src/src/page/medicaid-spa/MedicaidSPASubsequentSubmissionForm.tsx index c9cca11f6..84731b9b7 100644 --- a/services/ui-src/src/page/medicaid-spa/MedicaidSPASubsequentSubmissionForm.tsx +++ b/services/ui-src/src/page/medicaid-spa/MedicaidSPASubsequentSubmissionForm.tsx @@ -17,7 +17,7 @@ export const medicaidSPASubsequentSubmissionFormInfo: OneMACFormConfig = { ...defaultSubsequentSubmissionFormConfig, ...medicaidSPASubsequentSubmission, pageTitle: "Upload Subsequent Medicaid SPA Documentation", - detailsHeader: "Medicaid SPA Subsequent Submission", + detailsHeader: "Medicaid SPA Subsequent Documents", landingPage: ONEMAC_ROUTES.PACKAGE_LIST_SPA, confirmSubmit: defaultConfirmSubsequentSubmission, validateParentAPI: "validateParentOfAny", diff --git a/services/ui-src/src/page/section/AdditionalInfoSection.tsx b/services/ui-src/src/page/section/AdditionalInfoSection.tsx index 75578a42f..0730ffb35 100644 --- a/services/ui-src/src/page/section/AdditionalInfoSection.tsx +++ b/services/ui-src/src/page/section/AdditionalInfoSection.tsx @@ -11,7 +11,7 @@ export const AdditionalInfoSection: FC<{

{isSubSub - ? "Reason for subsequent submission" + ? "Reason for subsequent documents" : "Additional Information"}

{ +describe("1915(b) Waiver Amendment Subsequent Documents Form", () => { let history; beforeEach(() => { diff --git a/services/ui-src/src/page/waiver-amendment/WaiverAmendmentSubsequentSubmissionForm.tsx b/services/ui-src/src/page/waiver-amendment/WaiverAmendmentSubsequentSubmissionForm.tsx index 15c3a96fd..a5f1a4549 100644 --- a/services/ui-src/src/page/waiver-amendment/WaiverAmendmentSubsequentSubmissionForm.tsx +++ b/services/ui-src/src/page/waiver-amendment/WaiverAmendmentSubsequentSubmissionForm.tsx @@ -23,7 +23,7 @@ export const waiverAmendmentSubsequentSubmissionFormInfo: OneMACFormConfig = { ...defaultSubsequentSubmissionFormConfig, ...waiverAmendmentSubsequentSubmission, pageTitle: "Upload Subsequent Waiver Amendment Documentation", - detailsHeader: "Waiver Amendment Subsequent Submission", + detailsHeader: "Waiver Amendment Subsequent Documents", landingPage: ONEMAC_ROUTES.PACKAGE_LIST_WAIVER, confirmSubmit: defaultConfirmSubsequentSubmission, validateParentAPI: "validateParentOfWaiverAmendment", diff --git a/services/ui-src/src/page/waiver-appendix-k/WaiverAppKSubsequentSubmissionForm.test.js b/services/ui-src/src/page/waiver-appendix-k/WaiverAppKSubsequentSubmissionForm.test.js index 6248a3a8a..7cf961d69 100644 --- a/services/ui-src/src/page/waiver-appendix-k/WaiverAppKSubsequentSubmissionForm.test.js +++ b/services/ui-src/src/page/waiver-appendix-k/WaiverAppKSubsequentSubmissionForm.test.js @@ -15,7 +15,7 @@ jest.mock("../../utils/PackageApi"); window.HTMLElement.prototype.scrollIntoView = jest.fn(); window.scrollTo = jest.fn(); -describe("1915(c) Waiver Appendix K Subsequent Submission Form", () => { +describe("1915(c) Waiver Appendix K Subsequent Documents Form", () => { let history; beforeEach(() => { diff --git a/services/ui-src/src/page/waiver-appendix-k/WaiverAppKSubsequentSubmissionForm.tsx b/services/ui-src/src/page/waiver-appendix-k/WaiverAppKSubsequentSubmissionForm.tsx index a835f957b..16ed55e32 100644 --- a/services/ui-src/src/page/waiver-appendix-k/WaiverAppKSubsequentSubmissionForm.tsx +++ b/services/ui-src/src/page/waiver-appendix-k/WaiverAppKSubsequentSubmissionForm.tsx @@ -17,7 +17,7 @@ export const waiverAppKSubsequentSubmissionFormInfo: OneMACFormConfig = { ...defaultSubsequentSubmissionFormConfig, ...waiverAppKSubsequentSubmission, pageTitle: "Upload Subsequent 1915(c) Appendix K Documentation", - detailsHeader: "1915(c) Appendix K Subsequent Submission", + detailsHeader: "1915(c) Appendix K Subsequent Documents", landingPage: ONEMAC_ROUTES.PACKAGE_LIST_WAIVER, confirmSubmit: defaultConfirmSubsequentSubmission, validateParentAPI: "validateParentOfAny", diff --git a/services/ui-src/src/page/waiver-renewal/WaiverRenewalSubsequentSubmissionForm.test.js b/services/ui-src/src/page/waiver-renewal/WaiverRenewalSubsequentSubmissionForm.test.js index e92c9531b..0b5974319 100644 --- a/services/ui-src/src/page/waiver-renewal/WaiverRenewalSubsequentSubmissionForm.test.js +++ b/services/ui-src/src/page/waiver-renewal/WaiverRenewalSubsequentSubmissionForm.test.js @@ -18,7 +18,7 @@ jest.mock("../../utils/PackageApi"); window.HTMLElement.prototype.scrollIntoView = jest.fn(); window.scrollTo = jest.fn(); -describe("1915(b) Waiver Renewal Subsequent Submission Form", () => { +describe("1915(b) Waiver Renewal Subsequent Documents Form", () => { let history; beforeEach(() => { diff --git a/services/ui-src/src/page/waiver-renewal/WaiverRenewalSubsequentSubmissionForm.tsx b/services/ui-src/src/page/waiver-renewal/WaiverRenewalSubsequentSubmissionForm.tsx index ba36b0ed6..29081f0b2 100644 --- a/services/ui-src/src/page/waiver-renewal/WaiverRenewalSubsequentSubmissionForm.tsx +++ b/services/ui-src/src/page/waiver-renewal/WaiverRenewalSubsequentSubmissionForm.tsx @@ -23,7 +23,7 @@ export const waiverRenewalSubsequentSubmissionFormInfo: OneMACFormConfig = { ...defaultSubsequentSubmissionFormConfig, ...waiverRenewalSubsequentSubmission, pageTitle: "Upload Subsequent Waiver Renewal Documentation", - detailsHeader: "Waiver Renewal Subsequent Submission", + detailsHeader: "Waiver Renewal Subsequent Documents", landingPage: ONEMAC_ROUTES.PACKAGE_LIST_WAIVER, confirmSubmit: defaultConfirmSubsequentSubmission, validateParentAPI: "validateParentOfWaiverRenewal", diff --git a/tests/cypress/cypress/e2e/Subsequent_Submission_1915b_Amendment_Waiver.spec.feature b/tests/cypress/cypress/e2e/Subsequent_Submission_1915b_Amendment_Waiver.spec.feature index f3d434f99..b5a0fb91c 100644 --- a/tests/cypress/cypress/e2e/Subsequent_Submission_1915b_Amendment_Waiver.spec.feature +++ b/tests/cypress/cypress/e2e/Subsequent_Submission_1915b_Amendment_Waiver.spec.feature @@ -14,7 +14,7 @@ Feature: Subsequent Submission 1915b Waiver Amendment Then click Under Review checkbox Then Click on Filter Button - Scenario: Screen Enhance - Subsequent Document from the details page + Scenario: Screen Enhance - Subsequent Documents from the details page Then click the Waiver Number link in the first row Then verify the package details page is visible Then verify Upload Subsequent Documents action exists diff --git a/tests/cypress/cypress/e2e/Subsequent_Submission_1915c_Appendix_K.spec.feature b/tests/cypress/cypress/e2e/Subsequent_Submission_1915c_Appendix_K.spec.feature index d6d2a0c99..c422dbb00 100644 --- a/tests/cypress/cypress/e2e/Subsequent_Submission_1915c_Appendix_K.spec.feature +++ b/tests/cypress/cypress/e2e/Subsequent_Submission_1915c_Appendix_K.spec.feature @@ -14,7 +14,7 @@ Feature: Subsequent Submission 1915c App K Waiver Then click Under Review checkbox Then Click on Filter Button - Scenario: Screen Enhance - Subsequent Document from the details page + Scenario: Screen Enhance - Subsequent Documents from the details page Then click the Waiver Number link in the first row Then verify the package details page is visible Then verify Upload Subsequent Documents action exists diff --git a/tests/cypress/cypress/e2e/Subsequent_Submission_CHIP_Spa.spec.feature b/tests/cypress/cypress/e2e/Subsequent_Submission_CHIP_Spa.spec.feature index 02dadbfbc..9e423bca5 100644 --- a/tests/cypress/cypress/e2e/Subsequent_Submission_CHIP_Spa.spec.feature +++ b/tests/cypress/cypress/e2e/Subsequent_Submission_CHIP_Spa.spec.feature @@ -13,7 +13,7 @@ Feature: CHIP SPA State Details View - Card View with Actions Then click Under Review checkbox Then Click on Filter Button - Scenario: Screen Enhance - Subsequent Document from the details page + Scenario: Screen Enhance - Subsequent Documents from the details page Then click the SPA ID link in the first row Then verify the package details page is visible Then verify Upload Subsequent Documents action exists diff --git a/tests/cypress/cypress/e2e/Subsequent_Submission_Initial_Waiver.spec.feature b/tests/cypress/cypress/e2e/Subsequent_Submission_Initial_Waiver.spec.feature index 52024390f..f12eed89a 100644 --- a/tests/cypress/cypress/e2e/Subsequent_Submission_Initial_Waiver.spec.feature +++ b/tests/cypress/cypress/e2e/Subsequent_Submission_Initial_Waiver.spec.feature @@ -14,7 +14,7 @@ Feature: Subsequent Submission 1915b Initial Waiver Then click Under Review checkbox Then Click on Filter Button - Scenario: Screen Enhance - Subsequent Document from the details page + Scenario: Screen Enhance - Subsequent Documents from the details page Then click the Waiver Number link in the first row Then verify the package details page is visible Then verify Upload Subsequent Documents action exists diff --git a/tests/cypress/cypress/e2e/Subsequent_Submission_Medicaid_Spa.spec.feature b/tests/cypress/cypress/e2e/Subsequent_Submission_Medicaid_Spa.spec.feature index 157bd87a1..00fd29621 100644 --- a/tests/cypress/cypress/e2e/Subsequent_Submission_Medicaid_Spa.spec.feature +++ b/tests/cypress/cypress/e2e/Subsequent_Submission_Medicaid_Spa.spec.feature @@ -13,7 +13,7 @@ Feature: Medicaid SPA State Details View - Card View with Actions Then click Under Review checkbox Then Click on Filter Button - Scenario: Screen Enhance - Subsequent Document from the details page + Scenario: Screen Enhance - Subsequent Documents from the details page Then click the SPA ID link in the first row Then verify the package details page is visible Then verify Upload Subsequent Documents action exists diff --git a/tests/cypress/cypress/e2e/Subsequent_Submission_Renewal_Waiver.spec.feature b/tests/cypress/cypress/e2e/Subsequent_Submission_Renewal_Waiver.spec.feature index 03203180e..652aeffcd 100644 --- a/tests/cypress/cypress/e2e/Subsequent_Submission_Renewal_Waiver.spec.feature +++ b/tests/cypress/cypress/e2e/Subsequent_Submission_Renewal_Waiver.spec.feature @@ -14,7 +14,7 @@ Feature: Subsequent Submission 1915b Renewal Waiver Then click Under Review checkbox Then Click on Filter Button - Scenario: Screen Enhance - Subsequent Document from the details page + Scenario: Screen Enhance - Subsequent Documents from the details page Then click the Waiver Number link in the first row Then verify the package details page is visible Then verify Upload Subsequent Documents action exists diff --git a/tests/cypress/cypress/e2e/common/steps.js b/tests/cypress/cypress/e2e/common/steps.js index 6a4e9ad78..11a79777a 100644 --- a/tests/cypress/cypress/e2e/common/steps.js +++ b/tests/cypress/cypress/e2e/common/steps.js @@ -2086,7 +2086,7 @@ Then("click the Upload Subsequent Documents action button", () => { Then("verify the Subsequent {string} Documents section exists", (type) => { OneMacFormPage.verifySubsequentDocumentsSectionExistsWith(type); }); -Then("verify the Reason for subsequent submission section exists", () => { +Then("verify the Reason for subsequent documents section exists", () => { OneMacFormPage.verifyAdditionalInfoSectionExists(); }); Then("verify the dialog title contains {string}", (s) => { diff --git a/tests/cypress/support/pages/oneMacFormPage.js b/tests/cypress/support/pages/oneMacFormPage.js index 0340f4b07..b12b52cd4 100644 --- a/tests/cypress/support/pages/oneMacFormPage.js +++ b/tests/cypress/support/pages/oneMacFormPage.js @@ -29,7 +29,7 @@ const subsequentDocumentsHeader = (type) => `//h3[contains(text(),'Subsequent ${type} Documents')]`; const labelElementFromLabel = { "Additional Information": "#additional-information-label", - "Reason for subsequent submission": "#additional-information-label", + "Reason for subsequent documents": "#additional-information-label", }; const elementFromLabel = { // Different forms may have different labels for the ID field @@ -41,7 +41,7 @@ const elementFromLabel = { "Existing Waiver Number to Renew": parentIdElement, "Existing Waiver Number to Amend": parentIdElement, "Additional Information": "#additional-information", - "Reason for subsequent submission": "#additional-information", + "Reason for subsequent documents": "#additional-information", }; const errorMessageLine1FromLabel = { "SPA ID": "#componentIdStatusMsg0", From e9b9f5a534db50aa2005ae979143c0489fe5cd87 Mon Sep 17 00:00:00 2001 From: Alex Youssefinia Date: Fri, 4 Oct 2024 08:24:33 -0500 Subject: [PATCH 14/19] revert change picked up from other story --- services/ui-src/src/libs/formLib.tsx | 4 ++-- services/ui-src/src/setupTests.js | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/services/ui-src/src/libs/formLib.tsx b/services/ui-src/src/libs/formLib.tsx index 3fe5671d6..0ccb63099 100644 --- a/services/ui-src/src/libs/formLib.tsx +++ b/services/ui-src/src/libs/formLib.tsx @@ -194,10 +194,10 @@ export const defaultConfirmSubmitMessageSubsequentSubmission = ( ); export const defaultConfirmSubsequentSubmission: ConfirmSubmitType = { - confirmSubmitHeading: "Submit additional documents?", + confirmSubmitHeading: "OneMAC only for document submission", confirmSubmitMessage: (

- These documents will be added to the package and reviewed by CMS. + States and CMS reviewers will communicate about the submission through email.

), }; diff --git a/services/ui-src/src/setupTests.js b/services/ui-src/src/setupTests.js index 7b6f79bb9..302034f5b 100644 --- a/services/ui-src/src/setupTests.js +++ b/services/ui-src/src/setupTests.js @@ -17,3 +17,17 @@ jest.mock("focus-trap", () => { }; return () => trap; }); + +window.matchMedia = jest.fn((query) => { + return { + matches: query === '(max-width: 600px)', // Adjust this logic based on your needs + media: query, + onchange: null, + addListener: jest.fn(), // Deprecated, but still mock for compatibility + removeListener: jest.fn(), // Deprecated, but still mock for compatibility + addEventListener: jest.fn(), // For modern browsers + removeEventListener: jest.fn(), // For modern browsers + dispatchEvent: jest.fn(), // For modern browsers + }; +}); +console.log("Setup file loaded"); \ No newline at end of file From 8e507b46f7c5b861c7bcd0e5cb08848a5895dd1b Mon Sep 17 00:00:00 2001 From: Alex Youssefinia Date: Fri, 4 Oct 2024 08:26:57 -0500 Subject: [PATCH 15/19] added space --- services/ui-src/src/libs/formLib.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/ui-src/src/libs/formLib.tsx b/services/ui-src/src/libs/formLib.tsx index 0ccb63099..6f5423c85 100644 --- a/services/ui-src/src/libs/formLib.tsx +++ b/services/ui-src/src/libs/formLib.tsx @@ -197,7 +197,8 @@ export const defaultConfirmSubsequentSubmission: ConfirmSubmitType = { confirmSubmitHeading: "OneMAC only for document submission", confirmSubmitMessage: (

- States and CMS reviewers will communicate about the submission through email. + States and CMS reviewers will communicate about the submission through + email.

), }; From a666d849c1c3f61b1d7a9f20b1956b350cd492d3 Mon Sep 17 00:00:00 2001 From: bflynn-cms Date: Fri, 4 Oct 2024 10:18:13 -0500 Subject: [PATCH 16/19] Create generate_packages.py (#1520) * Create generate_packages.py * adding utility scripts for staging data * also adding user creation scripts * add setPOCs script --- services/admin/scripts/READ.md | 7 + services/admin/scripts/createUsers.sh | 82 ++++ services/admin/scripts/delete_packages.sh | 41 ++ services/admin/scripts/generate_packages.py | 416 ++++++++++++++++++ services/admin/scripts/pk_values.json | 40 ++ services/admin/scripts/rebuildPackagesByPk.py | 75 ++++ services/admin/scripts/setPOCs.py | 100 +++++ services/admin/scripts/users.json | 76 ++++ 8 files changed, 837 insertions(+) create mode 100644 services/admin/scripts/READ.md create mode 100644 services/admin/scripts/createUsers.sh create mode 100644 services/admin/scripts/delete_packages.sh create mode 100644 services/admin/scripts/generate_packages.py create mode 100644 services/admin/scripts/pk_values.json create mode 100644 services/admin/scripts/rebuildPackagesByPk.py create mode 100644 services/admin/scripts/setPOCs.py create mode 100644 services/admin/scripts/users.json diff --git a/services/admin/scripts/READ.md b/services/admin/scripts/READ.md new file mode 100644 index 000000000..a95966c49 --- /dev/null +++ b/services/admin/scripts/READ.md @@ -0,0 +1,7 @@ +This /scripts Folder simply contains scripts that are not used in the application or deployed via lambda but are useful for admin type functions. + +##### + +generate_packages - creates new records in Under Review status by inserting both a OneMAC record and a SEATool record +rebuildPackagesbyPK - force a rebuild of the package record for all packages listed in pk_values.json +setPOCs - set the action_officers (srt) and lead_analyst (cpoc) for all packages listed in pk_values.json diff --git a/services/admin/scripts/createUsers.sh b/services/admin/scripts/createUsers.sh new file mode 100644 index 000000000..5afaf265c --- /dev/null +++ b/services/admin/scripts/createUsers.sh @@ -0,0 +1,82 @@ +#!/bin/bash + +# Variables +USER_POOL_ID="us-east-1_9NXuk7ucb" +INPUT_FILE="users.json" +DYNAMODB_TABLE="onemac-masterclone-one" +DATE=$(date +%s%3N) # Current timestamp in milliseconds + +# Read the JSON file and loop through each user +jq -c '.users[]' $INPUT_FILE | while read -r user; do + PASSWORD=$(echo $user | jq -r '.password') + EMAIL=$(echo $user | jq -r '.email') + FAMILY_NAME=$(echo $user | jq -r '.family_name') + GIVEN_NAME=$(echo $user | jq -r '.given_name') + ROLE=$(echo $user | jq -r '.role') + + # Concatenate given name and family name to form full name + FULL_NAME="$GIVEN_NAME $FAMILY_NAME" + + # Determine territory and GSI fields based on role + if [ "$ROLE" = "systemadmin" ]; then + TERRITORY="N/A" + GSI1SK="Boss" + GSI1PK="systemadmin#N/A" + else + TERRITORY=$(echo $user | jq -r '.territory') + GSI1SK="statesystemadmin#$TERRITORY" + GSI1PK="USER" + fi + + echo "Creating user with email: $EMAIL" + + # Use the email as the username in Cognito + aws cognito-idp admin-create-user \ + --user-pool-id "$USER_POOL_ID" \ + --username "$EMAIL" \ + --user-attributes Name="email",Value="$EMAIL" \ + Name="family_name",Value="$FAMILY_NAME" \ + Name="given_name",Value="$GIVEN_NAME" \ + Name="email_verified",Value="true" \ + --message-action SUPPRESS + + # Set the password and mark the user as confirmed + aws cognito-idp admin-set-user-password \ + --user-pool-id "$USER_POOL_ID" \ + --username "$EMAIL" \ + --password "$PASSWORD" \ + --permanent + + echo "User created with email (used as username): $EMAIL" + + # Insert ContactInfo record into DynamoDB + aws dynamodb put-item --table-name "$DYNAMODB_TABLE" --item \ + '{"pk": {"S": "'"$EMAIL"'"}, + "sk": {"S": "ContactInfo"}, + "email": {"S": "'"$EMAIL"'"}, + "fullName": {"S": "'"$FULL_NAME"'"}, + "GSI1pk": {"S": "'"$GSI1PK"'"}, + "GSI1sk": {"S": "'"$EMAIL"'"} }' + + echo "ContactInfo record created for user: $EMAIL" + + # Insert Roles record into DynamoDB + aws dynamodb put-item --table-name "$DYNAMODB_TABLE" --item \ + '{"pk": {"S": "'"$EMAIL"'"}, + "sk": {"S": "v0#'"$ROLE"'#'"$TERRITORY"'"}, + "date": {"N": "'"$DATE"'"}, + "doneByEmail": {"S": "'"$EMAIL"'"}, + "doneByName": {"S": "'"$FULL_NAME"'"}, + "email": {"S": "'"$EMAIL"'"}, + "fullName": {"S": "'"$FULL_NAME"'"}, + "GSI1pk": {"S": "'"$GSI1PK"'"}, + "GSI1sk": {"S": "'"$GSI1SK"'"}, + "GSI2pk": {"S": "'"$ROLE"'#'"$TERRITORY"'"}, + "GSI2sk": {"S": "active"}, + "Latest": {"S": "1"}, + "role": {"S": "'"$ROLE"'"}, + "status": {"S": "active"}, + "territory": {"S": "'"$TERRITORY"'"} }' + + echo "Roles record created for user: $EMAIL" +done \ No newline at end of file diff --git a/services/admin/scripts/delete_packages.sh b/services/admin/scripts/delete_packages.sh new file mode 100644 index 000000000..f893ec0fa --- /dev/null +++ b/services/admin/scripts/delete_packages.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +# Variables +DYNAMODB_TABLE="onemac-masterclone-one" +PK_VALUES=("NY-24-9356" "NY-24-6035" "NY-24-3865" "NY-24-1282" "NY-24-1036" "NY-24-9253" "NY-24-9972" "NY-24-1717" "NY-24-5342" "NY-24-8523" "NY-24-1571" "NY-24-7203" "NY-80815.R01.02" "NY-66338.R01.02" "NY-84734.R01.00" "NY-23214.R01.02" "NY-94872.R00.00" "NY-93400.R00.00" "NY-72598.R01.02" "NY-84074.R01.00" "NY-49584.R00.01" "NY-52227.R00.00" "NY-27845.R01.00" "NY-95809.R00.01" "NY-53801.R01.02" "NY-38783.R00.01" "NY-75550.R00.01" "NY-92181.R01.00" "NY-18445.R00.00" "NY-57782.R01.00" "NY-52513.R00.00" "NY-99845.R00.01" "NY-76823.R00.01" "NY-42146.R01.02" "NY-52725.R00.00" "NY-14938.R01.00") + +# Counter for deleted items +DELETED_COUNT=0 + +# Loop through each pk value +for PK in "${PK_VALUES[@]}"; do + # Query DynamoDB for items with the specified pk + ITEMS=$(aws dynamodb query \ + --table-name "$DYNAMODB_TABLE" \ + --key-condition-expression "pk = :pk" \ + --expression-attribute-values '{":pk": {"S": "'"$PK"'"}}' \ + --projection-expression "pk, sk" \ + --output json | jq -c '.Items[]') + + # Loop through the found items and delete them + echo "$ITEMS" | while read -r item; do + pk=$(echo "$item" | jq -r '.pk.S') + sk=$(echo "$item" | jq -r '.sk.S') + + # Skip if pk or sk is empty + if [[ -z "$pk" || -z "$sk" ]]; then + continue + fi + + # Delete the record + aws dynamodb delete-item \ + --table-name "$DYNAMODB_TABLE" \ + --key "{\"pk\": {\"S\": \"$pk\"}, \"sk\": {\"S\": \"$sk\"}}" + + echo "Deleted record with pk: $pk and sk: $sk" + ((DELETED_COUNT++)) + done +done + +# Output the total number of deleted items +echo "Total number of deleted items: $DELETED_COUNT" \ No newline at end of file diff --git a/services/admin/scripts/generate_packages.py b/services/admin/scripts/generate_packages.py new file mode 100644 index 000000000..2ff6b1fe4 --- /dev/null +++ b/services/admin/scripts/generate_packages.py @@ -0,0 +1,416 @@ +import boto3 +import random +import time +from datetime import datetime, timedelta +import os +from botocore.exceptions import ClientError + +# Initialize DynamoDB client +dynamodb = boto3.resource('dynamodb') + +# Get table name from environment variable or use default +table_name = os.getenv('TABLE_NAME', 'onemac-masterclone-one') +table = dynamodb.Table(table_name) + +# Define different component configurations +component_config = { + "medicaidspa": { + "componentType": "medicaidspa", + "GSI1pk": "OneMAC#submitmedicaidspa", + "GSI1sk_prefix": "OneMAC#", + "second_GSI1pk": "SEATool#Medicaid_SPA", + "pk_format": "{state_code}-{current_year}-{random_4_digits}" + }, + "chipspa": { + "componentType": "chipspa", + "GSI1pk": "OneMAC#submitchipspa", + "GSI1sk_prefix": "OneMAC#", + "second_GSI1pk": "SEATool#CHIP_SPA", + "pk_format": "{state_code}-{current_year}-{random_4_digits}" + }, + "waivernew": { + "componentType": "waivernew", + "GSI1pk": "OneMAC#submitwaivernew", + "GSI1sk_prefix": "OneMAC#", + "second_GSI1pk": "SEATool#1915b_waivers", + "pk_format": "{state_code}-{random_5_digits}.R00.00" + }, + "waiverappk": { + "componentType": "waiverappk", + "GSI1pk": "OneMAC#submitwaiverappk", + "GSI1sk_prefix": "OneMAC#", + "second_GSI1pk": "SEATool#1915c_waivers", + "pk_format": "{state_code}-{random_5_digits}.R00.01" + }, + "waiveramendment": { + "componentType": "waiveramendment", + "GSI1pk": "OneMAC#submitwaiveramendment", + "GSI1sk_prefix": "OneMAC#", + "second_GSI1pk": "SEATool#1915b_waivers", + "pk_format": "{state_code}-{random_5_digits}.R01.02" + }, + "waiverrenewal": { + "componentType": "waiverrenewal", + "GSI1pk": "OneMAC#submitwaiverrenewal", + "GSI1sk_prefix": "OneMAC#", + "second_GSI1pk": "SEATool#1915b_waivers", + "pk_format": "{state_code}-{random_5_digits}.R01.00" + } +} + +# Function to generate random ID and timestamps, ensuring no duplicate IDs +generated_ids = set() + +def generate_ids_and_timestamps(state_code, component_type): + config = component_config[component_type] + current_year = datetime.now().year % 100 # last 2 digits of the year + while True: + pk_format = config['pk_format'] + # Replace placeholders with actual values + random_id = pk_format.format( + state_code=state_code, + current_year=current_year, + random_4_digits=random.randint(1000, 9999), + random_5_digits=random.randint(10000, 99999) + ) + + if random_id not in generated_ids: + generated_ids.add(random_id) + break + + # Generate two timestamps within the last 90 days + now = int(time.time() * 1000) + start_time = now - (random.randint(0, 90) * 24 * 3600 * 1000) + end_time = start_time + random.randint(1, 600000) # Ensure second timestamp is slightly later + return random_id, start_time, end_time + +# default LEAD_ANALYST and ACTION_OFFICERS +default_lead_analyst = [ + { + "EMAIL": "onemaccpoc6@gmail.com", + "FIRST_NAME": "OneMAC", + "LAST_NAME": "CPOC06", + "OFFICER_ID": 3743, + "POSITION_ID": 538, + "TELEPHONE": "(410) 555-5445" + } +] + +default_action_officers = [ + { + "EMAIL": "onemacsrt52@gmail.com", + "FIRST_NAME": "OneMAC", + "LAST_NAME": "SRT52", + "OFFICER_ID": 3740, + "POSITION_ID": 538, + "TELEPHONE": "(410) 555-5445" + } +] + +# Define different action officers and lead analysts per state, using the original defaults for now +action_officers_per_state = { + "MD": [ + { + "EMAIL": "onemacsrt52@gmail.com", + "FIRST_NAME": "OneMAC", + "LAST_NAME": "SRT52", + "OFFICER_ID": 3740, + "POSITION_ID": 538, + "TELEPHONE": "(410) 555-5445" + } + ], + "NY": [ + { + "EMAIL": "onemacsrt5@gmail.com", + "FIRST_NAME": "OneMAC", + "LAST_NAME": "SRT5", + "OFFICER_ID": 3740, + "POSITION_ID": 538, + "TELEPHONE": "(410) 555-5445" + } + ], + "CA": [ + { + "EMAIL": "onemacsrt2@gmail.com", + "FIRST_NAME": "OneMAC", + "LAST_NAME": "SRT2", + "OFFICER_ID": 3740, + "POSITION_ID": 538, + "TELEPHONE": "(410) 555-5445" + } + ], + "OH": [ + { + "EMAIL": "onemacsrt3@gmail.com", + "FIRST_NAME": "OneMAC", + "LAST_NAME": "SRT3", + "OFFICER_ID": 3740, + "POSITION_ID": 538, + "TELEPHONE": "(410) 555-5445" + } + ], + "WI": [ + { + "EMAIL": "onemacsrt4@gmail.com", + "FIRST_NAME": "OneMAC", + "LAST_NAME": "SRT4", + "OFFICER_ID": 3740, + "POSITION_ID": 538, + "TELEPHONE": "(410) 555-5445" + } + ] +} + +lead_analyst_per_state = { + "MD": [ + { + "EMAIL": "onemaccpoc6@gmail.com", + "FIRST_NAME": "OneMAC", + "LAST_NAME": "CPOC06", + "OFFICER_ID": 3743, + "POSITION_ID": 538, + "TELEPHONE": "(410) 555-5445" + } + ], + "NY": [ + { + "EMAIL": "onemaccpoc50@gmail.com", + "FIRST_NAME": "OneMAC", + "LAST_NAME": "CPOC5", + "OFFICER_ID": 3743, + "POSITION_ID": 538, + "TELEPHONE": "(410) 555-5445" + } + ], + "CA": [ + { + "EMAIL": "onemaccpoc9@gmail.com", + "FIRST_NAME": "OneMAC", + "LAST_NAME": "CPOC02", + "OFFICER_ID": 3743, + "POSITION_ID": 538, + "TELEPHONE": "(410) 555-5445" + } + ], + "OH": [ + { + "EMAIL": "onemaccpoc319@gmail.com", + "FIRST_NAME": "OneMAC", + "LAST_NAME": "CPOC3", + "OFFICER_ID": 3743, + "POSITION_ID": 538, + "TELEPHONE": "(410) 555-5445" + } + ], + "WI": [ + { + "EMAIL": "onemaccpoc49@gmail.com", + "FIRST_NAME": "OneMAC", + "LAST_NAME": "CPOC4", + "OFFICER_ID": 3743, + "POSITION_ID": 538, + "TELEPHONE": "(410) 555-5445" + } + ] +} + +# Function to generate onemace submission record based on component type +def generate_onemac_submission_record(state, random_id, first_timestamp, component_type): + config = component_config[component_type] + if component_type == "waiverappk": + attachments = [ + { + "contentType": "text/csv", + "filename": "Report_UserList(1).csv", + "s3Key": f"{first_timestamp}/Report_UserList(1).csv", + "title": "1915(c) Appendix K Amendment Waiver Template", + "url": f"https://uploads-master-attachments-989324938326.s3.us-east-1.amazonaws.com/protected/us-east-1%3A30413432-e223-4a6d-bfe1-7ed87236ff55/{first_timestamp}/Report_UserList(1).csv" + }, + { + "contentType": "text/csv", + "filename": "Report_spaList(5).csv", + "s3Key": f"{first_timestamp}/Report_spaList(5).csv", + "title": "1915(c) Appendix K Amendment Waiver Template", + "url": f"https://uploads-master-attachments-989324938326.s3.us-east-1.amazonaws.com/protected/us-east-1%3A30413432-e223-4a6d-bfe1-7ed87236ff55/{first_timestamp}/Report_spaList(5).csv" + }, + { + "contentType": "text/csv", + "filename": "Report_waiverList(8).csv", + "s3Key": f"{first_timestamp}/Report_waiverList(8).csv", + "title": "Other", + "url": f"https://uploads-master-attachments-989324938326.s3.us-east-1.amazonaws.com/protected/us-east-1%3A30413432-e223-4a6d-bfe1-7ed87236ff55/{first_timestamp}/Report_waiverList(8).csv" + } + ] + return { + "pk": random_id, + "sk": f"{config['GSI1sk_prefix']}{first_timestamp}", + "additionalInformation": "created new APP k", + "attachments": attachments, + "clockEndTimestamp": first_timestamp + 77777777, + "componentId": random_id, + "componentType": config["componentType"], + "currentStatus": "Submitted", + "eventTimestamp": first_timestamp, + "GSI1pk": config["GSI1pk"], + "GSI1sk": random_id, + "proposedEffectiveDate": "2023-01-20", + "submissionTimestamp": first_timestamp, + "submitterEmail": "mdstateonemac@gmail.com", + "submitterName": "MDSTATE SUBMITTERNK", + "territory": state, + "title": "New Title for App K", + "transmittalNumberWarningMessage": "", + "waiverAuthority": "1915(c)" + } + else: + return { + "pk": random_id, + "sk": f"{config['GSI1sk_prefix']}{first_timestamp}", + "additionalInformation": "test", + "attachments": [ + { + "contentType": "application/vnd.openxmlformats-officedocument.wordprocessingml.document", + "filename": "file.docx", + "s3Key": f"{first_timestamp}/file.docx", + "title": "1915(b)(4) FFS Selective Contracting (Streamlined) Waiver Application Pre-print", + "url": f"https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/{first_timestamp}/file.docx" + } + ], + "clockEndTimestamp": first_timestamp + 77777777, + "componentId": random_id, + "componentType": config["componentType"], + "currentStatus": "Submitted", + "eventTimestamp": first_timestamp, + "GSI1pk": config["GSI1pk"], + "GSI1sk": random_id, + "proposedEffectiveDate": "2024-06-27", + "submissionTimestamp": first_timestamp, + "submitterEmail": "statesubmitter@nightwatch.test", + "submitterName": "Statesubmitter Nightwatch", + "territory": state, + "transmittalNumberWarningMessage": "", + "waiverAuthority": "1915(b)(4)" + } + +# Function to generate second record based on component type +def generate_seatool_pending_record(state, random_id, second_timestamp, component_type): + config = component_config[component_type] + + # Use state-specific action officers and lead analysts + action_officers = action_officers_per_state.get(state, default_action_officers) + lead_analyst = lead_analyst_per_state.get(state, default_lead_analyst) + + # Base common record structure + seatool_record = { + "pk": random_id, + "sk": f"SEATool#{second_timestamp}", + "GSI1pk": config["second_GSI1pk"], + "GSI1sk": random_id, + "LEAD_ANALYST": lead_analyst, + "ACTION_OFFICERS": action_officers, + "OCD_REVIEW": [ + { + "OCD_REVIEW_DESCRIPTION": "No", + "OCD_REVIEW_ID": 2 + } + ], + "SPW_STATUS": [ + { + "SPW_STATUS_DESC": "Pending", + "SPW_STATUS_ID": 1 + } + ], + "STATE_PLAN": { + "ID_NUMBER": random_id, + "SPW_STATUS_ID": 1, # Ensures SPW_STATUS_ID is always included + "LEAD_ANALYST_ID": lead_analyst[0]["OFFICER_ID"], # Using the first lead analyst's ID + "STATE_CODE": state, + "SUMMARY_MEMO": "This is just a test" if component_type != "waiverappk" else "Sample Summary Memo", + "UUID": "66908FBA-9AFC-41BD-BA77-AA74379E6F44" if component_type != "waiverappk" else None + } + } + + # Add or modify specific fields based on component_type + if component_type == "waiverappk": + seatool_record["ACTIONTYPES"] = [ + { + "ACTION_ID": 76, + "ACTION_NAME": "Amend", + "PLAN_TYPE_ID": 123 + } + ] + seatool_record["PLAN_TYPES"] = [ + { + "PLAN_TYPE_ID": 123, + "PLAN_TYPE_NAME": "1915(c)" + } + ] + seatool_record["STATE_PLAN"]["ACTION_TYPE"] = 76 + seatool_record["STATE_PLAN"]["ALERT_90_DAYS_DATE"] = 1681862400000 + else: + seatool_record["PLAN_TYPES"] = [ + { + "PLAN_TYPE_ID": 122, + "PLAN_TYPE_NAME": "1915(b)" + } + ] + seatool_record["STATE_PLAN"]["PLAN_TYPE"] = 122 + + return seatool_record + + + +# Function to insert records into DynamoDB with multiple component types +def insert_records(state_codes, num_records, component_types): + created_records = [] # List to store final records (State, PK, Component Type) + + for state in state_codes: + for _ in range(num_records): + for component_type in component_types: + random_id, first_timestamp, second_timestamp = generate_ids_and_timestamps(state, component_type) + + # Generate first record + onemac_record = generate_onemac_submission_record(state, random_id, first_timestamp, component_type) + + # Generate second record + seatool_record = generate_seatool_pending_record(state, random_id, second_timestamp, component_type) + + # Try to insert both records, retry if duplicate key error occurs + try: + # insert SEATOOL record first just to avoid package builder issues + table.put_item(Item=seatool_record) + + # Add a delay of 2 second between inserting the first and second records + time.sleep(2) + table.put_item(Item=onemac_record) + + print(f"Inserted records for {random_id} with component type: {component_type}") + + # Add record details to created_records list + created_records.append([state, random_id, component_type]) + + except ClientError as e: + if e.response['Error']['Code'] == 'ConditionalCheckFailedException': + print(f"Duplicate ID {random_id} detected. Retrying with a new ID.") + continue # Generate a new ID and retry + else: + raise e # Raise the exception for non-duplicate errors + + # Sort created records by State, Component Type, PK + created_records.sort(key=lambda x: (x[0], x[2], x[1])) + + # Output final records in a table-like format + print("\nFinal created records:") + print(f"{'State':<10} {'PK':<30} {'Component Type':<20}") + print("-" * 60) + for record in created_records: + print(f"{record[0]:<10} {record[1]:<30} {record[2]:<20}") + + +# Retrieve state codes, number of records, and component types from environment variables +state_codes = os.getenv('STATE_CODES', 'MD,NY,CA,OH,WI').split(',') # Example: 'MD,NY,CA' +num_records = int(os.getenv('NUM_RECORDS', '6')) # Default is 5 if not provided +component_types = os.getenv('COMPONENT_TYPES', 'medicaidspa,chipspa,waivernew,waiverappk,waiveramendment,waiverrenewal').split(',') # Example: 'medicaidspa,chipspa,waivernew,waiverappk' + +# Call the insert function +insert_records(state_codes, num_records, component_types) diff --git a/services/admin/scripts/pk_values.json b/services/admin/scripts/pk_values.json new file mode 100644 index 000000000..aa3a39f93 --- /dev/null +++ b/services/admin/scripts/pk_values.json @@ -0,0 +1,40 @@ +{ + "pk_values": [ + "WI-24-5681", + "WI-24-4068", + "WI-24-6952", + "WI-24-5766", + "WI-24-9659", + "WI-24-3678", + "WI-24-4176", + "WI-24-2648", + "WI-24-7668", + "WI-24-1278", + "WI-24-5949", + "WI-24-5076", + "WI-73399.R01.00", + "WI-74402.R00.00", + "WI-91643.R00.01", + "WI-95019.R00.00", + "WI-44177.R00.01", + "WI-91036.R00.00", + "WI-16228.R01.02", + "WI-70842.R01.00", + "WI-48754.R01.00", + "WI-78312.R00.01", + "WI-11759.R00.00", + "WI-73939.R01.00", + "WI-73184.R01.02", + "WI-92164.R01.02", + "WI-71371.R01.02", + "WI-93250.R00.00", + "WI-89280.R01.00", + "WI-14865.R01.00", + "WI-85003.R00.01", + "WI-10359.R01.02", + "WI-72170.R00.00", + "WI-97670.R00.01", + "WI-55406.R00.01", + "WI-88967.R01.02" + ] +} diff --git a/services/admin/scripts/rebuildPackagesByPk.py b/services/admin/scripts/rebuildPackagesByPk.py new file mode 100644 index 000000000..b124ad044 --- /dev/null +++ b/services/admin/scripts/rebuildPackagesByPk.py @@ -0,0 +1,75 @@ +import boto3 +import datetime +import json +import logging +from boto3.dynamodb.conditions import Key +from botocore.exceptions import ClientError + +# Configure logging +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger(__name__) + +# Variables +dynamodb_table = "onemac-masterclone-one" + +# Load pk values from an external configuration file with error handling +try: + with open('pk_values.json', 'r') as file: + pk_values = json.load(file) +except (FileNotFoundError, json.JSONDecodeError) as e: + logger.error(f"Error loading pk_values.json: {e}") + pk_values = [] + +# Initialize DynamoDB resource +dynamodb = boto3.resource('dynamodb') +table = dynamodb.Table(dynamodb_table) + +# Counter for updated items +updated_count = 0 + +# Loop through each pk value +for pk in pk_values: + # Query DynamoDB for items with the specified pk and sk starting with OneMAC + response = table.query( + KeyConditionExpression=Key('pk').eq(pk) & Key('sk').begins_with('OneMAC'), + ProjectionExpression='pk, sk' + ) + + items = response.get('Items', []) + + # Handle pagination to ensure all items are retrieved + while 'LastEvaluatedKey' in response: + response = table.query( + KeyConditionExpression=Key('pk').eq(pk) & Key('sk').begins_with('OneMAC'), + ProjectionExpression='pk, sk', + ExclusiveStartKey=response['LastEvaluatedKey'] + ) + items.extend(response.get('Items', [])) + + # Loop through the found items and update them + for item in items: + pk_value = item['pk'] + sk_value = item['sk'] + + # Update the record to trigger a DynamoDB stream event with error handling + try: + table.update_item( + Key={ + 'pk': pk_value, + 'sk': sk_value + }, + UpdateExpression='SET #updatedAt = :timestamp', + ExpressionAttributeNames={ + '#updatedAt': 'updatedAt' + }, + ExpressionAttributeValues={ + ':timestamp': datetime.datetime.now(datetime.timezone.utc).isoformat() + } + ) + logger.info(f"Updated record with pk: {pk_value} and sk: {sk_value} to trigger DynamoDB stream") + updated_count += 1 + except ClientError as e: + logger.error(f"Failed to update record with pk: {pk_value} and sk: {sk_value}. Error: {e.response['Error']['Message']}") + +# Output the total number of updated items +logger.info(f"Total number of updated items: {updated_count}") \ No newline at end of file diff --git a/services/admin/scripts/setPOCs.py b/services/admin/scripts/setPOCs.py new file mode 100644 index 000000000..66c0df19e --- /dev/null +++ b/services/admin/scripts/setPOCs.py @@ -0,0 +1,100 @@ +import json +import boto3 +import os +from botocore.exceptions import ClientError + +# Load the list of GSI1SK values from an external file +with open('pk_values.json') as f: + pk_values = json.load(f) + +GSI1PK_VALUES = [ + "SEATool#Medicaid_SPA", + "SEATool#CHIP_SPA", + "SEATool#1915b_waivers", + "SEATool#1915c_waivers" +] + +LEAD_ANALYST_JSON = { + ":leadAnalyst": { + "L": [ + { + "M": { + "EMAIL": {"S": "onemaccpoc49@gmail.com"}, + "FIRST_NAME": {"S": "OneMAC"}, + "INITIALS": {"NULL": True}, + "LAST_NAME": {"S": "CPOC4"}, + "OFFICER_ID": {"N": "3743"}, + "POSITION_ID": {"N": "538"}, + "TELEPHONE": {"S": "(410) 555-5445"} + } + } + ] + } +} + +ACTION_OFFICERS_JSON = { + ":actionOfficers": { + "L": [ + { + "M": { + "EMAIL": {"S": "onemacsrt4@gmail.com"}, + "FIRST_NAME": {"S": "OneMAC"}, + "LAST_NAME": {"S": "SRT4"}, + "OFFICER_ID": {"N": "3740"}, + "POSITION_ID": {"N": "538"}, + "TELEPHONE": {"S": "(410) 555-5445"} + } + } + ] + } +} + +dynamodb = boto3.client('dynamodb') +DYNAMODB_TABLE = os.getenv('DYNAMODB_TABLE', 'onemac-masterclone-one') + +updated_count = 0 + +for gsi1pk in GSI1PK_VALUES: + for gsi1sk in pk_values['pk_values']: + try: + # Query DynamoDB for items with the specified gsi1pk and gsi1sk + response = dynamodb.query( + TableName=DYNAMODB_TABLE, + IndexName='GSI1', + KeyConditionExpression='GSI1pk = :gsi1pk AND GSI1sk = :gsi1sk', + ExpressionAttributeValues={ + ':gsi1pk': {'S': gsi1pk}, + ':gsi1sk': {'S': gsi1sk} + }, + ProjectionExpression='pk, sk' + ) + + items = response.get('Items', []) + + # Loop through the found items and update them + for item in items: + pk = item.get('pk', {}).get('S') + sk = item.get('sk', {}).get('S') + + # Skip if pk or sk is empty + if not pk or not sk: + continue + + # Update the record by adding or replacing the LEAD_ANALYST and ACTION_OFFICERS properties + dynamodb.update_item( + TableName=DYNAMODB_TABLE, + Key={ + 'pk': {'S': pk}, + 'sk': {'S': sk} + }, + UpdateExpression='SET LEAD_ANALYST = :leadAnalyst, ACTION_OFFICERS = :actionOfficers', + ExpressionAttributeValues={**LEAD_ANALYST_JSON, **ACTION_OFFICERS_JSON} + ) + + print(f"Updated record with pk: {pk} and sk: {sk} with lead analyst: OneMAC CPOC05") + updated_count += 1 + + except ClientError as e: + print(f"Error querying or updating item with GSI1pk: {gsi1pk} and GSI1sk: {gsi1sk}: {e}") + +print(f"Total number of updated items: {updated_count}") \ No newline at end of file diff --git a/services/admin/scripts/users.json b/services/admin/scripts/users.json new file mode 100644 index 000000000..b43b7c711 --- /dev/null +++ b/services/admin/scripts/users.json @@ -0,0 +1,76 @@ +{ + "users": [ + { + "password": "Passw0rd!", + "cms_roles": "onemac-state-user", + "email": "onemaccpoc9@gmail.com", + "family_name": "OneMAC", + "given_name": "CPOC2", + "territory": "CA", + "role": "systemadmin" + }, + { + "password": "Passw0rd!", + "cms_roles": "onemac-state-user", + "email": "onemaccpoc319@gmail.com", + "family_name": "OneMAC", + "given_name": "CPOC3", + "territory": "OH", + "role": "systemadmin" + }, + { + "password": "Passw0rd!", + "cms_roles": "onemac-state-user", + "email": "onemaccpoc49@gmail.com", + "family_name": "OneMAC", + "given_name": "CPOC4", + "territory": "WI", + "role": "systemadmin" + }, + { + "password": "Passw0rd!", + "cms_roles": "onemac-state-user", + "email": "onemaccpoc50@gmail.com", + "family_name": "OneMAC", + "given_name": "CPOC5", + "territory": "NY", + "role": "systemadmin" + }, + { + "password": "Passw0rd!", + "cms_roles": "onemac-state-user", + "email": "onemacsrt2@gmail.com", + "family_name": "OneMAC", + "given_name": "SRT2", + "territory": "CA", + "role": "systemadmin" + }, + { + "password": "Passw0rd!", + "cms_roles": "onemac-state-user", + "email": "onemacsrt3@gmail.com", + "family_name": "OneMAC", + "given_name": "SRT3", + "territory": "OH", + "role": "systemadmin" + }, + { + "password": "Passw0rd!", + "cms_roles": "onemac-state-user", + "email": "onemacsrt4@gmail.com", + "family_name": "OneMAC", + "given_name": "SRT4", + "territory": "WI", + "role": "systemadmin" + }, + { + "password": "Passw0rd!", + "cms_roles": "onemac-state-user", + "email": "onemacsrt5@gmail.com", + "family_name": "OneMAC", + "given_name": "SRT5", + "territory": "NY", + "role": "systemadmin" + } + ] +} \ No newline at end of file From d12a4ac6d1be4ce23446e9458e3b6e3bf2023571 Mon Sep 17 00:00:00 2001 From: Alex Youssefinia Date: Fri, 4 Oct 2024 14:53:30 -0500 Subject: [PATCH 17/19] remove accidental pickup from other branch --- services/ui-src/src/setupTests.js | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/services/ui-src/src/setupTests.js b/services/ui-src/src/setupTests.js index 302034f5b..97d6d79fb 100644 --- a/services/ui-src/src/setupTests.js +++ b/services/ui-src/src/setupTests.js @@ -16,18 +16,4 @@ jest.mock("focus-trap", () => { unpause: () => {}, }; return () => trap; -}); - -window.matchMedia = jest.fn((query) => { - return { - matches: query === '(max-width: 600px)', // Adjust this logic based on your needs - media: query, - onchange: null, - addListener: jest.fn(), // Deprecated, but still mock for compatibility - removeListener: jest.fn(), // Deprecated, but still mock for compatibility - addEventListener: jest.fn(), // For modern browsers - removeEventListener: jest.fn(), // For modern browsers - dispatchEvent: jest.fn(), // For modern browsers - }; -}); -console.log("Setup file loaded"); \ No newline at end of file +}); \ No newline at end of file From db2f4d7a31a75a657434516394b5d943cb0e710a Mon Sep 17 00:00:00 2001 From: Andie Swift Date: Mon, 7 Oct 2024 10:35:55 -0500 Subject: [PATCH 18/19] Emails: Sub Doc Email Fix (#1519) * fixed bug missing name, removed bold on files * fixed wording on cms emails on how to access * changed text to After you are logged in on last bullet --- .../email/CMSSubsequentSubmissionNotice.js | 19 +++++++++++-------- .../app-api/email/formatPackageDetails.js | 2 +- .../stateSubsequentSubmissionReceipt.test.js | 1 + 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/services/app-api/email/CMSSubsequentSubmissionNotice.js b/services/app-api/email/CMSSubsequentSubmissionNotice.js index 61215dfc8..46beabac4 100644 --- a/services/app-api/email/CMSSubsequentSubmissionNotice.js +++ b/services/app-api/email/CMSSubsequentSubmissionNotice.js @@ -7,7 +7,6 @@ import { getCPOCandSRTEmailAddresses } from "../utils/getCpocAndSrtEmail.js"; * @returns {Object} email parameters in generic format. */ export const CMSSubsequentSubmissionNotice = async (data, config) => { - data.submitterName = ""; // remove this bc we dont want it on the cms email const CMSEmailItem = await getCPOCandSRTEmailAddresses(data.componentId); const ToAddresses = CMSEmailItem.reviewTeamEmailList @@ -25,6 +24,13 @@ export const CMSSubsequentSubmissionNotice = async (data, config) => { config.idLabel = `${typeLabel} Package ID`; } + // creating own object + const cmsSubSubDetails = { + componentId: data.componentId, + additionalInformation: data.additionalInformation, + attachments: data.attachments, + }; + return { ToAddresses: ToAddresses, CcAddresses: [], @@ -33,7 +39,7 @@ export const CMSSubsequentSubmissionNotice = async (data, config) => {

New documents have been submitted for ${config.typeLabel} ${ data.componentId } in OneMAC.

- ${formatPackageDetails(data, config)} + ${formatPackageDetails(cmsSubSubDetails, config)}

How to access:

  • @@ -42,14 +48,11 @@ export const CMSSubsequentSubmissionNotice = async (data, config) => { }/dashboard">this link.
  • - If you are not already logged in, please click the "Login" link at the - top of the page and log in using your Enterprise User Administration - (EUA) credentials. + If you are not already logged in, click “Login” at the top of the page and log in using your + Enterprise User Administration (EUA) credentials.
  • - After you have logged in, you will be taken to the OneMAC application. - The submission will be listed on the dashboard page, and you can view - its details by clicking on its ID number. + After you are logged in, click the submission ID number on the dashboard page to view details.

Thank you!

diff --git a/services/app-api/email/formatPackageDetails.js b/services/app-api/email/formatPackageDetails.js index d7688eb40..a1d519230 100644 --- a/services/app-api/email/formatPackageDetails.js +++ b/services/app-api/email/formatPackageDetails.js @@ -58,7 +58,7 @@ export const formatPackageDetails = (data, config) => { ) { detailText += `

- Files: + Files:

    ${data.attachments .filter((u) => u && u.title && u.filename) diff --git a/services/app-api/email/stateSubsequentSubmissionReceipt.test.js b/services/app-api/email/stateSubsequentSubmissionReceipt.test.js index 3db878c07..2be3b5dcd 100644 --- a/services/app-api/email/stateSubsequentSubmissionReceipt.test.js +++ b/services/app-api/email/stateSubsequentSubmissionReceipt.test.js @@ -9,6 +9,7 @@ it("builds the State Submission Receipt Email", async () => { }; const testConfig = { typeLabel: "Test Type", + idLabel: "Test Id", }; try { const response2 = stateSubsequentSubmissionReceipt(testData, testConfig); From 60f619a7285acdd1bd6d56412e741d5c64b0154c Mon Sep 17 00:00:00 2001 From: bflynn-cms Date: Fri, 18 Oct 2024 08:42:19 -0500 Subject: [PATCH 19/19] oy2-30619 - Configure AWS SDK v2 as a lambda layer (#1534) * add lambda layers for aws sdk v2 * add layer service to deploy script * remove aws sdk 2 dependency since it will be provided by the layer * Update deploy.sh * use awssdkv2 lambda layer across all services * fix for running locally --- .gitignore | 3 +- deploy.sh | 15 + services/admin/package.json | 2 +- services/admin/serverless.yml | 4 +- services/app-api/package-lock.json | 247 +++++----- services/app-api/package.json | 4 +- services/app-api/serverless.yml | 4 +- .../layers/aws-sdk-v2-layer/nodejs/.bin/uuid | 1 + .../nodejs/.package-lock.json | 423 +++++++++++++++++ .../aws-sdk-v2-layer/nodejs/package-lock.json | 431 ++++++++++++++++++ .../aws-sdk-v2-layer/nodejs/package.json | 12 + .../layers/aws-sdk-v2-layer/serverless.yml | 16 + services/seatool-sink/package.json | 2 +- services/seatool-sink/serverless.yml | 4 +- services/source/package.json | 4 +- services/source/serverless.yml | 4 +- 16 files changed, 1016 insertions(+), 160 deletions(-) create mode 120000 services/layers/aws-sdk-v2-layer/nodejs/.bin/uuid create mode 100644 services/layers/aws-sdk-v2-layer/nodejs/.package-lock.json create mode 100644 services/layers/aws-sdk-v2-layer/nodejs/package-lock.json create mode 100644 services/layers/aws-sdk-v2-layer/nodejs/package.json create mode 100644 services/layers/aws-sdk-v2-layer/serverless.yml diff --git a/.gitignore b/.gitignore index 992143cb4..5c1a2eddc 100644 --- a/.gitignore +++ b/.gitignore @@ -22,4 +22,5 @@ tests/cypress/videos tests/cypress/screenshots tests/cypress/fixtures/packageDashboardSPAIDs.json tests/cypress/fixtures/packageDashboardWaiverNumbers.json -tests/cypress/fixtures/savedID.json \ No newline at end of file +tests/cypress/fixtures/savedID.json +/services/layers/aws-sdk-v2-layer/.serverless diff --git a/deploy.sh b/deploy.sh index 9b7f24e44..9d4dff33a 100755 --- a/deploy.sh +++ b/deploy.sh @@ -3,6 +3,15 @@ stage=${1:-dev} install_deps() { + local islayer=false # Flag to track whether we navigated into the nodejs folder + + # Check if we're inside a layer directory (layers have a 'nodejs' folder) + if [ -d "nodejs" ]; then + # If we're in a Lambda layer, navigate to the 'nodejs' folder + cd nodejs + islayer=true # Set the flag to true since we navigated into nodejs + fi + if [ "$CI" == "true" ]; then # If we're in a CI system if [ ! -d "node_modules" ]; then # If we don't have any node_modules (CircleCI cache miss scenario), run npm ci. Otherwise, we're all set, do nothing. npm ci --legacy-peer-deps @@ -10,6 +19,11 @@ install_deps() { else # We're not in a CI system, let's npm install npm install --legacy-peer-deps fi + + # If we navigated to the nodejs folder (i.e., for a layer), go back to the root folder + if [ "$islayer" = true ]; then + cd .. + fi } deploy() { @@ -25,6 +39,7 @@ install_deps services=( 'ui' 'uploads' + 'layers/aws-sdk-v2-layer' 'app-api' 'email' 'one-stream' diff --git a/services/admin/package.json b/services/admin/package.json index e31500319..73af5d181 100644 --- a/services/admin/package.json +++ b/services/admin/package.json @@ -4,13 +4,13 @@ "version": "1.0.0", "devDependencies": { "aws-sdk-client-mock": "^0.5.6", + "aws-sdk": "^2.752.0", "esbuild": "^0.19.4", "serverless-dotenv-plugin": "^3.12.2", "serverless-esbuild": "^1.48.4", "serverless-offline": "^13.5.0" }, "dependencies": { - "aws-sdk": "^2.752.0", "@aws-sdk/client-dynamodb": "^3.43.0", "@aws-sdk/lib-dynamodb": "^3.454.0", "cmscommonlib": "file:../common", diff --git a/services/admin/serverless.yml b/services/admin/serverless.yml index 842c8e4ee..fe425b7f4 100644 --- a/services/admin/serverless.yml +++ b/services/admin/serverless.yml @@ -12,8 +12,6 @@ plugins: - serverless-dotenv-plugin - serverless-s3-bucket-helper custom: - esbuild: - exclude: [] stage: ${opt:stage, self:provider.stage} iamPermissionsBoundaryPolicy: ${ssm:/configuration/${self:custom.stage}/iam/permissionsBoundaryPolicy, ssm:/configuration/default/iam/permissionsBoundaryPolicy, ""} oneMacTableName: onemac-${self:custom.stage}-one @@ -42,6 +40,8 @@ provider: environment: NODE_OPTIONS: '--enable-source-maps' oneMacTableName: ${self:custom.oneMacTableName} + layers: + - ${cf:aws-sdk-v2-layer-${self:custom.stage}.AwsSdkV2LambdaLayerQualifiedArn} functions: diff --git a/services/app-api/package-lock.json b/services/app-api/package-lock.json index c9b5df152..95df4ad6d 100644 --- a/services/app-api/package-lock.json +++ b/services/app-api/package-lock.json @@ -9,9 +9,6 @@ "version": "1.0.0", "license": "CC0-1.0", "dependencies": { - "@aws-sdk/client-dynamodb": "^3.454.0", - "@aws-sdk/lib-dynamodb": "^3.454.0", - "aws-sdk": "^2.752.0", "cmscommonlib": "file:../common", "date-fns": "^2.16.1", "dynamodb-local": "^0.0.32", @@ -22,6 +19,7 @@ }, "devDependencies": { "@types/jest": "^29.5.5", + "aws-sdk": "^2.752.0", "aws-sdk-client-mock": "^0.5.6", "esbuild": "^0.19.4", "esbuild-jest": "^0.5.0", @@ -112,6 +110,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", + "dev": true, "dependencies": { "tslib": "^1.11.1" } @@ -119,7 +118,8 @@ "node_modules/@aws-crypto/ie11-detection/node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, "node_modules/@aws-crypto/sha1-browser": { "version": "3.0.0", @@ -148,6 +148,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", + "dev": true, "dependencies": { "@aws-crypto/ie11-detection": "^3.0.0", "@aws-crypto/sha256-js": "^3.0.0", @@ -162,12 +163,14 @@ "node_modules/@aws-crypto/sha256-browser/node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, "node_modules/@aws-crypto/sha256-js": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", + "dev": true, "dependencies": { "@aws-crypto/util": "^3.0.0", "@aws-sdk/types": "^3.222.0", @@ -177,12 +180,14 @@ "node_modules/@aws-crypto/sha256-js/node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, "node_modules/@aws-crypto/supports-web-crypto": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", + "dev": true, "dependencies": { "tslib": "^1.11.1" } @@ -190,12 +195,14 @@ "node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, "node_modules/@aws-crypto/util": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", + "dev": true, "dependencies": { "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-utf8-browser": "^3.0.0", @@ -205,7 +212,8 @@ "node_modules/@aws-crypto/util/node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, "node_modules/@aws-sdk/client-cloudformation": { "version": "3.532.0", @@ -734,67 +742,6 @@ "uuid": "dist/bin/uuid" } }, - "node_modules/@aws-sdk/client-dynamodb": { - "version": "3.485.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.485.0.tgz", - "integrity": "sha512-OgUcLIMxndkX1SlnxBtz0zvQxHlOLvpJlOjiXsx3jmhJk1qH+cR6gw0Fmpz+h3iwdR8UDYqVAGeLfP8fEYJ73A==", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.485.0", - "@aws-sdk/core": "3.485.0", - "@aws-sdk/credential-provider-node": "3.485.0", - "@aws-sdk/middleware-endpoint-discovery": "3.485.0", - "@aws-sdk/middleware-host-header": "3.485.0", - "@aws-sdk/middleware-logger": "3.485.0", - "@aws-sdk/middleware-recursion-detection": "3.485.0", - "@aws-sdk/middleware-user-agent": "3.485.0", - "@aws-sdk/region-config-resolver": "3.485.0", - "@aws-sdk/types": "3.485.0", - "@aws-sdk/util-endpoints": "3.485.0", - "@aws-sdk/util-user-agent-browser": "3.485.0", - "@aws-sdk/util-user-agent-node": "3.485.0", - "@smithy/config-resolver": "^2.0.23", - "@smithy/core": "^1.2.2", - "@smithy/fetch-http-handler": "^2.3.2", - "@smithy/hash-node": "^2.0.18", - "@smithy/invalid-dependency": "^2.0.16", - "@smithy/middleware-content-length": "^2.0.18", - "@smithy/middleware-endpoint": "^2.3.0", - "@smithy/middleware-retry": "^2.0.26", - "@smithy/middleware-serde": "^2.0.16", - "@smithy/middleware-stack": "^2.0.10", - "@smithy/node-config-provider": "^2.1.9", - "@smithy/node-http-handler": "^2.2.2", - "@smithy/protocol-http": "^3.0.12", - "@smithy/smithy-client": "^2.2.1", - "@smithy/types": "^2.8.0", - "@smithy/url-parser": "^2.0.16", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.24", - "@smithy/util-defaults-mode-node": "^2.0.32", - "@smithy/util-endpoints": "^1.0.8", - "@smithy/util-middleware": "^2.0.9", - "@smithy/util-retry": "^2.0.9", - "@smithy/util-utf8": "^2.0.2", - "@smithy/util-waiter": "^2.0.16", - "tslib": "^2.5.0", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-dynamodb/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@aws-sdk/client-lambda": { "version": "3.567.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.567.0.tgz", @@ -1793,6 +1740,8 @@ "version": "3.485.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.485.0.tgz", "integrity": "sha512-apN2bEn0PZs0jD4jAfvwO3dlWqw9YIQJ6TAudM1bd3S5vzWqlBBcLfQpK6taHoQaI+WqgUWXLuOf7gRFbGXKPg==", + "dev": true, + "peer": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", @@ -2321,6 +2270,8 @@ "version": "3.485.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.485.0.tgz", "integrity": "sha512-PI4q36kVF0fpIPZyeQhrwwJZ6SRkOGvU3rX5Qn4b5UY5X+Ct1aLhqSX8/OB372UZIcnh6eSvERu8POHleDO7Jw==", + "dev": true, + "peer": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", @@ -2371,6 +2322,8 @@ "version": "3.485.0", "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.485.0.tgz", "integrity": "sha512-Yvi80DQcbjkYCft471ClE3HuetuNVqntCs6eFOomDcrJaqdOFrXv2kJAxky84MRA/xb7bGlDGAPbTuj1ICputg==", + "dev": true, + "peer": true, "dependencies": { "@smithy/core": "^1.2.2", "@smithy/protocol-http": "^3.0.12", @@ -2387,6 +2340,8 @@ "version": "3.485.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.485.0.tgz", "integrity": "sha512-3XkFgwVU1XOB33dV7t9BKJ/ptdl2iS+0dxE7ecq8aqT2/gsfKmLCae1G17P8WmdD3z0kMDTvnqM2aWgUnSOkmg==", + "dev": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.485.0", "@smithy/property-provider": "^2.0.0", @@ -2436,6 +2391,8 @@ "version": "3.485.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.485.0.tgz", "integrity": "sha512-cFYF/Bdw7EnT4viSxYpNIv3IBkri/Yb+JpQXl8uDq7bfVJfAN5qZmK07vRkg08xL6TC4F41wshhMSAucGdTwIw==", + "dev": true, + "peer": true, "dependencies": { "@aws-sdk/credential-provider-env": "3.485.0", "@aws-sdk/credential-provider-process": "3.485.0", @@ -2456,6 +2413,8 @@ "version": "3.485.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.485.0.tgz", "integrity": "sha512-2DwzO2azkSzngifKDT61W/DL0tSzewuaFHiLJWdfc8Et3mdAQJ9x3KAj8u7XFpjIcGNqk7FiKjN+zeGUuNiEhA==", + "dev": true, + "peer": true, "dependencies": { "@aws-sdk/credential-provider-env": "3.485.0", "@aws-sdk/credential-provider-ini": "3.485.0", @@ -2477,6 +2436,8 @@ "version": "3.485.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.485.0.tgz", "integrity": "sha512-X9qS6ZO/rDKYDgWqD1YmSX7sAUUHax9HbXlgGiTTdtfhZvQh1ZmnH6wiPu5WNliafHZFtZT2W07kgrDLPld/Ug==", + "dev": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.485.0", "@smithy/property-provider": "^2.0.0", @@ -2492,6 +2453,8 @@ "version": "3.485.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.485.0.tgz", "integrity": "sha512-l0oC8GTrWh+LFQQfSmG1Jai1PX7Mhj9arb/CaS1/tmeZE0hgIXW++tvljYs/Dds4LGXUlaWG+P7BrObf6OyIXA==", + "dev": true, + "peer": true, "dependencies": { "@aws-sdk/client-sso": "3.485.0", "@aws-sdk/token-providers": "3.485.0", @@ -2509,6 +2472,8 @@ "version": "3.485.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.485.0.tgz", "integrity": "sha512-WpBFZFE0iXtnibH5POMEKITj/hR0YV5l2n9p8BEvKjdJ63s3Xke1RN20ZdIyKDaRDwj8adnKDgNPEnAKdS4kLw==", + "dev": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.485.0", "@smithy/property-provider": "^2.0.0", @@ -2519,35 +2484,6 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/endpoint-cache": { - "version": "3.465.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/endpoint-cache/-/endpoint-cache-3.465.0.tgz", - "integrity": "sha512-0cuotk23hVSrqxHkJ3TTWC9MVMRgwlUvCatyegJEauJnk8kpLSGXE5KVdExlUBwShGNlj7ac29okZ9m17iTi5Q==", - "dependencies": { - "mnemonist": "0.38.3", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/lib-dynamodb": { - "version": "3.485.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/lib-dynamodb/-/lib-dynamodb-3.485.0.tgz", - "integrity": "sha512-CazO5E6Di7IGU0j4uzsroLv4GV+ydG+awtGIBQ40ue0I5UtHXohwyWwRIYvFF+J0tAont5lYKWE+AfKhVzW+IQ==", - "dependencies": { - "@aws-sdk/util-dynamodb": "3.485.0", - "@smithy/smithy-client": "^2.2.1", - "@smithy/types": "^2.8.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-dynamodb": "^3.0.0" - } - }, "node_modules/@aws-sdk/middleware-bucket-endpoint": { "version": "3.525.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.525.0.tgz", @@ -2581,22 +2517,6 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/middleware-endpoint-discovery": { - "version": "3.485.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.485.0.tgz", - "integrity": "sha512-0AKEbTeXuKrrbMQDBywvTJTnshWSuel53CQEen6Ghd8EAgJ+x4y4K9puACWrtO6yvDFQCMoimI6hH93d9qcKZw==", - "dependencies": { - "@aws-sdk/endpoint-cache": "3.465.0", - "@aws-sdk/types": "3.485.0", - "@smithy/node-config-provider": "^2.1.9", - "@smithy/protocol-http": "^3.0.12", - "@smithy/types": "^2.8.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-sdk/middleware-expect-continue": { "version": "3.523.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.523.0.tgz", @@ -2665,6 +2585,8 @@ "version": "3.485.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.485.0.tgz", "integrity": "sha512-1mAUX9dQNGo2RIKseVj7SI/D5abQJQ/Os8hQ0NyVAyyVYF+Yjx5PphKgfhM5yoBwuwZUl6q71XPYEGNx7be6SA==", + "dev": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.485.0", "@smithy/protocol-http": "^3.0.12", @@ -2708,6 +2630,8 @@ "version": "3.485.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.485.0.tgz", "integrity": "sha512-O8IgJ0LHi5wTs5GlpI7nqmmSSagkVdd1shpGgQWY2h0kMSCII8CJZHBG97dlFFpGTvx5EDlhPNek7rl/6F4dRw==", + "dev": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.485.0", "@smithy/types": "^2.8.0", @@ -2721,6 +2645,8 @@ "version": "3.485.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.485.0.tgz", "integrity": "sha512-ZeVNATGNFcqkWDut3luVszROTUzkU5u+rJpB/xmeMoenlDAjPRiHt/ca3WkI5wAnIJ1VSNGpD2sOFLMCH+EWag==", + "dev": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.485.0", "@smithy/protocol-http": "^3.0.12", @@ -2832,6 +2758,8 @@ "version": "3.485.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.485.0.tgz", "integrity": "sha512-CddCVOn+OPQ0CcchketIg+WF6v+MDLAf3GOYTR2htUxxIm7HABuRd6R3kvQ5Jny9CV8gMt22G1UZITsFexSJlQ==", + "dev": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.485.0", "@aws-sdk/util-endpoints": "3.485.0", @@ -2847,6 +2775,8 @@ "version": "3.485.0", "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.485.0.tgz", "integrity": "sha512-2FB2EQ0sIE+YgFqGtkE1lDIMIL6nYe6MkOHBwBM7bommadKIrbbr2L22bPZGs3ReTsxiJabjzxbuCAVhrpHmhg==", + "dev": true, + "peer": true, "dependencies": { "@smithy/node-config-provider": "^2.1.9", "@smithy/types": "^2.8.0", @@ -2894,6 +2824,8 @@ "version": "3.485.0", "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.485.0.tgz", "integrity": "sha512-kOXA1WKIVIFNRqHL8ynVZ3hCKLsgnEmGr2iDR6agDNw5fYIlCO/6N2xR6QdGcLTvUUbwOlz4OvKLUQnWMKAnnA==", + "dev": true, + "peer": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", @@ -2941,6 +2873,7 @@ "version": "3.485.0", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.485.0.tgz", "integrity": "sha512-+QW32YQdvZRDOwrAQPo/qCyXoSjgXB6RwJwCwkd8ebJXRXw6tmGKIHaZqYHt/LtBymvnaBgBBADNa4+qFvlOFw==", + "dev": true, "dependencies": { "@smithy/types": "^2.8.0", "tslib": "^2.5.0" @@ -2962,24 +2895,12 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/util-dynamodb": { - "version": "3.485.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-dynamodb/-/util-dynamodb-3.485.0.tgz", - "integrity": "sha512-DFDKW1wJciPKZd8whkGUMkeT9BGFANh4a5f5nMHdc1WpMIORMgE6vEks910QXgaEB46RLFMtQFpOwfPpDmOObQ==", - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-dynamodb": "^3.0.0" - } - }, "node_modules/@aws-sdk/util-endpoints": { "version": "3.485.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.485.0.tgz", "integrity": "sha512-dTd642F7nJisApF8YjniqQ6U59CP/DCtar11fXf1nG9YNBCBsNNVw5ZfZb5nSNzaIdy27mQioWTCV18JEj1mxg==", + "dev": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.485.0", "@smithy/util-endpoints": "^1.0.8", @@ -2993,6 +2914,7 @@ "version": "3.465.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.465.0.tgz", "integrity": "sha512-f+QNcWGswredzC1ExNAB/QzODlxwaTdXkNT5cvke2RLX8SFU5pYk6h4uCtWC0vWPELzOfMfloBrJefBzlarhsw==", + "dev": true, "dependencies": { "tslib": "^2.5.0" }, @@ -3004,6 +2926,8 @@ "version": "3.485.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.485.0.tgz", "integrity": "sha512-QliWbjg0uOhGTcWgWTKPMY0SBi07g253DjwrCINT1auqDrdQPxa10xozpZExBYjAK2KuhYDNUzni127ae6MHOw==", + "dev": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.485.0", "@smithy/types": "^2.8.0", @@ -3015,6 +2939,8 @@ "version": "3.485.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.485.0.tgz", "integrity": "sha512-QF+aQ9jnDlPUlFBxBRqOylPf86xQuD3aEPpOErR+50qJawVvKa94uiAFdvtI9jv6hnRZmuFsTj2rsyytnbAYBA==", + "dev": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.485.0", "@smithy/node-config-provider": "^2.1.9", @@ -3037,6 +2963,7 @@ "version": "3.259.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", + "dev": true, "dependencies": { "tslib": "^2.3.1" } @@ -6563,6 +6490,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.2.0.tgz", "integrity": "sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -6596,6 +6524,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.2.0.tgz", "integrity": "sha512-fsiMgd8toyUba6n1WRmr+qACzXltpdDkPTAaDqc8QqPBUzO+/JKwL6bUBseHVi8tu9l+3JOK+tSf7cay+4B3LA==", + "dev": true, "dependencies": { "@smithy/node-config-provider": "^2.3.0", "@smithy/types": "^2.12.0", @@ -6611,6 +6540,7 @@ "version": "1.4.2", "resolved": "https://registry.npmjs.org/@smithy/core/-/core-1.4.2.tgz", "integrity": "sha512-2fek3I0KZHWJlRLvRTqxTEri+qV0GRHrJIoLFuBMZB4EMg4WgeBGfF0X6abnrNYpq55KJ6R4D6x4f0vLnhzinA==", + "dev": true, "dependencies": { "@smithy/middleware-endpoint": "^2.5.1", "@smithy/middleware-retry": "^2.3.1", @@ -6629,6 +6559,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.3.0.tgz", "integrity": "sha512-BWB9mIukO1wjEOo1Ojgl6LrG4avcaC7T/ZP6ptmAaW4xluhSIPZhY+/PI5YKzlk+jsm+4sQZB45Bt1OfMeQa3w==", + "dev": true, "dependencies": { "@smithy/node-config-provider": "^2.3.0", "@smithy/property-provider": "^2.2.0", @@ -6711,6 +6642,7 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.5.0.tgz", "integrity": "sha512-BOWEBeppWhLn/no/JxUL/ghTfANTjT7kg3Ww2rPqTUY9R4yHPXxJ9JhMe3Z03LN3aPwiwlpDIUcVw1xDyHqEhw==", + "dev": true, "dependencies": { "@smithy/protocol-http": "^3.3.0", "@smithy/querystring-builder": "^2.2.0", @@ -6736,6 +6668,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.2.0.tgz", "integrity": "sha512-zLWaC/5aWpMrHKpoDF6nqpNtBhlAYKF/7+9yMN7GpdR8CzohnWfGtMznPybnwSS8saaXBMxIGwJqR4HmRp6b3g==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "@smithy/util-buffer-from": "^2.2.0", @@ -6765,6 +6698,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.2.0.tgz", "integrity": "sha512-nEDASdbKFKPXN2O6lOlTgrEEOO9NHIeO+HVvZnkqc8h5U9g3BIhWsvzFo+UcUbliMHvKNPD/zVxDrkP1Sbgp8Q==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -6774,6 +6708,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "dev": true, "dependencies": { "tslib": "^2.6.2" }, @@ -6797,6 +6732,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.2.0.tgz", "integrity": "sha512-5bl2LG1Ah/7E5cMSC+q+h3IpVHMeOkG0yLRyQT1p2aMJkSrZG7RlXHPuAgb7EyaFeidKEnnd/fNaLLaKlHGzDQ==", + "dev": true, "dependencies": { "@smithy/protocol-http": "^3.3.0", "@smithy/types": "^2.12.0", @@ -6810,6 +6746,7 @@ "version": "2.5.1", "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.5.1.tgz", "integrity": "sha512-1/8kFp6Fl4OsSIVTWHnNjLnTL8IqpIb/D3sTSczrKFnrE9VMNWxnrRKNvpUHOJ6zpGD5f62TPm7+17ilTJpiCQ==", + "dev": true, "dependencies": { "@smithy/middleware-serde": "^2.3.0", "@smithy/node-config-provider": "^2.3.0", @@ -6827,6 +6764,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.3.1.tgz", "integrity": "sha512-P2bGufFpFdYcWvqpyqqmalRtwFUNUA8vHjJR5iGqbfR6mp65qKOLcUd6lTr4S9Gn/enynSrSf3p3FVgVAf6bXA==", + "dev": true, "dependencies": { "@smithy/node-config-provider": "^2.3.0", "@smithy/protocol-http": "^3.3.0", @@ -6846,6 +6784,7 @@ "version": "9.0.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "dev": true, "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" @@ -6858,6 +6797,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.3.0.tgz", "integrity": "sha512-sIADe7ojwqTyvEQBe1nc/GXB9wdHhi9UwyX0lTyttmUWDJLP655ZYE1WngnNyXREme8I27KCaUhyhZWRXL0q7Q==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -6870,6 +6810,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.2.0.tgz", "integrity": "sha512-Qntc3jrtwwrsAC+X8wms8zhrTr0sFXnyEGhZd9sLtsJ/6gGQKFzNB+wWbOcpJd7BR8ThNCoKt76BuQahfMvpeA==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -6882,6 +6823,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.3.0.tgz", "integrity": "sha512-0elK5/03a1JPWMDPaS726Iw6LpQg80gFut1tNpPfxFuChEEklo2yL823V94SpTZTxmKlXFtFgsP55uh3dErnIg==", + "dev": true, "dependencies": { "@smithy/property-provider": "^2.2.0", "@smithy/shared-ini-file-loader": "^2.4.0", @@ -6896,6 +6838,7 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.5.0.tgz", "integrity": "sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA==", + "dev": true, "dependencies": { "@smithy/abort-controller": "^2.2.0", "@smithy/protocol-http": "^3.3.0", @@ -6911,6 +6854,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.2.0.tgz", "integrity": "sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -6923,6 +6867,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.3.0.tgz", "integrity": "sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -6935,6 +6880,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.2.0.tgz", "integrity": "sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "@smithy/util-uri-escape": "^2.2.0", @@ -6948,6 +6894,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.2.0.tgz", "integrity": "sha512-BvHCDrKfbG5Yhbpj4vsbuPV2GgcpHiAkLeIlcA1LtfpMz3jrqizP1+OguSNSj1MwBHEiN+jwNisXLGdajGDQJA==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -6960,6 +6907,7 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.1.5.tgz", "integrity": "sha512-uBDTIBBEdAQryvHdc5W8sS5YX7RQzF683XrHePVdFmAgKiMofU15FLSM0/HU03hKTnazdNRFa0YHS7+ArwoUSQ==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0" }, @@ -6971,6 +6919,7 @@ "version": "2.4.0", "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.4.0.tgz", "integrity": "sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -6983,6 +6932,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.3.0.tgz", "integrity": "sha512-ui/NlpILU+6HAQBfJX8BBsDXuKSNrjTSuOYArRblcrErwKFutjrCNb/OExfVRyj9+26F9J+ZmfWT+fKWuDrH3Q==", + "dev": true, "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "@smithy/types": "^2.12.0", @@ -7000,6 +6950,7 @@ "version": "2.5.1", "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.5.1.tgz", "integrity": "sha512-jrbSQrYCho0yDaaf92qWgd+7nAeap5LtHTI51KXqmpIFCceKU3K9+vIVTUH72bOJngBMqa4kyu1VJhRcSrk/CQ==", + "dev": true, "dependencies": { "@smithy/middleware-endpoint": "^2.5.1", "@smithy/middleware-stack": "^2.2.0", @@ -7016,6 +6967,7 @@ "version": "2.12.0", "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.12.0.tgz", "integrity": "sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==", + "dev": true, "dependencies": { "tslib": "^2.6.2" }, @@ -7027,6 +6979,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.2.0.tgz", "integrity": "sha512-hoA4zm61q1mNTpksiSWp2nEl1dt3j726HdRhiNgVJQMj7mLp7dprtF57mOB6JvEk/x9d2bsuL5hlqZbBuHQylQ==", + "dev": true, "dependencies": { "@smithy/querystring-parser": "^2.2.0", "@smithy/types": "^2.12.0", @@ -7037,6 +6990,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.3.0.tgz", "integrity": "sha512-s3+eVwNeJuXUwuMbusncZNViuhv2LjVJ1nMwTqSA0XAC7gjKhqqxRdJPhR8+YrkoZ9IiIbFk/yK6ACe/xlF+hw==", + "dev": true, "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "@smithy/util-utf8": "^2.3.0", @@ -7050,6 +7004,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.2.0.tgz", "integrity": "sha512-dtpw9uQP7W+n3vOtx0CfBD5EWd7EPdIdsQnWTDoFf77e3VUf05uA7R7TGipIo8e4WL2kuPdnsr3hMQn9ziYj5w==", + "dev": true, "dependencies": { "tslib": "^2.6.2" } @@ -7058,6 +7013,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.3.0.tgz", "integrity": "sha512-ITWT1Wqjubf2CJthb0BuT9+bpzBfXeMokH/AAa5EJQgbv9aPMVfnM76iFIZVFf50hYXGbtiV71BHAthNWd6+dw==", + "dev": true, "dependencies": { "tslib": "^2.6.2" }, @@ -7069,6 +7025,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "dev": true, "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" @@ -7081,6 +7038,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-2.3.0.tgz", "integrity": "sha512-HZkzrRcuFN1k70RLqlNK4FnPXKOpkik1+4JaBoHNJn+RnJGYqaa3c5/+XtLOXhlKzlRgNvyaLieHTW2VwGN0VQ==", + "dev": true, "dependencies": { "tslib": "^2.6.2" }, @@ -7092,6 +7050,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.2.1.tgz", "integrity": "sha512-RtKW+8j8skk17SYowucwRUjeh4mCtnm5odCL0Lm2NtHQBsYKrNW0od9Rhopu9wF1gHMfHeWF7i90NwBz/U22Kw==", + "dev": true, "dependencies": { "@smithy/property-provider": "^2.2.0", "@smithy/smithy-client": "^2.5.1", @@ -7107,6 +7066,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.3.1.tgz", "integrity": "sha512-vkMXHQ0BcLFysBMWgSBLSk3+leMpFSyyFj8zQtv5ZyUBx8/owVh1/pPEkzmW/DR/Gy/5c8vjLDD9gZjXNKbrpA==", + "dev": true, "dependencies": { "@smithy/config-resolver": "^2.2.0", "@smithy/credential-provider-imds": "^2.3.0", @@ -7124,6 +7084,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-1.2.0.tgz", "integrity": "sha512-BuDHv8zRjsE5zXd3PxFXFknzBG3owCpjq8G3FcsXW3CykYXuEqM3nTSsmLzw5q+T12ZYuDlVUZKBdpNbhVtlrQ==", + "dev": true, "dependencies": { "@smithy/node-config-provider": "^2.3.0", "@smithy/types": "^2.12.0", @@ -7137,6 +7098,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.2.0.tgz", "integrity": "sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ==", + "dev": true, "dependencies": { "tslib": "^2.6.2" }, @@ -7148,6 +7110,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.2.0.tgz", "integrity": "sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -7160,6 +7123,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.2.0.tgz", "integrity": "sha512-q9+pAFPTfftHXRytmZ7GzLFFrEGavqapFc06XxzZFcSIGERXMerXxCitjOG1prVDR9QdjqotF40SWvbqcCpf8g==", + "dev": true, "dependencies": { "@smithy/service-error-classification": "^2.1.5", "@smithy/types": "^2.12.0", @@ -7173,6 +7137,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.2.0.tgz", "integrity": "sha512-17faEXbYWIRst1aU9SvPZyMdWmqIrduZjVOqCPMIsWFNxs5yQQgFrJL6b2SdiCzyW9mJoDjFtgi53xx7EH+BXA==", + "dev": true, "dependencies": { "@smithy/fetch-http-handler": "^2.5.0", "@smithy/node-http-handler": "^2.5.0", @@ -7191,6 +7156,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.2.0.tgz", "integrity": "sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA==", + "dev": true, "dependencies": { "tslib": "^2.6.2" }, @@ -7202,6 +7168,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "dev": true, "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" @@ -7214,6 +7181,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-2.2.0.tgz", "integrity": "sha512-IHk53BVw6MPMi2Gsn+hCng8rFA3ZmR3Rk7GllxDUW9qFJl/hiSvskn7XldkECapQVkIg/1dHpMAxI9xSTaLLSA==", + "dev": true, "dependencies": { "@smithy/abort-controller": "^2.2.0", "@smithy/types": "^2.12.0", @@ -8240,7 +8208,8 @@ "node_modules/bowser": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", - "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==" + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", + "dev": true }, "node_modules/boxen": { "version": "7.1.1", @@ -10704,6 +10673,7 @@ "version": "4.2.5", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==", + "dev": true, "funding": [ { "type": "paypal", @@ -16090,14 +16060,6 @@ "mkdirp": "bin/cmd.js" } }, - "node_modules/mnemonist": { - "version": "0.38.3", - "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.3.tgz", - "integrity": "sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw==", - "dependencies": { - "obliterator": "^1.6.1" - } - }, "node_modules/mocha": { "version": "6.2.3", "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.2.3.tgz", @@ -16802,11 +16764,6 @@ "node": ">=0.10.0" } }, - "node_modules/obliterator": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-1.6.1.tgz", - "integrity": "sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig==" - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -19777,7 +19734,8 @@ "node_modules/strnum": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", + "dev": true }, "node_modules/strtok3": { "version": "6.3.0", @@ -20135,7 +20093,8 @@ "node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/type": { "version": "2.7.2", diff --git a/services/app-api/package.json b/services/app-api/package.json index d60dd5e01..57adc4c08 100644 --- a/services/app-api/package.json +++ b/services/app-api/package.json @@ -15,6 +15,7 @@ "devDependencies": { "@types/jest": "^29.5.5", "aws-sdk-client-mock": "^0.5.6", + "aws-sdk": "^2.752.0", "esbuild": "^0.19.4", "esbuild-jest": "^0.5.0", "jest": "^29.7.0", @@ -27,9 +28,6 @@ "xstate": "^4.26.0" }, "dependencies": { - "aws-sdk": "^2.752.0", - "@aws-sdk/client-dynamodb": "^3.454.0", - "@aws-sdk/lib-dynamodb": "^3.454.0", "cmscommonlib": "file:../common", "date-fns": "^2.16.1", "dynamodb-local": "^0.0.32", diff --git a/services/app-api/serverless.yml b/services/app-api/serverless.yml index 78a24d3a7..f22c2ea5d 100644 --- a/services/app-api/serverless.yml +++ b/services/app-api/serverless.yml @@ -17,8 +17,6 @@ plugins: - serverless-iam-helper - serverless-s3-bucket-helper custom: - esbuild: - exclude: [] stage: ${opt:stage, self:provider.stage} oneMacTableName: onemac-${self:custom.stage}-one iamPath: ${ssm:/configuration/${self:custom.stage}/iam/path, ssm:/configuration/default/iam/path, "/"} @@ -92,6 +90,8 @@ provider: tracing: apiGateway: true lambda: true + layers: + - ${cf:aws-sdk-v2-layer-${self:custom.stage}.AwsSdkV2LambdaLayerQualifiedArn, ""} functions: migrate: diff --git a/services/layers/aws-sdk-v2-layer/nodejs/.bin/uuid b/services/layers/aws-sdk-v2-layer/nodejs/.bin/uuid new file mode 120000 index 000000000..588f70ecc --- /dev/null +++ b/services/layers/aws-sdk-v2-layer/nodejs/.bin/uuid @@ -0,0 +1 @@ +../uuid/dist/bin/uuid \ No newline at end of file diff --git a/services/layers/aws-sdk-v2-layer/nodejs/.package-lock.json b/services/layers/aws-sdk-v2-layer/nodejs/.package-lock.json new file mode 100644 index 000000000..83cc86d3e --- /dev/null +++ b/services/layers/aws-sdk-v2-layer/nodejs/.package-lock.json @@ -0,0 +1,423 @@ +{ + "name": "aws-sdk-v2-layer", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/aws-sdk": { + "version": "2.1691.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1691.0.tgz", + "integrity": "sha512-/F2YC+DlsY3UBM2Bdnh5RLHOPNibS/+IcjUuhP8XuctyrN+MlL+fWDAiela32LTDk7hMy4rx8MTgvbJ+0blO5g==", + "hasInstallScript": true, + "dependencies": { + "buffer": "4.9.2", + "events": "1.1.1", + "ieee754": "1.1.13", + "jmespath": "0.16.0", + "querystring": "0.2.0", + "sax": "1.2.1", + "url": "0.10.3", + "util": "^0.12.4", + "uuid": "8.0.0", + "xml2js": "0.6.2" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/jmespath": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", + "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/sax": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", + "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==" + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/url": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", + "integrity": "sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==", + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/uuid": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", + "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/xml2js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", + "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "engines": { + "node": ">=4.0" + } + } + } +} diff --git a/services/layers/aws-sdk-v2-layer/nodejs/package-lock.json b/services/layers/aws-sdk-v2-layer/nodejs/package-lock.json new file mode 100644 index 000000000..2a21f676e --- /dev/null +++ b/services/layers/aws-sdk-v2-layer/nodejs/package-lock.json @@ -0,0 +1,431 @@ +{ + "name": "nodejs", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "nodejs", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "aws-sdk": "^2.1691.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/aws-sdk": { + "version": "2.1691.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1691.0.tgz", + "integrity": "sha512-/F2YC+DlsY3UBM2Bdnh5RLHOPNibS/+IcjUuhP8XuctyrN+MlL+fWDAiela32LTDk7hMy4rx8MTgvbJ+0blO5g==", + "hasInstallScript": true, + "dependencies": { + "buffer": "4.9.2", + "events": "1.1.1", + "ieee754": "1.1.13", + "jmespath": "0.16.0", + "querystring": "0.2.0", + "sax": "1.2.1", + "url": "0.10.3", + "util": "^0.12.4", + "uuid": "8.0.0", + "xml2js": "0.6.2" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/jmespath": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", + "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/sax": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", + "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==" + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/url": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", + "integrity": "sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==", + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/uuid": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", + "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/xml2js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", + "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "engines": { + "node": ">=4.0" + } + } + } +} diff --git a/services/layers/aws-sdk-v2-layer/nodejs/package.json b/services/layers/aws-sdk-v2-layer/nodejs/package.json new file mode 100644 index 000000000..db199a34e --- /dev/null +++ b/services/layers/aws-sdk-v2-layer/nodejs/package.json @@ -0,0 +1,12 @@ +{ + "name": "aws-sdk-v2-layer", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "dependencies": { + "aws-sdk": "^2.752.0" + } +} diff --git a/services/layers/aws-sdk-v2-layer/serverless.yml b/services/layers/aws-sdk-v2-layer/serverless.yml new file mode 100644 index 000000000..6d996e607 --- /dev/null +++ b/services/layers/aws-sdk-v2-layer/serverless.yml @@ -0,0 +1,16 @@ +service: aws-sdk-v2-layer + +provider: + name: aws + runtime: nodejs20.x + +# Define the Lambda layer +layers: + awsSdkV2: + path: . + compatibleRuntimes: + - nodejs20.x + +# Package the layer +package: + individually: true diff --git a/services/seatool-sink/package.json b/services/seatool-sink/package.json index 6245ba1f9..64c4dc84d 100644 --- a/services/seatool-sink/package.json +++ b/services/seatool-sink/package.json @@ -5,12 +5,12 @@ "scripts": {}, "dependencies": { "cmscommonlib": "file:../common", - "aws-sdk": "^2.752.0", "kafka-node": "^5.0.0", "kafkajs": "^1.14.0", "lodash": "^4.17.20" }, "devDependencies": { + "aws-sdk": "^2.752.0", "esbuild": "^0.19.4", "serverless-dotenv-plugin": "^3.12.2", "serverless-esbuild": "^1.48.4", diff --git a/services/seatool-sink/serverless.yml b/services/seatool-sink/serverless.yml index 460132fc7..4cd41863a 100644 --- a/services/seatool-sink/serverless.yml +++ b/services/seatool-sink/serverless.yml @@ -12,8 +12,6 @@ plugins: - serverless-s3-bucket-helper custom: - esbuild: - exclude: [] stage: ${opt:stage, self:provider.stage} iamPath: ${ssm:/configuration/${self:custom.stage}/iam/path, ssm:/configuration/default/iam/path} iamPermissionsBoundaryPolicy: ${ssm:/configuration/${self:custom.stage}/iam/permissionsBoundaryPolicy, ssm:/configuration/default/iam/permissionsBoundaryPolicy, ""} @@ -49,6 +47,8 @@ provider: runtime: nodejs20.x region: us-east-1 stage: dev + layers: + - ${cf:aws-sdk-v2-layer-${self:custom.stage}.AwsSdkV2LambdaLayerQualifiedArn} functions: seaToolEvent: diff --git a/services/source/package.json b/services/source/package.json index 116b23bb7..c4dd6cb13 100644 --- a/services/source/package.json +++ b/services/source/package.json @@ -7,10 +7,10 @@ "cfn-response-async": "^1.0.0", "kafkajs": "^1.14.0", "lodash": "^4.17.20", - "serverless-plugin-scripts": "^1.0.2", - "aws-sdk": "^2.752.0" + "serverless-plugin-scripts": "^1.0.2" }, "devDependencies": { + "aws-sdk": "^2.752.0", "serverless-bundle": "^5.3.0" } } diff --git a/services/source/serverless.yml b/services/source/serverless.yml index d532cb758..61635e31d 100644 --- a/services/source/serverless.yml +++ b/services/source/serverless.yml @@ -20,8 +20,6 @@ custom: migrationTableName: onemac-${self:service}-${self:custom.stage}-migration bootstrapBrokerStringTls: ${ssm:/configuration/${self:custom.stage}/bigmac/bootstrapBrokerStringTls, ssm:/configuration/default/bigmac/bootstrapBrokerStringTls} vpcId: ${ssm:/configuration/${self:custom.stage}/vpc/id, ssm:/configuration/default/vpc/id} - esbuild: - exclude: [] dataSubnets: - ${ssm:/configuration/${self:custom.stage}/vpc/subnets/data/a/id, ssm:/configuration/default/vpc/subnets/data/a/id} - ${ssm:/configuration/${self:custom.stage}/vpc/subnets/data/b/id, ssm:/configuration/default/vpc/subnets/data/b/id} @@ -47,6 +45,8 @@ provider: runtime: nodejs20.x region: us-east-1 stage: dev + layers: + - ${cf:aws-sdk-v2-layer-${self:custom.stage}.AwsSdkV2LambdaLayerQualifiedArn} params: develop: