@opra/common 0.32.3 → 0.32.4

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/browser.js CHANGED
@@ -165,6 +165,18 @@ function omitUndefined(obj, recursive) {
165
165
  return obj;
166
166
  }
167
167
  __name(omitUndefined, "omitUndefined");
168
+ function omitNullish(obj, recursive) {
169
+ if (!(obj && typeof obj === "object"))
170
+ return obj;
171
+ for (const k of Object.keys(obj)) {
172
+ if (obj[k] == null)
173
+ delete obj[k];
174
+ else if (recursive && isPlainObject(obj[k]))
175
+ omitNullish(obj[k]);
176
+ }
177
+ return obj;
178
+ }
179
+ __name(omitNullish, "omitNullish");
168
180
 
169
181
  // ../../build/common/esm/helpers/path-to-object-tree.js
170
182
  var DOT_PATTERN = /^([^.]+)\.(.*)$/;
@@ -12312,6 +12324,7 @@ export {
12312
12324
  isUrlString,
12313
12325
  isWritable,
12314
12326
  mergePrototype,
12327
+ omitNullish,
12315
12328
  omitUndefined,
12316
12329
  pathToObjectTree,
12317
12330
  resolveClass,
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.omitUndefined = exports.cloneObject = void 0;
3
+ exports.omitNullish = exports.omitUndefined = exports.cloneObject = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const putil_isplainobject_1 = tslib_1.__importDefault(require("putil-isplainobject"));
6
6
  const putil_merge_1 = tslib_1.__importDefault(require("putil-merge"));
@@ -29,3 +29,15 @@ function omitUndefined(obj, recursive) {
29
29
  return obj;
30
30
  }
31
31
  exports.omitUndefined = omitUndefined;
32
+ function omitNullish(obj, recursive) {
33
+ if (!(obj && typeof obj === 'object'))
34
+ return obj;
35
+ for (const k of Object.keys(obj)) {
36
+ if (obj[k] == null)
37
+ delete obj[k];
38
+ else if (recursive && (0, putil_isplainobject_1.default)(obj[k]))
39
+ omitNullish(obj[k]);
40
+ }
41
+ return obj;
42
+ }
43
+ exports.omitNullish = omitNullish;
@@ -23,3 +23,14 @@ export function omitUndefined(obj, recursive) {
23
23
  }
24
24
  return obj;
25
25
  }
26
+ export function omitNullish(obj, recursive) {
27
+ if (!(obj && typeof obj === 'object'))
28
+ return obj;
29
+ for (const k of Object.keys(obj)) {
30
+ if (obj[k] == null)
31
+ delete obj[k];
32
+ else if (recursive && isPlainObject(obj[k]))
33
+ omitNullish(obj[k]);
34
+ }
35
+ return obj;
36
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opra/common",
3
- "version": "0.32.3",
3
+ "version": "0.32.4",
4
4
  "description": "Opra common package",
5
5
  "author": "Panates",
6
6
  "license": "MIT",
@@ -44,9 +44,9 @@
44
44
  "putil-merge": "^3.12.1",
45
45
  "putil-promisify": "^1.10.1",
46
46
  "putil-varhelpers": "^1.6.5",
47
- "reflect-metadata": "^0.1.13",
47
+ "reflect-metadata": "^0.1.14",
48
48
  "uid": "^2.0.1",
49
- "valgen": "^4.3.1"
49
+ "valgen": "^4.3.2"
50
50
  },
51
51
  "devDependencies": {
52
52
  "@browsery/fs": "^0.4.0",
@@ -56,7 +56,7 @@
56
56
  "@types/lodash.omit": "^4.5.9",
57
57
  "@types/validator": "^13.11.7",
58
58
  "path-browserify": "^1.0.1",
59
- "ts-gems": "^2.7.1"
59
+ "ts-gems": "^2.8.0"
60
60
  },
61
61
  "engines": {
62
62
  "node": ">=16.0",
@@ -1,10 +1,10 @@
1
- import { PartialOutput } from '../../types.js';
1
+ import { PartialDTO } from '../../types.js';
2
2
  export interface ICollection<T> {
3
- create?(...args: any[]): Promise<PartialOutput<T>>;
3
+ create?(...args: any[]): Promise<PartialDTO<T>>;
4
4
  delete?(...args: any[]): Promise<number> | undefined;
5
5
  deleteMany?(...args: any[]): Promise<number> | undefined;
6
- findMany?(...args: any[]): Promise<PartialOutput<T>[] | undefined>;
7
- get?(...args: any[]): Promise<PartialOutput<T> | undefined>;
8
- update?(...args: any[]): Promise<PartialOutput<T> | undefined>;
6
+ findMany?(...args: any[]): Promise<PartialDTO<T>[] | undefined>;
7
+ get?(...args: any[]): Promise<PartialDTO<T> | undefined>;
8
+ update?(...args: any[]): Promise<PartialDTO<T> | undefined>;
9
9
  updateMany?(...args: any[]): Promise<number> | undefined;
10
10
  }
@@ -1,7 +1,7 @@
1
- import { PartialOutput } from '../../types.js';
1
+ import { PartialDTO } from '../../types.js';
2
2
  export interface ISingleton<T> {
3
- create?(...args: any[]): Promise<PartialOutput<T>>;
3
+ create?(...args: any[]): Promise<PartialDTO<T>>;
4
4
  delete?(...args: any[]): Promise<number> | undefined;
5
- get?(...args: any[]): Promise<PartialOutput<T> | undefined>;
6
- update?(...args: any[]): Promise<PartialOutput<T> | undefined>;
5
+ get?(...args: any[]): Promise<PartialDTO<T> | undefined>;
6
+ update?(...args: any[]): Promise<PartialDTO<T> | undefined>;
7
7
  }
@@ -1,2 +1,4 @@
1
+ import { DeepOmitNever } from 'ts-gems';
1
2
  export declare function cloneObject<T extends {}>(obj: T, jsonOnly?: boolean): T;
2
3
  export declare function omitUndefined<T>(obj: T, recursive?: boolean): T;
4
+ export declare function omitNullish<T>(obj: T, recursive?: boolean): DeepOmitNever<T>;
package/types/types.d.ts CHANGED
@@ -1,7 +1,22 @@
1
- import { DeepPickWritable, HighDeepNullish, Type } from 'ts-gems';
2
- export type PartialInput<T> = HighDeepNullish<DeepPickWritable<T>>;
3
- export type PartialOutput<T> = HighDeepNullish<T>;
1
+ import type { IfNoDeepValue, IfUndefined, OmitNever, Type, WritableKeys } from 'ts-gems';
4
2
  export type Thunk<T> = T | (() => T);
5
3
  export type ThunkAsync<T> = Thunk<T> | Thunk<Promise<T>>;
6
4
  export type TypeThunk<T = any> = Thunk<Type<T>>;
7
5
  export type TypeThunkAsync<T = any> = ThunkAsync<Type<T>>;
6
+ /**
7
+ * Returns given type as a Data Transfer Object (DTO) interface, Removes symbol keys and function properties.
8
+ * @template T - The type of the data being transferred.
9
+ */
10
+ export type DTO<T> = _DTO<Exclude<T, undefined>>;
11
+ type _DTO<T, K extends keyof T = WritableKeys<T>> = T extends (infer U)[] ? DTO<U>[] : IfNoDeepValue<T> extends true ? T : OmitNever<{
12
+ [P in K]: P extends symbol ? never : T[P] extends Function ? never : DTO<Exclude<T[P], undefined>>;
13
+ }>;
14
+ export type PartialDTO<T> = _PartialDTO<Exclude<T, undefined>>;
15
+ type _PartialDTO<T, K extends keyof T = WritableKeys<T>> = T extends (infer U)[] ? PartialDTO<U>[] : IfNoDeepValue<T> extends true ? T : OmitNever<{
16
+ [P in K]?: P extends symbol ? never : T[P] extends Function ? never : PartialDTO<Exclude<T[P], undefined>>;
17
+ }>;
18
+ export type PatchDTO<T> = _PatchDTO<Exclude<T, undefined>>;
19
+ type _PatchDTO<T, K extends keyof T = WritableKeys<T>> = T extends (infer U)[] ? PatchDTO<U>[] : IfNoDeepValue<T> extends true ? T : OmitNever<{
20
+ [P in K]?: P extends symbol ? never : T[P] extends Function ? never : IfUndefined<T> extends true ? T[P] : PatchDTO<Exclude<T[P], undefined>> | null;
21
+ }>;
22
+ export {};