mobx-tanstack-query-api 0.3.1 → 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.1",
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;AAC3E,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEnE,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;IAqIR,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,20 +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
+ import { callFunction } from 'yummies/common';
3
4
  export class EndpointQuery extends Query {
4
5
  endpoint;
5
- response = null;
6
6
  uniqKey;
7
7
  _observableData;
8
8
  constructor(endpoint, queryClient, queryOptionsInput) {
9
- const { uniqKey, transform: transformResponse, params, ...queryOptions } = typeof queryOptionsInput === 'function'
9
+ const isQueryOptionsInputFn = typeof queryOptionsInput === 'function';
10
+ const unpackedQueryOptionsInput = isQueryOptionsInputFn
10
11
  ? queryOptionsInput()
11
12
  : queryOptionsInput;
13
+ const { uniqKey, transform: transformResponse, params, ...queryOptions } = unpackedQueryOptionsInput;
12
14
  const _observableData = {
13
15
  params: null,
14
16
  dynamicOptions: undefined,
17
+ response: null,
15
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
+ }
16
28
  makeObservable(_observableData, {
17
29
  params: observable.ref,
30
+ response: observable.ref,
18
31
  dynamicOptions: observable,
19
32
  });
20
33
  super({
@@ -37,7 +50,7 @@ export class EndpointQuery extends Query {
37
50
  queryFn: async (ctx) => {
38
51
  const params = getParamsFromContext(ctx);
39
52
  runInAction(() => {
40
- this.response = null;
53
+ _observableData.response = null;
41
54
  if (!comparer.structural(params, _observableData.params)) {
42
55
  _observableData.params = params;
43
56
  }
@@ -57,47 +70,63 @@ export class EndpointQuery extends Query {
57
70
  };
58
71
  const response = await endpoint.request(fixedInput);
59
72
  runInAction(() => {
60
- this.response = response;
73
+ _observableData.response = response;
61
74
  });
62
75
  return (await transformResponse?.(response)) ?? response.data;
63
76
  },
64
77
  });
65
78
  this.endpoint = endpoint;
66
- const disposeFn = reaction(() => {
67
- if (typeof queryOptionsInput === 'function') {
68
- const { params, abortSignal, select, onDone, onError, onInit, enableOnDemand, ...dynamicOptions } = queryOptionsInput();
69
- return {
70
- params,
71
- dynamicOptions: Object.keys(dynamicOptions).length > 0
72
- ? dynamicOptions
73
- : undefined,
74
- };
75
- }
76
- else {
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;
99
+ }
100
+ else {
101
+ outParams = {};
102
+ }
77
103
  return {
78
- params: typeof queryOptionsInput.params === 'function'
79
- ? queryOptionsInput.params()
80
- : (queryOptionsInput.params ?? {}),
81
- dynamicOptions: undefined,
104
+ params: callFunction(outParams),
105
+ dynamicOptions: outDynamicOptions,
82
106
  };
83
- }
84
- }, action(({ params, dynamicOptions }) => {
85
- _observableData.initialized = true;
86
- _observableData.params = params;
87
- _observableData.dynamicOptions = dynamicOptions;
88
- }), {
89
- fireImmediately: true,
90
- });
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
+ }
91
118
  this.uniqKey = uniqKey;
92
- observable.ref(this, 'response');
93
119
  computed.struct(this, 'params');
120
+ computed.struct(this, 'response');
94
121
  makeObservable(this);
95
122
  this._observableData = _observableData;
96
- this.abortController.signal.addEventListener('abort', disposeFn);
97
123
  }
98
124
  get params() {
99
125
  return this._observableData.params;
100
126
  }
127
+ get response() {
128
+ return this._observableData.response;
129
+ }
101
130
  update(updateParams) {
102
131
  if ('params' in updateParams) {
103
132
  const { params, ...options } = updateParams;
@@ -27,7 +27,7 @@ export type EndpointQueryFlattenOptions<TEndpoint extends AnyEndpoint, TQueryFnD
27
27
  };
28
28
  export type EndpointQueryOptions<TEndpoint extends AnyEndpoint, TQueryFnData = TEndpoint['__response']['data'], TError = DefaultError, TData = TQueryFnData, TQueryData = TQueryFnData> = ShortQueryConfig<NoInfer<TQueryFnData>, TError, TData, TQueryData> & {
29
29
  uniqKey?: EndpointQueryUniqKey;
30
- params?: () => MaybeFalsy<TEndpoint['__params']>;
30
+ params?: MaybeFn<MaybeFalsy<TEndpoint['__params']>, []>;
31
31
  /**
32
32
  * Transform response to QueryFnData
33
33
  */
@@ -1 +1 @@
1
- {"version":3,"file":"endpoint-query.types.d.ts","sourceRoot":"","sources":["../../src/runtime/endpoint-query.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE5E,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,IAAI,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,oBAAoB,GAAG,KAAK,CACtC,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,CAC/C,CAAC;AAEF,MAAM,MAAM,iBAAiB,GACzB,SAAS,GACT,SAAS,GACT,aAAa,GACb,UAAU,GACV,YAAY,GACZ,oBAAoB,GACpB,+BAA+B,GAC/B,SAAS,GACT,WAAW,GACX,gBAAgB,CAAC;AAErB,KAAK,gBAAgB,CACnB,YAAY,GAAG,OAAO,EACtB,MAAM,GAAG,YAAY,EACrB,KAAK,GAAG,YAAY,EACpB,UAAU,GAAG,YAAY,IACvB,IAAI,CACN,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,EACpD,iBAAiB,CAClB,GAAG;IACF,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,2BAA2B,CACrC,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,IACvB,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,GAAG;IACvE,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAE/B,MAAM,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3C;;OAEG;IACH,SAAS,CAAC,EAAE,CACV,QAAQ,EAAE,SAAS,CAAC,YAAY,CAAC,KAC9B,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,oBAAoB,CAC9B,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,IACvB,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,GAAG;IACvE,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAE/B,MAAM,CAAC,EAAE,MAAM,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;IACjD;;OAEG;IACH,SAAS,CAAC,EAAE,CACV,QAAQ,EAAE,SAAS,CAAC,YAAY,CAAC,KAC9B,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAC3C,CAAC"}
1
+ {"version":3,"file":"endpoint-query.types.d.ts","sourceRoot":"","sources":["../../src/runtime/endpoint-query.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE5E,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,IAAI,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,oBAAoB,GAAG,KAAK,CACtC,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,CAC/C,CAAC;AAEF,MAAM,MAAM,iBAAiB,GACzB,SAAS,GACT,SAAS,GACT,aAAa,GACb,UAAU,GACV,YAAY,GACZ,oBAAoB,GACpB,+BAA+B,GAC/B,SAAS,GACT,WAAW,GACX,gBAAgB,CAAC;AAErB,KAAK,gBAAgB,CACnB,YAAY,GAAG,OAAO,EACtB,MAAM,GAAG,YAAY,EACrB,KAAK,GAAG,YAAY,EACpB,UAAU,GAAG,YAAY,IACvB,IAAI,CACN,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,EACpD,iBAAiB,CAClB,GAAG;IACF,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,2BAA2B,CACrC,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,IACvB,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,GAAG;IACvE,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAE/B,MAAM,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3C;;OAEG;IACH,SAAS,CAAC,EAAE,CACV,QAAQ,EAAE,SAAS,CAAC,YAAY,CAAC,KAC9B,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,oBAAoB,CAC9B,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,IACvB,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,GAAG;IACvE,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAE/B,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACxD;;OAEG;IACH,SAAS,CAAC,EAAE,CACV,QAAQ,EAAE,SAAS,CAAC,YAAY,CAAC,KAC9B,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAC3C,CAAC"}