Skip to content

Instantly share code, notes, and snippets.

Evan Tahler evantahler

Block or report user

Report or block evantahler

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@evantahler
evantahler / vpn-reconnect.scpt
Created Aug 9, 2019
Keep that VPN Connected (OSX)
View vpn-reconnect.scpt
on idle
tell application "System Events"
tell current location of network preferences
set VPNService to the service "vpn-evan" -- replace this with the name of your VPN connection
if VPNService is not null then
if current configuration of VPNService is not connected then
beep
beep
beep
connect VPNService
View require-shim.js
// in your action
{formatter} = requrie('../helper.js')
// in helper.js
const path = require('path')
exports.formatter = require(path.join(__dirname, 'path', 'that', 'is', 'really', 'long', 'formatter.js'))
@evantahler
evantahler / test.js
Created Mar 28, 2018
Testing Node.JS browser apps with Selenium, Async/Await, and Jest
View test.js
/**
* @jest-environment jest-environment-webdriver
*/
const url = 'https://www.actionherojs.com'
describe('www.actionherojs.com#index', () => {
test('it renders', async () => {
await browser.get(url)
const title = await browser.findElement(by.tagName('h2')).getText()
@evantahler
evantahler / build.js
Created Nov 20, 2017
Using NEXE to compile and ActionHero project
View build.js
const nexe = require('nexe')
nexe.compile({
output: 'build',
input: `${__dirname}/index.js`,
build: true,
silent: false
})
@evantahler
evantahler / client.js
Last active Nov 14, 2017
actionhero and next
View client.js
require('isomorphic-fetch') // ensure fech is in-scope, even on the server
let hosts = {
dev: 'http://localhost:8080',
production: 'https://api.scoreboard.guru'
}
export default class Client {
apiEndpoint () {
if (process && process.title === 'node') {
@evantahler
evantahler / v17.js
Last active Oct 7, 2017
V17 to V18 cache ActionHero action
View v17.js
exports.cacheTest = {
name: 'cacheTest',
description: 'I will test the internal cache functions of the API',
inputs: {
key: {
required: true,
formatter: function (s) { return String(s) }
},
value: {
required: true,
@evantahler
evantahler / code.js
Created Sep 28, 2017
util.promisify
View code.js
const {promisify} = require('util')
async sleep (time) {
return promisify(setTimeout)(time)
}
@evantahler
evantahler / index.js
Last active Sep 25, 2017
modifying requires
View index.js
exports.api = {}
exports.initializer = require('./initializer.js')
exports.main = require('./main.js') // comment me out and everything is fine
@evantahler
evantahler / buildSitemap.js
Last active Jul 20, 2019
35 lines to build a sitemap for next.js projects
View buildSitemap.js
#! /usr/bin/env node
// I am ./bin/buildSitemap.js
const path = require('path')
const glob = require('glob')
const fs = require('fs')
const SITE_ROOT = process.env.SITE_ROOT || 'https://www.actionherojs.com'
const SOURCE = process.env.SOURCE || path.join(__dirname, '..', 'pages', '/**/*.js')
const DESTINATION = process.env.DESTINATION || path.join(__dirname, '..', 'static', 'sitemap.xml')
@evantahler
evantahler / asyncAwait.js
Last active Mar 23, 2017
Actionhero async actions
View asyncAwait.js
exports.asyncAwait = {
name: 'asyncAwait',
description: 'I am an asyncAwait action',
run: async function (api, data, next) {
let startTime = new Date().getTime()
let sleep = 1000
let timerPromise = new Promise((resolve, reject) => { setTimeout(resolve, sleep) })
try {
You can’t perform that action at this time.