Skip to content

Instantly share code, notes, and snippets.

View jgcmarins's full-sized avatar

João Marins jgcmarins

View GitHub Profile
@jgcmarins
jgcmarins / setupSubscription.tsx
Created March 17, 2020 13:45 — forked from sibelius/setupSubscription.tsx
basic setupSubscription for Relay Environment
import { SubscribeFunction, Observable } from 'relay-runtime';
import { SubscriptionClient } from 'subscriptions-transport-ws';
import config from '../config';
import { getToken } from '../components/auth/security';
export const setupSubscription: SubscribeFunction = (request, variables) => {
const query = request.text;
const authorization = getToken();
@jgcmarins
jgcmarins / outputExample
Created March 31, 2020 16:40 — forked from sibelius/outputExample
traceResolver higher order function to wrap your GraphQL Resolvers
{
version: 1,
startTime: '2020-03-31T15:25:05.747Z',
endTime: '2020-03-31T15:25:05.747Z',
duration: 3130,
execution: {
resolvers: [
{
path: [ 'posts', 'analytics', 'quantity' ],
parentType: 'User',
@jgcmarins
jgcmarins / babel.config.js
Created April 24, 2020 23:37
Webpack configs for Node.js backends to run both locally and on AWS Lambda
module.exports = {
presets: [
'@babel/preset-react',
[
'@babel/preset-env',
{
targets: {
node: 'current',
},
},
@jgcmarins
jgcmarins / webpack.config.js
Created April 28, 2020 13:20 — forked from sibelius/webpack.config.js
run node files using webpack
const path = require('path');
const nodeExternals = require('webpack-node-externals');
const cwd = process.cwd();
export const outputPath = path.join(cwd, '.webpack');
export const outputFilename = 'bundle.js';
export default {
@jgcmarins
jgcmarins / FeatureFlag.tsx
Created May 6, 2020 14:36 — forked from sibelius/FeatureFlag.tsx
Basic Feature Flag implementation using React.Context
import React, { useContext, useCallback } from 'react';
export const FeatureFlagContext = React.createContext<string[]>([]);
export const useFeatureFlag = () => {
const features = useContext<string[]>(FeatureFlagContext);
const hasFeature = useCallback(
(feature: string) => {
return features.includes(feature);
import rules from "../rbac-rules";
const check = (rules, role, action, data) => {
const permissions = rules[role];
if (!permissions) {
// role is not present in the rules
return false;
}
const staticPermissions = permissions.static;
- name: Restore yarn workspaces
id: yarn-cache
uses: actions/cache@master
with:
path: |
node_modules
*/*/node_modules
key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }}
- name: Install dependencies
if: steps.yarn-cache.outputs.cache-hit != 'true'
@jgcmarins
jgcmarins / useSWReg.tsx
Created May 26, 2020 12:32 — forked from sibelius/useSWReg.tsx
use Service Worker Registration hook
import firebase from 'firebase/app';
import 'firebase/messaging';
import { useEffect, useRef } from 'react';
import config from '../config';
import firebaseConfig from './firebaseConfig';
import { PushTokenAddMutation } from './__generated__/PushTokenAddMutation.graphql';
import { PushTokenAdd, USER_PUSHENDPOINT_TYPE } from './PushTokenAddMutation';
@jgcmarins
jgcmarins / RazzleStack.ts
Last active January 20, 2021 19:21
Deploy Razzle Apps to AWS Lambda using AWS CDK (https://aws.amazon.com/cdk/)
import * as CDK from '@aws-cdk/core';
import * as S3 from '@aws-cdk/aws-s3';
import * as S3Deployment from '@aws-cdk/aws-s3-deployment';
import * as Lambda from '@aws-cdk/aws-lambda';
import * as APIGateway from '@aws-cdk/aws-apigateway';
import * as SSM from '@aws-cdk/aws-ssm';
import * as SecretsManager from '@aws-cdk/aws-secretsmanager';
import { ConfigProps, getParam, ModeStack } from './helpers';
CREATE OR REPLACE FUNCTION notify_rows_changes()
RETURNS trigger AS $$
DECLARE
record JSON;
BEGIN
record := row_to_json(CASE TG_OP
WHEN 'INSERT' THEN NEW
WHEN 'UPDATE' THEN NEW
ELSE OLD
END);