valleyed 4.5.7 → 4.5.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -0
- package/dist/{index.cjs → cjs/index.cjs} +1 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/cjs/index.min.cjs +2 -0
- package/dist/esm/index.min.mjs +3 -0
- package/dist/esm/index.min.mjs.map +1 -0
- package/dist/esm/index.mjs +1224 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/types/index.d.ts +390 -0
- package/dist/types/index.js +1223 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
### [4.5.8](https://github.com/kevinand11/valleyed/compare/v4.5.7...v4.5.8) (2025-06-26)
|
|
6
|
+
|
|
5
7
|
### [4.5.7](https://github.com/kevinand11/valleyed/compare/v4.5.6...v4.5.7) (2025-06-26)
|
|
6
8
|
|
|
7
9
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/utils/classes.ts","../../src/api/externals.ts","../../src/api/base/errors.ts","../../src/api/base/pipes.ts","../../src/api/arrays.ts","../../src/api/times.ts","../../src/api/types.ts","../../src/api/coerce.ts","../../src/utils/differ.ts","../../src/api/core.ts","../../src/api/files.ts","../../src/api/junctions.ts","../../src/api/numbers.ts","../../src/api/optionals.ts","../../src/api/records.ts","../../src/utils/regexes.ts","../../src/api/strings.ts","../../src/utils/functions/urls/normalize.ts","../../src/utils/functions/index.ts","../../src/utils/geohash.ts"],"sourcesContent":["export * from './utils/classes'\nexport * as differ from './utils/differ'\nexport * from './utils/functions'\nexport * as geohash from './utils/geohash'\nexport * from './utils/types'\nexport * from './api/base'\nexport * from './api'\n","import util from 'node:util'\n\nimport { wrapInTryCatch } from './functions'\nimport { DeepOmit, IsType, JSONValueOf } from './types'\n\nif (util?.inspect?.defaultOptions) {\n\tutil.inspect.defaultOptions.depth = Number.MAX_SAFE_INTEGER\n\tutil.inspect.defaultOptions.getters = true\n\tutil.inspect.defaultOptions.numericSeparator = true\n}\n\nconst customInspectSymbol = Symbol.for('nodejs.util.inspect.custom')\n\ntype Accessor<Keys extends object> = {\n\tget: <Key extends keyof Keys>(key: Key, keysObj: Keys) => Keys[Key]\n\tset: <Key extends keyof Keys>(key: Key, value: Keys[Key], keysObj: Keys) => void\n}\n\ntype JSONOf<K, I> = JSONValueOf<IsType<K, any> extends true ? Record<string, any> : DeepOmit<K, I>>\n\nfunction WrapWithProperties(): { new <Keys extends Record<string, unknown>>(): Keys } {\n\treturn class {\n\t\t[customInspectSymbol](_, options, inspect) {\n\t\t\toptions.getters = true\n\t\t\toptions.numericSeparator = true\n\t\t\toptions.depth = Number.MAX_SAFE_INTEGER\n\t\t\treturn options.stylize(this.constructor.name, options) + ' ' + inspect((this as any).toJSON?.() ?? this, options)\n\t\t}\n\t} as any\n}\n\n// @ts-expect-error invalid extends\nclass __Root<Keys extends object> extends WrapWithProperties()<Keys> {}\n\nexport class DataClass<Keys extends object, Ignored extends string = never> extends __Root<Keys> {\n\tpublic __ignoreInJSON: ReadonlyArray<Ignored> = []\n\n\tconstructor(\n\t\tkeys: Keys,\n\t\taccess: Accessor<Keys> = {\n\t\t\tget: (key, keys) => keys[key],\n\t\t\tset: (key, value, keys) => {\n\t\t\t\tkeys[key] = value\n\t\t\t},\n\t\t},\n\t) {\n\t\tsuper()\n\t\tObject.keys(keys).forEach((key) => {\n\t\t\tObject.defineProperty(this, key, {\n\t\t\t\tget: () => access.get(key as keyof Keys, keys),\n\t\t\t\tset: (value: any) => {\n\t\t\t\t\taccess.set(key as keyof Keys, value, keys)\n\t\t\t\t},\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t})\n\t\t})\n\t}\n\n\ttoJSON(includeIgnored = false): JSONOf<Keys, Ignored> {\n\t\tconst json: Record<string, any> = {}\n\t\tObject.keys(this).forEach((key) => {\n\t\t\tconst value = this[key]\n\t\t\tif (typeof value === 'function' || value === undefined) return\n\t\t\tjson[key] = (value as any)?.toJSON?.(includeIgnored) ?? wrapInTryCatch(() => structuredClone(value), value)\n\t\t})\n\t\tconst keysToDelete = ['__ignoreInJSON'].concat(...(includeIgnored !== true ? this.__ignoreInJSON : []))\n\t\tkeysToDelete.forEach((k: string) => deleteKeyFromObject(json, k.split('.')))\n\t\treturn json as any\n\t}\n\n\ttoString(includeIgnored = false) {\n\t\treturn JSON.stringify(this.toJSON(includeIgnored))\n\t}\n}\n\nfunction deleteKeyFromObject(obj: Record<string, any>, keys: string[]) {\n\tif (obj === undefined || obj === null) return\n\tconst isArray = Array.isArray(obj)\n\tif (keys.length === 1 && !isArray) return delete obj[keys[0]]\n\tif (isArray) return obj.map((v) => deleteKeyFromObject(v, keys))\n\treturn deleteKeyFromObject(obj[keys[0]], keys.slice(1))\n}\n","export * from './base/pipes'\nexport * from './arrays'\nexport * from './coerce'\nexport * from './core'\nexport * from './files'\nexport * from './junctions'\nexport * from './numbers'\nexport * from './optionals'\nexport * from './types'\nexport * from './records'\nexport * from './strings'\nexport * from './times'\n","type Arrayable<T> = T | T[]\n\nfunction flatArray<T>(arr: Arrayable<T>): T[] {\n\treturn Array.isArray(arr) ? arr : [arr]\n}\n\nfunction formatError(message: { message: string; path?: string }) {\n\treturn `${message.path ? `${message.path}: ` : ''}${message.message}`\n}\n\nexport class PipeError extends Error {\n\tconstructor(\n\t\tpublic messages: { message: string; path?: string }[],\n\t\treadonly value: unknown,\n\t\treadonly stopped: boolean,\n\t\tcause?: unknown,\n\t) {\n\t\tconst message = messages[0]\n\t\tsuper(message ? formatError(message) : 'Pipe validation error', { cause })\n\t}\n\n\ttoString() {\n\t\treturn this.messages.map(formatError).join('\\n')\n\t}\n\n\tstatic root(messages: Arrayable<string>, value: unknown, cause?: unknown) {\n\t\treturn new PipeError(\n\t\t\tflatArray(messages).map((message) => ({ message })),\n\t\t\tvalue,\n\t\t\tfalse,\n\t\t\tcause,\n\t\t)\n\t}\n\n\tstatic rootFrom(errors: Arrayable<PipeError>, value: unknown, cause?: unknown) {\n\t\treturn new PipeError(\n\t\t\tflatArray(errors).flatMap((error) => error.messages),\n\t\t\tvalue,\n\t\t\tfalse,\n\t\t\tcause,\n\t\t)\n\t}\n\n\tstatic path(path: PropertyKey, errors: Arrayable<PipeError>, value: unknown, cause?: unknown) {\n\t\treturn new PipeError(\n\t\t\tflatArray(errors).flatMap((error) =>\n\t\t\t\terror.messages.map((message) => ({ ...message, path: `${path.toString()}${message.path ? `.${message.path}` : ''}` })),\n\t\t\t),\n\t\t\tvalue,\n\t\t\tfalse,\n\t\t\tcause,\n\t\t)\n\t}\n\n\tstatic stop(value: unknown) {\n\t\treturn new PipeError([], value, true)\n\t}\n}\n","import { PipeError } from './errors'\nimport { PipeFn, Context, JsonSchemaBuilder, PipeMeta, Pipe, Entry, PipeOutput, PipeContext } from './types'\nimport { JsonSchema } from '../../utils/types'\n\nexport function walk<T>(pipe: Pipe<any, any, any>, init: T, nodeFn: (cur: Pipe<any, any, any>, acc: T) => T) {\n\tlet acc: T = init\n\twhile (pipe) {\n\t\tacc = nodeFn(pipe, acc)\n\t\tpipe = pipe.next!\n\t}\n\treturn acc\n}\n\nexport function context<T extends Pipe<any, any, any>>(pipe: T): Context<PipeContext<T>> {\n\treturn walk(pipe, {} as Context<PipeContext<T>>, (p, acc) => ({ ...acc, ...p.context() }))\n}\n\nexport function assert<T extends Pipe<any, any, any>>(pipe: T, input: unknown): PipeOutput<T> {\n\ttry {\n\t\tconst cont = context(pipe)\n\t\treturn walk(pipe, input as PipeOutput<T>, (p, acc) => p.fn(acc, cont))\n\t} catch (error) {\n\t\tif (error instanceof PipeError) {\n\t\t\tif (error.stopped) return error.value as PipeOutput<T>\n\t\t\tthrow error\n\t\t}\n\t\tthrow PipeError.root(error instanceof Error ? error.message : `${error}`, input, error)\n\t}\n}\n\nexport function validate<T extends Pipe<any, any, any>>(\n\tpipe: T,\n\tinput: unknown,\n): { value: PipeOutput<T>; valid: true } | { error: PipeError; valid: false } {\n\ttry {\n\t\tconst value = assert(pipe, input)\n\t\treturn { value, valid: true }\n\t} catch (error) {\n\t\tif (error instanceof PipeError) return { error, valid: false }\n\t\tthrow PipeError.root(error instanceof Error ? error.message : `${error}`, input, error)\n\t}\n}\n\nexport function schema<T extends Pipe<any, any, any>>(pipe: T, schema: JsonSchema = {}): JsonSchema {\n\tconst cont = context(pipe)\n\treturn walk(pipe, schema, (p, acc) => ({ ...acc, ...p.schema(cont) }))\n}\n\nexport function meta<T extends Pipe<any, any, any>>(p: T, meta: PipeMeta): T {\n\treturn p.pipe(pipe((i) => i, { schema: () => meta })) as T\n}\n\nexport function pipe<I, O, C>(\n\tfunc: PipeFn<I, O, C>,\n\tconfig: {\n\t\tcontext?: () => Context<C>\n\t\tschema?: (context: Context<C>) => JsonSchemaBuilder\n\t} = {},\n): Pipe<I, O, C> {\n\tconst piper: Pipe<I, O, C> = {\n\t\tfn: func,\n\t\tcontext: () => config.context?.() ?? ({} as any),\n\t\tschema: (context: Context<C>) => config.schema?.(context) ?? ({} as any),\n\t\tpipe: (...entries: Entry<any, any, any>[]) => {\n\t\t\tfor (const cur of entries) {\n\t\t\t\tconst p = typeof cur === 'function' ? pipe(cur, config) : cur\n\t\t\t\tif (!piper.next) piper.next = p\n\t\t\t\tif (piper.last) piper.last.next = p\n\t\t\t\tpiper.last = p.last ?? p\n\t\t\t}\n\t\t\treturn piper\n\t\t},\n\t\t'~standard': {\n\t\t\tversion: 1,\n\t\t\tvendor: 'valleyed',\n\t\t\tvalidate(value) {\n\t\t\t\tconst validity = validate(piper, value)\n\t\t\t\tif (validity.valid) return { value: validity.value }\n\t\t\t\treturn {\n\t\t\t\t\tissues: validity.error.messages.map(({ message, path }) => ({\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t\tpath: path ? path.split('.') : undefined,\n\t\t\t\t\t})),\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t}\n\treturn piper\n}\n\nexport function branch<P extends Pipe<any, any, any>, I, O, C>(\n\tbranch: P,\n\tfn: PipeFn<I, O, C>,\n\tconfig: {\n\t\tcontext: (context: Context<C>) => Context<C>\n\t\tschema: (schema: JsonSchemaBuilder, context: Context<C>) => JsonSchemaBuilder\n\t},\n) {\n\treturn pipe(fn, {\n\t\t...config,\n\t\tcontext: () => config.context(context(branch) as any),\n\t\tschema: (context) => ({ ...config.schema(schema(branch), context) }),\n\t})\n}\n","import { PipeError, PipeInput, type Pipe, type PipeOutput } from './base'\nimport { pipe, schema, validate } from './base/pipes'\n\nexport const array = <T extends Pipe<any, any, any>>(pipeSchema: T, err = 'is not an array') =>\n\tpipe<PipeInput<T>[], PipeOutput<T>[], any>(\n\t\t(input: unknown) => {\n\t\t\tif (!Array.isArray(input)) throw PipeError.root(err, input)\n\t\t\tif (input.length === 0) return input\n\t\t\tconst res = input.map((i, idx) => {\n\t\t\t\tconst validity = validate(pipeSchema, i)\n\t\t\t\tif (!validity.valid) return PipeError.path(idx, validity.error, i)\n\t\t\t\treturn validity.value\n\t\t\t})\n\t\t\tif (res.some((r) => r instanceof PipeError))\n\t\t\t\tthrow PipeError.rootFrom(\n\t\t\t\t\tres.filter((r) => r instanceof PipeError),\n\t\t\t\t\tinput,\n\t\t\t\t)\n\t\t\treturn res\n\t\t},\n\t\t{ schema: () => ({ type: 'array', items: schema(pipeSchema) }) },\n\t)\n\nexport const tuple = <T extends ReadonlyArray<Pipe<any, any, any>>>(pipes: readonly [...T], err = 'is not an array') =>\n\tpipe<{ [K in keyof T]: PipeInput<T[K]> }, { [K in keyof T]: PipeOutput<T[K]> }, any>(\n\t\t(input: unknown) => {\n\t\t\tif (!Array.isArray(input)) throw PipeError.root(err, input)\n\t\t\tif (pipes.length === 0) return input as any\n\t\t\tconst res = pipes.map((pipe, idx) => {\n\t\t\t\tconst validitity = validate(pipe, input[idx])\n\t\t\t\tif ('error' in validitity) return PipeError.path(idx, validitity.error, input[idx])\n\t\t\t\treturn validitity.value\n\t\t\t})\n\t\t\tif (res.some((r) => r instanceof PipeError))\n\t\t\t\tthrow PipeError.rootFrom(\n\t\t\t\t\tres.filter((r) => r instanceof PipeError),\n\t\t\t\t\tinput,\n\t\t\t\t)\n\t\t\treturn res\n\t\t},\n\t\t{\n\t\t\tschema: () => ({\n\t\t\t\ttype: 'array',\n\t\t\t\titems: pipes.map((pipe) => schema(pipe)),\n\t\t\t\tminItems: pipes.length,\n\t\t\t\tmaxItems: pipes.length,\n\t\t\t}),\n\t\t},\n\t)\n\nexport const asSet = <T>(keyFn: (i: T) => PropertyKey = (v) => v as string) =>\n\tpipe<T[], T[], any>((input) => {\n\t\tconst obj: Record<PropertyKey, boolean> = {}\n\t\treturn input.reduce<T[]>((acc, cur) => {\n\t\t\tconst key = keyFn(cur)\n\t\t\tif (!obj[key]) {\n\t\t\t\tobj[key] = true\n\t\t\t\tacc.push(cur)\n\t\t\t}\n\t\t\treturn acc\n\t\t}, [])\n\t})\n","import { PipeError } from './base'\nimport { pipe } from './base/pipes'\nimport { execValueFunction, ValueFunction } from '../utils/functions'\n\nexport type Timeable = Date | string | number\n\nexport const time = (err = 'is not a valid datetime') =>\n\tpipe<Timeable, Date, any>(\n\t\t(input) => {\n\t\t\tif (input instanceof Date) return input\n\t\t\tif (typeof input === 'number' || typeof input === 'string') {\n\t\t\t\tconst date = new Date(input)\n\t\t\t\tif (!isNaN(date.getTime())) return date\n\t\t\t}\n\t\t\tthrow PipeError.root(err, input)\n\t\t},\n\t\t{ schema: () => ({ oneOf: [{ type: 'string', format: 'date-time' }, { type: 'integer' }] }) },\n\t)\n\nexport const after = (compare: ValueFunction<Timeable>, err?: string) =>\n\tpipe<Date, Date, any>(\n\t\t(input, context) => {\n\t\t\tconst compareDate = new Date(execValueFunction(context?.after ?? compare))\n\t\t\tif (input > compareDate) return input\n\t\t\tthrow PipeError.root(err ?? `is not later than ${compareDate.toString()}`, input)\n\t\t},\n\t\t{ context: () => ({ after: compare }) },\n\t)\n\nexport const before = (compare: ValueFunction<Timeable>, err?: string) =>\n\tpipe<Date, Date, any>(\n\t\t(input, context) => {\n\t\t\tconst compareDate = new Date(execValueFunction(context?.before ?? compare))\n\t\t\tif (input < compareDate) return input\n\t\t\tthrow PipeError.root(err ?? `is not earlier than ${compareDate.toString()}`, input)\n\t\t},\n\t\t{ context: () => ({ before: compare }) },\n\t)\n\nexport const asStamp = () => pipe<Date, number, any>((input) => input.valueOf(), { schema: () => ({ type: 'integer', oneOf: undefined }) })\nexport const asISOString = () =>\n\tpipe<Date, string, any>((input) => input.toISOString(), { schema: () => ({ type: 'string', format: 'date-time', oneOf: undefined }) })\n","import { PipeError } from './base'\nimport { pipe } from './base/pipes'\n\nconst isString = (err = 'is not a string') =>\n\tpipe<string, string, any>(\n\t\t(input: unknown) => {\n\t\t\tif (typeof input === 'string' || input?.constructor?.name === 'String') return input as string\n\t\t\tthrow PipeError.root(err, input)\n\t\t},\n\t\t{ schema: () => ({ type: 'string' }) },\n\t)\n\nconst isNumber = (err = 'is not a number') =>\n\tpipe<number, number, any>(\n\t\t(input: unknown) => {\n\t\t\tif (typeof input === 'number' && !isNaN(input)) return input\n\t\t\tthrow PipeError.root(err, input)\n\t\t},\n\t\t{ schema: () => ({ type: 'number' }) },\n\t)\n\nconst isBoolean = (err = 'is not a boolean') =>\n\tpipe<boolean, boolean, any>(\n\t\t(input: unknown) => {\n\t\t\tif (input === true || input === false) return input\n\t\t\tthrow PipeError.root(err, input)\n\t\t},\n\t\t{ schema: () => ({ type: 'boolean' }) },\n\t)\n\nconst isNull = (err = 'is not null') =>\n\tpipe<null, null, any>(\n\t\t(input: unknown) => {\n\t\t\tif (input === null) return input\n\t\t\tthrow PipeError.root(err, input)\n\t\t},\n\t\t{ schema: () => ({ type: 'null' }) },\n\t)\n\nconst isUndefined = (err = 'is not undefined') =>\n\tpipe<undefined, undefined, any>(\n\t\t(input: unknown) => {\n\t\t\tif (input === undefined) return input\n\t\t\tthrow PipeError.root(err, input)\n\t\t},\n\t\t{ schema: () => ({ type: 'undefined' }) },\n\t)\n\nconst isAny = <T>() => pipe<T, T, any>((input) => input as T)\n\nconst isInstanceOf = <T>(classDef: abstract new (...args: any[]) => T, err = `is not an instance of ${classDef.name}`) =>\n\tpipe<T, T, any>((input) => {\n\t\tif (input?.constructor === classDef) return input as T\n\t\tif (input instanceof classDef) return input\n\t\tthrow PipeError.root(err, input)\n\t})\n\nexport {\n\tisString as string,\n\tisNumber as number,\n\tisBoolean as boolean,\n\tisNull as null,\n\tisUndefined as undefined,\n\tisAny as any,\n\tisInstanceOf as instanceOf,\n}\n","import { pipe } from './base/pipes'\nimport { time, Timeable } from './times'\nimport { boolean, number, string } from './types'\n\nexport const coerceString = () => pipe<string, string, any>((input: unknown) => String(input).toString()).pipe(string())\nexport const coerceNumber = () => pipe<number, number, any>((input: unknown) => Number(input)).pipe(number())\nexport const coerceBoolean = () => pipe<boolean, boolean, any>((input: unknown) => Boolean(input)).pipe(boolean())\nexport const coerceTime = () => pipe<Date, Timeable, any>((input: unknown) => new Date(input as any)).pipe(time())\n","const type = {\n\tstring: (v: unknown): v is string => v?.constructor?.name === 'String',\n\tregex: (v: unknown): v is RegExp => v?.constructor?.name === 'RegExp',\n\tsymbol: (v: unknown): v is Symbol => v?.constructor?.name === 'Symbol',\n\tfunction: (v: unknown): v is Function => v?.constructor?.name === 'Function',\n\tbigint: (v: unknown): v is BigInt => v?.constructor?.name === 'BigInt',\n\tnumber: (v: unknown): v is number => v?.constructor?.name === 'Number' && !Number.isNaN(v),\n\tnan: (v: unknown): v is number => Number.isNaN(v),\n\tnull: (v: unknown): v is null => v === null,\n\tundefined: (v: unknown): v is undefined => v === undefined,\n\tboolean: (v: unknown): v is boolean => v?.constructor?.name === 'Boolean',\n\tarray: (v: unknown): v is unknown[] => Array.isArray(v),\n\tdate: (v: unknown): v is Date => v?.constructor?.name === 'Date' && v instanceof Date && !Number.isNaN(v.getTime()),\n\tset: (value: unknown): value is Set<unknown> => value?.constructor?.name === 'Set',\n\tobject: (value: unknown): value is object => value?.constructor?.name === 'Object',\n\tmap: (value: unknown): value is Map<unknown, unknown> => value?.constructor?.name === 'Map',\n}\n\nfunction getDiff(val1: any, val2: any, parent?: string) {\n\tif (!type.object(val1) || !type.object(val2)) return []\n\tconst keys = [...new Set(Object.keys(val1).concat(Object.keys(val2)))]\n\tconst diff: string[] = []\n\tfor (const key of keys) {\n\t\tconst parentKey = (parent ? `${parent}.` : '') + key\n\t\tif (!(key in val1) || !(key in val2)) {\n\t\t\tdiff.push(parentKey)\n\t\t\tcontinue\n\t\t}\n\t\tconst obj1 = val1[key]\n\t\tconst obj2 = val2[key]\n\t\tif (type.object(obj1) && type.object(obj2)) diff.push(...getDiff(obj1, obj2, parentKey))\n\t\telse if (!equal(obj1, obj2)) diff.push(parentKey)\n\t}\n\treturn diff\n}\n\nexport function equal(v1: unknown, v2: unknown): boolean {\n\tconst [val1, val2] = [v1, v2].map((v) => {\n\t\tif (type.map(v)) return Object.fromEntries(v.entries())\n\t\tif (type.set(v)) return [...v]\n\t\treturn v\n\t})\n\n\tif (val1 === val2) return true\n\n\tif (type.string(val1)) return val1 === val2\n\tif (type.number(val1)) return val1 === val2\n\tif (type.bigint(val1)) return val1 === val2\n\tif (type.boolean(val1)) return val1 === val2\n\tif (type.null(val1)) return val1 === val2\n\tif (type.undefined(val1)) return val1 === val2\n\tif (type.function(val1)) return val1 === val2\n\n\tif (type.regex(val1)) return type.regex(val2) && val1.source === val2.source\n\tif (type.nan(val1)) return type.nan(val2)\n\tif (type.date(val1)) return type.date(val2) && val1.getTime() === val2.getTime()\n\tif (type.array(val1)) {\n\t\tif (!type.array(val2)) return false\n\t\tif (val1.length !== val2.length) return false\n\t\treturn val1.every((c, i) => equal(c, val2.at(i)))\n\t}\n\n\tif (type.object(val1) && type.object(val2)) {\n\t\tconst keys1 = Object.keys(val1 ?? {})\n\t\tconst keys2 = Object.keys(val2 ?? {})\n\t\tif (keys1.length !== keys2.length) return false\n\t\tconst keys = [...new Set(keys1.concat(keys2))]\n\t\treturn keys.every((key) => key in val1 && key in val2 && equal(val1[key], val2[key]))\n\t}\n\n\treturn false\n}\n\nexport function diff(val1: unknown, val2: unknown) {\n\treturn getDiff(val1, val2)\n}\n\nexport function from(keys: string[]) {\n\tconst deepMerge = (from: object, to: object) =>\n\t\tObject.entries(from ?? {}).reduce(\n\t\t\t(merged, [key, obj]) => {\n\t\t\t\tmerged[key] = type.object(obj) ? deepMerge(obj, merged[key] ?? {}) : obj\n\t\t\t\treturn merged\n\t\t\t},\n\t\t\t{ ...to },\n\t\t)\n\n\tconst formObject = (key: string) =>\n\t\tkey\n\t\t\t.split('.')\n\t\t\t.reverse()\n\t\t\t.reduce<Record<string, any>>((acc, k) => ({ [k]: acc ?? true }), null as any)\n\n\treturn keys.map(formObject).reduce(deepMerge, {})\n}\n\nexport function merge(v1: unknown, v2: unknown) {\n\tif (type.undefined(v1)) return v2\n\tif (type.undefined(v2)) return v1\n\tif (type.array(v1) && type.array(v2)) {\n\t\treturn Array.from({ length: Math.max(v1.length, v2.length) }, (_, i) => merge(v1[i], v2[i]))\n\t}\n\tif (type.object(v1) && type.object(v2)) {\n\t\tconst keys = new Set([...Object.keys(v1), ...Object.keys(v2)])\n\t\treturn Array.from(keys).reduce(\n\t\t\t(acc, key) => {\n\t\t\t\tacc[key] = merge(v1[key], v2[key])\n\t\t\t\treturn acc\n\t\t\t},\n\t\t\t{} as Record<string, any>,\n\t\t)\n\t}\n\treturn v2\n}\n","import { PipeError } from './base'\nimport { pipe } from './base/pipes'\nimport { equal } from '../utils/differ'\nimport { execValueFunction, ValueFunction } from '../utils/functions'\n\nexport const custom = <T>(condition: (input: T) => boolean, err = `doesn't pass custom rule`) =>\n\tpipe<T, T, any>((input) => {\n\t\tif (condition(input)) return input as T\n\t\tthrow PipeError.root(err, input)\n\t}, {})\n\nexport const eq = <T>(compare: ValueFunction<T>, err?: string) =>\n\tpipe<T, T, any>(\n\t\t(input, context) => {\n\t\t\tconst comp = execValueFunction(context.eq ?? compare)\n\t\t\tif (input === comp || equal(input, comp)) return input as T\n\t\t\tthrow PipeError.root(err ?? `is not equal to ${comp}`, input)\n\t\t},\n\t\t{ context: () => ({ eq: compare }), schema: (context) => ({ const: execValueFunction(context.eq ?? compare) }) },\n\t)\n\nexport const is = eq\n\nexport const ne = <T>(compare: ValueFunction<T>, err?: string) =>\n\tpipe<T, T, any>(\n\t\t(input, context) => {\n\t\t\tconst comp = execValueFunction(context.eq ?? compare)\n\t\t\tif (!equal(input, comp) && input !== comp) return input as T\n\t\t\tthrow PipeError.root(err ?? `is equal to ${comp}`, input)\n\t\t},\n\t\t{ context: () => ({ ne: compare }), schema: (context) => ({ not: { const: execValueFunction(context.eq ?? compare) } }) },\n\t)\n\nconst inArray = <T>(array: ValueFunction<Readonly<T[]>>, err?: string) =>\n\tpipe<T, T, any>(\n\t\t(input, context) => {\n\t\t\tconst arr = execValueFunction(context.in ?? array)\n\t\t\tif (arr.find((x) => equal(input, x))) return input as T\n\t\t\tthrow PipeError.root(err ?? `is not in the list: [${arr.join(',')}]`, input)\n\t\t},\n\t\t{ context: () => ({ in: array }), schema: (context) => ({ enum: [...execValueFunction(context.in ?? array)] }) },\n\t)\n\nexport const nin = <T>(array: ValueFunction<Readonly<T[]>>, err?: string) =>\n\tpipe<T, T, any>(\n\t\t(input, context) => {\n\t\t\tconst arr = execValueFunction(context.nin ?? array)\n\t\t\tif (!arr.find((x) => equal(input, x))) return input as T\n\t\t\tthrow PipeError.root(err ?? `is in the list: [${arr.join(',')}]`, input)\n\t\t},\n\t\t{ context: () => ({ nin: array }), schema: (context) => ({ not: { enum: [...execValueFunction(context.nin ?? array)] } }) },\n\t)\n\nfunction itemType(input: unknown) {\n\treturn input?.constructor?.name === 'String' ? 'characters' : 'items'\n}\n\nexport const has = <T extends { length: number }>(length: ValueFunction<number>, err?: string) =>\n\tpipe<T, T, any>(\n\t\t(input, context) => {\n\t\t\tif (input.length === execValueFunction(context.has ?? length)) return input\n\t\t\tthrow PipeError.root(err ?? `must contain ${length} ${itemType(input)}`, input)\n\t\t},\n\t\t{\n\t\t\tcontext: () => ({ has: length }),\n\t\t\tschema: (context) => {\n\t\t\t\tconst val = execValueFunction(context.has ?? length)\n\t\t\t\treturn {\n\t\t\t\t\tminItems: val,\n\t\t\t\t\tmaxItems: val,\n\t\t\t\t\tminLength: val,\n\t\t\t\t\tmaxLength: val,\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t)\n\nexport const min = <T extends { length: number }>(length: ValueFunction<number>, err?: string) =>\n\tpipe<T, T, any>(\n\t\t(input, context) => {\n\t\t\tconst len = execValueFunction(context.min ?? length)\n\t\t\tif (input.length >= len) return input\n\t\t\tthrow PipeError.root(err ?? `must contain ${len} or more ${itemType(input)}`, input)\n\t\t},\n\t\t{\n\t\t\tcontext: () => ({ min: length }),\n\t\t\tschema: (context) => {\n\t\t\t\tconst val = execValueFunction(context.min ?? length)\n\t\t\t\treturn { minItems: val, minLength: val }\n\t\t\t},\n\t\t},\n\t)\n\nexport const max = <T extends { length: number }>(length: ValueFunction<number>, err?: string) =>\n\tpipe<T, T, any>(\n\t\t(input, context) => {\n\t\t\tconst len = execValueFunction(context.max ?? length)\n\t\t\tif (input.length <= len) return input\n\t\t\tthrow PipeError.root(err ?? `must contain ${len} or less ${itemType(input)}`, input)\n\t\t},\n\t\t{\n\t\t\tcontext: () => ({ max: length }),\n\t\t\tschema: (context) => {\n\t\t\t\tconst val = execValueFunction(context.min ?? length)\n\t\t\t\treturn { maxItems: val, maxLength: val }\n\t\t\t},\n\t\t},\n\t)\n\nexport { inArray as in }\n","import { PipeError } from './base'\nimport { pipe } from './base/pipes'\nimport { execValueFunction, ValueFunction } from '../utils/functions'\n\nexport interface File {\n\ttype: string\n}\n\nconst isFile = (v: unknown): v is File => typeof v === 'object' && !!v && 'type' in v\nconst isMimeType = (str: string) => /^[a-zA-Z0-9!#$&^_.+-]+\\/[a-zA-Z0-9!#$&^_.+-]+$/.test(str)\n\nexport const file = <T extends File>(err = 'is not a recognized file') =>\n\tpipe<T, T, any>(\n\t\t(input) => {\n\t\t\tif (isFile(input) && isMimeType(input.type)) return input as T\n\t\t\tthrow PipeError.root(err, input)\n\t\t},\n\t\t{ schema: () => ({ type: 'string', format: 'binary' }) },\n\t)\n\nexport const image = <T extends File>(err = 'is not a recognized image file') =>\n\tpipe<T, T, any>((input) => {\n\t\tif (isFile(input) && isMimeType(input.type) && input.type.startsWith('image/')) return input\n\t\tthrow PipeError.root(err, input)\n\t})\n\nexport const audio = <T extends File>(err = 'is not a recognized audio file') =>\n\tpipe<T, T, any>((input) => {\n\t\tif (isFile(input) && isMimeType(input.type) && input.type.startsWith('audio/')) return input\n\t\tthrow PipeError.root(err, input)\n\t})\n\nexport const video = <T extends File>(err = 'is not a recognized video file') =>\n\tpipe<T, T, any>((input) => {\n\t\tif (isFile(input) && isMimeType(input.type) && input.type.startsWith('video/')) return input\n\t\tthrow PipeError.root(err, input)\n\t})\n\nexport const fileType = <T extends File>(typesFn: ValueFunction<string | string[]>, err = 'is not a supported file') =>\n\tpipe<T, T, any>((input) => {\n\t\tif (isFile(input) && isMimeType(input.type)) {\n\t\t\tconst types = execValueFunction(typesFn)\n\t\t\tconst fileTypes = Array.isArray(types) ? types : [types]\n\t\t\tif (fileTypes.some((type) => input.type === type)) return input\n\t\t}\n\t\tthrow PipeError.root(err, input)\n\t})\n","import { Pipe, PipeContext, PipeError, PipeInput, PipeOutput } from './base'\nimport { merge as differMerge } from '../utils/differ'\nimport { wrapInTryCatch } from '../utils/functions'\nimport { assert, branch, pipe, schema, validate } from './base/pipes'\n\nexport const or = <T extends Pipe<any, any, any>[]>(pipes: T) =>\n\tpipe<PipeInput<T[number]>, PipeOutput<T[number]>, PipeContext<T[number]>>(\n\t\t(input) => {\n\t\t\tif (pipes.length === 0) return input as any\n\t\t\tconst errors: PipeError[] = []\n\t\t\tfor (const [idx, pipe] of Object.entries(pipes)) {\n\t\t\t\tconst validity = validate(pipe, input)\n\t\t\t\tif (validity.valid) return validity.value\n\t\t\t\terrors.push(PipeError.path(idx, validity.error, input))\n\t\t\t}\n\t\t\tthrow PipeError.rootFrom(errors, input)\n\t\t},\n\t\t{ schema: () => ({ oneOf: pipes.map((branch) => schema(branch)) }) },\n\t)\n\nexport const and = <T extends Pipe<any, any, any>>(pipes: T[]) =>\n\tpipe<PipeInput<T>, PipeOutput<T>, PipeContext<T>>(\n\t\t(input) => {\n\t\t\tfor (const [idx, pipe] of Object.entries(pipes)) {\n\t\t\t\tconst validity = validate(pipe, input)\n\t\t\t\tif (!validity.valid) throw PipeError.path(idx, validity.error, input)\n\t\t\t\tinput = validity.value as any\n\t\t\t}\n\t\t\treturn input as any\n\t\t},\n\t\t{ schema: () => ({ allOf: pipes.map((branch) => schema(branch)) }) },\n\t)\n\nexport const merge = <T1 extends Pipe<any, any, any>, T2 extends Pipe<any, any, any>>(branch1: T1, branch2: T2) =>\n\tpipe<PipeInput<T1> & PipeInput<T2>, PipeOutput<T1> & PipeOutput<T2>, PipeContext<T1> & PipeContext<T2>>(\n\t\t(input) => differMerge(assert(branch1, input), assert(branch2, input)),\n\t\t{ schema: () => ({ allOf: [schema(branch1), schema(branch2)] }) },\n\t)\n\nexport const discriminate = <T extends Record<PropertyKey, Pipe<any, any, any>>>(\n\tdiscriminator: (val: PipeInput<T[keyof T]>) => PropertyKey,\n\tschemas: T,\n\terr = 'doesnt match any of the schema',\n) =>\n\tpipe<PipeInput<T[keyof T]>, PipeOutput<T[keyof T]>, PipeContext<T[keyof T]>>(\n\t\t(input) => {\n\t\t\tconst accessor = wrapInTryCatch(() => discriminator(input))!\n\t\t\tif (!schemas[accessor]) throw PipeError.root(err, input)\n\t\t\treturn assert(schemas[accessor], input)\n\t\t},\n\t\t{\n\t\t\tschema: () => ({ oneOf: Object.values(schemas).map((s) => schema(s)) }),\n\t\t},\n\t)\n\nexport const fromJson = <T extends Pipe<any, any, any>>(pipe: T) =>\n\tbranch<T, PipeInput<T>, PipeOutput<T>, PipeContext<T>>(\n\t\tpipe,\n\t\t(input) => {\n\t\t\tconst validity = validate(pipe, input)\n\t\t\tif (validity.valid) return validity.value\n\t\t\tif (input?.constructor?.name !== 'String') throw validity.error\n\n\t\t\tconst parsed = wrapInTryCatch(() => JSON.parse(input), validity.error)\n\t\t\tif (parsed === validity.error) throw validity.error\n\t\t\treturn assert(pipe, parsed)\n\t\t},\n\t\t{\n\t\t\tcontext: (c) => c,\n\t\t\tschema: (s) => s,\n\t\t},\n\t)\n","import { PipeError } from './base'\nimport { pipe } from './base/pipes'\nimport { execValueFunction, ValueFunction } from '../utils/functions'\n\nexport const gt = (value: ValueFunction<number>, err?: string) =>\n\tpipe<number, number, any>(\n\t\t(input) => {\n\t\t\tconst v = execValueFunction(value)\n\t\t\tif (input > v) return input\n\t\t\tthrow PipeError.root(err ?? `must be greater than ${v}`, input)\n\t\t},\n\t\t{ schema: () => ({ exclusiveMinimum: execValueFunction(value) }) },\n\t)\n\nexport const gte = (value: ValueFunction<number>, err?: string) =>\n\tpipe<number, number, any>(\n\t\t(input) => {\n\t\t\tconst v = execValueFunction(value)\n\t\t\tif (input >= v) return input\n\t\t\tthrow PipeError.root(err ?? `must be greater than or equal to ${v}`, input)\n\t\t},\n\t\t{ schema: () => ({ minimum: execValueFunction(value) }) },\n\t)\n\nexport const lt = (value: ValueFunction<number>, err?: string) =>\n\tpipe<number, number, any>(\n\t\t(input) => {\n\t\t\tconst v = execValueFunction(value)\n\t\t\tif (input < v) return input\n\t\t\tthrow PipeError.root(err ?? `must be less than ${v}`, input)\n\t\t},\n\t\t{ schema: () => ({ exclusiveMaximum: execValueFunction(value) }) },\n\t)\n\nexport const lte = (value: ValueFunction<number>, err?: string) =>\n\tpipe<number, number, any>(\n\t\t(input) => {\n\t\t\tconst v = execValueFunction(value)\n\t\t\tif (input <= v) return input\n\t\t\tthrow PipeError.root(err ?? `must be less than or equal to ${v}`, input)\n\t\t},\n\t\t{ schema: () => ({ maximum: execValueFunction(value) }) },\n\t)\n\nexport const int = (err = 'is not an integer') =>\n\tpipe<number, number, any>(\n\t\t(input) => {\n\t\t\tif (input === parseInt(input as any)) return input\n\t\t\tthrow PipeError.root(err, input)\n\t\t},\n\t\t{ schema: () => ({ type: 'integer' }) },\n\t)\n\nexport const asRounded = (dp = 0) => pipe<number, number, any>((input) => Number(input.toFixed(dp)), {})\n","import { Pipe, PipeContext, PipeInput, PipeOutput } from './base'\nimport { assert, branch, validate } from './base/pipes'\nimport { execValueFunction, ValueFunction } from '../utils/functions'\nimport { DeepPartial } from '../utils/types'\n\nconst partial = <T extends Pipe<any, any, any>, P, C>(\n\tpipe: T,\n\tpartialCondition: (i: unknown) => boolean,\n\tforce: boolean,\n\tconfig: Parameters<typeof branch<T, PipeInput<T> | P, PipeOutput<T> | P, PipeContext<T> & C>>[2],\n) =>\n\tbranch<T, PipeInput<T> | P, PipeOutput<T> | P, PipeContext<T> & C>(\n\t\tpipe,\n\t\t(input) => {\n\t\t\tconst isPartial = partialCondition(input)\n\t\t\tif (isPartial) return input as P\n\t\t\tconst validity = validate(pipe, input)\n\t\t\tif (validity.valid) return validity.value as PipeOutput<T>\n\t\t\tif (force) throw validity.error\n\t\t\treturn input as P\n\t\t},\n\t\tconfig,\n\t)\n\nexport const nullable = <T extends Pipe<any, any, any>>(branch: T) =>\n\tpartial<T, null, any>(branch, (i) => i === null, true, {\n\t\tschema: (schema) => ({ oneOf: [schema, { type: 'null' }] }),\n\t\tcontext: (c) => c,\n\t})\n\nexport const optional = <T extends Pipe<any, any, any>>(branch: T) =>\n\tpartial<T, undefined, any>(branch, (i) => i === undefined, true, {\n\t\tschema: (schema) => schema,\n\t\tcontext: (c) => ({ ...c, optional: true }),\n\t})\n\nexport const nullish = <T extends Pipe<any, any, any>>(branch: T) =>\n\tpartial<T, null | undefined, any>(branch, (i) => i === null || i === undefined, true, {\n\t\tschema: (schema) => ({ oneOf: [schema, { type: 'null' }] }),\n\t\tcontext: (c) => ({ ...c, optional: true }),\n\t})\n\nexport const conditional = <T extends Pipe<any, any, any>>(branch: T, condition: () => boolean) =>\n\tpartial<T, never, any>(branch, () => !condition(), condition(), {\n\t\tschema: (schema) => schema,\n\t\tcontext: (c) => ({ ...c, optional: true }),\n\t})\n\ntype DefaultValue<T> = ValueFunction<T extends object ? DeepPartial<T> : T>\n\nexport const defaults = <T extends Pipe<any, any, any>>(pipe: T, def: DefaultValue<PipeInput<T>>) =>\n\tbranch<T, PipeInput<T> | undefined, Exclude<PipeOutput<T>, undefined>, any>(\n\t\tpipe,\n\t\t(input, context) => assert(pipe, input !== undefined ? input : execValueFunction(context?.defaults ?? def)) as any,\n\t\t{\n\t\t\tschema: (s, c) => ({ ...s, default: execValueFunction(c.defaults ?? def) }),\n\t\t\tcontext: (c) => ({ ...c, defaults: def, optional: true }),\n\t\t},\n\t)\n\nconst onCatch = <T extends Pipe<any, any, any>>(pipe: T, def: DefaultValue<PipeInput<T>>) =>\n\tbranch<T, PipeInput<T>, PipeOutput<T>, PipeContext<T>>(\n\t\tpipe,\n\t\t(input, context) => {\n\t\t\tconst validity = validate(pipe, input)\n\t\t\tif (validity.valid) return validity.value\n\t\t\treturn execValueFunction(context?.catch ?? def) as any\n\t\t},\n\t\t{\n\t\t\tschema: (s, c) => ({ ...s, default: execValueFunction(c.catch ?? def) }),\n\t\t\tcontext: (c) => ({ ...c, catch: def }),\n\t\t},\n\t)\nexport { onCatch as catch }\n","import { PipeError, PipeInput, PipeOutput, type Pipe } from './base'\nimport { context, branch, pipe, schema, validate } from './base/pipes'\n\ntype ObjectPipe<T extends Record<string, Pipe<any, any, any>>> = Pipe<\n\t{ [K in keyof T]: PipeInput<T[K]> },\n\t{ [K in keyof T]: PipeOutput<T[K]> },\n\tany\n>\n\nexport const object = <T extends Record<string, Pipe<any, any, any>>>(pipes: T) =>\n\tpipe<PipeInput<ObjectPipe<T>>, PipeOutput<ObjectPipe<T>>, any>(\n\t\t(input, context) => {\n\t\t\tif (typeof input !== 'object' || input === null || Array.isArray(input)) throw PipeError.root('is not an object', input)\n\t\t\tconst obj = {} as any\n\t\t\tconst errors: PipeError[] = []\n\t\t\tfor (const key of context.objectKeys ?? Object.keys(pipes)) {\n\t\t\t\tif (!(key in pipes)) continue\n\t\t\t\tconst value = input[key]\n\t\t\t\tconst validity = validate(pipes[key], value)\n\t\t\t\tif (!validity.valid) errors.push(PipeError.path(key, validity.error, value))\n\t\t\t\telse obj[key] = validity.value\n\t\t\t}\n\t\t\tif (errors.length) throw PipeError.rootFrom(errors, input)\n\t\t\treturn obj\n\t\t},\n\t\t{\n\t\t\tschema: () => ({\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: Object.fromEntries(Object.entries(pipes ?? {}).map(([key, pipe]) => [key, schema(pipe)])),\n\t\t\t\trequired: Object.entries(pipes ?? {})\n\t\t\t\t\t.filter(([, pipe]) => !context(pipe).optional)\n\t\t\t\t\t.map(([key]) => key),\n\t\t\t\tadditionalProperties: false,\n\t\t\t}),\n\t\t\tcontext: () => ({ objectKeys: Object.keys(pipes) }),\n\t\t},\n\t)\n\nexport const objectPick = <T extends ObjectPipe<Record<string, Pipe<any, any, any>>>, S extends ReadonlyArray<keyof PipeInput<T> & string>>(\n\tpipe: T,\n\tkeys: S,\n) =>\n\tbranch<T, Pick<PipeInput<T>, S[number]>, Pick<PipeOutput<T>, S[number]>, any>(pipe, pipe.fn as any, {\n\t\tschema: (s) => ({\n\t\t\t...s,\n\t\t\tproperties: Object.fromEntries(Object.entries(s.properties ?? {}).filter(([key]) => keys.includes(key as S[number]))),\n\t\t\trequired: (s.required ?? []).filter((key) => keys.includes(key as S[number])),\n\t\t}),\n\t\tcontext: (c) => ({\n\t\t\t...c,\n\t\t\tobjectKeys: (c.objectKeys ?? []).filter((key) => keys.includes(key as S[number])),\n\t\t}),\n\t})\n\nexport const objectOmit = <T extends ObjectPipe<Record<string, Pipe<any, any, any>>>, S extends ReadonlyArray<keyof PipeInput<T> & string>>(\n\tpipe: T,\n\tkeys: S,\n) =>\n\tbranch<T, Omit<PipeInput<T>, S[number]>, Omit<PipeOutput<T>, S[number]>, any>(pipe, pipe.fn as any, {\n\t\tschema: (s) => ({\n\t\t\t...s,\n\t\t\tproperties: Object.fromEntries(Object.entries(s.properties ?? {}).filter(([key]) => !keys.includes(key as S[number]))),\n\t\t\trequired: (s.required ?? []).filter((key) => !keys.includes(key as S[number])),\n\t\t}),\n\t\tcontext: (c) => ({\n\t\t\t...c,\n\t\t\tobjectKeys: (c.objectKeys ?? []).filter((key) => !keys.includes(key as S[number])),\n\t\t}),\n\t})\n\nexport const record = <K extends Pipe<any, PropertyKey, any>, V extends Pipe<any, any, any>>(kPipe: K, vPipe: V) =>\n\tpipe<Record<PipeInput<K>, PipeInput<V>>, Record<PipeOutput<K>, PipeOutput<V>>, any>(\n\t\t(input: unknown) => {\n\t\t\tif (typeof input !== 'object' || input === null || Array.isArray(input)) throw PipeError.root(['is not an object'], input)\n\t\t\tconst obj = {} as object\n\t\t\tconst errors: PipeError[] = []\n\t\t\tfor (const [k, v] of Object.entries(input)) {\n\t\t\t\tconst kValidity = validate(kPipe, k)\n\t\t\t\tconst vValidity = validate(vPipe, v)\n\t\t\t\tif (!kValidity.valid) errors.push(PipeError.path(k, kValidity.error, k))\n\t\t\t\tif (!vValidity.valid) errors.push(PipeError.path(k, vValidity.error, v))\n\t\t\t\tif (kValidity.valid && vValidity.valid) {\n\t\t\t\t\tif (k !== kValidity.value) delete obj[k]\n\t\t\t\t\tobj[kValidity.value as any] = vValidity.value\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (errors.length) throw PipeError.rootFrom(errors, input)\n\t\t\treturn obj as any\n\t\t},\n\t\t{\n\t\t\tschema: () => ({\n\t\t\t\ttype: 'object',\n\t\t\t\tpropertyNames: schema(kPipe),\n\t\t\t\tadditionalProperties: schema(vPipe),\n\t\t\t}),\n\t\t},\n\t)\n\nexport const asMap = <K extends PropertyKey, V>() =>\n\tpipe<Record<K, V>, Map<K, V>, any>((input) => new Map<K, V>(Object.entries(input) as any), {})\n","import url from 'url-regex-safe'\n\nexport const urlRegex = url() as RegExp\nexport const emailRegex =\n\t/^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n","import { Pipe, PipeError } from './base'\nimport { assert, branch, pipe } from './base/pipes'\nimport * as fns from '../utils/functions'\nimport { emailRegex, urlRegex } from '../utils/regexes'\n\nexport const email = (err = 'is not a valid email') =>\n\tpipe<string, string, any>(\n\t\t(input) => {\n\t\t\tif (emailRegex.test(input)) return input\n\t\t\tthrow PipeError.root(err, input)\n\t\t},\n\t\t{ schema: () => ({ format: 'email' }) },\n\t)\n\nexport const url = (err = 'is not a valid url') =>\n\tpipe<string, string, any>(\n\t\t(input) => {\n\t\t\tif (urlRegex.test(input)) return input\n\t\t\tthrow PipeError.root(err, input)\n\t\t},\n\t\t{ schema: () => ({ format: 'uri' }) },\n\t)\n\nexport const withStrippedHtml = (pipe: Pipe<string, string, any>) =>\n\tbranch<Pipe<string, string, any>, string, string, any>(\n\t\tpipe,\n\t\t(input) => {\n\t\t\tconst stripped = fns.stripHTML(input)\n\t\t\tassert(pipe, stripped)\n\t\t\treturn input\n\t\t},\n\t\t{\n\t\t\tcontext: (c) => c,\n\t\t\tschema: (s) => s,\n\t\t},\n\t)\n\nexport const asTrimmed = () => pipe<string, string, any>((input) => input.trim(), {})\n\nexport const asLowercased = () => pipe<string, string, any>((input) => input.toLowerCase(), {})\n\nexport const asUppercased = () => pipe<string, string, any>((input) => input.toUpperCase(), {})\n\nexport const asCapitalized = () => pipe<string, string, any>((input) => fns.capitalize(input), {})\n\nexport const asStrippedHtml = () => pipe<string, string, any>((input) => fns.stripHTML(input), {})\n\nexport const asSliced = (length: number) => pipe<string, string, any>((input) => fns.trimToLength(input, length), {})\n","const DATA_URL_DEFAULT_MIME_TYPE = 'text/plain'\nconst DATA_URL_DEFAULT_CHARSET = 'us-ascii'\n\nconst normalizeDataURL = (urlString: string) => {\n\tconst match = /^data:(?<type>[^,]*?),(?<data>[^#]*?)(?:#(?<hash>.*))?$/.exec(urlString)\n\n\tif (!match) throw new Error(`Invalid URL: ${urlString}`)\n\tif (!match.groups) throw new Error(`Invalid URL: ${urlString}`)\n\n\tconst { type, data, hash } = match.groups\n\tconst mediaType = type.split(';')\n\n\tlet isBase64 = false\n\tif (mediaType[mediaType.length - 1] === 'base64') {\n\t\tmediaType.pop()\n\t\tisBase64 = true\n\t}\n\n\t// Lowercase MIME type\n\tconst mimeType = (mediaType.shift() || '').toLowerCase()\n\tconst attributes = mediaType\n\t\t.map((attribute) => {\n\t\t\tconst val = attribute.split('=').map((string) => string.trim())\n\t\t\tconst key = val[0]\n\t\t\tlet value = val[1] ?? ''\n\t\t\tif (key === 'charset') {\n\t\t\t\tvalue = value.toLowerCase()\n\t\t\t\tif (value === DATA_URL_DEFAULT_CHARSET) return ''\n\t\t\t}\n\t\t\treturn `${key}${value ? `=${value}` : ''}`\n\t\t})\n\t\t.filter(Boolean)\n\n\tconst normalizedMediaType = [...attributes]\n\tif (isBase64) normalizedMediaType.push('base64')\n\tif (normalizedMediaType.length > 0 || (mimeType && mimeType !== DATA_URL_DEFAULT_MIME_TYPE)) normalizedMediaType.unshift(mimeType)\n\treturn `data:${normalizedMediaType.join(';')},${isBase64 ? data.trim() : data}${hash ? `#${hash}` : ''}`\n}\n\nexport const normalizeUrl = (urlString: string) => {\n\turlString = urlString.trim()\n\n\tif (/^data:/i.test(urlString)) return normalizeDataURL(urlString)\n\tif (/^view-source:/i.test(urlString)) throw new Error('`view-source:` is not supported as it is a non-standard protocol')\n\n\tconst hasRelativeProtocol = urlString.startsWith('//')\n\tconst isRelativeUrl = !hasRelativeProtocol && /^\\.*\\//.test(urlString)\n\tif (!isRelativeUrl) urlString = urlString.replace(/^(?!(?:\\w+:)?\\/\\/)|^\\/\\//, 'http:')\n\n\tconst urlObject = new URL(urlString)\n\turlObject.username = urlObject.password = ''\n\turlObject.hash = urlObject.hash.replace(/#?:~:text.*?$/i, '')\n\n\tif (urlObject.pathname) {\n\t\tconst protocolRegex = /\\b[a-z][a-z\\d+\\-.]{1,50}:\\/\\//g\n\n\t\tlet lastIndex = 0\n\t\tlet result = ''\n\t\twhile (protocolRegex.exec(urlObject.pathname)) {\n\t\t\tconst match = protocolRegex.exec(urlObject.pathname)!\n\t\t\tconst protocol = match[0]\n\t\t\tconst protocolAtIndex = match.index\n\t\t\tconst intermediate = urlObject.pathname.slice(lastIndex, protocolAtIndex)\n\n\t\t\tresult += intermediate.replace(/\\/{2,}/g, '/')\n\t\t\tresult += protocol\n\t\t\tlastIndex = protocolAtIndex + protocol.length\n\t\t}\n\n\t\tconst remnant = urlObject.pathname.slice(lastIndex, urlObject.pathname.length)\n\t\tresult += remnant.replace(/\\/{2,}/g, '/')\n\n\t\turlObject.pathname = result\n\t}\n\n\t// Decode URI octets\n\tif (urlObject.pathname) urlObject.pathname = decodeURI(urlObject.pathname)\n\tif (urlObject.hostname) urlObject.hostname = urlObject.hostname.replace(/\\.$/, '')\n\turlObject.pathname = urlObject.pathname.replace(/\\/$/, '')\n\n\tconst oldUrlString = urlString\n\turlString = urlObject.toString()\n\n\tif (urlObject.pathname === '/' && !oldUrlString.endsWith('/') && urlObject.hash === '') urlString = urlString.replace(/\\/$/, '')\n\tif (urlObject.pathname === '/' && urlObject.hash === '') urlString = urlString.replace(/\\/$/, '')\n\n\treturn urlString\n}\n","import { v } from '../../api'\nimport { urlRegex } from '../regexes'\nimport { normalizeUrl } from './urls/normalize'\n\nexport const capitalize = (text: string) => {\n\tif (text === null || text === undefined) return text\n\ttext = text.toString()\n\tconst c = (v: string) => (v[0]?.toUpperCase() ?? '') + v.slice(1)\n\treturn text.trim().split(' ').map(c).join(' ')\n}\n\nexport const stripHTML = (html: string) => {\n\tif (html === null || html === undefined) return html\n\treturn (\n\t\thtml\n\t\t\t?.toString()\n\t\t\t?.trim()\n\t\t\t.replace(/<[^>]+>/g, '') ?? ''\n\t)\n}\n\nexport const trimToLength = (body: string, length: number) => {\n\tif (body === null || body === undefined) return body\n\n\tbody = body.toString()\n\tif (body.length <= length) return body\n\n\tconst indexOfSpace = body.indexOf(' ', length)\n\tconst indexToTrim = indexOfSpace === -1 ? length : indexOfSpace\n\treturn `${body.slice(0, indexToTrim)}...`\n}\n\nexport const extractUrls = (text: string) => {\n\tconst urls = text.match(urlRegex) || ([] as string[])\n\treturn urls\n\t\t.filter((url, index) => urls.indexOf(url) === index)\n\t\t.map((url) => {\n\t\t\turl = url.trim()\n\t\t\treturn {\n\t\t\t\toriginal: url,\n\t\t\t\tnormalized: normalizeUrl(url.replace(/\\.+$/, '')),\n\t\t\t}\n\t\t})\n}\n\nexport const formatNumber = (num: number, dp?: number) =>\n\tIntl.NumberFormat('en', { notation: 'compact', ...(dp ? { maximumFractionDigits: dp } : {}) }).format(\n\t\tv.validate(v.number(), num).valid ? num : 0,\n\t)\n\nexport const pluralize = (count: number, singular: string, plural: string) => (Math.round(count) === 1 ? singular : plural)\n\nexport const getRandomValue = () => Date.now() + Math.random().toString(36)\n\nexport const groupBy = <Type, Unique extends string | number>(array: Array<Type>, func: (item: Type) => Unique) =>\n\tarray.reduce(\n\t\t(acc, cur) => {\n\t\t\tconst key = func(cur)\n\t\t\tconst index = acc.findIndex((a) => a.key === key)\n\t\t\tif (index === -1) acc.push({ key, values: [cur] })\n\t\t\telse acc[index].values.push(cur)\n\t\t\treturn acc\n\t\t},\n\t\t[] as { key: Unique; values: Type[] }[],\n\t) as { key: Unique; values: Type[] }[]\n\nexport const getAlphabet = (num: number) => 'abcdefghijklmnopqrstuv'.split('')[num] ?? 'a'\n\nexport const addToArray = <T>(array: T[], item: T, getKey: (a: T) => any, getComparer: (a: T) => number | string, asc = false) => {\n\tconst existingIndex = array.findIndex((el) => getKey(el) === getKey(item))\n\tconst index = array.findIndex((el) => (asc ? getComparer(el) >= getComparer(item) : getComparer(el) <= getComparer(item)))\n\tif (existingIndex !== -1 && existingIndex === index) {\n\t\tarray.splice(existingIndex, 1, item)\n\t\treturn array\n\t}\n\tif (existingIndex !== -1 && existingIndex !== index) array.splice(existingIndex, 1)\n\tif (index !== -1) array.splice(index, 0, item)\n\telse if (array.length === 0) array.push(item)\n\telse {\n\t\tconst existingIsGreater = getComparer(array[0]) >= getComparer(item)\n\t\tif (existingIsGreater) asc ? array.unshift(item) : array.push(item)\n\t\telse asc ? array.push(item) : array.unshift(item)\n\t}\n\treturn array\n}\n\nexport const divideByZero = (num: number, den: number) => (den === 0 ? 0 : num / den)\n\nexport const getPercentage = (num: number, den: number) => 100 * (divideByZero(num, den) > 1 ? 1 : divideByZero(num, den))\n\nexport const getRandomSample = <Type>(population: Array<Type>, n: number) => {\n\tconst indexes = [] as number[]\n\tconst indexesObject = {} as Record<number, boolean>\n\n\twhile (indexes.length < n && indexes.length < population.length) {\n\t\tconst random = Math.floor(Math.random() * population.length)\n\t\tif (random in indexesObject) continue\n\t\tindexesObject[random] = true\n\t\tindexes.push(random)\n\t}\n\n\treturn indexes.map((idx) => population[idx])\n}\n\nexport const shuffleArray = <Type>(array: Array<Type>) => [...array].sort(() => Math.random() - 0.5)\n\nexport const chunkArray = <T>(arr: T[], size: number) => {\n\tconst chunks: T[][] = []\n\tfor (let i = 0; i < arr.length; i += size) chunks.push(arr.slice(i, i + size))\n\treturn chunks\n}\n\nexport const wrapInTryCatch = <T>(fn: () => T, defaultValue?: T) => {\n\ttry {\n\t\treturn fn()\n\t} catch {\n\t\treturn defaultValue\n\t}\n}\n\nexport const compareTwoStrings = (first: string, second: string) => {\n\tfirst = first.replace(/\\s+/g, '')\n\tsecond = second.replace(/\\s+/g, '')\n\n\tif (first === second) return 1\n\tif (first.length < 2 || second.length < 2) return 0\n\n\tconst firstBigrams = new Map()\n\tfor (let i = 0; i < first.length - 1; i++) {\n\t\tconst bigram = first.substring(i, i + 2)\n\t\tconst count = firstBigrams.has(bigram) ? firstBigrams.get(bigram) + 1 : 1\n\t\tfirstBigrams.set(bigram, count)\n\t}\n\n\tlet intersectionSize = 0\n\tfor (let i = 0; i < second.length - 1; i++) {\n\t\tconst bigram = second.substring(i, i + 2)\n\t\tconst count = firstBigrams.has(bigram) ? firstBigrams.get(bigram) : 0\n\n\t\tif (count > 0) {\n\t\t\tfirstBigrams.set(bigram, count - 1)\n\t\t\tintersectionSize++\n\t\t}\n\t}\n\n\treturn (2.0 * intersectionSize) / (first.length + second.length - 2)\n}\n\nexport type ValueFunction<T> = T | (() => T)\nexport function execValueFunction<T>(def: ValueFunction<T>): T {\n\treturn typeof def === 'function' ? (def as any)() : def\n}\n","import { v } from '../api'\n\nconst Base32Chars = '0123456789bcdefghjkmnpqrstuvwxyz'\nconst Base2Chars = '01'\n\nfunction base10ToBaseX(num: number, base: number, chars: string) {\n\tconst charsObj = Object.fromEntries(\n\t\tchars\n\t\t\t.toLowerCase()\n\t\t\t.split('')\n\t\t\t.map((value, index) => [index, value]),\n\t)\n\tconst bits: string[] = []\n\tif (num === 0) return '0'\n\twhile (num > 0) {\n\t\tbits.push(charsObj[num % base] ?? '')\n\t\tnum = Math.floor(num / base)\n\t}\n\treturn bits.reverse().join('')\n}\n\nfunction baseXToBase10(num: string, base: number, chars: string) {\n\tconst charsObj = Object.fromEntries(\n\t\tchars\n\t\t\t.toLowerCase()\n\t\t\t.split('')\n\t\t\t.map((value, index) => [value, index]),\n\t)\n\n\treturn num\n\t\t.toLowerCase()\n\t\t.split('')\n\t\t.reduce((acc, cur, index, arr) => {\n\t\t\tconst pos = charsObj[cur] ?? 0\n\t\t\treturn acc + pos * Math.pow(base, arr.length - index - 1)\n\t\t}, 0)\n}\n\nfunction dichotomy(min: number, max: number, bits: string) {\n\tconst res = bits\n\t\t.split('')\n\t\t.concat('')\n\t\t.reduce(\n\t\t\t(acc, cur) => {\n\t\t\t\tconst mid = (min + max) / 2\n\t\t\t\tconst error = (max - min) / 2\n\t\t\t\tacc.mid = mid\n\t\t\t\tacc.error = error\n\t\t\t\tif (cur === '1') min = mid\n\t\t\t\telse max = mid\n\t\t\t\treturn acc\n\t\t\t},\n\t\t\t{ mid: 0, error: 0 },\n\t\t)\n\tconst value = res.mid - res.error\n\treturn { value, interval: res.error * 2 }\n}\n\nfunction parseCoords(hash: string) {\n\thash = v.assert(v.string().pipe(v.min(1)), hash)\n\tconst base10 = baseXToBase10(hash, 32, Base32Chars)\n\tconst base2 = base10ToBaseX(base10, 2, Base2Chars).padStart(hash.length * 5, '0')\n\n\treturn base2.split('').reduce(\n\t\t(acc, cur, index) => {\n\t\t\tif (index % 2 === 0) acc.long += cur\n\t\t\telse acc.lat += cur\n\t\t\treturn acc\n\t\t},\n\t\t{ lat: '', long: '' },\n\t)\n}\n\nfunction wrap(num: number, base: number) {\n\tif (num < -base) num = num + base * 2\n\tif (num > +base) num = num - base * 2\n\treturn num\n}\n\nexport function decode(hash: string): [number, number] {\n\tconst coords = parseCoords(hash)\n\tconst lat = dichotomy(-90, 90, coords.lat).value\n\tconst long = dichotomy(-180, 180, coords.long).value\n\treturn [lat, long]\n}\n\nexport function encode(coords: [number, number]): string {\n\tcoords = v.assert(v.tuple([v.number(), v.number()]), coords)\n\n\tlet idx = 0,\n\t\tbit = 0,\n\t\tevenBit = true,\n\t\tgeohash = ''\n\tconst mins = [-90, -180],\n\t\tmaxs = [90, 180]\n\n\twhile (geohash.length < 18) {\n\t\tconst key = evenBit ? 1 : 0\n\t\tconst mid = (mins[key] + maxs[key]) / 2\n\t\tif (coords[key] >= mid) {\n\t\t\tidx = idx * 2 + 1\n\t\t\tmins[key] = mid\n\t\t} else {\n\t\t\tidx = idx * 2\n\t\t\tmaxs[key] = mid\n\t\t}\n\t\tevenBit = !evenBit\n\n\t\tbit += 1\n\t\tif (bit === 5) {\n\t\t\tgeohash += base10ToBaseX(idx, 32, Base32Chars)\n\t\t\tbit = idx = 0\n\t\t}\n\t}\n\treturn geohash.replace(/0+$/, '')\n}\n\nexport function neighbors(hash: string) {\n\tconst coords = parseCoords(hash)\n\tconst lat = dichotomy(-90, 90, coords.lat)\n\tconst long = dichotomy(-180, 180, coords.long)\n\tconst neighbors = [\n\t\t[lat.value - lat.interval, long.value - long.interval],\n\t\t[lat.value - lat.interval, long.value],\n\t\t[lat.value - lat.interval, long.value + long.interval],\n\n\t\t[lat.value, long.value - long.interval],\n\t\t[lat.value, long.value + long.interval],\n\n\t\t[lat.value + lat.interval, long.value - long.interval],\n\t\t[lat.value + lat.interval, long.value],\n\t\t[lat.value + lat.interval, long.value + long.interval],\n\t].map(([lat, long]) => encode([wrap(lat, 90), wrap(long, 180)]))\n\treturn {\n\t\tbl: neighbors[0],\n\t\tbc: neighbors[1],\n\t\tbr: neighbors[2],\n\t\tcl: neighbors[3],\n\t\tcr: neighbors[4],\n\t\ttl: neighbors[5],\n\t\ttc: neighbors[6],\n\t\ttr: neighbors[7],\n\t}\n}\n"],"mappings":"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","names":["merge","url","pipe","schema","meta","context","branch","pipe","context","diff","from","context","array","type","pipe","branch","merge","pipe","branch","schema","context","context","pipe","url","url","pipe","type","url","array","util","keys","min","max","neighbors","lat","long"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var le=Object.create;var A=Object.defineProperty;var me=Object.getOwnPropertyDescriptor;var fe=Object.getOwnPropertyNames;var ye=Object.getPrototypeOf,de=Object.prototype.hasOwnProperty;var F=(e,t)=>{for(var n in t)A(e,n,{get:t[n],enumerable:!0})},X=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of fe(t))!de.call(e,o)&&o!==n&&A(e,o,{get:()=>t[o],enumerable:!(r=me(t,o))||r.enumerable});return e};var Y=(e,t,n)=>(n=e!=null?le(ye(e)):{},X(t||!e||!e.__esModule?A(n,"default",{value:e,enumerable:!0}):n,e)),he=e=>X(A({},"__esModule",{value:!0}),e);var Wt={};F(Wt,{DataClass:()=>H,PipeError:()=>s,addToArray:()=>Rt,capitalize:()=>J,chunkArray:()=>Mt,compareTwoStrings:()=>Lt,differ:()=>U,divideByZero:()=>_,execValueFunction:()=>p,extractUrls:()=>Kt,formatNumber:()=>At,geohash:()=>G,getAlphabet:()=>$t,getPercentage:()=>Vt,getRandomSample:()=>Nt,getRandomValue:()=>Ct,groupBy:()=>Et,pluralize:()=>Ft,shuffleArray:()=>Dt,stripHTML:()=>R,trimToLength:()=>B,v:()=>d,wrapInTryCatch:()=>P});module.exports=he(Wt);var I=Y(require("util"),1);var d={};F(d,{after:()=>Pe,and:()=>Ze,any:()=>Ie,array:()=>Te,asCapitalized:()=>wt,asISOString:()=>Oe,asLowercased:()=>bt,asMap:()=>dt,asRounded:()=>ot,asSet:()=>be,asSliced:()=>Ot,asStamp:()=>ve,asStrippedHtml:()=>vt,asTrimmed:()=>gt,asUppercased:()=>Pt,assert:()=>x,audio:()=>Be,before:()=>we,boolean:()=>q,branch:()=>h,catch:()=>pt,coerceBoolean:()=>Fe,coerceNumber:()=>Ae,coerceString:()=>Ke,coerceTime:()=>Ce,conditional:()=>ct,context:()=>b,custom:()=>Re,defaults:()=>ut,discriminate:()=>Xe,email:()=>ht,eq:()=>te,file:()=>ze,fileType:()=>We,fromJson:()=>Ye,gt:()=>Qe,gte:()=>et,has:()=>Le,image:()=>Je,in:()=>De,instanceOf:()=>Se,int:()=>rt,is:()=>Ve,lt:()=>tt,lte:()=>nt,max:()=>Ue,merge:()=>Ge,meta:()=>xe,min:()=>qe,ne:()=>Ne,nin:()=>Me,null:()=>ke,nullable:()=>at,nullish:()=>it,number:()=>L,object:()=>lt,objectOmit:()=>ft,objectPick:()=>mt,optional:()=>st,or:()=>He,pipe:()=>i,record:()=>yt,schema:()=>y,string:()=>M,time:()=>D,tuple:()=>ge,undefined:()=>je,url:()=>xt,validate:()=>f,video:()=>_e,walk:()=>C,withStrippedHtml:()=>Tt});function N(e){return Array.isArray(e)?e:[e]}function Q(e){return`${e.path?`${e.path}: `:""}${e.message}`}var s=class e extends Error{constructor(n,r,o,a){let c=n[0];super(c?Q(c):"Pipe validation error",{cause:a});this.messages=n;this.value=r;this.stopped=o}toString(){return this.messages.map(Q).join(`
|
|
2
|
+
`)}static root(n,r,o){return new e(N(n).map(a=>({message:a})),r,!1,o)}static rootFrom(n,r,o){return new e(N(n).flatMap(a=>a.messages),r,!1,o)}static path(n,r,o,a){return new e(N(r).flatMap(c=>c.messages.map(u=>({...u,path:`${n.toString()}${u.path?`.${u.path}`:""}`}))),o,!1,a)}static stop(n){return new e([],n,!0)}};function C(e,t,n){let r=t;for(;e;)r=n(e,r),e=e.next;return r}function b(e){return C(e,{},(t,n)=>({...n,...t.context()}))}function x(e,t){try{let n=b(e);return C(e,t,(r,o)=>r.fn(o,n))}catch(n){if(n instanceof s){if(n.stopped)return n.value;throw n}throw s.root(n instanceof Error?n.message:`${n}`,t,n)}}function f(e,t){try{return{value:x(e,t),valid:!0}}catch(n){if(n instanceof s)return{error:n,valid:!1};throw s.root(n instanceof Error?n.message:`${n}`,t,n)}}function y(e,t={}){let n=b(e);return C(e,t,(r,o)=>({...o,...r.schema(n)}))}function xe(e,t){return e.pipe(i(n=>n,{schema:()=>t}))}function i(e,t={}){let n={fn:e,context:()=>t.context?.()??{},schema:r=>t.schema?.(r)??{},pipe:(...r)=>{for(let o of r){let a=typeof o=="function"?i(o,t):o;n.next||(n.next=a),n.last&&(n.last.next=a),n.last=a.last??a}return n},"~standard":{version:1,vendor:"valleyed",validate(r){let o=f(n,r);return o.valid?{value:o.value}:{issues:o.error.messages.map(({message:a,path:c})=>({message:a,path:c?c.split("."):void 0}))}}}};return n}function h(e,t,n){return i(t,{...n,context:()=>n.context(b(e)),schema:r=>({...n.schema(y(e),r)})})}var Te=(e,t="is not an array")=>i(n=>{if(!Array.isArray(n))throw s.root(t,n);if(n.length===0)return n;let r=n.map((o,a)=>{let c=f(e,o);return c.valid?c.value:s.path(a,c.error,o)});if(r.some(o=>o instanceof s))throw s.rootFrom(r.filter(o=>o instanceof s),n);return r},{schema:()=>({type:"array",items:y(e)})}),ge=(e,t="is not an array")=>i(n=>{if(!Array.isArray(n))throw s.root(t,n);if(e.length===0)return n;let r=e.map((o,a)=>{let c=f(o,n[a]);return"error"in c?s.path(a,c.error,n[a]):c.value});if(r.some(o=>o instanceof s))throw s.rootFrom(r.filter(o=>o instanceof s),n);return r},{schema:()=>({type:"array",items:e.map(n=>y(n)),minItems:e.length,maxItems:e.length})}),be=(e=t=>t)=>i(t=>{let n={};return t.reduce((r,o)=>{let a=e(o);return n[a]||(n[a]=!0,r.push(o)),r},[])});var D=(e="is not a valid datetime")=>i(t=>{if(t instanceof Date)return t;if(typeof t=="number"||typeof t=="string"){let n=new Date(t);if(!isNaN(n.getTime()))return n}throw s.root(e,t)},{schema:()=>({oneOf:[{type:"string",format:"date-time"},{type:"integer"}]})}),Pe=(e,t)=>i((n,r)=>{let o=new Date(p(r?.after??e));if(n>o)return n;throw s.root(t??`is not later than ${o.toString()}`,n)},{context:()=>({after:e})}),we=(e,t)=>i((n,r)=>{let o=new Date(p(r?.before??e));if(n<o)return n;throw s.root(t??`is not earlier than ${o.toString()}`,n)},{context:()=>({before:e})}),ve=()=>i(e=>e.valueOf(),{schema:()=>({type:"integer",oneOf:void 0})}),Oe=()=>i(e=>e.toISOString(),{schema:()=>({type:"string",format:"date-time",oneOf:void 0})});var M=(e="is not a string")=>i(t=>{if(typeof t=="string"||t?.constructor?.name==="String")return t;throw s.root(e,t)},{schema:()=>({type:"string"})}),L=(e="is not a number")=>i(t=>{if(typeof t=="number"&&!isNaN(t))return t;throw s.root(e,t)},{schema:()=>({type:"number"})}),q=(e="is not a boolean")=>i(t=>{if(t===!0||t===!1)return t;throw s.root(e,t)},{schema:()=>({type:"boolean"})}),ke=(e="is not null")=>i(t=>{if(t===null)return t;throw s.root(e,t)},{schema:()=>({type:"null"})}),je=(e="is not undefined")=>i(t=>{if(t===void 0)return t;throw s.root(e,t)},{schema:()=>({type:"undefined"})}),Ie=()=>i(e=>e),Se=(e,t=`is not an instance of ${e.name}`)=>i(n=>{if(n?.constructor===e||n instanceof e)return n;throw s.root(t,n)});var Ke=()=>i(e=>String(e).toString()).pipe(M()),Ae=()=>i(e=>Number(e)).pipe(L()),Fe=()=>i(e=>!!e).pipe(q()),Ce=()=>i(e=>new Date(e)).pipe(D());var U={};F(U,{diff:()=>Ee,equal:()=>T,from:()=>$e,merge:()=>O});var l={string:e=>e?.constructor?.name==="String",regex:e=>e?.constructor?.name==="RegExp",symbol:e=>e?.constructor?.name==="Symbol",function:e=>e?.constructor?.name==="Function",bigint:e=>e?.constructor?.name==="BigInt",number:e=>e?.constructor?.name==="Number"&&!Number.isNaN(e),nan:e=>Number.isNaN(e),null:e=>e===null,undefined:e=>e===void 0,boolean:e=>e?.constructor?.name==="Boolean",array:e=>Array.isArray(e),date:e=>e?.constructor?.name==="Date"&&e instanceof Date&&!Number.isNaN(e.getTime()),set:e=>e?.constructor?.name==="Set",object:e=>e?.constructor?.name==="Object",map:e=>e?.constructor?.name==="Map"};function ee(e,t,n){if(!l.object(e)||!l.object(t))return[];let r=[...new Set(Object.keys(e).concat(Object.keys(t)))],o=[];for(let a of r){let c=(n?`${n}.`:"")+a;if(!(a in e)||!(a in t)){o.push(c);continue}let u=e[a],m=t[a];l.object(u)&&l.object(m)?o.push(...ee(u,m,c)):T(u,m)||o.push(c)}return o}function T(e,t){let[n,r]=[e,t].map(o=>l.map(o)?Object.fromEntries(o.entries()):l.set(o)?[...o]:o);if(n===r)return!0;if(l.string(n)||l.number(n)||l.bigint(n)||l.boolean(n)||l.null(n)||l.undefined(n)||l.function(n))return n===r;if(l.regex(n))return l.regex(r)&&n.source===r.source;if(l.nan(n))return l.nan(r);if(l.date(n))return l.date(r)&&n.getTime()===r.getTime();if(l.array(n))return!l.array(r)||n.length!==r.length?!1:n.every((o,a)=>T(o,r.at(a)));if(l.object(n)&&l.object(r)){let o=Object.keys(n??{}),a=Object.keys(r??{});return o.length!==a.length?!1:[...new Set(o.concat(a))].every(u=>u in n&&u in r&&T(n[u],r[u]))}return!1}function Ee(e,t){return ee(e,t)}function $e(e){let t=(r,o)=>Object.entries(r??{}).reduce((a,[c,u])=>(a[c]=l.object(u)?t(u,a[c]??{}):u,a),{...o}),n=r=>r.split(".").reverse().reduce((o,a)=>({[a]:o??!0}),null);return e.map(n).reduce(t,{})}function O(e,t){if(l.undefined(e))return t;if(l.undefined(t))return e;if(l.array(e)&&l.array(t))return Array.from({length:Math.max(e.length,t.length)},(n,r)=>O(e[r],t[r]));if(l.object(e)&&l.object(t)){let n=new Set([...Object.keys(e),...Object.keys(t)]);return Array.from(n).reduce((r,o)=>(r[o]=O(e[o],t[o]),r),{})}return t}var Re=(e,t="doesn't pass custom rule")=>i(n=>{if(e(n))return n;throw s.root(t,n)},{}),te=(e,t)=>i((n,r)=>{let o=p(r.eq??e);if(n===o||T(n,o))return n;throw s.root(t??`is not equal to ${o}`,n)},{context:()=>({eq:e}),schema:n=>({const:p(n.eq??e)})}),Ve=te,Ne=(e,t)=>i((n,r)=>{let o=p(r.eq??e);if(!T(n,o)&&n!==o)return n;throw s.root(t??`is equal to ${o}`,n)},{context:()=>({ne:e}),schema:n=>({not:{const:p(n.eq??e)}})}),De=(e,t)=>i((n,r)=>{let o=p(r.in??e);if(o.find(a=>T(n,a)))return n;throw s.root(t??`is not in the list: [${o.join(",")}]`,n)},{context:()=>({in:e}),schema:n=>({enum:[...p(n.in??e)]})}),Me=(e,t)=>i((n,r)=>{let o=p(r.nin??e);if(!o.find(a=>T(n,a)))return n;throw s.root(t??`is in the list: [${o.join(",")}]`,n)},{context:()=>({nin:e}),schema:n=>({not:{enum:[...p(n.nin??e)]}})});function z(e){return e?.constructor?.name==="String"?"characters":"items"}var Le=(e,t)=>i((n,r)=>{if(n.length===p(r.has??e))return n;throw s.root(t??`must contain ${e} ${z(n)}`,n)},{context:()=>({has:e}),schema:n=>{let r=p(n.has??e);return{minItems:r,maxItems:r,minLength:r,maxLength:r}}}),qe=(e,t)=>i((n,r)=>{let o=p(r.min??e);if(n.length>=o)return n;throw s.root(t??`must contain ${o} or more ${z(n)}`,n)},{context:()=>({min:e}),schema:n=>{let r=p(n.min??e);return{minItems:r,minLength:r}}}),Ue=(e,t)=>i((n,r)=>{let o=p(r.max??e);if(n.length<=o)return n;throw s.root(t??`must contain ${o} or less ${z(n)}`,n)},{context:()=>({max:e}),schema:n=>{let r=p(n.min??e);return{maxItems:r,maxLength:r}}});var k=e=>typeof e=="object"&&!!e&&"type"in e,j=e=>/^[a-zA-Z0-9!#$&^_.+-]+\/[a-zA-Z0-9!#$&^_.+-]+$/.test(e),ze=(e="is not a recognized file")=>i(t=>{if(k(t)&&j(t.type))return t;throw s.root(e,t)},{schema:()=>({type:"string",format:"binary"})}),Je=(e="is not a recognized image file")=>i(t=>{if(k(t)&&j(t.type)&&t.type.startsWith("image/"))return t;throw s.root(e,t)}),Be=(e="is not a recognized audio file")=>i(t=>{if(k(t)&&j(t.type)&&t.type.startsWith("audio/"))return t;throw s.root(e,t)}),_e=(e="is not a recognized video file")=>i(t=>{if(k(t)&&j(t.type)&&t.type.startsWith("video/"))return t;throw s.root(e,t)}),We=(e,t="is not a supported file")=>i(n=>{if(k(n)&&j(n.type)){let r=p(e);if((Array.isArray(r)?r:[r]).some(a=>n.type===a))return n}throw s.root(t,n)});var He=e=>i(t=>{if(e.length===0)return t;let n=[];for(let[r,o]of Object.entries(e)){let a=f(o,t);if(a.valid)return a.value;n.push(s.path(r,a.error,t))}throw s.rootFrom(n,t)},{schema:()=>({oneOf:e.map(t=>y(t))})}),Ze=e=>i(t=>{for(let[n,r]of Object.entries(e)){let o=f(r,t);if(!o.valid)throw s.path(n,o.error,t);t=o.value}return t},{schema:()=>({allOf:e.map(t=>y(t))})}),Ge=(e,t)=>i(n=>O(x(e,n),x(t,n)),{schema:()=>({allOf:[y(e),y(t)]})}),Xe=(e,t,n="doesnt match any of the schema")=>i(r=>{let o=P(()=>e(r));if(!t[o])throw s.root(n,r);return x(t[o],r)},{schema:()=>({oneOf:Object.values(t).map(r=>y(r))})}),Ye=e=>h(e,t=>{let n=f(e,t);if(n.valid)return n.value;if(t?.constructor?.name!=="String")throw n.error;let r=P(()=>JSON.parse(t),n.error);if(r===n.error)throw n.error;return x(e,r)},{context:t=>t,schema:t=>t});var Qe=(e,t)=>i(n=>{let r=p(e);if(n>r)return n;throw s.root(t??`must be greater than ${r}`,n)},{schema:()=>({exclusiveMinimum:p(e)})}),et=(e,t)=>i(n=>{let r=p(e);if(n>=r)return n;throw s.root(t??`must be greater than or equal to ${r}`,n)},{schema:()=>({minimum:p(e)})}),tt=(e,t)=>i(n=>{let r=p(e);if(n<r)return n;throw s.root(t??`must be less than ${r}`,n)},{schema:()=>({exclusiveMaximum:p(e)})}),nt=(e,t)=>i(n=>{let r=p(e);if(n<=r)return n;throw s.root(t??`must be less than or equal to ${r}`,n)},{schema:()=>({maximum:p(e)})}),rt=(e="is not an integer")=>i(t=>{if(t===parseInt(t))return t;throw s.root(e,t)},{schema:()=>({type:"integer"})}),ot=(e=0)=>i(t=>Number(t.toFixed(e)),{});var E=(e,t,n,r)=>h(e,o=>{if(t(o))return o;let c=f(e,o);if(c.valid)return c.value;if(n)throw c.error;return o},r),at=e=>E(e,t=>t===null,!0,{schema:t=>({oneOf:[t,{type:"null"}]}),context:t=>t}),st=e=>E(e,t=>t===void 0,!0,{schema:t=>t,context:t=>({...t,optional:!0})}),it=e=>E(e,t=>t==null,!0,{schema:t=>({oneOf:[t,{type:"null"}]}),context:t=>({...t,optional:!0})}),ct=(e,t)=>E(e,()=>!t(),t(),{schema:n=>n,context:n=>({...n,optional:!0})}),ut=(e,t)=>h(e,(n,r)=>x(e,n!==void 0?n:p(r?.defaults??t)),{schema:(n,r)=>({...n,default:p(r.defaults??t)}),context:n=>({...n,defaults:t,optional:!0})}),pt=(e,t)=>h(e,(n,r)=>{let o=f(e,n);return o.valid?o.value:p(r?.catch??t)},{schema:(n,r)=>({...n,default:p(r.catch??t)}),context:n=>({...n,catch:t})});var lt=e=>i((t,n)=>{if(typeof t!="object"||t===null||Array.isArray(t))throw s.root("is not an object",t);let r={},o=[];for(let a of n.objectKeys??Object.keys(e)){if(!(a in e))continue;let c=t[a],u=f(e[a],c);u.valid?r[a]=u.value:o.push(s.path(a,u.error,c))}if(o.length)throw s.rootFrom(o,t);return r},{schema:()=>({type:"object",properties:Object.fromEntries(Object.entries(e??{}).map(([t,n])=>[t,y(n)])),required:Object.entries(e??{}).filter(([,t])=>!b(t).optional).map(([t])=>t),additionalProperties:!1}),context:()=>({objectKeys:Object.keys(e)})}),mt=(e,t)=>h(e,e.fn,{schema:n=>({...n,properties:Object.fromEntries(Object.entries(n.properties??{}).filter(([r])=>t.includes(r))),required:(n.required??[]).filter(r=>t.includes(r))}),context:n=>({...n,objectKeys:(n.objectKeys??[]).filter(r=>t.includes(r))})}),ft=(e,t)=>h(e,e.fn,{schema:n=>({...n,properties:Object.fromEntries(Object.entries(n.properties??{}).filter(([r])=>!t.includes(r))),required:(n.required??[]).filter(r=>!t.includes(r))}),context:n=>({...n,objectKeys:(n.objectKeys??[]).filter(r=>!t.includes(r))})}),yt=(e,t)=>i(n=>{if(typeof n!="object"||n===null||Array.isArray(n))throw s.root(["is not an object"],n);let r={},o=[];for(let[a,c]of Object.entries(n)){let u=f(e,a),m=f(t,c);u.valid||o.push(s.path(a,u.error,a)),m.valid||o.push(s.path(a,m.error,c)),u.valid&&m.valid&&(a!==u.value&&delete r[a],r[u.value]=m.value)}if(o.length)throw s.rootFrom(o,n);return r},{schema:()=>({type:"object",propertyNames:y(e),additionalProperties:y(t)})}),dt=()=>i(e=>new Map(Object.entries(e)),{});var ne=Y(require("url-regex-safe"),1),$=(0,ne.default)(),re=/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;var ht=(e="is not a valid email")=>i(t=>{if(re.test(t))return t;throw s.root(e,t)},{schema:()=>({format:"email"})}),xt=(e="is not a valid url")=>i(t=>{if($.test(t))return t;throw s.root(e,t)},{schema:()=>({format:"uri"})}),Tt=e=>h(e,t=>{let n=R(t);return x(e,n),t},{context:t=>t,schema:t=>t}),gt=()=>i(e=>e.trim(),{}),bt=()=>i(e=>e.toLowerCase(),{}),Pt=()=>i(e=>e.toUpperCase(),{}),wt=()=>i(e=>J(e),{}),vt=()=>i(e=>R(e),{}),Ot=e=>i(t=>B(t,e),{});var jt="text/plain",It="us-ascii",St=e=>{let t=/^data:(?<type>[^,]*?),(?<data>[^#]*?)(?:#(?<hash>.*))?$/.exec(e);if(!t)throw new Error(`Invalid URL: ${e}`);if(!t.groups)throw new Error(`Invalid URL: ${e}`);let{type:n,data:r,hash:o}=t.groups,a=n.split(";"),c=!1;a[a.length-1]==="base64"&&(a.pop(),c=!0);let u=(a.shift()||"").toLowerCase(),g=[...a.map(S=>{let w=S.split("=").map(pe=>pe.trim()),K=w[0],v=w[1]??"";return K==="charset"&&(v=v.toLowerCase(),v===It)?"":`${K}${v?`=${v}`:""}`}).filter(Boolean)];return c&&g.push("base64"),(g.length>0||u&&u!==jt)&&g.unshift(u),`data:${g.join(";")},${c?r.trim():r}${o?`#${o}`:""}`},oe=e=>{if(e=e.trim(),/^data:/i.test(e))return St(e);if(/^view-source:/i.test(e))throw new Error("`view-source:` is not supported as it is a non-standard protocol");!e.startsWith("//")&&/^\.*\//.test(e)||(e=e.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,"http:"));let r=new URL(e);if(r.username=r.password="",r.hash=r.hash.replace(/#?:~:text.*?$/i,""),r.pathname){let a=/\b[a-z][a-z\d+\-.]{1,50}:\/\//g,c=0,u="";for(;a.exec(r.pathname);){let g=a.exec(r.pathname),S=g[0],w=g.index,K=r.pathname.slice(c,w);u+=K.replace(/\/{2,}/g,"/"),u+=S,c=w+S.length}let m=r.pathname.slice(c,r.pathname.length);u+=m.replace(/\/{2,}/g,"/"),r.pathname=u}r.pathname&&(r.pathname=decodeURI(r.pathname)),r.hostname&&(r.hostname=r.hostname.replace(/\.$/,"")),r.pathname=r.pathname.replace(/\/$/,"");let o=e;return e=r.toString(),r.pathname==="/"&&!o.endsWith("/")&&r.hash===""&&(e=e.replace(/\/$/,"")),r.pathname==="/"&&r.hash===""&&(e=e.replace(/\/$/,"")),e};var J=e=>{if(e==null)return e;e=e.toString();let t=n=>(n[0]?.toUpperCase()??"")+n.slice(1);return e.trim().split(" ").map(t).join(" ")},R=e=>e==null?e:e?.toString()?.trim().replace(/<[^>]+>/g,"")??"",B=(e,t)=>{if(e==null||(e=e.toString(),e.length<=t))return e;let n=e.indexOf(" ",t),r=n===-1?t:n;return`${e.slice(0,r)}...`},Kt=e=>{let t=e.match($)||[];return t.filter((n,r)=>t.indexOf(n)===r).map(n=>(n=n.trim(),{original:n,normalized:oe(n.replace(/\.+$/,""))}))},At=(e,t)=>Intl.NumberFormat("en",{notation:"compact",...t?{maximumFractionDigits:t}:{}}).format(d.validate(d.number(),e).valid?e:0),Ft=(e,t,n)=>Math.round(e)===1?t:n,Ct=()=>Date.now()+Math.random().toString(36),Et=(e,t)=>e.reduce((n,r)=>{let o=t(r),a=n.findIndex(c=>c.key===o);return a===-1?n.push({key:o,values:[r]}):n[a].values.push(r),n},[]),$t=e=>"abcdefghijklmnopqrstuv".split("")[e]??"a",Rt=(e,t,n,r,o=!1)=>{let a=e.findIndex(u=>n(u)===n(t)),c=e.findIndex(u=>o?r(u)>=r(t):r(u)<=r(t));return a!==-1&&a===c?(e.splice(a,1,t),e):(a!==-1&&a!==c&&e.splice(a,1),c!==-1?e.splice(c,0,t):e.length===0?e.push(t):r(e[0])>=r(t)?o?e.unshift(t):e.push(t):o?e.push(t):e.unshift(t),e)},_=(e,t)=>t===0?0:e/t,Vt=(e,t)=>100*(_(e,t)>1?1:_(e,t)),Nt=(e,t)=>{let n=[],r={};for(;n.length<t&&n.length<e.length;){let o=Math.floor(Math.random()*e.length);o in r||(r[o]=!0,n.push(o))}return n.map(o=>e[o])},Dt=e=>[...e].sort(()=>Math.random()-.5),Mt=(e,t)=>{let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n},P=(e,t)=>{try{return e()}catch{return t}},Lt=(e,t)=>{if(e=e.replace(/\s+/g,""),t=t.replace(/\s+/g,""),e===t)return 1;if(e.length<2||t.length<2)return 0;let n=new Map;for(let o=0;o<e.length-1;o++){let a=e.substring(o,o+2),c=n.has(a)?n.get(a)+1:1;n.set(a,c)}let r=0;for(let o=0;o<t.length-1;o++){let a=t.substring(o,o+2),c=n.has(a)?n.get(a):0;c>0&&(n.set(a,c-1),r++)}return 2*r/(e.length+t.length-2)};function p(e){return typeof e=="function"?e():e}I.default?.inspect?.defaultOptions&&(I.default.inspect.defaultOptions.depth=Number.MAX_SAFE_INTEGER,I.default.inspect.defaultOptions.getters=!0,I.default.inspect.defaultOptions.numericSeparator=!0);var qt=Symbol.for("nodejs.util.inspect.custom");function Ut(){return class{[qt](e,t,n){return t.getters=!0,t.numericSeparator=!0,t.depth=Number.MAX_SAFE_INTEGER,t.stylize(this.constructor.name,t)+" "+n(this.toJSON?.()??this,t)}}}var W=class extends Ut(){},H=class extends W{__ignoreInJSON=[];constructor(t,n={get:(r,o)=>o[r],set:(r,o,a)=>{a[r]=o}}){super(),Object.keys(t).forEach(r=>{Object.defineProperty(this,r,{get:()=>n.get(r,t),set:o=>{n.set(r,o,t)},enumerable:!0,configurable:!0})})}toJSON(t=!1){let n={};return Object.keys(this).forEach(o=>{let a=this[o];typeof a=="function"||a===void 0||(n[o]=a?.toJSON?.(t)??P(()=>structuredClone(a),a))}),["__ignoreInJSON"].concat(...t!==!0?this.__ignoreInJSON:[]).forEach(o=>Z(n,o.split("."))),n}toString(t=!1){return JSON.stringify(this.toJSON(t))}};function Z(e,t){if(e==null)return;let n=Array.isArray(e);return t.length===1&&!n?delete e[t[0]]:n?e.map(r=>Z(r,t)):Z(e[t[0]],t.slice(1))}var G={};F(G,{decode:()=>Bt,encode:()=>ue,neighbors:()=>_t});var se="0123456789bcdefghjkmnpqrstuvwxyz",zt="01";function ie(e,t,n){let r=Object.fromEntries(n.toLowerCase().split("").map((a,c)=>[c,a])),o=[];if(e===0)return"0";for(;e>0;)o.push(r[e%t]??""),e=Math.floor(e/t);return o.reverse().join("")}function Jt(e,t,n){let r=Object.fromEntries(n.toLowerCase().split("").map((o,a)=>[o,a]));return e.toLowerCase().split("").reduce((o,a,c,u)=>{let m=r[a]??0;return o+m*Math.pow(t,u.length-c-1)},0)}function V(e,t,n){let r=n.split("").concat("").reduce((a,c)=>{let u=(e+t)/2,m=(t-e)/2;return a.mid=u,a.error=m,c==="1"?e=u:t=u,a},{mid:0,error:0});return{value:r.mid-r.error,interval:r.error*2}}function ce(e){e=d.assert(d.string().pipe(d.min(1)),e);let t=Jt(e,32,se);return ie(t,2,zt).padStart(e.length*5,"0").split("").reduce((r,o,a)=>(a%2===0?r.long+=o:r.lat+=o,r),{lat:"",long:""})}function ae(e,t){return e<-t&&(e=e+t*2),e>+t&&(e=e-t*2),e}function Bt(e){let t=ce(e),n=V(-90,90,t.lat).value,r=V(-180,180,t.long).value;return[n,r]}function ue(e){e=d.assert(d.tuple([d.number(),d.number()]),e);let t=0,n=0,r=!0,o="",a=[-90,-180],c=[90,180];for(;o.length<18;){let u=r?1:0,m=(a[u]+c[u])/2;e[u]>=m?(t=t*2+1,a[u]=m):(t=t*2,c[u]=m),r=!r,n+=1,n===5&&(o+=ie(t,32,se),n=t=0)}return o.replace(/0+$/,"")}function _t(e){let t=ce(e),n=V(-90,90,t.lat),r=V(-180,180,t.long),o=[[n.value-n.interval,r.value-r.interval],[n.value-n.interval,r.value],[n.value-n.interval,r.value+r.interval],[n.value,r.value-r.interval],[n.value,r.value+r.interval],[n.value+n.interval,r.value-r.interval],[n.value+n.interval,r.value],[n.value+n.interval,r.value+r.interval]].map(([a,c])=>ue([ae(a,90),ae(c,180)]));return{bl:o[0],bc:o[1],br:o[2],cl:o[3],cr:o[4],tl:o[5],tc:o[6],tr:o[7]}}0&&(module.exports={DataClass,PipeError,addToArray,capitalize,chunkArray,compareTwoStrings,differ,divideByZero,execValueFunction,extractUrls,formatNumber,geohash,getAlphabet,getPercentage,getRandomSample,getRandomValue,groupBy,pluralize,shuffleArray,stripHTML,trimToLength,v,wrapInTryCatch});
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
var ie=Object.defineProperty;var $=(e,t)=>{for(var n in t)ie(e,n,{get:t[n],enumerable:!0})};import C from"util";var d={};$(d,{after:()=>me,and:()=>Le,any:()=>Te,array:()=>ue,asCapitalized:()=>yt,asISOString:()=>de,asLowercased:()=>mt,asMap:()=>st,asRounded:()=>Ze,asSet:()=>le,asSliced:()=>ht,asStamp:()=>ye,asStrippedHtml:()=>dt,asTrimmed:()=>lt,asUppercased:()=>ft,assert:()=>x,audio:()=>Ve,before:()=>fe,boolean:()=>M,branch:()=>h,catch:()=>tt,coerceBoolean:()=>we,coerceNumber:()=>Pe,coerceString:()=>be,coerceTime:()=>ve,conditional:()=>Qe,context:()=>b,custom:()=>je,defaults:()=>et,discriminate:()=>Ue,email:()=>ct,eq:()=>W,file:()=>$e,fileType:()=>De,fromJson:()=>ze,gt:()=>Je,gte:()=>Be,has:()=>Fe,image:()=>Re,in:()=>Ke,instanceOf:()=>ge,int:()=>He,is:()=>Ie,lt:()=>_e,lte:()=>We,max:()=>Ee,merge:()=>qe,meta:()=>ce,min:()=>Ce,ne:()=>Se,nin:()=>Ae,null:()=>he,nullable:()=>Ge,nullish:()=>Ye,number:()=>D,object:()=>nt,objectOmit:()=>ot,objectPick:()=>rt,optional:()=>Xe,or:()=>Me,pipe:()=>s,record:()=>at,schema:()=>y,string:()=>N,time:()=>V,tuple:()=>pe,undefined:()=>xe,url:()=>ut,validate:()=>f,video:()=>Ne,walk:()=>K,withStrippedHtml:()=>pt});function R(e){return Array.isArray(e)?e:[e]}function J(e){return`${e.path?`${e.path}: `:""}${e.message}`}var i=class e extends Error{constructor(n,r,o,a){let c=n[0];super(c?J(c):"Pipe validation error",{cause:a});this.messages=n;this.value=r;this.stopped=o}toString(){return this.messages.map(J).join(`
|
|
2
|
+
`)}static root(n,r,o){return new e(R(n).map(a=>({message:a})),r,!1,o)}static rootFrom(n,r,o){return new e(R(n).flatMap(a=>a.messages),r,!1,o)}static path(n,r,o,a){return new e(R(r).flatMap(c=>c.messages.map(u=>({...u,path:`${n.toString()}${u.path?`.${u.path}`:""}`}))),o,!1,a)}static stop(n){return new e([],n,!0)}};function K(e,t,n){let r=t;for(;e;)r=n(e,r),e=e.next;return r}function b(e){return K(e,{},(t,n)=>({...n,...t.context()}))}function x(e,t){try{let n=b(e);return K(e,t,(r,o)=>r.fn(o,n))}catch(n){if(n instanceof i){if(n.stopped)return n.value;throw n}throw i.root(n instanceof Error?n.message:`${n}`,t,n)}}function f(e,t){try{return{value:x(e,t),valid:!0}}catch(n){if(n instanceof i)return{error:n,valid:!1};throw i.root(n instanceof Error?n.message:`${n}`,t,n)}}function y(e,t={}){let n=b(e);return K(e,t,(r,o)=>({...o,...r.schema(n)}))}function ce(e,t){return e.pipe(s(n=>n,{schema:()=>t}))}function s(e,t={}){let n={fn:e,context:()=>t.context?.()??{},schema:r=>t.schema?.(r)??{},pipe:(...r)=>{for(let o of r){let a=typeof o=="function"?s(o,t):o;n.next||(n.next=a),n.last&&(n.last.next=a),n.last=a.last??a}return n},"~standard":{version:1,vendor:"valleyed",validate(r){let o=f(n,r);return o.valid?{value:o.value}:{issues:o.error.messages.map(({message:a,path:c})=>({message:a,path:c?c.split("."):void 0}))}}}};return n}function h(e,t,n){return s(t,{...n,context:()=>n.context(b(e)),schema:r=>({...n.schema(y(e),r)})})}var ue=(e,t="is not an array")=>s(n=>{if(!Array.isArray(n))throw i.root(t,n);if(n.length===0)return n;let r=n.map((o,a)=>{let c=f(e,o);return c.valid?c.value:i.path(a,c.error,o)});if(r.some(o=>o instanceof i))throw i.rootFrom(r.filter(o=>o instanceof i),n);return r},{schema:()=>({type:"array",items:y(e)})}),pe=(e,t="is not an array")=>s(n=>{if(!Array.isArray(n))throw i.root(t,n);if(e.length===0)return n;let r=e.map((o,a)=>{let c=f(o,n[a]);return"error"in c?i.path(a,c.error,n[a]):c.value});if(r.some(o=>o instanceof i))throw i.rootFrom(r.filter(o=>o instanceof i),n);return r},{schema:()=>({type:"array",items:e.map(n=>y(n)),minItems:e.length,maxItems:e.length})}),le=(e=t=>t)=>s(t=>{let n={};return t.reduce((r,o)=>{let a=e(o);return n[a]||(n[a]=!0,r.push(o)),r},[])});var V=(e="is not a valid datetime")=>s(t=>{if(t instanceof Date)return t;if(typeof t=="number"||typeof t=="string"){let n=new Date(t);if(!isNaN(n.getTime()))return n}throw i.root(e,t)},{schema:()=>({oneOf:[{type:"string",format:"date-time"},{type:"integer"}]})}),me=(e,t)=>s((n,r)=>{let o=new Date(p(r?.after??e));if(n>o)return n;throw i.root(t??`is not later than ${o.toString()}`,n)},{context:()=>({after:e})}),fe=(e,t)=>s((n,r)=>{let o=new Date(p(r?.before??e));if(n<o)return n;throw i.root(t??`is not earlier than ${o.toString()}`,n)},{context:()=>({before:e})}),ye=()=>s(e=>e.valueOf(),{schema:()=>({type:"integer",oneOf:void 0})}),de=()=>s(e=>e.toISOString(),{schema:()=>({type:"string",format:"date-time",oneOf:void 0})});var N=(e="is not a string")=>s(t=>{if(typeof t=="string"||t?.constructor?.name==="String")return t;throw i.root(e,t)},{schema:()=>({type:"string"})}),D=(e="is not a number")=>s(t=>{if(typeof t=="number"&&!isNaN(t))return t;throw i.root(e,t)},{schema:()=>({type:"number"})}),M=(e="is not a boolean")=>s(t=>{if(t===!0||t===!1)return t;throw i.root(e,t)},{schema:()=>({type:"boolean"})}),he=(e="is not null")=>s(t=>{if(t===null)return t;throw i.root(e,t)},{schema:()=>({type:"null"})}),xe=(e="is not undefined")=>s(t=>{if(t===void 0)return t;throw i.root(e,t)},{schema:()=>({type:"undefined"})}),Te=()=>s(e=>e),ge=(e,t=`is not an instance of ${e.name}`)=>s(n=>{if(n?.constructor===e||n instanceof e)return n;throw i.root(t,n)});var be=()=>s(e=>String(e).toString()).pipe(N()),Pe=()=>s(e=>Number(e)).pipe(D()),we=()=>s(e=>!!e).pipe(M()),ve=()=>s(e=>new Date(e)).pipe(V());var _={};$(_,{diff:()=>Oe,equal:()=>T,from:()=>ke,merge:()=>v});var l={string:e=>e?.constructor?.name==="String",regex:e=>e?.constructor?.name==="RegExp",symbol:e=>e?.constructor?.name==="Symbol",function:e=>e?.constructor?.name==="Function",bigint:e=>e?.constructor?.name==="BigInt",number:e=>e?.constructor?.name==="Number"&&!Number.isNaN(e),nan:e=>Number.isNaN(e),null:e=>e===null,undefined:e=>e===void 0,boolean:e=>e?.constructor?.name==="Boolean",array:e=>Array.isArray(e),date:e=>e?.constructor?.name==="Date"&&e instanceof Date&&!Number.isNaN(e.getTime()),set:e=>e?.constructor?.name==="Set",object:e=>e?.constructor?.name==="Object",map:e=>e?.constructor?.name==="Map"};function B(e,t,n){if(!l.object(e)||!l.object(t))return[];let r=[...new Set(Object.keys(e).concat(Object.keys(t)))],o=[];for(let a of r){let c=(n?`${n}.`:"")+a;if(!(a in e)||!(a in t)){o.push(c);continue}let u=e[a],m=t[a];l.object(u)&&l.object(m)?o.push(...B(u,m,c)):T(u,m)||o.push(c)}return o}function T(e,t){let[n,r]=[e,t].map(o=>l.map(o)?Object.fromEntries(o.entries()):l.set(o)?[...o]:o);if(n===r)return!0;if(l.string(n)||l.number(n)||l.bigint(n)||l.boolean(n)||l.null(n)||l.undefined(n)||l.function(n))return n===r;if(l.regex(n))return l.regex(r)&&n.source===r.source;if(l.nan(n))return l.nan(r);if(l.date(n))return l.date(r)&&n.getTime()===r.getTime();if(l.array(n))return!l.array(r)||n.length!==r.length?!1:n.every((o,a)=>T(o,r.at(a)));if(l.object(n)&&l.object(r)){let o=Object.keys(n??{}),a=Object.keys(r??{});return o.length!==a.length?!1:[...new Set(o.concat(a))].every(u=>u in n&&u in r&&T(n[u],r[u]))}return!1}function Oe(e,t){return B(e,t)}function ke(e){let t=(r,o)=>Object.entries(r??{}).reduce((a,[c,u])=>(a[c]=l.object(u)?t(u,a[c]??{}):u,a),{...o}),n=r=>r.split(".").reverse().reduce((o,a)=>({[a]:o??!0}),null);return e.map(n).reduce(t,{})}function v(e,t){if(l.undefined(e))return t;if(l.undefined(t))return e;if(l.array(e)&&l.array(t))return Array.from({length:Math.max(e.length,t.length)},(n,r)=>v(e[r],t[r]));if(l.object(e)&&l.object(t)){let n=new Set([...Object.keys(e),...Object.keys(t)]);return Array.from(n).reduce((r,o)=>(r[o]=v(e[o],t[o]),r),{})}return t}var je=(e,t="doesn't pass custom rule")=>s(n=>{if(e(n))return n;throw i.root(t,n)},{}),W=(e,t)=>s((n,r)=>{let o=p(r.eq??e);if(n===o||T(n,o))return n;throw i.root(t??`is not equal to ${o}`,n)},{context:()=>({eq:e}),schema:n=>({const:p(n.eq??e)})}),Ie=W,Se=(e,t)=>s((n,r)=>{let o=p(r.eq??e);if(!T(n,o)&&n!==o)return n;throw i.root(t??`is equal to ${o}`,n)},{context:()=>({ne:e}),schema:n=>({not:{const:p(n.eq??e)}})}),Ke=(e,t)=>s((n,r)=>{let o=p(r.in??e);if(o.find(a=>T(n,a)))return n;throw i.root(t??`is not in the list: [${o.join(",")}]`,n)},{context:()=>({in:e}),schema:n=>({enum:[...p(n.in??e)]})}),Ae=(e,t)=>s((n,r)=>{let o=p(r.nin??e);if(!o.find(a=>T(n,a)))return n;throw i.root(t??`is in the list: [${o.join(",")}]`,n)},{context:()=>({nin:e}),schema:n=>({not:{enum:[...p(n.nin??e)]}})});function L(e){return e?.constructor?.name==="String"?"characters":"items"}var Fe=(e,t)=>s((n,r)=>{if(n.length===p(r.has??e))return n;throw i.root(t??`must contain ${e} ${L(n)}`,n)},{context:()=>({has:e}),schema:n=>{let r=p(n.has??e);return{minItems:r,maxItems:r,minLength:r,maxLength:r}}}),Ce=(e,t)=>s((n,r)=>{let o=p(r.min??e);if(n.length>=o)return n;throw i.root(t??`must contain ${o} or more ${L(n)}`,n)},{context:()=>({min:e}),schema:n=>{let r=p(n.min??e);return{minItems:r,minLength:r}}}),Ee=(e,t)=>s((n,r)=>{let o=p(r.max??e);if(n.length<=o)return n;throw i.root(t??`must contain ${o} or less ${L(n)}`,n)},{context:()=>({max:e}),schema:n=>{let r=p(n.min??e);return{maxItems:r,maxLength:r}}});var O=e=>typeof e=="object"&&!!e&&"type"in e,k=e=>/^[a-zA-Z0-9!#$&^_.+-]+\/[a-zA-Z0-9!#$&^_.+-]+$/.test(e),$e=(e="is not a recognized file")=>s(t=>{if(O(t)&&k(t.type))return t;throw i.root(e,t)},{schema:()=>({type:"string",format:"binary"})}),Re=(e="is not a recognized image file")=>s(t=>{if(O(t)&&k(t.type)&&t.type.startsWith("image/"))return t;throw i.root(e,t)}),Ve=(e="is not a recognized audio file")=>s(t=>{if(O(t)&&k(t.type)&&t.type.startsWith("audio/"))return t;throw i.root(e,t)}),Ne=(e="is not a recognized video file")=>s(t=>{if(O(t)&&k(t.type)&&t.type.startsWith("video/"))return t;throw i.root(e,t)}),De=(e,t="is not a supported file")=>s(n=>{if(O(n)&&k(n.type)){let r=p(e);if((Array.isArray(r)?r:[r]).some(a=>n.type===a))return n}throw i.root(t,n)});var Me=e=>s(t=>{if(e.length===0)return t;let n=[];for(let[r,o]of Object.entries(e)){let a=f(o,t);if(a.valid)return a.value;n.push(i.path(r,a.error,t))}throw i.rootFrom(n,t)},{schema:()=>({oneOf:e.map(t=>y(t))})}),Le=e=>s(t=>{for(let[n,r]of Object.entries(e)){let o=f(r,t);if(!o.valid)throw i.path(n,o.error,t);t=o.value}return t},{schema:()=>({allOf:e.map(t=>y(t))})}),qe=(e,t)=>s(n=>v(x(e,n),x(t,n)),{schema:()=>({allOf:[y(e),y(t)]})}),Ue=(e,t,n="doesnt match any of the schema")=>s(r=>{let o=j(()=>e(r));if(!t[o])throw i.root(n,r);return x(t[o],r)},{schema:()=>({oneOf:Object.values(t).map(r=>y(r))})}),ze=e=>h(e,t=>{let n=f(e,t);if(n.valid)return n.value;if(t?.constructor?.name!=="String")throw n.error;let r=j(()=>JSON.parse(t),n.error);if(r===n.error)throw n.error;return x(e,r)},{context:t=>t,schema:t=>t});var Je=(e,t)=>s(n=>{let r=p(e);if(n>r)return n;throw i.root(t??`must be greater than ${r}`,n)},{schema:()=>({exclusiveMinimum:p(e)})}),Be=(e,t)=>s(n=>{let r=p(e);if(n>=r)return n;throw i.root(t??`must be greater than or equal to ${r}`,n)},{schema:()=>({minimum:p(e)})}),_e=(e,t)=>s(n=>{let r=p(e);if(n<r)return n;throw i.root(t??`must be less than ${r}`,n)},{schema:()=>({exclusiveMaximum:p(e)})}),We=(e,t)=>s(n=>{let r=p(e);if(n<=r)return n;throw i.root(t??`must be less than or equal to ${r}`,n)},{schema:()=>({maximum:p(e)})}),He=(e="is not an integer")=>s(t=>{if(t===parseInt(t))return t;throw i.root(e,t)},{schema:()=>({type:"integer"})}),Ze=(e=0)=>s(t=>Number(t.toFixed(e)),{});var A=(e,t,n,r)=>h(e,o=>{if(t(o))return o;let c=f(e,o);if(c.valid)return c.value;if(n)throw c.error;return o},r),Ge=e=>A(e,t=>t===null,!0,{schema:t=>({oneOf:[t,{type:"null"}]}),context:t=>t}),Xe=e=>A(e,t=>t===void 0,!0,{schema:t=>t,context:t=>({...t,optional:!0})}),Ye=e=>A(e,t=>t==null,!0,{schema:t=>({oneOf:[t,{type:"null"}]}),context:t=>({...t,optional:!0})}),Qe=(e,t)=>A(e,()=>!t(),t(),{schema:n=>n,context:n=>({...n,optional:!0})}),et=(e,t)=>h(e,(n,r)=>x(e,n!==void 0?n:p(r?.defaults??t)),{schema:(n,r)=>({...n,default:p(r.defaults??t)}),context:n=>({...n,defaults:t,optional:!0})}),tt=(e,t)=>h(e,(n,r)=>{let o=f(e,n);return o.valid?o.value:p(r?.catch??t)},{schema:(n,r)=>({...n,default:p(r.catch??t)}),context:n=>({...n,catch:t})});var nt=e=>s((t,n)=>{if(typeof t!="object"||t===null||Array.isArray(t))throw i.root("is not an object",t);let r={},o=[];for(let a of n.objectKeys??Object.keys(e)){if(!(a in e))continue;let c=t[a],u=f(e[a],c);u.valid?r[a]=u.value:o.push(i.path(a,u.error,c))}if(o.length)throw i.rootFrom(o,t);return r},{schema:()=>({type:"object",properties:Object.fromEntries(Object.entries(e??{}).map(([t,n])=>[t,y(n)])),required:Object.entries(e??{}).filter(([,t])=>!b(t).optional).map(([t])=>t),additionalProperties:!1}),context:()=>({objectKeys:Object.keys(e)})}),rt=(e,t)=>h(e,e.fn,{schema:n=>({...n,properties:Object.fromEntries(Object.entries(n.properties??{}).filter(([r])=>t.includes(r))),required:(n.required??[]).filter(r=>t.includes(r))}),context:n=>({...n,objectKeys:(n.objectKeys??[]).filter(r=>t.includes(r))})}),ot=(e,t)=>h(e,e.fn,{schema:n=>({...n,properties:Object.fromEntries(Object.entries(n.properties??{}).filter(([r])=>!t.includes(r))),required:(n.required??[]).filter(r=>!t.includes(r))}),context:n=>({...n,objectKeys:(n.objectKeys??[]).filter(r=>!t.includes(r))})}),at=(e,t)=>s(n=>{if(typeof n!="object"||n===null||Array.isArray(n))throw i.root(["is not an object"],n);let r={},o=[];for(let[a,c]of Object.entries(n)){let u=f(e,a),m=f(t,c);u.valid||o.push(i.path(a,u.error,a)),m.valid||o.push(i.path(a,m.error,c)),u.valid&&m.valid&&(a!==u.value&&delete r[a],r[u.value]=m.value)}if(o.length)throw i.rootFrom(o,n);return r},{schema:()=>({type:"object",propertyNames:y(e),additionalProperties:y(t)})}),st=()=>s(e=>new Map(Object.entries(e)),{});import it from"url-regex-safe";var F=it(),H=/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;var ct=(e="is not a valid email")=>s(t=>{if(H.test(t))return t;throw i.root(e,t)},{schema:()=>({format:"email"})}),ut=(e="is not a valid url")=>s(t=>{if(F.test(t))return t;throw i.root(e,t)},{schema:()=>({format:"uri"})}),pt=e=>h(e,t=>{let n=q(t);return x(e,n),t},{context:t=>t,schema:t=>t}),lt=()=>s(e=>e.trim(),{}),mt=()=>s(e=>e.toLowerCase(),{}),ft=()=>s(e=>e.toUpperCase(),{}),yt=()=>s(e=>Z(e),{}),dt=()=>s(e=>q(e),{}),ht=e=>s(t=>G(t,e),{});var Tt="text/plain",gt="us-ascii",bt=e=>{let t=/^data:(?<type>[^,]*?),(?<data>[^#]*?)(?:#(?<hash>.*))?$/.exec(e);if(!t)throw new Error(`Invalid URL: ${e}`);if(!t.groups)throw new Error(`Invalid URL: ${e}`);let{type:n,data:r,hash:o}=t.groups,a=n.split(";"),c=!1;a[a.length-1]==="base64"&&(a.pop(),c=!0);let u=(a.shift()||"").toLowerCase(),g=[...a.map(I=>{let P=I.split("=").map(se=>se.trim()),S=P[0],w=P[1]??"";return S==="charset"&&(w=w.toLowerCase(),w===gt)?"":`${S}${w?`=${w}`:""}`}).filter(Boolean)];return c&&g.push("base64"),(g.length>0||u&&u!==Tt)&&g.unshift(u),`data:${g.join(";")},${c?r.trim():r}${o?`#${o}`:""}`},X=e=>{if(e=e.trim(),/^data:/i.test(e))return bt(e);if(/^view-source:/i.test(e))throw new Error("`view-source:` is not supported as it is a non-standard protocol");!e.startsWith("//")&&/^\.*\//.test(e)||(e=e.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,"http:"));let r=new URL(e);if(r.username=r.password="",r.hash=r.hash.replace(/#?:~:text.*?$/i,""),r.pathname){let a=/\b[a-z][a-z\d+\-.]{1,50}:\/\//g,c=0,u="";for(;a.exec(r.pathname);){let g=a.exec(r.pathname),I=g[0],P=g.index,S=r.pathname.slice(c,P);u+=S.replace(/\/{2,}/g,"/"),u+=I,c=P+I.length}let m=r.pathname.slice(c,r.pathname.length);u+=m.replace(/\/{2,}/g,"/"),r.pathname=u}r.pathname&&(r.pathname=decodeURI(r.pathname)),r.hostname&&(r.hostname=r.hostname.replace(/\.$/,"")),r.pathname=r.pathname.replace(/\/$/,"");let o=e;return e=r.toString(),r.pathname==="/"&&!o.endsWith("/")&&r.hash===""&&(e=e.replace(/\/$/,"")),r.pathname==="/"&&r.hash===""&&(e=e.replace(/\/$/,"")),e};var Z=e=>{if(e==null)return e;e=e.toString();let t=n=>(n[0]?.toUpperCase()??"")+n.slice(1);return e.trim().split(" ").map(t).join(" ")},q=e=>e==null?e:e?.toString()?.trim().replace(/<[^>]+>/g,"")??"",G=(e,t)=>{if(e==null||(e=e.toString(),e.length<=t))return e;let n=e.indexOf(" ",t),r=n===-1?t:n;return`${e.slice(0,r)}...`},Qn=e=>{let t=e.match(F)||[];return t.filter((n,r)=>t.indexOf(n)===r).map(n=>(n=n.trim(),{original:n,normalized:X(n.replace(/\.+$/,""))}))},er=(e,t)=>Intl.NumberFormat("en",{notation:"compact",...t?{maximumFractionDigits:t}:{}}).format(d.validate(d.number(),e).valid?e:0),tr=(e,t,n)=>Math.round(e)===1?t:n,nr=()=>Date.now()+Math.random().toString(36),rr=(e,t)=>e.reduce((n,r)=>{let o=t(r),a=n.findIndex(c=>c.key===o);return a===-1?n.push({key:o,values:[r]}):n[a].values.push(r),n},[]),or=e=>"abcdefghijklmnopqrstuv".split("")[e]??"a",ar=(e,t,n,r,o=!1)=>{let a=e.findIndex(u=>n(u)===n(t)),c=e.findIndex(u=>o?r(u)>=r(t):r(u)<=r(t));return a!==-1&&a===c?(e.splice(a,1,t),e):(a!==-1&&a!==c&&e.splice(a,1),c!==-1?e.splice(c,0,t):e.length===0?e.push(t):r(e[0])>=r(t)?o?e.unshift(t):e.push(t):o?e.push(t):e.unshift(t),e)},Y=(e,t)=>t===0?0:e/t,sr=(e,t)=>100*(Y(e,t)>1?1:Y(e,t)),ir=(e,t)=>{let n=[],r={};for(;n.length<t&&n.length<e.length;){let o=Math.floor(Math.random()*e.length);o in r||(r[o]=!0,n.push(o))}return n.map(o=>e[o])},cr=e=>[...e].sort(()=>Math.random()-.5),ur=(e,t)=>{let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n},j=(e,t)=>{try{return e()}catch{return t}},pr=(e,t)=>{if(e=e.replace(/\s+/g,""),t=t.replace(/\s+/g,""),e===t)return 1;if(e.length<2||t.length<2)return 0;let n=new Map;for(let o=0;o<e.length-1;o++){let a=e.substring(o,o+2),c=n.has(a)?n.get(a)+1:1;n.set(a,c)}let r=0;for(let o=0;o<t.length-1;o++){let a=t.substring(o,o+2),c=n.has(a)?n.get(a):0;c>0&&(n.set(a,c-1),r++)}return 2*r/(e.length+t.length-2)};function p(e){return typeof e=="function"?e():e}C?.inspect?.defaultOptions&&(C.inspect.defaultOptions.depth=Number.MAX_SAFE_INTEGER,C.inspect.defaultOptions.getters=!0,C.inspect.defaultOptions.numericSeparator=!0);var Pt=Symbol.for("nodejs.util.inspect.custom");function wt(){return class{[Pt](e,t,n){return t.getters=!0,t.numericSeparator=!0,t.depth=Number.MAX_SAFE_INTEGER,t.stylize(this.constructor.name,t)+" "+n(this.toJSON?.()??this,t)}}}var U=class extends wt(){},Q=class extends U{__ignoreInJSON=[];constructor(t,n={get:(r,o)=>o[r],set:(r,o,a)=>{a[r]=o}}){super(),Object.keys(t).forEach(r=>{Object.defineProperty(this,r,{get:()=>n.get(r,t),set:o=>{n.set(r,o,t)},enumerable:!0,configurable:!0})})}toJSON(t=!1){let n={};return Object.keys(this).forEach(o=>{let a=this[o];typeof a=="function"||a===void 0||(n[o]=a?.toJSON?.(t)??j(()=>structuredClone(a),a))}),["__ignoreInJSON"].concat(...t!==!0?this.__ignoreInJSON:[]).forEach(o=>z(n,o.split("."))),n}toString(t=!1){return JSON.stringify(this.toJSON(t))}};function z(e,t){if(e==null)return;let n=Array.isArray(e);return t.length===1&&!n?delete e[t[0]]:n?e.map(r=>z(r,t)):z(e[t[0]],t.slice(1))}var ae={};$(ae,{decode:()=>kt,encode:()=>oe,neighbors:()=>jt});var te="0123456789bcdefghjkmnpqrstuvwxyz",vt="01";function ne(e,t,n){let r=Object.fromEntries(n.toLowerCase().split("").map((a,c)=>[c,a])),o=[];if(e===0)return"0";for(;e>0;)o.push(r[e%t]??""),e=Math.floor(e/t);return o.reverse().join("")}function Ot(e,t,n){let r=Object.fromEntries(n.toLowerCase().split("").map((o,a)=>[o,a]));return e.toLowerCase().split("").reduce((o,a,c,u)=>{let m=r[a]??0;return o+m*Math.pow(t,u.length-c-1)},0)}function E(e,t,n){let r=n.split("").concat("").reduce((a,c)=>{let u=(e+t)/2,m=(t-e)/2;return a.mid=u,a.error=m,c==="1"?e=u:t=u,a},{mid:0,error:0});return{value:r.mid-r.error,interval:r.error*2}}function re(e){e=d.assert(d.string().pipe(d.min(1)),e);let t=Ot(e,32,te);return ne(t,2,vt).padStart(e.length*5,"0").split("").reduce((r,o,a)=>(a%2===0?r.long+=o:r.lat+=o,r),{lat:"",long:""})}function ee(e,t){return e<-t&&(e=e+t*2),e>+t&&(e=e-t*2),e}function kt(e){let t=re(e),n=E(-90,90,t.lat).value,r=E(-180,180,t.long).value;return[n,r]}function oe(e){e=d.assert(d.tuple([d.number(),d.number()]),e);let t=0,n=0,r=!0,o="",a=[-90,-180],c=[90,180];for(;o.length<18;){let u=r?1:0,m=(a[u]+c[u])/2;e[u]>=m?(t=t*2+1,a[u]=m):(t=t*2,c[u]=m),r=!r,n+=1,n===5&&(o+=ne(t,32,te),n=t=0)}return o.replace(/0+$/,"")}function jt(e){let t=re(e),n=E(-90,90,t.lat),r=E(-180,180,t.long),o=[[n.value-n.interval,r.value-r.interval],[n.value-n.interval,r.value],[n.value-n.interval,r.value+r.interval],[n.value,r.value-r.interval],[n.value,r.value+r.interval],[n.value+n.interval,r.value-r.interval],[n.value+n.interval,r.value],[n.value+n.interval,r.value+r.interval]].map(([a,c])=>oe([ee(a,90),ee(c,180)]));return{bl:o[0],bc:o[1],br:o[2],cl:o[3],cr:o[4],tl:o[5],tc:o[6],tr:o[7]}}export{Q as DataClass,i as PipeError,ar as addToArray,Z as capitalize,ur as chunkArray,pr as compareTwoStrings,_ as differ,Y as divideByZero,p as execValueFunction,Qn as extractUrls,er as formatNumber,ae as geohash,or as getAlphabet,sr as getPercentage,ir as getRandomSample,nr as getRandomValue,rr as groupBy,tr as pluralize,cr as shuffleArray,q as stripHTML,G as trimToLength,d as v,j as wrapInTryCatch};
|
|
3
|
+
//# sourceMappingURL=index.min.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/classes.ts","../../src/api/externals.ts","../../src/api/base/errors.ts","../../src/api/base/pipes.ts","../../src/api/arrays.ts","../../src/api/times.ts","../../src/api/types.ts","../../src/api/coerce.ts","../../src/utils/differ.ts","../../src/api/core.ts","../../src/api/files.ts","../../src/api/junctions.ts","../../src/api/numbers.ts","../../src/api/optionals.ts","../../src/api/records.ts","../../src/utils/regexes.ts","../../src/api/strings.ts","../../src/utils/functions/urls/normalize.ts","../../src/utils/functions/index.ts","../../src/utils/geohash.ts"],"sourcesContent":["import util from 'node:util'\n\nimport { wrapInTryCatch } from './functions'\nimport { DeepOmit, IsType, JSONValueOf } from './types'\n\nif (util?.inspect?.defaultOptions) {\n\tutil.inspect.defaultOptions.depth = Number.MAX_SAFE_INTEGER\n\tutil.inspect.defaultOptions.getters = true\n\tutil.inspect.defaultOptions.numericSeparator = true\n}\n\nconst customInspectSymbol = Symbol.for('nodejs.util.inspect.custom')\n\ntype Accessor<Keys extends object> = {\n\tget: <Key extends keyof Keys>(key: Key, keysObj: Keys) => Keys[Key]\n\tset: <Key extends keyof Keys>(key: Key, value: Keys[Key], keysObj: Keys) => void\n}\n\ntype JSONOf<K, I> = JSONValueOf<IsType<K, any> extends true ? Record<string, any> : DeepOmit<K, I>>\n\nfunction WrapWithProperties(): { new <Keys extends Record<string, unknown>>(): Keys } {\n\treturn class {\n\t\t[customInspectSymbol](_, options, inspect) {\n\t\t\toptions.getters = true\n\t\t\toptions.numericSeparator = true\n\t\t\toptions.depth = Number.MAX_SAFE_INTEGER\n\t\t\treturn options.stylize(this.constructor.name, options) + ' ' + inspect((this as any).toJSON?.() ?? this, options)\n\t\t}\n\t} as any\n}\n\n// @ts-expect-error invalid extends\nclass __Root<Keys extends object> extends WrapWithProperties()<Keys> {}\n\nexport class DataClass<Keys extends object, Ignored extends string = never> extends __Root<Keys> {\n\tpublic __ignoreInJSON: ReadonlyArray<Ignored> = []\n\n\tconstructor(\n\t\tkeys: Keys,\n\t\taccess: Accessor<Keys> = {\n\t\t\tget: (key, keys) => keys[key],\n\t\t\tset: (key, value, keys) => {\n\t\t\t\tkeys[key] = value\n\t\t\t},\n\t\t},\n\t) {\n\t\tsuper()\n\t\tObject.keys(keys).forEach((key) => {\n\t\t\tObject.defineProperty(this, key, {\n\t\t\t\tget: () => access.get(key as keyof Keys, keys),\n\t\t\t\tset: (value: any) => {\n\t\t\t\t\taccess.set(key as keyof Keys, value, keys)\n\t\t\t\t},\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t})\n\t\t})\n\t}\n\n\ttoJSON(includeIgnored = false): JSONOf<Keys, Ignored> {\n\t\tconst json: Record<string, any> = {}\n\t\tObject.keys(this).forEach((key) => {\n\t\t\tconst value = this[key]\n\t\t\tif (typeof value === 'function' || value === undefined) return\n\t\t\tjson[key] = (value as any)?.toJSON?.(includeIgnored) ?? wrapInTryCatch(() => structuredClone(value), value)\n\t\t})\n\t\tconst keysToDelete = ['__ignoreInJSON'].concat(...(includeIgnored !== true ? this.__ignoreInJSON : []))\n\t\tkeysToDelete.forEach((k: string) => deleteKeyFromObject(json, k.split('.')))\n\t\treturn json as any\n\t}\n\n\ttoString(includeIgnored = false) {\n\t\treturn JSON.stringify(this.toJSON(includeIgnored))\n\t}\n}\n\nfunction deleteKeyFromObject(obj: Record<string, any>, keys: string[]) {\n\tif (obj === undefined || obj === null) return\n\tconst isArray = Array.isArray(obj)\n\tif (keys.length === 1 && !isArray) return delete obj[keys[0]]\n\tif (isArray) return obj.map((v) => deleteKeyFromObject(v, keys))\n\treturn deleteKeyFromObject(obj[keys[0]], keys.slice(1))\n}\n","export * from './base/pipes'\nexport * from './arrays'\nexport * from './coerce'\nexport * from './core'\nexport * from './files'\nexport * from './junctions'\nexport * from './numbers'\nexport * from './optionals'\nexport * from './types'\nexport * from './records'\nexport * from './strings'\nexport * from './times'\n","type Arrayable<T> = T | T[]\n\nfunction flatArray<T>(arr: Arrayable<T>): T[] {\n\treturn Array.isArray(arr) ? arr : [arr]\n}\n\nfunction formatError(message: { message: string; path?: string }) {\n\treturn `${message.path ? `${message.path}: ` : ''}${message.message}`\n}\n\nexport class PipeError extends Error {\n\tconstructor(\n\t\tpublic messages: { message: string; path?: string }[],\n\t\treadonly value: unknown,\n\t\treadonly stopped: boolean,\n\t\tcause?: unknown,\n\t) {\n\t\tconst message = messages[0]\n\t\tsuper(message ? formatError(message) : 'Pipe validation error', { cause })\n\t}\n\n\ttoString() {\n\t\treturn this.messages.map(formatError).join('\\n')\n\t}\n\n\tstatic root(messages: Arrayable<string>, value: unknown, cause?: unknown) {\n\t\treturn new PipeError(\n\t\t\tflatArray(messages).map((message) => ({ message })),\n\t\t\tvalue,\n\t\t\tfalse,\n\t\t\tcause,\n\t\t)\n\t}\n\n\tstatic rootFrom(errors: Arrayable<PipeError>, value: unknown, cause?: unknown) {\n\t\treturn new PipeError(\n\t\t\tflatArray(errors).flatMap((error) => error.messages),\n\t\t\tvalue,\n\t\t\tfalse,\n\t\t\tcause,\n\t\t)\n\t}\n\n\tstatic path(path: PropertyKey, errors: Arrayable<PipeError>, value: unknown, cause?: unknown) {\n\t\treturn new PipeError(\n\t\t\tflatArray(errors).flatMap((error) =>\n\t\t\t\terror.messages.map((message) => ({ ...message, path: `${path.toString()}${message.path ? `.${message.path}` : ''}` })),\n\t\t\t),\n\t\t\tvalue,\n\t\t\tfalse,\n\t\t\tcause,\n\t\t)\n\t}\n\n\tstatic stop(value: unknown) {\n\t\treturn new PipeError([], value, true)\n\t}\n}\n","import { PipeError } from './errors'\nimport { PipeFn, Context, JsonSchemaBuilder, PipeMeta, Pipe, Entry, PipeOutput, PipeContext } from './types'\nimport { JsonSchema } from '../../utils/types'\n\nexport function walk<T>(pipe: Pipe<any, any, any>, init: T, nodeFn: (cur: Pipe<any, any, any>, acc: T) => T) {\n\tlet acc: T = init\n\twhile (pipe) {\n\t\tacc = nodeFn(pipe, acc)\n\t\tpipe = pipe.next!\n\t}\n\treturn acc\n}\n\nexport function context<T extends Pipe<any, any, any>>(pipe: T): Context<PipeContext<T>> {\n\treturn walk(pipe, {} as Context<PipeContext<T>>, (p, acc) => ({ ...acc, ...p.context() }))\n}\n\nexport function assert<T extends Pipe<any, any, any>>(pipe: T, input: unknown): PipeOutput<T> {\n\ttry {\n\t\tconst cont = context(pipe)\n\t\treturn walk(pipe, input as PipeOutput<T>, (p, acc) => p.fn(acc, cont))\n\t} catch (error) {\n\t\tif (error instanceof PipeError) {\n\t\t\tif (error.stopped) return error.value as PipeOutput<T>\n\t\t\tthrow error\n\t\t}\n\t\tthrow PipeError.root(error instanceof Error ? error.message : `${error}`, input, error)\n\t}\n}\n\nexport function validate<T extends Pipe<any, any, any>>(\n\tpipe: T,\n\tinput: unknown,\n): { value: PipeOutput<T>; valid: true } | { error: PipeError; valid: false } {\n\ttry {\n\t\tconst value = assert(pipe, input)\n\t\treturn { value, valid: true }\n\t} catch (error) {\n\t\tif (error instanceof PipeError) return { error, valid: false }\n\t\tthrow PipeError.root(error instanceof Error ? error.message : `${error}`, input, error)\n\t}\n}\n\nexport function schema<T extends Pipe<any, any, any>>(pipe: T, schema: JsonSchema = {}): JsonSchema {\n\tconst cont = context(pipe)\n\treturn walk(pipe, schema, (p, acc) => ({ ...acc, ...p.schema(cont) }))\n}\n\nexport function meta<T extends Pipe<any, any, any>>(p: T, meta: PipeMeta): T {\n\treturn p.pipe(pipe((i) => i, { schema: () => meta })) as T\n}\n\nexport function pipe<I, O, C>(\n\tfunc: PipeFn<I, O, C>,\n\tconfig: {\n\t\tcontext?: () => Context<C>\n\t\tschema?: (context: Context<C>) => JsonSchemaBuilder\n\t} = {},\n): Pipe<I, O, C> {\n\tconst piper: Pipe<I, O, C> = {\n\t\tfn: func,\n\t\tcontext: () => config.context?.() ?? ({} as any),\n\t\tschema: (context: Context<C>) => config.schema?.(context) ?? ({} as any),\n\t\tpipe: (...entries: Entry<any, any, any>[]) => {\n\t\t\tfor (const cur of entries) {\n\t\t\t\tconst p = typeof cur === 'function' ? pipe(cur, config) : cur\n\t\t\t\tif (!piper.next) piper.next = p\n\t\t\t\tif (piper.last) piper.last.next = p\n\t\t\t\tpiper.last = p.last ?? p\n\t\t\t}\n\t\t\treturn piper\n\t\t},\n\t\t'~standard': {\n\t\t\tversion: 1,\n\t\t\tvendor: 'valleyed',\n\t\t\tvalidate(value) {\n\t\t\t\tconst validity = validate(piper, value)\n\t\t\t\tif (validity.valid) return { value: validity.value }\n\t\t\t\treturn {\n\t\t\t\t\tissues: validity.error.messages.map(({ message, path }) => ({\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t\tpath: path ? path.split('.') : undefined,\n\t\t\t\t\t})),\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t}\n\treturn piper\n}\n\nexport function branch<P extends Pipe<any, any, any>, I, O, C>(\n\tbranch: P,\n\tfn: PipeFn<I, O, C>,\n\tconfig: {\n\t\tcontext: (context: Context<C>) => Context<C>\n\t\tschema: (schema: JsonSchemaBuilder, context: Context<C>) => JsonSchemaBuilder\n\t},\n) {\n\treturn pipe(fn, {\n\t\t...config,\n\t\tcontext: () => config.context(context(branch) as any),\n\t\tschema: (context) => ({ ...config.schema(schema(branch), context) }),\n\t})\n}\n","import { PipeError, PipeInput, type Pipe, type PipeOutput } from './base'\nimport { pipe, schema, validate } from './base/pipes'\n\nexport const array = <T extends Pipe<any, any, any>>(pipeSchema: T, err = 'is not an array') =>\n\tpipe<PipeInput<T>[], PipeOutput<T>[], any>(\n\t\t(input: unknown) => {\n\t\t\tif (!Array.isArray(input)) throw PipeError.root(err, input)\n\t\t\tif (input.length === 0) return input\n\t\t\tconst res = input.map((i, idx) => {\n\t\t\t\tconst validity = validate(pipeSchema, i)\n\t\t\t\tif (!validity.valid) return PipeError.path(idx, validity.error, i)\n\t\t\t\treturn validity.value\n\t\t\t})\n\t\t\tif (res.some((r) => r instanceof PipeError))\n\t\t\t\tthrow PipeError.rootFrom(\n\t\t\t\t\tres.filter((r) => r instanceof PipeError),\n\t\t\t\t\tinput,\n\t\t\t\t)\n\t\t\treturn res\n\t\t},\n\t\t{ schema: () => ({ type: 'array', items: schema(pipeSchema) }) },\n\t)\n\nexport const tuple = <T extends ReadonlyArray<Pipe<any, any, any>>>(pipes: readonly [...T], err = 'is not an array') =>\n\tpipe<{ [K in keyof T]: PipeInput<T[K]> }, { [K in keyof T]: PipeOutput<T[K]> }, any>(\n\t\t(input: unknown) => {\n\t\t\tif (!Array.isArray(input)) throw PipeError.root(err, input)\n\t\t\tif (pipes.length === 0) return input as any\n\t\t\tconst res = pipes.map((pipe, idx) => {\n\t\t\t\tconst validitity = validate(pipe, input[idx])\n\t\t\t\tif ('error' in validitity) return PipeError.path(idx, validitity.error, input[idx])\n\t\t\t\treturn validitity.value\n\t\t\t})\n\t\t\tif (res.some((r) => r instanceof PipeError))\n\t\t\t\tthrow PipeError.rootFrom(\n\t\t\t\t\tres.filter((r) => r instanceof PipeError),\n\t\t\t\t\tinput,\n\t\t\t\t)\n\t\t\treturn res\n\t\t},\n\t\t{\n\t\t\tschema: () => ({\n\t\t\t\ttype: 'array',\n\t\t\t\titems: pipes.map((pipe) => schema(pipe)),\n\t\t\t\tminItems: pipes.length,\n\t\t\t\tmaxItems: pipes.length,\n\t\t\t}),\n\t\t},\n\t)\n\nexport const asSet = <T>(keyFn: (i: T) => PropertyKey = (v) => v as string) =>\n\tpipe<T[], T[], any>((input) => {\n\t\tconst obj: Record<PropertyKey, boolean> = {}\n\t\treturn input.reduce<T[]>((acc, cur) => {\n\t\t\tconst key = keyFn(cur)\n\t\t\tif (!obj[key]) {\n\t\t\t\tobj[key] = true\n\t\t\t\tacc.push(cur)\n\t\t\t}\n\t\t\treturn acc\n\t\t}, [])\n\t})\n","import { PipeError } from './base'\nimport { pipe } from './base/pipes'\nimport { execValueFunction, ValueFunction } from '../utils/functions'\n\nexport type Timeable = Date | string | number\n\nexport const time = (err = 'is not a valid datetime') =>\n\tpipe<Timeable, Date, any>(\n\t\t(input) => {\n\t\t\tif (input instanceof Date) return input\n\t\t\tif (typeof input === 'number' || typeof input === 'string') {\n\t\t\t\tconst date = new Date(input)\n\t\t\t\tif (!isNaN(date.getTime())) return date\n\t\t\t}\n\t\t\tthrow PipeError.root(err, input)\n\t\t},\n\t\t{ schema: () => ({ oneOf: [{ type: 'string', format: 'date-time' }, { type: 'integer' }] }) },\n\t)\n\nexport const after = (compare: ValueFunction<Timeable>, err?: string) =>\n\tpipe<Date, Date, any>(\n\t\t(input, context) => {\n\t\t\tconst compareDate = new Date(execValueFunction(context?.after ?? compare))\n\t\t\tif (input > compareDate) return input\n\t\t\tthrow PipeError.root(err ?? `is not later than ${compareDate.toString()}`, input)\n\t\t},\n\t\t{ context: () => ({ after: compare }) },\n\t)\n\nexport const before = (compare: ValueFunction<Timeable>, err?: string) =>\n\tpipe<Date, Date, any>(\n\t\t(input, context) => {\n\t\t\tconst compareDate = new Date(execValueFunction(context?.before ?? compare))\n\t\t\tif (input < compareDate) return input\n\t\t\tthrow PipeError.root(err ?? `is not earlier than ${compareDate.toString()}`, input)\n\t\t},\n\t\t{ context: () => ({ before: compare }) },\n\t)\n\nexport const asStamp = () => pipe<Date, number, any>((input) => input.valueOf(), { schema: () => ({ type: 'integer', oneOf: undefined }) })\nexport const asISOString = () =>\n\tpipe<Date, string, any>((input) => input.toISOString(), { schema: () => ({ type: 'string', format: 'date-time', oneOf: undefined }) })\n","import { PipeError } from './base'\nimport { pipe } from './base/pipes'\n\nconst isString = (err = 'is not a string') =>\n\tpipe<string, string, any>(\n\t\t(input: unknown) => {\n\t\t\tif (typeof input === 'string' || input?.constructor?.name === 'String') return input as string\n\t\t\tthrow PipeError.root(err, input)\n\t\t},\n\t\t{ schema: () => ({ type: 'string' }) },\n\t)\n\nconst isNumber = (err = 'is not a number') =>\n\tpipe<number, number, any>(\n\t\t(input: unknown) => {\n\t\t\tif (typeof input === 'number' && !isNaN(input)) return input\n\t\t\tthrow PipeError.root(err, input)\n\t\t},\n\t\t{ schema: () => ({ type: 'number' }) },\n\t)\n\nconst isBoolean = (err = 'is not a boolean') =>\n\tpipe<boolean, boolean, any>(\n\t\t(input: unknown) => {\n\t\t\tif (input === true || input === false) return input\n\t\t\tthrow PipeError.root(err, input)\n\t\t},\n\t\t{ schema: () => ({ type: 'boolean' }) },\n\t)\n\nconst isNull = (err = 'is not null') =>\n\tpipe<null, null, any>(\n\t\t(input: unknown) => {\n\t\t\tif (input === null) return input\n\t\t\tthrow PipeError.root(err, input)\n\t\t},\n\t\t{ schema: () => ({ type: 'null' }) },\n\t)\n\nconst isUndefined = (err = 'is not undefined') =>\n\tpipe<undefined, undefined, any>(\n\t\t(input: unknown) => {\n\t\t\tif (input === undefined) return input\n\t\t\tthrow PipeError.root(err, input)\n\t\t},\n\t\t{ schema: () => ({ type: 'undefined' }) },\n\t)\n\nconst isAny = <T>() => pipe<T, T, any>((input) => input as T)\n\nconst isInstanceOf = <T>(classDef: abstract new (...args: any[]) => T, err = `is not an instance of ${classDef.name}`) =>\n\tpipe<T, T, any>((input) => {\n\t\tif (input?.constructor === classDef) return input as T\n\t\tif (input instanceof classDef) return input\n\t\tthrow PipeError.root(err, input)\n\t})\n\nexport {\n\tisString as string,\n\tisNumber as number,\n\tisBoolean as boolean,\n\tisNull as null,\n\tisUndefined as undefined,\n\tisAny as any,\n\tisInstanceOf as instanceOf,\n}\n","import { pipe } from './base/pipes'\nimport { time, Timeable } from './times'\nimport { boolean, number, string } from './types'\n\nexport const coerceString = () => pipe<string, string, any>((input: unknown) => String(input).toString()).pipe(string())\nexport const coerceNumber = () => pipe<number, number, any>((input: unknown) => Number(input)).pipe(number())\nexport const coerceBoolean = () => pipe<boolean, boolean, any>((input: unknown) => Boolean(input)).pipe(boolean())\nexport const coerceTime = () => pipe<Date, Timeable, any>((input: unknown) => new Date(input as any)).pipe(time())\n","const type = {\n\tstring: (v: unknown): v is string => v?.constructor?.name === 'String',\n\tregex: (v: unknown): v is RegExp => v?.constructor?.name === 'RegExp',\n\tsymbol: (v: unknown): v is Symbol => v?.constructor?.name === 'Symbol',\n\tfunction: (v: unknown): v is Function => v?.constructor?.name === 'Function',\n\tbigint: (v: unknown): v is BigInt => v?.constructor?.name === 'BigInt',\n\tnumber: (v: unknown): v is number => v?.constructor?.name === 'Number' && !Number.isNaN(v),\n\tnan: (v: unknown): v is number => Number.isNaN(v),\n\tnull: (v: unknown): v is null => v === null,\n\tundefined: (v: unknown): v is undefined => v === undefined,\n\tboolean: (v: unknown): v is boolean => v?.constructor?.name === 'Boolean',\n\tarray: (v: unknown): v is unknown[] => Array.isArray(v),\n\tdate: (v: unknown): v is Date => v?.constructor?.name === 'Date' && v instanceof Date && !Number.isNaN(v.getTime()),\n\tset: (value: unknown): value is Set<unknown> => value?.constructor?.name === 'Set',\n\tobject: (value: unknown): value is object => value?.constructor?.name === 'Object',\n\tmap: (value: unknown): value is Map<unknown, unknown> => value?.constructor?.name === 'Map',\n}\n\nfunction getDiff(val1: any, val2: any, parent?: string) {\n\tif (!type.object(val1) || !type.object(val2)) return []\n\tconst keys = [...new Set(Object.keys(val1).concat(Object.keys(val2)))]\n\tconst diff: string[] = []\n\tfor (const key of keys) {\n\t\tconst parentKey = (parent ? `${parent}.` : '') + key\n\t\tif (!(key in val1) || !(key in val2)) {\n\t\t\tdiff.push(parentKey)\n\t\t\tcontinue\n\t\t}\n\t\tconst obj1 = val1[key]\n\t\tconst obj2 = val2[key]\n\t\tif (type.object(obj1) && type.object(obj2)) diff.push(...getDiff(obj1, obj2, parentKey))\n\t\telse if (!equal(obj1, obj2)) diff.push(parentKey)\n\t}\n\treturn diff\n}\n\nexport function equal(v1: unknown, v2: unknown): boolean {\n\tconst [val1, val2] = [v1, v2].map((v) => {\n\t\tif (type.map(v)) return Object.fromEntries(v.entries())\n\t\tif (type.set(v)) return [...v]\n\t\treturn v\n\t})\n\n\tif (val1 === val2) return true\n\n\tif (type.string(val1)) return val1 === val2\n\tif (type.number(val1)) return val1 === val2\n\tif (type.bigint(val1)) return val1 === val2\n\tif (type.boolean(val1)) return val1 === val2\n\tif (type.null(val1)) return val1 === val2\n\tif (type.undefined(val1)) return val1 === val2\n\tif (type.function(val1)) return val1 === val2\n\n\tif (type.regex(val1)) return type.regex(val2) && val1.source === val2.source\n\tif (type.nan(val1)) return type.nan(val2)\n\tif (type.date(val1)) return type.date(val2) && val1.getTime() === val2.getTime()\n\tif (type.array(val1)) {\n\t\tif (!type.array(val2)) return false\n\t\tif (val1.length !== val2.length) return false\n\t\treturn val1.every((c, i) => equal(c, val2.at(i)))\n\t}\n\n\tif (type.object(val1) && type.object(val2)) {\n\t\tconst keys1 = Object.keys(val1 ?? {})\n\t\tconst keys2 = Object.keys(val2 ?? {})\n\t\tif (keys1.length !== keys2.length) return false\n\t\tconst keys = [...new Set(keys1.concat(keys2))]\n\t\treturn keys.every((key) => key in val1 && key in val2 && equal(val1[key], val2[key]))\n\t}\n\n\treturn false\n}\n\nexport function diff(val1: unknown, val2: unknown) {\n\treturn getDiff(val1, val2)\n}\n\nexport function from(keys: string[]) {\n\tconst deepMerge = (from: object, to: object) =>\n\t\tObject.entries(from ?? {}).reduce(\n\t\t\t(merged, [key, obj]) => {\n\t\t\t\tmerged[key] = type.object(obj) ? deepMerge(obj, merged[key] ?? {}) : obj\n\t\t\t\treturn merged\n\t\t\t},\n\t\t\t{ ...to },\n\t\t)\n\n\tconst formObject = (key: string) =>\n\t\tkey\n\t\t\t.split('.')\n\t\t\t.reverse()\n\t\t\t.reduce<Record<string, any>>((acc, k) => ({ [k]: acc ?? true }), null as any)\n\n\treturn keys.map(formObject).reduce(deepMerge, {})\n}\n\nexport function merge(v1: unknown, v2: unknown) {\n\tif (type.undefined(v1)) return v2\n\tif (type.undefined(v2)) return v1\n\tif (type.array(v1) && type.array(v2)) {\n\t\treturn Array.from({ length: Math.max(v1.length, v2.length) }, (_, i) => merge(v1[i], v2[i]))\n\t}\n\tif (type.object(v1) && type.object(v2)) {\n\t\tconst keys = new Set([...Object.keys(v1), ...Object.keys(v2)])\n\t\treturn Array.from(keys).reduce(\n\t\t\t(acc, key) => {\n\t\t\t\tacc[key] = merge(v1[key], v2[key])\n\t\t\t\treturn acc\n\t\t\t},\n\t\t\t{} as Record<string, any>,\n\t\t)\n\t}\n\treturn v2\n}\n","import { PipeError } from './base'\nimport { pipe } from './base/pipes'\nimport { equal } from '../utils/differ'\nimport { execValueFunction, ValueFunction } from '../utils/functions'\n\nexport const custom = <T>(condition: (input: T) => boolean, err = `doesn't pass custom rule`) =>\n\tpipe<T, T, any>((input) => {\n\t\tif (condition(input)) return input as T\n\t\tthrow PipeError.root(err, input)\n\t}, {})\n\nexport const eq = <T>(compare: ValueFunction<T>, err?: string) =>\n\tpipe<T, T, any>(\n\t\t(input, context) => {\n\t\t\tconst comp = execValueFunction(context.eq ?? compare)\n\t\t\tif (input === comp || equal(input, comp)) return input as T\n\t\t\tthrow PipeError.root(err ?? `is not equal to ${comp}`, input)\n\t\t},\n\t\t{ context: () => ({ eq: compare }), schema: (context) => ({ const: execValueFunction(context.eq ?? compare) }) },\n\t)\n\nexport const is = eq\n\nexport const ne = <T>(compare: ValueFunction<T>, err?: string) =>\n\tpipe<T, T, any>(\n\t\t(input, context) => {\n\t\t\tconst comp = execValueFunction(context.eq ?? compare)\n\t\t\tif (!equal(input, comp) && input !== comp) return input as T\n\t\t\tthrow PipeError.root(err ?? `is equal to ${comp}`, input)\n\t\t},\n\t\t{ context: () => ({ ne: compare }), schema: (context) => ({ not: { const: execValueFunction(context.eq ?? compare) } }) },\n\t)\n\nconst inArray = <T>(array: ValueFunction<Readonly<T[]>>, err?: string) =>\n\tpipe<T, T, any>(\n\t\t(input, context) => {\n\t\t\tconst arr = execValueFunction(context.in ?? array)\n\t\t\tif (arr.find((x) => equal(input, x))) return input as T\n\t\t\tthrow PipeError.root(err ?? `is not in the list: [${arr.join(',')}]`, input)\n\t\t},\n\t\t{ context: () => ({ in: array }), schema: (context) => ({ enum: [...execValueFunction(context.in ?? array)] }) },\n\t)\n\nexport const nin = <T>(array: ValueFunction<Readonly<T[]>>, err?: string) =>\n\tpipe<T, T, any>(\n\t\t(input, context) => {\n\t\t\tconst arr = execValueFunction(context.nin ?? array)\n\t\t\tif (!arr.find((x) => equal(input, x))) return input as T\n\t\t\tthrow PipeError.root(err ?? `is in the list: [${arr.join(',')}]`, input)\n\t\t},\n\t\t{ context: () => ({ nin: array }), schema: (context) => ({ not: { enum: [...execValueFunction(context.nin ?? array)] } }) },\n\t)\n\nfunction itemType(input: unknown) {\n\treturn input?.constructor?.name === 'String' ? 'characters' : 'items'\n}\n\nexport const has = <T extends { length: number }>(length: ValueFunction<number>, err?: string) =>\n\tpipe<T, T, any>(\n\t\t(input, context) => {\n\t\t\tif (input.length === execValueFunction(context.has ?? length)) return input\n\t\t\tthrow PipeError.root(err ?? `must contain ${length} ${itemType(input)}`, input)\n\t\t},\n\t\t{\n\t\t\tcontext: () => ({ has: length }),\n\t\t\tschema: (context) => {\n\t\t\t\tconst val = execValueFunction(context.has ?? length)\n\t\t\t\treturn {\n\t\t\t\t\tminItems: val,\n\t\t\t\t\tmaxItems: val,\n\t\t\t\t\tminLength: val,\n\t\t\t\t\tmaxLength: val,\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t)\n\nexport const min = <T extends { length: number }>(length: ValueFunction<number>, err?: string) =>\n\tpipe<T, T, any>(\n\t\t(input, context) => {\n\t\t\tconst len = execValueFunction(context.min ?? length)\n\t\t\tif (input.length >= len) return input\n\t\t\tthrow PipeError.root(err ?? `must contain ${len} or more ${itemType(input)}`, input)\n\t\t},\n\t\t{\n\t\t\tcontext: () => ({ min: length }),\n\t\t\tschema: (context) => {\n\t\t\t\tconst val = execValueFunction(context.min ?? length)\n\t\t\t\treturn { minItems: val, minLength: val }\n\t\t\t},\n\t\t},\n\t)\n\nexport const max = <T extends { length: number }>(length: ValueFunction<number>, err?: string) =>\n\tpipe<T, T, any>(\n\t\t(input, context) => {\n\t\t\tconst len = execValueFunction(context.max ?? length)\n\t\t\tif (input.length <= len) return input\n\t\t\tthrow PipeError.root(err ?? `must contain ${len} or less ${itemType(input)}`, input)\n\t\t},\n\t\t{\n\t\t\tcontext: () => ({ max: length }),\n\t\t\tschema: (context) => {\n\t\t\t\tconst val = execValueFunction(context.min ?? length)\n\t\t\t\treturn { maxItems: val, maxLength: val }\n\t\t\t},\n\t\t},\n\t)\n\nexport { inArray as in }\n","import { PipeError } from './base'\nimport { pipe } from './base/pipes'\nimport { execValueFunction, ValueFunction } from '../utils/functions'\n\nexport interface File {\n\ttype: string\n}\n\nconst isFile = (v: unknown): v is File => typeof v === 'object' && !!v && 'type' in v\nconst isMimeType = (str: string) => /^[a-zA-Z0-9!#$&^_.+-]+\\/[a-zA-Z0-9!#$&^_.+-]+$/.test(str)\n\nexport const file = <T extends File>(err = 'is not a recognized file') =>\n\tpipe<T, T, any>(\n\t\t(input) => {\n\t\t\tif (isFile(input) && isMimeType(input.type)) return input as T\n\t\t\tthrow PipeError.root(err, input)\n\t\t},\n\t\t{ schema: () => ({ type: 'string', format: 'binary' }) },\n\t)\n\nexport const image = <T extends File>(err = 'is not a recognized image file') =>\n\tpipe<T, T, any>((input) => {\n\t\tif (isFile(input) && isMimeType(input.type) && input.type.startsWith('image/')) return input\n\t\tthrow PipeError.root(err, input)\n\t})\n\nexport const audio = <T extends File>(err = 'is not a recognized audio file') =>\n\tpipe<T, T, any>((input) => {\n\t\tif (isFile(input) && isMimeType(input.type) && input.type.startsWith('audio/')) return input\n\t\tthrow PipeError.root(err, input)\n\t})\n\nexport const video = <T extends File>(err = 'is not a recognized video file') =>\n\tpipe<T, T, any>((input) => {\n\t\tif (isFile(input) && isMimeType(input.type) && input.type.startsWith('video/')) return input\n\t\tthrow PipeError.root(err, input)\n\t})\n\nexport const fileType = <T extends File>(typesFn: ValueFunction<string | string[]>, err = 'is not a supported file') =>\n\tpipe<T, T, any>((input) => {\n\t\tif (isFile(input) && isMimeType(input.type)) {\n\t\t\tconst types = execValueFunction(typesFn)\n\t\t\tconst fileTypes = Array.isArray(types) ? types : [types]\n\t\t\tif (fileTypes.some((type) => input.type === type)) return input\n\t\t}\n\t\tthrow PipeError.root(err, input)\n\t})\n","import { Pipe, PipeContext, PipeError, PipeInput, PipeOutput } from './base'\nimport { merge as differMerge } from '../utils/differ'\nimport { wrapInTryCatch } from '../utils/functions'\nimport { assert, branch, pipe, schema, validate } from './base/pipes'\n\nexport const or = <T extends Pipe<any, any, any>[]>(pipes: T) =>\n\tpipe<PipeInput<T[number]>, PipeOutput<T[number]>, PipeContext<T[number]>>(\n\t\t(input) => {\n\t\t\tif (pipes.length === 0) return input as any\n\t\t\tconst errors: PipeError[] = []\n\t\t\tfor (const [idx, pipe] of Object.entries(pipes)) {\n\t\t\t\tconst validity = validate(pipe, input)\n\t\t\t\tif (validity.valid) return validity.value\n\t\t\t\terrors.push(PipeError.path(idx, validity.error, input))\n\t\t\t}\n\t\t\tthrow PipeError.rootFrom(errors, input)\n\t\t},\n\t\t{ schema: () => ({ oneOf: pipes.map((branch) => schema(branch)) }) },\n\t)\n\nexport const and = <T extends Pipe<any, any, any>>(pipes: T[]) =>\n\tpipe<PipeInput<T>, PipeOutput<T>, PipeContext<T>>(\n\t\t(input) => {\n\t\t\tfor (const [idx, pipe] of Object.entries(pipes)) {\n\t\t\t\tconst validity = validate(pipe, input)\n\t\t\t\tif (!validity.valid) throw PipeError.path(idx, validity.error, input)\n\t\t\t\tinput = validity.value as any\n\t\t\t}\n\t\t\treturn input as any\n\t\t},\n\t\t{ schema: () => ({ allOf: pipes.map((branch) => schema(branch)) }) },\n\t)\n\nexport const merge = <T1 extends Pipe<any, any, any>, T2 extends Pipe<any, any, any>>(branch1: T1, branch2: T2) =>\n\tpipe<PipeInput<T1> & PipeInput<T2>, PipeOutput<T1> & PipeOutput<T2>, PipeContext<T1> & PipeContext<T2>>(\n\t\t(input) => differMerge(assert(branch1, input), assert(branch2, input)),\n\t\t{ schema: () => ({ allOf: [schema(branch1), schema(branch2)] }) },\n\t)\n\nexport const discriminate = <T extends Record<PropertyKey, Pipe<any, any, any>>>(\n\tdiscriminator: (val: PipeInput<T[keyof T]>) => PropertyKey,\n\tschemas: T,\n\terr = 'doesnt match any of the schema',\n) =>\n\tpipe<PipeInput<T[keyof T]>, PipeOutput<T[keyof T]>, PipeContext<T[keyof T]>>(\n\t\t(input) => {\n\t\t\tconst accessor = wrapInTryCatch(() => discriminator(input))!\n\t\t\tif (!schemas[accessor]) throw PipeError.root(err, input)\n\t\t\treturn assert(schemas[accessor], input)\n\t\t},\n\t\t{\n\t\t\tschema: () => ({ oneOf: Object.values(schemas).map((s) => schema(s)) }),\n\t\t},\n\t)\n\nexport const fromJson = <T extends Pipe<any, any, any>>(pipe: T) =>\n\tbranch<T, PipeInput<T>, PipeOutput<T>, PipeContext<T>>(\n\t\tpipe,\n\t\t(input) => {\n\t\t\tconst validity = validate(pipe, input)\n\t\t\tif (validity.valid) return validity.value\n\t\t\tif (input?.constructor?.name !== 'String') throw validity.error\n\n\t\t\tconst parsed = wrapInTryCatch(() => JSON.parse(input), validity.error)\n\t\t\tif (parsed === validity.error) throw validity.error\n\t\t\treturn assert(pipe, parsed)\n\t\t},\n\t\t{\n\t\t\tcontext: (c) => c,\n\t\t\tschema: (s) => s,\n\t\t},\n\t)\n","import { PipeError } from './base'\nimport { pipe } from './base/pipes'\nimport { execValueFunction, ValueFunction } from '../utils/functions'\n\nexport const gt = (value: ValueFunction<number>, err?: string) =>\n\tpipe<number, number, any>(\n\t\t(input) => {\n\t\t\tconst v = execValueFunction(value)\n\t\t\tif (input > v) return input\n\t\t\tthrow PipeError.root(err ?? `must be greater than ${v}`, input)\n\t\t},\n\t\t{ schema: () => ({ exclusiveMinimum: execValueFunction(value) }) },\n\t)\n\nexport const gte = (value: ValueFunction<number>, err?: string) =>\n\tpipe<number, number, any>(\n\t\t(input) => {\n\t\t\tconst v = execValueFunction(value)\n\t\t\tif (input >= v) return input\n\t\t\tthrow PipeError.root(err ?? `must be greater than or equal to ${v}`, input)\n\t\t},\n\t\t{ schema: () => ({ minimum: execValueFunction(value) }) },\n\t)\n\nexport const lt = (value: ValueFunction<number>, err?: string) =>\n\tpipe<number, number, any>(\n\t\t(input) => {\n\t\t\tconst v = execValueFunction(value)\n\t\t\tif (input < v) return input\n\t\t\tthrow PipeError.root(err ?? `must be less than ${v}`, input)\n\t\t},\n\t\t{ schema: () => ({ exclusiveMaximum: execValueFunction(value) }) },\n\t)\n\nexport const lte = (value: ValueFunction<number>, err?: string) =>\n\tpipe<number, number, any>(\n\t\t(input) => {\n\t\t\tconst v = execValueFunction(value)\n\t\t\tif (input <= v) return input\n\t\t\tthrow PipeError.root(err ?? `must be less than or equal to ${v}`, input)\n\t\t},\n\t\t{ schema: () => ({ maximum: execValueFunction(value) }) },\n\t)\n\nexport const int = (err = 'is not an integer') =>\n\tpipe<number, number, any>(\n\t\t(input) => {\n\t\t\tif (input === parseInt(input as any)) return input\n\t\t\tthrow PipeError.root(err, input)\n\t\t},\n\t\t{ schema: () => ({ type: 'integer' }) },\n\t)\n\nexport const asRounded = (dp = 0) => pipe<number, number, any>((input) => Number(input.toFixed(dp)), {})\n","import { Pipe, PipeContext, PipeInput, PipeOutput } from './base'\nimport { assert, branch, validate } from './base/pipes'\nimport { execValueFunction, ValueFunction } from '../utils/functions'\nimport { DeepPartial } from '../utils/types'\n\nconst partial = <T extends Pipe<any, any, any>, P, C>(\n\tpipe: T,\n\tpartialCondition: (i: unknown) => boolean,\n\tforce: boolean,\n\tconfig: Parameters<typeof branch<T, PipeInput<T> | P, PipeOutput<T> | P, PipeContext<T> & C>>[2],\n) =>\n\tbranch<T, PipeInput<T> | P, PipeOutput<T> | P, PipeContext<T> & C>(\n\t\tpipe,\n\t\t(input) => {\n\t\t\tconst isPartial = partialCondition(input)\n\t\t\tif (isPartial) return input as P\n\t\t\tconst validity = validate(pipe, input)\n\t\t\tif (validity.valid) return validity.value as PipeOutput<T>\n\t\t\tif (force) throw validity.error\n\t\t\treturn input as P\n\t\t},\n\t\tconfig,\n\t)\n\nexport const nullable = <T extends Pipe<any, any, any>>(branch: T) =>\n\tpartial<T, null, any>(branch, (i) => i === null, true, {\n\t\tschema: (schema) => ({ oneOf: [schema, { type: 'null' }] }),\n\t\tcontext: (c) => c,\n\t})\n\nexport const optional = <T extends Pipe<any, any, any>>(branch: T) =>\n\tpartial<T, undefined, any>(branch, (i) => i === undefined, true, {\n\t\tschema: (schema) => schema,\n\t\tcontext: (c) => ({ ...c, optional: true }),\n\t})\n\nexport const nullish = <T extends Pipe<any, any, any>>(branch: T) =>\n\tpartial<T, null | undefined, any>(branch, (i) => i === null || i === undefined, true, {\n\t\tschema: (schema) => ({ oneOf: [schema, { type: 'null' }] }),\n\t\tcontext: (c) => ({ ...c, optional: true }),\n\t})\n\nexport const conditional = <T extends Pipe<any, any, any>>(branch: T, condition: () => boolean) =>\n\tpartial<T, never, any>(branch, () => !condition(), condition(), {\n\t\tschema: (schema) => schema,\n\t\tcontext: (c) => ({ ...c, optional: true }),\n\t})\n\ntype DefaultValue<T> = ValueFunction<T extends object ? DeepPartial<T> : T>\n\nexport const defaults = <T extends Pipe<any, any, any>>(pipe: T, def: DefaultValue<PipeInput<T>>) =>\n\tbranch<T, PipeInput<T> | undefined, Exclude<PipeOutput<T>, undefined>, any>(\n\t\tpipe,\n\t\t(input, context) => assert(pipe, input !== undefined ? input : execValueFunction(context?.defaults ?? def)) as any,\n\t\t{\n\t\t\tschema: (s, c) => ({ ...s, default: execValueFunction(c.defaults ?? def) }),\n\t\t\tcontext: (c) => ({ ...c, defaults: def, optional: true }),\n\t\t},\n\t)\n\nconst onCatch = <T extends Pipe<any, any, any>>(pipe: T, def: DefaultValue<PipeInput<T>>) =>\n\tbranch<T, PipeInput<T>, PipeOutput<T>, PipeContext<T>>(\n\t\tpipe,\n\t\t(input, context) => {\n\t\t\tconst validity = validate(pipe, input)\n\t\t\tif (validity.valid) return validity.value\n\t\t\treturn execValueFunction(context?.catch ?? def) as any\n\t\t},\n\t\t{\n\t\t\tschema: (s, c) => ({ ...s, default: execValueFunction(c.catch ?? def) }),\n\t\t\tcontext: (c) => ({ ...c, catch: def }),\n\t\t},\n\t)\nexport { onCatch as catch }\n","import { PipeError, PipeInput, PipeOutput, type Pipe } from './base'\nimport { context, branch, pipe, schema, validate } from './base/pipes'\n\ntype ObjectPipe<T extends Record<string, Pipe<any, any, any>>> = Pipe<\n\t{ [K in keyof T]: PipeInput<T[K]> },\n\t{ [K in keyof T]: PipeOutput<T[K]> },\n\tany\n>\n\nexport const object = <T extends Record<string, Pipe<any, any, any>>>(pipes: T) =>\n\tpipe<PipeInput<ObjectPipe<T>>, PipeOutput<ObjectPipe<T>>, any>(\n\t\t(input, context) => {\n\t\t\tif (typeof input !== 'object' || input === null || Array.isArray(input)) throw PipeError.root('is not an object', input)\n\t\t\tconst obj = {} as any\n\t\t\tconst errors: PipeError[] = []\n\t\t\tfor (const key of context.objectKeys ?? Object.keys(pipes)) {\n\t\t\t\tif (!(key in pipes)) continue\n\t\t\t\tconst value = input[key]\n\t\t\t\tconst validity = validate(pipes[key], value)\n\t\t\t\tif (!validity.valid) errors.push(PipeError.path(key, validity.error, value))\n\t\t\t\telse obj[key] = validity.value\n\t\t\t}\n\t\t\tif (errors.length) throw PipeError.rootFrom(errors, input)\n\t\t\treturn obj\n\t\t},\n\t\t{\n\t\t\tschema: () => ({\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: Object.fromEntries(Object.entries(pipes ?? {}).map(([key, pipe]) => [key, schema(pipe)])),\n\t\t\t\trequired: Object.entries(pipes ?? {})\n\t\t\t\t\t.filter(([, pipe]) => !context(pipe).optional)\n\t\t\t\t\t.map(([key]) => key),\n\t\t\t\tadditionalProperties: false,\n\t\t\t}),\n\t\t\tcontext: () => ({ objectKeys: Object.keys(pipes) }),\n\t\t},\n\t)\n\nexport const objectPick = <T extends ObjectPipe<Record<string, Pipe<any, any, any>>>, S extends ReadonlyArray<keyof PipeInput<T> & string>>(\n\tpipe: T,\n\tkeys: S,\n) =>\n\tbranch<T, Pick<PipeInput<T>, S[number]>, Pick<PipeOutput<T>, S[number]>, any>(pipe, pipe.fn as any, {\n\t\tschema: (s) => ({\n\t\t\t...s,\n\t\t\tproperties: Object.fromEntries(Object.entries(s.properties ?? {}).filter(([key]) => keys.includes(key as S[number]))),\n\t\t\trequired: (s.required ?? []).filter((key) => keys.includes(key as S[number])),\n\t\t}),\n\t\tcontext: (c) => ({\n\t\t\t...c,\n\t\t\tobjectKeys: (c.objectKeys ?? []).filter((key) => keys.includes(key as S[number])),\n\t\t}),\n\t})\n\nexport const objectOmit = <T extends ObjectPipe<Record<string, Pipe<any, any, any>>>, S extends ReadonlyArray<keyof PipeInput<T> & string>>(\n\tpipe: T,\n\tkeys: S,\n) =>\n\tbranch<T, Omit<PipeInput<T>, S[number]>, Omit<PipeOutput<T>, S[number]>, any>(pipe, pipe.fn as any, {\n\t\tschema: (s) => ({\n\t\t\t...s,\n\t\t\tproperties: Object.fromEntries(Object.entries(s.properties ?? {}).filter(([key]) => !keys.includes(key as S[number]))),\n\t\t\trequired: (s.required ?? []).filter((key) => !keys.includes(key as S[number])),\n\t\t}),\n\t\tcontext: (c) => ({\n\t\t\t...c,\n\t\t\tobjectKeys: (c.objectKeys ?? []).filter((key) => !keys.includes(key as S[number])),\n\t\t}),\n\t})\n\nexport const record = <K extends Pipe<any, PropertyKey, any>, V extends Pipe<any, any, any>>(kPipe: K, vPipe: V) =>\n\tpipe<Record<PipeInput<K>, PipeInput<V>>, Record<PipeOutput<K>, PipeOutput<V>>, any>(\n\t\t(input: unknown) => {\n\t\t\tif (typeof input !== 'object' || input === null || Array.isArray(input)) throw PipeError.root(['is not an object'], input)\n\t\t\tconst obj = {} as object\n\t\t\tconst errors: PipeError[] = []\n\t\t\tfor (const [k, v] of Object.entries(input)) {\n\t\t\t\tconst kValidity = validate(kPipe, k)\n\t\t\t\tconst vValidity = validate(vPipe, v)\n\t\t\t\tif (!kValidity.valid) errors.push(PipeError.path(k, kValidity.error, k))\n\t\t\t\tif (!vValidity.valid) errors.push(PipeError.path(k, vValidity.error, v))\n\t\t\t\tif (kValidity.valid && vValidity.valid) {\n\t\t\t\t\tif (k !== kValidity.value) delete obj[k]\n\t\t\t\t\tobj[kValidity.value as any] = vValidity.value\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (errors.length) throw PipeError.rootFrom(errors, input)\n\t\t\treturn obj as any\n\t\t},\n\t\t{\n\t\t\tschema: () => ({\n\t\t\t\ttype: 'object',\n\t\t\t\tpropertyNames: schema(kPipe),\n\t\t\t\tadditionalProperties: schema(vPipe),\n\t\t\t}),\n\t\t},\n\t)\n\nexport const asMap = <K extends PropertyKey, V>() =>\n\tpipe<Record<K, V>, Map<K, V>, any>((input) => new Map<K, V>(Object.entries(input) as any), {})\n","import url from 'url-regex-safe'\n\nexport const urlRegex = url() as RegExp\nexport const emailRegex =\n\t/^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n","import { Pipe, PipeError } from './base'\nimport { assert, branch, pipe } from './base/pipes'\nimport * as fns from '../utils/functions'\nimport { emailRegex, urlRegex } from '../utils/regexes'\n\nexport const email = (err = 'is not a valid email') =>\n\tpipe<string, string, any>(\n\t\t(input) => {\n\t\t\tif (emailRegex.test(input)) return input\n\t\t\tthrow PipeError.root(err, input)\n\t\t},\n\t\t{ schema: () => ({ format: 'email' }) },\n\t)\n\nexport const url = (err = 'is not a valid url') =>\n\tpipe<string, string, any>(\n\t\t(input) => {\n\t\t\tif (urlRegex.test(input)) return input\n\t\t\tthrow PipeError.root(err, input)\n\t\t},\n\t\t{ schema: () => ({ format: 'uri' }) },\n\t)\n\nexport const withStrippedHtml = (pipe: Pipe<string, string, any>) =>\n\tbranch<Pipe<string, string, any>, string, string, any>(\n\t\tpipe,\n\t\t(input) => {\n\t\t\tconst stripped = fns.stripHTML(input)\n\t\t\tassert(pipe, stripped)\n\t\t\treturn input\n\t\t},\n\t\t{\n\t\t\tcontext: (c) => c,\n\t\t\tschema: (s) => s,\n\t\t},\n\t)\n\nexport const asTrimmed = () => pipe<string, string, any>((input) => input.trim(), {})\n\nexport const asLowercased = () => pipe<string, string, any>((input) => input.toLowerCase(), {})\n\nexport const asUppercased = () => pipe<string, string, any>((input) => input.toUpperCase(), {})\n\nexport const asCapitalized = () => pipe<string, string, any>((input) => fns.capitalize(input), {})\n\nexport const asStrippedHtml = () => pipe<string, string, any>((input) => fns.stripHTML(input), {})\n\nexport const asSliced = (length: number) => pipe<string, string, any>((input) => fns.trimToLength(input, length), {})\n","const DATA_URL_DEFAULT_MIME_TYPE = 'text/plain'\nconst DATA_URL_DEFAULT_CHARSET = 'us-ascii'\n\nconst normalizeDataURL = (urlString: string) => {\n\tconst match = /^data:(?<type>[^,]*?),(?<data>[^#]*?)(?:#(?<hash>.*))?$/.exec(urlString)\n\n\tif (!match) throw new Error(`Invalid URL: ${urlString}`)\n\tif (!match.groups) throw new Error(`Invalid URL: ${urlString}`)\n\n\tconst { type, data, hash } = match.groups\n\tconst mediaType = type.split(';')\n\n\tlet isBase64 = false\n\tif (mediaType[mediaType.length - 1] === 'base64') {\n\t\tmediaType.pop()\n\t\tisBase64 = true\n\t}\n\n\t// Lowercase MIME type\n\tconst mimeType = (mediaType.shift() || '').toLowerCase()\n\tconst attributes = mediaType\n\t\t.map((attribute) => {\n\t\t\tconst val = attribute.split('=').map((string) => string.trim())\n\t\t\tconst key = val[0]\n\t\t\tlet value = val[1] ?? ''\n\t\t\tif (key === 'charset') {\n\t\t\t\tvalue = value.toLowerCase()\n\t\t\t\tif (value === DATA_URL_DEFAULT_CHARSET) return ''\n\t\t\t}\n\t\t\treturn `${key}${value ? `=${value}` : ''}`\n\t\t})\n\t\t.filter(Boolean)\n\n\tconst normalizedMediaType = [...attributes]\n\tif (isBase64) normalizedMediaType.push('base64')\n\tif (normalizedMediaType.length > 0 || (mimeType && mimeType !== DATA_URL_DEFAULT_MIME_TYPE)) normalizedMediaType.unshift(mimeType)\n\treturn `data:${normalizedMediaType.join(';')},${isBase64 ? data.trim() : data}${hash ? `#${hash}` : ''}`\n}\n\nexport const normalizeUrl = (urlString: string) => {\n\turlString = urlString.trim()\n\n\tif (/^data:/i.test(urlString)) return normalizeDataURL(urlString)\n\tif (/^view-source:/i.test(urlString)) throw new Error('`view-source:` is not supported as it is a non-standard protocol')\n\n\tconst hasRelativeProtocol = urlString.startsWith('//')\n\tconst isRelativeUrl = !hasRelativeProtocol && /^\\.*\\//.test(urlString)\n\tif (!isRelativeUrl) urlString = urlString.replace(/^(?!(?:\\w+:)?\\/\\/)|^\\/\\//, 'http:')\n\n\tconst urlObject = new URL(urlString)\n\turlObject.username = urlObject.password = ''\n\turlObject.hash = urlObject.hash.replace(/#?:~:text.*?$/i, '')\n\n\tif (urlObject.pathname) {\n\t\tconst protocolRegex = /\\b[a-z][a-z\\d+\\-.]{1,50}:\\/\\//g\n\n\t\tlet lastIndex = 0\n\t\tlet result = ''\n\t\twhile (protocolRegex.exec(urlObject.pathname)) {\n\t\t\tconst match = protocolRegex.exec(urlObject.pathname)!\n\t\t\tconst protocol = match[0]\n\t\t\tconst protocolAtIndex = match.index\n\t\t\tconst intermediate = urlObject.pathname.slice(lastIndex, protocolAtIndex)\n\n\t\t\tresult += intermediate.replace(/\\/{2,}/g, '/')\n\t\t\tresult += protocol\n\t\t\tlastIndex = protocolAtIndex + protocol.length\n\t\t}\n\n\t\tconst remnant = urlObject.pathname.slice(lastIndex, urlObject.pathname.length)\n\t\tresult += remnant.replace(/\\/{2,}/g, '/')\n\n\t\turlObject.pathname = result\n\t}\n\n\t// Decode URI octets\n\tif (urlObject.pathname) urlObject.pathname = decodeURI(urlObject.pathname)\n\tif (urlObject.hostname) urlObject.hostname = urlObject.hostname.replace(/\\.$/, '')\n\turlObject.pathname = urlObject.pathname.replace(/\\/$/, '')\n\n\tconst oldUrlString = urlString\n\turlString = urlObject.toString()\n\n\tif (urlObject.pathname === '/' && !oldUrlString.endsWith('/') && urlObject.hash === '') urlString = urlString.replace(/\\/$/, '')\n\tif (urlObject.pathname === '/' && urlObject.hash === '') urlString = urlString.replace(/\\/$/, '')\n\n\treturn urlString\n}\n","import { v } from '../../api'\nimport { urlRegex } from '../regexes'\nimport { normalizeUrl } from './urls/normalize'\n\nexport const capitalize = (text: string) => {\n\tif (text === null || text === undefined) return text\n\ttext = text.toString()\n\tconst c = (v: string) => (v[0]?.toUpperCase() ?? '') + v.slice(1)\n\treturn text.trim().split(' ').map(c).join(' ')\n}\n\nexport const stripHTML = (html: string) => {\n\tif (html === null || html === undefined) return html\n\treturn (\n\t\thtml\n\t\t\t?.toString()\n\t\t\t?.trim()\n\t\t\t.replace(/<[^>]+>/g, '') ?? ''\n\t)\n}\n\nexport const trimToLength = (body: string, length: number) => {\n\tif (body === null || body === undefined) return body\n\n\tbody = body.toString()\n\tif (body.length <= length) return body\n\n\tconst indexOfSpace = body.indexOf(' ', length)\n\tconst indexToTrim = indexOfSpace === -1 ? length : indexOfSpace\n\treturn `${body.slice(0, indexToTrim)}...`\n}\n\nexport const extractUrls = (text: string) => {\n\tconst urls = text.match(urlRegex) || ([] as string[])\n\treturn urls\n\t\t.filter((url, index) => urls.indexOf(url) === index)\n\t\t.map((url) => {\n\t\t\turl = url.trim()\n\t\t\treturn {\n\t\t\t\toriginal: url,\n\t\t\t\tnormalized: normalizeUrl(url.replace(/\\.+$/, '')),\n\t\t\t}\n\t\t})\n}\n\nexport const formatNumber = (num: number, dp?: number) =>\n\tIntl.NumberFormat('en', { notation: 'compact', ...(dp ? { maximumFractionDigits: dp } : {}) }).format(\n\t\tv.validate(v.number(), num).valid ? num : 0,\n\t)\n\nexport const pluralize = (count: number, singular: string, plural: string) => (Math.round(count) === 1 ? singular : plural)\n\nexport const getRandomValue = () => Date.now() + Math.random().toString(36)\n\nexport const groupBy = <Type, Unique extends string | number>(array: Array<Type>, func: (item: Type) => Unique) =>\n\tarray.reduce(\n\t\t(acc, cur) => {\n\t\t\tconst key = func(cur)\n\t\t\tconst index = acc.findIndex((a) => a.key === key)\n\t\t\tif (index === -1) acc.push({ key, values: [cur] })\n\t\t\telse acc[index].values.push(cur)\n\t\t\treturn acc\n\t\t},\n\t\t[] as { key: Unique; values: Type[] }[],\n\t) as { key: Unique; values: Type[] }[]\n\nexport const getAlphabet = (num: number) => 'abcdefghijklmnopqrstuv'.split('')[num] ?? 'a'\n\nexport const addToArray = <T>(array: T[], item: T, getKey: (a: T) => any, getComparer: (a: T) => number | string, asc = false) => {\n\tconst existingIndex = array.findIndex((el) => getKey(el) === getKey(item))\n\tconst index = array.findIndex((el) => (asc ? getComparer(el) >= getComparer(item) : getComparer(el) <= getComparer(item)))\n\tif (existingIndex !== -1 && existingIndex === index) {\n\t\tarray.splice(existingIndex, 1, item)\n\t\treturn array\n\t}\n\tif (existingIndex !== -1 && existingIndex !== index) array.splice(existingIndex, 1)\n\tif (index !== -1) array.splice(index, 0, item)\n\telse if (array.length === 0) array.push(item)\n\telse {\n\t\tconst existingIsGreater = getComparer(array[0]) >= getComparer(item)\n\t\tif (existingIsGreater) asc ? array.unshift(item) : array.push(item)\n\t\telse asc ? array.push(item) : array.unshift(item)\n\t}\n\treturn array\n}\n\nexport const divideByZero = (num: number, den: number) => (den === 0 ? 0 : num / den)\n\nexport const getPercentage = (num: number, den: number) => 100 * (divideByZero(num, den) > 1 ? 1 : divideByZero(num, den))\n\nexport const getRandomSample = <Type>(population: Array<Type>, n: number) => {\n\tconst indexes = [] as number[]\n\tconst indexesObject = {} as Record<number, boolean>\n\n\twhile (indexes.length < n && indexes.length < population.length) {\n\t\tconst random = Math.floor(Math.random() * population.length)\n\t\tif (random in indexesObject) continue\n\t\tindexesObject[random] = true\n\t\tindexes.push(random)\n\t}\n\n\treturn indexes.map((idx) => population[idx])\n}\n\nexport const shuffleArray = <Type>(array: Array<Type>) => [...array].sort(() => Math.random() - 0.5)\n\nexport const chunkArray = <T>(arr: T[], size: number) => {\n\tconst chunks: T[][] = []\n\tfor (let i = 0; i < arr.length; i += size) chunks.push(arr.slice(i, i + size))\n\treturn chunks\n}\n\nexport const wrapInTryCatch = <T>(fn: () => T, defaultValue?: T) => {\n\ttry {\n\t\treturn fn()\n\t} catch {\n\t\treturn defaultValue\n\t}\n}\n\nexport const compareTwoStrings = (first: string, second: string) => {\n\tfirst = first.replace(/\\s+/g, '')\n\tsecond = second.replace(/\\s+/g, '')\n\n\tif (first === second) return 1\n\tif (first.length < 2 || second.length < 2) return 0\n\n\tconst firstBigrams = new Map()\n\tfor (let i = 0; i < first.length - 1; i++) {\n\t\tconst bigram = first.substring(i, i + 2)\n\t\tconst count = firstBigrams.has(bigram) ? firstBigrams.get(bigram) + 1 : 1\n\t\tfirstBigrams.set(bigram, count)\n\t}\n\n\tlet intersectionSize = 0\n\tfor (let i = 0; i < second.length - 1; i++) {\n\t\tconst bigram = second.substring(i, i + 2)\n\t\tconst count = firstBigrams.has(bigram) ? firstBigrams.get(bigram) : 0\n\n\t\tif (count > 0) {\n\t\t\tfirstBigrams.set(bigram, count - 1)\n\t\t\tintersectionSize++\n\t\t}\n\t}\n\n\treturn (2.0 * intersectionSize) / (first.length + second.length - 2)\n}\n\nexport type ValueFunction<T> = T | (() => T)\nexport function execValueFunction<T>(def: ValueFunction<T>): T {\n\treturn typeof def === 'function' ? (def as any)() : def\n}\n","import { v } from '../api'\n\nconst Base32Chars = '0123456789bcdefghjkmnpqrstuvwxyz'\nconst Base2Chars = '01'\n\nfunction base10ToBaseX(num: number, base: number, chars: string) {\n\tconst charsObj = Object.fromEntries(\n\t\tchars\n\t\t\t.toLowerCase()\n\t\t\t.split('')\n\t\t\t.map((value, index) => [index, value]),\n\t)\n\tconst bits: string[] = []\n\tif (num === 0) return '0'\n\twhile (num > 0) {\n\t\tbits.push(charsObj[num % base] ?? '')\n\t\tnum = Math.floor(num / base)\n\t}\n\treturn bits.reverse().join('')\n}\n\nfunction baseXToBase10(num: string, base: number, chars: string) {\n\tconst charsObj = Object.fromEntries(\n\t\tchars\n\t\t\t.toLowerCase()\n\t\t\t.split('')\n\t\t\t.map((value, index) => [value, index]),\n\t)\n\n\treturn num\n\t\t.toLowerCase()\n\t\t.split('')\n\t\t.reduce((acc, cur, index, arr) => {\n\t\t\tconst pos = charsObj[cur] ?? 0\n\t\t\treturn acc + pos * Math.pow(base, arr.length - index - 1)\n\t\t}, 0)\n}\n\nfunction dichotomy(min: number, max: number, bits: string) {\n\tconst res = bits\n\t\t.split('')\n\t\t.concat('')\n\t\t.reduce(\n\t\t\t(acc, cur) => {\n\t\t\t\tconst mid = (min + max) / 2\n\t\t\t\tconst error = (max - min) / 2\n\t\t\t\tacc.mid = mid\n\t\t\t\tacc.error = error\n\t\t\t\tif (cur === '1') min = mid\n\t\t\t\telse max = mid\n\t\t\t\treturn acc\n\t\t\t},\n\t\t\t{ mid: 0, error: 0 },\n\t\t)\n\tconst value = res.mid - res.error\n\treturn { value, interval: res.error * 2 }\n}\n\nfunction parseCoords(hash: string) {\n\thash = v.assert(v.string().pipe(v.min(1)), hash)\n\tconst base10 = baseXToBase10(hash, 32, Base32Chars)\n\tconst base2 = base10ToBaseX(base10, 2, Base2Chars).padStart(hash.length * 5, '0')\n\n\treturn base2.split('').reduce(\n\t\t(acc, cur, index) => {\n\t\t\tif (index % 2 === 0) acc.long += cur\n\t\t\telse acc.lat += cur\n\t\t\treturn acc\n\t\t},\n\t\t{ lat: '', long: '' },\n\t)\n}\n\nfunction wrap(num: number, base: number) {\n\tif (num < -base) num = num + base * 2\n\tif (num > +base) num = num - base * 2\n\treturn num\n}\n\nexport function decode(hash: string): [number, number] {\n\tconst coords = parseCoords(hash)\n\tconst lat = dichotomy(-90, 90, coords.lat).value\n\tconst long = dichotomy(-180, 180, coords.long).value\n\treturn [lat, long]\n}\n\nexport function encode(coords: [number, number]): string {\n\tcoords = v.assert(v.tuple([v.number(), v.number()]), coords)\n\n\tlet idx = 0,\n\t\tbit = 0,\n\t\tevenBit = true,\n\t\tgeohash = ''\n\tconst mins = [-90, -180],\n\t\tmaxs = [90, 180]\n\n\twhile (geohash.length < 18) {\n\t\tconst key = evenBit ? 1 : 0\n\t\tconst mid = (mins[key] + maxs[key]) / 2\n\t\tif (coords[key] >= mid) {\n\t\t\tidx = idx * 2 + 1\n\t\t\tmins[key] = mid\n\t\t} else {\n\t\t\tidx = idx * 2\n\t\t\tmaxs[key] = mid\n\t\t}\n\t\tevenBit = !evenBit\n\n\t\tbit += 1\n\t\tif (bit === 5) {\n\t\t\tgeohash += base10ToBaseX(idx, 32, Base32Chars)\n\t\t\tbit = idx = 0\n\t\t}\n\t}\n\treturn geohash.replace(/0+$/, '')\n}\n\nexport function neighbors(hash: string) {\n\tconst coords = parseCoords(hash)\n\tconst lat = dichotomy(-90, 90, coords.lat)\n\tconst long = dichotomy(-180, 180, coords.long)\n\tconst neighbors = [\n\t\t[lat.value - lat.interval, long.value - long.interval],\n\t\t[lat.value - lat.interval, long.value],\n\t\t[lat.value - lat.interval, long.value + long.interval],\n\n\t\t[lat.value, long.value - long.interval],\n\t\t[lat.value, long.value + long.interval],\n\n\t\t[lat.value + lat.interval, long.value - long.interval],\n\t\t[lat.value + lat.interval, long.value],\n\t\t[lat.value + lat.interval, long.value + long.interval],\n\t].map(([lat, long]) => encode([wrap(lat, 90), wrap(long, 180)]))\n\treturn {\n\t\tbl: neighbors[0],\n\t\tbc: neighbors[1],\n\t\tbr: neighbors[2],\n\t\tcl: neighbors[3],\n\t\tcr: neighbors[4],\n\t\ttl: neighbors[5],\n\t\ttc: neighbors[6],\n\t\ttr: neighbors[7],\n\t}\n}\n"],"mappings":"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","names":["util","externals_exports","__export","after","and","isAny","array","asCapitalized","asISOString","asLowercased","asMap","asRounded","asSet","asSliced","asStamp","asStrippedHtml","asTrimmed","asUppercased","assert","audio","before","isBoolean","branch","onCatch","coerceBoolean","coerceNumber","coerceString","coerceTime","conditional","context","custom","defaults","discriminate","email","eq","file","fileType","fromJson","gt","gte","has","image","inArray","isInstanceOf","int","is","lt","lte","max","merge","meta","min","ne","nin","isNull","nullable","nullish","isNumber","object","objectOmit","objectPick","optional","or","pipe","record","schema","isString","time","tuple","isUndefined","url","validate","video","walk","withStrippedHtml","flatArray","arr","formatError","message","PipeError","_PipeError","messages","value","stopped","cause","errors","error","path","walk","pipe","init","nodeFn","acc","context","p","assert","input","cont","error","PipeError","validate","schema","meta","i","func","config","piper","entries","cur","value","validity","message","path","branch","fn","array","pipeSchema","err","pipe","input","PipeError","res","i","idx","validity","validate","r","schema","tuple","pipes","validitity","asSet","keyFn","v","obj","acc","cur","key","time","err","pipe","input","date","PipeError","after","compare","context","compareDate","execValueFunction","before","asStamp","asISOString","isString","err","pipe","input","PipeError","isNumber","isBoolean","isNull","isUndefined","isAny","isInstanceOf","classDef","coerceString","pipe","input","isString","coerceNumber","isNumber","coerceBoolean","isBoolean","coerceTime","time","differ_exports","__export","diff","equal","from","merge","type","v","value","getDiff","val1","val2","parent","keys","key","parentKey","obj1","obj2","v1","v2","c","i","keys1","keys2","deepMerge","to","merged","obj","formObject","acc","k","_","custom","condition","err","pipe","input","PipeError","eq","compare","context","comp","execValueFunction","equal","is","ne","inArray","array","arr","x","nin","itemType","has","length","val","min","len","max","isFile","v","isMimeType","str","file","err","pipe","input","PipeError","image","audio","video","fileType","typesFn","types","execValueFunction","type","or","pipes","pipe","input","errors","idx","validity","validate","PipeError","branch","schema","and","merge","branch1","branch2","assert","discriminate","discriminator","schemas","err","accessor","wrapInTryCatch","s","fromJson","parsed","c","gt","value","err","pipe","input","v","execValueFunction","PipeError","gte","lt","lte","int","asRounded","dp","partial","pipe","partialCondition","force","config","branch","input","validity","validate","nullable","i","schema","c","optional","nullish","conditional","condition","defaults","def","context","assert","execValueFunction","s","onCatch","object","pipes","pipe","input","context","PipeError","obj","errors","key","value","validity","validate","schema","objectPick","keys","branch","s","c","objectOmit","record","kPipe","vPipe","k","v","kValidity","vValidity","asMap","url","urlRegex","emailRegex","email","err","pipe","input","emailRegex","PipeError","url","urlRegex","withStrippedHtml","branch","stripped","stripHTML","assert","c","s","asTrimmed","asLowercased","asUppercased","asCapitalized","capitalize","asStrippedHtml","asSliced","length","trimToLength","DATA_URL_DEFAULT_MIME_TYPE","DATA_URL_DEFAULT_CHARSET","normalizeDataURL","urlString","match","type","data","hash","mediaType","isBase64","mimeType","normalizedMediaType","attribute","val","string","key","value","normalizeUrl","urlObject","protocolRegex","lastIndex","result","protocol","protocolAtIndex","intermediate","remnant","oldUrlString","capitalize","text","c","v","stripHTML","html","trimToLength","body","length","indexOfSpace","indexToTrim","extractUrls","urls","urlRegex","url","index","normalizeUrl","formatNumber","num","dp","externals_exports","pluralize","count","singular","plural","getRandomValue","groupBy","array","func","acc","cur","key","a","getAlphabet","addToArray","item","getKey","getComparer","asc","existingIndex","el","divideByZero","den","getPercentage","getRandomSample","population","n","indexes","indexesObject","random","idx","shuffleArray","chunkArray","arr","size","chunks","i","wrapInTryCatch","fn","defaultValue","compareTwoStrings","first","second","firstBigrams","bigram","intersectionSize","execValueFunction","def","util","customInspectSymbol","WrapWithProperties","_","options","inspect","__Root","DataClass","keys","access","key","value","includeIgnored","json","wrapInTryCatch","k","deleteKeyFromObject","obj","isArray","v","geohash_exports","__export","decode","encode","neighbors","Base32Chars","Base2Chars","base10ToBaseX","num","base","chars","charsObj","value","index","bits","baseXToBase10","acc","cur","arr","pos","dichotomy","min","max","res","mid","error","parseCoords","hash","externals_exports","base10","wrap","decode","coords","lat","long","encode","idx","bit","evenBit","geohash","mins","maxs","key","neighbors"]}
|