From 779477ff0d6b92c91f17c7628835883ddafadfff Mon Sep 17 00:00:00 2001 From: Tiago Barbosa Date: Thu, 3 Mar 2022 09:12:39 +0000 Subject: [PATCH 1/2] build: First merge to main (#109) First merge of alpha version to main from develop Co-authored-by: Stephen Liedig Co-authored-by: Matt Simpson Co-authored-by: Peter Grman Co-authored-by: Tiago Barbosa Co-authored-by: Amir Khairalomoum --- .github/ISSUE_TEMPLATE/bug_report.md | 43 + .../documentation-improvements.md | 17 + .github/ISSUE_TEMPLATE/feature_request.md | 20 + .github/ISSUE_TEMPLATE/rfc.md | 62 + .github/PULL_REQUEST_TEMPLATE.md | 25 + .github/auto_assign-issues.yml | 8 + .github/boring-cyborg.yml | 45 + .github/release-drafter.yml | 39 + .github/semantic.yml | 19 + .github/stale.yml | 17 + .github/workflows/build.yml | 37 + .github/workflows/docs.yml | 48 + .github/workflows/label_pr_on_title.yml | 87 ++ .github/workflows/publish.yml | 62 + .github/workflows/record_pr.yml | 21 + .github/workflows/release-drafter.yml | 15 + .gitignore | 20 + .vscode/launch.json | 27 + .vscode/settings.json | 2 + .vscode/tasks.json | 42 + 404.html | 20 + CHANGELOG.md | 12 + Dockerfile | 26 + LICENSE | 189 +-- Makefile | 17 + README.md | 64 +- apidocs/api/.gitignore | 5 + apidocs/api/index.md | 0 apidocs/docfx.json | 60 + apidocs/images/favicon.ico | Bin 0 -> 21054 bytes apidocs/images/img.svg | 38 + apidocs/index.md | 14 + .../material/partials/head.tmpl.partial | 21 + apidocs/templates/material/styles/main.css | 310 +++++ apidocs/toc.yml | 3 + buildtools/NuGet.Config | 5 + buildtools/build.proj | 54 + buildtools/common.props | 25 + buildtools/nuget.exe | Bin 0 -> 7034784 bytes docs/Dockerfile | 2 + docs/changelog.md | 2 + docs/core/logging.md | 459 +++++++ docs/core/metrics.md | 333 +++++ docs/core/tracing.md | 230 ++++ docs/index.md | 84 ++ docs/javascript/aws-amplify.min.js | 108 ++ docs/javascript/extra.js | 71 + docs/media/aws-logo-light.svg | 38 + docs/media/metrics_terminology.png | Bin 0 -> 147817 bytes docs/media/tracer_utility_showcase.png | Bin 0 -> 131394 bytes docs/media/utilities_data_classes.png | Bin 0 -> 317980 bytes docs/media/utilities_typing.png | Bin 0 -> 81849 bytes .../images/powertools_docs_thumbnail.png | Bin 0 -> 72206 bytes docs/references.md | 24 + docs/stylesheets/extra.css | 35 + docs/tenets.md | 13 + examples/.gitignore | 454 +++++++ examples/Logging/.gitignore | 638 +++++++++ examples/Logging/PowertoolsLoggingExample.sln | 28 + examples/Logging/README.md | 120 ++ examples/Logging/events/event.json | 63 + examples/Logging/omnisharp.json | 11 + examples/Logging/src/HelloWorld/Dockerfile | 26 + examples/Logging/src/HelloWorld/Function.cs | 184 +++ .../Logging/src/HelloWorld/HelloWorld.csproj | 14 + examples/Logging/template-docker.yaml | 100 ++ examples/Logging/template.yaml | 95 ++ .../test/HelloWorld.Test/FunctionTest.cs | 108 ++ .../HelloWorld.Test/HelloWorld.Tests.csproj | 18 + examples/Metrics/.gitignore | 638 +++++++++ examples/Metrics/PowertoolsMetricsExample.sln | 28 + examples/Metrics/README.md | 120 ++ examples/Metrics/events/event.json | 63 + examples/Metrics/omnisharp.json | 11 + examples/Metrics/src/HelloWorld/Dockerfile | 26 + examples/Metrics/src/HelloWorld/Function.cs | 213 +++ .../Metrics/src/HelloWorld/HelloWorld.csproj | 15 + examples/Metrics/template-docker.yaml | 101 ++ examples/Metrics/template.yaml | 96 ++ .../test/HelloWorld.Test/FunctionTest.cs | 108 ++ .../HelloWorld.Test/HelloWorld.Tests.csproj | 18 + examples/Tracing/.gitignore | 637 +++++++++ examples/Tracing/PowertoolsTracingExample.sln | 28 + examples/Tracing/README.md | 120 ++ examples/Tracing/events/event.json | 63 + examples/Tracing/omnisharp.json | 11 + examples/Tracing/src/HelloWorld/Dockerfile | 26 + examples/Tracing/src/HelloWorld/Function.cs | 196 +++ .../Tracing/src/HelloWorld/HelloWorld.csproj | 16 + examples/Tracing/template-docker.yaml | 100 ++ examples/Tracing/template.yaml | 109 ++ .../test/HelloWorld.Test/FunctionTest.cs | 108 ++ .../HelloWorld.Test/HelloWorld.Tests.csproj | 18 + global.json | 5 + libraries/.gitignore | 454 +++++++ libraries/AWS.Lambda.Powertools.sln | 147 +++ libraries/AWSLogo128x128.png | Bin 0 -> 7589 bytes .../AWS.Lambda.Powertools.Common.csproj | 33 + ...ambda.Powertools.Common.csproj.DotSettings | 5 + .../Aspects/AspectEventArgs.cs | 70 + .../Aspects/IMethodAspectHandler.cs | 52 + .../Aspects/MethodAspectAttribute.cs | 102 ++ .../Aspects/UniversalWrapperAspect.cs | 167 +++ .../Aspects/UniversalWrapperAttribute.cs | 54 + .../Core/Constants.cs | 83 ++ .../Core/IPowertoolsConfigurations.cs | 123 ++ .../Core/ISystemWrapper.cs | 47 + .../Core/PowertoolsConfigurations.cs | 187 +++ .../Core/PowertoolsLambdaContext.cs | 131 ++ .../Core/SystemWrapper.cs | 81 ++ .../InternalsVisibleTo.cs | 23 + .../PascalCaseNamingPolicy.cs | 42 + .../SnakeCaseNamingPolicy.cs | 40 + .../Utils/StringUtils.cs | 44 + .../AWS.Lambda.Powertools.Logging.csproj | 42 + .../CorrelationIdPaths.cs | 44 + .../Internal/LoggerOutputCase.cs | 39 + .../Internal/LoggerProvider.cs | 94 ++ .../Internal/LoggingAspectHandler.cs | 364 ++++++ .../Internal/LoggingConstants.cs | 114 ++ .../Internal/PowertoolsConfigurations.cs | 56 + .../Internal/PowertoolsLogger.cs | 343 +++++ .../Internal/PowertoolsLoggerScope.cs | 37 + .../InternalsVisibleTo.cs | 18 + .../AWS.Lambda.Powertools.Logging/Logger.cs | 1157 +++++++++++++++++ .../LoggerConfiguration.cs | 62 + .../LoggerExtensions.cs | 639 +++++++++ .../LoggingAttribute.cs | 139 ++ .../AWS.Lambda.Powertools.Logging/README.md | 48 + ...mbda.PowerTools.Metrics.csproj.DotSettings | 5 + .../AWS.Lambda.Powertools.Metrics.csproj | 39 + .../Exception/SchemaValidationException.cs | 44 + .../AWS.Lambda.Powertools.Metrics/IMetrics.cs | 97 ++ .../Internal/MetricsAspectHandler.cs | 140 ++ .../InternalsVisibleTo.cs | 18 + .../AWS.Lambda.Powertools.Metrics/Metrics.cs | 388 ++++++ .../MetricsAttribute.cs | 84 ++ .../Model/DimensionSet.cs | 47 + .../Model/Metadata.cs | 178 +++ .../Model/MetricDefinition.cs | 87 ++ .../Model/MetricDirective.cs | 227 ++++ .../Model/MetricUnit.cs | 169 +++ .../Model/MetricsContext.cs | 164 +++ .../Model/RootNode.cs | 70 + .../AWS.Lambda.Powertools.Metrics/README.md | 302 +++++ .../DictionaryLookupNamingPolicy.cs | 21 + .../Serializer/JsonNamingPolicyDecorator.cs | 27 + .../Serializer/StringEnumConverter.cs | 98 ++ .../UnixMillisecondDateTimeConverter.cs | 57 + .../AWS.Lambda.Powertools.Tracing.csproj | 42 + .../Internal/IXRayRecorder.cs | 96 ++ .../Internal/TracingAspectHandler.cs | 286 ++++ .../Internal/XRayRecorder.cs | 153 +++ .../InternalsVisibleTo.cs | 18 + .../AWS.Lambda.Powertools.Tracing/README.md | 119 ++ .../AWS.Lambda.Powertools.Tracing/Tracing.cs | 242 ++++ .../TracingAttribute.cs | 65 + .../TracingCaptureMode.cs | 58 + .../AWS.Lambda.Powertools.Common.Tests.csproj | 23 + ...Powertools.Common.Tests.csproj.DotSettings | 2 + .../Core/PowertoolsConfigurationsTest.cs | 644 +++++++++ .../Core/PowertoolsLambdaContextTest.cs | 65 + ...AWS.Lambda.Powertools.Logging.Tests.csproj | 27 + .../LoggingAttributeTest.cs | 310 +++++ .../PowertoolsLoggerTest.cs | 1012 ++++++++++++++ ...AWS.Lambda.Powertools.Metrics.Tests.csproj | 27 + .../EMFValidationTests.cs | 558 ++++++++ ...AWS.Lambda.Powertools.Tracing.Tests.csproj | 25 + .../TracingAttributeTest.cs | 790 +++++++++++ mkdocs.yml | 76 ++ poetry.lock | 553 ++++++++ pyproject.toml | 17 + version.json | 8 + 173 files changed, 20027 insertions(+), 183 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/documentation-improvements.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md create mode 100644 .github/ISSUE_TEMPLATE/rfc.md create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/auto_assign-issues.yml create mode 100644 .github/boring-cyborg.yml create mode 100644 .github/release-drafter.yml create mode 100644 .github/semantic.yml create mode 100644 .github/stale.yml create mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/docs.yml create mode 100644 .github/workflows/label_pr_on_title.yml create mode 100644 .github/workflows/publish.yml create mode 100644 .github/workflows/record_pr.yml create mode 100644 .github/workflows/release-drafter.yml create mode 100644 .gitignore create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json create mode 100644 .vscode/tasks.json create mode 100644 404.html create mode 100644 CHANGELOG.md create mode 100644 Dockerfile create mode 100644 Makefile create mode 100644 apidocs/api/.gitignore create mode 100644 apidocs/api/index.md create mode 100644 apidocs/docfx.json create mode 100644 apidocs/images/favicon.ico create mode 100644 apidocs/images/img.svg create mode 100644 apidocs/index.md create mode 100644 apidocs/templates/material/partials/head.tmpl.partial create mode 100644 apidocs/templates/material/styles/main.css create mode 100644 apidocs/toc.yml create mode 100644 buildtools/NuGet.Config create mode 100644 buildtools/build.proj create mode 100644 buildtools/common.props create mode 100644 buildtools/nuget.exe create mode 100644 docs/Dockerfile create mode 100644 docs/changelog.md create mode 100644 docs/core/logging.md create mode 100644 docs/core/metrics.md create mode 100644 docs/core/tracing.md create mode 100644 docs/index.md create mode 100644 docs/javascript/aws-amplify.min.js create mode 100644 docs/javascript/extra.js create mode 100644 docs/media/aws-logo-light.svg create mode 100644 docs/media/metrics_terminology.png create mode 100644 docs/media/tracer_utility_showcase.png create mode 100644 docs/media/utilities_data_classes.png create mode 100644 docs/media/utilities_typing.png create mode 100644 docs/overrides/assets/images/powertools_docs_thumbnail.png create mode 100644 docs/references.md create mode 100644 docs/stylesheets/extra.css create mode 100644 docs/tenets.md create mode 100644 examples/.gitignore create mode 100644 examples/Logging/.gitignore create mode 100644 examples/Logging/PowertoolsLoggingExample.sln create mode 100644 examples/Logging/README.md create mode 100644 examples/Logging/events/event.json create mode 100644 examples/Logging/omnisharp.json create mode 100644 examples/Logging/src/HelloWorld/Dockerfile create mode 100644 examples/Logging/src/HelloWorld/Function.cs create mode 100644 examples/Logging/src/HelloWorld/HelloWorld.csproj create mode 100644 examples/Logging/template-docker.yaml create mode 100644 examples/Logging/template.yaml create mode 100644 examples/Logging/test/HelloWorld.Test/FunctionTest.cs create mode 100644 examples/Logging/test/HelloWorld.Test/HelloWorld.Tests.csproj create mode 100644 examples/Metrics/.gitignore create mode 100644 examples/Metrics/PowertoolsMetricsExample.sln create mode 100644 examples/Metrics/README.md create mode 100644 examples/Metrics/events/event.json create mode 100644 examples/Metrics/omnisharp.json create mode 100644 examples/Metrics/src/HelloWorld/Dockerfile create mode 100644 examples/Metrics/src/HelloWorld/Function.cs create mode 100644 examples/Metrics/src/HelloWorld/HelloWorld.csproj create mode 100644 examples/Metrics/template-docker.yaml create mode 100644 examples/Metrics/template.yaml create mode 100644 examples/Metrics/test/HelloWorld.Test/FunctionTest.cs create mode 100644 examples/Metrics/test/HelloWorld.Test/HelloWorld.Tests.csproj create mode 100644 examples/Tracing/.gitignore create mode 100644 examples/Tracing/PowertoolsTracingExample.sln create mode 100644 examples/Tracing/README.md create mode 100644 examples/Tracing/events/event.json create mode 100644 examples/Tracing/omnisharp.json create mode 100644 examples/Tracing/src/HelloWorld/Dockerfile create mode 100644 examples/Tracing/src/HelloWorld/Function.cs create mode 100644 examples/Tracing/src/HelloWorld/HelloWorld.csproj create mode 100644 examples/Tracing/template-docker.yaml create mode 100644 examples/Tracing/template.yaml create mode 100644 examples/Tracing/test/HelloWorld.Test/FunctionTest.cs create mode 100644 examples/Tracing/test/HelloWorld.Test/HelloWorld.Tests.csproj create mode 100644 global.json create mode 100644 libraries/.gitignore create mode 100644 libraries/AWS.Lambda.Powertools.sln create mode 100644 libraries/AWSLogo128x128.png create mode 100644 libraries/src/AWS.Lambda.Powertools.Common/AWS.Lambda.Powertools.Common.csproj create mode 100644 libraries/src/AWS.Lambda.Powertools.Common/AWS.Lambda.Powertools.Common.csproj.DotSettings create mode 100644 libraries/src/AWS.Lambda.Powertools.Common/Aspects/AspectEventArgs.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Common/Aspects/IMethodAspectHandler.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Common/Aspects/MethodAspectAttribute.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Common/Aspects/UniversalWrapperAspect.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Common/Aspects/UniversalWrapperAttribute.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Common/Core/Constants.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Common/Core/IPowertoolsConfigurations.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Common/Core/ISystemWrapper.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Common/Core/PowertoolsConfigurations.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Common/Core/PowertoolsLambdaContext.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Common/Core/SystemWrapper.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Common/InternalsVisibleTo.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Common/JsonSerialization/PascalCaseNamingPolicy.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Common/JsonSerialization/SnakeCaseNamingPolicy.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Common/Utils/StringUtils.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Logging/AWS.Lambda.Powertools.Logging.csproj create mode 100644 libraries/src/AWS.Lambda.Powertools.Logging/CorrelationIdPaths.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Logging/Internal/LoggerOutputCase.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Logging/Internal/LoggerProvider.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Logging/Internal/LoggingAspectHandler.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Logging/Internal/LoggingConstants.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Logging/Internal/PowertoolsConfigurations.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Logging/Internal/PowertoolsLogger.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Logging/Internal/PowertoolsLoggerScope.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Logging/InternalsVisibleTo.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Logging/Logger.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Logging/LoggerConfiguration.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Logging/LoggerExtensions.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Logging/LoggingAttribute.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Logging/README.md create mode 100644 libraries/src/AWS.Lambda.Powertools.Metrics/AWS.Lambda.PowerTools.Metrics.csproj.DotSettings create mode 100644 libraries/src/AWS.Lambda.Powertools.Metrics/AWS.Lambda.Powertools.Metrics.csproj create mode 100644 libraries/src/AWS.Lambda.Powertools.Metrics/Exception/SchemaValidationException.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Metrics/IMetrics.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Metrics/Internal/MetricsAspectHandler.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Metrics/InternalsVisibleTo.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Metrics/Metrics.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Metrics/MetricsAttribute.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Metrics/Model/DimensionSet.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Metrics/Model/Metadata.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Metrics/Model/MetricDefinition.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Metrics/Model/MetricDirective.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Metrics/Model/MetricUnit.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Metrics/Model/MetricsContext.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Metrics/Model/RootNode.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Metrics/README.md create mode 100644 libraries/src/AWS.Lambda.Powertools.Metrics/Serializer/DictionaryLookupNamingPolicy.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Metrics/Serializer/JsonNamingPolicyDecorator.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Metrics/Serializer/StringEnumConverter.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Metrics/Serializer/UnixMillisecondDateTimeConverter.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Tracing/AWS.Lambda.Powertools.Tracing.csproj create mode 100644 libraries/src/AWS.Lambda.Powertools.Tracing/Internal/IXRayRecorder.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Tracing/Internal/TracingAspectHandler.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Tracing/Internal/XRayRecorder.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Tracing/InternalsVisibleTo.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Tracing/README.md create mode 100644 libraries/src/AWS.Lambda.Powertools.Tracing/Tracing.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Tracing/TracingAttribute.cs create mode 100644 libraries/src/AWS.Lambda.Powertools.Tracing/TracingCaptureMode.cs create mode 100644 libraries/tests/AWS.Lambda.Powertools.Common.Tests/AWS.Lambda.Powertools.Common.Tests.csproj create mode 100644 libraries/tests/AWS.Lambda.Powertools.Common.Tests/AWS.Lambda.Powertools.Common.Tests.csproj.DotSettings create mode 100644 libraries/tests/AWS.Lambda.Powertools.Common.Tests/Core/PowertoolsConfigurationsTest.cs create mode 100644 libraries/tests/AWS.Lambda.Powertools.Common.Tests/Core/PowertoolsLambdaContextTest.cs create mode 100644 libraries/tests/AWS.Lambda.Powertools.Logging.Tests/AWS.Lambda.Powertools.Logging.Tests.csproj create mode 100644 libraries/tests/AWS.Lambda.Powertools.Logging.Tests/LoggingAttributeTest.cs create mode 100644 libraries/tests/AWS.Lambda.Powertools.Logging.Tests/PowertoolsLoggerTest.cs create mode 100644 libraries/tests/AWS.Lambda.Powertools.Metrics.Tests/AWS.Lambda.Powertools.Metrics.Tests.csproj create mode 100644 libraries/tests/AWS.Lambda.Powertools.Metrics.Tests/EMFValidationTests.cs create mode 100644 libraries/tests/AWS.Lambda.Powertools.Tracing.Tests/AWS.Lambda.Powertools.Tracing.Tests.csproj create mode 100644 libraries/tests/AWS.Lambda.Powertools.Tracing.Tests/TracingAttributeTest.cs create mode 100644 mkdocs.yml create mode 100644 poetry.lock create mode 100644 pyproject.toml create mode 100644 version.json diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 000000000..b67ee85ea --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,43 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: bug, triage +assignees: '' + +--- + + + + +**What were you trying to accomplish?** + +## Expected Behavior + + + +## Current Behavior + + + +## Possible Solution + + + +## Steps to Reproduce (for bugs) + + +1. +2. +3. +4. + +## Environment + +* **Powertools version used**: +* **AWS Lambda function runtime:** +* **Debugging logs** + +```csharp +# paste logs here +``` diff --git a/.github/ISSUE_TEMPLATE/documentation-improvements.md b/.github/ISSUE_TEMPLATE/documentation-improvements.md new file mode 100644 index 000000000..8341ae4e0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/documentation-improvements.md @@ -0,0 +1,17 @@ +--- +name: Documentation improvements +about: Suggest a documentation update +title: '' +labels: documentation +assignees: '' + +--- + +**What were you initially searching for in the docs?** + + +**Is this related to an existing part of the documentation? Please share a link** + +**Describe how we could make it clearer** + +**If you have a proposed update, please share it here** diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 000000000..b837b7ad5 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,20 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: feature-request, triage +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** + + +**Describe the solution you'd like** + + +**Describe alternatives you've considered** + + +**Additional context** + diff --git a/.github/ISSUE_TEMPLATE/rfc.md b/.github/ISSUE_TEMPLATE/rfc.md new file mode 100644 index 000000000..a521ff873 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/rfc.md @@ -0,0 +1,62 @@ +--- +name: RFC +about: Feature design and proposals +title: 'RFC: ' +labels: RFC, triage +assignees: '' +approved by: '' +--- + +## Key information + +* RFC PR: (leave this empty) +* Related issue(s), if known: +* Area: (i.e. Tracer, Metrics, Logger, etc.) +* Meet [tenets](https://awslabs.github.io/aws-lambda-powertools-dotnet/#tenets): (Yes/no) +* Approved by: '' +* Reviewed by: '' + +## Summary +[summary]: #summary + +> One paragraph explanation of the feature. + +## Motivation +[motivation]: #motivation + +> Why are we doing this? What use cases does it support? What is the expected outcome? + +## Proposal +[proposal]: #proposal + +> This is the bulk of the RFC. + +> Explain the design in enough detail for somebody familiar with Powertools to understand it, and for somebody familiar with the implementation to implement it. + +**If this feature should be available in other runtimes (e.g. Java, Typescript), how would this look like to ensure consistency?** + +## User Experience + +**How would customers use it?** + +**Any configuration or corner cases you'd expect?** + +**Demonstration of before and after on how the experience will be better** + +## Drawbacks +[drawbacks]: #drawbacks + +> Why should we *not* do this? + +> Do we need additional dependencies? Impact performance/package size? + +## Rationale and alternatives +[rationale-and-alternatives]: #rationale-and-alternatives + +* **What other designs have been considered? Why not them?** +* **What is the impact of not doing this?** + +## Unresolved questions +[unresolved-questions]: #unresolved-questions + +> Optional, stash area for topics that need further development e.g. TBD diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 000000000..003e92265 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,25 @@ +**Issue #, if available:** + +## Description of changes: + + + +**Checklist** + + + +* [ ] [Meet tenets criteria](https://awslabs.github.io/aws-lambda-powertools-dotnet/#tenets) +* [ ] Update tests +* [ ] Update docs +* [ ] PR title follows [conventional commit semantics](https://github.com/awslabs/aws-lambda-powertools-dotnet/blob/develop/.github/semantic.yml) + +## Breaking change checklist + + + +**RFC issue #**: + +* [ ] Migration process documented +* [ ] Implement warnings (if it can live side by side) + +By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice. diff --git a/.github/auto_assign-issues.yml b/.github/auto_assign-issues.yml new file mode 100644 index 000000000..f5f16997b --- /dev/null +++ b/.github/auto_assign-issues.yml @@ -0,0 +1,8 @@ +addAssignees: true + +# The list of users to assign to new issues. +# If empty or not provided, the repository owner is assigned +assignees: + - t1agob + - sliedig + - amirkaws diff --git a/.github/boring-cyborg.yml b/.github/boring-cyborg.yml new file mode 100644 index 000000000..458c4b1b7 --- /dev/null +++ b/.github/boring-cyborg.yml @@ -0,0 +1,45 @@ +##### Labeler ########################################################################################################## +labelPRBasedOnFilePath: + area/logger: + - libraries/src/AWS.Lambda.Powertools.Logging/* + - libraries/src/AWS.Lambda.Powertools.Logging/**/* + area/tracer: + - libraries/src/AWS.Lambda.Powertools.Tracing/* + - libraries/src/AWS.Lambda.Powertools.Tracing/**/* + area/metrics: + - libraries/src/AWS.Lambda.Powertools.Metrics/* + - libraries/src/AWS.Lambda.Powertools.Metrics/**/* + + documentation: + - docs/* + - docs/**/* + - mkdocs.yml + + internal: + - .github/* + - .github/**/* + - .chglog/* + - .flake8 + - .gitignore + - .pre-commit-config.yaml + - Makefile + - CONTRIBUTING.md + - CODE_OF_CONDUCT.md + - LICENSE + + tests: + - libraries/tests/* + - libraries/tests/**/* + + +##### Greetings ######################################################################################################## +firstPRWelcomeComment: > + Thanks a lot for your first contribution! Please check out our contributing guidelines and don't hesitate to ask whatever you need. + +# Comment to be posted to congratulate user on their first merged PR +firstPRMergeComment: > + Awesome work, congrats on your first merged pull request and thank you for helping improve everyone's experience! + +# Comment to be posted to on first time issues +firstIssueWelcomeComment: > + Thanks for opening your first issue here! We'll come back to you as soon as we can. \ No newline at end of file diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml new file mode 100644 index 000000000..4fb0323ff --- /dev/null +++ b/.github/release-drafter.yml @@ -0,0 +1,39 @@ +change-template: "* $TITLE (#$NUMBER) by @$AUTHOR" +categories: + - title: '⚡ Breaking Changes' + labels: + - 'breaking-change' + - title: '🌟New features and non-breaking changes' + labels: + - 'major' + - 'feature' + - title: '🌟 Minor Changes' + labels: + - 'enhancement' + - title: '📜 Documentation updates' + labels: + - 'documentation' + - title: '🐛 Bug and hot fixes' + labels: + - 'bug' + - 'fix' + - title: '🚒 Deprecations' + labels: + - 'deprecated' + - title: '🔧 Maintenance' + labels: + - 'internal' + - 'dependencies' +exclude-labels: + - 'skip-changelog' +tag-template: 'v$NEXT_PATCH_VERSION' +template: | + ## Changes + + **[Human readable summary of changes]** + + $CHANGES + + ## This release was made possible by the following contributors: + + $CONTRIBUTORS diff --git a/.github/semantic.yml b/.github/semantic.yml new file mode 100644 index 000000000..39119da8d --- /dev/null +++ b/.github/semantic.yml @@ -0,0 +1,19 @@ +# conventional commit types: https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json +types: + - feat + - fix + - docs + - style + - refactor + - perf + - test + - build + - ci + - chore + - revert + - improv + +# Always validate the PR title +# and ignore the commits to lower the entry bar for contribution +# while titles make up the Release notes to ease maintenance overhead +titleOnly: true diff --git a/.github/stale.yml b/.github/stale.yml new file mode 100644 index 000000000..1bb42057e --- /dev/null +++ b/.github/stale.yml @@ -0,0 +1,17 @@ +only: issues +daysUntilStale: 30 +daysUntilClose: 7 +exemptLabels: + - bug + - documentation + - enhancement + - feature-request + - RFC +staleLabel: pending-close-response-required +markComment: > + This issue has been automatically marked as stale because it has not had + recent activity. It will be closed if no further activity occurs. Thank you + for your contributions. +closeComment: > + This issue has been automatically closed because of inactivity. + Please open a new issue if you are still encountering problems. diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 000000000..32c71566c --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,37 @@ +name: Build .NET + +on: + push: + branches: [ develop, main ] + pull_request: + branches: [ develop, main ] + +defaults: + run: + working-directory: ./libraries + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Setup .NET 6.0 + uses: actions/setup-dotnet@v1 + with: + dotnet-version: 6.0.x + - name: Install solution dependencies + run: dotnet restore + - name: Build + run: dotnet build --configuration Release --no-restore + - name: Test & Code Coverage + run: dotnet test --collect:"XPlat Code Coverage" -r ./codecov --no-restore --verbosity normal + - name: Codecov + uses: codecov/codecov-action@v2.1.0 + with: + token: ${{ secrets.CODECOV_TOKEN }} + flags: unittests + fail_ci_if_error: true + name: codecov-lambda-powertools-dotnet + verbose: true + directory: ./libraries/codecov diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 000000000..7ada67bfc --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,48 @@ +name: Docs + +on: + push: + branches: + - develop + - main + +jobs: + docs: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Set up Python + uses: actions/setup-python@v2.2.2 + with: + python-version: "3.8" + - name: Capture branch and tag + id: branch_name + run: | + echo "SOURCE_BRANCH=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV + echo "SOURCE_TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV + - name: Build docs website + run: make build-docs-website + - name: Deploy all docs + uses: peaceiris/actions-gh-pages@v3 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./dist + apidocs: + runs-on: macos-latest + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Configure and build api docs generator + run: | + brew install -f docfx --skip-cask-deps --ignore-dependencies + docfx apidocs/docfx.json + - name: Release API docs to latest + uses: peaceiris/actions-gh-pages@v3 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./apidocs/_site + keep_files: true + destination_dir: api diff --git a/.github/workflows/label_pr_on_title.yml b/.github/workflows/label_pr_on_title.yml new file mode 100644 index 000000000..45adc1af3 --- /dev/null +++ b/.github/workflows/label_pr_on_title.yml @@ -0,0 +1,87 @@ +name: Label PR based on title + +on: + workflow_run: + workflows: ["Record PR number"] + types: + - completed + +jobs: + upload: + runs-on: ubuntu-latest + # Guardrails to only ever run if PR recording workflow was indeed + # run in a PR event and ran successfully + if: > + ${{ github.event.workflow_run.event == 'pull_request' && + github.event.workflow_run.conclusion == 'success' }} + steps: + - name: 'Download artifact' + uses: actions/github-script@v5 + # For security, we only download artifacts tied to the successful PR recording workflow + with: + script: | + const fs = require('fs'); + + const artifacts = await github.rest.actions.listWorkflowRunArtifacts({ + owner: context.repo.owner, + repo: context.repo.repo, + run_id: ${{github.event.workflow_run.id }}, + }); + + const matchArtifact = artifacts.data.artifacts.filter(artifact => artifact.name == "pr")[0]; + + const artifact = await github.rest.actions.downloadArtifact({ + owner: context.repo.owner, + repo: context.repo.repo, + artifact_id: matchArtifact.id, + archive_format: 'zip', + }); + + fs.writeFileSync('${{github.workspace}}/pr.zip', Buffer.from(artifact.data)); + # NodeJS standard library doesn't provide ZIP capabilities; use system `unzip` command instead + - run: unzip pr.zip + + - name: 'Label PR based on title' + uses: actions/github-script@v5 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + # This safely runs in our base repo, not on fork + # thus allowing us to provide a write access token to label based on PR title + # and label PR based on semantic title accordingly + script: | + const fs = require('fs'); + const pr_number = Number(fs.readFileSync('./number')); + const pr_title = fs.readFileSync('./title', 'utf-8').trim(); + + const FEAT_REGEX = /feat(\((\w+)\))?(\:.+)/ + const BUG_REGEX = /(fix|bug)(\((\w+)\))?(\:.+)/ + const DOCS_REGEX = /(docs|doc)(\((\w+)\))?(\:.+)/ + const CHORE_REGEX = /(chore)(\((\w+)\))?(\:.+)/ + const DEPRECATED_REGEX = /(deprecated)(\((\w+)\))?(\:.+)/ + const REFACTOR_REGEX = /(refactor)(\((\w+)\))?(\:.+)/ + + const labels = { + "feature": FEAT_REGEX, + "bug": BUG_REGEX, + "documentation": DOCS_REGEX, + "internal": CHORE_REGEX, + "enhancement": REFACTOR_REGEX, + "deprecated": DEPRECATED_REGEX, + } + + for (const label in labels) { + const matcher = new RegExp(labels[label]) + const isMatch = matcher.exec(pr_title) + if (isMatch != null) { + console.info(`Auto-labeling PR ${pr_number} with ${label}`) + + await github.rest.issues.addLabels({ + issue_number: pr_number, + owner: context.repo.owner, + repo: context.repo.repo, + labels: [label] + }) + + break + } + } \ No newline at end of file diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 000000000..f903c9a7a --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,62 @@ +name: Publish new package version + +on: + push: + paths: + - 'version.json' + +jobs: + release: + if: ${{ github.ref == 'refs/heads/main' }} + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Read AWS.Lambda.Powertools.Common version + id: common-version + uses: notiz-dev/github-action-json-property@release + with: + path: 'version.json' + prop_path: 'Core.Common' + - name: Read AWS.Lambda.Powertools.Logging version + id: logging-version + uses: notiz-dev/github-action-json-property@release + with: + path: 'version.json' + prop_path: 'Core.Logging' + - name: Read AWS.Lambda.Powertools.Tracing version + id: tracing-version + uses: notiz-dev/github-action-json-property@release + with: + path: 'version.json' + prop_path: 'Core.Tracing' + - name: Read AWS.Lambda.Powertools.Metrics version + id: metrics-version + uses: notiz-dev/github-action-json-property@release + with: + path: 'version.json' + prop_path: 'Core.Metrics' + - name: Setup .NET 6.0 + uses: actions/setup-dotnet@v1 + with: + dotnet-version: 6.0.x + - name: Setup semver + run: dotnet tool install -g dotnet-setversion + - name: Set assembly version in all projects + run: | + setversion ${{steps.common-version.outputs.prop}} libraries/src/AWS.Lambda.Powertools.Common/AWS.Lambda.Powertools.Common.csproj + setversion ${{steps.logging-version.outputs.prop}} libraries/src/AWS.Lambda.Powertools.Logging/AWS.Lambda.Powertools.Logging.csproj + setversion ${{steps.metrics-version.outputs.prop}} libraries/src/AWS.Lambda.Powertools.Metrics/AWS.Lambda.Powertools.Metrics.csproj + setversion ${{steps.tracing-version.outputs.prop}} libraries/src/AWS.Lambda.Powertools.Tracing/AWS.Lambda.Powertools.Tracing.csproj + - name: Authenticate to GitHub packages # Temporary package repository for publishing validation + run: dotnet nuget add source --username ${{ secrets.PUBLISH_USERNAME }} --password ${{ secrets.GITHUB_TOKEN }} --store-password-in-clear-text --name nuget ${{ secrets.NUGET_SOURCE }} + - name: Generate Nuget Packages + run: | + cd buildtools + dotnet build -c Release + - name: Publish Nuget Packages + run: | + cd deploy/nuget-packages + dotnet nuget push "*.nupkg" -k ${{ secrets.NUGET_API_KEY }} --skip-duplicate -s nuget + diff --git a/.github/workflows/record_pr.yml b/.github/workflows/record_pr.yml new file mode 100644 index 000000000..88edce19f --- /dev/null +++ b/.github/workflows/record_pr.yml @@ -0,0 +1,21 @@ +name: Record PR number + +on: + pull_request: + types: [opened, edited] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Save PR number + run: | + mkdir -p ./pr + echo ${{ github.event.number }} > ./pr/number + echo "${{ github.event.pull_request.title }}" > ./pr/title + - uses: actions/upload-artifact@v2 + with: + name: pr + path: pr/ \ No newline at end of file diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml new file mode 100644 index 000000000..59633a634 --- /dev/null +++ b/.github/workflows/release-drafter.yml @@ -0,0 +1,15 @@ +name: Release Drafter + +on: + push: + # branches to consider in the event; optional, defaults to all + branches: + - develop + +jobs: + update_release_draft: + runs-on: ubuntu-latest + steps: + - uses: release-drafter/release-drafter@v5 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..fba2714b2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,20 @@ +docs/node_modules +docs/.cache +docs/public + +apidocs/_site +apidocs/obj + +deploy/** + +.idea +.vscode +.vs/ + +examples/SimpleLambda/.aws-sam +examples/SimpleLambda/samconfig.toml + +AWS.Lambda.Powertools.sln.DotSettings.user +[Oo]bj/** +[Bb]in/** +.DS_Store diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 000000000..c97d51b40 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,27 @@ +{ + // Use IntelliSense to find out which attributes exist for C# debugging + // Use hover for the description of the existing attributes + // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md + "version": "0.2.0", + "configurations": [ + { + "name": ".NET Core Launch (console)", + "type": "coreclr", + "request": "launch", + "preLaunchTask": "build", + // If you have changed target frameworks, make sure to update the program path. + "program": "${workspaceFolder}/libraries/tests/Amazon.LambdaPowertools.Logging.Tests/bin/Debug/netcoreapp3.1/Amazon.LambdaPowertools.Logging.Tests.dll", + "args": [], + "cwd": "${workspaceFolder}/libraries/tests/Amazon.LambdaPowertools.Logging.Tests", + // For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console + "console": "internalConsole", + "stopAtEntry": false + }, + { + "name": ".NET Core Attach", + "type": "coreclr", + "request": "attach", + "processId": "${command:pickProcess}" + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..7a73a41bf --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 000000000..c258fc978 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,42 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "build", + "command": "dotnet", + "type": "process", + "args": [ + "build", + "${workspaceFolder}/libraries/tests/Amazon.LambdaPowertools.Logging.Tests/Amazon.LambdaPowertools.Logging.Tests.csproj", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "publish", + "command": "dotnet", + "type": "process", + "args": [ + "publish", + "${workspaceFolder}/libraries/tests/Amazon.LambdaPowertools.Logging.Tests/Amazon.LambdaPowertools.Logging.Tests.csproj", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "watch", + "command": "dotnet", + "type": "process", + "args": [ + "watch", + "run", + "${workspaceFolder}/libraries/tests/Amazon.LambdaPowertools.Logging.Tests/Amazon.LambdaPowertools.Logging.Tests.csproj", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "problemMatcher": "$msCompile" + } + ] +} \ No newline at end of file diff --git a/404.html b/404.html new file mode 100644 index 000000000..5ab03a082 --- /dev/null +++ b/404.html @@ -0,0 +1,20 @@ + + + + + + + + + + + diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000..398953761 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,12 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +This project follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) format for changes and adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + + +## [Unreleased] + +## [0.1.0] - 2021-11-15 +### Added +- Public beta release diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..da8dca0c5 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,26 @@ +FROM mcr.microsoft.com/dotnet/sdk:6.0-bullseye-slim AS build-image + +ARG FUNCTION_DIR="/build" +ARG SAM_BUILD_MODE="run" +ENV PATH="/root/.dotnet/tools:${PATH}" + +RUN apt-get update && apt-get -y install zip + +RUN mkdir $FUNCTION_DIR +WORKDIR $FUNCTION_DIR +COPY examples/SimpleLambda/src/HelloWorld/Function.cs examples/SimpleLambda/src/HelloWorld/HelloWorld.csproj examples/SimpleLambda/src/HelloWorld/aws-lambda-tools-defaults.json $FUNCTION_DIR/examples/SimpleLambda/src/HelloWorld/ +COPY libraries/src/ $FUNCTION_DIR/libraries/src/ +COPY libraries/*.png $FUNCTION_DIR/libraries/ +RUN dotnet tool install -g Amazon.Lambda.Tools + +# Build and Copy artifacts depending on build mode. +RUN mkdir -p build_artifacts +WORKDIR $FUNCTION_DIR/examples/SimpleLambda/src/HelloWorld/ +RUN if [ "$SAM_BUILD_MODE" = "debug" ]; then dotnet lambda package --configuration Debug; else dotnet lambda package --configuration Release; fi +RUN if [ "$SAM_BUILD_MODE" = "debug" ]; then cp -r /bin/Debug/net6.0/publish/* /build/build_artifacts; else cp -r bin/Release/net6.0/publish/* /build/build_artifacts; fi + +FROM public.ecr.aws/lambda/dotnet:6 + +COPY --from=build-image /build/build_artifacts/ /var/task/ +# Command can be overwritten by providing a different command in the template directly. +CMD ["HelloWorld::HelloWorld.Function::FunctionHandler"] diff --git a/LICENSE b/LICENSE index 67db85882..12ad443cd 100644 --- a/LICENSE +++ b/LICENSE @@ -1,175 +1,14 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. +Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..3158dcef7 --- /dev/null +++ b/Makefile @@ -0,0 +1,17 @@ +.PHONY: build-docs build-docs-website docs-local docs-local-docker + +build-docs: + @$(MAKE) build-docs-website + +build-docs-website: + mkdir -p dist + docker build -t squidfunk/mkdocs-material ./docs/ + docker run --rm -t -v ${PWD}:/docs squidfunk/mkdocs-material build + cp -R site/* dist/ + +docs-local: + poetry run mkdocs serve + +docs-local-docker: + docker build -t squidfunk/mkdocs-material ./docs/ + docker run --rm -it -p 8000:8000 -v ${PWD}:/docs squidfunk/mkdocs-material \ No newline at end of file diff --git a/README.md b/README.md index 847260ca5..900107d4c 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,65 @@ -## My Project +# AWS Lambda Powertools for .NET -TODO: Fill this README out! +![aws provider](https://img.shields.io/badge/provider-AWS-orange?logo=amazon-aws&color=ff9900) [![Build](https://github.com/awslabs/aws-lambda-powertools-dotnet/actions/workflows/build.yml/badge.svg?branch=develop)](https://github.com/awslabs/aws-lambda-powertools-dotnet/actions/workflows/build.yml) -Be sure to: +AWS Lambda Powertools for .NET (C#) is suite of utilities for AWS Lambda functions to simplify implementation of serverless observability best practices such as tracing, structured logging, custom metrics. -* Change the title in this README -* Edit your repository description on GitHub +**[📜 Documentation](https://awslabs.github.io/aws-lambda-powertools-dotnet/)** | **[NuGet](https://www.nuget.org/)** | **[Roadmap](https://github.com/awslabs/aws-lambda-powertools-roadmap/projects/1)** | **[Examples](#examples)** | **[Blog post](https://aws.amazon.com/blogs/opensource/simplifying-serverless-best-practices-with-lambda-powertools/)** -## Security +> **Join us on the AWS Developers Slack at `#lambda-powertools`** - **[Invite, if you don't have an account](https://join.slack.com/t/awsdevelopers/shared_invite/zt-gu30gquv-EhwIYq3kHhhysaZ2aIX7ew)** -See [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications) for more information. +## Features + +Lambda Powertools provides three core utilities: + +* **[Logging](https://awslabs.github.io/aws-lambda-powertools-dotnet/core/logging/)** - provides a custom logger class that outputs structured JSON. It allows you to pass in strings or more complex objects, and will take care of serializing the log output. Common use cases—such as logging the Lambda event payload and capturing cold start information—are handled for you, including appending custom keys to the logger at anytime. + +* **[Metrics](https://awslabs.github.io/aws-lambda-powertools-dotnet/core/metrics/)** - makes collecting custom metrics from your application simple, without the need to make synchronous requests to external systems. This functionality is powered by [Amazon CloudWatch Embedded Metric Format (EMF)](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Embedded_Metric_Format.html), which allows for capturing metrics asynchronously. + +* **[Tracing](https://awslabs.github.io/aws-lambda-powertools-dotnet/core/tracing/)** - provides a simple way to send traces from functions to AWS X-Ray to provide visibility into function calls, interactions with other AWS services, or external HTTP requests. Annotations easily can be added to traces to allow filtering traces based on key information. For example, when using Tracer, a ColdStart annotation is created for you, so you can easily group and analyze traces where there was an initialization overhead. + +### Installation + +The AWS Lambda Powertools for .NET utilities (.NET 6) are available as Nuget packages. You can install the packages from Nuget gallery or from Visual Studio editor. Search `AWS.Lambda.Powertools*` to see various utilities available.Powertools is available on NuGet. + +* [AWS.Lambda.Powertools.Logging](https://www.nuget.org/packages?q=AWS.Lambda.Powertools.Logging): + + `dotnet nuget add AWS.Lambda.Powertools.Logging` + +* [AWS.Lambda.Powertools.Metrics](https://www.nuget.org/packages?q=AWS.Lambda.Powertools.Metrics): + + `dotnet nuget add AWS.Lambda.Powertools.Metrics` + +* [AWS.Lambda.Powertools.Tracing](https://www.nuget.org/packages?q=AWS.Lambda.Powertools.Tracing): + + `dotnet nuget add AWS.Lambda.Powertools.Tracing` + +## Examples + +We have provided examples focused specifically on each of the utilities. Each solution comes with AWS Serverless Application Model (AWS SAM) templates to run your functions as Zip package using the AWS Lambda .NET 6 managed runtime, or as a container package using the AWS base images for .NET. + +* **[Logging example](examples/Logging/README.md)** +* **[Metrics example](examples/Metrics/README.md)** +* **[Tracing example](examples/Tracing/README.md)** + +## Other members of the AWS Lambda Powertools family + +Not using .NET? No problem we have you covered. Here are the other members of the AWS Lambda Powertools family: + +* [AWS Lambda Powertools for Python](https://github.com/awslabs/aws-lambda-powertools-python) +* [AWS Lambda Powertools for Java](https://github.com/awslabs/aws-lambda-powertools-java) +* [AWS Lambda Powertools for TypeScript](https://github.com/awslabs/aws-lambda-powertools-typescript) + +## Credits + +* Structured logging initial implementation from [aws-lambda-logging](https://gitlab.com/hadrien/aws_lambda_logging) +* Powertools idea [DAZN Powertools](https://github.com/getndazn/dazn-lambda-powertools/) + +## Connect + +* **AWS Developers Slack**: `#lambda-powertools` - **[Invite, if you don't have an account](https://join.slack.com/t/awsdevelopers/shared_invite/zt-yryddays-C9fkWrmguDv0h2EEDzCqvw)** +* **Email**: aws-lambda-powertools-feedback@amazon.com ## License This project is licensed under the Apache-2.0 License. - diff --git a/apidocs/api/.gitignore b/apidocs/api/.gitignore new file mode 100644 index 000000000..f798527e6 --- /dev/null +++ b/apidocs/api/.gitignore @@ -0,0 +1,5 @@ +############### +# temp file # +############### +*.yml +.manifest diff --git a/apidocs/api/index.md b/apidocs/api/index.md new file mode 100644 index 000000000..e69de29bb diff --git a/apidocs/docfx.json b/apidocs/docfx.json new file mode 100644 index 000000000..00f5ca4fb --- /dev/null +++ b/apidocs/docfx.json @@ -0,0 +1,60 @@ +{ + "metadata": [ + { + "src": [ + { + "files": [ + "**/*.csproj" + ], + "src": "../libraries/src/", + "force": true + } + ], + "dest": "api", + "disableGitFeatures": false, + "disableDefaultFilter": false + } + ], + "build": { + "content": [ + { + "files": ["api/**.yml", "api/index.md"] + }, + { + "files": ["toc.yml", "*.md"] + } + ], + "resource": [ + { + "files": [ + "images/**" + ] + } + ], + "overwrite": [ + { + "files": ["apidoc/**.md"], + "exclude": ["obj/**", "_site/**"] + } + ], + "dest": "_site", + "globalMetadataFiles": [], + "globalMetadata": { + "_appTitle": "AWS Lambda Powertools for .NET", + "_appFaviconPath": "images/favicon.ico", + "_appLogoPath": "images/img.svg", + "_enableNewTab": true, + "_disableContribution": true, + "_enableSearch": "true", + "_appFooter": "AWS Lambda Powertools for .NET" + }, + "fileMetadataFiles": [], + "template": ["default", "templates/material"], + "postProcessors": ["ExtractSearchIndex"], + "markdownEngineName": "markdig", + "noLangKeyword": false, + "keepFileLink": false, + "cleanupCacheHistory": false, + "disableGitFeatures": false + } +} \ No newline at end of file diff --git a/apidocs/images/favicon.ico b/apidocs/images/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..dba84c4992cf7ffa7d3f9d17b4420e51572b2807 GIT binary patch literal 21054 zcmeHv2|Sct+xSQ*5!tdN6C%rC#$aY*?4j&?WEnGK$ugK3YqGVe$evV4c8M0G5|YQ# zLWGhKS&}7ND9isIOVp$HS-$W0y#M$2y(8wn&pFq2uI-%boL^!3x*Cl1-1Hz2h*3*Z z%@FtwqWo^51^!l|F;9UnDx#r=3h3sGT_1rLFjmu02L$pH0tTG`fxc1(4}d^qDG+GT z76d{ifIvIluiQ6~2Rgps&9&@xbU>oO^A->t6$^+Oc%lM+Kvdiynx$tD$c~EV`}0w% zeJf)&0b`&b;4cWE1oEVUEj_aV&k3iUK$}-!ZvfwvM{&xZ)o*1S!441BcO;MqL`Q-< zSXC7alY+`f$bk3hV6aYZlx7hS&?JYFl0(6uU?>zNErXIqfI*lx@#ULfotVdN3F)?}@WV8LAyv0SDd`_#H_kca)^0x3{;1x3mPo(?Jr7L?R`nV3IHx z1Q-D!`nr)YJ`gvez%r6mJZg9%*3-$IcZUsW0>B#o8gyegB1z53^SiHIypyv%aCz1^Dzfjl4 zsDR-cB64zZArncS7!tvAW6stM_@xoxeVl&545jCnVD78YWMj(TyMK)UXAk)DM)L_M z&}UhLOCG%JSn@b5%AVlqiXow$Trm!KNq08~dC9fLH4CAPBsq~>@av!f97};f*@g6D z>uQIK6D2^PTrh5cKlng!czX=lg~X3mHZ!u(CO8mm4mi1CTx@{2FE2^)d>5x5@hrFg zh<=H^pE;2S{061!iKi&dm_Tqr|Eb_CFZnarI(aEwIzTAIVMrJ?3<-~>#9xS%90Ue6 zUXA3yD@sag8O;x4f5NlG8UA-zR-*WNEbB)8ghPjbbF%mS9gdZpvL45}k?U|!Vit16}@aWD?m#vzXVbxxDY%s zKz{q3Kr1Z%O5Qc%%igt=UjMA%Yrso0;EQ*0A$X&aa0wu*1D_R{SDH8A{U>-=0uGN> z)j51<1#s#8kHPF*Fj!|au<%&=tiUce{xL9d$wZdaMxhK=cE$Jsiwr$rG9B0t{G+qM=eh zO(BWW`b*%A!|`{G0uM`pABgXN#g)FpulfQW4+In$=@oe#JSp$LM|G6pHxscbKc_+cC4a1%|C+#`%%MLy{z}gHDI)zdnFImsVkw{1@cVaDiIE4{2?y44 zbN)Mqvy?JqV9S|QZUw_%%p=l23G#nEkHA;w@gGei|06S4iXXDTB77;2{e>JNy(;Vf z%@neGmAgDKvZU=K&6lt5MxuQdFAqz=Z1GS1Mn3$%{! zb>6=!zrG7l2czt!e=0;Q?FBbd_sS-bvRV6i!?j$HSVv^ZG=5*m_|Dpf#8)|6)37nH zwWIk`HLL*NKI7{m@PjfdFdr0k^Z zkx)1mhFj%w9r&+lV6aQ|Od`e${~d6p?Ps8kBho*iJsAn{4-E(w#sgEuV#gNrWGIyxedrrR9aRRfrZ#fOUXjuNP8#*0f*Z`@Gztu6fj*lM#gSc z75@pQ`{xqJzdQ5*r))o+kNw@yBZWg??C@|LkUFHG5I9^;27<)Fkr1pj41t6pWu)+S zz#ja+q31s!^!y)=y8nRa%U1yK?nL`lcliGxv;4sYt5r^a3~E28!L{_ex`O??OWF-i z|Nm}Wl9t9Hq!9L42p)&T0&xj11F=IO?IBV~7#w3S4aLeqWmm=fPsl6(n1wD~Qdyq$ zf7n1*M8x4eo&I>+ux51Yxct6g1TU@r)?ALV;#+qI=iegUk52R_@6arB`XlIng#Y1? zGFT~DxGV&NkhX)sWf2tr1Gbb>(y~~jJxmUckO3-0%i{er{`bow*M@ZkO7R2e0B+(q zP_9v_5wK*+El6O~Oa{)TP_i=WvcT?279p#8018!8QI=JQsUZ+@s_M$BDsZXgBZQ6N z*VMN{!w~O=bE52*Rb4PdBHG=PKmcyg;D9`_%)?Lpzk^p>c9;W{4G*Q_0XW1TT)qJ+ z5WodJ6i~p_**9b2=9|Z+&ZC)tF1RO9me>U>|1ilgWb%wE8s`x9|*MV<@o$$AH zyF5J`z^{>6Ro*(~tgBkBXkKfBQp}(7n`OgT2fmK*a^E_GUA}w_XbMoy_e+i_JFFBA z2Ztgc7(5ONfkNdl5R8;P9DY0F}O1o=B;>j^)u*Ft=q^QgT+&7$4emVntmR=M96%N z5DX}otS7XtYaQs?tSzAi?f~M^z;V|`%^N~#sj9Bd4CNj^SW8`17K)UWg}@{Lp4ZT< z8@C=0aJh8#{-r5U+MwJNgaP-eC6>#jzw288U5(IE7YXkc4)$kdPc ziEn0QM@`H+{pRmmZc!fGKWAc6JTgDnu{b~CUFM%_jXit`$MC=R^N^3TK)CS?c#H8P zuDi`C6Y93KSwZ1l-~nodt^(J$yQ{UiZBu^Bzju|vqT+}Y-n>w32uq-VIJ>9XvEK~^@j@taIMWnR;N3AVE38DPu0A&SoV{E!1y80ury+`uxx zt#@6-;aYLI@{=5eD9wC^X=cCqeIDY~7MWpmA1|~X{<=NY?CU3bRANnvGMrZ&G&spx zLI0TwyghJB$4%w-kpcA6n@iBMul6$Htt@t zcG3K=Y5{ks=BQ`(Ir>EMd^)v>yuhk-)pXNt1a~UEcL*WK=sc5fl>Z`oTCIdzjX=28 zz6qp$J}>M%9&32ezU~>_pnObL>A1bXiOH%iLb)k8qWK!@jzU+EJQbWb{p^u1j-KpX z=q+%Yx_P+aDVOVK4~)RwAv0J}luY^)J`q{F%+?&!!hHu^*ycv6*Oy`Qbe@eyxs z4Y^)hOnqT%=I568B&;GyZIBpZH``| zb-I`-w9sgpZGto?$bz!*4dk1nVm8Z&Fq0}}9NM&_I~l}lU`#9Q>wzwSF`j3 zNt^S7hn02-(_J#v9GrR6#a6)P_?2bU&ze2$;BBG~*K}moKBAlt@7%5%blhuxDrr{dm9&7vfB5gynuV`8oQyKNmabLrqT-ZYPOb2 zy>SP0hu?>ht~ZLr$X?e?`Jf$*OvZckc%R(5*$^!HfHiB64INS0Fi~rUlhYnls4eLk zOZ6hxs+x&g0hV-tQR&lw;QOPhFjtt91E{cgM-(Reyq0lbVW4K0n$ZW1V3dT&ILd~) zJGFgFwPBF1@9E+S?iA(gvgF{gZ3oZUq8w>0`UJy{nj`UrX>;6~F&9e=v_%D<(=cVQ z^UvqU;I&&nG)=T}PtHZd)t_t4@(C$q!0C_697cG}Yt+KpKY{4%e7iF*mn1}qOUFCc zos*97U^Eh#K4MmYKHNhUF`v?wC6gFyXv*=`N?-P!uP}BuO_Dr~n$Gm8#hhWzOGaNRiMOUPzh1iu z<~Sl#Td&pba_`#9OMN<)C7B}KycbU~bnRpa0nEczM@@h-9~366fr!k$!L!0~uxM3HI>VxQ2sq4XMO!*EtP6NS;UBKq&T z`9qESGwA)Mh7JWg!4HiNvN4HD-eXKqbM|+Qa0=T$$c8g)aBPFh1zA+FZA;TCMJXs> z>xd26sT}{(=jg0n*S?EMvHi}xY1y@G&_je$RIQawg0aPe<1yE5qtPtQyJKn+(3{<; zTgT>lQ{KdSq&l${Nr-0DiGo;Dvy7B4x1_MwG($!1EABq5cg-f`4&%v-(Xvb~@OGm{ zSPI$mh_PJwv9OFyRaA*W-JY~N6XW6JOE_p)h?Z%LBix*ecN{z&xGkZZfotMmidS}o zWYi*K1R?lpY`)x?n#P3lPeEB{Hi^)nd6g#8_`SnVIBpg#Fr=9>RKGsRJaFS$(l_Bl zR#AtVv!Gn%Y>n)6XIFBfKFJ!%Ui>0rmXKKl8*D~G~puSa7Oq1Bu!>>o$%6zTzgkP?8 zZG_2g^1|_}uSkm3*`z~eg5xenC$>;4<&Rs@ch8nE;H4LjT4W1%_e-Q09H)``Xz=dj z8>J+bQ{n`{dDtnrtkV&&2ncqHfssoo?^^#vP;NP1>1w{NS=AM81cMB?fhP4jIFwl) z>>O9jnZM7XlZu0j&GC^NED}5lHcN_4jxOdtG{@Bsd+no^uN&2|A1`?8Au3LoO;X4= zM9ue+aTHq3ZC)~Ha4Z+>I-BWNGeFZD1$6{_g+i44;5rYVjImSG30{abU<944yIwMI zz@1C~dYt`j(`ePO5p@l&gM!ar)*>!kjrHdchs9pZO=9}6yC-#rtXNWc$@#I9YHhMN zdrj-L(#{QVfP2EvO%D2M88}4rEmXotu^sOeD^F&mJny0}*z9PV9_ACbXAA7q$1d%Z z+mfMt*Nh~S)ADa-2^i7r^=r^5ckPk~dvlUSGX>PbnKz{zYvc=V(jSbwFrK#CDHa{? zbDp7$E?Us(L!A`?^`^5%W_= zeHmVrbtNefX}+C|=OTVuKm(1Q|n)quIZY1Hi2yHVfYH;R_LDLjpjTZapQo*C! z4ST1lX^wJR4PN1od|+0sP1_VCil7_l@KGlg$_JCG)Nx1X7tjZ9aNRVNt?fKGmk7l=lP{%Gt7^^WWG*)CLP)VM;$ zzdr3^k+ObsphCEuz{7Uz%>Cjf$LGB)QC=QCvUACNF`4r6A`kr%10Mu+pVE94AJ_HP zU{f_~a5f`sVKl{Z*Lkg@_{rxu&IW@S11WaLN3AJQW{91RCnP~**>O+z>=Ybv%3OoX@x}J8hn-xWobT4BntAK(Y33VL*~nAT;9@b8~LsI^v*$_m~X8h zserHPcC7J8+uo%jS@8Sa|~q4Lvh zcNNQJm_c5B73JFg7I!b7N!>&-ZwuR%z3SiSAH;->ejq<%PWph%Db|8R>T)kc!f*F> zH;#xX40oKN<7Bxhs6!hsltCt2SVI&~re#$meyiWC6~GP65AsW${jyi}RE(BUkT+Dy z13aB?FzZ%>+3mNlw}SibZy(!UZTUDr=OkfxQ~$cpv&RF6HLvM~-t9k_xy8*G{6{3>)LLmYcZoQKbIU-gle{8DuqK zn)^nvBD3SD>GQ<{bBEh!q*DwI>%GYGmOh@}VxY+X96l(qCjc)WI6S9bCvt{crzLt1 zvh+-TCru_7eVKNfz3P4FR`gv#-A_{3O9m|Xp~SD+x8u~Rgu}P8H(AWnL<(Il@leLL zJtafk`8V z=#mvmQhz@4#jKeNEcssjZP&&GqfR=e1jdH3KcUN*qfn4b+>qr8cWHViS_CeQ_pW#9=3&9WCo~ zt5V3^RN_%GSX{9^DZl4<%13kPrKG&MMAU~76MLxn7W#6*PJWN8A5S$7a+Ujy1hO8Z zN>F1r5YD;Iw23ByN?-j|ftHdlPJGO~XUEO5%?ms;oSJ93XO%xwefAl*ubaA)HcBm= z)_x&cCOg!_rZKQpo#UChY)p*e_0!cPwTo}kQlAvsox5Ym&gm9uGg00tJSiyI z8U^-73tf9wt3=K3%IxlZq){jPTkzLBw_PvwPo{6aLcPH4vI)C`20@>8ocbA^YD-N? zjRO0eSY%e{WW0V7MmF++vw2N^(7<7^g5RN?r!{9~8(zTygk{v0K?nSfWZs+(sSkxV zo3N*xf0#o1L^P$j+&*Oo+WMtsnMS#e(!-X^9j6hFS=};tqDUcwVA^@TGMDrQ@s{2M^{&?2P_MVs6&L zvt67Fx>){+egq*aKF}O(?3zT^EpX7)mq$MI#k*bA;sd7NWTw4expQmKcnMQ0=*<;@ z6y$bmn3P1^>v%kyt2FlflTy34k?>S?R%0ZU=C(K!8n!Nx2GkC1nw*paaoni~!yLJS zysA*Z<}X<;(=?;S!*iPc*ku13!wJu_n<8h1`cE*44Jda#X7da1ZmF9 z5AfQ*PLmOrnQzS9A%eXy5je z^trcpsNEBlP~cZS0KRQPRa)(KCV_ja-_B0=s+WXVO|$VnHS*<2U1Nva5rqzCEXPC~ z%fqnBq1sN}n!B9wU~0B%m6>6hYG@dnu4ea>U9KuZ#v-pF?km%ZE3m-F~s zTmPFDs@5VeRMC9KD8hL>&(iu%;5miRY2BDRi6e_|_r_RQie9`QA4rqm_Tu@27vfJD zEduI~zQ12itNdcx^~<)`_L==3+k*n%)Y2boy)}#F9pZg$n%qxgWo@fy;8M8wYWIvq zb+p~(0CG02%;KTP+Y7bu_sVS-#<+k$Cgi1_?f2ivX%^+Q&j-;ylv_Km$WB6eAB zA9*`IAC!FdI5xwr;h*Blj}LSjf0Ykh@Pv^iRc zuJq3?t1D@_q{bLCj&vw8naaP>E;stXL~_w~B1h+K8Zrj^OiBNJRm7BiA67V#Gs(j6atOHP4uOS5W~F#`5&l-kA<0fyt`slbb0vU{&3qa-1*+tBh~kxHN6c< z_%Kmql4rqmdb{AvZ;vw;Jg06vbPf!ACU(i@4F8bmC6riP7lcjWh?i%l>m$rWOG3oZ zB(FVq#7pe)jWuY>?28Gp<5_%5PIKE}zSX>6L3ic*rzrx3NJr!Y z@A}&M5%)ySK56%zopxk*gS~xQ&(gdVjSDroMwNwgm%Aw-=Wwh4L2>Y~-e!o%#XO#0G6Dldu>wzs&om-ck;piLQkN+vBd zpD*HyIrlU)Zxfb6{=|;h-TgH(g%x?$P-bh};ntpTpY>xR9(K`H=mDqTz z_d~$q-L8f7VUw~&e)OApPO;EK6G&%{0K-YKmOYaF)|NA`I07Q%1gX8r@=sFcpF7fT z>0dlM-<)x|D4=8JeF_RufMUuoduQR_I5%rk5U|Le5n9ha{$=v^Ln_)3FP?MG)y!?X zsuN>~!_s4Ht#SR&ER6!nt*naL9W2oEEnlu#;DlN2K=oI|BnJ@TWw*xP-){9sh7v@Y zK2JvTX-k+v?gvdJJL}~d*Hu2s*uHznQG)lbZtJ)~YQ)4$*Ok%2-4||>wb^yHp4OB1 zI6!>la}7&Z961Jy=eWVbsxHMH`;Dd*t^L6#GX1H<+gpKk8W_F!O%6Jra`Jk1U0{nR>r4vSm|7O~ky_?B{1Ht3A@P@oOn4?0 z?DwVb?}rp$?NYyAc33DV%ACEkvyM*%Rc~FG+k~KbRkxk@@s7ayEA}nm3EtMy2(50R zFY%eqhbu}kEILdsI=(a)FQ`Fj$A_PMv9@RYrd{D-efwtTL&!6^8#u2$v>|jC+3QaG z>1L=(cK5!hYVh~kLwIgW=PqjGzAg0JaF9Fr^ojRzkP&j!@k}$%5y)}-w|$7>UjM!Y z1N7)Ipep>OusyKq&ZDHxTl2)k93EIumNPD@rJdD2K1Zkjf$yTC{*1swtJ^yJbwpXY zsH;Wey%QR(sN-z;4m~9o_1?VJC)xYtby~SzA6e%F;@L!Y5AREVFq+WxOsH~KUvjQhYw64M$L8;Aoc3gh!)T+A z_2pZ49G)^3JI=&f&B0xYF1VWf{%K3^xskr<2g;i}QDndL(a%~lJ<=a5?m&dia8@1h^d-+==f0ZVEo$kxJz=Gy@jZ$z z7a!*L(+A`qj=BF}Msa&h9Mh*`?0xE;;jty>O6`!_L?q)x7ff8`MlEk&EV z6pOi6DtC%FR;1)|VpH4kIy_7V4cJAz8QK}62Xp@pndUIZUX2T;V_G)Cs)}g~{ zeZ+x;Hw+zzCmXb@w`LSPuagWL+B79**eaiIIzF)7Vf+B<$drDyi2?TM87o&v*=+zU*>{y2I0C z&vvom*-ItOr*nIE-kUqI%~py!R>WjDrB2MlRISiP@?#~}xhq2i4^yx{#Lu+hv74jx znCZ5%HkW?;ZPONKkHLeXhV6AtALMO%+!=hZtQiLI8#b!f_t&02B15flBwMBa`t;k` zE7O|&9fJ#8fsMXCcOx!LPIbQV@HdK?&pdw|!aASR-+rXMboe-}@?;z0Sx(MwG8gPb z--w91qWA3>Vt()y=QBrke#E$dos#w+Wrl_ zt9W1eb1XUQSOd3ebuMk2h`8Ceq^G?hy;Ou!Z7u=ZlCGYCj;XWw?)(+^_u#(dT zn8Jx|Z{y!QvNHd;e?cagU=tL#GvbsPC!zOKc-r-s*TP?It7MRKhjVg*FI!ayo+w-_ z`ylUqwfQ~Y-J9I+nlC3A-FNQD@89-C)tva~$kd`udhz(1BE^ne8`yqA^=ETzSJ+uW=Xqh(t?=j9PEUh3bN)%E&7sx43sb5m3+* zAFIriJ3ar^Cs{y9*rJOczu-5XTdICqsQKytsQ^>3V2*J3sMUvw?$6o2T22UB)Aq{ZCpI?7Xi~!e=f=@ZFy`kv^Tk zt@LouwacZU{qwhNpcQZ;%1@!aZ=n~Xn6}_Gvl5XV4>A_pwgT&o= zluJfvc#Us?gbce(-sm0TQv7UU0ACm**}ckh_IN@l3`3vyZctU!X4%I%X{8A{Jr~(j{jx zJ}Sit)`Dk7tz_uQMGujq>ZeYz@Qx5mPRGiHUb)kfZ){_~XU4Bta)^+^`Zf03n5(pF8!A@2t7 zUFF~x%GWt3Iqbaon>4fH10OG>7n9E`p7RC|4pFBK+vXKikgt%Na~5eUS}mKSo8Ppz zG&wNdowhXcj=SMp8CT=+@}o@AV^uXP`QdxWOlmsbgp9K^oN6VxuPv{(4{;n)FAXQ< zn9^NVoG^baVfRuYxw-0ysA3FFJKKx5pG$R+UXiEBySN^Us2_T1afod5RBB3hUwcDo z+oO{U^cs@6WfCnx-)bH-dCw%uqPqo{?u}Ge!{ITR7j-v^ThhhZKkQ@#XWP zUzZCk9?(HYd+thR@~UXif^NB?|Wc4;0y*I(l#lPq1UWT-6Ln`Vz^AEI(fGa0%x3r}Bl zs_d(A`PxtzQRowcof`7a3&=yF>aMm~c`@zRal71)oNqq(V(Yl8ZUq5@>0`!Nt8dKj_ZectEB$lsRNfa}@KxkgO4ZVk zIPH60pmuz>Y@oJV)-aRDXxkL2FL^I2cGu`>-3U2_{q>wR|LBholl13Bs`+g7_utxt Tf&ah|1kzI1RlBKT8}k1E>BGoP literal 0 HcmV?d00001 diff --git a/apidocs/images/img.svg b/apidocs/images/img.svg new file mode 100644 index 000000000..8d3ee48d7 --- /dev/null +++ b/apidocs/images/img.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + diff --git a/apidocs/index.md b/apidocs/index.md new file mode 100644 index 000000000..ab3e571d6 --- /dev/null +++ b/apidocs/index.md @@ -0,0 +1,14 @@ +# AWS Lambda Powertools for .NET API + +Welcome to the *AWS Lambda Powertools for .NET* API reference. This documentation contains the API details for all supported utilities. + +To get started use the `API` menu on the navigation bar, or search for specific keywords on the search box on top-right corner of your screen. + +> [!NOTE] +> Are you looking for documentation on how to use AWS Lambda Powertools for .NET utilities and code samples? +> +> 👉 [Here](https://awslabs.github.io/aws-lambda-powertools-dotnet/) is the perfect place to start. + +## Feedback + +If you have any feedback, create a new issue in the *AWS Lambda Powertools for .NET* repository on [GitHub](https://github.com/awslabs/aws-lambda-powertools-dotnet/issues). diff --git a/apidocs/templates/material/partials/head.tmpl.partial b/apidocs/templates/material/partials/head.tmpl.partial new file mode 100644 index 000000000..8d9c10c7e --- /dev/null +++ b/apidocs/templates/material/partials/head.tmpl.partial @@ -0,0 +1,21 @@ +{{!Copyright (c) Oscar Vasquez. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}} + + + + + {{#title}}{{title}}{{/title}}{{^title}}{{>partials/title}}{{/title}} {{#_appTitle}}| {{_appTitle}} {{/_appTitle}} + + + + {{#_description}}{{/_description}} + + + + + + + + {{#_noindex}}{{/_noindex}} + {{#_enableSearch}}{{/_enableSearch}} + {{#_enableNewTab}}{{/_enableNewTab}} + \ No newline at end of file diff --git a/apidocs/templates/material/styles/main.css b/apidocs/templates/material/styles/main.css new file mode 100644 index 000000000..1314f563b --- /dev/null +++ b/apidocs/templates/material/styles/main.css @@ -0,0 +1,310 @@ +/* COLOR VARIABLES*/ +:root { + --header-bg-color: #2094F3; + --header-ft-color: #fff; + --highlight-light: #5e92f3; + --highlight-dark: #003c8f; + --accent-dim: #e0e0e0; + --accent-super-dim: #f3f3f3; + --font-color: #34393e; + --card-box-shadow: 0 1px 2px 0 rgba(61, 65, 68, 0.06), 0 1px 3px 1px rgba(61, 65, 68, 0.16); + --search-box-shadow: 0 1px 2px 0 rgba(41, 45, 48, 0.36), 0 1px 3px 1px rgba(41, 45, 48, 0.46); + --transition: 350ms; +} + +body { + color: var(--font-color); + font-family: "Roboto", sans-serif; + line-height: 1.5; + font-size: 16px; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; + word-wrap: break-word; +} + +/* HIGHLIGHT COLOR */ + +button, +a { + color: var(--highlight-dark); + cursor: pointer; +} + +button:hover, +button:focus, +a:hover, +a:focus { + color: var(--highlight-light); + text-decoration: none; +} + +.toc .nav > li.active > a { + color: var(--highlight-dark); +} + +.toc .nav > li.active > a:hover, +.toc .nav > li.active > a:focus { + color: var(--highlight-light); +} + +.pagination > .active > a { + background-color: var(--header-bg-color); + border-color: var(--header-bg-color); +} + +.pagination > .active > a, +.pagination > .active > a:focus, +.pagination > .active > a:hover, +.pagination > .active > span, +.pagination > .active > span:focus, +.pagination > .active > span:hover { + background-color: var(--highlight-light); + border-color: var(--highlight-light); +} + +/* HEADINGS */ + +h1 { + font-weight: 600; + font-size: 32px; +} + +h2 { + font-weight: 600; + font-size: 24px; + line-height: 1.8; +} + +h3 { + font-weight: 600; + font-size: 20px; + line-height: 1.8; +} + +h5 { + font-size: 14px; + padding: 10px 0px; +} + +article h1, +article h2, +article h3, +article h4 { + margin-top: 35px; + margin-bottom: 15px; +} + +article h4 { + padding-bottom: 8px; + border-bottom: 2px solid #ddd; +} + +/* NAVBAR */ + +.navbar-brand { + margin-right: 20px; +} + +.navbar-brand > img { + color: var(--header-ft-color); +} + +.navbar { + border: none; + /* Both navbars use box-shadow */ + -webkit-box-shadow: var(--card-box-shadow); + -moz-box-shadow: var(--card-box-shadow); + box-shadow: var(--card-box-shadow); +} + +.subnav { + border-top: 1px solid #ddd; + background-color: #fff; +} + +.navbar-inverse { + background-color: var(--header-bg-color); + z-index: 100; +} + +.navbar-inverse .navbar-nav > li > a, +.navbar-inverse .navbar-text { + color: var(--header-ft-color); + background-color: var(--header-bg-color); + border-bottom: 3px solid transparent; + padding-bottom: 12px; + transition: 350ms; +} + +.navbar-inverse .navbar-nav > li > a:focus, +.navbar-inverse .navbar-nav > li > a:hover { + color: var(--header-ft-color); + background-color: var(--header-bg-color); + border-bottom: 3px solid white; +} + +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:focus, +.navbar-inverse .navbar-nav > .active > a:hover { + color: var(--header-ft-color); + background-color: var(--header-bg-color); + border-bottom: 3px solid white; +} + +.navbar-form .form-control { + border: 0; + border-radius: 4px; + box-shadow: var(--search-box-shadow); + transition:var(--transition); +} + +.navbar-form .form-control:hover { + background-color: var(--accent-dim); +} + +/* NAVBAR TOGGLED (small screens) */ + +.navbar-inverse .navbar-collapse, .navbar-inverse .navbar-form { + border: none; +} +.navbar-inverse .navbar-toggle { + box-shadow: var(--card-box-shadow); + border: none; +} + +.navbar-inverse .navbar-toggle:focus, +.navbar-inverse .navbar-toggle:hover { + background-color: var(--highlight-dark); +} + +/* SIDEBAR */ + +.toc .level1 > li { + font-weight: 400; +} + +.toc .nav > li > a { + color: var(--font-color); +} + +.sidefilter { + background-color: #fff; + border-left: none; + border-right: none; +} + +.sidefilter { + background-color: #fff; + border-left: none; + border-right: none; +} + +.toc-filter { + padding: 5px; + margin: 0; + box-shadow: var(--card-box-shadow); + transition:var(--transition); +} + +.toc-filter:hover { + background-color: var(--accent-super-dim); +} + +.toc-filter > input { + border: none; + background-color: inherit; + transition: inherit; +} + +.toc-filter > .filter-icon { + display: none; +} + +.sidetoc > .toc { + background-color: #fff; + overflow-x: hidden; +} + +.sidetoc { + background-color: #fff; + border: none; +} + +/* ALERTS */ + +.alert { + padding: 0px 0px 5px 0px; + color: inherit; + background-color: inherit; + border: none; + box-shadow: var(--card-box-shadow); +} + +.alert > p { + margin-bottom: 0; + padding: 5px 10px; +} + +.alert > ul { + margin-bottom: 0; + padding: 5px 40px; +} + +.alert > h5 { + padding: 10px 15px; + margin-top: 0; + text-transform: uppercase; + font-weight: bold; + border-radius: 4px 4px 0 0; +} + +.alert-info > h5 { + color: #1976d2; + border-bottom: 4px solid #1976d2; + background-color: #e3f2fd; +} + +.alert-warning > h5 { + color: #f57f17; + border-bottom: 4px solid #f57f17; + background-color: #fff3e0; +} + +.alert-danger > h5 { + color: #d32f2f; + border-bottom: 4px solid #d32f2f; + background-color: #ffebee; +} + +/* CODE HIGHLIGHT */ +pre { + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + word-break: break-all; + word-wrap: break-word; + background-color: #fffaef; + border-radius: 4px; + border: none; + box-shadow: var(--card-box-shadow); +} + +/* STYLE FOR IMAGES */ + +.article .small-image { + margin-top: 15px; + box-shadow: var(--card-box-shadow); + max-width: 350px; +} + +.article .medium-image { + margin-top: 15px; + box-shadow: var(--card-box-shadow); + max-width: 550px; +} + +.article .large-image { + margin-top: 15px; + box-shadow: var(--card-box-shadow); + max-width: 700px; +} \ No newline at end of file diff --git a/apidocs/toc.yml b/apidocs/toc.yml new file mode 100644 index 000000000..2ce0a61f3 --- /dev/null +++ b/apidocs/toc.yml @@ -0,0 +1,3 @@ +- name: API + href: api/ + homepage: api/index.md diff --git a/buildtools/NuGet.Config b/buildtools/NuGet.Config new file mode 100644 index 000000000..7ca4b2b80 --- /dev/null +++ b/buildtools/NuGet.Config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/buildtools/build.proj b/buildtools/build.proj new file mode 100644 index 000000000..8e0a9718b --- /dev/null +++ b/buildtools/build.proj @@ -0,0 +1,54 @@ + + + + + + + + Release + dotnet pack --no-build -c $(Configuration) -o $(MSBuildThisFileDirectory)/../deploy/nuget-packages + dotnet pack --no-build -o $(MSBuildThisFileDirectory)/../deploy/nuget-packages + false + + + + + + + + + + + + + + + + + + + + + dotnet test -c $(Configuration) + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/buildtools/common.props b/buildtools/common.props new file mode 100644 index 000000000..8b94a290b --- /dev/null +++ b/buildtools/common.props @@ -0,0 +1,25 @@ + + + + Amazon Web Services + + Library + false + + true + + Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. + https://github.com/awslabs/aws-lambda-powertools-dotnet + Apache-2.0 + + + false + false + false + false + false + false + false + + + \ No newline at end of file diff --git a/buildtools/nuget.exe b/buildtools/nuget.exe new file mode 100644 index 0000000000000000000000000000000000000000..1a67d80c9799c97050a7dd09e14f3ce6575362fb GIT binary patch literal 7034784 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≤W?{}8=mMte8ptk#se5}< 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

;23{;)(9>7BRx=D})s*JEX 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