Skip to content

Instantly share code, notes, and snippets.

View arleighdickerson's full-sized avatar
🇺🇲
🏴󠁵󠁳󠁯󠁨󠁿 Always has been

Arleigh Dickerson arleighdickerson

🇺🇲
🏴󠁵󠁳󠁯󠁨󠁿 Always has been
View GitHub Profile
@arleighdickerson
arleighdickerson / inversify-provider.tsx
Created December 12, 2024 17:52
inversify-provider.tsx
import { AsyncContainerModule, Container as ContainerImpl, ContainerModule } from 'inversify';
import { Provider as IocProvider } from 'inversify-react';
import _ from 'lodash';
import { PropsWithChildren, useEffect, useState } from 'react';
const context = require.context('src', true, /\.config\.ts$|\.config\.tsx$|\.saga\.ts|\.events\.ts$/, 'lazy-once');
const keys = context.keys();
const getApplicationContext = _.once(async () => {
const container = new ContainerImpl({ defaultScope: 'Request' });
package com.teletapper.actuator;
import com.teletapper.util.SecurityUtils;
import lombok.Data;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import lombok.val;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
import org.springframework.boot.actuate.endpoint.jmx.annotation.JmxEndpoint;
import { Channel, NotUndefined } from '@redux-saga/types';
import { Buffer, channel, EventChannel, Saga } from 'redux-saga';
import * as effects from 'redux-saga/effects';
import _ from 'lodash';
import { cast, isInteger } from 'src/util/invariant';
export type THandleRequest<T extends NotUndefined> = Saga<[Channel<T>]>;
export type TCreatePipe<T extends NotUndefined> = Saga<[EventChannel<T>, Saga<[Channel<T>]>]>;
export interface CreatePipeOptions {
@arleighdickerson
arleighdickerson / uuid-util.ts
Created March 11, 2024 19:48
Utilities for uuids on the client side.
import _ from 'lodash';
export namespace uuidUtil {
const regexExp = /^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/gi;
export function isValidUuid(s: string) {
if (!_.isString(s)) {
return false;
}
if (_.isEmpty(s)) {
@arleighdickerson
arleighdickerson / url-util.ts
Created March 11, 2024 19:46
Utilities for working with preact-router
const { exec, getCurrentUrl } = require('preact-router');
export namespace urlUtil {
export const getUrlParameter = (name: string, location: Pick<Location, 'pathname' | 'search'>): string | null => {
if (typeof window === 'undefined') {
return null; // shim
}
const a = 'http://localhost' /* <-- dummy string for parsing */ + location.pathname + location.search;
const url = new URL(a);
return url.searchParams.has(name) ? url.searchParams.get(name) : null;
@arleighdickerson
arleighdickerson / AttributeChangeEmitter.java
Created February 28, 2024 18:28
A WebSocketSessionDecorator to listen for attribute changes
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
import org.springframework.aop.framework.ProxyFactory;
import org.springframework.lang.NonNull;
import org.springframework.lang.Nullable;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.WebSocketSessionDecorator;
import java.util.Map;
import java.util.Objects;
@arleighdickerson
arleighdickerson / preact-layout.tsx
Last active August 19, 2024 23:50
Preact Layout -- Patched for V10
// @ts-nocheck
// ¯\_(ツ)_/¯
import { ComponentChildren, ComponentType, Context, h, toChildArray } from 'preact';
function getChildren(node) {
return ((node || {}).props || {}).children;
}
function getComponentType(node) {
return (node || {}).type;
import { Component, ReactNode } from 'react';
interface Props {
loading: ReactNode;
ready: PromiseLike<any>;
beforeMount?: () => any;
afterLift?: () => any;
}
interface State {
import { CSSProperties, PropsWithChildren } from 'react';
import * as colors from 'tailwindcss/colors';
export interface ContentProps {
header?: string;
message?: string;
}
export enum Variant {
SPINNING,
import { validate } from 'validate.js';
import _ from 'lodash';
interface AnyObject {
[key: string]: any;
}
type ValidationErrors = AnyObject | undefined;
export interface ApiError {