@everipedia/iq-utils 0.1.1 → 0.1.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/CHANGELOG.md CHANGED
@@ -1,5 +1,32 @@
1
1
  # @everipedia/iq-utils
2
2
 
3
+ ## 0.1.2
4
+
5
+ ### Patch Changes
6
+
7
+ - 81787e9: # Changes
8
+
9
+ - Adds RecordTypePicker which works for any type
10
+
11
+ # Example
12
+
13
+ ```ts
14
+ // The NewWikiType will only have user, title, content, summary and user only has id, profile with username and avatar.
15
+ type NewWikiType = RecordTypePicker<
16
+ Wiki,
17
+ {
18
+ user: {
19
+ id;
20
+ profile: {
21
+ username;
22
+ avatar;
23
+ };
24
+ };
25
+ },
26
+ 'title' | 'content' | 'summary'
27
+ >;
28
+ ```
29
+
3
30
  ## 0.1.1
4
31
 
5
32
  ### Patch Changes
@@ -1,17 +1,11 @@
1
- import { Author, BaseCategory, BaseTag, Image, LanguagesISOEnum, LinkedWikis, MData, Media, User, Wiki } from './wiki';
1
+ import { Wiki } from './wiki';
2
2
  type DeepPartial<T> = {
3
3
  [P in keyof T]?: DeepPartial<T[P]>;
4
4
  };
5
- export type WikiTypeBuilderExtender = DeepPartial<{
6
- categories: BaseCategory[];
7
- tags: BaseTag[];
8
- images: Image[];
9
- media: Media[];
10
- user: User;
11
- metadata: MData[];
12
- linkedWikis?: LinkedWikis;
13
- language: LanguagesISOEnum;
14
- author: Author;
5
+ type PrimitiveType = number | string | boolean | symbol | null | undefined;
6
+ export type RecordTypeNonPrimitive<T> = DeepPartial<{
7
+ [K in keyof T]: [T[K]] extends [PrimitiveType] ? never : T[K];
15
8
  }>;
16
- export type WikiTypeBuilder<C extends WikiTypeBuilderExtender, L extends keyof Wiki> = C & Pick<Wiki, Exclude<L, keyof C>>;
9
+ export type RecordTypePicker<T extends object, NonPrimitiveOverrides extends RecordTypeNonPrimitive<T>, Keys extends keyof T> = NonPrimitiveOverrides & Pick<T, Exclude<Keys, keyof NonPrimitiveOverrides>>;
10
+ export type WikiBuilder<NonPrimitiveOverrides extends RecordTypeNonPrimitive<Wiki>, Keys extends keyof Wiki> = RecordTypePicker<Wiki, NonPrimitiveOverrides, Keys>;
17
11
  export {};
@@ -1,17 +1,11 @@
1
- import { Author, BaseCategory, BaseTag, Image, LanguagesISOEnum, LinkedWikis, MData, Media, User, Wiki } from './wiki';
1
+ import { Wiki } from './wiki';
2
2
  type DeepPartial<T> = {
3
3
  [P in keyof T]?: DeepPartial<T[P]>;
4
4
  };
5
- export type WikiTypeBuilderExtender = DeepPartial<{
6
- categories: BaseCategory[];
7
- tags: BaseTag[];
8
- images: Image[];
9
- media: Media[];
10
- user: User;
11
- metadata: MData[];
12
- linkedWikis?: LinkedWikis;
13
- language: LanguagesISOEnum;
14
- author: Author;
5
+ type PrimitiveType = number | string | boolean | symbol | null | undefined;
6
+ export type RecordTypeNonPrimitive<T> = DeepPartial<{
7
+ [K in keyof T]: [T[K]] extends [PrimitiveType] ? never : T[K];
15
8
  }>;
16
- export type WikiTypeBuilder<C extends WikiTypeBuilderExtender, L extends keyof Wiki> = C & Pick<Wiki, Exclude<L, keyof C>>;
9
+ export type RecordTypePicker<T extends object, NonPrimitiveOverrides extends RecordTypeNonPrimitive<T>, Keys extends keyof T> = NonPrimitiveOverrides & Pick<T, Exclude<Keys, keyof NonPrimitiveOverrides>>;
10
+ export type WikiBuilder<NonPrimitiveOverrides extends RecordTypeNonPrimitive<Wiki>, Keys extends keyof Wiki> = RecordTypePicker<Wiki, NonPrimitiveOverrides, Keys>;
17
11
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@everipedia/iq-utils",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "Common utility library for IQ projects",
5
5
  "main": "build/main/index.js",
6
6
  "typings": "build/main/index.d.ts",