Skip to content

Instantly share code, notes, and snippets.

View hediet's full-sized avatar

Henning Dieterichs hediet

View GitHub Profile
@hediet
hediet / rust.rs
Created March 9, 2021 18:16
Rust Sqlx Crazyness
use std::{marker::PhantomData, path::PathBuf};
use sqlx::{sqlite::SqliteConnectOptions, Error};
use sqlx::{Connection, Sqlite, Transaction};
use sqlx::{Executor, SqliteConnection};
pub struct DbFactory {
conn: SqliteConnection,
}
@hediet
hediet / main.ts
Created June 15, 2020 17:35
Dynamic Translation
/**
* Renders a translation that cannot be extracted statically.
* Avoid using this component as much as possible!
*/
export class TransMsgDynamic extends React.Component<{
keyAndDefaultTranslation: string;
/**
* A static id that represents the pool of all possible keys.
* If this id is not used in the code base anymore,
@hediet
hediet / demo.md
Last active June 15, 2020 06:54
Avoid String Ids In Dependency Injection

Avoid String Ids In Dependency Injection

Option 1: String Ids

const myService = "MyService";

interface MyService {
    doSth(): void;
}
@hediet
hediet / types.ts
Created June 9, 2020 14:48
JSON Schema TypeScript Types
export type JsonSchema =
| NumericJsonSchema
| StringJsonSchema
| ArrayJsonSchema
| ObjectJsonSchema
| JsonSchemaReference;
export interface JsonSchemaReference {
$ref: string;
}
@hediet
hediet / feedback.md
Last active May 11, 2020 09:49
Binary Custom Editor API Feedback

Blocker

This issue is a blocker for the .drawio.png feature. This is my context. I hope something can be done there ;)

Confusion Points

  1. Default Generic Type Argument

I have to admit, I failed to recognize that CustomEditorProvider is generic when I exploratively implemented my first prototype.

@hediet
hediet / after.ts
Created April 3, 2020 12:37
Mobx Complex Observable Example
type State = { kind: 'loading' } | { kind: 'loaded'; service: unknown };
@injectable()
class LoadServiceModel {
constructor(
@injectProps()
private readonly props: {
service: ServiceId<unknown>;
module?: Module;
},
@hediet
hediet / createProgram.ts
Created September 11, 2019 13:59
createProgram from tsConfigSearchPath
import * as ts from "typescript";
import { dirname, resolve } from "path";
export function createProgram(tsConfigSearchPath: string): ts.Program {
const configPath = ts.findConfigFile(
tsConfigSearchPath,
ts.sys.fileExists,
"tsconfig.json"
);
import { hotClass, registerUpdateReconciler } from "@hediet/node-reload";
import { ts, Node, SyntaxKind, TypeGuards, Identifier } from "ts-morph";
registerUpdateReconciler(module);
import { registerAll } from "C:\\Users\\Henning\\Desktop\\playground\\vscode-debug-visualizer\\data-extraction";
registerAll();
@hotClass(module)
export class PatternMatchMain {
@hediet
hediet / I18n.ts
Created August 20, 2019 13:26
I18n.ts
interface FormatDescriptor {
id: string;
defaultTemplate?: string;
}
export type Formatted =
| { kind: 'text'; value: string }
| { kind: 'sequence'; items: Formatted[] }
| { kind: 'object'; items: Record<string, Formatted> };
@hediet
hediet / types.ts
Created July 23, 2019 10:49
DestructureTuple & DeepSelect
export type DestructureTuple<T extends any[]> = T extends []
? false
: ((...tuple: T) => void) extends ((
first: infer TFirst,
...rest: infer TRest
) => void)
? { first: TFirst; rest: TRest }
: false;