@spoosh/core 0.4.1 → 0.4.3

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/index.d.mts CHANGED
@@ -76,16 +76,24 @@ type BaseRequestOptions = {
76
76
  cache?: RequestCache;
77
77
  signal?: AbortSignal;
78
78
  };
79
- type BodyOption<TBody> = [TBody] extends [never] ? object : {
79
+ type BodyOption<TBody> = [TBody] extends [never] ? object : undefined extends TBody ? {
80
+ body?: Exclude<TBody, undefined>;
81
+ } : {
80
82
  body: TBody;
81
83
  };
82
- type QueryOption<TQuery> = [TQuery] extends [never] ? object : {
84
+ type QueryOption<TQuery> = [TQuery] extends [never] ? object : undefined extends TQuery ? {
85
+ query?: Exclude<TQuery, undefined>;
86
+ } : {
83
87
  query: TQuery;
84
88
  };
85
- type FormDataOption<TFormData> = [TFormData] extends [never] ? object : {
89
+ type FormDataOption<TFormData> = [TFormData] extends [never] ? object : undefined extends TFormData ? {
90
+ formData?: Exclude<TFormData, undefined>;
91
+ } : {
86
92
  formData: TFormData;
87
93
  };
88
- type UrlEncodedOption<TUrlEncoded> = [TUrlEncoded] extends [never] ? object : {
94
+ type UrlEncodedOption<TUrlEncoded> = [TUrlEncoded] extends [never] ? object : undefined extends TUrlEncoded ? {
95
+ urlEncoded?: Exclude<TUrlEncoded, undefined>;
96
+ } : {
89
97
  urlEncoded: TUrlEncoded;
90
98
  };
91
99
  type RequestOptions<TBody = never, TQuery = never, TFormData = never, TUrlEncoded = never> = BaseRequestOptions & BodyOption<TBody> & QueryOption<TQuery> & FormDataOption<TFormData> & UrlEncodedOption<TUrlEncoded>;
@@ -734,27 +742,16 @@ type Endpoint<T extends {
734
742
  }> = {
735
743
  [EndpointBrand]: true;
736
744
  } & T;
745
+ type ExtractProperty<T, K extends string, TDefault = never> = K extends keyof T ? T[K] : TDefault;
737
746
  type NormalizeEndpoint<T, TDefaultError> = T extends {
738
747
  [EndpointBrand]: true;
739
748
  } ? {
740
- data: T extends {
741
- data: infer D;
742
- } ? D : never;
743
- error: T extends {
744
- error: infer E;
745
- } ? E : TDefaultError;
746
- body: T extends {
747
- body: infer B;
748
- } ? B : never;
749
- query: T extends {
750
- query: infer Q;
751
- } ? Q : never;
752
- formData: T extends {
753
- formData: infer F;
754
- } ? F : never;
755
- urlEncoded: T extends {
756
- urlEncoded: infer U;
757
- } ? U : never;
749
+ data: ExtractProperty<T, "data">;
750
+ error: ExtractProperty<T, "error", TDefaultError>;
751
+ body: ExtractProperty<T, "body">;
752
+ query: ExtractProperty<T, "query">;
753
+ formData: ExtractProperty<T, "formData">;
754
+ urlEncoded: ExtractProperty<T, "urlEncoded">;
758
755
  } : {
759
756
  data: T;
760
757
  error: TDefaultError;
package/dist/index.d.ts CHANGED
@@ -76,16 +76,24 @@ type BaseRequestOptions = {
76
76
  cache?: RequestCache;
77
77
  signal?: AbortSignal;
78
78
  };
79
- type BodyOption<TBody> = [TBody] extends [never] ? object : {
79
+ type BodyOption<TBody> = [TBody] extends [never] ? object : undefined extends TBody ? {
80
+ body?: Exclude<TBody, undefined>;
81
+ } : {
80
82
  body: TBody;
81
83
  };
82
- type QueryOption<TQuery> = [TQuery] extends [never] ? object : {
84
+ type QueryOption<TQuery> = [TQuery] extends [never] ? object : undefined extends TQuery ? {
85
+ query?: Exclude<TQuery, undefined>;
86
+ } : {
83
87
  query: TQuery;
84
88
  };
85
- type FormDataOption<TFormData> = [TFormData] extends [never] ? object : {
89
+ type FormDataOption<TFormData> = [TFormData] extends [never] ? object : undefined extends TFormData ? {
90
+ formData?: Exclude<TFormData, undefined>;
91
+ } : {
86
92
  formData: TFormData;
87
93
  };
88
- type UrlEncodedOption<TUrlEncoded> = [TUrlEncoded] extends [never] ? object : {
94
+ type UrlEncodedOption<TUrlEncoded> = [TUrlEncoded] extends [never] ? object : undefined extends TUrlEncoded ? {
95
+ urlEncoded?: Exclude<TUrlEncoded, undefined>;
96
+ } : {
89
97
  urlEncoded: TUrlEncoded;
90
98
  };
91
99
  type RequestOptions<TBody = never, TQuery = never, TFormData = never, TUrlEncoded = never> = BaseRequestOptions & BodyOption<TBody> & QueryOption<TQuery> & FormDataOption<TFormData> & UrlEncodedOption<TUrlEncoded>;
@@ -734,27 +742,16 @@ type Endpoint<T extends {
734
742
  }> = {
735
743
  [EndpointBrand]: true;
736
744
  } & T;
745
+ type ExtractProperty<T, K extends string, TDefault = never> = K extends keyof T ? T[K] : TDefault;
737
746
  type NormalizeEndpoint<T, TDefaultError> = T extends {
738
747
  [EndpointBrand]: true;
739
748
  } ? {
740
- data: T extends {
741
- data: infer D;
742
- } ? D : never;
743
- error: T extends {
744
- error: infer E;
745
- } ? E : TDefaultError;
746
- body: T extends {
747
- body: infer B;
748
- } ? B : never;
749
- query: T extends {
750
- query: infer Q;
751
- } ? Q : never;
752
- formData: T extends {
753
- formData: infer F;
754
- } ? F : never;
755
- urlEncoded: T extends {
756
- urlEncoded: infer U;
757
- } ? U : never;
749
+ data: ExtractProperty<T, "data">;
750
+ error: ExtractProperty<T, "error", TDefaultError>;
751
+ body: ExtractProperty<T, "body">;
752
+ query: ExtractProperty<T, "query">;
753
+ formData: ExtractProperty<T, "formData">;
754
+ urlEncoded: ExtractProperty<T, "urlEncoded">;
758
755
  } : {
759
756
  data: T;
760
757
  error: TDefaultError;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spoosh/core",
3
- "version": "0.4.1",
3
+ "version": "0.4.3",
4
4
  "license": "MIT",
5
5
  "description": "Type-safe API client with plugin middleware system",
6
6
  "keywords": [
@@ -20,7 +20,7 @@
20
20
  "bugs": {
21
21
  "url": "https://github.com/nxnom/spoosh/issues"
22
22
  },
23
- "homepage": "https://spoosh.dev/docs/core",
23
+ "homepage": "https://spoosh.dev/react/docs/core",
24
24
  "publishConfig": {
25
25
  "access": "public"
26
26
  },