Socket
Socket
Sign inDemoInstall

@arktype/util

Package Overview
Dependencies
Maintainers
1
Versions
78
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@arktype/util - npm Package Compare versions

Comparing version 0.0.7 to 0.0.8

__tests__/map.test.ts

21

generics.ts

@@ -31,21 +31,8 @@ import type { ErrorMessage } from "./errors.js"

export type merge<base, merged> = evaluate<Omit<base, keyof merged> & merged>
export type merge<base, merged> = {
[k in Exclude<keyof base, keyof merged>]: base[k]
} & merged &
unknown
export type mergeAll<t extends readonly unknown[]> = t["length"] extends 1
? t[0]
: mergeAllRecurse<t>
type mergeAllRecurse<t extends readonly unknown[]> = t extends readonly [
infer head,
...infer tail
]
? merge<head, mergeAll<tail>>
: []
/**
* Simple interesection (&) combined with evaluate to improve display
*/
export type and<l, r> = evaluate<l & r>
/**
* Interesection (`&`) that avoids evaluating `unknown` to `{}`

@@ -52,0 +39,0 @@ */

@@ -64,7 +64,2 @@ export type pathToString<

export type arraySubclassToReadonly<t extends unknown[]> =
readonly t[number][] & {
[k in Exclude<keyof t, keyof unknown[]>]: t[k]
}
export const listFrom = <t>(data: t) =>

@@ -96,7 +91,5 @@ (Array.isArray(data) ? data : [data]) as t extends readonly unknown[]

export const ReadonlyArray = Array as unknown as new <
T extends readonly unknown[]
>(
...args: T
) => T
export const ReadonlyArray = Array as unknown as new <T>(
...args: ConstructorParameters<typeof Array<T>>
) => ReadonlyArray<T>

@@ -103,0 +96,0 @@ export const includes = <array extends readonly unknown[]>(

@@ -9,2 +9,3 @@ export * from "./domain.js"

export * from "./lists.js"
export * from "./map.js"
export * from "./numericLiterals.js"

@@ -11,0 +12,0 @@ export * from "./objectKinds.js"

@@ -19,13 +19,6 @@ import type { ErrorMessage } from "./errors.js";

export type defer<t> = [t][t extends any ? 0 : never];
export type merge<base, merged> = evaluate<Omit<base, keyof merged> & merged>;
export type mergeAll<t extends readonly unknown[]> = t["length"] extends 1 ? t[0] : mergeAllRecurse<t>;
type mergeAllRecurse<t extends readonly unknown[]> = t extends readonly [
infer head,
...infer tail
] ? merge<head, mergeAll<tail>> : [];
export type merge<base, merged> = {
[k in Exclude<keyof base, keyof merged>]: base[k];
} & merged & unknown;
/**
* Simple interesection (&) combined with evaluate to improve display
*/
export type and<l, r> = evaluate<l & r>;
/**
* Interesection (`&`) that avoids evaluating `unknown` to `{}`

@@ -32,0 +25,0 @@ */

@@ -10,10 +10,7 @@ export type pathToString<segments extends string[], delimiter extends string = "/"> = segments extends [] ? "/" : join<segments, delimiter>;

export type CollapsingList<t = unknown> = readonly [] | t | readonly [t, t, ...t[]];
export type arraySubclassToReadonly<t extends unknown[]> = readonly t[number][] & {
[k in Exclude<keyof t, keyof unknown[]>]: t[k];
};
export declare const listFrom: <t>(data: t) => t extends readonly unknown[] ? [t] extends [null] ? t[] : t : t[];
export declare const spliterate: <item, included extends item>(list: readonly item[], by: (item: item) => item is included) => [included: included[], excluded: Exclude<item, included>[]];
export declare const ReadonlyArray: new <T extends readonly unknown[]>(...args: T) => T;
export declare const ReadonlyArray: new <T>(...args: T[]) => readonly T[];
export declare const includes: <array extends readonly unknown[]>(array: array, element: unknown) => element is array[number];
export declare const range: (length: number) => number[];
//# sourceMappingURL=lists.d.ts.map

@@ -9,2 +9,3 @@ export * from "./domain.js";

export * from "./lists.js";
export * from "./map.js";
export * from "./numericLiterals.js";

@@ -11,0 +12,0 @@ export * from "./objectKinds.js";

@@ -9,2 +9,3 @@ export * from "./domain.js";

export * from "./lists.js";
export * from "./map.js";
export * from "./numericLiterals.js";

@@ -11,0 +12,0 @@ export * from "./objectKinds.js";

import type { Fn } from "./functions.js";
import type { defined, evaluate } from "./generics.js";
import type { intersectUnion } from "./unionToTuple.js";
export type Dict<k extends string = string, v = unknown> = {

@@ -44,3 +43,2 @@ readonly [_ in k]: v;

export declare const fromEntries: <const entries extends readonly Entry<PropertyKey, unknown>[]>(entries: entries) => { [entry in entries[number] as entry[0]]: entry[1]; } extends infer T ? { [k in keyof T]: { [entry in entries[number] as entry[0]]: entry[1]; }[k]; } : never;
export declare const transform: <const o extends object, transformed extends Entry<PropertyKey, unknown> | readonly Entry<PropertyKey, unknown>[]>(o: o, flatMapEntry: (...entry: { [k in keyof o]-?: [k, o[k] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o]) => transformed) => intersectUnion<{ [entry in (transformed extends readonly Entry<PropertyKey, unknown>[] ? transformed : [transformed])[number] as entry[0]]: entry[1]; } extends infer T_1 ? { [k_2 in keyof T_1]: { [entry in (transformed extends readonly Entry<PropertyKey, unknown>[] ? transformed : [transformed])[number] as entry[0]]: entry[1]; }[k_2]; } : never> extends infer T ? { [k_1 in keyof T]: intersectUnion<{ [entry in (transformed extends readonly Entry<PropertyKey, unknown>[] ? transformed : [transformed])[number] as entry[0]]: entry[1]; } extends infer T_1 ? { [k_2 in keyof T_1]: { [entry in (transformed extends readonly Entry<PropertyKey, unknown>[] ? transformed : [transformed])[number] as entry[0]]: entry[1]; }[k_2]; } : never>[k_1]; } : never;
/** Mimics the result of Object.keys(...) */

@@ -68,5 +66,7 @@ export type keysOf<o> = o extends readonly unknown[] ? number extends o["length"] ? `${number}` : keyof o & `${number}` : {

declare const ShallowClone: new <t extends object>(base: t) => t;
/** @ts-expect-error (needed to extend `t`, but safe given ShallowClone's implementation) **/
export declare class DynamicBase<t extends object> extends ShallowClone<t> {
}
declare const NoopBase: new <t extends object>() => t;
/** @ts-expect-error **/
export declare class CastableBase<t extends object> extends NoopBase<t> {

@@ -73,0 +73,0 @@ }

@@ -1,14 +0,3 @@

import { isArray } from "./objectKinds.js";
export const entriesOf = (o) => Object.entries(o);
export const fromEntries = (entries) => Object.fromEntries(entries);
export const transform = (o, flatMapEntry) => Object.fromEntries(entriesOf(o).flatMap((entry) => {
const result = flatMapEntry(...entry);
return isArray(result[0]) || result.length === 0
? // if we have an empty array (for filtering) or an array with
// another array as its first element, treat it as a list of
result
: // otherwise, it should be a single entry, so nest it in a tuple
// so it doesn't get spread when the result is flattened
[result];
}));
export const keysOf = (o) => Object.keys(o);

@@ -21,3 +10,3 @@ export const isKeyOf = (k, obj) => k in obj;

};
// @ts-expect-error (needed to extend `t`, but safe given ShallowClone's implementation)
/** @ts-expect-error (needed to extend `t`, but safe given ShallowClone's implementation) **/
export class DynamicBase extends ShallowClone {

@@ -27,3 +16,3 @@ }

};
// @ts-expect-error
/** @ts-expect-error **/
export class CastableBase extends NoopBase {

@@ -30,0 +19,0 @@ }

@@ -12,3 +12,3 @@ import { type inferDomain, type Primitive } from "./domain.js";

[k: string | number]: JsonData;
} | readonly JsonData[];
} | JsonData[];
export type JsonData = string | boolean | number | null | Json;

@@ -15,0 +15,0 @@ export declare const snapshot: <t>(data: t, opts?: SerializationOptions) => snapshot<t, []>;

{
"name": "@arktype/util",
"version": "0.0.7",
"version": "0.0.8",
"author": {

@@ -14,3 +14,2 @@ "name": "David Blass",

".": {
"arktype-repo": "./main.js",
"types": "./out/main.d.ts",

@@ -20,3 +19,2 @@ "default": "./out/main.js"

"./internal/*": {
"arktype-repo": "./*",
"default": "./out/*"

@@ -31,5 +29,5 @@ }

"scripts": {
"build": "ts ../repo/build.ts",
"test": "ts ../repo/testPackage.ts"
"build": "tsx ../repo/build.ts",
"test": "tsx ../repo/testPackage.ts"
}
}
import type { Fn } from "./functions.js"
import type { defined, evaluate } from "./generics.js"
import { isArray } from "./objectKinds.js"
import type { intersectUnion } from "./unionToTuple.js"

@@ -76,28 +74,2 @@ export type Dict<k extends string = string, v = unknown> = {

export const transform = <
const o extends object,
transformed extends Entry | readonly Entry[]
>(
o: o,
flatMapEntry: (...entry: entryOf<o>) => transformed
) =>
Object.fromEntries(
entriesOf(o).flatMap((entry) => {
const result = flatMapEntry(...entry)
return isArray(result[0]) || result.length === 0
? // if we have an empty array (for filtering) or an array with
// another array as its first element, treat it as a list of
(result as never)
: // otherwise, it should be a single entry, so nest it in a tuple
// so it doesn't get spread when the result is flattened
[result]
})
) as evaluate<
intersectUnion<
fromEntries<
transformed extends readonly Entry[] ? transformed : [transformed]
>
>
>
/** Mimics the result of Object.keys(...) */

@@ -143,3 +115,3 @@ export type keysOf<o> = o extends readonly unknown[]

// @ts-expect-error (needed to extend `t`, but safe given ShallowClone's implementation)
/** @ts-expect-error (needed to extend `t`, but safe given ShallowClone's implementation) **/
export class DynamicBase<t extends object> extends ShallowClone<t> {}

@@ -149,3 +121,3 @@

// @ts-expect-error
/** @ts-expect-error **/
export class CastableBase<t extends object> extends NoopBase<t> {}

@@ -152,0 +124,0 @@

@@ -17,3 +17,3 @@ import { domainOf, type inferDomain, type Primitive } from "./domain.js"

}
| readonly JsonData[]
| JsonData[]

@@ -20,0 +20,0 @@ export type JsonData = string | boolean | number | null | Json

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc