@keboola/api-client-react 15.0.0 → 16.0.0

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/README.md CHANGED
@@ -49,7 +49,6 @@ const Tables = () => {
49
49
  - `useApiClient()` — returns the initialised `ApiClient`.
50
50
  - `useProject()` — returns `client.context.project` (project features + backend availability).
51
51
  - `useStack()` — returns `client.context.stack` (service discovery + feature flags).
52
- - `useDevApiClient()` — companion hook for `DevApiClientProvider`, used by tooling that needs the dev/raw client.
53
52
 
54
53
  ## Ownership
55
54
 
package/dist/index.cjs CHANGED
@@ -33,20 +33,9 @@ var ApiClientProvider = ({ client, children, fallback = null, ...rest }) => {
33
33
  }, []);
34
34
  return isInitializing ? fallback : /* @__PURE__ */ jsxRuntime.jsx(Provider, { value: client, children });
35
35
  };
36
- var MISSING_DEV_PROVIDER_ERROR = "useDevApiClient must be used within <DevApiClientProvider />";
37
- var Context2 = react.createContext(null);
38
- var Provider2 = Context2;
39
- var useDevApiClient = () => {
40
- const devApiClient = react.use(Context2);
41
- if (devApiClient === null) throw new Error(MISSING_DEV_PROVIDER_ERROR);
42
- return devApiClient;
43
- };
44
- var DevApiClientProvider = ({ client, children }) => /* @__PURE__ */ jsxRuntime.jsx(Provider2, { value: client, children });
45
36
 
46
37
  exports.ApiClientProvider = ApiClientProvider;
47
- exports.DevApiClientProvider = DevApiClientProvider;
48
38
  exports.useApiClient = useApiClient;
49
- exports.useDevApiClient = useDevApiClient;
50
39
  exports.useProject = useProject;
51
40
  exports.useStack = useStack;
52
41
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/context.ts","../src/ApiClientProvider.tsx","../src/devContext.ts","../src/DevApiClientProvider.tsx"],"names":["createContext","use","useState","useEffect","jsx","Context","Provider"],"mappings":";;;;;;AAIA,IAAM,wBAAA,GAA2B,wDAAA;AACjC,IAAM,qBAAA,GAAwB,sDAAA;AAC9B,IAAM,mBAAA,GAAsB,oDAAA;AAE5B,IAAM,OAAA,GAAUA,oBAAgC,IAAI,CAAA;AAE7C,IAAM,QAAA,GAAW,OAAA;AAEjB,IAAM,eAAe,MAAM;AAChC,EAAA,MAAM,MAAA,GAASC,UAAI,OAAO,CAAA;AAC1B,EAAA,IAAI,MAAA,KAAW,IAAA,EAAM,MAAM,IAAI,MAAM,wBAAwB,CAAA;AAC7D,EAAA,OAAO,MAAA;AACT;AAEO,IAAM,aAAa,MAAM;AAC9B,EAAA,MAAM,MAAA,GAASA,UAAI,OAAO,CAAA;AAC1B,EAAA,IAAI,MAAA,KAAW,IAAA,EAAM,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAC1D,EAAA,OAAO,OAAO,OAAA,CAAQ,OAAA;AACxB;AAEO,IAAM,WAAW,MAAM;AAC5B,EAAA,MAAM,MAAA,GAASA,UAAI,OAAO,CAAA;AAC1B,EAAA,IAAI,MAAA,KAAW,IAAA,EAAM,MAAM,IAAI,MAAM,mBAAmB,CAAA;AACxD,EAAA,OAAO,OAAO,OAAA,CAAQ,KAAA;AACxB;ACfO,IAAM,iBAAA,GAAoB,CAAC,EAAE,MAAA,EAAQ,UAAU,QAAA,GAAW,IAAA,EAAM,GAAG,IAAA,EAAK,KAAa;AAC1F,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAIC,eAAkB,IAAI,CAAA;AAElE,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,CAAE,OAAA,CAAQ,MAAM;AAC9B,MAAA,iBAAA,CAAkB,KAAK,CAAA;AAAA,IACzB,CAAC,CAAA;AAAA,EAGH,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,OAAO,iBAAiB,QAAA,mBAAWC,cAAA,CAAC,QAAA,EAAA,EAAS,KAAA,EAAO,QAAS,QAAA,EAAS,CAAA;AACxE;ACrBA,IAAM,0BAAA,GAA6B,8DAAA;AAEnC,IAAMC,QAAAA,GAAUL,oBAA4D,IAAI,CAAA;AAEzE,IAAMM,SAAAA,GAAWD,QAAAA;AAEjB,IAAM,kBAAkB,MAAM;AACnC,EAAA,MAAM,YAAA,GAAeJ,UAAII,QAAO,CAAA;AAChC,EAAA,IAAI,YAAA,KAAiB,IAAA,EAAM,MAAM,IAAI,MAAM,0BAA0B,CAAA;AACrE,EAAA,OAAO,YAAA;AACT;ACDO,IAAM,oBAAA,GAAuB,CAAC,EAAE,MAAA,EAAQ,QAAA,EAAS,qBACtDD,cAAAA,CAACE,SAAAA,EAAA,EAAS,KAAA,EAAO,MAAA,EAAS,QAAA,EAAS","file":"index.cjs","sourcesContent":["import { createContext, use } from 'react';\n\nimport type { ApiClient } from '@keboola/api-client';\n\nconst MISSING_API_CLIENT_ERROR = 'useApiClient must be used within <ApiClientProvider />';\nconst MISSING_PROJECT_ERROR = 'useProject must be used within <ApiClientProvider />';\nconst MISSING_STACK_ERROR = 'useStack must be used within <ApiClientProvider />';\n\nconst Context = createContext<ApiClient | null>(null);\n\nexport const Provider = Context;\n\nexport const useApiClient = () => {\n const client = use(Context);\n if (client === null) throw new Error(MISSING_API_CLIENT_ERROR);\n return client;\n};\n\nexport const useProject = () => {\n const client = use(Context);\n if (client === null) throw new Error(MISSING_PROJECT_ERROR);\n return client.context.project;\n};\n\nexport const useStack = () => {\n const client = use(Context);\n if (client === null) throw new Error(MISSING_STACK_ERROR);\n return client.context.stack;\n};\n","import { useEffect, useState } from 'react';\nimport type { ReactNode } from 'react';\n\nimport type { ApiClient, ApiClientOptions } from '@keboola/api-client';\n\nimport { Provider } from './context';\n\ntype Props = {\n client: ApiClient;\n children: ReactNode;\n fallback?: ReactNode;\n} & ApiClientOptions;\n\nexport const ApiClientProvider = ({ client, children, fallback = null, ...rest }: Props) => {\n const [isInitializing, setIsInitializing] = useState<boolean>(true);\n\n useEffect(() => {\n client.init(rest).finally(() => {\n setIsInitializing(false);\n });\n // we want to init only on initial mount\n // oxlint-disable-next-line react/exhaustive-deps\n }, []);\n\n return isInitializing ? fallback : <Provider value={client}>{children}</Provider>;\n};\n","import { createContext, use } from 'react';\n\nimport type { createDevApiClient } from '@keboola/api-client';\n\nconst MISSING_DEV_PROVIDER_ERROR = 'useDevApiClient must be used within <DevApiClientProvider />';\n\nconst Context = createContext<ReturnType<typeof createDevApiClient> | null>(null);\n\nexport const Provider = Context;\n\nexport const useDevApiClient = () => {\n const devApiClient = use(Context);\n if (devApiClient === null) throw new Error(MISSING_DEV_PROVIDER_ERROR);\n return devApiClient;\n};\n","import type { ReactNode } from 'react';\n\nimport type { createDevApiClient } from '@keboola/api-client';\n\nimport { Provider } from './devContext';\n\ntype DevClient = ReturnType<typeof createDevApiClient>;\n\ntype Props = {\n client: DevClient;\n children: ReactNode;\n};\n\nexport const DevApiClientProvider = ({ client, children }: Props) => (\n <Provider value={client}>{children}</Provider>\n);\n"]}
1
+ {"version":3,"sources":["../src/context.ts","../src/ApiClientProvider.tsx"],"names":["createContext","use","useState","useEffect","jsx"],"mappings":";;;;;;AAIA,IAAM,wBAAA,GAA2B,wDAAA;AACjC,IAAM,qBAAA,GAAwB,sDAAA;AAC9B,IAAM,mBAAA,GAAsB,oDAAA;AAE5B,IAAM,OAAA,GAAUA,oBAAgC,IAAI,CAAA;AAE7C,IAAM,QAAA,GAAW,OAAA;AAEjB,IAAM,eAAe,MAAM;AAChC,EAAA,MAAM,MAAA,GAASC,UAAI,OAAO,CAAA;AAC1B,EAAA,IAAI,MAAA,KAAW,IAAA,EAAM,MAAM,IAAI,MAAM,wBAAwB,CAAA;AAC7D,EAAA,OAAO,MAAA;AACT;AAEO,IAAM,aAAa,MAAM;AAC9B,EAAA,MAAM,MAAA,GAASA,UAAI,OAAO,CAAA;AAC1B,EAAA,IAAI,MAAA,KAAW,IAAA,EAAM,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAC1D,EAAA,OAAO,OAAO,OAAA,CAAQ,OAAA;AACxB;AAEO,IAAM,WAAW,MAAM;AAC5B,EAAA,MAAM,MAAA,GAASA,UAAI,OAAO,CAAA;AAC1B,EAAA,IAAI,MAAA,KAAW,IAAA,EAAM,MAAM,IAAI,MAAM,mBAAmB,CAAA;AACxD,EAAA,OAAO,OAAO,OAAA,CAAQ,KAAA;AACxB;ACfO,IAAM,iBAAA,GAAoB,CAAC,EAAE,MAAA,EAAQ,UAAU,QAAA,GAAW,IAAA,EAAM,GAAG,IAAA,EAAK,KAAa;AAC1F,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAIC,eAAkB,IAAI,CAAA;AAElE,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,CAAE,OAAA,CAAQ,MAAM;AAC9B,MAAA,iBAAA,CAAkB,KAAK,CAAA;AAAA,IACzB,CAAC,CAAA;AAAA,EAGH,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,OAAO,iBAAiB,QAAA,mBAAWC,cAAA,CAAC,QAAA,EAAA,EAAS,KAAA,EAAO,QAAS,QAAA,EAAS,CAAA;AACxE","file":"index.cjs","sourcesContent":["import { createContext, use } from 'react';\n\nimport type { ApiClient } from '@keboola/api-client';\n\nconst MISSING_API_CLIENT_ERROR = 'useApiClient must be used within <ApiClientProvider />';\nconst MISSING_PROJECT_ERROR = 'useProject must be used within <ApiClientProvider />';\nconst MISSING_STACK_ERROR = 'useStack must be used within <ApiClientProvider />';\n\nconst Context = createContext<ApiClient | null>(null);\n\nexport const Provider = Context;\n\nexport const useApiClient = () => {\n const client = use(Context);\n if (client === null) throw new Error(MISSING_API_CLIENT_ERROR);\n return client;\n};\n\nexport const useProject = () => {\n const client = use(Context);\n if (client === null) throw new Error(MISSING_PROJECT_ERROR);\n return client.context.project;\n};\n\nexport const useStack = () => {\n const client = use(Context);\n if (client === null) throw new Error(MISSING_STACK_ERROR);\n return client.context.stack;\n};\n","import { useEffect, useState } from 'react';\nimport type { ReactNode } from 'react';\n\nimport type { ApiClient, ApiClientOptions } from '@keboola/api-client';\n\nimport { Provider } from './context';\n\ntype Props = {\n client: ApiClient;\n children: ReactNode;\n fallback?: ReactNode;\n} & ApiClientOptions;\n\nexport const ApiClientProvider = ({ client, children, fallback = null, ...rest }: Props) => {\n const [isInitializing, setIsInitializing] = useState<boolean>(true);\n\n useEffect(() => {\n client.init(rest).finally(() => {\n setIsInitializing(false);\n });\n // we want to init only on initial mount\n // oxlint-disable-next-line react/exhaustive-deps\n }, []);\n\n return isInitializing ? fallback : <Provider value={client}>{children}</Provider>;\n};\n"]}
package/dist/index.d.cts CHANGED
@@ -1,9 +1,8 @@
1
1
  import * as _keboola_api_client_storage_types from '@keboola/api-client/storage/types';
2
- import { ApiClient, ApiClientOptions, createDevApiClient } from '@keboola/api-client';
2
+ import { ApiClient, ApiClientOptions } from '@keboola/api-client';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import * as react from 'react';
5
5
  import { ReactNode } from 'react';
6
- import * as _keboola_api_client_verify_types from '@keboola/api-client/verify/types';
7
6
 
8
7
  declare const useApiClient: () => ApiClient;
9
8
  declare const useProject: () => {
@@ -32,25 +31,11 @@ declare const useStack: () => {
32
31
  version: string;
33
32
  };
34
33
 
35
- type Props$1 = {
34
+ type Props = {
36
35
  client: ApiClient;
37
36
  children: ReactNode;
38
37
  fallback?: ReactNode;
39
38
  } & ApiClientOptions;
40
- declare const ApiClientProvider: ({ client, children, fallback, ...rest }: Props$1) => string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | react_jsx_runtime.JSX.Element | null;
41
-
42
- type DevClient = ReturnType<typeof createDevApiClient>;
43
- type Props = {
44
- client: DevClient;
45
- children: ReactNode;
46
- };
47
- declare const DevApiClientProvider: ({ client, children }: Props) => react_jsx_runtime.JSX.Element;
48
-
49
- declare const useDevApiClient: () => {
50
- verify: {
51
- storageApiToken: (host: string, token: string, signal?: AbortSignal) => Promise<_keboola_api_client_storage_types.StorageToken>;
52
- managementApiToken: (host: string, token: string, signal?: AbortSignal) => Promise<_keboola_api_client_verify_types.ManagementToken>;
53
- };
54
- };
39
+ declare const ApiClientProvider: ({ client, children, fallback, ...rest }: Props) => string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | react_jsx_runtime.JSX.Element | null;
55
40
 
56
- export { ApiClientProvider, DevApiClientProvider, useApiClient, useDevApiClient, useProject, useStack };
41
+ export { ApiClientProvider, useApiClient, useProject, useStack };
package/dist/index.d.ts CHANGED
@@ -1,9 +1,8 @@
1
1
  import * as _keboola_api_client_storage_types from '@keboola/api-client/storage/types';
2
- import { ApiClient, ApiClientOptions, createDevApiClient } from '@keboola/api-client';
2
+ import { ApiClient, ApiClientOptions } from '@keboola/api-client';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import * as react from 'react';
5
5
  import { ReactNode } from 'react';
6
- import * as _keboola_api_client_verify_types from '@keboola/api-client/verify/types';
7
6
 
8
7
  declare const useApiClient: () => ApiClient;
9
8
  declare const useProject: () => {
@@ -32,25 +31,11 @@ declare const useStack: () => {
32
31
  version: string;
33
32
  };
34
33
 
35
- type Props$1 = {
34
+ type Props = {
36
35
  client: ApiClient;
37
36
  children: ReactNode;
38
37
  fallback?: ReactNode;
39
38
  } & ApiClientOptions;
40
- declare const ApiClientProvider: ({ client, children, fallback, ...rest }: Props$1) => string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | react_jsx_runtime.JSX.Element | null;
41
-
42
- type DevClient = ReturnType<typeof createDevApiClient>;
43
- type Props = {
44
- client: DevClient;
45
- children: ReactNode;
46
- };
47
- declare const DevApiClientProvider: ({ client, children }: Props) => react_jsx_runtime.JSX.Element;
48
-
49
- declare const useDevApiClient: () => {
50
- verify: {
51
- storageApiToken: (host: string, token: string, signal?: AbortSignal) => Promise<_keboola_api_client_storage_types.StorageToken>;
52
- managementApiToken: (host: string, token: string, signal?: AbortSignal) => Promise<_keboola_api_client_verify_types.ManagementToken>;
53
- };
54
- };
39
+ declare const ApiClientProvider: ({ client, children, fallback, ...rest }: Props) => string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | react_jsx_runtime.JSX.Element | null;
55
40
 
56
- export { ApiClientProvider, DevApiClientProvider, useApiClient, useDevApiClient, useProject, useStack };
41
+ export { ApiClientProvider, useApiClient, useProject, useStack };
package/dist/index.js CHANGED
@@ -31,16 +31,7 @@ var ApiClientProvider = ({ client, children, fallback = null, ...rest }) => {
31
31
  }, []);
32
32
  return isInitializing ? fallback : /* @__PURE__ */ jsx(Provider, { value: client, children });
33
33
  };
34
- var MISSING_DEV_PROVIDER_ERROR = "useDevApiClient must be used within <DevApiClientProvider />";
35
- var Context2 = createContext(null);
36
- var Provider2 = Context2;
37
- var useDevApiClient = () => {
38
- const devApiClient = use(Context2);
39
- if (devApiClient === null) throw new Error(MISSING_DEV_PROVIDER_ERROR);
40
- return devApiClient;
41
- };
42
- var DevApiClientProvider = ({ client, children }) => /* @__PURE__ */ jsx(Provider2, { value: client, children });
43
34
 
44
- export { ApiClientProvider, DevApiClientProvider, useApiClient, useDevApiClient, useProject, useStack };
35
+ export { ApiClientProvider, useApiClient, useProject, useStack };
45
36
  //# sourceMappingURL=index.js.map
46
37
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/context.ts","../src/ApiClientProvider.tsx","../src/devContext.ts","../src/DevApiClientProvider.tsx"],"names":["Context","createContext","Provider","use","jsx"],"mappings":";;;;AAIA,IAAM,wBAAA,GAA2B,wDAAA;AACjC,IAAM,qBAAA,GAAwB,sDAAA;AAC9B,IAAM,mBAAA,GAAsB,oDAAA;AAE5B,IAAM,OAAA,GAAU,cAAgC,IAAI,CAAA;AAE7C,IAAM,QAAA,GAAW,OAAA;AAEjB,IAAM,eAAe,MAAM;AAChC,EAAA,MAAM,MAAA,GAAS,IAAI,OAAO,CAAA;AAC1B,EAAA,IAAI,MAAA,KAAW,IAAA,EAAM,MAAM,IAAI,MAAM,wBAAwB,CAAA;AAC7D,EAAA,OAAO,MAAA;AACT;AAEO,IAAM,aAAa,MAAM;AAC9B,EAAA,MAAM,MAAA,GAAS,IAAI,OAAO,CAAA;AAC1B,EAAA,IAAI,MAAA,KAAW,IAAA,EAAM,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAC1D,EAAA,OAAO,OAAO,OAAA,CAAQ,OAAA;AACxB;AAEO,IAAM,WAAW,MAAM;AAC5B,EAAA,MAAM,MAAA,GAAS,IAAI,OAAO,CAAA;AAC1B,EAAA,IAAI,MAAA,KAAW,IAAA,EAAM,MAAM,IAAI,MAAM,mBAAmB,CAAA;AACxD,EAAA,OAAO,OAAO,OAAA,CAAQ,KAAA;AACxB;ACfO,IAAM,iBAAA,GAAoB,CAAC,EAAE,MAAA,EAAQ,UAAU,QAAA,GAAW,IAAA,EAAM,GAAG,IAAA,EAAK,KAAa;AAC1F,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAI,SAAkB,IAAI,CAAA;AAElE,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,CAAE,OAAA,CAAQ,MAAM;AAC9B,MAAA,iBAAA,CAAkB,KAAK,CAAA;AAAA,IACzB,CAAC,CAAA;AAAA,EAGH,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,OAAO,iBAAiB,QAAA,mBAAW,GAAA,CAAC,QAAA,EAAA,EAAS,KAAA,EAAO,QAAS,QAAA,EAAS,CAAA;AACxE;ACrBA,IAAM,0BAAA,GAA6B,8DAAA;AAEnC,IAAMA,QAAAA,GAAUC,cAA4D,IAAI,CAAA;AAEzE,IAAMC,SAAAA,GAAWF,QAAAA;AAEjB,IAAM,kBAAkB,MAAM;AACnC,EAAA,MAAM,YAAA,GAAeG,IAAIH,QAAO,CAAA;AAChC,EAAA,IAAI,YAAA,KAAiB,IAAA,EAAM,MAAM,IAAI,MAAM,0BAA0B,CAAA;AACrE,EAAA,OAAO,YAAA;AACT;ACDO,IAAM,oBAAA,GAAuB,CAAC,EAAE,MAAA,EAAQ,QAAA,EAAS,qBACtDI,GAAAA,CAACF,SAAAA,EAAA,EAAS,KAAA,EAAO,MAAA,EAAS,QAAA,EAAS","file":"index.js","sourcesContent":["import { createContext, use } from 'react';\n\nimport type { ApiClient } from '@keboola/api-client';\n\nconst MISSING_API_CLIENT_ERROR = 'useApiClient must be used within <ApiClientProvider />';\nconst MISSING_PROJECT_ERROR = 'useProject must be used within <ApiClientProvider />';\nconst MISSING_STACK_ERROR = 'useStack must be used within <ApiClientProvider />';\n\nconst Context = createContext<ApiClient | null>(null);\n\nexport const Provider = Context;\n\nexport const useApiClient = () => {\n const client = use(Context);\n if (client === null) throw new Error(MISSING_API_CLIENT_ERROR);\n return client;\n};\n\nexport const useProject = () => {\n const client = use(Context);\n if (client === null) throw new Error(MISSING_PROJECT_ERROR);\n return client.context.project;\n};\n\nexport const useStack = () => {\n const client = use(Context);\n if (client === null) throw new Error(MISSING_STACK_ERROR);\n return client.context.stack;\n};\n","import { useEffect, useState } from 'react';\nimport type { ReactNode } from 'react';\n\nimport type { ApiClient, ApiClientOptions } from '@keboola/api-client';\n\nimport { Provider } from './context';\n\ntype Props = {\n client: ApiClient;\n children: ReactNode;\n fallback?: ReactNode;\n} & ApiClientOptions;\n\nexport const ApiClientProvider = ({ client, children, fallback = null, ...rest }: Props) => {\n const [isInitializing, setIsInitializing] = useState<boolean>(true);\n\n useEffect(() => {\n client.init(rest).finally(() => {\n setIsInitializing(false);\n });\n // we want to init only on initial mount\n // oxlint-disable-next-line react/exhaustive-deps\n }, []);\n\n return isInitializing ? fallback : <Provider value={client}>{children}</Provider>;\n};\n","import { createContext, use } from 'react';\n\nimport type { createDevApiClient } from '@keboola/api-client';\n\nconst MISSING_DEV_PROVIDER_ERROR = 'useDevApiClient must be used within <DevApiClientProvider />';\n\nconst Context = createContext<ReturnType<typeof createDevApiClient> | null>(null);\n\nexport const Provider = Context;\n\nexport const useDevApiClient = () => {\n const devApiClient = use(Context);\n if (devApiClient === null) throw new Error(MISSING_DEV_PROVIDER_ERROR);\n return devApiClient;\n};\n","import type { ReactNode } from 'react';\n\nimport type { createDevApiClient } from '@keboola/api-client';\n\nimport { Provider } from './devContext';\n\ntype DevClient = ReturnType<typeof createDevApiClient>;\n\ntype Props = {\n client: DevClient;\n children: ReactNode;\n};\n\nexport const DevApiClientProvider = ({ client, children }: Props) => (\n <Provider value={client}>{children}</Provider>\n);\n"]}
1
+ {"version":3,"sources":["../src/context.ts","../src/ApiClientProvider.tsx"],"names":[],"mappings":";;;;AAIA,IAAM,wBAAA,GAA2B,wDAAA;AACjC,IAAM,qBAAA,GAAwB,sDAAA;AAC9B,IAAM,mBAAA,GAAsB,oDAAA;AAE5B,IAAM,OAAA,GAAU,cAAgC,IAAI,CAAA;AAE7C,IAAM,QAAA,GAAW,OAAA;AAEjB,IAAM,eAAe,MAAM;AAChC,EAAA,MAAM,MAAA,GAAS,IAAI,OAAO,CAAA;AAC1B,EAAA,IAAI,MAAA,KAAW,IAAA,EAAM,MAAM,IAAI,MAAM,wBAAwB,CAAA;AAC7D,EAAA,OAAO,MAAA;AACT;AAEO,IAAM,aAAa,MAAM;AAC9B,EAAA,MAAM,MAAA,GAAS,IAAI,OAAO,CAAA;AAC1B,EAAA,IAAI,MAAA,KAAW,IAAA,EAAM,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAC1D,EAAA,OAAO,OAAO,OAAA,CAAQ,OAAA;AACxB;AAEO,IAAM,WAAW,MAAM;AAC5B,EAAA,MAAM,MAAA,GAAS,IAAI,OAAO,CAAA;AAC1B,EAAA,IAAI,MAAA,KAAW,IAAA,EAAM,MAAM,IAAI,MAAM,mBAAmB,CAAA;AACxD,EAAA,OAAO,OAAO,OAAA,CAAQ,KAAA;AACxB;ACfO,IAAM,iBAAA,GAAoB,CAAC,EAAE,MAAA,EAAQ,UAAU,QAAA,GAAW,IAAA,EAAM,GAAG,IAAA,EAAK,KAAa;AAC1F,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAI,SAAkB,IAAI,CAAA;AAElE,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,CAAE,OAAA,CAAQ,MAAM;AAC9B,MAAA,iBAAA,CAAkB,KAAK,CAAA;AAAA,IACzB,CAAC,CAAA;AAAA,EAGH,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,OAAO,iBAAiB,QAAA,mBAAW,GAAA,CAAC,QAAA,EAAA,EAAS,KAAA,EAAO,QAAS,QAAA,EAAS,CAAA;AACxE","file":"index.js","sourcesContent":["import { createContext, use } from 'react';\n\nimport type { ApiClient } from '@keboola/api-client';\n\nconst MISSING_API_CLIENT_ERROR = 'useApiClient must be used within <ApiClientProvider />';\nconst MISSING_PROJECT_ERROR = 'useProject must be used within <ApiClientProvider />';\nconst MISSING_STACK_ERROR = 'useStack must be used within <ApiClientProvider />';\n\nconst Context = createContext<ApiClient | null>(null);\n\nexport const Provider = Context;\n\nexport const useApiClient = () => {\n const client = use(Context);\n if (client === null) throw new Error(MISSING_API_CLIENT_ERROR);\n return client;\n};\n\nexport const useProject = () => {\n const client = use(Context);\n if (client === null) throw new Error(MISSING_PROJECT_ERROR);\n return client.context.project;\n};\n\nexport const useStack = () => {\n const client = use(Context);\n if (client === null) throw new Error(MISSING_STACK_ERROR);\n return client.context.stack;\n};\n","import { useEffect, useState } from 'react';\nimport type { ReactNode } from 'react';\n\nimport type { ApiClient, ApiClientOptions } from '@keboola/api-client';\n\nimport { Provider } from './context';\n\ntype Props = {\n client: ApiClient;\n children: ReactNode;\n fallback?: ReactNode;\n} & ApiClientOptions;\n\nexport const ApiClientProvider = ({ client, children, fallback = null, ...rest }: Props) => {\n const [isInitializing, setIsInitializing] = useState<boolean>(true);\n\n useEffect(() => {\n client.init(rest).finally(() => {\n setIsInitializing(false);\n });\n // we want to init only on initial mount\n // oxlint-disable-next-line react/exhaustive-deps\n }, []);\n\n return isInitializing ? fallback : <Provider value={client}>{children}</Provider>;\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keboola/api-client-react",
3
- "version": "15.0.0",
3
+ "version": "16.0.0",
4
4
  "description": "React bindings for @keboola/api-client",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -49,7 +49,7 @@
49
49
  },
50
50
  "peerDependencies": {
51
51
  "react": "^19.0.0",
52
- "@keboola/api-client": "^15.0.0"
52
+ "@keboola/api-client": "^16.0.0"
53
53
  },
54
54
  "devDependencies": {
55
55
  "@arethetypeswrong/cli": "^0.18.2",
@@ -59,6 +59,7 @@
59
59
  "@types/node": "24.12.0",
60
60
  "@types/react": "^19.2.15",
61
61
  "@types/react-dom": "^19.2.3",
62
+ "@typescript/native": "npm:typescript@^7.0.2",
62
63
  "@vitejs/plugin-react": "^6.0.0",
63
64
  "esbuild": "^0.28.1",
64
65
  "jsdom": "^26.1.0",
@@ -67,12 +68,12 @@
67
68
  "oxlint": "^1.72.0",
68
69
  "react-dom": "^19.2.7",
69
70
  "tsup": "^8.5.1",
70
- "typescript": "^6.0.3",
71
+ "typescript": "npm:@typescript/typescript6@^6.0.2",
71
72
  "vite": "^8.0.16",
72
73
  "vitest": "^4.1.8",
73
- "@keboola/api-client": "^15.0.0",
74
- "@keboola/oxlint-config": "^4.0.0",
75
- "@keboola/tsconfig": "^0.1.2"
74
+ "@keboola/api-client": "^16.0.0",
75
+ "@keboola/oxlint-config": "^5.0.0",
76
+ "@keboola/tsconfig": "^0.2.0"
76
77
  },
77
78
  "scripts": {
78
79
  "type-check": "tsc",