Skip to content

Instantly share code, notes, and snippets.

View mikaelvesavuori's full-sized avatar

Mikael Vesavuori mikaelvesavuori

View GitHub Profile
@mikaelvesavuori
mikaelvesavuori / getFlags.ts
Created November 10, 2022 12:25
Get flags from AWS AppConfig. Example for TypeScript and Serverless Framework.
import fetch from 'node-fetch';
/**
* @description Get flags from AWS AppConfig.
*
* Flags and configuration is handled manually in the GUI.
*
* Environment variables and such config are still done in `serverless.yml` as usual.
*
* @see https://aws.amazon.com/blogs/mt/using-aws-appconfig-feature-flags/
@mikaelvesavuori
mikaelvesavuori / UpdatedMermaidComponent.tsx
Last active November 4, 2022 14:21
Configurations and scripts for CI-powered EventCatalog.
import React, { useEffect } from 'react';
import mermaid from 'mermaid';
import { Service, Event } from '@eventcatalog/types';
import { buildMermaidFlowChartForEvent, buildMermaidFlowChartForService } from '@/lib/graphs';
mermaid.initialize({
startOnLoad: true,
theme: 'forest',
securityLevel: 'loose',
flowchart: {
@mikaelvesavuori
mikaelvesavuori / User.UserManagement.UserService.json
Created November 4, 2022 12:20
AsyncAPI demo for UserService
{
"asyncapi": "2.4.0",
"info": {
"title": "User Service",
"version": "1.0.0",
"contact": {
"name": "Sam Person",
"url": "https://acmecorp.com/docs#owner",
"email": "[email protected]"
},
@mikaelvesavuori
mikaelvesavuori / Greetings.Hospitality.GreetService.json
Created November 4, 2022 12:19
AsyncAPI demo for GreetService
{
"asyncapi": "2.4.0",
"info": {
"title": "Greet Service",
"version": "1.0.0",
"contact": {
"name": "John Doe",
"url": "https://acmecorp.com/docs#owner",
"email": "[email protected]"
},
@mikaelvesavuori
mikaelvesavuori / basic-generic-example.ts
Created October 30, 2022 14:58
Basic example of a generic type in TypeScript.
// See: https://www.digitalocean.com/community/tutorials/how-to-use-generics-in-typescript
type StarWarsApiResponse = {
name: string;
rotation_period: string;
orbital_period: string;
diameter: string;
climate: string;
gravity: string;
terrain: string;
@mikaelvesavuori
mikaelvesavuori / exclude.ts
Created October 30, 2022 14:35
TypeScript utility type demos.
type Dog = {
name: string;
race: RacesLimitedList;
};
type RacesFullList = 'Alsatian' | 'Pomeranian';
type RacesLimitedList = Exclude<RacesFullList, 'Pomeranian'>;
const dog: Dog = {
name: 'Sam',
@mikaelvesavuori
mikaelvesavuori / assertions.ts
Last active October 31, 2022 08:28
Minimalist integration testing example for Node/JS/TypeScript.
export const assertions = [
{
name: 'It should DO SOMETHING',
payload: {
method: 'POST',
path: 'DoSomething',
headers: {
'X-Client-Version': 1
},
body: {
@mikaelvesavuori
mikaelvesavuori / DomainEventPublisherService.ts
Created October 26, 2022 17:42
Example of a Domain Event publisher service and an abstracted Event Emitter working together.
import {
Event,
EventEmitter,
DomainEventPublisher,
DomainEventPublisherDependencies
} from './interfaces';
/**
* @description Service to publish domain events.
*
@mikaelvesavuori
mikaelvesavuori / aws-emf.ts
Last active October 26, 2022 05:30
Example of emitting an AWS Embedded Metric Format log using plain console.log() in AWS Lambda.
const emfLog = {
message: '[Embedded Metric]',
status_code: `200`,
status_code_count: 1,
_aws: {
Timestamp: Date.now(),
CloudWatchMetrics: [
{
Namespace: 'AWS EMF demo: Status codes',
Dimensions: [['status_code']],