@makroz/web 1.2.5 → 1.2.6-rc14

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.
Files changed (34) hide show
  1. package/README.md +1 -1
  2. package/dist/auth/AuthStorageAdapter.d.ts +74 -0
  3. package/dist/auth/AuthStorageAdapter.d.ts.map +1 -0
  4. package/dist/auth/AuthStorageAdapter.js +140 -0
  5. package/dist/auth/AuthStorageAdapter.js.map +1 -0
  6. package/dist/auth/MkAuthProvider.d.ts +11 -2
  7. package/dist/auth/MkAuthProvider.d.ts.map +1 -1
  8. package/dist/auth/MkAuthProvider.js +15 -25
  9. package/dist/auth/MkAuthProvider.js.map +1 -1
  10. package/dist/components/MkFileUpload.d.ts.map +1 -1
  11. package/dist/components/MkFileUpload.js +36 -2
  12. package/dist/components/MkFileUpload.js.map +1 -1
  13. package/dist/components/MkTable.d.ts +8 -1
  14. package/dist/components/MkTable.d.ts.map +1 -1
  15. package/dist/components/MkTable.js +28 -2
  16. package/dist/components/MkTable.js.map +1 -1
  17. package/dist/hooks/useApi.d.ts +21 -5
  18. package/dist/hooks/useApi.d.ts.map +1 -1
  19. package/dist/hooks/useApi.js +83 -63
  20. package/dist/hooks/useApi.js.map +1 -1
  21. package/dist/hooks/useMkInfiniteList.d.ts +1 -1
  22. package/dist/hooks/useMkList.d.ts +8 -12
  23. package/dist/hooks/useMkList.d.ts.map +1 -1
  24. package/dist/hooks/useMkList.js +23 -9
  25. package/dist/hooks/useMkList.js.map +1 -1
  26. package/dist/index.d.ts +2 -1
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +1 -0
  29. package/dist/index.js.map +1 -1
  30. package/dist/theme/MkThemeProvider.d.ts.map +1 -1
  31. package/dist/theme/MkThemeProvider.js.map +1 -1
  32. package/eslint-plugin-mk/__tests__/no-cross-module-import-dynamic.test.js +89 -0
  33. package/eslint-plugin-mk/rules/no-cross-module-import.js +16 -0
  34. package/package.json +2 -2
@@ -1,4 +1,18 @@
1
- import type { MkResponse, ApiStatus } from '@makroz/core';
1
+ import type { ApiStatus, MkResponse } from '@makroz/core';
2
+ import { type MkQueryParams } from '@makroz/core';
3
+ /**
4
+ * Web `useApi` hook.
5
+ *
6
+ * State, refs, and lifecycle are owned here (web-local) while the
7
+ * actual fetch execution + AbortController + response.ok logic lives
8
+ * in `@makroz/core`'s `executeApiRequest`. The mobile wrapper follows
9
+ * the same shape, so both packages share semantics without sharing a
10
+ * React instance (pnpm strict-mode hoisting would otherwise create
11
+ * two React copies and trip `Invalid hook call`).
12
+ *
13
+ * Public return shape is byte-compatible with v1.2.5 so consumer
14
+ * call sites do not need to change.
15
+ */
2
16
  interface UseApiOptions {
3
17
  baseUrl?: string;
4
18
  headers?: Record<string, string>;
@@ -6,14 +20,16 @@ interface UseApiOptions {
6
20
  export declare function useApi<T = unknown>(options?: UseApiOptions): {
7
21
  status: ApiStatus;
8
22
  data: T | null;
9
- error: unknown;
23
+ error: string | null;
10
24
  waiting: number;
11
25
  loading: boolean;
12
- get: <R = T>(endpoint: string, params?: Record<string, string | number | boolean | Record<string, any>> | null) => Promise<MkResponse<R>>;
13
- post: <R = T>(endpoint: string, body: Record<string, unknown> | FormData | null) => Promise<MkResponse<R>>;
14
- put: <R = T>(endpoint: string, body: Record<string, unknown> | FormData | null) => Promise<MkResponse<R>>;
26
+ get: <R = T>(endpoint: string, params?: MkQueryParams) => Promise<MkResponse<R>>;
27
+ post: <R = T>(endpoint: string, body: unknown) => Promise<MkResponse<R>>;
28
+ put: <R = T>(endpoint: string, body: unknown) => Promise<MkResponse<R>>;
15
29
  delete: (endpoint: string) => Promise<MkResponse<void>>;
16
30
  remove: (endpoint: string) => Promise<MkResponse<void>>;
31
+ abort: () => void;
32
+ refetch: () => void;
17
33
  };
18
34
  export {};
19
35
  //# sourceMappingURL=useApi.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useApi.d.ts","sourceRoot":"","sources":["../../src/hooks/useApi.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG1D,UAAU,aAAa;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AA8BD,wBAAgB,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,GAAE,aAAkB;;;;;;UA8DlC,CAAC,gBACZ,MAAM,WACR,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI;WAGxD,CAAC,gBACb,MAAM,QACV,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,QAAQ,GAAG,IAAI;UAG1B,CAAC,gBACZ,MAAM,QACV,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,QAAQ,GAAG,IAAI;uBAGX,MAAM;uBACN,MAAM;EAcjD"}
1
+ {"version":3,"file":"useApi.d.ts","sourceRoot":"","sources":["../../src/hooks/useApi.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAmC,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAGnF;;;;;;;;;;;;GAYG;AAEH,UAAU,aAAa;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAED,wBAAgB,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,GAAE,aAAkB;;;;;;UAwHtD,CAAC,gBAAgB,MAAM,WAAW,aAAa;WAK/C,CAAC,gBAAgB,MAAM,QAAQ,OAAO;UAKtC,CAAC,gBAAgB,MAAM,QAAQ,OAAO;uBAK5B,MAAM;uBAAN,MAAM;;;EAkBxB"}
@@ -1,83 +1,101 @@
1
- import { useState, useCallback, useRef } from 'react';
1
+ import { useCallback, useMemo, useRef, useState } from 'react';
2
+ import { executeApiRequest, ApiCoreError } from '@makroz/core';
2
3
  import { useMkApiContext } from '../context/MkApiContext';
3
- const buildQueryParams = (params) => {
4
- const query = new URLSearchParams();
5
- if (!params)
6
- return "";
7
- // Specific MK-Director mappings
8
- if (params.q)
9
- query.append('q', String(params.q));
10
- if (params.sort)
11
- query.append('sort', String(params.sort));
12
- if (params.page)
13
- query.append('page', String(params.page));
14
- if (params.per_page)
15
- query.append('per_page', String(params.per_page));
16
- // Advanced Filtering mapping: { filter: { status: 'A', price: { gt: 100 } } }
17
- if (params.filter && typeof params.filter === 'object') {
18
- Object.entries(params.filter).forEach(([field, value]) => {
19
- if (typeof value === 'object' && value !== null) {
20
- Object.entries(value).forEach(([op, opVal]) => {
21
- query.append(`filter[${field}][${op}]`, String(opVal));
22
- });
23
- }
24
- else {
25
- query.append(`filter[${field}]`, String(value));
26
- }
27
- });
28
- }
29
- const queryString = query.toString();
30
- return queryString ? `?${queryString}` : "";
31
- };
32
4
  export function useApi(options = {}) {
33
5
  const context = useMkApiContext();
6
+ const baseUrl = options.baseUrl || context.baseUrl;
7
+ const mergedHeaders = useMemo(() => { var _a, _b; return (Object.assign(Object.assign({}, ((_a = context.headers) !== null && _a !== void 0 ? _a : {})), ((_b = options.headers) !== null && _b !== void 0 ? _b : {}))); }, [context.headers, options.headers]);
8
+ // Resolve fetch ONCE per provider, not per call. We deliberately
9
+ // prefer `globalThis.fetch` (browser global) so the same lookup
10
+ // path works in dev, prod, and jsdom-test envs. Note: do NOT
11
+ // `.bind(globalThis)` here — vi.fn() mocks in tests are sensitive
12
+ // to `this` rebinding, and the bare global already has the right
13
+ // receiver.
14
+ const fetchImpl = useMemo(() => globalThis.fetch, []);
34
15
  const [status, setStatus] = useState('idle');
35
16
  const [data, setData] = useState(null);
36
17
  const [error, setError] = useState(null);
37
- const baseUrl = options.baseUrl || context.baseUrl;
38
- const baseUrlRef = useRef(baseUrl);
39
- baseUrlRef.current = baseUrl;
40
- const optionsRef = useRef(options);
41
- optionsRef.current = options;
42
- const call = useCallback(async (endpoint, method = 'GET', body = null, params = null) => {
43
- setStatus('loading');
44
- setError(null);
45
- context.setWaiting(1, `call:${endpoint}`);
46
- const urlParams = method === 'GET' && params ? buildQueryParams(params) : "";
47
- const fullEndpoint = `${endpoint}${urlParams}`;
18
+ const controllerRef = useRef(null);
19
+ const lastRequestRef = useRef(null);
20
+ const abort = useCallback(() => {
21
+ var _a;
22
+ (_a = controllerRef.current) === null || _a === void 0 ? void 0 : _a.abort();
23
+ controllerRef.current = null;
24
+ }, []);
25
+ const call = useCallback(async (req) => {
26
+ var _a, _b;
27
+ // Cancel any prior in-flight request so the newest wins.
28
+ (_a = controllerRef.current) === null || _a === void 0 ? void 0 : _a.abort();
29
+ const controller = new AbortController();
30
+ controllerRef.current = controller;
31
+ lastRequestRef.current = req;
32
+ context.setWaiting(1, `call:${req.endpoint}`);
48
33
  try {
49
- const reqHeaders = Object.assign(Object.assign({}, context.headers), optionsRef.current.headers);
50
- if (!(body instanceof FormData)) {
51
- reqHeaders['Content-Type'] = 'application/json';
52
- }
53
- const response = await fetch(`${baseUrlRef.current}${fullEndpoint}`, {
54
- method,
55
- headers: reqHeaders,
56
- body: body instanceof FormData ? body : (body ? JSON.stringify(body) : null),
34
+ setStatus('loading');
35
+ setError(null);
36
+ const result = await executeApiRequest({
37
+ baseUrl,
38
+ endpoint: req.endpoint,
39
+ method: req.method,
40
+ body: req.body,
41
+ params: req.params,
42
+ headers: mergedHeaders,
43
+ signal: controller.signal,
44
+ timeoutMs: req.timeoutMs,
45
+ fetchImpl,
57
46
  });
58
- const result = await response.json();
59
- if (!result.success) {
60
- throw new Error(result.message || 'API Error');
47
+ // Stale-response guard: if a newer call started while
48
+ // we were awaiting, drop this response silently.
49
+ if (controller.signal.aborted && controllerRef.current !== controller) {
50
+ return result;
61
51
  }
62
52
  setData(result.data);
63
53
  setStatus('success');
64
54
  return result;
65
55
  }
66
56
  catch (err) {
67
- const errorMessage = err instanceof Error ? err.message : String(err);
68
- setError(errorMessage);
57
+ if (err instanceof Error && err.name === 'AbortError') {
58
+ throw err;
59
+ }
60
+ if (controllerRef.current !== controller) {
61
+ throw err;
62
+ }
63
+ const message = err instanceof Error
64
+ ? err.message
65
+ : typeof err === 'string'
66
+ ? err
67
+ : 'Unknown fetch error';
68
+ // BC: state stores the message string (what v1.2.5 consumers
69
+ // expect). The thrown value is the full ApiCoreError so
70
+ // callers using `.rejects.toThrow(...)` still get the
71
+ // structured info via `instanceof ApiCoreError`.
72
+ setError(message);
69
73
  setStatus('error');
70
- throw err;
74
+ throw err instanceof Error
75
+ ? err
76
+ : new ApiCoreError(message, {
77
+ status: 0,
78
+ statusText: 'unknown',
79
+ endpoint: req.endpoint,
80
+ method: ((_b = req.method) !== null && _b !== void 0 ? _b : 'GET'),
81
+ });
71
82
  }
72
83
  finally {
73
- context.setWaiting(-1, `-call:${endpoint}`);
84
+ context.setWaiting(-1, `-call:${req.endpoint}`);
85
+ if (controllerRef.current === controller) {
86
+ controllerRef.current = null;
87
+ }
74
88
  }
75
- }, [context]);
76
- const get = useCallback((endpoint, params = null) => call(endpoint, 'GET', null, params), [call]);
77
- const post = useCallback((endpoint, body) => call(endpoint, 'POST', body), [call]);
78
- const put = useCallback((endpoint, body) => call(endpoint, 'PUT', body), [call]);
79
- const deleteFn = useCallback((endpoint) => call(endpoint, 'DELETE'), [call]);
80
- const removeFn = useCallback((endpoint) => call(endpoint, 'DELETE'), [call]);
89
+ }, [baseUrl, mergedHeaders, fetchImpl, context]);
90
+ const refetch = useCallback(() => {
91
+ const last = lastRequestRef.current;
92
+ if (last)
93
+ void call(last);
94
+ }, [call]);
95
+ const get = useCallback((endpoint, params) => call({ endpoint, method: 'GET', params }), [call]);
96
+ const post = useCallback((endpoint, body) => call({ endpoint, method: 'POST', body }), [call]);
97
+ const put = useCallback((endpoint, body) => call({ endpoint, method: 'PUT', body }), [call]);
98
+ const deleteFn = useCallback((endpoint) => call({ endpoint, method: 'DELETE' }), [call]);
81
99
  return {
82
100
  status,
83
101
  data,
@@ -88,7 +106,9 @@ export function useApi(options = {}) {
88
106
  post,
89
107
  put,
90
108
  delete: deleteFn,
91
- remove: removeFn,
109
+ remove: deleteFn,
110
+ abort,
111
+ refetch,
92
112
  };
93
113
  }
94
114
  //# sourceMappingURL=useApi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useApi.js","sourceRoot":"","sources":["../../src/hooks/useApi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useApi.js","sourceRoot":"","sources":["../../src/hooks/useApi.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ export interface InfiniteListOptions {
7
7
  export declare function useMkInfiniteList(endpoint: string, options?: InfiniteListOptions): {
8
8
  items: any[];
9
9
  loading: boolean;
10
- error: unknown;
10
+ error: string | null;
11
11
  hasMore: boolean;
12
12
  loadMore: () => void;
13
13
  reset: () => void;
@@ -57,23 +57,19 @@ export declare function useMkList(endpoint: string, options?: MkListOptions): {
57
57
  setPerPage: (per_page: number) => void;
58
58
  resetFilters: () => void;
59
59
  refresh: (extraParams?: MkListParams) => Promise<import("@makroz/core").MkResponse<MkListResponse<unknown>>>;
60
- /** Pagination meta from __extraData */
61
- pagination: {
62
- [key: string]: unknown;
63
- current_page?: number;
64
- last_page?: number;
65
- per_page?: number;
66
- total?: number;
67
- };
60
+ /** Pagination meta from __extraData (R-PKG-023: top-level, fallback to legacy nested) */
61
+ pagination: Record<string, unknown>;
68
62
  status: import("@makroz/core").ApiStatus;
69
63
  data: MkListResponse<unknown> | null;
70
- error: unknown;
64
+ error: string | null;
71
65
  waiting: number;
72
66
  loading: boolean;
73
- get: <R = MkListResponse<unknown>>(endpoint: string, params?: Record<string, string | number | boolean | Record<string, any>> | null) => Promise<import("@makroz/core").MkResponse<R>>;
74
- post: <R = MkListResponse<unknown>>(endpoint: string, body: Record<string, unknown> | FormData | null) => Promise<import("@makroz/core").MkResponse<R>>;
75
- put: <R = MkListResponse<unknown>>(endpoint: string, body: Record<string, unknown> | FormData | null) => Promise<import("@makroz/core").MkResponse<R>>;
67
+ get: <R = MkListResponse<unknown>>(endpoint: string, params?: import("@makroz/core").MkQueryParams) => Promise<import("@makroz/core").MkResponse<R>>;
68
+ post: <R = MkListResponse<unknown>>(endpoint: string, body: unknown) => Promise<import("@makroz/core").MkResponse<R>>;
69
+ put: <R = MkListResponse<unknown>>(endpoint: string, body: unknown) => Promise<import("@makroz/core").MkResponse<R>>;
76
70
  delete: (endpoint: string) => Promise<import("@makroz/core").MkResponse<void>>;
77
71
  remove: (endpoint: string) => Promise<import("@makroz/core").MkResponse<void>>;
72
+ abort: () => void;
73
+ refetch: () => void;
78
74
  };
79
75
  //# sourceMappingURL=useMkList.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMkList.d.ts","sourceRoot":"","sources":["../../src/hooks/useMkList.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,MAAM,WAAW,YAAY;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,wDAAwD;AACxD,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,OAAO;IACvC,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,WAAW,CAAC,EAAE;QACV,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KAC1B,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC1B,sBAAsB;IACtB,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B,sEAAsE;IACtE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB;;;uBAiB7B,MAAM,SAAS,OAAO;oBAQzB,MAAM;mBAIP,MAAM;oBAIL,MAAM;2BAIC,MAAM;;4BA1B9B,YAAY;IAyD1B,uCAAuC;;;uBAtFxB,MAAM;oBACT,MAAM;mBACP,MAAM;gBACT,MAAM;;;;;;;;;;;;EAsFrB"}
1
+ {"version":3,"file":"useMkList.d.ts","sourceRoot":"","sources":["../../src/hooks/useMkList.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,MAAM,WAAW,YAAY;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,wDAAwD;AACxD,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,OAAO;IACvC,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,WAAW,CAAC,EAAE;QACV,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KAC1B,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC1B,sBAAsB;IACtB,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B,sEAAsE;IACtE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB;;;uBA+B7B,MAAM,SAAS,OAAO;oBAQzB,MAAM;mBAIP,MAAM;oBAIL,MAAM;2BAIC,MAAM;;4BAjCxB,YAAY;IAgEhC,yFAAyF;;;;;;;;;;;;;;EAGhG"}
@@ -1,14 +1,28 @@
1
1
  import { useState, useCallback, useEffect, useRef } from 'react';
2
2
  import { useApi } from './useApi';
3
3
  export function useMkList(endpoint, options = {}) {
4
- var _a;
5
4
  const { initialParams = {}, autoFetch = true } = options;
6
5
  const api = useApi();
7
6
  const [params, setParams] = useState(Object.assign({ page: 1, per_page: 15 }, initialParams));
7
+ // R-PKG-023 (rc12): capture __extraData from the response envelope
8
+ // (top-level, sibling of `data`, per the @makroz/core MkResponse<T>
9
+ // contract). The previous implementation read from `api.data?.__extraData`
10
+ // which worked for the legacy nested shape but breaks once the Laravel
11
+ // backend emits the canonical top-level shape. We auto-detect: top-level
12
+ // first, then fallback to legacy nested.
13
+ const [extraData, setExtraData] = useState({});
8
14
  const mountedRef = useRef(false);
9
- const refresh = useCallback((extraParams = {}) => {
10
- return api.get(endpoint, Object.assign(Object.assign({}, params), extraParams));
11
- }, [endpoint, params]);
15
+ const refresh = useCallback(async (extraParams = {}) => {
16
+ var _a, _b;
17
+ const response = await api.get(endpoint, Object.assign(Object.assign({}, params), extraParams));
18
+ // Auto-detect response shape (R-PKG-023):
19
+ // - Top-level (rc12+ with flag): `response.__extraData` exists.
20
+ // - Legacy nested (rc11 and earlier): `response.data?.__extraData`.
21
+ const topLevel = response.__extraData;
22
+ const nested = (_a = response.data) === null || _a === void 0 ? void 0 : _a.__extraData;
23
+ setExtraData((_b = topLevel !== null && topLevel !== void 0 ? topLevel : nested) !== null && _b !== void 0 ? _b : {});
24
+ return response;
25
+ }, [endpoint, params, api]);
12
26
  const setFilter = useCallback((field, value) => {
13
27
  setParams(prev => (Object.assign(Object.assign({}, prev), { page: 1, filter: Object.assign(Object.assign({}, prev.filter), { [field]: value }) })));
14
28
  }, []);
@@ -33,11 +47,11 @@ export function useMkList(endpoint, options = {}) {
33
47
  return;
34
48
  if (!mountedRef.current) {
35
49
  mountedRef.current = true;
36
- refresh();
50
+ void refresh();
37
51
  return;
38
52
  }
39
- refresh();
40
- }, [params]);
53
+ void refresh();
54
+ }, [params, refresh]);
41
55
  return Object.assign(Object.assign({}, api), { params,
42
56
  setParams,
43
57
  setFilter,
@@ -47,7 +61,7 @@ export function useMkList(endpoint, options = {}) {
47
61
  setPerPage,
48
62
  resetFilters,
49
63
  refresh,
50
- /** Pagination meta from __extraData */
51
- pagination: ((_a = api.data) === null || _a === void 0 ? void 0 : _a.__extraData) || {} });
64
+ /** Pagination meta from __extraData (R-PKG-023: top-level, fallback to legacy nested) */
65
+ pagination: extraData });
52
66
  }
53
67
  //# sourceMappingURL=useMkList.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMkList.js","sourceRoot":"","sources":["../../src/hooks/useMkList.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useMkList.js","sourceRoot":"","sources":["../../src/hooks/useMkList.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -28,6 +28,7 @@ export { useMkAuth } from './auth/useMkAuth';
28
28
  export { MkAuthForm } from './auth/MkAuthForm';
29
29
  export type { MkAuthFormProps } from './auth/MkAuthForm';
30
30
  export type { MkAuthContextValue } from './auth/MkAuthContext';
31
- export type { AdminDto, AuthTokens, LoginInput, LoginResponse, RefreshResponse, } from './auth/types';
31
+ export type { AdminDto, AuthTokens, AuthStorageAdapter, LoginInput, LoginResponse, RefreshResponse, } from './auth/types';
32
+ export { CookieStorageAdapter, LocalStorageAdapter, getDefaultAuthStorage, type CookieStorageAdapterOptions, } from './auth/AuthStorageAdapter';
32
33
  export * from './utils/images';
33
34
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGtE,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AAGxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AAGnC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,YAAY,EACR,QAAQ,EACR,UAAU,EACV,UAAU,EACV,aAAa,EACb,eAAe,GAClB,MAAM,cAAc,CAAC;AAGtB,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGtE,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AAGxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AAGnC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,YAAY,EACR,QAAQ,EACR,UAAU,EACV,kBAAkB,EAClB,UAAU,EACV,aAAa,EACb,eAAe,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EACH,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,KAAK,2BAA2B,GACnC,MAAM,2BAA2B,CAAC;AAGnC,cAAc,gBAAgB,CAAC"}
package/dist/index.js CHANGED
@@ -28,6 +28,7 @@ export * from './hooks/useMkStore';
28
28
  export { MkAuthProvider } from './auth/MkAuthProvider';
29
29
  export { useMkAuth } from './auth/useMkAuth';
30
30
  export { MkAuthForm } from './auth/MkAuthForm';
31
+ export { CookieStorageAdapter, LocalStorageAdapter, getDefaultAuthStorage, } from './auth/AuthStorageAdapter';
31
32
  // Utils
32
33
  export * from './utils/images';
33
34
  // Note: Global CSS (`@makroz/web/styles/index.css`) MUST be imported by the
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAEtE,WAAW;AACX,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AAExC,QAAQ;AACR,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AAEnC,qEAAqE;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAW/C,QAAQ;AACR,cAAc,gBAAgB,CAAC;AAE/B,4EAA4E;AAC5E,uEAAuE;AACvE,qEAAqE;AACrE,2EAA2E"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAEtE,WAAW;AACX,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AAExC,QAAQ;AACR,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AAEnC,qEAAqE;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAW/C,OAAO,EACH,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,GAExB,MAAM,2BAA2B,CAAC;AAEnC,QAAQ;AACR,cAAc,gBAAgB,CAAC;AAE/B,4EAA4E;AAC5E,uEAAuE;AACvE,qEAAqE;AACrE,2EAA2E"}
@@ -1 +1 @@
1
- {"version":3,"file":"MkThemeProvider.d.ts","sourceRoot":"","sources":["../../src/theme/MkThemeProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA+E,MAAM,OAAO,CAAC;AACpG,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,UAAU,gBAAgB;IACxB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAEjC,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACjD,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAID,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,WAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,eAAe,GAChB,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,eAAe,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;CACpC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA4FpB;AAED,eAAO,MAAM,UAAU,wBAMtB,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"MkThemeProvider.d.ts","sourceRoot":"","sources":["../../src/theme/MkThemeProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA+E,MAAM,OAAO,CAAC;AACpG,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,UAAU,gBAAgB;IACxB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAEjC,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACjD,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAID,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,WAAmB,EACnB,YAAY,GACb,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA2FpB;AAED,eAAO,MAAM,UAAU,wBAMtB,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MkThemeProvider.js","sourceRoot":"","sources":["../../src/theme/MkThemeProvider.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MkThemeProvider.js","sourceRoot":"","sources":["../../src/theme/MkThemeProvider.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * @vitest-environment node
3
+ *
4
+ * Dynamic import() coverage for the MME enforcer (R-MK-001).
5
+ * Blocked in rc12 because the original rule only handled
6
+ * `ImportDeclaration` and `ExportNamedDeclaration`/`ExportAllDeclaration`,
7
+ * letting `await import('@/modules/admin/...')` bypass the boundary check.
8
+ *
9
+ * Companion to `no-cross-module-import.test.js`. We keep this as a
10
+ * separate file so the failure mode ("dynamic imports leak") is
11
+ * obvious from the file name at PR review time.
12
+ */
13
+ import { describe, it, expect } from 'vitest';
14
+ import { RuleTester } from 'eslint';
15
+ import rule from '../rules/no-cross-module-import.js';
16
+
17
+ const ruleTester = new RuleTester({
18
+ languageOptions: {
19
+ ecmaVersion: 2022,
20
+ sourceType: 'module',
21
+ },
22
+ });
23
+
24
+ describe('no-cross-module-import — dynamic import()', () => {
25
+ ruleTester.run('no-cross-module-import (dynamic)', rule, {
26
+ valid: [
27
+ // Dynamic import of same module's deep path — OK
28
+ {
29
+ filename: '/app/src/modules/payments/hooks/usePayment.ts',
30
+ code: "const m = await import('@/modules/payments/components/PaymentForm');",
31
+ },
32
+ // Dynamic import of another module's public index — OK
33
+ {
34
+ filename: '/app/src/modules/payments/hooks/usePayment.ts',
35
+ code: "const m = await import('@/modules/admin');",
36
+ },
37
+ // Dynamic import outside any module — OK
38
+ {
39
+ filename: '/app/src/app/admin/page.tsx',
40
+ code: "const m = await import('@/modules/admin/components/AdminForm');",
41
+ },
42
+ // Dynamic import with non-literal expression — silently skipped
43
+ // (cannot be analyzed statically). This is an accepted gap, not a bug.
44
+ {
45
+ filename: '/app/src/modules/payments/hooks/usePayment.ts',
46
+ code: "const m = await import(someDynamicPath);",
47
+ },
48
+ // Dynamic import in test file pointing cross-module — OK (tests excluded)
49
+ {
50
+ filename: '/app/src/modules/payments/__tests__/usePayment.test.ts',
51
+ code: "const m = await import('@/modules/admin/components/AdminForm');",
52
+ },
53
+ ],
54
+
55
+ invalid: [
56
+ // Dynamic import cross-module deep path — should fail
57
+ {
58
+ filename: '/app/src/modules/payments/hooks/usePayment.ts',
59
+ code: "const m = await import('@/modules/admin/components/AdminForm');",
60
+ errors: [{ messageId: 'forbidden' }],
61
+ },
62
+ // Dynamic import cross-module via relative path — should fail
63
+ {
64
+ filename: '/app/src/modules/payments/hooks/usePayment.ts',
65
+ code: "const m = await import('../../admin/components/AdminForm');",
66
+ errors: [{ messageId: 'forbidden' }],
67
+ },
68
+ // Synchronous dynamic import (top-level await) cross-module — should fail
69
+ {
70
+ filename: '/app/src/modules/payments/hooks/usePayment.ts',
71
+ code: "const m = import('@/modules/admin/components/AdminForm');",
72
+ errors: [{ messageId: 'forbidden' }],
73
+ },
74
+ ],
75
+ });
76
+
77
+ it('registers the dynamic-import visitor', () => {
78
+ // Sanity check: the rule's create() returns an ImportExpression
79
+ // visitor. If a future refactor drops it, this test fails loudly
80
+ // instead of silently letting dynamic imports bypass the rule.
81
+ const sandboxFilename = '/app/src/modules/payments/hooks/usePayment.ts';
82
+ const context = {
83
+ getFilename: () => sandboxFilename,
84
+ report: () => {},
85
+ };
86
+ const visitors = rule.create(context);
87
+ expect(typeof visitors.ImportExpression).toBe('function');
88
+ });
89
+ });
@@ -5,6 +5,10 @@
5
5
  * inside another module. Only `@/modules/{X}` (the index/public API)
6
6
  * is allowed.
7
7
  *
8
+ * Covers both static `import ... from '...'` and dynamic
9
+ * `import('...')` (await import() for code splitting) so that
10
+ * R-MK-001 cannot be bypassed via dynamic imports.
11
+ *
8
12
  * Scenarios:
9
13
  * Given file src/modules/payments/hooks/usePayment.ts
10
14
  * When it imports '@/modules/admin/components/AdminForm'
@@ -14,6 +18,9 @@
14
18
  * Given the same file imports '@/modules/admin'
15
19
  * Then the lint passes.
16
20
  *
21
+ * Given the same file does `await import('@/modules/admin/components/AdminForm')`
22
+ * Then the lint also fails (dynamic imports are caught).
23
+ *
17
24
  * Given a file OUTSIDE any module (e.g. src/app/admin/page.tsx)
18
25
  * When it imports '@/modules/admin/...'
19
26
  * Then the lint passes — the app is the consumer of the public API.
@@ -58,6 +65,12 @@ export default {
58
65
  const sourceModule = moduleMatch[1];
59
66
 
60
67
  function checkImport(node) {
68
+ // Both ImportDeclaration and ImportExpression (dynamic import())
69
+ // carry the literal source string at `node.source.value` when the
70
+ // argument is a string literal. For dynamic imports with a
71
+ // non-literal expression (e.g. `import(someVar)`), this is
72
+ // `undefined` and we skip the check — those cases need static
73
+ // analysis beyond ESLint.
61
74
  const importPath = node.source?.value;
62
75
  if (typeof importPath !== 'string') return;
63
76
 
@@ -92,6 +105,9 @@ export default {
92
105
 
93
106
  return {
94
107
  ImportDeclaration: checkImport,
108
+ // Catches `await import('...')` and `import('...')` so R-MK-001
109
+ // cannot be bypassed via dynamic imports for code splitting.
110
+ ImportExpression: checkImport,
95
111
  // Also catch `export ... from '...'` re-exports.
96
112
  ExportNamedDeclaration: checkImport,
97
113
  ExportAllDeclaration: checkImport,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@makroz/web",
3
- "version": "1.2.5",
3
+ "version": "1.2.6-rc14",
4
4
  "description": "React UI components and hooks for MK-Director web applications",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -33,7 +33,7 @@
33
33
  },
34
34
  "dependencies": {
35
35
  "@tanstack/react-query": "^5.62.0",
36
- "@makroz/core": "1.1.5"
36
+ "@makroz/core": "1.1.6-rc14"
37
37
  },
38
38
  "peerDependencies": {
39
39
  "next": "^16.0.0",