-
Notifications
You must be signed in to change notification settings - Fork 22
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Clarify local development login flow #2540
Conversation
@@ -77,7 +77,11 @@ function sendPassCode(email, passcode, httpOrigin, redirectTo) { | |||
); | |||
|
|||
if (process.env.DEV_LOGIN_LINK && process.env.NODE_ENV === 'development') { | |||
console.log(`Login link generated: \x1b[32m${href}`); | |||
const BLUE = '\x1b[34m'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wasn't sure if the preference was for something like this vs using a library like chalk. We seem to have chalk installed but only as a dev dependency, so I didn't want to rely on it here, but I'm happy to update if that feels cleaner.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🤔 Given that this execution path is specific to dev workflows, is there a way to use chalk without declaring it as a production dependency?
In general, my preference for logging is to slowly migrate over to structured logging (we currently use bunyan
for this, with a preconfigured base logger exported by lib/logging.js
). However, given that this is specifically intended to be human-readable and not something we would try to query with a tool like Datadog, it may be best to leave the colorization as-is for now (assuming there isn't a way to use chalk here without bringing it in as a prod dependency).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's possible to use chalk here from devDependencies, but I think it ends up more messy than worth it. You run into a few issues you have to skirt:
- The airbnb base eslint config we use disallows devDependencies being used outside test and config files (https://github.com/airbnb/javascript/blob/master/packages/eslint-config-airbnb-base/rules/imports.js#L71-L95), so we'd have to either change our eslint config or ignore the rule for this line of code.
- We're using chalk v5, which moved to ESM, meaning we can't
require('chalk')
without downgrading to v4 or using a pretty hacky-feeling dynamic import workaround.
Here's basically what that code would look like:
if (process.env.DEV_LOGIN_LINK && process.env.NODE_ENV === 'development') {
// eslint-disable-next-line import/no-extraneous-dependencies
import('chalk').then((chalkModule) => {
const chalk = chalkModule.default;
const message = `| Login link generated: ${href} |`;
console.log(chalk.blue('-'.repeat(message.length)));
console.log(chalk.blue(message));
console.log(chalk.blue('-'.repeat(message.length)));
});
}
Personally, I don't think it's a particular improvement. It also has the small danger of someone copy-pasting code that relies on chalk outside of the NODE_ENV === 'development'
check and possibly breaking staging/prod.
If this is the only instance of wanting color output for now, I'd be inclined to leave it as-is. If we start needing this a few places, I'd probably consider promoting chalk to a full dependency. Since this is server-side code, we shouldn't be as worried about bundle size, etc.
Thoughts?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agree with the above – let's leave as-is unless/until there are any compelling use-cases for production.
QA Summary
Test CoverageCoverage report for `packages/client`
Coverage report for `packages/server`
Pusher: @jeffsmohan, Action: |
Terraform Summary
Hint: If "Terraform Format & Style" failed, run OutputValidation Output
Plan OutputNote: Objects have changed outside of Terraform
Terraform detected the following changes made outside of Terraform since the
last "terraform apply" which may have affected this plan:
# module.api.aws_ecs_task_definition.default[0] has changed
~ resource "aws_ecs_task_definition" "default" {
id = "gost-staging-api"
+ tags = {}
# (13 unchanged attributes hidden)
+ volume {
+ name = "data"
+ efs_volume_configuration {
+ file_system_id = "fs-08f95063c1cdbe191"
+ root_directory = "/"
+ transit_encryption = "ENABLED"
+ transit_encryption_port = 0
+ authorization_config {
+ access_point_id = "fsap-03bc0296928aade4f"
}
}
}
- volume {
- name = "data" -> null
- efs_volume_configuration {
- file_system_id = "fs-08f95063c1cdbe191" -> null
- root_directory = "/" -> null
- transit_encryption = "ENABLED" -> null
- authorization_config {
- access_point_id = "fsap-03bc0296928aade4f" -> null
}
}
}
# (1 unchanged block hidden)
}
# module.api.aws_iam_role.execution[0] has changed
~ resource "aws_iam_role" "execution" {
id = "gost-staging-api-ECSTaskExecution-20230217010414321500000009"
name = "gost-staging-api-ECSTaskExecution-20230217010414321500000009"
~ role_last_used = [
~ {
~ last_used_date = "2024-02-01T17:08:06Z" -> "2024-02-02T17:43:06Z"
# (1 unchanged element hidden)
},
]
tags = {}
# (11 unchanged attributes hidden)
# (2 unchanged blocks hidden)
}
# module.api.aws_iam_role.task[0] has changed
~ resource "aws_iam_role" "task" {
id = "gost-staging-api-ECSTask-2023021701041477300000000a"
name = "gost-staging-api-ECSTask-2023021701041477300000000a"
~ role_last_used = [
~ {
~ last_used_date = "2024-02-01T17:08:05Z" -> "2024-02-02T17:43:02Z"
# (1 unchanged element hidden)
},
]
tags = {}
# (11 unchanged attributes hidden)
# (6 unchanged blocks hidden)
}
Unless you have made equivalent changes to your configuration, or ignored the
relevant attributes using ignore_changes, the following plan may include
actions to undo or respond to these changes.
─────────────────────────────────────────────────────────────────────────────
Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
+ create
~ update in-place
- destroy
+/- create replacement and then destroy
Terraform will perform the following actions:
# module.api.aws_ecs_service.default[0] will be updated in-place
~ resource "aws_ecs_service" "default" {
id = "arn:aws:ecs:us-west-2:357150818708:service/gost-staging/gost-staging-api"
name = "gost-staging-api"
tags = {}
~ task_definition = "arn:aws:ecs:us-west-2:357150818708:task-definition/gost-staging-api:123" -> (known after apply)
# (15 unchanged attributes hidden)
# (4 unchanged blocks hidden)
}
# module.api.aws_ecs_task_definition.default[0] must be replaced
+/- resource "aws_ecs_task_definition" "default" {
~ arn = "arn:aws:ecs:us-west-2:357150818708:task-definition/gost-staging-api:123" -> (known after apply)
~ arn_without_revision = "arn:aws:ecs:us-west-2:357150818708:task-definition/gost-staging-api" -> (known after apply)
~ container_definitions = jsonencode(
~ [ # forces replacement
~ {
~ dockerLabels = {
~ "com.datadoghq.tags.version" = "62140920ba24e1b727b08bb7699959e5726eb27e" -> "83f8462197229a6522ca1f3707559b0c8fb028ac"
# (2 unchanged elements hidden)
}
~ environment = [
# (7 unchanged elements hidden)
{
name = "DD_SERVICE"
value = "gost"
},
~ {
name = "DD_VERSION"
~ value = "62140920ba24e1b727b08bb7699959e5726eb27e" -> "83f8462197229a6522ca1f3707559b0c8fb028ac"
},
{
name = "ENABLE_GRANTS_DIGEST"
value = "false"
},
# (11 unchanged elements hidden)
]
~ image = "ghcr.io/usdigitalresponse/usdr-gost-api:62140920ba24e1b727b08bb7699959e5726eb27e@sha256:01f776e843e1c6f7289398996d7041dddc21d6d7053e6e673d69cdd51009ec9d" -> "ghcr.io/usdigitalresponse/usdr-gost-api:83f8462197229a6522ca1f3707559b0c8fb028ac@sha256:f95a2a42464b6006e39533d9da9efc9cc1ac6a8cc94578346a87cf6834d39d68"
name = "api"
- volumesFrom = [] -> null
# (9 unchanged elements hidden)
} # forces replacement,
~ {
~ dockerLabels = {
~ "com.datadoghq.tags.version" = "62140920ba24e1b727b08bb7699959e5726eb27e" -> "83f8462197229a6522ca1f3707559b0c8fb028ac"
# (2 unchanged elements hidden)
}
~ environment = [
# (3 unchanged elements hidden)
{
name = "DD_SERVICE"
value = "gost"
},
~ {
name = "DD_VERSION"
~ value = "62140920ba24e1b727b08bb7699959e5726eb27e" -> "83f8462197229a6522ca1f3707559b0c8fb028ac"
},
{
name = "ECS_FARGATE"
value = "true"
},
]
- mountPoints = [] -> null
name = "datadog"
- portMappings = [] -> null
- volumesFrom = [] -> null
# (6 unchanged elements hidden)
} # forces replacement,
]
)
~ id = "gost-staging-api" -> (known after apply)
~ revision = 123 -> (known after apply)
- tags = {} -> null
# (9 unchanged attributes hidden)
- volume {
- name = "data" -> null
- efs_volume_configuration {
- file_system_id = "fs-08f95063c1cdbe191" -> null
- root_directory = "/" -> null
- transit_encryption = "ENABLED" -> null
- transit_encryption_port = 0 -> null
- authorization_config {
- access_point_id = "fsap-03bc0296928aade4f" -> null
}
}
}
+ volume {
+ name = "data"
+ efs_volume_configuration {
+ file_system_id = "fs-08f95063c1cdbe191"
+ root_directory = "/"
+ transit_encryption = "ENABLED"
+ authorization_config {
+ access_point_id = "fsap-03bc0296928aade4f"
}
}
}
# (1 unchanged block hidden)
}
# module.arpa_audit_report.aws_ecs_service.default will be updated in-place
~ resource "aws_ecs_service" "default" {
id = "arn:aws:ecs:us-west-2:357150818708:service/gost-staging/gost-staging-arpa_audit_report"
name = "gost-staging-arpa_audit_report"
tags = {}
~ task_definition = "arn:aws:ecs:us-west-2:357150818708:task-definition/gost-staging-arpa_audit_report:92" -> (known after apply)
# (15 unchanged attributes hidden)
# (3 unchanged blocks hidden)
}
# module.arpa_audit_report.aws_ecs_task_definition.consumer must be replaced
+/- resource "aws_ecs_task_definition" "consumer" {
~ arn = "arn:aws:ecs:us-west-2:357150818708:task-definition/gost-staging-arpa_audit_report:92" -> (known after apply)
~ arn_without_revision = "arn:aws:ecs:us-west-2:357150818708:task-definition/gost-staging-arpa_audit_report" -> (known after apply)
~ container_definitions = (sensitive value) # forces replacement
~ id = "gost-staging-arpa_audit_report" -> (known after apply)
- ipc_mode = "" -> null
- pid_mode = "" -> null
~ revision = 92 -> (known after apply)
- tags = {} -> null
# (9 unchanged attributes hidden)
- volume {
- name = "data" -> null
- efs_volume_configuration {
- file_system_id = "fs-08f95063c1cdbe191" -> null
- root_directory = "/" -> null
- transit_encryption = "ENABLED" -> null
- transit_encryption_port = 0 -> null
- authorization_config {
- access_point_id = "fsap-03bc0296928aade4f" -> null
}
}
}
+ volume {
+ name = "data"
+ efs_volume_configuration {
+ file_system_id = "fs-08f95063c1cdbe191"
+ root_directory = "/"
+ transit_encryption = "ENABLED"
+ authorization_config {
+ access_point_id = "fsap-03bc0296928aade4f"
}
}
}
# (1 unchanged block hidden)
}
# module.arpa_treasury_report.aws_ecs_service.default will be updated in-place
~ resource "aws_ecs_service" "default" {
id = "arn:aws:ecs:us-west-2:357150818708:service/gost-staging/gost-staging-treasury_report"
name = "gost-staging-treasury_report"
tags = {}
~ task_definition = "arn:aws:ecs:us-west-2:357150818708:task-definition/gost-staging-treasury_report:81" -> (known after apply)
# (15 unchanged attributes hidden)
# (3 unchanged blocks hidden)
}
# module.arpa_treasury_report.aws_ecs_task_definition.consumer must be replaced
+/- resource "aws_ecs_task_definition" "consumer" {
~ arn = "arn:aws:ecs:us-west-2:357150818708:task-definition/gost-staging-treasury_report:81" -> (known after apply)
~ arn_without_revision = "arn:aws:ecs:us-west-2:357150818708:task-definition/gost-staging-treasury_report" -> (known after apply)
~ container_definitions = (sensitive value) # forces replacement
~ id = "gost-staging-treasury_report" -> (known after apply)
- ipc_mode = "" -> null
- pid_mode = "" -> null
~ revision = 81 -> (known after apply)
- tags = {} -> null
# (9 unchanged attributes hidden)
- volume {
- name = "data" -> null
- efs_volume_configuration {
- file_system_id = "fs-08f95063c1cdbe191" -> null
- root_directory = "/" -> null
- transit_encryption = "ENABLED" -> null
- transit_encryption_port = 0 -> null
- authorization_config {
- access_point_id = "fsap-03bc0296928aade4f" -> null
}
}
}
+ volume {
+ name = "data"
+ efs_volume_configuration {
+ file_system_id = "fs-08f95063c1cdbe191"
+ root_directory = "/"
+ transit_encryption = "ENABLED"
+ authorization_config {
+ access_point_id = "fsap-03bc0296928aade4f"
}
}
}
# (1 unchanged block hidden)
}
# module.consume_grants.aws_ecs_service.default will be updated in-place
~ resource "aws_ecs_service" "default" {
id = "arn:aws:ecs:us-west-2:357150818708:service/gost-staging/gost-staging-consume_grants"
name = "gost-staging-consume_grants"
tags = {}
~ task_definition = "arn:aws:ecs:us-west-2:357150818708:task-definition/gost-staging-consume_grants:108" -> (known after apply)
# (15 unchanged attributes hidden)
# (3 unchanged blocks hidden)
}
# module.consume_grants.aws_ecs_task_definition.consume_grants must be replaced
+/- resource "aws_ecs_task_definition" "consume_grants" {
~ arn = "arn:aws:ecs:us-west-2:357150818708:task-definition/gost-staging-consume_grants:108" -> (known after apply)
~ arn_without_revision = "arn:aws:ecs:us-west-2:357150818708:task-definition/gost-staging-consume_grants" -> (known after apply)
~ container_definitions = (sensitive value) # forces replacement
~ id = "gost-staging-consume_grants" -> (known after apply)
- ipc_mode = "" -> null
- pid_mode = "" -> null
~ revision = 108 -> (known after apply)
- tags = {} -> null
# (9 unchanged attributes hidden)
# (1 unchanged block hidden)
}
# module.website.aws_s3_object.deploy-config[0] will be updated in-place
~ resource "aws_s3_object" "deploy-config" {
~ content = <<-EOT
window.APP_CONFIG = window.APP_CONFIG || {};
window.APP_CONFIG.apiURLForGOST = 'https://api.staging.grants.usdr.dev/';
window.apiURLForGOST = window.APP_CONFIG.apiURLForGOST; // Legacy
window.APP_CONFIG.DD_RUM_ENABLED = true;
- window.APP_CONFIG.DD_RUM_CONFIG = {"allowedTracingUrls":["https://api.staging.grants.usdr.dev"],"applicationId":"15db471e-2ccb-4d3c-a6bf-99b750d748f5","clientToken":"pub50834fcc1999d53e546519b1a0f03934","defaultPrivacyLevel":"mask","env":"staging","service":"gost","sessionReplaySampleRate":1,"sessionSampleRate":10,"site":"datadoghq.com","trackLongTasks":true,"trackResources":true,"trackUserInteractions":true,"version":"62140920ba24e1b727b08bb7699959e5726eb27e"};
+ window.APP_CONFIG.DD_RUM_CONFIG = {"allowedTracingUrls":["https://api.staging.grants.usdr.dev"],"applicationId":"15db471e-2ccb-4d3c-a6bf-99b750d748f5","clientToken":"pub50834fcc1999d53e546519b1a0f03934","defaultPrivacyLevel":"mask","env":"staging","service":"gost","sessionReplaySampleRate":1,"sessionSampleRate":10,"site":"datadoghq.com","trackLongTasks":true,"trackResources":true,"trackUserInteractions":true,"version":"83f8462197229a6522ca1f3707559b0c8fb028ac"};
window.APP_CONFIG.GOOGLE_TAG_ID = '';
window.APP_CONFIG.featureFlags = {"categoryOfFundingActivitySearchFieldEnabled":true,"myProfileEnabled":true,"newGrantsDetailPageEnabled":false,"newTerminologyEnabled":true};
window.APP_CONFIG.overrideFeatureFlag = (flagName, overrideValue) => {
const storageKey = 'featureFlags';
let overrides = {};
try {
overrides = JSON.parse(window.sessionStorage.getItem(storageKey)) || {};
} catch (e) {
console.error(`Error parsing window.sessionStorage.${storageKey} as JSON:`, e);
console.warn(`window.sessionStorage.${storageKey} will be replaced.`);
}
overrides[flagName] = overrideValue;
window.sessionStorage.setItem(storageKey, JSON.stringify(overrides));
console.log('New feature flag overrides in page session:',
window.sessionStorage.getItem(storageKey));
};
EOT
~ etag = "4eea445b43128f3ed79caf8dd869983f" -> "42d144ea6235a3db934b2c5eaf294822"
id = "/config/deploy-config.js"
tags = {}
~ version_id = "w4lshnGoiL7v4oC.MhgO_vcO4UaKyJDm" -> (known after apply)
# (10 unchanged attributes hidden)
}
# module.website.aws_s3_object.origin_dist_artifact["arpa_reporter/index.html"] will be updated in-place
~ resource "aws_s3_object" "origin_dist_artifact" {
~ etag = "adac2e7f5de5a7c20c4e88bade078ae2" -> "32e39c1f8e27051049d08e82af38b0ff"
id = "dist/arpa_reporter/index.html"
~ source_hash = "adac2e7f5de5a7c20c4e88bade078ae2" -> "32e39c1f8e27051049d08e82af38b0ff"
tags = {}
~ version_id = "pldM8UIgUfd8zw_sT7MhM18ymD2k3Bqj" -> (known after apply)
# (11 unchanged attributes hidden)
}
# module.website.aws_s3_object.origin_dist_artifact["index.html"] will be updated in-place
~ resource "aws_s3_object" "origin_dist_artifact" {
~ etag = "782838c51f62ba5ee03e208b26e39776" -> "8462511d2d5c43d8a601299bbaf07c0e"
id = "dist/index.html"
~ source_hash = "782838c51f62ba5ee03e208b26e39776" -> "8462511d2d5c43d8a601299bbaf07c0e"
tags = {}
~ version_id = "X79m.pVll8ZMMbb9Jov.j8B8nZw4.y50" -> (known after apply)
# (11 unchanged attributes hidden)
}
# module.website.aws_s3_object.origin_dist_artifact["js/120.78ecbb1b.js"] will be created
+ resource "aws_s3_object" "origin_dist_artifact" {
+ acl = "private"
+ bucket = "gost-staging-origin-357150818708-us-west-2-website"
+ bucket_key_enabled = (known after apply)
+ content_type = "text/javascript"
+ etag = "fc66de7c0dac085d4dc752251122039f"
+ force_destroy = false
+ id = (known after apply)
+ key = "dist/js/120.78ecbb1b.js"
+ kms_key_id = (known after apply)
+ server_side_encryption = "AES256"
+ source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/120.78ecbb1b.js"
+ source_hash = "fc66de7c0dac085d4dc752251122039f"
+ storage_class = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "usdr-gost"
+ "service" = "gost"
+ "usage" = "workload"
}
+ version_id = (known after apply)
}
# module.website.aws_s3_object.origin_dist_artifact["js/120.78ecbb1b.js.map"] will be created
+ resource "aws_s3_object" "origin_dist_artifact" {
+ acl = "private"
+ bucket = "gost-staging-origin-357150818708-us-west-2-website"
+ bucket_key_enabled = (known after apply)
+ content_type = "application/json"
+ etag = "1ed25f3229392666aa656b6272f3a549"
+ force_destroy = false
+ id = (known after apply)
+ key = "dist/js/120.78ecbb1b.js.map"
+ kms_key_id = (known after apply)
+ server_side_encryption = "AES256"
+ source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/120.78ecbb1b.js.map"
+ source_hash = "1ed25f3229392666aa656b6272f3a549"
+ storage_class = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "usdr-gost"
+ "service" = "gost"
+ "usage" = "workload"
}
+ version_id = (known after apply)
}
# module.website.aws_s3_object.origin_dist_artifact["js/120.fa8d250e.js"] will be destroyed
# (because key ["js/120.fa8d250e.js"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- acl = "private" -> null
- bucket = "gost-staging-origin-357150818708-us-west-2-website" -> null
- bucket_key_enabled = false -> null
- content_type = "text/javascript" -> null
- etag = "943f81186871cfc35a399e7b5dd0779f" -> null
- force_destroy = false -> null
- id = "dist/js/120.fa8d250e.js" -> null
- key = "dist/js/120.fa8d250e.js" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/120.fa8d250e.js" -> null
- source_hash = "943f81186871cfc35a399e7b5dd0779f" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "usdr-gost"
- "service" = "gost"
- "usage" = "workload"
} -> null
- version_id = "tD0lHX8e7wB5laZ7PcfY46dC_KVk5_9M" -> null
}
# module.website.aws_s3_object.origin_dist_artifact["js/120.fa8d250e.js.map"] will be destroyed
# (because key ["js/120.fa8d250e.js.map"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- acl = "private" -> null
- bucket = "gost-staging-origin-357150818708-us-west-2-website" -> null
- bucket_key_enabled = false -> null
- content_type = "application/json" -> null
- etag = "e8a1e618fca328786c397237a9a6d6ac" -> null
- force_destroy = false -> null
- id = "dist/js/120.fa8d250e.js.map" -> null
- key = "dist/js/120.fa8d250e.js.map" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/120.fa8d250e.js.map" -> null
- source_hash = "e8a1e618fca328786c397237a9a6d6ac" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "usdr-gost"
- "service" = "gost"
- "usage" = "workload"
} -> null
- version_id = "Ttoa_witiTnLtr2Cq5PkzAMqRfCUcSFh" -> null
}
# module.website.aws_s3_object.origin_dist_artifact["js/185.692adb2f.js"] will be created
+ resource "aws_s3_object" "origin_dist_artifact" {
+ acl = "private"
+ bucket = "gost-staging-origin-357150818708-us-west-2-website"
+ bucket_key_enabled = (known after apply)
+ content_type = "text/javascript"
+ etag = "a36b11f5c2cb3a7c6295b30687860037"
+ force_destroy = false
+ id = (known after apply)
+ key = "dist/js/185.692adb2f.js"
+ kms_key_id = (known after apply)
+ server_side_encryption = "AES256"
+ source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/185.692adb2f.js"
+ source_hash = "a36b11f5c2cb3a7c6295b30687860037"
+ storage_class = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "usdr-gost"
+ "service" = "gost"
+ "usage" = "workload"
}
+ version_id = (known after apply)
}
# module.website.aws_s3_object.origin_dist_artifact["js/185.692adb2f.js.map"] will be created
+ resource "aws_s3_object" "origin_dist_artifact" {
+ acl = "private"
+ bucket = "gost-staging-origin-357150818708-us-west-2-website"
+ bucket_key_enabled = (known after apply)
+ content_type = "application/json"
+ etag = "4a779bcee1928325ba91da0fd598f191"
+ force_destroy = false
+ id = (known after apply)
+ key = "dist/js/185.692adb2f.js.map"
+ kms_key_id = (known after apply)
+ server_side_encryption = "AES256"
+ source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/185.692adb2f.js.map"
+ source_hash = "4a779bcee1928325ba91da0fd598f191"
+ storage_class = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "usdr-gost"
+ "service" = "gost"
+ "usage" = "workload"
}
+ version_id = (known after apply)
}
# module.website.aws_s3_object.origin_dist_artifact["js/185.95f7d2dc.js"] will be destroyed
# (because key ["js/185.95f7d2dc.js"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- acl = "private" -> null
- bucket = "gost-staging-origin-357150818708-us-west-2-website" -> null
- bucket_key_enabled = false -> null
- content_type = "text/javascript" -> null
- etag = "9fb0418300613506f00dce6055a15808" -> null
- force_destroy = false -> null
- id = "dist/js/185.95f7d2dc.js" -> null
- key = "dist/js/185.95f7d2dc.js" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/185.95f7d2dc.js" -> null
- source_hash = "9fb0418300613506f00dce6055a15808" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "usdr-gost"
- "service" = "gost"
- "usage" = "workload"
} -> null
- version_id = "rrINtp1_a5kEitbJRqmcANTQ_IIWZ0bl" -> null
}
# module.website.aws_s3_object.origin_dist_artifact["js/185.95f7d2dc.js.map"] will be destroyed
# (because key ["js/185.95f7d2dc.js.map"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- acl = "private" -> null
- bucket = "gost-staging-origin-357150818708-us-west-2-website" -> null
- bucket_key_enabled = false -> null
- content_type = "application/json" -> null
- etag = "8b1a965bed68f820d185b7f19cc3cd9d" -> null
- force_destroy = false -> null
- id = "dist/js/185.95f7d2dc.js.map" -> null
- key = "dist/js/185.95f7d2dc.js.map" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/185.95f7d2dc.js.map" -> null
- source_hash = "8b1a965bed68f820d185b7f19cc3cd9d" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "usdr-gost"
- "service" = "gost"
- "usage" = "workload"
} -> null
- version_id = "gMYni0jJi74k0TvNqDXAiRePDMtOCzfo" -> null
}
# module.website.aws_s3_object.origin_dist_artifact["js/223.280dc9b4.js"] will be created
+ resource "aws_s3_object" "origin_dist_artifact" {
+ acl = "private"
+ bucket = "gost-staging-origin-357150818708-us-west-2-website"
+ bucket_key_enabled = (known after apply)
+ content_type = "text/javascript"
+ etag = "ff17742641f7cee29a8908eb104177fd"
+ force_destroy = false
+ id = (known after apply)
+ key = "dist/js/223.280dc9b4.js"
+ kms_key_id = (known after apply)
+ server_side_encryption = "AES256"
+ source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/223.280dc9b4.js"
+ source_hash = "ff17742641f7cee29a8908eb104177fd"
+ storage_class = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "usdr-gost"
+ "service" = "gost"
+ "usage" = "workload"
}
+ version_id = (known after apply)
}
# module.website.aws_s3_object.origin_dist_artifact["js/223.280dc9b4.js.map"] will be created
+ resource "aws_s3_object" "origin_dist_artifact" {
+ acl = "private"
+ bucket = "gost-staging-origin-357150818708-us-west-2-website"
+ bucket_key_enabled = (known after apply)
+ content_type = "application/json"
+ etag = "7382a6dd50985d6295e95d007c762e93"
+ force_destroy = false
+ id = (known after apply)
+ key = "dist/js/223.280dc9b4.js.map"
+ kms_key_id = (known after apply)
+ server_side_encryption = "AES256"
+ source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/223.280dc9b4.js.map"
+ source_hash = "7382a6dd50985d6295e95d007c762e93"
+ storage_class = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "usdr-gost"
+ "service" = "gost"
+ "usage" = "workload"
}
+ version_id = (known after apply)
}
# module.website.aws_s3_object.origin_dist_artifact["js/223.f94286e0.js"] will be destroyed
# (because key ["js/223.f94286e0.js"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- acl = "private" -> null
- bucket = "gost-staging-origin-357150818708-us-west-2-website" -> null
- bucket_key_enabled = false -> null
- content_type = "text/javascript" -> null
- etag = "28ed9071bc3740c69335f18bb533c7eb" -> null
- force_destroy = false -> null
- id = "dist/js/223.f94286e0.js" -> null
- key = "dist/js/223.f94286e0.js" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/223.f94286e0.js" -> null
- source_hash = "28ed9071bc3740c69335f18bb533c7eb" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "usdr-gost"
- "service" = "gost"
- "usage" = "workload"
} -> null
- version_id = "4dmeX..WMfqPZD2BYtNn6FxYI30Kohh5" -> null
}
# module.website.aws_s3_object.origin_dist_artifact["js/223.f94286e0.js.map"] will be destroyed
# (because key ["js/223.f94286e0.js.map"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- acl = "private" -> null
- bucket = "gost-staging-origin-357150818708-us-west-2-website" -> null
- bucket_key_enabled = false -> null
- content_type = "application/json" -> null
- etag = "7665fb26f4031cbed269fed4059058a9" -> null
- force_destroy = false -> null
- id = "dist/js/223.f94286e0.js.map" -> null
- key = "dist/js/223.f94286e0.js.map" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/223.f94286e0.js.map" -> null
- source_hash = "7665fb26f4031cbed269fed4059058a9" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "usdr-gost"
- "service" = "gost"
- "usage" = "workload"
} -> null
- version_id = "5_96B8CLl_UvPtatOGTnfLL.FAgPN8bG" -> null
}
# module.website.aws_s3_object.origin_dist_artifact["js/230.2950744a.js"] will be destroyed
# (because key ["js/230.2950744a.js"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- acl = "private" -> null
- bucket = "gost-staging-origin-357150818708-us-west-2-website" -> null
- bucket_key_enabled = false -> null
- content_type = "text/javascript" -> null
- etag = "3fec3489951bba446b04b6df742969d7" -> null
- force_destroy = false -> null
- id = "dist/js/230.2950744a.js" -> null
- key = "dist/js/230.2950744a.js" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/230.2950744a.js" -> null
- source_hash = "3fec3489951bba446b04b6df742969d7" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "usdr-gost"
- "service" = "gost"
- "usage" = "workload"
} -> null
- version_id = "A7CS_Qw_Be0JmUrGe4N.ptTRo3JJGh_d" -> null
}
# module.website.aws_s3_object.origin_dist_artifact["js/230.2950744a.js.map"] will be destroyed
# (because key ["js/230.2950744a.js.map"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- acl = "private" -> null
- bucket = "gost-staging-origin-357150818708-us-west-2-website" -> null
- bucket_key_enabled = false -> null
- content_type = "application/json" -> null
- etag = "c746f2b68a61b1577bd9e7be9ddf1d54" -> null
- force_destroy = false -> null
- id = "dist/js/230.2950744a.js.map" -> null
- key = "dist/js/230.2950744a.js.map" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/230.2950744a.js.map" -> null
- source_hash = "c746f2b68a61b1577bd9e7be9ddf1d54" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "usdr-gost"
- "service" = "gost"
- "usage" = "workload"
} -> null
- version_id = "FvZ1U7NjP1s4LdGCfLgmxDdRiy.hkzkf" -> null
}
# module.website.aws_s3_object.origin_dist_artifact["js/230.63414588.js"] will be created
+ resource "aws_s3_object" "origin_dist_artifact" {
+ acl = "private"
+ bucket = "gost-staging-origin-357150818708-us-west-2-website"
+ bucket_key_enabled = (known after apply)
+ content_type = "text/javascript"
+ etag = "9012e59a36d59d8dc2f7773acb701ba7"
+ force_destroy = false
+ id = (known after apply)
+ key = "dist/js/230.63414588.js"
+ kms_key_id = (known after apply)
+ server_side_encryption = "AES256"
+ source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/230.63414588.js"
+ source_hash = "9012e59a36d59d8dc2f7773acb701ba7"
+ storage_class = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "usdr-gost"
+ "service" = "gost"
+ "usage" = "workload"
}
+ version_id = (known after apply)
}
# module.website.aws_s3_object.origin_dist_artifact["js/230.63414588.js.map"] will be created
+ resource "aws_s3_object" "origin_dist_artifact" {
+ acl = "private"
+ bucket = "gost-staging-origin-357150818708-us-west-2-website"
+ bucket_key_enabled = (known after apply)
+ content_type = "application/json"
+ etag = "c66a1399d67d21ef3c7c08262cdd104d"
+ force_destroy = false
+ id = (known after apply)
+ key = "dist/js/230.63414588.js.map"
+ kms_key_id = (known after apply)
+ server_side_encryption = "AES256"
+ source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/230.63414588.js.map"
+ source_hash = "c66a1399d67d21ef3c7c08262cdd104d"
+ storage_class = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "usdr-gost"
+ "service" = "gost"
+ "usage" = "workload"
}
+ version_id = (known after apply)
}
# module.website.aws_s3_object.origin_dist_artifact["js/474.4c19099f.js"] will be created
+ resource "aws_s3_object" "origin_dist_artifact" {
+ acl = "private"
+ bucket = "gost-staging-origin-357150818708-us-west-2-website"
+ bucket_key_enabled = (known after apply)
+ content_type = "text/javascript"
+ etag = "b28734892bbe2d4aa1c878a48f8f770f"
+ force_destroy = false
+ id = (known after apply)
+ key = "dist/js/474.4c19099f.js"
+ kms_key_id = (known after apply)
+ server_side_encryption = "AES256"
+ source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/474.4c19099f.js"
+ source_hash = "b28734892bbe2d4aa1c878a48f8f770f"
+ storage_class = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "usdr-gost"
+ "service" = "gost"
+ "usage" = "workload"
}
+ version_id = (known after apply)
}
# module.website.aws_s3_object.origin_dist_artifact["js/474.4c19099f.js.map"] will be created
+ resource "aws_s3_object" "origin_dist_artifact" {
+ acl = "private"
+ bucket = "gost-staging-origin-357150818708-us-west-2-website"
+ bucket_key_enabled = (known after apply)
+ content_type = "application/json"
+ etag = "e5c4e18f3eb0ab172aaa274c1e982bb8"
+ force_destroy = false
+ id = (known after apply)
+ key = "dist/js/474.4c19099f.js.map"
+ kms_key_id = (known after apply)
+ server_side_encryption = "AES256"
+ source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/474.4c19099f.js.map"
+ source_hash = "e5c4e18f3eb0ab172aaa274c1e982bb8"
+ storage_class = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "usdr-gost"
+ "service" = "gost"
+ "usage" = "workload"
}
+ version_id = (known after apply)
}
# module.website.aws_s3_object.origin_dist_artifact["js/474.d864840e.js"] will be destroyed
# (because key ["js/474.d864840e.js"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- acl = "private" -> null
- bucket = "gost-staging-origin-357150818708-us-west-2-website" -> null
- bucket_key_enabled = false -> null
- content_type = "text/javascript" -> null
- etag = "11a687f1da73da2e57ebe0ccb371db63" -> null
- force_destroy = false -> null
- id = "dist/js/474.d864840e.js" -> null
- key = "dist/js/474.d864840e.js" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/474.d864840e.js" -> null
- source_hash = "11a687f1da73da2e57ebe0ccb371db63" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "usdr-gost"
- "service" = "gost"
- "usage" = "workload"
} -> null
- version_id = "cqEbtOioKoM7kpHxeAuianGE_KYR3hH7" -> null
}
# module.website.aws_s3_object.origin_dist_artifact["js/474.d864840e.js.map"] will be destroyed
# (because key ["js/474.d864840e.js.map"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- acl = "private" -> null
- bucket = "gost-staging-origin-357150818708-us-west-2-website" -> null
- bucket_key_enabled = false -> null
- content_type = "application/json" -> null
- etag = "4c923404486b926cff4d04d979b4a09b" -> null
- force_destroy = false -> null
- id = "dist/js/474.d864840e.js.map" -> null
- key = "dist/js/474.d864840e.js.map" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/474.d864840e.js.map" -> null
- source_hash = "4c923404486b926cff4d04d979b4a09b" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "usdr-gost"
- "service" = "gost"
- "usage" = "workload"
} -> null
- version_id = "T8e4A9.Hj5bTdZeCWvCv09VWrm3CAqx5" -> null
}
# module.website.aws_s3_object.origin_dist_artifact["js/619.84d59438.js"] will be destroyed
# (because key ["js/619.84d59438.js"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- acl = "private" -> null
- bucket = "gost-staging-origin-357150818708-us-west-2-website" -> null
- bucket_key_enabled = false -> null
- content_type = "text/javascript" -> null
- etag = "adfd09a535ffe92bc78cde37e06a72e7" -> null
- force_destroy = false -> null
- id = "dist/js/619.84d59438.js" -> null
- key = "dist/js/619.84d59438.js" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/619.84d59438.js" -> null
- source_hash = "adfd09a535ffe92bc78cde37e06a72e7" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "usdr-gost"
- "service" = "gost"
- "usage" = "workload"
} -> null
- version_id = "HLvFE3Sd4U_agFT5DXpakNhmThixF3XA" -> null
}
# module.website.aws_s3_object.origin_dist_artifact["js/619.84d59438.js.map"] will be destroyed
# (because key ["js/619.84d59438.js.map"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- acl = "private" -> null
- bucket = "gost-staging-origin-357150818708-us-west-2-website" -> null
- bucket_key_enabled = false -> null
- content_type = "application/json" -> null
- etag = "fe07e1f5ce6bfe895f12d684e8f6f666" -> null
- force_destroy = false -> null
- id = "dist/js/619.84d59438.js.map" -> null
- key = "dist/js/619.84d59438.js.map" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/619.84d59438.js.map" -> null
- source_hash = "fe07e1f5ce6bfe895f12d684e8f6f666" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "usdr-gost"
- "service" = "gost"
- "usage" = "workload"
} -> null
- version_id = "FudsUXC6URPrzzEUX3X7cEFKBqF3Uqtz" -> null
}
# module.website.aws_s3_object.origin_dist_artifact["js/619.8d27d8c7.js"] will be created
+ resource "aws_s3_object" "origin_dist_artifact" {
+ acl = "private"
+ bucket = "gost-staging-origin-357150818708-us-west-2-website"
+ bucket_key_enabled = (known after apply)
+ content_type = "text/javascript"
+ etag = "842d85a4bf7ffe603373ae4f5e7e77b1"
+ force_destroy = false
+ id = (known after apply)
+ key = "dist/js/619.8d27d8c7.js"
+ kms_key_id = (known after apply)
+ server_side_encryption = "AES256"
+ source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/619.8d27d8c7.js"
+ source_hash = "842d85a4bf7ffe603373ae4f5e7e77b1"
+ storage_class = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "usdr-gost"
+ "service" = "gost"
+ "usage" = "workload"
}
+ version_id = (known after apply)
}
# module.website.aws_s3_object.origin_dist_artifact["js/619.8d27d8c7.js.map"] will be created
+ resource "aws_s3_object" "origin_dist_artifact" {
+ acl = "private"
+ bucket = "gost-staging-origin-357150818708-us-west-2-website"
+ bucket_key_enabled = (known after apply)
+ content_type = "application/json"
+ etag = "8bc89075c5e2efbe00522489e7f24cab"
+ force_destroy = false
+ id = (known after apply)
+ key = "dist/js/619.8d27d8c7.js.map"
+ kms_key_id = (known after apply)
+ server_side_encryption = "AES256"
+ source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/619.8d27d8c7.js.map"
+ source_hash = "8bc89075c5e2efbe00522489e7f24cab"
+ storage_class = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "usdr-gost"
+ "service" = "gost"
+ "usage" = "workload"
}
+ version_id = (known after apply)
}
# module.website.aws_s3_object.origin_dist_artifact["js/645.5db8ecb3.js"] will be created
+ resource "aws_s3_object" "origin_dist_artifact" {
+ acl = "private"
+ bucket = "gost-staging-origin-357150818708-us-west-2-website"
+ bucket_key_enabled = (known after apply)
+ content_type = "text/javascript"
+ etag = "0c6530c0f8b0637247f963eebcd6be69"
+ force_destroy = false
+ id = (known after apply)
+ key = "dist/js/645.5db8ecb3.js"
+ kms_key_id = (known after apply)
+ server_side_encryption = "AES256"
+ source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/645.5db8ecb3.js"
+ source_hash = "0c6530c0f8b0637247f963eebcd6be69"
+ storage_class = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "usdr-gost"
+ "service" = "gost"
+ "usage" = "workload"
}
+ version_id = (known after apply)
}
# module.website.aws_s3_object.origin_dist_artifact["js/645.5db8ecb3.js.map"] will be created
+ resource "aws_s3_object" "origin_dist_artifact" {
+ acl = "private"
+ bucket = "gost-staging-origin-357150818708-us-west-2-website"
+ bucket_key_enabled = (known after apply)
+ content_type = "application/json"
+ etag = "f27559603a308ce8bb0ffda664c51570"
+ force_destroy = false
+ id = (known after apply)
+ key = "dist/js/645.5db8ecb3.js.map"
+ kms_key_id = (known after apply)
+ server_side_encryption = "AES256"
+ source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/645.5db8ecb3.js.map"
+ source_hash = "f27559603a308ce8bb0ffda664c51570"
+ storage_class = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "usdr-gost"
+ "service" = "gost"
+ "usage" = "workload"
}
+ version_id = (known after apply)
}
# module.website.aws_s3_object.origin_dist_artifact["js/645.9a1e6553.js"] will be destroyed
# (because key ["js/645.9a1e6553.js"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- acl = "private" -> null
- bucket = "gost-staging-origin-357150818708-us-west-2-website" -> null
- bucket_key_enabled = false -> null
- content_type = "text/javascript" -> null
- etag = "9ca6ebcd08dc3dde57f7c5ed48702f27" -> null
- force_destroy = false -> null
- id = "dist/js/645.9a1e6553.js" -> null
- key = "dist/js/645.9a1e6553.js" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/645.9a1e6553.js" -> null
- source_hash = "9ca6ebcd08dc3dde57f7c5ed48702f27" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "usdr-gost"
- "service" = "gost"
- "usage" = "workload"
} -> null
- version_id = "CGxJ2HCTMgKWnPJKvj6vrfHzHD3A3hpp" -> null
}
# module.website.aws_s3_object.origin_dist_artifact["js/645.9a1e6553.js.map"] will be destroyed
# (because key ["js/645.9a1e6553.js.map"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- acl = "private" -> null
- bucket = "gost-staging-origin-357150818708-us-west-2-website" -> null
- bucket_key_enabled = false -> null
- content_type = "application/json" -> null
- etag = "6979b2bc4372d12d8a173ee68902babd" -> null
- force_destroy = false -> null
- id = "dist/js/645.9a1e6553.js.map" -> null
- key = "dist/js/645.9a1e6553.js.map" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/645.9a1e6553.js.map" -> null
- source_hash = "6979b2bc4372d12d8a173ee68902babd" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "usdr-gost"
- "service" = "gost"
- "usage" = "workload"
} -> null
- version_id = "gaWpo4pNLXPFvuhB7C.IycRk.lPvbuxz" -> null
}
# module.website.aws_s3_object.origin_dist_artifact["js/757.35a32237.js"] will be created
+ resource "aws_s3_object" "origin_dist_artifact" {
+ acl = "private"
+ bucket = "gost-staging-origin-357150818708-us-west-2-website"
+ bucket_key_enabled = (known after apply)
+ content_type = "text/javascript"
+ etag = "b928ce1054f32c47a9945ebb4e440037"
+ force_destroy = false
+ id = (known after apply)
+ key = "dist/js/757.35a32237.js"
+ kms_key_id = (known after apply)
+ server_side_encryption = "AES256"
+ source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/757.35a32237.js"
+ source_hash = "b928ce1054f32c47a9945ebb4e440037"
+ storage_class = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "usdr-gost"
+ "service" = "gost"
+ "usage" = "workload"
}
+ version_id = (known after apply)
}
# module.website.aws_s3_object.origin_dist_artifact["js/757.35a32237.js.map"] will be created
+ resource "aws_s3_object" "origin_dist_artifact" {
+ acl = "private"
+ bucket = "gost-staging-origin-357150818708-us-west-2-website"
+ bucket_key_enabled = (known after apply)
+ content_type = "application/json"
+ etag = "16d7c0364ffdb5f924eac3ce2d28c5e2"
+ force_destroy = false
+ id = (known after apply)
+ key = "dist/js/757.35a32237.js.map"
+ kms_key_id = (known after apply)
+ server_side_encryption = "AES256"
+ source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/757.35a32237.js.map"
+ source_hash = "16d7c0364ffdb5f924eac3ce2d28c5e2"
+ storage_class = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "usdr-gost"
+ "service" = "gost"
+ "usage" = "workload"
}
+ version_id = (known after apply)
}
# module.website.aws_s3_object.origin_dist_artifact["js/757.c6e74e6b.js"] will be destroyed
# (because key ["js/757.c6e74e6b.js"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- acl = "private" -> null
- bucket = "gost-staging-origin-357150818708-us-west-2-website" -> null
- bucket_key_enabled = false -> null
- content_type = "text/javascript" -> null
- etag = "90ca1dd32ad2cc01d32504d218a0854d" -> null
- force_destroy = false -> null
- id = "dist/js/757.c6e74e6b.js" -> null
- key = "dist/js/757.c6e74e6b.js" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/757.c6e74e6b.js" -> null
- source_hash = "90ca1dd32ad2cc01d32504d218a0854d" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "usdr-gost"
- "service" = "gost"
- "usage" = "workload"
} -> null
- version_id = "nvMfu9PAnwp4..UiLwzlSaZXeLTlzhIi" -> null
}
# module.website.aws_s3_object.origin_dist_artifact["js/757.c6e74e6b.js.map"] will be destroyed
# (because key ["js/757.c6e74e6b.js.map"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- acl = "private" -> null
- bucket = "gost-staging-origin-357150818708-us-west-2-website" -> null
- bucket_key_enabled = false -> null
- content_type = "application/json" -> null
- etag = "cf3294a46256f29a5287cfc4531dfc5b" -> null
- force_destroy = false -> null
- id = "dist/js/757.c6e74e6b.js.map" -> null
- key = "dist/js/757.c6e74e6b.js.map" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/757.c6e74e6b.js.map" -> null
- source_hash = "cf3294a46256f29a5287cfc4531dfc5b" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "usdr-gost"
- "service" = "gost"
- "usage" = "workload"
} -> null
- version_id = "N2rk86JSNBOG7zvKN.dPuGh7H8PZ71RT" -> null
}
# module.website.aws_s3_object.origin_dist_artifact["js/943.37c1d11d.js"] will be destroyed
# (because key ["js/943.37c1d11d.js"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- acl = "private" -> null
- bucket = "gost-staging-origin-357150818708-us-west-2-website" -> null
- bucket_key_enabled = false -> null
- content_type = "text/javascript" -> null
- etag = "0037b354534a426bfb9ab87c7ac2fdc1" -> null
- force_destroy = false -> null
- id = "dist/js/943.37c1d11d.js" -> null
- key = "dist/js/943.37c1d11d.js" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/943.37c1d11d.js" -> null
- source_hash = "0037b354534a426bfb9ab87c7ac2fdc1" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "usdr-gost"
- "service" = "gost"
- "usage" = "workload"
} -> null
- version_id = "4hLh0a_9Iw81NS6N7yNT137e3d583Q.N" -> null
}
# module.website.aws_s3_object.origin_dist_artifact["js/943.37c1d11d.js.map"] will be destroyed
# (because key ["js/943.37c1d11d.js.map"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- acl = "private" -> null
- bucket = "gost-staging-origin-357150818708-us-west-2-website" -> null
- bucket_key_enabled = false -> null
- content_type = "application/json" -> null
- etag = "212ae105771230d095172095c391840f" -> null
- force_destroy = false -> null
- id = "dist/js/943.37c1d11d.js.map" -> null
- key = "dist/js/943.37c1d11d.js.map" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/943.37c1d11d.js.map" -> null
- source_hash = "212ae105771230d095172095c391840f" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "usdr-gost"
- "service" = "gost"
- "usage" = "workload"
}...*[Comment body truncated]* |
@@ -158,7 +158,7 @@ describe('`/api/users` endpoint', () => { | |||
const response = await fetchApi(`/users`, agencies.own, fetchOptions.admin); | |||
expect(response.statusText).to.equal('OK'); | |||
const json = await response.json(); | |||
expect(json.length).to.equal(12); | |||
expect(json.length).to.equal(14); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It feels like ideally these tests would be independent of the seed data. Does that track? (Regardless, seems outside the scope of this change, so I'm just updating the test to pass.)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agreed. Maybe something like this instead?
expect(json.length).to.equal(14); | |
const ownAgency = await knex('agencies').where({ id: agencies.own }).first(); | |
const expectedUserCount = ( | |
await knex('users').where({ tenant_id: ownAgency.tenant_id }).count().first() | |
).count; | |
expect(json.length).to.equal(parseInt(expectedUserCount, 10)); |
Note: To make the above work, you'll also have to modify line 3 to import knex
from ./utils
, e.g.
const { getSessionCookie, makeTestServer, knex } = require('./utils');
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, this seems like a fair approach for now! (I'm curious, have you explored using synthetic test data generated by the tests themselves, as opposed to using common seed data? Any docs/discussions I can read up on?)
I've updated the seed admin and staff emails to use |
> [!WARNING] | ||
> Email setup is generally not required for local development, unless you're directly working on email templates or sending. Note that with this setup you will send real emails — please ensure you don't have real external email addresses in your database that you could accidentally mail. Please revert these environment variables to disable email sending anytime you're not actively developing email. | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
❤️
@@ -77,7 +77,11 @@ function sendPassCode(email, passcode, httpOrigin, redirectTo) { | |||
); | |||
|
|||
if (process.env.DEV_LOGIN_LINK && process.env.NODE_ENV === 'development') { | |||
console.log(`Login link generated: \x1b[32m${href}`); | |||
const BLUE = '\x1b[34m'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🤔 Given that this execution path is specific to dev workflows, is there a way to use chalk without declaring it as a production dependency?
In general, my preference for logging is to slowly migrate over to structured logging (we currently use bunyan
for this, with a preconfigured base logger exported by lib/logging.js
). However, given that this is specifically intended to be human-readable and not something we would try to query with a tool like Datadog, it may be best to leave the colorization as-is for now (assuming there isn't a way to use chalk here without bringing it in as a prod dependency).
@@ -158,7 +158,7 @@ describe('`/api/users` endpoint', () => { | |||
const response = await fetchApi(`/users`, agencies.own, fetchOptions.admin); | |||
expect(response.statusText).to.equal('OK'); | |||
const json = await response.json(); | |||
expect(json.length).to.equal(12); | |||
expect(json.length).to.equal(14); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agreed. Maybe something like this instead?
expect(json.length).to.equal(14); | |
const ownAgency = await knex('agencies').where({ id: agencies.own }).first(); | |
const expectedUserCount = ( | |
await knex('users').where({ tenant_id: ownAgency.tenant_id }).count().first() | |
).count; | |
expect(json.length).to.equal(parseInt(expectedUserCount, 10)); |
Note: To make the above work, you'll also have to modify line 3 to import knex
from ./utils
, e.g.
const { getSessionCookie, makeTestServer, knex } = require('./utils');
Addressed comments, and ready for re-review! |
Ticket #
Description
Improves the new developer experience my making the standard login flow a bit clearer. It does this by:
(This PR is based on the discussion here: https://github.com/usdigitalresponse/usdr-gost/pull/2524/files#r1470332892)
Screenshots / Demo Video
Testing
Manually ran the DB seed script and login flow for the admin and staff users
Automated and Unit Tests
Manual tests for Reviewer
Checklist