Skip to content

Commit ca06f9a

Browse files
authored
Merge pull request #1 from haines/feat/init-react-sdk
Tweaks
2 parents ab8ec9b + ff0b9cc commit ca06f9a

13 files changed

+124
-242
lines changed

docs/react.asyncresult.data.md

-11
This file was deleted.

docs/react.asyncresult.error.md

-11
This file was deleted.

docs/react.asyncresult.isloading.md

-11
This file was deleted.

docs/react.asyncresult.md

+14-78
Original file line numberDiff line numberDiff line change
@@ -2,87 +2,23 @@
22

33
[Home](./index.md) > [@cerbos/react](./react.md) > [AsyncResult](./react.asyncresult.md)
44

5-
## AsyncResult interface
5+
## AsyncResult type
66

77

88
**Signature:**
99

1010
```typescript
11-
export interface AsyncResult<T>
11+
export type AsyncResult<T> = {
12+
isLoading: true;
13+
data: undefined;
14+
error: undefined;
15+
} | {
16+
isLoading: false;
17+
data: T;
18+
error: undefined;
19+
} | {
20+
isLoading: false;
21+
data: undefined;
22+
error: Error;
23+
};
1224
```
13-
14-
## Properties
15-
16-
<table><thead><tr><th>
17-
18-
Property
19-
20-
21-
</th><th>
22-
23-
Modifiers
24-
25-
26-
</th><th>
27-
28-
Type
29-
30-
31-
</th><th>
32-
33-
Description
34-
35-
36-
</th></tr></thead>
37-
<tbody><tr><td>
38-
39-
[data](./react.asyncresult.data.md)
40-
41-
42-
</td><td>
43-
44-
45-
</td><td>
46-
47-
T \| undefined
48-
49-
50-
</td><td>
51-
52-
53-
</td></tr>
54-
<tr><td>
55-
56-
[error](./react.asyncresult.error.md)
57-
58-
59-
</td><td>
60-
61-
62-
</td><td>
63-
64-
Error \| undefined
65-
66-
67-
</td><td>
68-
69-
70-
</td></tr>
71-
<tr><td>
72-
73-
[isLoading](./react.asyncresult.isloading.md)
74-
75-
76-
</td><td>
77-
78-
79-
</td><td>
80-
81-
boolean
82-
83-
84-
</td><td>
85-
86-
87-
</td></tr>
88-
</tbody></table>

docs/react.md

+18-3
Original file line numberDiff line numberDiff line change
@@ -89,17 +89,32 @@ Description
8989
</th></tr></thead>
9090
<tbody><tr><td>
9191

92-
[AsyncResult](./react.asyncresult.md)
92+
[CerbosProviderProps](./react.cerbosproviderprops.md)
9393

9494

9595
</td><td>
9696

9797

9898

9999
</td></tr>
100-
<tr><td>
100+
</tbody></table>
101101

102-
[CerbosProviderProps](./react.cerbosproviderprops.md)
102+
## Type Aliases
103+
104+
<table><thead><tr><th>
105+
106+
Type Alias
107+
108+
109+
</th><th>
110+
111+
Description
112+
113+
114+
</th></tr></thead>
115+
<tbody><tr><td>
116+
117+
[AsyncResult](./react.asyncresult.md)
103118

104119

105120
</td><td>

packages/react/.eslintrc.yaml

-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,2 @@
1-
plugins:
2-
- react-hooks
3-
41
extends:
52
- plugin:react-hooks/recommended

packages/react/package.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -46,15 +46,15 @@
4646
"React"
4747
],
4848
"peerDependencies": {
49-
"react": ">=16.8.0"
49+
"react": ">=16.13.0"
5050
},
5151
"dependencies": {
52-
"@cerbos/core": "^0.16.0"
52+
"@cerbos/core": "^0.16.0",
53+
"use-deep-compare-effect": "^1.8.1"
5354
},
5455
"devDependencies": {
5556
"@types/react": "18.2.67",
56-
"eslint-plugin-react-hooks": "4.6.0",
57-
"react": "18.2.0"
57+
"eslint-plugin-react-hooks": "4.6.0"
5858
},
5959
"publishConfig": {
6060
"access": "public",

packages/react/src/cerbos-provider.tsx

+6-2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import type {
66
} from "@cerbos/core";
77
import type { ReactElement, ReactNode } from "react";
88
import { createContext, useMemo } from "react";
9+
import { useDeepCompareMemoize } from "use-deep-compare-effect";
910

1011
export const CerbosContext = createContext<ClientWithPrincipal | undefined>(
1112
undefined,
@@ -63,9 +64,12 @@ export function CerbosProvider({
6364
principal,
6465
auxData,
6566
}: CerbosProviderProps): ReactElement {
67+
const principalMemo = useDeepCompareMemoize(principal);
68+
const auxDataMemo = useDeepCompareMemoize(auxData);
69+
6670
const value = useMemo(
67-
() => client.withPrincipal(principal, auxData),
68-
[auxData, client, principal],
71+
() => client.withPrincipal(principalMemo, auxDataMemo),
72+
[client, principalMemo, auxDataMemo],
6973
);
7074

7175
return (

packages/react/src/index.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
export { CerbosProvider } from "./cerbos-provider";
2-
export type { CerbosProviderProps } from "./cerbos-provider";
1+
export { type CerbosProviderProps, CerbosProvider } from "./cerbos-provider";
32
export { useCerbos } from "./use-cerbos";
43
export {
4+
type AsyncResult,
55
useCheckResource,
66
useCheckResources,
77
useIsAllowed,
88
} from "./use-cerbos-request";
9-
export type { AsyncResult } from "./use-cerbos-request";

packages/react/src/is-equal.ts

-40
This file was deleted.

0 commit comments

Comments
 (0)