mobx-tanstack-query-api 0.3.2 → 0.3.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mobx-tanstack-query-api",
3
- "version": "0.3.2",
3
+ "version": "0.3.3",
4
4
  "keywords": [],
5
5
  "author": "js2me",
6
6
  "license": "MIT",
@@ -6,11 +6,11 @@ import { EndpointQueryFlattenOptions, EndpointQueryOptions, EndpointQueryUniqKey
6
6
  import { AnyEndpoint } from './endpoint.types.js';
7
7
  export declare class EndpointQuery<TEndpoint extends AnyEndpoint, TQueryFnData = TEndpoint['__response']['data'], TError = DefaultError, TData = TQueryFnData, TQueryData = TQueryFnData> extends Query<TQueryFnData, TError, TData, TQueryData> {
8
8
  private endpoint;
9
- response: TEndpoint['__response'] | null;
10
9
  private uniqKey?;
11
10
  private _observableData;
12
11
  constructor(endpoint: AnyEndpoint, queryClient: EndpointQueryClient, queryOptionsInput: EndpointQueryOptions<TEndpoint, TQueryFnData, TError, TData, TQueryData> | (() => EndpointQueryFlattenOptions<TEndpoint, TQueryFnData, TError, TData, TQueryData>));
13
12
  get params(): MaybeFalsy<TEndpoint["__params"]>;
13
+ get response(): TEndpoint["__response"] | null;
14
14
  update(updateParams: Omit<QueryUpdateOptionsAllVariants<TQueryFnData, TError, TData, TQueryData>, ExcludedQueryKeys> & {
15
15
  params?: MaybeFalsy<TEndpoint['__params']>;
16
16
  }): void;
@@ -1 +1 @@
1
- {"version":3,"file":"endpoint-query.d.ts","sourceRoot":"","sources":["../../src/runtime/endpoint-query.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAU9B,OAAO,EAAE,KAAK,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AAE3E,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAW,MAAM,qBAAqB,CAAC;AAE5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AASlD,qBAAa,aAAa,CACxB,SAAS,SAAS,WAAW,EAC7B,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,EAC9C,MAAM,GAAG,YAAY,EACrB,KAAK,GAAG,YAAY,EACpB,UAAU,GAAG,YAAY,CACzB,SAAQ,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC;IAQpD,OAAO,CAAC,QAAQ;IAPlB,QAAQ,EAAE,SAAS,CAAC,YAAY,CAAC,GAAG,IAAI,CAAQ;IAEhD,OAAO,CAAC,OAAO,CAAC,CAAuB;IAEvC,OAAO,CAAC,eAAe,CAAoC;gBAGjD,QAAQ,EAAE,WAAW,EAC7B,WAAW,EAAE,mBAAmB,EAChC,iBAAiB,EACb,oBAAoB,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,GACxE,CAAC,MAAM,2BAA2B,CAChC,SAAS,EACT,YAAY,EACZ,MAAM,EACN,KAAK,EACL,UAAU,CACX,CAAC;IA4IR,IAAI,MAAM,sCAET;IAED,MAAM,CACJ,YAAY,EAAE,IAAI,CAChB,6BAA6B,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,EACtE,iBAAiB,CAClB,GAAG;QACF,MAAM,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;KAC5C;IAyBG,KAAK,CACT,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,GACxC,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAS9C,OAAO,IAAI,IAAI;CAOhB;AAED,eAAO,MAAM,oBAAoB,GAAI,KAAK,oBAAoB,CAAC,GAAG,EAAE,GAAG,CAAC,KAChC,WAAW,CAAC,UAAU,CAC7D,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,UAAU,WAAW,EACrB,QAAQ,UAAU,CAAC,SAAS,CAAC,EAC7B,SAAS,KAAK,CAAC,oBAAoB,CAAC,KACnC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,GAAG,EAAE,CAAA;CAerC,CAAC"}
1
+ {"version":3,"file":"endpoint-query.d.ts","sourceRoot":"","sources":["../../src/runtime/endpoint-query.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAS9B,OAAO,EAAE,KAAK,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AAE3E,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAW,MAAM,qBAAqB,CAAC;AAE5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAUlD,qBAAa,aAAa,CACxB,SAAS,SAAS,WAAW,EAC7B,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,EAC9C,MAAM,GAAG,YAAY,EACrB,KAAK,GAAG,YAAY,EACpB,UAAU,GAAG,YAAY,CACzB,SAAQ,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC;IAMpD,OAAO,CAAC,QAAQ;IALlB,OAAO,CAAC,OAAO,CAAC,CAAuB;IAEvC,OAAO,CAAC,eAAe,CAAoC;gBAGjD,QAAQ,EAAE,WAAW,EAC7B,WAAW,EAAE,mBAAmB,EAChC,iBAAiB,EACb,oBAAoB,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,GACxE,CAAC,MAAM,2BAA2B,CAChC,SAAS,EACT,YAAY,EACZ,MAAM,EACN,KAAK,EACL,UAAU,CACX,CAAC;IAgKR,IAAI,MAAM,sCAET;IAED,IAAI,QAAQ,mCAEX;IAED,MAAM,CACJ,YAAY,EAAE,IAAI,CAChB,6BAA6B,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,EACtE,iBAAiB,CAClB,GAAG;QACF,MAAM,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;KAC5C;IAyBG,KAAK,CACT,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,GACxC,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAS9C,OAAO,IAAI,IAAI;CAOhB;AAED,eAAO,MAAM,oBAAoB,GAAI,KAAK,oBAAoB,CAAC,GAAG,EAAE,GAAG,CAAC,KAChC,WAAW,CAAC,UAAU,CAC7D,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,UAAU,WAAW,EACrB,QAAQ,UAAU,CAAC,SAAS,CAAC,EAC7B,SAAS,KAAK,CAAC,oBAAoB,CAAC,KACnC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,GAAG,EAAE,CAAA;CAerC,CAAC"}
@@ -1,21 +1,33 @@
1
- import { action, comparer, computed, makeObservable, observable, reaction, runInAction, } from 'mobx';
1
+ import { comparer, computed, makeObservable, observable, reaction, runInAction, } from 'mobx';
2
2
  import { Query } from 'mobx-tanstack-query';
3
3
  import { callFunction } from 'yummies/common';
4
4
  export class EndpointQuery extends Query {
5
5
  endpoint;
6
- response = null;
7
6
  uniqKey;
8
7
  _observableData;
9
8
  constructor(endpoint, queryClient, queryOptionsInput) {
10
- const { uniqKey, transform: transformResponse, params, ...queryOptions } = typeof queryOptionsInput === 'function'
9
+ const isQueryOptionsInputFn = typeof queryOptionsInput === 'function';
10
+ const unpackedQueryOptionsInput = isQueryOptionsInputFn
11
11
  ? queryOptionsInput()
12
12
  : queryOptionsInput;
13
+ const { uniqKey, transform: transformResponse, params, ...queryOptions } = unpackedQueryOptionsInput;
13
14
  const _observableData = {
14
15
  params: null,
15
16
  dynamicOptions: undefined,
17
+ response: null,
16
18
  };
19
+ if (!isQueryOptionsInputFn && typeof params !== 'function') {
20
+ if ('params' in unpackedQueryOptionsInput) {
21
+ _observableData.params = params;
22
+ }
23
+ else {
24
+ _observableData.params = {};
25
+ }
26
+ _observableData.initialized = true;
27
+ }
17
28
  makeObservable(_observableData, {
18
29
  params: observable.ref,
30
+ response: observable.ref,
19
31
  dynamicOptions: observable,
20
32
  });
21
33
  super({
@@ -38,7 +50,7 @@ export class EndpointQuery extends Query {
38
50
  queryFn: async (ctx) => {
39
51
  const params = getParamsFromContext(ctx);
40
52
  runInAction(() => {
41
- this.response = null;
53
+ _observableData.response = null;
42
54
  if (!comparer.structural(params, _observableData.params)) {
43
55
  _observableData.params = params;
44
56
  }
@@ -58,54 +70,63 @@ export class EndpointQuery extends Query {
58
70
  };
59
71
  const response = await endpoint.request(fixedInput);
60
72
  runInAction(() => {
61
- this.response = response;
73
+ _observableData.response = response;
62
74
  });
63
75
  return (await transformResponse?.(response)) ?? response.data;
64
76
  },
65
77
  });
66
78
  this.endpoint = endpoint;
67
- const disposeFn = reaction(() => {
68
- let outDynamicOptions;
69
- let outParams;
70
- if (typeof queryOptionsInput === 'function') {
71
- const result = queryOptionsInput();
72
- const { params, abortSignal, select, onDone, onError, onInit, enableOnDemand, ...dynamicOptions } = result;
73
- if ('params' in result) {
74
- outParams = result.params;
79
+ if (isQueryOptionsInputFn || typeof params === 'function') {
80
+ const disposeFn = reaction(() => {
81
+ let outDynamicOptions;
82
+ let outParams;
83
+ if (isQueryOptionsInputFn) {
84
+ const result = queryOptionsInput();
85
+ const { params, abortSignal, select, onDone, onError, onInit, enableOnDemand, ...dynamicOptions } = result;
86
+ if ('params' in result) {
87
+ outParams = result.params;
88
+ }
89
+ else {
90
+ outParams = {};
91
+ }
92
+ outDynamicOptions =
93
+ Object.keys(dynamicOptions).length > 0
94
+ ? dynamicOptions
95
+ : undefined;
96
+ }
97
+ else if ('params' in unpackedQueryOptionsInput) {
98
+ outParams = unpackedQueryOptionsInput.params;
75
99
  }
76
100
  else {
77
101
  outParams = {};
78
102
  }
79
- outDynamicOptions =
80
- Object.keys(dynamicOptions).length > 0 ? dynamicOptions : undefined;
81
- }
82
- else if ('params' in queryOptionsInput) {
83
- outParams = queryOptionsInput.params;
84
- }
85
- else {
86
- outParams = {};
87
- }
88
- return {
89
- params: callFunction(outParams),
90
- dynamicOptions: outDynamicOptions,
91
- };
92
- }, action(({ params, dynamicOptions }) => {
93
- _observableData.initialized = true;
94
- _observableData.params = params;
95
- _observableData.dynamicOptions = dynamicOptions;
96
- }), {
97
- fireImmediately: true,
98
- });
103
+ return {
104
+ params: callFunction(outParams),
105
+ dynamicOptions: outDynamicOptions,
106
+ };
107
+ }, ({ params, dynamicOptions }) => {
108
+ runInAction(() => {
109
+ _observableData.initialized = true;
110
+ _observableData.params = params;
111
+ _observableData.dynamicOptions = dynamicOptions;
112
+ });
113
+ }, {
114
+ fireImmediately: true,
115
+ });
116
+ this.abortController.signal.addEventListener('abort', disposeFn);
117
+ }
99
118
  this.uniqKey = uniqKey;
100
- observable.ref(this, 'response');
101
119
  computed.struct(this, 'params');
120
+ computed.struct(this, 'response');
102
121
  makeObservable(this);
103
122
  this._observableData = _observableData;
104
- this.abortController.signal.addEventListener('abort', disposeFn);
105
123
  }
106
124
  get params() {
107
125
  return this._observableData.params;
108
126
  }
127
+ get response() {
128
+ return this._observableData.response;
129
+ }
109
130
  update(updateParams) {
110
131
  if ('params' in updateParams) {
111
132
  const { params, ...options } = updateParams;