@arktype/util
Advanced tools
Comparing version 0.10.0 to 0.11.0
@@ -73,5 +73,3 @@ import type { Guardable } from "./functions.ts"; | ||
export declare const appendUnique: <to extends unknown[]>(to: to | undefined, value: NoInfer<Readonly<to> | to[number]>, opts?: ComparisonOptions<to[number]>) => to; | ||
export type groupableKeyOf<t> = { | ||
[k in keyof t]: t[k] extends PropertyKey ? k : never; | ||
}[keyof t]; | ||
export type groupableKeyOf<o> = keyof o extends infer k ? k extends keyof o ? o[k] extends PropertyKey ? k : never : never : never; | ||
export type groupBy<element, discriminant extends groupableKeyOf<element>> = { | ||
@@ -78,0 +76,0 @@ [k in element[discriminant] & PropertyKey]?: (element extends unknown ? isDisjoint<element[discriminant], k> extends true ? never : element : never)[]; |
import type { array, listable } from "./arrays.ts"; | ||
import type { show } from "./generics.ts"; | ||
import type { Entry, Key, entryOf, fromEntries } from "./records.ts"; | ||
import type { Key } from "./keys.ts"; | ||
import type { Entry, entryOf, fromEntries } from "./records.ts"; | ||
import type { intersectUnion } from "./unionToTuple.ts"; | ||
@@ -5,0 +6,0 @@ type objectFromListableEntries<transformed extends readonly Entry[]> = show<intersectUnion<fromEntries<transformed>>>; |
@@ -1,2 +0,2 @@ | ||
export type Fn<in args extends readonly never[] = readonly never[], out returns = unknown> = (...args: args) => returns; | ||
export type Fn<args extends readonly any[] = readonly any[], returns = unknown> = (...args: args) => returns; | ||
export declare const cached: <t>(thunk: () => t) => (() => t); | ||
@@ -3,0 +3,0 @@ export declare const isThunk: <value>(value: value) => value is Extract<value, Thunk> extends never ? value & Thunk : Extract<value, Thunk>; |
@@ -11,2 +11,3 @@ export * from "./arrays.ts"; | ||
export * from "./intersections.ts"; | ||
export * from "./keys.ts"; | ||
export * from "./lazily.ts"; | ||
@@ -13,0 +14,0 @@ export * from "./numericLiterals.ts"; |
@@ -11,2 +11,3 @@ export * from "./arrays.js"; | ||
export * from "./intersections.js"; | ||
export * from "./keys.js"; | ||
export * from "./lazily.js"; | ||
@@ -13,0 +14,0 @@ export * from "./numericLiterals.js"; |
import type { array } from "./arrays.ts"; | ||
import type { Fn } from "./functions.ts"; | ||
import type { defined, show } from "./generics.ts"; | ||
import type { Key } from "./keys.ts"; | ||
export type Dict<k extends string = string, v = unknown> = { | ||
@@ -55,5 +56,3 @@ readonly [_ in k]: v; | ||
/** Mimics the result of Object.keys(...) */ | ||
export type keyOf<o> = o extends array ? number extends o["length"] ? `${number}` : keyof o & `${number}` : { | ||
[k in keyof o]: k extends string ? k : k extends number ? `${k}` : never; | ||
}[keyof o]; | ||
export type keyOf<o> = o extends array ? number extends o["length"] ? `${number}` : keyof o & `${number}` : keyof o extends infer k ? k extends string ? k : k extends number ? `${k}` : never : never; | ||
export declare const keysOf: <o extends object>(o: o) => keyOf<o>[]; | ||
@@ -71,7 +70,5 @@ export declare const isKeyOf: <k extends string | number | symbol, o extends object>(k: k, o: o) => k is Extract<keyof o, k>; | ||
export declare const hasDefinedKey: <o extends object, k extends unionKeyOf<o>>(o: o, k: k) => o is extractDefinedKey<o, k>; | ||
export type requiredKeyOf<o> = { | ||
[k in keyof o]-?: o extends { | ||
[_ in k]-?: o[k]; | ||
} ? k : never; | ||
}[keyof o]; | ||
export type requiredKeyOf<o> = keyof o extends infer k ? k extends keyof o ? o extends { | ||
[_ in k]-?: o[k]; | ||
} ? k : never : never : never; | ||
export type optionalKeyOf<o> = Exclude<keyof o, requiredKeyOf<o>>; | ||
@@ -145,3 +142,2 @@ export type merge<base, props> = base extends unknown ? props extends unknown ? show<omit<base, keyof props & keyof base> & props> : never : never; | ||
export declare const defineProperties: <base extends object, merged extends object>(base: base, merged: merged) => merge<base, merged>; | ||
export type Key = string | symbol; | ||
export type invert<t extends Record<PropertyKey, PropertyKey>> = { | ||
@@ -148,0 +144,0 @@ [k in t[keyof t]]: { |
@@ -1,2 +0,2 @@ | ||
export declare const arkUtilVersion = "0.10.0"; | ||
export declare const arkUtilVersion = "0.11.0"; | ||
export declare const initialRegistryContents: { | ||
@@ -3,0 +3,0 @@ version: string; |
@@ -8,3 +8,3 @@ import { domainOf } from "./domain.js"; | ||
// For now, we assert this matches the package.json version via a unit test. | ||
export const arkUtilVersion = "0.10.0"; | ||
export const arkUtilVersion = "0.11.0"; | ||
export const initialRegistryContents = { | ||
@@ -11,0 +11,0 @@ version: arkUtilVersion, |
@@ -17,6 +17,8 @@ import type { array } from "./arrays.ts"; | ||
export declare const snapshot: <t>(data: t, opts?: SerializationOptions) => snapshot<t>; | ||
export type snapshot<t, depth extends 1[] = []> = unknown extends t ? unknown : t extends Primitive ? snapshotPrimitive<t> : t extends Function ? `Function(${string})` : t extends Date ? string : depth["length"] extends 10 ? unknown : t extends array<infer item> ? array<snapshot<item, [...depth, 1]>> : { | ||
export type snapshot<t, depth extends 1[] = []> = unknown extends t ? unknown : t extends Primitive ? snapshotPrimitive<t> : t extends { | ||
toJSON: () => infer serialized; | ||
} ? serialized : t extends Function ? `Function(${string})` : t extends Date ? string : depth["length"] extends 10 ? unknown : t extends array<infer item> ? array<snapshot<item, [...depth, 1]>> : { | ||
[k in keyof t]: snapshot<t[k], [...depth, 1]>; | ||
}; | ||
type snapshotPrimitive<t> = t extends undefined ? "(undefined)" : t extends bigint ? `${t}n` : t extends symbol ? `(symbol${string})` : t; | ||
type snapshotPrimitive<t> = t extends undefined ? "(undefined)" : t extends bigint ? `${t}n` : t extends symbol ? `Symbol(${string})` : t; | ||
export declare const print: (data: unknown, indent?: number) => void; | ||
@@ -23,0 +25,0 @@ export declare const printable: (data: unknown, indent?: number) => string; |
@@ -30,14 +30,17 @@ import { domainOf } from "./domain.js"; | ||
case "object": { | ||
if (typeof data === "function") | ||
return printableOpts.onFunction(data); | ||
if (seen.includes(data)) | ||
const o = data; | ||
if ("toJSON" in o && typeof o.toJSON === "function") | ||
return o.toJSON(); | ||
if (typeof o === "function") | ||
return printableOpts.onFunction(o); | ||
if (seen.includes(o)) | ||
return "(cycle)"; | ||
const nextSeen = [...seen, data]; | ||
if (Array.isArray(data)) | ||
return data.map(item => _serialize(item, opts, nextSeen)); | ||
if (data instanceof Date) | ||
return data.toDateString(); | ||
const nextSeen = [...seen, o]; | ||
if (Array.isArray(o)) | ||
return o.map(item => _serialize(item, opts, nextSeen)); | ||
if (o instanceof Date) | ||
return o.toDateString(); | ||
const result = {}; | ||
for (const k in data) | ||
result[k] = _serialize(data[k], opts, nextSeen); | ||
for (const k in o) | ||
result[k] = _serialize(o[k], opts, nextSeen); | ||
return result; | ||
@@ -44,0 +47,0 @@ } |
{ | ||
"name": "@arktype/util", | ||
"version": "0.10.0", | ||
"version": "0.11.0", | ||
"author": { | ||
@@ -5,0 +5,0 @@ "name": "David Blass", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
90324
49
1931