utilium 2.7.0 → 2.7.2

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/dist/objects.d.ts CHANGED
@@ -46,7 +46,8 @@ export interface ConstMap<T extends Partial<Record<keyof any, any>>, K extends k
46
46
  has(key: keyof T | K): boolean;
47
47
  }
48
48
  export declare function map<const T extends Partial<Record<any, any>>>(items: T): Map<keyof T, T[keyof T]>;
49
- export declare function getByString<T>(object: Record<string, any>, path: string, separator?: RegExp): T;
49
+ export declare function getByString<T, P extends string>(object: T, path: P, separator?: RegExp): GetByString<T, P>;
50
+ export type GetByString<Data, Path extends string> = Path extends `__proto__${`${'.' | '[' | ']' | "'" | '"'}${string}` | ''}` ? never : Path extends `${infer Key extends keyof Data & (string | number)}${'.' | '[' | ']' | "'" | '"'}${infer Rest}` ? Key extends '' ? GetByString<Data, Rest> : GetByString<Data[Key], Rest> : Path extends keyof Data & (string | number) ? Data[Path] : undefined;
50
51
  export declare function setByString<T>(object: Record<string, any>, path: string, value: unknown, separator?: RegExp): T;
51
52
  export type JSONPrimitive = null | string | number | boolean;
52
53
  export interface JSONObject {
package/dist/objects.js CHANGED
@@ -1,6 +1,7 @@
1
1
  // SPDX-License-Identifier: LGPL-3.0-or-later
2
2
  // Copyright (c) 2025 James Prevett
3
3
  /* eslint-disable @typescript-eslint/no-explicit-any */
4
+ import { _throw } from './misc.js';
4
5
  export function filterObject(object, predicate) {
5
6
  const entries = Object.entries(object);
6
7
  return Object.fromEntries(entries.filter(([key, value]) => predicate(key, value)));
@@ -90,8 +91,8 @@ export function map(items) {
90
91
  export function getByString(object, path, separator = /[.[\]'"]/) {
91
92
  return path
92
93
  .split(separator)
93
- .filter(p => p && p != '__proto__')
94
- .reduce((o, p) => o?.[p], object);
94
+ .filter(p => p)
95
+ .reduce((o, p) => (p == '__proto__' ? _throw(new Error('getByString called with __proto__ in path')) : o?.[p]), object);
95
96
  }
96
97
  export function setByString(object, path, value, separator = /[.[\]'"]/) {
97
98
  return path
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "utilium",
3
- "version": "2.7.0",
3
+ "version": "2.7.2",
4
4
  "description": "Typescript utilities",
5
5
  "funding": {
6
6
  "type": "individual",