테스팅시
beforeAll(()=>{
await container.clearInstances()
container.register<TypeDB>('DB_CONFIG', {
useFactory: instanceCachingFactory(() => new TypeDB()),
})
})
테스팅시
beforeAll(()=>{
await container.clearInstances()
container.register<TypeDB>('DB_CONFIG', {
useFactory: instanceCachingFactory(() => new TypeDB()),
})
})
import { AbstractControl, FormArray, FormGroup } from '@angular/forms'; | |
import { map, toPairs, fromPairs, differenceWith, isEqual, isNull, isUndefined } from 'lodash'; | |
import { Observable, OperatorFunction, defer, empty, of, merge, pipe } from 'rxjs'; | |
import { distinctUntilChanged, filter, map, shareReplay, pairwise } from 'rxjs/operators'; | |
/** | |
* Convenience RxJS operator that filters out undefined & null and modifies the downstream type | |
* appropriately. | |
*/ | |
export function exists<T>(): OperatorFunction<T | undefined | null, T> { |
import { | |
DynamoDBClient, | |
PutItemCommand, | |
GetItemCommand, | |
UpdateItemCommand, | |
DeleteItemCommand, | |
} from '@aws-sdk/client-dynamodb'; | |
import { | |
marshall, | |
unmarshall |
import { APIGatewayProxyEventV2, APIGatewayProxyResultV2 } from "aws-lambda"; | |
import { DynamoDB, PutItemInput } from '@aws-sdk/client-dynamodb' | |
import { marshall } from '@aws-sdk/util-dynamodb' | |
import { v4 as uuid } from 'uuid' | |
interface TodoInput { | |
id?: string | |
title: string | |
done: boolean | |
} |
const raw = [ | |
{a:'a', b:'b', c:'c', max: 10, min: 2 }, | |
{a:'a', b:'b', c:'c', max: 10, min: 2 }, | |
{a:'a', b:'b', c:'c', max: 10, min: 3 }, | |
{a:'a', b:'b', c:'c', max: 10, min: 4 }, | |
{a:'a', b:'b', c:'c', max: 10, min: 5 }, | |
{a:'a', b:'b', c:'c', max: 10, min: 6 }, | |
{a:'a', b:'b', c:'c', max: 10, min: 7 }, | |
] |
const initialData = { | |
servers: [ | |
{ | |
url: 'https://1.example.com/', | |
title: 'Server 1', | |
online: null, | |
}, | |
{ | |
url: 'https://2.example.com/', | |
title: 'Server 2', |
A quick cheatsheet of useful snippet for Flutter
A widget is the basic type of controller in Flutter Material.
There are two type of basic Widget we can extend our classes: StatefulWidget
or StatelessWidget
.
StatefulWidget are all the widget that interally have a dynamic value that can change during usage. It can receive an input value in the constructor or reference to functions. You need to create two classes like:
// Get AWS Congito access token using node-fetch and axios | |
const axios = require('axios'); | |
const fetch = require('node-fetch'); | |
const url = 'https://REPLACE_ME.auth.ap-southeast-2.amazoncognito.com/oauth2/token'; | |
const clientId = 'REPLACE_ME'; | |
const clientSecret = 'REPLACE_ME'; | |
const body = `client_id=${clientId}&client_secret=${clientSecret}&grant_type=client_credentials` | |
// with node-fetch |