@medha-analytics/medha-one-access-react 1.0.1 → 1.0.4

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
@@ -1,133 +1,132 @@
1
- # @medha-analytics/medha-one-access-react
2
-
3
- ACL admin dashboard React library — drop-in Users / Groups / Artifacts / Access Rules / Hierarchy management UI, backed by the Medha One Access API.
4
-
5
- For instructions on building and distributing this package itself (local link, GitHub, or npm), see [PUBLISHING.md](./PUBLISHING.md).
6
-
7
- ## Installation
8
-
9
- ```bash
10
- npm install @medha-analytics/medha-one-access-react
11
- ```
12
-
13
- ### Peer dependencies
14
-
15
- The host app must provide these (they are not bundled):
16
-
17
- ```bash
18
- npm install react react-dom @tanstack/react-query
19
- ```
20
-
21
- ## Quick start
22
-
23
- Wrap your app (or the relevant section of it) in `MedhaOneAccessProvider`, then render `MedhaOneAccess`:
24
-
25
- ```tsx
26
- import { MedhaOneAccessProvider, MedhaOneAccess } from '@medha-analytics/medha-one-access-react'
27
- import '@medha-analytics/medha-one-access-react/dist/medha-one-access-react.css'
28
-
29
- function App() {
30
- return (
31
- <MedhaOneAccessProvider
32
- apiUrl="https://your-medha-api.example.com"
33
- secretKey="your-secret-key"
34
- currentApplication="your-app-id"
35
- >
36
- <MedhaOneAccess />
37
- </MedhaOneAccessProvider>
38
- )
39
- }
40
-
41
- export default App
42
- ```
43
-
44
- > The CSS import is required — styles are emitted as a separate file (`dist/medha-one-access-react.css`) and are not auto-injected.
45
-
46
- ### Provider config (`MedhaOneAccessConfig`)
47
-
48
- | Prop | Type | Required | Description |
49
- |---|---|---|---|
50
- | `apiUrl` | `string` | yes | Base URL of the Medha One Access API |
51
- | `secretKey` | `string` | yes | Shared secret used to sign requests (see `generateToken`) |
52
- | `currentApplication` | `string` | yes | Application identifier scoping access rules/artifacts |
53
- | `isAdmin` | `boolean` | no | Enables admin-only actions in the UI |
54
- | `debugMode` | `boolean` | no | Verbose request/response logging |
55
- | `queryClient` | `QueryClient` | no | Supply your own TanStack Query client instead of the library's internal one (e.g. to share a cache with the host app) |
56
-
57
- ## Using individual pieces
58
-
59
- You don't have to render the full `MedhaOneAccess` shell — every view, dialog, and hook is exported individually so you can compose your own layout.
60
-
61
- ### Views
62
-
63
- ```tsx
64
- import {
65
- MedhaOneAccessProvider,
66
- UsersView,
67
- GroupsView,
68
- ArtifactsView,
69
- AccessRulesView,
70
- HierarchyView,
71
- } from '@medha-analytics/medha-one-access-react'
72
- ```
73
-
74
- ### Dialogs
75
-
76
- ```tsx
77
- import {
78
- UserDialog,
79
- GroupDialog,
80
- ArtifactDialog,
81
- AccessRuleDialog,
82
- } from '@medha-analytics/medha-one-access-react'
83
- ```
84
-
85
- ### Hooks
86
-
87
- ```tsx
88
- import {
89
- useUsers, useUser, useCreateUser, useUpdateUser, useDeleteUser,
90
- useGroups, useGroup, useGroupMembers, useAddGroupMember, useRemoveGroupMember,
91
- useArtifacts, useArtifact, useArtifactGroups, useArtifactGroupContents,
92
- useAccessRules, useAccessRule, useCheckAccess, useValidateExpression,
93
- useOrgChart, useUserHierarchy, useGroupHierarchy, useCombinedHierarchy,
94
- } from '@medha-analytics/medha-one-access-react'
95
- ```
96
-
97
- All data hooks must be called from inside a `MedhaOneAccessProvider` — they read the API URL and HTTP client from context via `useMedhaConfig` / `useMedhaHttp`.
98
-
99
- ### Shared UI primitives
100
-
101
- `Button`, `Badge`, `Input`, `Label`, `DataTable`, `ExpressionInput`, `ConfirmDialog`, `HierarchyTree`, and the `cn` class-name helper are also exported, in case you want to build custom screens that match the library's look and feel.
102
-
103
- ### Types
104
-
105
- ```ts
106
- import type {
107
- MedhaOneAccessConfig,
108
- User, UserGroup, GroupMember, HierarchyNode,
109
- Artifact, ArtifactGroup, ArtifactHierarchyNode, Permission,
110
- AccessRule, TimeConstraint, ExpressionValidationResult,
111
- } from '@medha-analytics/medha-one-access-react'
112
- ```
113
-
114
- ## Styling notes
115
-
116
- - The library ships with Tailwind-based styles pre-built into `dist/medha-one-access-react.css`. You don't need Tailwind configured in the host app.
117
- - If the host app also uses Tailwind, check for class-name collisions; the library's classes are scoped to its own components but share Tailwind's utility naming.
118
-
119
- ## Requirements
120
-
121
- - React 19+
122
- - A `QueryClientProvider` is created automatically unless you pass your own `queryClient` to `MedhaOneAccessProvider`.
123
-
124
- ## Troubleshooting
125
-
126
- **"useMedhaConfig must be used inside `<MedhaOneAccessProvider>`"**
127
- A hook or component from this library was rendered outside the provider. Make sure `MedhaOneAccessProvider` wraps any tree using these hooks/views.
128
-
129
- **Invalid hook call / two copies of React**
130
- Usually happens when consuming the library via `npm link` and the host app resolves its own `react` separately. See the "Local link" section in [PUBLISHING.md](./PUBLISHING.md) for the fix.
131
-
132
- **Styles look unstyled / broken layout**
133
- Confirm you imported `@medha-analytics/medha-one-access-react/dist/medha-one-access-react.css` in your app's entry point.
1
+ # @medha-analytics/medha-one-access-react
2
+
3
+ ACL admin dashboard React library — drop-in Users / Groups / Artifacts / Access Rules / Hierarchy management UI, backed by the Medha One Access API.
4
+
5
+ For instructions on building and distributing this package itself (local link, GitHub, or npm), see [PUBLISHING.md](./PUBLISHING.md).
6
+
7
+ ## Installation
8
+
9
+ ```bash
10
+ npm install @medha-analytics/medha-one-access-react
11
+ ```
12
+
13
+ ### Peer dependencies
14
+
15
+ The host app must provide these (they are not bundled):
16
+
17
+ ```bash
18
+ npm install react react-dom @tanstack/react-query
19
+ ```
20
+
21
+ ## Quick start
22
+
23
+ Wrap your app (or the relevant section of it) in `MedhaOneAccessProvider`, then render `MedhaOneAccess`:
24
+
25
+ ```tsx
26
+ import { MedhaOneAccessProvider, MedhaOneAccess } from '@medha-analytics/medha-one-access-react'
27
+
28
+ function App() {
29
+ return (
30
+ <MedhaOneAccessProvider
31
+ apiUrl="https://your-medha-api.example.com"
32
+ secretKey="your-secret-key"
33
+ currentApplication="your-app-id"
34
+ >
35
+ <MedhaOneAccess />
36
+ </MedhaOneAccessProvider>
37
+ )
38
+ }
39
+
40
+ export default App
41
+ ```
42
+
43
+ > Styles are auto-injected — importing anything from this package pulls in `dist/index.css` automatically, as long as your bundler processes CSS imports from `node_modules` (Vite, Next.js, and Create React App all do this by default). If your setup doesn't, import it explicitly: `import '@medha-analytics/medha-one-access-react/dist/index.css'`.
44
+
45
+ ### Provider config (`MedhaOneAccessConfig`)
46
+
47
+ | Prop | Type | Required | Description |
48
+ |---|---|---|---|
49
+ | `apiUrl` | `string` | yes | Base URL of the Medha One Access API |
50
+ | `secretKey` | `string` | yes | Shared secret used to sign requests (see `generateToken`) |
51
+ | `currentApplication` | `string` | yes | Application identifier scoping access rules/artifacts |
52
+ | `isAdmin` | `boolean` | no | Enables admin-only actions in the UI |
53
+ | `debugMode` | `boolean` | no | Verbose request/response logging |
54
+ | `queryClient` | `QueryClient` | no | Supply your own TanStack Query client instead of the library's internal one (e.g. to share a cache with the host app) |
55
+
56
+ ## Using individual pieces
57
+
58
+ You don't have to render the full `MedhaOneAccess` shell — every view, dialog, and hook is exported individually so you can compose your own layout.
59
+
60
+ ### Views
61
+
62
+ ```tsx
63
+ import {
64
+ MedhaOneAccessProvider,
65
+ UsersView,
66
+ GroupsView,
67
+ ArtifactsView,
68
+ AccessRulesView,
69
+ } from '@medha-analytics/medha-one-access-react'
70
+ ```
71
+
72
+ ### Dialogs
73
+
74
+ ```tsx
75
+ import {
76
+ UserDialog,
77
+ GroupDialog,
78
+ ArtifactDialog,
79
+ AccessRuleDialog,
80
+ } from '@medha-analytics/medha-one-access-react'
81
+ ```
82
+
83
+ ### Hooks
84
+
85
+ ```tsx
86
+ import {
87
+ useUsers, useUser, useCreateUser, useUpdateUser, useDeleteUser,
88
+ useGroups, useGroup, useGroupMembers, useAddGroupMember, useRemoveGroupMember,
89
+ useArtifacts, useArtifact, useArtifactGroups, useArtifactGroupContents,
90
+ useAccessRules, useAccessRule, useCheckAccess, useValidateExpression,
91
+ useOrgChart, useCombinedHierarchy, useArtifactCombinedHierarchy,
92
+ } from '@medha-analytics/medha-one-access-react'
93
+ ```
94
+
95
+ All data hooks must be called from inside a `MedhaOneAccessProvider` — they read the API URL and HTTP client from context via `useMedhaConfig` / `useMedhaHttp`.
96
+
97
+ ### Shared UI primitives
98
+
99
+ `Button`, `Badge`, `Input`, `Label`, `DataTable`, `ExpressionInput`, `ConfirmDialog`, `HierarchyTree`, and the `cn` class-name helper are also exported, in case you want to build custom screens that match the library's look and feel.
100
+
101
+ ### Types
102
+
103
+ ```ts
104
+ import type {
105
+ MedhaOneAccessConfig,
106
+ User, UserGroup, GroupMember, HierarchyNode,
107
+ Artifact, ArtifactGroup, ArtifactHierarchyNode, Permission,
108
+ AccessRule, TimeConstraint, ExpressionValidationResult,
109
+ } from '@medha-analytics/medha-one-access-react'
110
+ ```
111
+
112
+ ## Styling notes
113
+
114
+ - The library ships with Tailwind-based styles pre-built into `dist/index.css`, and the built JS auto-imports it (`import './index.css'` / `require('./index.css')` runs whenever you import anything from the package). You don't need Tailwind configured in the host app.
115
+ - If your bundler doesn't process CSS imports from `node_modules` (rare with modern tooling, but possible with some custom webpack/esbuild setups), import the stylesheet explicitly: `import '@medha-analytics/medha-one-access-react/dist/index.css'`.
116
+ - If the host app also uses Tailwind, check for class-name collisions; the library's classes are scoped to its own components but share Tailwind's utility naming.
117
+
118
+ ## Requirements
119
+
120
+ - React 19+
121
+ - A `QueryClientProvider` is created automatically unless you pass your own `queryClient` to `MedhaOneAccessProvider`.
122
+
123
+ ## Troubleshooting
124
+
125
+ **"useMedhaConfig must be used inside `<MedhaOneAccessProvider>`"**
126
+ A hook or component from this library was rendered outside the provider. Make sure `MedhaOneAccessProvider` wraps any tree using these hooks/views.
127
+
128
+ **Invalid hook call / two copies of React**
129
+ Usually happens when consuming the library via `npm link` and the host app resolves its own `react` separately. See the "Local link" section in [PUBLISHING.md](./PUBLISHING.md) for the fix.
130
+
131
+ **Styles look unstyled / broken layout**
132
+ Styles are auto-injected as of this version — if you previously added a manual `import '@medha-analytics/medha-one-access-react/dist/medha-one-access-react.css'`, remove it (that file no longer exists; it's now `dist/index.css`, imported automatically). If styles still don't appear, your bundler likely isn't processing CSS imports from `node_modules` — import `@medha-analytics/medha-one-access-react/dist/index.css` explicitly as a fallback.
@@ -1 +1 @@
1
- {"version":3,"file":"MedhaOneAccess.d.ts","sourceRoot":"","sources":["../src/MedhaOneAccess.tsx"],"names":[],"mappings":"AAmBA,wBAAgB,cAAc,gCAwC7B"}
1
+ {"version":3,"file":"MedhaOneAccess.d.ts","sourceRoot":"","sources":["../src/MedhaOneAccess.tsx"],"names":[],"mappings":"AAiBA,wBAAgB,cAAc,gCAyC7B"}
@@ -1 +1 @@
1
- {"version":3,"file":"ArtifactDialog.d.ts","sourceRoot":"","sources":["../../../src/components/dialogs/ArtifactDialog.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAA;AAahE,UAAU,mBAAmB;IAC3B,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,mBAAmB,+BAoG3G"}
1
+ {"version":3,"file":"ArtifactDialog.d.ts","sourceRoot":"","sources":["../../../src/components/dialogs/ArtifactDialog.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAA;AAahE,UAAU,mBAAmB;IAC3B,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,mBAAmB,+BAuR3G"}
@@ -1 +1 @@
1
- {"version":3,"file":"GroupDialog.d.ts","sourceRoot":"","sources":["../../../src/components/dialogs/GroupDialog.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAU7D,UAAU,gBAAgB;IACxB,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB;AAED,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,gBAAgB,+BAkErE"}
1
+ {"version":3,"file":"GroupDialog.d.ts","sourceRoot":"","sources":["../../../src/components/dialogs/GroupDialog.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAU7D,UAAU,gBAAgB;IACxB,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB;AAED,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,gBAAgB,+BAqHrE"}
@@ -1,4 +1,4 @@
1
- import type { User } from '../../core/models/user.types';
1
+ import type { User } from "../../core/models/user.types";
2
2
  interface UserDialogProps {
3
3
  open: boolean;
4
4
  onClose: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"UserDialog.d.ts","sourceRoot":"","sources":["../../../src/components/dialogs/UserDialog.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAA;AAaxD,UAAU,eAAe;IACvB,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,IAAI,CAAC,EAAE,IAAI,CAAA;CACZ;AAED,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,eAAe,+BA6FlE"}
1
+ {"version":3,"file":"UserDialog.d.ts","sourceRoot":"","sources":["../../../src/components/dialogs/UserDialog.tsx"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAiBzD,UAAU,eAAe;IACrB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,IAAI,CAAC,EAAE,IAAI,CAAC;CACf;AA0DD,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,eAAe,+BA2QlE"}
@@ -1 +1 @@
1
- {"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../../src/components/ui/dialog.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,UAAU,CAAA;AAMpD,iBAAS,MAAM,CAAC,EACd,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,qBAEnD;AAED,iBAAS,aAAa,CAAC,EACrB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,qBAEtD;AAED,iBAAS,YAAY,CAAC,EACpB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,MAAM,CAAC,qBAErD;AAED,iBAAS,WAAW,CAAC,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,qBAEpD;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,qBAWtD;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,QAAQ,EACR,eAAsB,EACtB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,GAAG;IACxD,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B,qBAgCA;AAED,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQzE;AAED,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,eAAuB,EACvB,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B,qBAkBA;AAED,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,qBAQpD;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,WAAW,CAAC,qBAW1D;AAED,OAAO,EACL,MAAM,EACN,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,WAAW,EACX,aAAa,GACd,CAAA"}
1
+ {"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../../src/components/ui/dialog.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,UAAU,CAAA;AAMpD,iBAAS,MAAM,CAAC,EACd,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,qBAEnD;AAED,iBAAS,aAAa,CAAC,EACrB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,qBAEtD;AAED,iBAAS,YAAY,CAAC,EACpB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,MAAM,CAAC,qBAErD;AAED,iBAAS,WAAW,CAAC,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,qBAEpD;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,qBAWtD;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,QAAQ,EACR,eAAsB,EACtB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,GAAG;IACxD,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B,qBAoCA;AAED,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQzE;AAED,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,eAAuB,EACvB,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B,qBAkBA;AAED,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,qBAQpD;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,WAAW,CAAC,qBAW1D;AAED,OAAO,EACL,MAAM,EACN,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,WAAW,EACX,aAAa,GACd,CAAA"}
@@ -0,0 +1,8 @@
1
+ import * as React from "react";
2
+ import { DropdownMenu as DropdownMenuPrimitive } from "radix-ui";
3
+ declare function DropdownMenu({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Root>): React.JSX.Element;
4
+ declare function DropdownMenuTrigger({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>): React.JSX.Element;
5
+ declare function DropdownMenuContent({ className, sideOffset, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Content>): React.JSX.Element;
6
+ declare function DropdownMenuItem({ className, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Item>): React.JSX.Element;
7
+ export { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem };
8
+ //# sourceMappingURL=dropdown-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown-menu.d.ts","sourceRoot":"","sources":["../../../src/components/ui/dropdown-menu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,YAAY,IAAI,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAIhE,iBAAS,YAAY,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,qBAAqB,CAAC,IAAI,CAAC,qBAE1F;AAED,iBAAS,mBAAmB,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,qBAAqB,CAAC,OAAO,CAAC,qBAEpG;AAED,iBAAS,mBAAmB,CAAC,EAAE,SAAS,EAAE,UAAc,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,qBAAqB,CAAC,OAAO,CAAC,qBAe/H;AAED,iBAAS,gBAAgB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,qBAAqB,CAAC,IAAI,CAAC,qBAWzG;AAED,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ArtifactsView.d.ts","sourceRoot":"","sources":["../../../src/components/views/ArtifactsView.tsx"],"names":[],"mappings":"AAcA,wBAAgB,aAAa,gCA6I5B"}
1
+ {"version":3,"file":"ArtifactsView.d.ts","sourceRoot":"","sources":["../../../src/components/views/ArtifactsView.tsx"],"names":[],"mappings":"AAgBA,wBAAgB,aAAa,gCAqJ5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"UsersView.d.ts","sourceRoot":"","sources":["../../../src/components/views/UsersView.tsx"],"names":[],"mappings":"AAeA,wBAAgB,SAAS,gCA0HxB"}
1
+ {"version":3,"file":"UsersView.d.ts","sourceRoot":"","sources":["../../../src/components/views/UsersView.tsx"],"names":[],"mappings":"AAiBA,wBAAgB,SAAS,gCA4IxB"}
@@ -1,4 +1,4 @@
1
- import type { AccessRule, ExpressionValidationResult } from '../models/access-rule.types';
1
+ import type { AccessRule, ExpressionValidationResult, ResolvedAccessEntry } from '../models/access-rule.types';
2
2
  interface AccessRulesParams {
3
3
  skip?: number;
4
4
  limit?: number;
@@ -10,10 +10,10 @@ export declare function useAccessRules(params?: AccessRulesParams): import("@tan
10
10
  export declare function useAccessRulesCount(params?: Pick<AccessRulesParams, 'appName' | 'search' | 'activeOnly'>): import("@tanstack/react-query").UseQueryResult<number, Error>;
11
11
  export declare function useAccessRule(id: string): import("@tanstack/react-query").UseQueryResult<NoInfer<AccessRule>, Error>;
12
12
  export declare function useCheckAccess(userId: string, artifactId: string, permission: string): import("@tanstack/react-query").UseQueryResult<boolean, Error>;
13
- export declare function useUserAccess(userId: string): import("@tanstack/react-query").UseQueryResult<NoInfer<Record<string, string[]>>, Error>;
14
- export declare function useUserGroupAccess(groupId: string): import("@tanstack/react-query").UseQueryResult<NoInfer<Record<string, string[]>>, Error>;
15
- export declare function useArtifactAccess(artifactId: string): import("@tanstack/react-query").UseQueryResult<NoInfer<Record<string, string[]>>, Error>;
16
- export declare function useArtifactGroupAccess(artifactId: string): import("@tanstack/react-query").UseQueryResult<NoInfer<Record<string, string[]>>, Error>;
13
+ export declare function useUserAccess(userIdentifier: string): import("@tanstack/react-query").UseQueryResult<NoInfer<ResolvedAccessEntry[]>, Error>;
14
+ export declare function useUserGroupAccess(groupId: string): import("@tanstack/react-query").UseQueryResult<NoInfer<ResolvedAccessEntry[]>, Error>;
15
+ export declare function useArtifactAccess(artifactId: string): import("@tanstack/react-query").UseQueryResult<NoInfer<ResolvedAccessEntry[]>, Error>;
16
+ export declare function useArtifactGroupAccess(artifactId: string): import("@tanstack/react-query").UseQueryResult<NoInfer<ResolvedAccessEntry[]>, Error>;
17
17
  export declare function useValidateExpression(expression: string, type: 'user' | 'resource'): import("@tanstack/react-query").UseQueryResult<NoInfer<ExpressionValidationResult>, Error>;
18
18
  export declare function useCreateAccessRule(): import("@tanstack/react-query").UseMutationResult<AccessRule, Error, Partial<AccessRule>, unknown>;
19
19
  export declare function useUpdateAccessRule(): import("@tanstack/react-query").UseMutationResult<AccessRule, Error, AccessRule, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"useAccessRules.d.ts","sourceRoot":"","sources":["../../../src/core/hooks/useAccessRules.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAA;AAEzF,UAAU,iBAAiB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAmBD,wBAAgB,cAAc,CAAC,MAAM,GAAE,iBAAsB,gFAgB5D;AAED,wBAAgB,mBAAmB,CAAC,MAAM,GAAE,IAAI,CAAC,iBAAiB,EAAE,SAAS,GAAG,QAAQ,GAAG,YAAY,CAAM,iEAc5G;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,8EAUvC;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,kEAcpF;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,4FAU3C;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,4FAUjD;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,4FAUnD;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,4FAUxD;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,8FAalF;AA2BD,wBAAgB,mBAAmB,uGAUlC;AAED,wBAAgB,mBAAmB,8FAalC;AAED,wBAAgB,mBAAmB,oFASlC"}
1
+ {"version":3,"file":"useAccessRules.d.ts","sourceRoot":"","sources":["../../../src/core/hooks/useAccessRules.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAE9G,UAAU,iBAAiB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAmBD,wBAAgB,cAAc,CAAC,MAAM,GAAE,iBAAsB,gFAgB5D;AAED,wBAAgB,mBAAmB,CAAC,MAAM,GAAE,IAAI,CAAC,iBAAiB,EAAE,SAAS,GAAG,QAAQ,GAAG,YAAY,CAAM,iEAc5G;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,8EAUvC;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,kEAcpF;AA4BD,wBAAgB,aAAa,CAAC,cAAc,EAAE,MAAM,yFAUnD;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,yFAUjD;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,yFAUnD;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,yFAUxD;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,8FAalF;AA2BD,wBAAgB,mBAAmB,uGAUlC;AAED,wBAAgB,mBAAmB,8FAalC;AAED,wBAAgB,mBAAmB,oFASlC"}
@@ -1,8 +1,6 @@
1
1
  import type { HierarchyNode } from '../models/user.types';
2
2
  import type { ArtifactHierarchyNode } from '../models/artifact.types';
3
3
  export declare function useOrgChart(): import("@tanstack/react-query").UseQueryResult<NoInfer<HierarchyNode[]>, Error>;
4
- export declare function useUserHierarchy(): import("@tanstack/react-query").UseQueryResult<NoInfer<HierarchyNode[]>, Error>;
5
- export declare function useGroupHierarchy(): import("@tanstack/react-query").UseQueryResult<NoInfer<HierarchyNode[]>, Error>;
6
4
  export declare function useCombinedHierarchy(): import("@tanstack/react-query").UseQueryResult<NoInfer<HierarchyNode[]>, Error>;
7
- export declare function useArtifactHierarchy(): import("@tanstack/react-query").UseQueryResult<NoInfer<ArtifactHierarchyNode[]>, Error>;
5
+ export declare function useArtifactCombinedHierarchy(): import("@tanstack/react-query").UseQueryResult<NoInfer<ArtifactHierarchyNode[]>, Error>;
8
6
  //# sourceMappingURL=useHierarchy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useHierarchy.d.ts","sourceRoot":"","sources":["../../../src/core/hooks/useHierarchy.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAQ,MAAM,sBAAsB,CAAA;AAC/D,OAAO,KAAK,EAAE,qBAAqB,EAAY,MAAM,0BAA0B,CAAA;AA8E/E,wBAAgB,WAAW,oFAS1B;AAED,wBAAgB,gBAAgB,oFAS/B;AAED,wBAAgB,iBAAiB,oFAShC;AAED,wBAAgB,oBAAoB,oFAsBnC;AAED,wBAAgB,oBAAoB,4FASnC"}
1
+ {"version":3,"file":"useHierarchy.d.ts","sourceRoot":"","sources":["../../../src/core/hooks/useHierarchy.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAQ,MAAM,sBAAsB,CAAA;AAC/D,OAAO,KAAK,EAAE,qBAAqB,EAAY,MAAM,0BAA0B,CAAA;AAgF/E,wBAAgB,WAAW,oFAS1B;AAED,wBAAgB,oBAAoB,oFAYnC;AAqED,wBAAgB,4BAA4B,4FAY3C"}
@@ -0,0 +1,10 @@
1
+ export interface ExpressionOperation {
2
+ type: 'include' | 'exclude';
3
+ entity: string;
4
+ }
5
+ export declare function parseExpression(expression: string): ExpressionOperation[];
6
+ export declare function isEntityInExpression(entityId: string, expression: string, allGroups: {
7
+ id: string;
8
+ expression?: string;
9
+ }[]): boolean;
10
+ //# sourceMappingURL=expression.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../../../src/core/lib/expression.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,SAAS,GAAG,SAAS,CAAA;IAC3B,MAAM,EAAE,MAAM,CAAA;CACf;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,mBAAmB,EAAE,CA6BzE;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,GAC/C,OAAO,CAiCT"}
@@ -23,4 +23,9 @@ export interface ExpressionValidationResult {
23
23
  errors: string[];
24
24
  expandedEntities: string[];
25
25
  }
26
+ export interface ResolvedAccessEntry {
27
+ id: string;
28
+ label: string;
29
+ permissions: string[];
30
+ }
26
31
  //# sourceMappingURL=access-rule.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"access-rule.types.d.ts","sourceRoot":"","sources":["../../../src/core/models/access-rule.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,MAAM,CAAA;IACtB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,QAAQ,GAAG,UAAU,CAAA;IAC7B,eAAe,CAAC,EAAE,cAAc,CAAA;IAChC,SAAS,CAAC,EAAE,IAAI,CAAA;IAChB,SAAS,CAAC,EAAE,IAAI,CAAA;CACjB;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,gBAAgB,EAAE,MAAM,EAAE,CAAA;CAC3B"}
1
+ {"version":3,"file":"access-rule.types.d.ts","sourceRoot":"","sources":["../../../src/core/models/access-rule.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,MAAM,CAAA;IACtB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,QAAQ,GAAG,UAAU,CAAA;IAC7B,eAAe,CAAC,EAAE,cAAc,CAAA;IAChC,SAAS,CAAC,EAAE,IAAI,CAAA;IAChB,SAAS,CAAC,EAAE,IAAI,CAAA;CACjB;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,gBAAgB,EAAE,MAAM,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,EAAE,CAAA;CACtB"}