summaryrefslogtreecommitdiff
path: root/src/prelude
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2021-11-13 12:23:49 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2021-11-13 12:23:49 +0900
commit2795fe457909c687f668d020ef65d52abc3182fb (patch)
tree0a52e4e4d854333496fcc487560c93c3de5d5eb5 /src/prelude
parentMerge branch 'develop' (diff)
parent12.96.0 (diff)
downloadmisskey-2795fe457909c687f668d020ef65d52abc3182fb.tar.gz
misskey-2795fe457909c687f668d020ef65d52abc3182fb.tar.bz2
misskey-2795fe457909c687f668d020ef65d52abc3182fb.zip
Merge branch 'develop'
Diffstat (limited to 'src/prelude')
-rw-r--r--src/prelude/README.md3
-rw-r--r--src/prelude/array.ts138
-rw-r--r--src/prelude/await-all.ts23
-rw-r--r--src/prelude/math.ts3
-rw-r--r--src/prelude/maybe.ts20
-rw-r--r--src/prelude/relation.ts5
-rw-r--r--src/prelude/string.ts15
-rw-r--r--src/prelude/symbol.ts1
-rw-r--r--src/prelude/time.ts39
-rw-r--r--src/prelude/url.ts13
-rw-r--r--src/prelude/xml.ts41
11 files changed, 0 insertions, 301 deletions
diff --git a/src/prelude/README.md b/src/prelude/README.md
deleted file mode 100644
index bb728cfb1b..0000000000
--- a/src/prelude/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# Prelude
-このディレクトリのコードはJavaScriptの表現能力を補うためのコードです。
-Misskey固有の処理とは独立したコードの集まりですが、Misskeyのコードを読みやすくすることを目的としています。
diff --git a/src/prelude/array.ts b/src/prelude/array.ts
deleted file mode 100644
index d63f0475d0..0000000000
--- a/src/prelude/array.ts
+++ /dev/null
@@ -1,138 +0,0 @@
-import { EndoRelation, Predicate } from './relation';
-
-/**
- * Count the number of elements that satisfy the predicate
- */
-
-export function countIf<T>(f: Predicate<T>, xs: T[]): number {
- return xs.filter(f).length;
-}
-
-/**
- * Count the number of elements that is equal to the element
- */
-export function count<T>(a: T, xs: T[]): number {
- return countIf(x => x === a, xs);
-}
-
-/**
- * Concatenate an array of arrays
- */
-export function concat<T>(xss: T[][]): T[] {
- return ([] as T[]).concat(...xss);
-}
-
-/**
- * Intersperse the element between the elements of the array
- * @param sep The element to be interspersed
- */
-export function intersperse<T>(sep: T, xs: T[]): T[] {
- return concat(xs.map(x => [sep, x])).slice(1);
-}
-
-/**
- * Returns the array of elements that is not equal to the element
- */
-export function erase<T>(a: T, xs: T[]): T[] {
- return xs.filter(x => x !== a);
-}
-
-/**
- * Finds the array of all elements in the first array not contained in the second array.
- * The order of result values are determined by the first array.
- */
-export function difference<T>(xs: T[], ys: T[]): T[] {
- return xs.filter(x => !ys.includes(x));
-}
-
-/**
- * Remove all but the first element from every group of equivalent elements
- */
-export function unique<T>(xs: T[]): T[] {
- return [...new Set(xs)];
-}
-
-export function sum(xs: number[]): number {
- return xs.reduce((a, b) => a + b, 0);
-}
-
-export function maximum(xs: number[]): number {
- return Math.max(...xs);
-}
-
-/**
- * Splits an array based on the equivalence relation.
- * The concatenation of the result is equal to the argument.
- */
-export function groupBy<T>(f: EndoRelation<T>, xs: T[]): T[][] {
- const groups = [] as T[][];
- for (const x of xs) {
- if (groups.length !== 0 && f(groups[groups.length - 1][0], x)) {
- groups[groups.length - 1].push(x);
- } else {
- groups.push([x]);
- }
- }
- return groups;
-}
-
-/**
- * Splits an array based on the equivalence relation induced by the function.
- * The concatenation of the result is equal to the argument.
- */
-export function groupOn<T, S>(f: (x: T) => S, xs: T[]): T[][] {
- return groupBy((a, b) => f(a) === f(b), xs);
-}
-
-export function groupByX<T>(collections: T[], keySelector: (x: T) => string) {
- return collections.reduce((obj: Record<string, T[]>, item: T) => {
- const key = keySelector(item);
- if (!obj.hasOwnProperty(key)) {
- obj[key] = [];
- }
-
- obj[key].push(item);
-
- return obj;
- }, {});
-}
-
-/**
- * Compare two arrays by lexicographical order
- */
-export function lessThan(xs: number[], ys: number[]): boolean {
- for (let i = 0; i < Math.min(xs.length, ys.length); i++) {
- if (xs[i] < ys[i]) return true;
- if (xs[i] > ys[i]) return false;
- }
- return xs.length < ys.length;
-}
-
-/**
- * Returns the longest prefix of elements that satisfy the predicate
- */
-export function takeWhile<T>(f: Predicate<T>, xs: T[]): T[] {
- const ys = [];
- for (const x of xs) {
- if (f(x)) {
- ys.push(x);
- } else {
- break;
- }
- }
- return ys;
-}
-
-export function cumulativeSum(xs: number[]): number[] {
- const ys = Array.from(xs); // deep copy
- for (let i = 1; i < ys.length; i++) ys[i] += ys[i - 1];
- return ys;
-}
-
-export function toArray<T>(x: T | T[] | undefined): T[] {
- return Array.isArray(x) ? x : x != null ? [x] : [];
-}
-
-export function toSingle<T>(x: T | T[] | undefined): T | undefined {
- return Array.isArray(x) ? x[0] : x;
-}
diff --git a/src/prelude/await-all.ts b/src/prelude/await-all.ts
deleted file mode 100644
index 24795f3ae5..0000000000
--- a/src/prelude/await-all.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-type Await<T> = T extends Promise<infer U> ? U : T;
-
-type AwaitAll<T> = {
- [P in keyof T]: Await<T[P]>;
-};
-
-export async function awaitAll<T>(obj: T): Promise<AwaitAll<T>> {
- const target = {} as any;
- const keys = Object.keys(obj);
- const values = Object.values(obj);
-
- const resolvedValues = await Promise.all(values.map(value =>
- (!value || !value.constructor || value.constructor.name !== 'Object')
- ? value
- : awaitAll(value)
- ));
-
- for (let i = 0; i < keys.length; i++) {
- target[keys[i]] = resolvedValues[i];
- }
-
- return target;
-}
diff --git a/src/prelude/math.ts b/src/prelude/math.ts
deleted file mode 100644
index 07b94bec30..0000000000
--- a/src/prelude/math.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export function gcd(a: number, b: number): number {
- return b === 0 ? a : gcd(b, a % b);
-}
diff --git a/src/prelude/maybe.ts b/src/prelude/maybe.ts
deleted file mode 100644
index 0b4b543ca5..0000000000
--- a/src/prelude/maybe.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-export interface IMaybe<T> {
- isJust(): this is IJust<T>;
-}
-
-export interface IJust<T> extends IMaybe<T> {
- get(): T;
-}
-
-export function just<T>(value: T): IJust<T> {
- return {
- isJust: () => true,
- get: () => value
- };
-}
-
-export function nothing<T>(): IMaybe<T> {
- return {
- isJust: () => false,
- };
-}
diff --git a/src/prelude/relation.ts b/src/prelude/relation.ts
deleted file mode 100644
index 1f4703f52f..0000000000
--- a/src/prelude/relation.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export type Predicate<T> = (a: T) => boolean;
-
-export type Relation<T, U> = (a: T, b: U) => boolean;
-
-export type EndoRelation<T> = Relation<T, T>;
diff --git a/src/prelude/string.ts b/src/prelude/string.ts
deleted file mode 100644
index b907e0a2e1..0000000000
--- a/src/prelude/string.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-export function concat(xs: string[]): string {
- return xs.join('');
-}
-
-export function capitalize(s: string): string {
- return toUpperCase(s.charAt(0)) + toLowerCase(s.slice(1));
-}
-
-export function toUpperCase(s: string): string {
- return s.toUpperCase();
-}
-
-export function toLowerCase(s: string): string {
- return s.toLowerCase();
-}
diff --git a/src/prelude/symbol.ts b/src/prelude/symbol.ts
deleted file mode 100644
index 51e12f7450..0000000000
--- a/src/prelude/symbol.ts
+++ /dev/null
@@ -1 +0,0 @@
-export const fallback = Symbol('fallback');
diff --git a/src/prelude/time.ts b/src/prelude/time.ts
deleted file mode 100644
index 34e8b6b17c..0000000000
--- a/src/prelude/time.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-const dateTimeIntervals = {
- 'day': 86400000,
- 'hour': 3600000,
- 'ms': 1,
-};
-
-export function dateUTC(time: number[]): Date {
- const d = time.length === 2 ? Date.UTC(time[0], time[1])
- : time.length === 3 ? Date.UTC(time[0], time[1], time[2])
- : time.length === 4 ? Date.UTC(time[0], time[1], time[2], time[3])
- : time.length === 5 ? Date.UTC(time[0], time[1], time[2], time[3], time[4])
- : time.length === 6 ? Date.UTC(time[0], time[1], time[2], time[3], time[4], time[5])
- : time.length === 7 ? Date.UTC(time[0], time[1], time[2], time[3], time[4], time[5], time[6])
- : null;
-
- if (!d) throw 'wrong number of arguments';
-
- return new Date(d);
-}
-
-export function isTimeSame(a: Date, b: Date): boolean {
- return a.getTime() === b.getTime();
-}
-
-export function isTimeBefore(a: Date, b: Date): boolean {
- return (a.getTime() - b.getTime()) < 0;
-}
-
-export function isTimeAfter(a: Date, b: Date): boolean {
- return (a.getTime() - b.getTime()) > 0;
-}
-
-export function addTime(x: Date, value: number, span: keyof typeof dateTimeIntervals = 'ms'): Date {
- return new Date(x.getTime() + (value * dateTimeIntervals[span]));
-}
-
-export function subtractTime(x: Date, value: number, span: keyof typeof dateTimeIntervals = 'ms'): Date {
- return new Date(x.getTime() - (value * dateTimeIntervals[span]));
-}
diff --git a/src/prelude/url.ts b/src/prelude/url.ts
deleted file mode 100644
index c7f2b7c1e7..0000000000
--- a/src/prelude/url.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-export function query(obj: {}): string {
- const params = Object.entries(obj)
- .filter(([, v]) => Array.isArray(v) ? v.length : v !== undefined)
- .reduce((a, [k, v]) => (a[k] = v, a), {} as Record<string, any>);
-
- return Object.entries(params)
- .map((e) => `${e[0]}=${encodeURIComponent(e[1])}`)
- .join('&');
-}
-
-export function appendQuery(url: string, query: string): string {
- return `${url}${/\?/.test(url) ? url.endsWith('?') ? '' : '&' : '?'}${query}`;
-}
diff --git a/src/prelude/xml.ts b/src/prelude/xml.ts
deleted file mode 100644
index 0773f75d47..0000000000
--- a/src/prelude/xml.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-const map: Record<string, string> = {
- '&': '&amp;',
- '<': '&lt;',
- '>': '&gt;',
- '"': '&quot;',
- '\'': '&apos;'
-};
-
-const beginingOfCDATA = '<![CDATA[';
-const endOfCDATA = ']]>';
-
-export function escapeValue(x: string): string {
- let insideOfCDATA = false;
- let builder = '';
- for (
- let i = 0;
- i < x.length;
- ) {
- if (insideOfCDATA) {
- if (x.slice(i, i + beginingOfCDATA.length) === beginingOfCDATA) {
- insideOfCDATA = true;
- i += beginingOfCDATA.length;
- } else {
- builder += x[i++];
- }
- } else {
- if (x.slice(i, i + endOfCDATA.length) === endOfCDATA) {
- insideOfCDATA = false;
- i += endOfCDATA.length;
- } else {
- const b = x[i++];
- builder += map[b] || b;
- }
- }
- }
- return builder;
-}
-
-export function escapeAttribute(x: string): string {
- return Object.entries(map).reduce((a, [k, v]) => a.replace(k, v), x);
-}