In the root of your project, add .gitlab-ci.yml
with the configuration below.
image: node:latest
stages:
import formidable from "formidable"; | |
export default function formData(request) { | |
const form = formidable({ multiples: true }); | |
return new Promise((resolve, reject) => { | |
form.parse(request, (err, fields, files) => { | |
if (err) { | |
reject(err); | |
return; |
import localforage from 'localforage'; | |
import { Auth } from 'aws-amplify'; | |
export class LocalForageStorage { | |
syncPromise = null; | |
memoryStore = {}; | |
asyncStore = localforage.createInstance({ | |
name: 'amplifyStore' | |
}); |
// https://piccalil.li/blog/a-modern-css-reset | |
/* Box sizing rules */ | |
*, | |
*::before, | |
*::after { | |
box-sizing: border-box; | |
} | |
/* Remove default margin */ |
You will need one user who is the Admin and will run the Local game, and all Users will connect to the Admin's network. Instructions for each user - Admin and User - are below.
Firstly, Create React App is good. But it's a very rigid CLI, primarily designed for projects that require very little to no configuration. This makes it great for beginners and simple projects but unfortunately, this means that it's pretty non-extensible. Despite the involvement from big names and a ton of great devs, it has left me wanting a much better developer experience with a lot more polish when it comes to hot reloading, babel configuration, webpack configuration, etc. It's definitely simple and good, but not amazing.
Now, compare that experience to Next.js which for starters has a much larger team behind it provided by a world-class company (Vercel) who are all financially dedicated to making it the best DX you could imagine to build any React application. Next.js is the 💣-diggity. It has amazing docs, great support, can grow with your requirements into SSR or static site generation, etc.
const cache = {} | |
export default function useGlobalMemo (key, fn, deps) { | |
if (!cache[key]) { | |
cache[key] = { | |
subs: 0, | |
deps, | |
value: fn(), | |
} |
# MIT No Attribution | |
# | |
# Copyright 2022 Ben Kehoe | |
# | |
# 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. | |
# |
NAME TITLE | |
abusiveexperiencereport.googleapis.com Abusive Experience Report API | |
acceleratedmobilepageurl.googleapis.com Accelerated Mobile Pages (AMP) URL API | |
accessapproval.googleapis.com Access Approval API | |
accesscontextmanager.googleapis.com Access Context Manager API | |
actions.googleapis.com Actions API | |
adexchangebuyer-json.googleapis.com Ad Exchange Buyer API | |
adexchangebuyer.googleapis.com Ad Exchange Buyer API II | |
adexchangeseller.googleapis.com Ad Exchange Seller API | |
adexperiencereport.googleapis.com Ad Experience Report API |
export default (function create(options = {}) { | |
const client = { | |
headers: options.headers || {}, | |
create | |
}; | |
const events = {}; | |
client.emit = (type, e) => { | |
events[type] && | |
events[type].slice().map(fn => { |