@naturalcycles/js-lib 14.161.0 → 14.161.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.
@@ -1,3 +1,3 @@
1
- import type { SavedDBEntity } from '../types';
2
- export declare const baseDBEntityJsonSchema: import("./jsonSchemaBuilder").JsonSchemaObjectBuilder<Partial<SavedDBEntity<string>>>;
1
+ import type { BaseDBEntity, SavedDBEntity } from '../types';
2
+ export declare const baseDBEntityJsonSchema: import("./jsonSchemaBuilder").JsonSchemaObjectBuilder<BaseDBEntity<string>>;
3
3
  export declare const savedDBEntityJsonSchema: import("./jsonSchemaBuilder").JsonSchemaObjectBuilder<SavedDBEntity<string>>;
@@ -50,7 +50,7 @@ export declare function _filterObject<T extends AnyObject>(obj: T, predicate: Ob
50
50
  *
51
51
  * To skip some key-value pairs - use _mapObject instead.
52
52
  */
53
- export declare function _mapValues<T extends AnyObject>(obj: T, mapper: ObjectMapper<T, any>, mutate?: boolean): T;
53
+ export declare function _mapValues<T extends AnyObject>(obj: T, mapper: ObjectMapper<T, any>, mutate?: boolean): unknown;
54
54
  /**
55
55
  * _.mapKeys({ 'a': 1, 'b': 2 }, (key, value) => key + value)
56
56
  * // => { 'a1': 1, 'b2': 2 }
@@ -76,7 +76,7 @@ export declare function _mapKeys<T extends AnyObject>(obj: T, mapper: ObjectMapp
76
76
  *
77
77
  * Non-string keys are passed via String(...)
78
78
  */
79
- export declare function _mapObject<T extends AnyObject>(obj: T, mapper: ObjectMapper<T, KeyValueTuple<string, any> | typeof SKIP>): T;
79
+ export declare function _mapObject<T extends AnyObject>(obj: T, mapper: ObjectMapper<T, KeyValueTuple<string, any> | typeof SKIP>): unknown;
80
80
  export declare function _findKeyByValue<T extends AnyObject>(obj: T, v: ValueOf<T>): keyof T | undefined;
81
81
  export declare function _objectNullValuesToUndefined<T extends AnyObject>(obj: T, mutate?: boolean): T;
82
82
  /**
package/dist/types.d.ts CHANGED
@@ -47,7 +47,17 @@ export interface SavedDBEntity<ID extends string | number = string> {
47
47
  * hence `id`, `created` and `updated` fields CAN BE undefined (yet).
48
48
  * When it's known to be saved - `SavedDBEntity` interface can be used instead.
49
49
  */
50
- export type BaseDBEntity<ID extends string | number = string> = Partial<SavedDBEntity<ID>>;
50
+ export interface BaseDBEntity<ID extends string | number = string> {
51
+ id?: ID;
52
+ /**
53
+ * unixTimestamp of when the entity was first created (in the DB).
54
+ */
55
+ created?: UnixTimestampNumber;
56
+ /**
57
+ * unixTimestamp of when the entity was last updated (in the DB).
58
+ */
59
+ updated?: UnixTimestampNumber;
60
+ }
51
61
  export type Saved<T extends Partial<ObjectWithId>> = T extends AnyObject ? Omit<T, 'id' | 'created' | 'updated'> & SavedDBEntity<NonNullable<T['id']>> : T;
52
62
  export type Unsaved<T extends Partial<ObjectWithId>> = T extends AnyObject ? Omit<T, 'id' | 'created' | 'updated'> & BaseDBEntity<NonNullable<T['id']>> : T;
53
63
  export type UnsavedId<T extends Partial<ObjectWithId>> = Omit<T, 'id'> & {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@naturalcycles/js-lib",
3
- "version": "14.161.0",
3
+ "version": "14.161.2",
4
4
  "scripts": {
5
5
  "prepare": "husky install",
6
6
  "build-prod": "build-prod-esm-cjs",
package/src/define.ts CHANGED
@@ -137,6 +137,6 @@ export function _defineNonNullishProps<T extends AnyObject>(
137
137
  _mapObject(props, (k, pd) => {
138
138
  if (pd.value === null || pd.value === undefined) return SKIP
139
139
  return [k as string, pd]
140
- }),
140
+ }) as any,
141
141
  )
142
142
  }
@@ -121,7 +121,7 @@ export function _mapValues<T extends AnyObject>(
121
121
  obj: T,
122
122
  mapper: ObjectMapper<T, any>,
123
123
  mutate = false,
124
- ): T {
124
+ ): unknown {
125
125
  return _objectEntries(obj).reduce(
126
126
  (map, [k, v]) => {
127
127
  map[k] = mapper(k, v, obj)
@@ -171,14 +171,14 @@ export function _mapKeys<T extends AnyObject>(
171
171
  export function _mapObject<T extends AnyObject>(
172
172
  obj: T,
173
173
  mapper: ObjectMapper<T, KeyValueTuple<string, any> | typeof SKIP>,
174
- ): T {
174
+ ): unknown {
175
175
  return Object.entries(obj).reduce((map, [k, v]) => {
176
176
  const r = mapper(k, v, obj)
177
177
  if (r !== SKIP) {
178
178
  map[r[0]] = r[1]
179
179
  }
180
180
  return map
181
- }, {} as AnyObject) as T
181
+ }, {} as AnyObject)
182
182
  }
183
183
 
184
184
  export function _findKeyByValue<T extends AnyObject>(obj: T, v: ValueOf<T>): keyof T | undefined {
@@ -186,7 +186,7 @@ export function _findKeyByValue<T extends AnyObject>(obj: T, v: ValueOf<T>): key
186
186
  }
187
187
 
188
188
  export function _objectNullValuesToUndefined<T extends AnyObject>(obj: T, mutate = false): T {
189
- return _mapValues(obj, (_k, v) => (v === null ? undefined : v), mutate)
189
+ return _mapValues(obj, (_k, v) => (v === null ? undefined : v), mutate) as T
190
190
  }
191
191
 
192
192
  /**
package/src/types.ts CHANGED
@@ -60,7 +60,19 @@ export interface SavedDBEntity<ID extends string | number = string> {
60
60
  * hence `id`, `created` and `updated` fields CAN BE undefined (yet).
61
61
  * When it's known to be saved - `SavedDBEntity` interface can be used instead.
62
62
  */
63
- export type BaseDBEntity<ID extends string | number = string> = Partial<SavedDBEntity<ID>>
63
+ export interface BaseDBEntity<ID extends string | number = string> {
64
+ id?: ID
65
+
66
+ /**
67
+ * unixTimestamp of when the entity was first created (in the DB).
68
+ */
69
+ created?: UnixTimestampNumber
70
+
71
+ /**
72
+ * unixTimestamp of when the entity was last updated (in the DB).
73
+ */
74
+ updated?: UnixTimestampNumber
75
+ }
64
76
 
65
77
  export type Saved<T extends Partial<ObjectWithId>> = T extends AnyObject
66
78
  ? Omit<T, 'id' | 'created' | 'updated'> & SavedDBEntity<NonNullable<T['id']>>