Skip to content

Instantly share code, notes, and snippets.

View brygrill's full-sized avatar

Bryan Grill brygrill

View GitHub Profile
@brygrill
brygrill / ci.yml
Created May 20, 2020 16:39
Github Actions to lint, test, and build app
name: CI
on: [push]
jobs:
build:
name: Build
runs-on: ubuntu-18.04
strategy:
matrix:
@brygrill
brygrill / eslintrc.js
Last active April 2, 2021 16:07
ESLint config with TypeScript, AirBnb, Jest, and Prettier
module.exports = {
extends: [
'airbnb-typescript',
'airbnb/hooks',
'plugin:@typescript-eslint/recommended',
'plugin:jest/recommended',
'plugin:prettier/recommended'
],
plugins: ['react', '@typescript-eslint', 'jest'],
env: {
import axios from 'axios';
const userItemsBase = 'https://www.arcgis.com/sharing/rest/content/users';
export const fetchUserContent = async (token, username) => {
const { data } = await axios.get(`${userItemsBase}/${username}`, {
params: {
token,
f: 'json',
},
const App = () => {
// state
const [authed, setAuthed] = useState(false);
const [token, setToken] = useState(null);
const [user, setUser] = useState(null);
// functions
const removeHash = () => {
window.history.pushState('', document.title, window.location.pathname);
};
// App.js
const App = () => {
// state
const [authed, setAuthed] = useState(false);
// render
// if not authed display signin page
if (!authed) {
return <SignIn />;
// mock data
const data = [
{ vehicleid: 1, latitude: 40.1, longitude: -76.5 },
{ vehicleid: 2, latitude: 40.2, longitude: -76.6 },
{ vehicleid: 3, latitude: 40.3, longitude: -76.7 }
]
const resolvers = {
Coordinates: new GraphQLScalarType({
name: 'Coordinates',
new GraphQLScalarType({
// Thanks:
// https://github.com/ghengeveld/graphql-geojson/blob/master/index.js#L46
// https://github.com/apollographql/graphql-tools/blob/master/docs/source/scalars.md
name: 'Coordinates',
description: 'A set of coordinates. x, y',
parseValue(value) {
return value;
},
serialize(value) {
const typeDefs = `
scalar Coordinates
type PointGeometry {
type: String!
coordinates: Coordinates!
}
type PointProps {
id: Int!
@brygrill
brygrill / standard-http-function.js
Last active June 23, 2017 19:15
Deploying a GraphQL Server with Firebase Functions
// via https://github.com/firebase/functions-samples/blob/master/quickstarts/big-ben/functions/index.js
const functions = require('firebase-functions');
// endpoint would be the <the url firebase gives you>/bigben
exports.bigben = functions.https.onRequest((req, res) => {
// you have access to standard express req and res inside function
const hours = (new Date().getHours() % 12) + 1; // london is UTC + 1hr;
res.status(200).send(`<!doctype html>
<head>
<title>Time</title>