Skip to content

Instantly share code, notes, and snippets.

Avatar
💻
Writing Code

Josh Thomas jthoms1

💻
Writing Code
View GitHub Profile
View ios_setup.sh
# Type a script or drag a script file from your workspace to insert # Type a script or drag a script file from your workspace to insert its path.
# SRCROOT
# TARGET_NAME
# BUILT_PRODUCTS_DIR
APP_NAME="shopwebapp"
EMBEDDED_DIR="${BUILT_PRODUCTS_DIR}/${TARGET_NAME}.app/portals"
EMBEDDED_APP="${SRCROOT}/../../web/build"
ZIP_FILE="${APP_NAME}.zip"
mkdir "${EMBEDDED_DIR}"
View test.sh
# Instructions on how to download an App Bundle from AppFlow
#
#
# Setup auth first: https://ionic.io/docs/appflow/cli/overview#authentication
#
# Environment variables
#
# APP_ID (IE 186b544f)
# CHANNEL (IE production)
# PORTAL_NAME (IE checkout)
View index.ts
import ShopAPI from './ShopAPIPlugin';
import Portals from '@ionic/portals';
const App: React.FC<InitialContext> = () => {
const [sessionInfo, setSession] = useState(null);
const [startingRoute, setInitialRoute] = useState(null);
useEffect(() => {
const [context, sessionInfo] = await Promise.all([
Portals.getInitialContext(),
@jthoms1
jthoms1 / styles.d.ts
Created Jul 21, 2020
Much better way of using tokens in Styled Components
View styles.d.ts
import { ThemeType } from 'some/path/to/my/tokens';
import 'styled-components';
declare module 'styled-components' {
export interface DefaultTheme extends ThemeType {}
}
View keybase.md

Keybase proof

I hereby claim:

  • I am jthoms1 on github.
  • I am jthoms1 (https://keybase.io/jthoms1) on keybase.
  • I have a public key whose fingerprint is 43F1 2702 C01E 2E33 6B63 151A E50F 4DE2 8157 8CE6

To claim this, I am signing this object:

@jthoms1
jthoms1 / waterfall.ts
Created Sep 4, 2018
Simple promise waterfall.
View waterfall.ts
function waterFallExec<T, S>(listOfItems: T[], func: (item: T) => Promise<S>): Promise<S[]> {
const results: S[] = []
return listOfItems.reduce(function (lastPromise, item) {
return lastPromise.then(function (res) {
return func(item).then(function (result) {
res.push(result);
return res;
});
});
@jthoms1
jthoms1 / pit.md
Last active Aug 7, 2018
Pit of Success
View pit.md

The Pit of Success: in stark contrast to a summit, a peak, or a journey across a desert to find victory through many trials and surprises, we want our customers to simply fall into winning practices by using our platform and frameworks. To the extent that we make it easy to get into trouble we fail.

Rico Mariani, MS Research MindSwap Oct 2003.


I had a chance hear Rico Mariani do

View components.d.ts
/**
* This is an autogenerated file created by the Stencil compiler.
* It contains typing information for all components that exist in this project.
*/
/* tslint:disable */
import { JSXElements } from '@stencil/core';
import '@stencil/router';
import '@stencil/state-tunnel';
@jthoms1
jthoms1 / transform-test.ts
Created Sep 20, 2017
Typescript transform test tool
View transform-test.ts
function transformSourceFile(sourceText: string, transformers: ts.TransformerFactory<ts.SourceFile>[]) {
const transformed = ts.transform(ts.createSourceFile('source.ts', sourceText, ts.ScriptTarget.ES2015), transformers);
const printer = ts.createPrinter({ newLine: ts.NewLineKind.CarriageReturnLineFeed }, {
onEmitNode: transformed.emitNodeWithNotification,
substituteNode: transformed.substituteNode
});
const result = printer.printBundle(ts.createBundle(transformed.transformed));
transformed.dispose();
return result;
}
@jthoms1
jthoms1 / things.js
Created Nov 10, 2016
array chaining
View things.js
let things = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let other = things
.map(function(num) { return num + 1; }) // creates a new array that contains [2, 3, 4, 5, 6, 7, 8, 9, 10, 11] and returns it
.filter(function(num) { return num % 3 === 0; }) // reduces the array contents so that it contains [3, 6, 9] and returns it
.join(' -> '); // joins the values and returns a string '3 -> 6 -> 9'
// This could just as easily be written as follows
let a = things.map(function(num) { return num + 1; });