$32 GRAYBYTE WORDPRESS FILE MANAGER $87

SERVER : vnpttt-amd7f72-h1.vietnix.vn #1 SMP Fri May 24 12:42:50 UTC 2024
SERVER IP : 103.200.23.149 | ADMIN IP 216.73.216.22
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : NONE

/home/bqrcodec/contact.malloca.com/wp-content/plugins/admin-menu-editor-pro/js/

HOME
Current File : /home/bqrcodec/contact.malloca.com/wp-content/plugins/admin-menu-editor-pro/js//mini-func.ts
'use strict';

namespace AmeMiniFunc {

	//region Option
	interface OptionOps<T> {
		isDefined(): this is Some<T>;

		isEmpty(): this is None;

		nonEmpty(): this is Some<T>;

		get(): T;

		map<R>(f: (value: T) => R): Option<R>;

		flatMap<R>(f: (value: T) => Option<R>): Option<R>;

		filter(f: (value: T) => boolean): Option<T>;

		forEach(f: (value: T) => void): void;

		orElse(alternative: () => Option<T>): Option<T>;

		getOrElse(defaultValue: () => T): T;

		orNull<R extends T>(): T | R | null;

		toArray(): T[];
	}

	class Some<T> implements OptionOps<T> {
		constructor(private value: T) {
		}

		get(): T {
			return this.value;
		}

		isDefined(): boolean {
			return true;
		}

		isEmpty(): boolean {
			return false;
		}

		nonEmpty(): boolean {
			return true;
		}

		map<R>(f: (value: T) => R): Some<R> {
			return new Some(f(this.value));
		}

		flatMap<R>(f: (value: T) => Option<R>): Option<R> {
			return f(this.value);
		}

		filter(f: (value: T) => boolean): Option<T> {
			return f(this.value) ? this : none;
		}

		forEach(f: (value: T) => void): void {
			f(this.value);
		}

		orElse(alternative: () => Option<T>): Option<T> {
			return this;
		}

		getOrElse(alternative: () => T): T {
			return this.value;
		}

		toArray(): T[] {
			return [this.value];
		}

		orNull(): T | null {
			return this.value;
		}
	}

	class None implements OptionOps<never> {
		map<R>(f: (value: never) => R): None {
			return this;
		}

		get(): never {
			throw new Error('Cannot get value from None');
		}

		isDefined(): boolean {
			return false;
		}

		isEmpty(): boolean {
			return true;
		}

		nonEmpty(): boolean {
			return false;
		}

		filter(f: (value: never) => boolean): None {
			return this;
		}

		forEach(f: (value: never) => void): void {
		}

		orElse<R>(alternative: () => Option<R>): Option<R> {
			return alternative();
		}

		getOrElse<R>(alternative: () => R): R {
			return alternative();
		}

		orNull(): null {
			return null;
		}

		flatMap<R>(f: (value: never) => Option<R>): Option<R> {
			return this;
		}

		toArray(): [] {
			return [];
		}
	}

	export const none = new None();

	export function some<T>(value: T): Some<T> {
		return new Some(value);
	}

	export type Option<T> = Some<T> | None;

	type LiftedFunction<TArgs extends any[], R> = (
		...args: { [K in keyof TArgs]: TArgs[K] extends Option<infer U> ? U : never }
	) => R;

	export function lift<TArgs extends Option<any>[], R>(
		options: [...TArgs],
		f: LiftedFunction<TArgs, R>
	): Option<R> {
		const areAllDefined = options.every((opt) => opt.isDefined());

		if (areAllDefined) {
			const unwrappedValues = options.map((opt) => opt.get()) as unknown as Parameters<LiftedFunction<TArgs, R>>;
			return some(f(...unwrappedValues));
		} else {
			return none;
		}
	}

	//endregion

	//region Either
	export abstract class Either<A, B> {
		abstract isLeft(): this is Left<A, B> ;

		abstract isRight(): this is Right<A, B> ;

		abstract getOrElse(defaultValue: () => B): B;

		map<R>(f: (value: B) => R): Either<A, R> {
			if (this.isRight()) {
				return new Right(f(this.value));
			} else {
				return (this as unknown as Either<A, R>); //Should be safe.
			}
		}

		flatMap<R>(f: (value: B) => Either<A, R>): Either<A, R> {
			if (this.isRight()) {
				return f(this.value);
			} else {
				return (this as unknown as Either<A, R>);
			}
		}

		toOption(): Option<B> {
			if (this.isRight()) {
				return some(this.value);
			} else {
				return none;
			}
		}

		static left<A, B>(value: A): Left<A, B> {
			return new Left(value);
		}

		static right<A, B>(value: B): Right<A, B> {
			return new Right(value);
		}
	}

	export class Left<A, B> extends Either<A, B> {
		constructor(public readonly value: A) {
			super();
		}

		isLeft(): this is Left<A, B> {
			return true;
		}

		isRight(): this is Right<A, B> {
			return false;
		}

		getOrElse(defaultValue: () => B): B {
			return defaultValue();
		}
	}

	export class Right<A, B> extends Either<A, B> {
		constructor(public readonly value: B) {
			super();
		}

		isLeft(): this is Left<A, B> {
			return false;
		}

		isRight(): this is Right<A, B> {
			return true;
		}

		getOrElse(defaultValue: () => B): B {
			return this.value;
		}
	}

	//endregion

	//region Misc
	export function sanitizeNumericString(str: string): string {
		if (str === '') {
			return ''
		}

		let sanitizedString: string = str
			//Replace commas with periods.
			.replace(/,/g, '.')
			//Remove all non-numeric characters.
			.replace(/[^0-9.-]/g, '')
			//Remove all but the last period.
			.replace(/\.(?=.*\.)/g, '');

		//Keep a minus sign only if it's the first character. Remove all other occurrences.
		const hasMinusSign = (sanitizedString.charAt(0) === '-');
		sanitizedString = sanitizedString.replace(/-/g, '');
		if (hasMinusSign) {
			sanitizedString = '-' + sanitizedString;
		}

		return sanitizedString;
	}

	export function forEachObjectKey<T extends object>(collection: T, callback: (key: keyof T, value: T[keyof T]) => void) {
		for (const k in collection) {
			if (!collection.hasOwnProperty(k)) {
				continue;
			}
			callback(k, collection[k]);
		}
	}
	//endregion
}

Current_dir [ WRITEABLE ] Document_root [ WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
29 Jan 2024 10.33 AM
bqrcodec / bqrcodec
0755
actor-manager.js
33.044 KB
17 Mar 2024 12.16 AM
bqrcodec / bqrcodec
0644
actor-manager.js.map
24.329 KB
29 Jan 2024 10.33 AM
bqrcodec / bqrcodec
0644
actor-manager.ts
32.393 KB
29 Jan 2024 10.33 AM
bqrcodec / bqrcodec
0644
admin-helpers.js
2.781 KB
17 Mar 2024 12.15 AM
bqrcodec / bqrcodec
0644
common.d.ts
2.141 KB
29 Jan 2024 10.33 AM
bqrcodec / bqrcodec
0644
jquery-json.d.ts
0.106 KB
29 Jan 2024 10.33 AM
bqrcodec / bqrcodec
0644
jquery.biscuit.d.ts
0.444 KB
29 Jan 2024 10.33 AM
bqrcodec / bqrcodec
0644
jquery.biscuit.js
5.365 KB
17 Mar 2024 12.15 AM
bqrcodec / bqrcodec
0644
jquery.color.d.ts
5.062 KB
29 Jan 2024 10.33 AM
bqrcodec / bqrcodec
0644
jquery.d.ts
146.392 KB
29 Jan 2024 10.33 AM
bqrcodec / bqrcodec
0644
jquery.form.d.ts
0.785 KB
29 Jan 2024 10.33 AM
bqrcodec / bqrcodec
0644
jquery.form.js
40.929 KB
17 Mar 2024 12.16 AM
bqrcodec / bqrcodec
0644
jquery.json.js
5.133 KB
17 Mar 2024 12.16 AM
bqrcodec / bqrcodec
0644
jquery.qtip.js
100.341 KB
17 Mar 2024 12.16 AM
bqrcodec / bqrcodec
0644
jquery.qtip.min.js
43.226 KB
17 Mar 2024 12.15 AM
bqrcodec / bqrcodec
0644
jquery.sort.js
1.925 KB
17 Mar 2024 12.16 AM
bqrcodec / bqrcodec
0644
jqueryui.d.ts
77.895 KB
29 Jan 2024 10.33 AM
bqrcodec / bqrcodec
0644
knockout-sortable.js
22.488 KB
17 Mar 2024 12.16 AM
bqrcodec / bqrcodec
0644
knockout.d.ts
42.646 KB
29 Jan 2024 10.33 AM
bqrcodec / bqrcodec
0644
knockout.js
66.649 KB
29 Jan 2024 10.33 AM
bqrcodec / bqrcodec
0644
lazyload.d.ts
10.201 KB
29 Jan 2024 10.33 AM
bqrcodec / bqrcodec
0644
lazyload.min.js
8.097 KB
29 Jan 2024 10.33 AM
bqrcodec / bqrcodec
0644
lodash-3.10.d.ts
408.181 KB
29 Jan 2024 10.33 AM
bqrcodec / bqrcodec
0644
lodash.js
409.555 KB
29 Jan 2024 10.33 AM
bqrcodec / bqrcodec
0644
lodash.min.js
51.412 KB
29 Jan 2024 10.33 AM
bqrcodec / bqrcodec
0644
menu-editor.d.ts
0.641 KB
29 Jan 2024 10.33 AM
bqrcodec / bqrcodec
0644
menu-editor.js
177.473 KB
17 Mar 2024 12.15 AM
bqrcodec / bqrcodec
0644
menu-highlight-fix.js
11.121 KB
17 Mar 2024 12.16 AM
bqrcodec / bqrcodec
0644
mini-func.js
4.945 KB
29 Jan 2024 10.33 AM
bqrcodec / bqrcodec
0644
mini-func.js.map
4.1 KB
29 Jan 2024 10.33 AM
bqrcodec / bqrcodec
0644
mini-func.ts
5.023 KB
29 Jan 2024 10.33 AM
bqrcodec / bqrcodec
0644
tab-utils.js
2.248 KB
29 Jan 2024 10.33 AM
bqrcodec / bqrcodec
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME
Static GIF