@elevasis/ui 2.80.0 → 2.81.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/dist/api/index.js +3 -3
- package/dist/app/index.d.ts +1 -15
- package/dist/app/index.js +10 -10
- package/dist/auth/index.js +4 -4
- package/dist/charts/index.js +4 -4
- package/dist/{chunk-SPH5WW44.js → chunk-3ZADOARU.js} +5 -5
- package/dist/{chunk-W6QOWA3L.js → chunk-42C2WVYU.js} +2 -2
- package/dist/{chunk-6MWTTBBT.js → chunk-52AZTFUR.js} +5 -5
- package/dist/{chunk-XEO2UG4J.js → chunk-5GYJ3IDO.js} +3 -3
- package/dist/{chunk-52G4B33T.js → chunk-6J3SCCZ2.js} +2 -2
- package/dist/{chunk-NKMBW7WE.js → chunk-6YWBMLEM.js} +21 -10
- package/dist/{chunk-NGRRAYMO.js → chunk-75OLN23F.js} +3 -3
- package/dist/{chunk-ZU676PFP.js → chunk-7D4FKBB4.js} +1 -1
- package/dist/{chunk-KGUBFIMQ.js → chunk-7RS2NUC6.js} +10 -2
- package/dist/{chunk-2KXSFLU2.js → chunk-AI5OYVLR.js} +1 -1
- package/dist/{chunk-6IWH757Q.js → chunk-BLYK6I4D.js} +1 -1
- package/dist/{chunk-CIGWHY7C.js → chunk-DEZW7QDI.js} +15 -4
- package/dist/{chunk-JZBMZLD3.js → chunk-FPRDEKFY.js} +1 -1
- package/dist/{chunk-A32PJ2DO.js → chunk-G6VHIXWD.js} +1 -1
- package/dist/{chunk-MJIDC25O.js → chunk-HDITVHZT.js} +2 -2
- package/dist/{chunk-QSN7BWI3.js → chunk-HDLYC63N.js} +1 -1
- package/dist/{chunk-VHK5J55Q.js → chunk-ILOKKA6L.js} +8 -8
- package/dist/{chunk-WOYW24U7.js → chunk-JLKZUO2I.js} +1 -1
- package/dist/{chunk-MMOR2HQZ.js → chunk-K635QVGI.js} +8 -8
- package/dist/{chunk-BG7VCCFB.js → chunk-KU7KN5VN.js} +1 -1
- package/dist/{chunk-3UO2CJTR.js → chunk-LGJASP5H.js} +1 -1
- package/dist/{chunk-T6AOVZAI.js → chunk-LTKBVL7D.js} +4 -4
- package/dist/{chunk-YSFLFD4U.js → chunk-LTRJZOHA.js} +1 -1
- package/dist/{chunk-VKA4LQ7N.js → chunk-O4XUKLRY.js} +1 -1
- package/dist/{chunk-DFGQG32T.js → chunk-PJN6CMWZ.js} +1 -1
- package/dist/{chunk-3HMRK3RC.js → chunk-PNCJJE4Z.js} +1 -1
- package/dist/{chunk-7A25EJ4A.js → chunk-PSGSFPWA.js} +9 -5
- package/dist/{chunk-JDPPV2XI.js → chunk-QEQXPWOK.js} +17 -227
- package/dist/{chunk-CSEADI37.js → chunk-QFKOHZM3.js} +3 -3
- package/dist/{chunk-HVNDBY42.js → chunk-ROC2TFPS.js} +2 -2
- package/dist/{chunk-BXFZ676L.js → chunk-SHJYK2X4.js} +3 -3
- package/dist/{chunk-Q6HRTWA6.js → chunk-SOBKRB4N.js} +1 -1
- package/dist/{chunk-U3GB5PDF.js → chunk-SWC54W3A.js} +2 -2
- package/dist/{chunk-I5SYS6DT.js → chunk-TLMNBOAG.js} +5 -5
- package/dist/{chunk-QQKYBGBX.js → chunk-XUL4UBYJ.js} +3 -3
- package/dist/components/index.d.ts +0 -14
- package/dist/components/index.js +39 -39
- package/dist/components/navigation/index.js +5 -5
- package/dist/features/auth/index.d.ts +1 -1
- package/dist/features/auth/index.js +6 -6
- package/dist/features/clients/index.js +7 -7
- package/dist/features/content/index.js +7 -7
- package/dist/features/crm/index.d.ts +0 -14
- package/dist/features/crm/index.js +10 -10
- package/dist/features/dashboard/index.js +6 -6
- package/dist/features/delivery/index.d.ts +0 -14
- package/dist/features/delivery/index.js +17 -17
- package/dist/features/knowledge/index.js +4 -4
- package/dist/features/lead-gen/index.d.ts +54 -16
- package/dist/features/lead-gen/index.js +11 -11
- package/dist/features/monitoring/index.js +8 -8
- package/dist/features/monitoring/requests/index.js +6 -6
- package/dist/features/operations/index.js +11 -11
- package/dist/features/seo/index.d.ts +105 -17
- package/dist/features/seo/index.js +7 -7
- package/dist/features/settings/index.d.ts +1 -1
- package/dist/features/settings/index.js +7 -7
- package/dist/hooks/access/index.js +4 -4
- package/dist/hooks/delivery/index.d.ts +0 -14
- package/dist/hooks/delivery/index.js +3 -3
- package/dist/hooks/published.d.ts +0 -14
- package/dist/hooks/published.js +15 -15
- package/dist/initialization/index.d.ts +1 -1
- package/dist/knowledge/index.d.ts +1 -1
- package/dist/knowledge/index.js +80 -80
- package/dist/{knowledge-search-index-YU6V3FTK.js → knowledge-search-index-UPKXCXQP.js} +87 -87
- package/dist/layout/index.js +8 -8
- package/dist/profile/index.d.ts +1 -1
- package/dist/provider/index.d.ts +0 -14
- package/dist/provider/index.js +4 -4
- package/dist/provider/published.d.ts +0 -14
- package/dist/provider/published.js +4 -4
- package/dist/sse/index.d.ts +7 -1
- package/dist/sse/index.js +22 -2
- package/dist/test-utils/index.d.ts +3 -1
- package/dist/test-utils/index.js +29 -6
- package/dist/types/index.d.ts +1 -15
- package/dist/utils/index.d.ts +9 -9
- package/dist/utils/index.js +1 -1
- package/package.json +6 -6
package/dist/layout/index.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
export { AppPageLayout, AppShellContainer, AppShellContentContainer, AppShellRightSideContainer, AppShellRightSideOuterContainer, AppTopbarAdjusterWrapper, CollapsibleSidebarGroup, CyberParticles, LinksGroup, Sidebar, SidebarContext, SidebarProvider, SubshellNavList, Topbar, TopbarActions, TopbarContainer, Vignette, subsidebarWidth, useSidebar, useSidebarCollapse } from '../chunk-
|
|
2
|
-
export { SubshellLoader } from '../chunk-
|
|
3
|
-
export { AppShellCenteredContainer, AppShellError, AppShellLoader } from '../chunk-
|
|
4
|
-
export { SubshellPageLayout } from '../chunk-
|
|
1
|
+
export { AppPageLayout, AppShellContainer, AppShellContentContainer, AppShellRightSideContainer, AppShellRightSideOuterContainer, AppTopbarAdjusterWrapper, CollapsibleSidebarGroup, CyberParticles, LinksGroup, Sidebar, SidebarContext, SidebarProvider, SubshellNavList, Topbar, TopbarActions, TopbarContainer, Vignette, subsidebarWidth, useSidebar, useSidebarCollapse } from '../chunk-KU7KN5VN.js';
|
|
2
|
+
export { SubshellLoader } from '../chunk-JLKZUO2I.js';
|
|
3
|
+
export { AppShellCenteredContainer, AppShellError, AppShellLoader } from '../chunk-LGJASP5H.js';
|
|
4
|
+
export { SubshellPageLayout } from '../chunk-SOBKRB4N.js';
|
|
5
5
|
export { PageContainer } from '../chunk-BZZCNLT6.js';
|
|
6
|
-
export { SubshellContainer, SubshellContentContainer, SubshellNavItem, SubshellRightSideContainer, SubshellSidebar, SubshellSidebarLoader, SubshellSidebarSection, sidebarBottomSectionCollapsedHeight, sidebarBottomSectionHeight, sidebarCollapsedWidth, sidebarGroupChevronSize, sidebarHoverDelay, sidebarIconInnerSize, sidebarIconSize, sidebarIconStroke, sidebarItemGap, sidebarItemHeight, sidebarItemPadding, sidebarSectionPadding, sidebarSubLinkIndent, sidebarSubLinkPaddingX, sidebarSubLinkPaddingY, sidebarToggleIconSize, sidebarTransitionDuration, sidebarWidth, subshellNavItemIconSize, topbarHeight } from '../chunk-
|
|
6
|
+
export { SubshellContainer, SubshellContentContainer, SubshellNavItem, SubshellRightSideContainer, SubshellSidebar, SubshellSidebarLoader, SubshellSidebarSection, sidebarBottomSectionCollapsedHeight, sidebarBottomSectionHeight, sidebarCollapsedWidth, sidebarGroupChevronSize, sidebarHoverDelay, sidebarIconInnerSize, sidebarIconSize, sidebarIconStroke, sidebarItemGap, sidebarItemHeight, sidebarItemPadding, sidebarSectionPadding, sidebarSubLinkIndent, sidebarSubLinkPaddingX, sidebarSubLinkPaddingY, sidebarToggleIconSize, sidebarTransitionDuration, sidebarWidth, subshellNavItemIconSize, topbarHeight } from '../chunk-PSGSFPWA.js';
|
|
7
7
|
import '../chunk-4WLAVUPS.js';
|
|
8
8
|
export { AmbientBloomGrid, AppBackground, CyberBackground, FilmGrain, FloatingMotes, FloatingOrbs, PerspectiveGrid, RadiantGlow, WaveBackground } from '../chunk-RXZ3XDBM.js';
|
|
9
|
-
import '../chunk-
|
|
9
|
+
import '../chunk-7RS2NUC6.js';
|
|
10
10
|
import '../chunk-L7BZZ4SI.js';
|
|
11
|
-
import '../chunk-
|
|
11
|
+
import '../chunk-PNCJJE4Z.js';
|
|
12
12
|
import '../chunk-62GVNH5U.js';
|
|
13
13
|
import '../chunk-P45GQ3ZW.js';
|
|
14
14
|
import '../chunk-IIMC4TRH.js';
|
|
@@ -19,7 +19,7 @@ import '../chunk-YJ437RDY.js';
|
|
|
19
19
|
import '../chunk-DD3CCMCZ.js';
|
|
20
20
|
import '../chunk-RNP5R5I3.js';
|
|
21
21
|
import '../chunk-RT4KRGZT.js';
|
|
22
|
-
import '../chunk-
|
|
22
|
+
import '../chunk-DEZW7QDI.js';
|
|
23
23
|
import '../chunk-6XBZPKMI.js';
|
|
24
24
|
import '../chunk-7ZUXA2NW.js';
|
|
25
25
|
import '../chunk-BI5VDO2K.js';
|
package/dist/profile/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { QueryKey } from '@tanstack/react-query';
|
|
|
5
5
|
/**
|
|
6
6
|
* Concrete row shapes for the published Supabase tables.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
8
|
+
* @generated by packages/core/scripts/gen-published-rows.mjs — DO NOT EDIT. Re-run `pnpm gen:published-rows`.
|
|
9
9
|
*
|
|
10
10
|
* These were `Tables<'users'>` / `TablesInsert<...>` aliases in `./index.ts`. Each one indexes
|
|
11
11
|
* into the generated `Database` type, and a published `.d.ts` that references `Database` makes
|
package/dist/provider/index.d.ts
CHANGED
|
@@ -2872,13 +2872,6 @@ type Database = {
|
|
|
2872
2872
|
referencedRelation: "users";
|
|
2873
2873
|
referencedColumns: ["id"];
|
|
2874
2874
|
},
|
|
2875
|
-
{
|
|
2876
|
-
foreignKeyName: "prj_notes_milestone_id_fkey";
|
|
2877
|
-
columns: ["milestone_id"];
|
|
2878
|
-
isOneToOne: false;
|
|
2879
|
-
referencedRelation: "prj_milestones";
|
|
2880
|
-
referencedColumns: ["id"];
|
|
2881
|
-
},
|
|
2882
2875
|
{
|
|
2883
2876
|
foreignKeyName: "prj_notes_organization_id_fkey";
|
|
2884
2877
|
columns: ["organization_id"];
|
|
@@ -2892,13 +2885,6 @@ type Database = {
|
|
|
2892
2885
|
isOneToOne: false;
|
|
2893
2886
|
referencedRelation: "prj_projects";
|
|
2894
2887
|
referencedColumns: ["id"];
|
|
2895
|
-
},
|
|
2896
|
-
{
|
|
2897
|
-
foreignKeyName: "prj_notes_task_id_fkey";
|
|
2898
|
-
columns: ["task_id"];
|
|
2899
|
-
isOneToOne: false;
|
|
2900
|
-
referencedRelation: "prj_tasks";
|
|
2901
|
-
referencedColumns: ["id"];
|
|
2902
2888
|
}
|
|
2903
2889
|
];
|
|
2904
2890
|
};
|
package/dist/provider/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export { AppearanceProvider, CrmActionsProvider, ElevasisCoreProvider, ElevasisSystemsProvider, ElevasisUIProvider, ListActionsProvider, NotificationProvider, SystemShell, createTestSystemsProvider, selectDeclaredSystems, useAppearance, useCrmActions, useElevasisSystems, useListActions, useNotificationAdapter, useOptionalElevasisSystems, useResolvedOrganizationModel } from '../chunk-
|
|
1
|
+
export { AppearanceProvider, CrmActionsProvider, ElevasisCoreProvider, ElevasisSystemsProvider, ElevasisUIProvider, ListActionsProvider, NotificationProvider, SystemShell, createTestSystemsProvider, selectDeclaredSystems, useAppearance, useCrmActions, useElevasisSystems, useListActions, useNotificationAdapter, useOptionalElevasisSystems, useResolvedOrganizationModel } from '../chunk-PSGSFPWA.js';
|
|
2
2
|
import '../chunk-4WLAVUPS.js';
|
|
3
3
|
import '../chunk-RXZ3XDBM.js';
|
|
4
|
-
import '../chunk-
|
|
4
|
+
import '../chunk-7RS2NUC6.js';
|
|
5
5
|
import '../chunk-L7BZZ4SI.js';
|
|
6
|
-
import '../chunk-
|
|
6
|
+
import '../chunk-PNCJJE4Z.js';
|
|
7
7
|
import '../chunk-62GVNH5U.js';
|
|
8
8
|
import '../chunk-P45GQ3ZW.js';
|
|
9
9
|
import '../chunk-IIMC4TRH.js';
|
|
@@ -14,7 +14,7 @@ import '../chunk-YJ437RDY.js';
|
|
|
14
14
|
import '../chunk-DD3CCMCZ.js';
|
|
15
15
|
import '../chunk-RNP5R5I3.js';
|
|
16
16
|
import '../chunk-RT4KRGZT.js';
|
|
17
|
-
import '../chunk-
|
|
17
|
+
import '../chunk-DEZW7QDI.js';
|
|
18
18
|
import '../chunk-6XBZPKMI.js';
|
|
19
19
|
import '../chunk-7ZUXA2NW.js';
|
|
20
20
|
export { ElevasisServiceProvider, useElevasisServices } from '../chunk-BI5VDO2K.js';
|
|
@@ -2871,13 +2871,6 @@ type Database = {
|
|
|
2871
2871
|
referencedRelation: "users";
|
|
2872
2872
|
referencedColumns: ["id"];
|
|
2873
2873
|
},
|
|
2874
|
-
{
|
|
2875
|
-
foreignKeyName: "prj_notes_milestone_id_fkey";
|
|
2876
|
-
columns: ["milestone_id"];
|
|
2877
|
-
isOneToOne: false;
|
|
2878
|
-
referencedRelation: "prj_milestones";
|
|
2879
|
-
referencedColumns: ["id"];
|
|
2880
|
-
},
|
|
2881
2874
|
{
|
|
2882
2875
|
foreignKeyName: "prj_notes_organization_id_fkey";
|
|
2883
2876
|
columns: ["organization_id"];
|
|
@@ -2891,13 +2884,6 @@ type Database = {
|
|
|
2891
2884
|
isOneToOne: false;
|
|
2892
2885
|
referencedRelation: "prj_projects";
|
|
2893
2886
|
referencedColumns: ["id"];
|
|
2894
|
-
},
|
|
2895
|
-
{
|
|
2896
|
-
foreignKeyName: "prj_notes_task_id_fkey";
|
|
2897
|
-
columns: ["task_id"];
|
|
2898
|
-
isOneToOne: false;
|
|
2899
|
-
referencedRelation: "prj_tasks";
|
|
2900
|
-
referencedColumns: ["id"];
|
|
2901
2887
|
}
|
|
2902
2888
|
];
|
|
2903
2889
|
};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export { AppearanceProvider, ElevasisCoreProvider, ElevasisSystemsProvider, NotificationProvider, SystemShell, selectDeclaredSystems, useAppearance, useElevasisSystems, useNotificationAdapter, useOptionalElevasisSystems, useResolvedOrganizationModel } from '../chunk-
|
|
1
|
+
export { AppearanceProvider, ElevasisCoreProvider, ElevasisSystemsProvider, NotificationProvider, SystemShell, selectDeclaredSystems, useAppearance, useElevasisSystems, useNotificationAdapter, useOptionalElevasisSystems, useResolvedOrganizationModel } from '../chunk-PSGSFPWA.js';
|
|
2
2
|
import '../chunk-4WLAVUPS.js';
|
|
3
3
|
import '../chunk-RXZ3XDBM.js';
|
|
4
|
-
import '../chunk-
|
|
4
|
+
import '../chunk-7RS2NUC6.js';
|
|
5
5
|
import '../chunk-L7BZZ4SI.js';
|
|
6
|
-
import '../chunk-
|
|
6
|
+
import '../chunk-PNCJJE4Z.js';
|
|
7
7
|
import '../chunk-62GVNH5U.js';
|
|
8
8
|
import '../chunk-P45GQ3ZW.js';
|
|
9
9
|
import '../chunk-IIMC4TRH.js';
|
|
@@ -14,7 +14,7 @@ import '../chunk-YJ437RDY.js';
|
|
|
14
14
|
import '../chunk-DD3CCMCZ.js';
|
|
15
15
|
import '../chunk-RNP5R5I3.js';
|
|
16
16
|
import '../chunk-RT4KRGZT.js';
|
|
17
|
-
import '../chunk-
|
|
17
|
+
import '../chunk-DEZW7QDI.js';
|
|
18
18
|
import '../chunk-6XBZPKMI.js';
|
|
19
19
|
import '../chunk-7ZUXA2NW.js';
|
|
20
20
|
export { ElevasisServiceProvider, useElevasisServices } from '../chunk-BI5VDO2K.js';
|
package/dist/sse/index.d.ts
CHANGED
|
@@ -57,7 +57,13 @@ declare class SSEConnectionManager implements SSEConnectionManagerLike {
|
|
|
57
57
|
* If a connection already exists for this endpoint, reuses it.
|
|
58
58
|
* Otherwise, creates a new connection.
|
|
59
59
|
*
|
|
60
|
-
*
|
|
60
|
+
* The key must encode everything that varies the request — the organization above all. Only the
|
|
61
|
+
* first subscriber's `options` open the connection; a later subscriber on the same key inherits
|
|
62
|
+
* that request wholesale, headers included. A mismatch is reported to the console but not
|
|
63
|
+
* repaired, because repairing it here would move the other subscribers onto a stream they did
|
|
64
|
+
* not ask for.
|
|
65
|
+
*
|
|
66
|
+
* @param key - Unique identifier for the connection (e.g., `notifications:${organizationId}`)
|
|
61
67
|
* @param subscriberId - Unique identifier for this subscriber (usually component instance)
|
|
62
68
|
* @param options - SSE connection options
|
|
63
69
|
* @returns Unsubscribe function to call when component unmounts
|
package/dist/sse/index.js
CHANGED
|
@@ -109,6 +109,13 @@ async function fetchEventSourceWithTokenRefresh(options) {
|
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
// src/sse/SSEConnectionManager.ts
|
|
112
|
+
function differingHeaderNames(a, b) {
|
|
113
|
+
const normalize = (headers) => new Map(Object.entries(headers).map(([name, value]) => [name.toLowerCase(), value]));
|
|
114
|
+
const left = normalize(a);
|
|
115
|
+
const right = normalize(b);
|
|
116
|
+
const names = /* @__PURE__ */ new Set([...left.keys(), ...right.keys()]);
|
|
117
|
+
return Array.from(names).filter((name) => left.get(name) !== right.get(name));
|
|
118
|
+
}
|
|
112
119
|
var SSEConnectionManager = class {
|
|
113
120
|
connections = /* @__PURE__ */ new Map();
|
|
114
121
|
closeGracePeriodMs;
|
|
@@ -121,7 +128,13 @@ var SSEConnectionManager = class {
|
|
|
121
128
|
* If a connection already exists for this endpoint, reuses it.
|
|
122
129
|
* Otherwise, creates a new connection.
|
|
123
130
|
*
|
|
124
|
-
*
|
|
131
|
+
* The key must encode everything that varies the request — the organization above all. Only the
|
|
132
|
+
* first subscriber's `options` open the connection; a later subscriber on the same key inherits
|
|
133
|
+
* that request wholesale, headers included. A mismatch is reported to the console but not
|
|
134
|
+
* repaired, because repairing it here would move the other subscribers onto a stream they did
|
|
135
|
+
* not ask for.
|
|
136
|
+
*
|
|
137
|
+
* @param key - Unique identifier for the connection (e.g., `notifications:${organizationId}`)
|
|
125
138
|
* @param subscriberId - Unique identifier for this subscriber (usually component instance)
|
|
126
139
|
* @param options - SSE connection options
|
|
127
140
|
* @returns Unsubscribe function to call when component unmounts
|
|
@@ -129,6 +142,12 @@ var SSEConnectionManager = class {
|
|
|
129
142
|
subscribe(key, subscriberId, options) {
|
|
130
143
|
const existing = this.connections.get(key);
|
|
131
144
|
if (existing) {
|
|
145
|
+
const mismatched = differingHeaderNames(existing.headers, options.headers ?? {});
|
|
146
|
+
if (mismatched.length > 0) {
|
|
147
|
+
console.error(
|
|
148
|
+
`[SSEConnectionManager] Subscriber "${subscriberId}" joined key "${key}" with different ${mismatched.join(", ")}. The live connection keeps the headers it was opened with. Include the differing value in the connection key.`
|
|
149
|
+
);
|
|
150
|
+
}
|
|
132
151
|
if (existing.closeTimeout) {
|
|
133
152
|
clearTimeout(existing.closeTimeout);
|
|
134
153
|
existing.closeTimeout = void 0;
|
|
@@ -144,7 +163,8 @@ var SSEConnectionManager = class {
|
|
|
144
163
|
const connection = {
|
|
145
164
|
controller,
|
|
146
165
|
subscribers,
|
|
147
|
-
url: options.url
|
|
166
|
+
url: options.url,
|
|
167
|
+
headers: options.headers ?? {}
|
|
148
168
|
};
|
|
149
169
|
this.connections.set(key, connection);
|
|
150
170
|
fetchEventSourceWithTokenRefresh({
|
|
@@ -194,13 +194,15 @@ interface OrgOsUiRouteContractOptions {
|
|
|
194
194
|
*/
|
|
195
195
|
publiclyReachableRoutePaths?: Iterable<string>;
|
|
196
196
|
}
|
|
197
|
-
type OrgOsUiRouteContractIssueKind = 'missing-system' | 'missing-route' | 'unguarded-route';
|
|
197
|
+
type OrgOsUiRouteContractIssueKind = 'missing-system' | 'missing-route' | 'unguarded-route' | 'no-coverage';
|
|
198
198
|
interface OrgOsUiRouteContractIssue {
|
|
199
199
|
target: OrgOsUiRouteContractTarget;
|
|
200
200
|
kind: OrgOsUiRouteContractIssueKind;
|
|
201
201
|
systemId: string;
|
|
202
202
|
path?: string;
|
|
203
203
|
ownerSystemId?: string;
|
|
204
|
+
/** `no-coverage` only: Systems that declare a UI path but no owner claimed. */
|
|
205
|
+
unownedSystemIds?: readonly string[];
|
|
204
206
|
}
|
|
205
207
|
interface OrgOsUiRouteContractResult {
|
|
206
208
|
issues: OrgOsUiRouteContractIssue[];
|
package/dist/test-utils/index.js
CHANGED
|
@@ -2,10 +2,10 @@ import { server, handlers } from '../chunk-7XKCG5CT.js';
|
|
|
2
2
|
export { handlers, server } from '../chunk-7XKCG5CT.js';
|
|
3
3
|
import { mockWorkOSUser, mockUseAuth, mockUnauthenticatedUser, mockAuthenticatedUser, mockAuthLoading, createMockUseAuth } from '../chunk-N7U24M2J.js';
|
|
4
4
|
export { createMockUseAuth, mockAuthLoading, mockAuthenticatedUser, mockUnauthenticatedUser, mockUseAuth, mockWorkOSUser } from '../chunk-N7U24M2J.js';
|
|
5
|
-
import '../chunk-
|
|
6
|
-
import { ApiClientProvider } from '../chunk-
|
|
5
|
+
import '../chunk-G6VHIXWD.js';
|
|
6
|
+
import { ApiClientProvider } from '../chunk-7RS2NUC6.js';
|
|
7
7
|
import '../chunk-DD3CCMCZ.js';
|
|
8
|
-
import '../chunk-
|
|
8
|
+
import '../chunk-DEZW7QDI.js';
|
|
9
9
|
import '../chunk-6XBZPKMI.js';
|
|
10
10
|
import '../chunk-7ZUXA2NW.js';
|
|
11
11
|
import { ElevasisServiceProvider } from '../chunk-BI5VDO2K.js';
|
|
@@ -186,8 +186,8 @@ function getOrgOsRouteContractSystems(organizationModel) {
|
|
|
186
186
|
for (const [key, system] of Object.entries(entries)) {
|
|
187
187
|
const id = prefix ? `${prefix}.${key}` : system.id || key;
|
|
188
188
|
result.push({ ...system, id });
|
|
189
|
-
|
|
190
|
-
if (
|
|
189
|
+
const nested = system.systems ?? system.subsystems;
|
|
190
|
+
if (nested) visit(nested, id);
|
|
191
191
|
}
|
|
192
192
|
};
|
|
193
193
|
visit(systems);
|
|
@@ -207,6 +207,7 @@ function collectOrgOsUiRouteContractIssues(options) {
|
|
|
207
207
|
const systems = getOrgOsRouteContractSystems(organizationModel);
|
|
208
208
|
const modelSystemIds = new Set(systems.map((system) => system.id));
|
|
209
209
|
const issues = [];
|
|
210
|
+
const unownedRoutableSystemIds = [];
|
|
210
211
|
let checkedPathCount = 0;
|
|
211
212
|
for (const systemId of target.systemIds) {
|
|
212
213
|
if (!modelSystemIds.has(systemId)) {
|
|
@@ -222,7 +223,10 @@ function collectOrgOsUiRouteContractIssues(options) {
|
|
|
222
223
|
if (!path || system.enabled === false) continue;
|
|
223
224
|
if (system.lifecycle === "archived" || system.lifecycle === "deprecated") continue;
|
|
224
225
|
const ownerSystemId = target.systemIds.find((candidate) => ownsOrgOsSystem(candidate, system.id));
|
|
225
|
-
if (!ownerSystemId)
|
|
226
|
+
if (!ownerSystemId) {
|
|
227
|
+
unownedRoutableSystemIds.push(system.id);
|
|
228
|
+
continue;
|
|
229
|
+
}
|
|
226
230
|
checkedPathCount += 1;
|
|
227
231
|
const normalizedPath = normalizeOrgOsRoutePath(path);
|
|
228
232
|
if (!normalizedRoutePaths.has(normalizedPath)) {
|
|
@@ -245,9 +249,28 @@ function collectOrgOsUiRouteContractIssues(options) {
|
|
|
245
249
|
});
|
|
246
250
|
}
|
|
247
251
|
}
|
|
252
|
+
if (checkedPathCount === 0 && unownedRoutableSystemIds.length > 0) {
|
|
253
|
+
issues.push({
|
|
254
|
+
target,
|
|
255
|
+
kind: "no-coverage",
|
|
256
|
+
systemId: "(none)",
|
|
257
|
+
unownedSystemIds: unownedRoutableSystemIds
|
|
258
|
+
});
|
|
259
|
+
}
|
|
248
260
|
return { issues, checkedPathCount };
|
|
249
261
|
}
|
|
250
262
|
function formatOrgOsUiRouteContractIssue(issue) {
|
|
263
|
+
if (issue.kind === "no-coverage") {
|
|
264
|
+
const unowned = issue.unownedSystemIds ?? [];
|
|
265
|
+
return [
|
|
266
|
+
`[no-coverage] The contract checked 0 paths for ${issue.target.name}, but its Organization Model declares ${unowned.length} routable System(s): ${unowned.join(", ")}.`,
|
|
267
|
+
`No id in this target's derived systemIds owns any of them, so every path was skipped and the run reported a pass that asserted nothing.`,
|
|
268
|
+
`Derived systemIds: ${issue.target.systemIds.length === 0 ? "(empty)" : issue.target.systemIds.join(", ")}`,
|
|
269
|
+
"Fix one of:",
|
|
270
|
+
`- Point the target's shellSource at the file that actually declares the SYSTEM_MANIFESTS array. ${issue.target.shellSource} is what was read; a shell that imports the array from elsewhere yields no ids.`,
|
|
271
|
+
`- Or, if ${issue.target.name} genuinely mounts no System from its Organization Model, remove the target rather than leaving a check that cannot fail.`
|
|
272
|
+
].join("\n");
|
|
273
|
+
}
|
|
251
274
|
if (issue.kind === "missing-system") {
|
|
252
275
|
return [
|
|
253
276
|
`[missing-system] Registered SystemModule "${issue.systemId}" is not present in ${issue.target.orgModelSource}.`,
|
package/dist/types/index.d.ts
CHANGED
|
@@ -3540,13 +3540,6 @@ type Database = {
|
|
|
3540
3540
|
referencedRelation: "users";
|
|
3541
3541
|
referencedColumns: ["id"];
|
|
3542
3542
|
},
|
|
3543
|
-
{
|
|
3544
|
-
foreignKeyName: "prj_notes_milestone_id_fkey";
|
|
3545
|
-
columns: ["milestone_id"];
|
|
3546
|
-
isOneToOne: false;
|
|
3547
|
-
referencedRelation: "prj_milestones";
|
|
3548
|
-
referencedColumns: ["id"];
|
|
3549
|
-
},
|
|
3550
3543
|
{
|
|
3551
3544
|
foreignKeyName: "prj_notes_organization_id_fkey";
|
|
3552
3545
|
columns: ["organization_id"];
|
|
@@ -3560,13 +3553,6 @@ type Database = {
|
|
|
3560
3553
|
isOneToOne: false;
|
|
3561
3554
|
referencedRelation: "prj_projects";
|
|
3562
3555
|
referencedColumns: ["id"];
|
|
3563
|
-
},
|
|
3564
|
-
{
|
|
3565
|
-
foreignKeyName: "prj_notes_task_id_fkey";
|
|
3566
|
-
columns: ["task_id"];
|
|
3567
|
-
isOneToOne: false;
|
|
3568
|
-
referencedRelation: "prj_tasks";
|
|
3569
|
-
referencedColumns: ["id"];
|
|
3570
3556
|
}
|
|
3571
3557
|
];
|
|
3572
3558
|
};
|
|
@@ -4484,7 +4470,7 @@ type Database = {
|
|
|
4484
4470
|
/**
|
|
4485
4471
|
* Concrete row shapes for the published Supabase tables.
|
|
4486
4472
|
*
|
|
4487
|
-
*
|
|
4473
|
+
* @generated by packages/core/scripts/gen-published-rows.mjs — DO NOT EDIT. Re-run `pnpm gen:published-rows`.
|
|
4488
4474
|
*
|
|
4489
4475
|
* These were `Tables<'users'>` / `TablesInsert<...>` aliases in `./index.ts`. Each one indexes
|
|
4490
4476
|
* into the generated `Database` type, and a published `.d.ts` that references `Database` makes
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -305,6 +305,15 @@ interface SystemInterfaceReadinessIssue {
|
|
|
305
305
|
message: string;
|
|
306
306
|
}
|
|
307
307
|
|
|
308
|
+
/**
|
|
309
|
+
* Type-safe error codes
|
|
310
|
+
* Adding a member obliges a producer in `apps/api` and a display title in the frontend.
|
|
311
|
+
* Both are enforced: `apps/api/src/platform/errors/__tests__/error-code-producers.test.ts`
|
|
312
|
+
* keys a producer map by this union, and `getErrorTitle` in `packages/ui/src/utils/error-utils.ts`
|
|
313
|
+
* looks up a `Record<APIErrorCode, string>` -- an unhandled member fails to compile in both.
|
|
314
|
+
*/
|
|
315
|
+
type APIErrorCode = 'VALIDATION_ERROR' | 'AUTHENTICATION_FAILED' | 'FORBIDDEN' | 'NOT_FOUND' | 'CONFLICT' | 'RATE_LIMIT_EXCEEDED' | 'INTERNAL_SERVER_ERROR' | 'SERVICE_UNAVAILABLE';
|
|
316
|
+
|
|
308
317
|
/**
|
|
309
318
|
* Time range selector for dashboard metrics
|
|
310
319
|
*/
|
|
@@ -407,15 +416,6 @@ type NodeColorType = 'violet' | 'blue' | 'orange' | 'teal' | 'gray' | 'yellow';
|
|
|
407
416
|
*/
|
|
408
417
|
declare function getResourceColor(type: ResourceDefinitionType): NodeColorType;
|
|
409
418
|
|
|
410
|
-
/**
|
|
411
|
-
* Type-safe error codes
|
|
412
|
-
* Adding a member obliges a producer in `apps/api` and a display title in the frontend.
|
|
413
|
-
* Both are enforced: `apps/api/src/platform/errors/__tests__/error-code-producers.test.ts`
|
|
414
|
-
* keys a producer map by this union, and `getErrorTitle` in `packages/ui/src/utils/error-utils.ts`
|
|
415
|
-
* looks up a `Record<APIErrorCode, string>` -- an unhandled member fails to compile in both.
|
|
416
|
-
*/
|
|
417
|
-
type APIErrorCode = 'VALIDATION_ERROR' | 'AUTHENTICATION_FAILED' | 'FORBIDDEN' | 'NOT_FOUND' | 'CONFLICT' | 'RATE_LIMIT_EXCEEDED' | 'INTERNAL_SERVER_ERROR' | 'SERVICE_UNAVAILABLE';
|
|
418
|
-
|
|
419
419
|
/**
|
|
420
420
|
* Time range utility functions
|
|
421
421
|
* Converts TimeRange enum to ISO 8601 date strings and labels
|
package/dist/utils/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { APIClientError, API_URL, DEBOUNCE_FILTER, DEBOUNCE_SLIDER, GC_TIME_LONG, GC_TIME_MEDIUM, GC_TIME_SHORT, LIMIT_ACTIVITY_FEED, OAUTH_FLOW_TIMEOUT, PAGE_SIZE_DEFAULT, STALE_TIME_ADMIN, STALE_TIME_DEFAULT, STALE_TIME_MONITORING, buildQueryString, formatChartAxisDate, formatDate, formatDateTime, formatErrorMessage, formatRelativeTime, formatTimeAgo, getErrorInfo, getErrorTitle, getResourceColor, getResourceIcon, getSystemReadinessServerErrorDetails, isAPIClientError, restoreConsole, setupBrowserMocks, suppressKnownWarnings, validateEmail } from '../chunk-
|
|
1
|
+
export { APIClientError, API_URL, DEBOUNCE_FILTER, DEBOUNCE_SLIDER, GC_TIME_LONG, GC_TIME_MEDIUM, GC_TIME_SHORT, LIMIT_ACTIVITY_FEED, OAUTH_FLOW_TIMEOUT, PAGE_SIZE_DEFAULT, STALE_TIME_ADMIN, STALE_TIME_DEFAULT, STALE_TIME_MONITORING, buildQueryString, formatChartAxisDate, formatDate, formatDateTime, formatErrorMessage, formatRelativeTime, formatTimeAgo, getErrorInfo, getErrorTitle, getResourceColor, getResourceIcon, getSystemReadinessServerErrorDetails, isAPIClientError, restoreConsole, setupBrowserMocks, suppressKnownWarnings, validateEmail } from '../chunk-DEZW7QDI.js';
|
|
2
2
|
export { REFETCH_INTERVAL_DASHBOARD, REFETCH_INTERVAL_REALTIME, REFETCH_INTERVAL_RUNNING, REFETCH_INTERVAL_RUNNING_FAST, SSE_CLOSE_GRACE_PERIOD, SSE_TOKEN_REFRESH_DELAY, WS_MAX_RETRIES_BEFORE_ERROR, WS_RECONNECT_BASE_DELAY, WS_RECONNECT_MAX_DELAY, debounce, getTimeRangeDates, getTimeRangeLabel } from '../chunk-6XBZPKMI.js';
|
|
3
3
|
export { ResourceStatusColors } from '../chunk-7ZUXA2NW.js';
|
|
4
4
|
import '../chunk-34B3ACOZ.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elevasis/ui",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.81.0",
|
|
4
4
|
"description": "UI components and platform-aware hooks for building custom frontends on the Elevasis platform",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -280,11 +280,11 @@
|
|
|
280
280
|
"typescript": "5.9.2",
|
|
281
281
|
"vite": "^7.0.0",
|
|
282
282
|
"vitest": "^3.2.4",
|
|
283
|
-
"@elevasis/sdk": "1.53.0",
|
|
284
|
-
"@repo/core": "0.70.0",
|
|
285
|
-
"@repo/eslint-config": "0.0.0",
|
|
286
283
|
"@repo/typescript-config": "0.0.0",
|
|
287
|
-
"@
|
|
284
|
+
"@elevasis/sdk": "1.54.0",
|
|
285
|
+
"@repo/elevasis-core": "1.0.0",
|
|
286
|
+
"@repo/eslint-config": "0.0.0",
|
|
287
|
+
"@repo/core": "0.71.0"
|
|
288
288
|
},
|
|
289
289
|
"dependencies": {
|
|
290
290
|
"@dagrejs/dagre": "^1.1.4",
|
|
@@ -372,7 +372,7 @@
|
|
|
372
372
|
"lint": "eslint src --max-warnings 47",
|
|
373
373
|
"check-types": "tsc --noEmit",
|
|
374
374
|
"test": "vitest run --passWithNoTests",
|
|
375
|
-
"test:publish-artifacts": "pnpm build:publish && vitest run src/__tests__/sdk-exports.test.ts src/provider/__tests__/published-surface.test.ts src/__tests__/published-artifact.test.ts src/__tests__/published-peer-dependencies.test.ts src/__tests__/published-subpath-identity.test.ts",
|
|
375
|
+
"test:publish-artifacts": "pnpm build:publish && vitest run src/__tests__/sdk-exports.test.ts src/provider/__tests__/published-surface.test.ts src/__tests__/published-artifact.test.ts src/__tests__/published-peer-dependencies.test.ts src/__tests__/published-subpath-identity.test.ts src/__tests__/published-zero-leak.test.ts",
|
|
376
376
|
"test:watch": "vitest watch"
|
|
377
377
|
}
|
|
378
378
|
}
|