Skip to content

Instantly share code, notes, and snippets.

@mmis1000
mmis1000 / JSON_schema.ts
Last active November 15, 2018 08:33
Validate object with json schema by only typescript generics
type MapSingle<T> =
T extends {enum: (infer U)[]}? U:
T extends {type: "object", properties: {}, required: any}? SchemaObject<T>:
T extends {type: "string"}? string:
T extends {type: "number"}? number:
T extends {type: "interger"}? number:
T extends {type: "boolean"}? boolean:
never
type MapObject<T> = {
@mmis1000
mmis1000 / Main.kt
Created August 6, 2018 11:19
sponge crash
package me.mmis1000.test
import com.google.inject.Inject
import org.spongepowered.api.Sponge
import org.spongepowered.api.data.*
import org.spongepowered.api.data.key.Key
import org.spongepowered.api.data.manipulator.mutable.common.AbstractSingleData
import org.spongepowered.api.data.merge.MergeFunction
import org.spongepowered.api.data.value.mutable.Value
import org.spongepowered.api.event.Listener
@mmis1000
mmis1000 / type-test.ts
Created July 1, 2018 18:34
A test for type include and pattern match with typescript
interface Construcable<P> {
new(...arg:any[]): P
}
type InstanceOf<T, U = T extends Construcable<infer C> ? C: T> = U;
type ConstructorToType<T> =
T extends StringConstructor? string:
T extends BooleanConstructor? boolean:
T extends NumberConstructor? number:
@mmis1000
mmis1000 / Ansi_art_renderer.js
Created June 22, 2018 17:41
a pure js ansi art renderer
/// @ts-check
const fs = require("fs");
const path = require("path");
const fileName = process.argv[2];
const fullPath = path.resolve(process.cwd(), fileName);
const b2uTable = require("./b2u_table.js");
const { createCanvas } = require('canvas')
/**
* @typedef {Object} Style
@mmis1000
mmis1000 / Saliens-Hack-for-Steam-Summer-Sale-2018-fixed.user.js
Last active June 22, 2018 07:31
Saliens Hack for Steam Summer Sale 2018 Game
// ==UserScript==
// @name Saliens Hack
// @description Saliens Hack for Steam Summer Sale 2018 Game - AutoSelect Planet, Invincibility, InstaKill
//
// @author Cory "mbsurfer" Shaw & mmis1000
//
// @license GPLv3 - http://www.gnu.org/licenses/gpl-3.0.txt
// @copyright Copyright (C) 2018, by Cory Shaw
//
// @include https://steamcommunity.com/saliengame/play/
@mmis1000
mmis1000 / compare.js
Last active July 13, 2018 18:44
some thougt about the proposal-private-methods
// 0 current proposal
// 1 this proposal
// 2 polyfilled
/* 2 */ const class_a_private_priv = Symbol('priv')
/* 2 */ const class_a_private_someSecretMethod = Symbol('someSecretMethod')
/* 2 */ const class_a_private_privProxy = Symbol('privProxy')
class a() {
/* 0 */ #priv = 0;
function anonymous(React, components, $place_54e5dca3_0$, $place_54e5dca3_1$, $place_54e5dca3_2$, $place_54e5dca3_3$, $place_54e5dca3_4$, $place_54e5dca3_5$, $place_54e5dca3_6$
/*``*/
) {
return React.createElement(React.Fragment, null, [
React.createElement(components.Container, null, [
React.createElement(components.Item, null, []),
React.createElement(components.Item, Object.assign({}, {
"data": $place_54e5dca3_0$,
["cla" + $place_54e5dca3_2$ + "s"]: "bra" + $place_54e5dca3_3$ + "ck",
"data1": $place_54e5dca3_4$
@mmis1000
mmis1000 / parser.js
Created May 10, 2018 09:17
jsx-parse.js
var STATE = {
INIT: Symbol('init'), // enter on every sub routine start
LEAVE: Symbol('leave'), // leave on every sub routine leave
SKIP_SPACE: Symbol('skip_space'),
FIND_TAG: Symbol('find_tag'),
TAG: {
LEFT: {
ENTER: Symbol('enter_tag'), // <
END: Symbol('end_tag'), // </
@mmis1000
mmis1000 / html-parse.js
Created May 10, 2018 07:06
parse the html
var STATE = {
INIT: Symbol('init'), // enter on every sub routine start
LEAVE: Symbol('leave'), // leave on every sub routine leave
SKIP_SPACE: Symbol('skip_space'),
FIND_TAG: Symbol('find_tag'),
TAG: {
LEFT: {
ENTER: Symbol('enter_tag'), // <
END: Symbol('end_tag'), // </
@mmis1000
mmis1000 / import another.js
Last active May 4, 2018 14:16
how import/export works
/*
* prop a
* export a
* import scope2.B
*/
var scope1 = {
a: undefined
}
Object.defineProperty(scope1, 'B', {
get: ()=> scope2.B,