@epam/ai-dial-chat-hooks 1.3.0-dev.253 → 1.3.0-dev.259
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/catalog/deployment-id.d.ts +6 -0
- package/catalog/deployment-id.d.ts.map +1 -1
- package/catalog/deployment-id.js +12 -2
- package/catalog/map-deployment-to-catalog-item.d.ts +4 -1
- package/catalog/map-deployment-to-catalog-item.d.ts.map +1 -1
- package/catalog/map-deployment-to-catalog-item.js +10 -10
- package/catalog.js +23 -23
- package/conversation/useConversationStream/generation-resume.d.ts.map +1 -1
- package/conversation/useConversationStream/generation-resume.js +57 -85
- package/conversation/useConversationStream/useConversationStream.d.ts.map +1 -1
- package/conversation/useConversationStream/useConversationStream.js +3 -1
- package/file-manager.js +22 -22
- package/files/create-upload-file-with-progress.d.ts +17 -0
- package/files/create-upload-file-with-progress.d.ts.map +1 -1
- package/files/create-upload-file-with-progress.js +34 -26
- package/index.js +177 -177
- package/package.json +17 -17
- package/project/project-events.d.ts +14 -0
- package/project/project-events.d.ts.map +1 -0
- package/project/project-events.js +24 -0
- package/project/projects-api-client.d.ts +8 -1
- package/project/projects-api-client.d.ts.map +1 -1
- package/project/projects-api-client.js +5 -0
- package/project/use-projects.d.ts +12 -4
- package/project/use-projects.d.ts.map +1 -1
- package/project/use-projects.js +92 -27
- package/shared/read-sse-events.d.ts +10 -0
- package/shared/read-sse-events.d.ts.map +1 -0
- package/shared/read-sse-events.js +33 -0
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@epam/ai-dial-chat-hooks",
|
|
3
3
|
"description": "Framework-level React hooks extracted from AI DIAL Chat for building custom chat interfaces",
|
|
4
|
-
"version": "1.3.0-dev.
|
|
4
|
+
"version": "1.3.0-dev.259",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "./index.js",
|
|
@@ -131,7 +131,7 @@
|
|
|
131
131
|
}
|
|
132
132
|
},
|
|
133
133
|
"dependencies": {
|
|
134
|
-
"@epam/ai-dial-chat-api-client": "1.3.0-dev.
|
|
134
|
+
"@epam/ai-dial-chat-api-client": "1.3.0-dev.259",
|
|
135
135
|
"dompurify": "3.4.17",
|
|
136
136
|
"fflate": "^0.8.3",
|
|
137
137
|
"lru-cache": "^10.4.3",
|
|
@@ -140,23 +140,23 @@
|
|
|
140
140
|
},
|
|
141
141
|
"peerDependencies": {
|
|
142
142
|
"react": "^19.2.8",
|
|
143
|
-
"@epam/ai-dial-attachment-canvas": "1.3.0-dev.
|
|
144
|
-
"@epam/ai-dial-attachment-input": "1.3.0-dev.
|
|
145
|
-
"@epam/ai-dial-catalog": "1.3.0-dev.
|
|
146
|
-
"@epam/ai-dial-chat-overlay": "1.3.0-dev.
|
|
147
|
-
"@epam/ai-dial-chat-shared": "1.3.0-dev.
|
|
148
|
-
"@epam/ai-dial-conversation-input": "1.3.0-dev.
|
|
149
|
-
"@epam/ai-dial-mcp-apps": "1.3.0-dev.
|
|
150
|
-
"@epam/ai-dial-projects": "1.3.0-dev.
|
|
151
|
-
"@epam/ai-dial-publish-panel": "1.3.0-dev.
|
|
152
|
-
"@epam/ai-dial-quotations": "1.3.0-dev.
|
|
143
|
+
"@epam/ai-dial-attachment-canvas": "1.3.0-dev.259",
|
|
144
|
+
"@epam/ai-dial-attachment-input": "1.3.0-dev.259",
|
|
145
|
+
"@epam/ai-dial-catalog": "1.3.0-dev.259",
|
|
146
|
+
"@epam/ai-dial-chat-overlay": "1.3.0-dev.259",
|
|
147
|
+
"@epam/ai-dial-chat-shared": "1.3.0-dev.259",
|
|
148
|
+
"@epam/ai-dial-conversation-input": "1.3.0-dev.259",
|
|
149
|
+
"@epam/ai-dial-mcp-apps": "1.3.0-dev.259",
|
|
150
|
+
"@epam/ai-dial-projects": "1.3.0-dev.259",
|
|
151
|
+
"@epam/ai-dial-publish-panel": "1.3.0-dev.259",
|
|
152
|
+
"@epam/ai-dial-quotations": "1.3.0-dev.259",
|
|
153
153
|
"@epam/ai-dial-react-file-manager": "^0.4.0-dev.19",
|
|
154
|
-
"@epam/ai-dial-scheduled-tasks": "1.3.0-dev.
|
|
155
|
-
"@epam/ai-dial-share": "1.3.0-dev.
|
|
156
|
-
"@epam/ai-dial-skill-editor": "1.3.0-dev.
|
|
157
|
-
"@epam/ai-dial-source-panel": "1.3.0-dev.
|
|
154
|
+
"@epam/ai-dial-scheduled-tasks": "1.3.0-dev.259",
|
|
155
|
+
"@epam/ai-dial-share": "1.3.0-dev.259",
|
|
156
|
+
"@epam/ai-dial-skill-editor": "1.3.0-dev.259",
|
|
157
|
+
"@epam/ai-dial-source-panel": "1.3.0-dev.259",
|
|
158
158
|
"@epam/ai-dial-ui-kit": "^0.16.0-dev.56",
|
|
159
|
-
"@epam/ai-dial-usage-dashboard": "1.3.0-dev.
|
|
159
|
+
"@epam/ai-dial-usage-dashboard": "1.3.0-dev.259",
|
|
160
160
|
"@modelcontextprotocol/sdk": "^1.32.1",
|
|
161
161
|
"@epam/pdf-highlighter-kit": "^0.0.19"
|
|
162
162
|
},
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ProjectWatchEventDto } from '@epam/ai-dial-chat-api-client';
|
|
2
|
+
import { ProjectItem } from '@epam/ai-dial-projects';
|
|
3
|
+
/** The part of a projects watch event the list reacts to. */
|
|
4
|
+
export type ProjectWatchEvent = Pick<ProjectWatchEventDto, 'id' | 'action' | 'timestamp'>;
|
|
5
|
+
/** Returns the payload as a {@link ProjectWatchEvent}, or `undefined` when it is not one. */
|
|
6
|
+
export declare const parseProjectWatchEvent: (payload: unknown) => ProjectWatchEvent | undefined;
|
|
7
|
+
/**
|
|
8
|
+
* Returns the projects after one watch event: a create or update moves the
|
|
9
|
+
* project's `updatedAt` forward (never back), a delete removes it, and an
|
|
10
|
+
* event for an unlisted project is ignored. Returns `items` itself when
|
|
11
|
+
* nothing changed.
|
|
12
|
+
*/
|
|
13
|
+
export declare const applyProjectEvent: (items: ProjectItem[], event: ProjectWatchEvent) => ProjectItem[];
|
|
14
|
+
//# sourceMappingURL=project-events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-events.d.ts","sourceRoot":"","sources":["../../src/project/project-events.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,6DAA6D;AAC7D,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAClC,oBAAoB,EACpB,IAAI,GAAG,QAAQ,GAAG,WAAW,CAC9B,CAAC;AAMF,6FAA6F;AAC7F,eAAO,MAAM,sBAAsB,GACjC,SAAS,OAAO,KACf,iBAAiB,GAAG,SAYtB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAC5B,OAAO,WAAW,EAAE,EACpB,OAAO,iBAAiB,KACvB,WAAW,EAab,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ProjectWatchAction as e } from "@epam/ai-dial-chat-api-client";
|
|
2
|
+
//#region src/project/project-events.ts
|
|
3
|
+
var t = new Set(Object.values(e)), n = (e) => {
|
|
4
|
+
if (typeof e != "object" || !e) return;
|
|
5
|
+
let { id: n, action: r, timestamp: i } = e;
|
|
6
|
+
if (typeof n == "string" && typeof r == "string" && t.has(r) && typeof i == "number") return {
|
|
7
|
+
id: n,
|
|
8
|
+
action: r,
|
|
9
|
+
timestamp: i
|
|
10
|
+
};
|
|
11
|
+
}, r = (t, n) => {
|
|
12
|
+
let r = t.findIndex((e) => e.id === n.id);
|
|
13
|
+
if (r < 0) return t;
|
|
14
|
+
if (n.action === e.Delete) return t.filter((e, t) => t !== r);
|
|
15
|
+
let i = t[r];
|
|
16
|
+
if ((i.updatedAt ?? 0) >= n.timestamp) return t;
|
|
17
|
+
let a = [...t];
|
|
18
|
+
return a[r] = {
|
|
19
|
+
...i,
|
|
20
|
+
updatedAt: n.timestamp
|
|
21
|
+
}, a;
|
|
22
|
+
};
|
|
23
|
+
//#endregion
|
|
24
|
+
export { r as applyProjectEvent, n as parseProjectWatchEvent };
|
|
@@ -75,6 +75,11 @@ export interface ProjectsConfiguredClient {
|
|
|
75
75
|
path: string;
|
|
76
76
|
};
|
|
77
77
|
}, options?: RequestInit) => Promise<RawApiResponse>;
|
|
78
|
+
watchProjectsRaw: (request: {
|
|
79
|
+
watchProjectsBodyDto: {
|
|
80
|
+
ids: string[];
|
|
81
|
+
};
|
|
82
|
+
}, options?: RequestInit) => Promise<RawApiResponse>;
|
|
78
83
|
}
|
|
79
84
|
/** Text fields of a project create or edit request. */
|
|
80
85
|
export interface ProjectFields {
|
|
@@ -136,6 +141,8 @@ export interface ProjectsApiClient {
|
|
|
136
141
|
renameProjectConversation: (conversationId: string, newTitle: string) => Promise<RenameConversationResponseDto>;
|
|
137
142
|
deleteProjectConversation: (conversationId: string) => Promise<void>;
|
|
138
143
|
attachToProjectGeneration: (projectId: string, path: string, signal?: AbortSignal) => Promise<ReadableStream<Uint8Array>>;
|
|
144
|
+
/** Opens the SSE stream of changes to the given projects; a host without it gets no live updates. */
|
|
145
|
+
watchProjects?: (ids: string[], signal?: AbortSignal) => Promise<ReadableStream<Uint8Array>>;
|
|
139
146
|
}
|
|
140
147
|
/**
|
|
141
148
|
* Splits a project conversation id `projects/{bucket}/{projectPath…}/conversations/{name}`
|
|
@@ -152,6 +159,6 @@ export declare const buildCreateConversationDto: ({ firstMessage, deploymentId,
|
|
|
152
159
|
* File names travel as JSON fields, positionally paired with `files`,
|
|
153
160
|
* because the BFF never trusts a multipart part's own filename.
|
|
154
161
|
*/
|
|
155
|
-
export declare const createProjectsApiClient: (client: ProjectsConfiguredClient) => ProjectsApiClient
|
|
162
|
+
export declare const createProjectsApiClient: (client: ProjectsConfiguredClient) => Required<ProjectsApiClient>;
|
|
156
163
|
export {};
|
|
157
164
|
//# sourceMappingURL=projects-api-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projects-api-client.d.ts","sourceRoot":"","sources":["../../src/project/projects-api-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,uBAAuB,EACvB,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,kCAAkC,EAClC,iBAAiB,EACjB,6BAA6B,EAC7B,wBAAwB,EACzB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,kFAAkF;AAClF,UAAU,cAAc;IACtB,GAAG,EAAE,QAAQ,CAAC;CACf;AAED,4FAA4F;AAC5F,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,CAAC,OAAO,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAC1E,UAAU,EAAE,CACV,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EACvB,OAAO,CAAC,EAAE,WAAW,KAClB,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAChC,aAAa,EAAE,CACb,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;KAChB,EACD,OAAO,CAAC,EAAE,WAAW,KAClB,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACvC,aAAa,EAAE,CACb,OAAO,EAAE;QACP,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;KAChB,EACD,OAAO,CAAC,EAAE,WAAW,KAClB,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACvC,aAAa,EAAE,CAAC,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3E,kBAAkB,EAAE,CAClB,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EACvB,OAAO,CAAC,EAAE,WAAW,KAClB,OAAO,CAAC,cAAc,CAAC,CAAC;IAC7B,sBAAsB,EAAE,CACtB,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EACzC,OAAO,CAAC,EAAE,WAAW,KAClB,OAAO,CAAC,cAAc,CAAC,CAAC;IAC7B,wBAAwB,EAAE,CACxB,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EACxD,OAAO,CAAC,EAAE,WAAW,KAClB,OAAO,CAAC,kCAAkC,CAAC,CAAC;IACjD,yBAAyB,EAAE,CAAC,OAAO,EAAE;QACnC,EAAE,EAAE,MAAM,CAAC;QACX,qBAAqB,EAAE,qBAAqB,CAAC;KAC9C,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACvC,sBAAsB,EAAE,CACtB,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,EACjD,OAAO,CAAC,EAAE,WAAW,KAClB,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACtC,uBAAuB,EAAE,CAAC,OAAO,EAAE;QACjC,EAAE,EAAE,MAAM,CAAC;QACX,gBAAgB,EAAE,MAAM,CAAC;QACzB,uBAAuB,EAAE;YAAE,YAAY,EAAE,uBAAuB,CAAA;SAAE,CAAC;KACpE,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACvC,yBAAyB,EAAE,CAAC,OAAO,EAAE;QACnC,EAAE,EAAE,MAAM,CAAC;QACX,gBAAgB,EAAE,MAAM,CAAC;QACzB,yBAAyB,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC;KACjD,KAAK,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAC7C,yBAAyB,EAAE,CAAC,OAAO,EAAE;QACnC,EAAE,EAAE,MAAM,CAAC;QACX,gBAAgB,EAAE,MAAM,CAAC;KAC1B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,4BAA4B,EAAE,CAC5B,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,EAC9D,OAAO,CAAC,EAAE,WAAW,KAClB,OAAO,CAAC,cAAc,CAAC,CAAC;CAC9B;AAED,uDAAuD;AACvD,MAAM,WAAW,aAAa;IAC5B,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,2GAA2G;AAC3G,MAAM,WAAW,oBAAoB;IACnC,6BAA6B;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,8BAA8B;IAC9B,MAAM,EAAE,aAAa,CAAC;IACtB,gCAAgC;IAChC,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjB,mDAAmD;IACnD,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,kGAAkG;IAClG,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,2DAA2D;AAC3D,MAAM,WAAW,2BAA2B;IAC1C,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,oEAAoE;AACpE,MAAM,WAAW,yBAAyB;IACxC,8BAA8B;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,YAAY,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,WAAW,CAAC,EAAE,aAAa,EAAE,CAAC;IAC9B,+CAA+C;IAC/C,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7C,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,+CAA+C;IAC/C,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;CACzB;AAED,wEAAwE;AACxE,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACzE,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC7E,aAAa,EAAE,CACb,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,IAAI,EAAE,EACb,MAAM,CAAC,EAAE,WAAW,KACjB,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACvC,aAAa,EAAE,CACb,OAAO,EAAE,oBAAoB,EAC7B,MAAM,CAAC,EAAE,WAAW,KACjB,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACvC,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE,sBAAsB,EAAE,CACtB,EAAE,EAAE,MAAM,EACV,MAAM,CAAC,EAAE,WAAW,KACjB,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvB,0BAA0B,EAAE,CAC1B,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,WAAW,KACjB,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvB,wBAAwB,EAAE,CACxB,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,WAAW,EACpB,IAAI,CAAC,EAAE,2BAA2B,KAC/B,OAAO,CAAC,kCAAkC,CAAC,CAAC;IACjD,yBAAyB,EAAE,CACzB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,yBAAyB,KAC/B,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACtC,sBAAsB,EAAE,CACtB,cAAc,EAAE,MAAM,EACtB,MAAM,CAAC,EAAE,WAAW,KACjB,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACtC,uBAAuB,EAAE,CACvB,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,uBAAuB,KAClC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACtC,yBAAyB,EAAE,CACzB,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,KACb,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAC5C,yBAAyB,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE,yBAAyB,EAAE,CACzB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,WAAW,KACjB,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;CAC1C;AAKD;;;GAGG;AACH,eAAO,MAAM,0BAA0B,GACrC,gBAAgB,MAAM,KACrB;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,GAAG,IAapD,CAAC;AAYF,4GAA4G;AAC5G,eAAO,MAAM,0BAA0B,GAAI,qFAOxC,yBAAyB,KAAG,qBAe7B,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,GAClC,QAAQ,wBAAwB,KAC/B,
|
|
1
|
+
{"version":3,"file":"projects-api-client.d.ts","sourceRoot":"","sources":["../../src/project/projects-api-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -75,6 +75,11 @@ var e = (e) => {
|
|
|
75
75
|
}, ...n(i));
|
|
76
76
|
if (!a.body) throw Error("Attach endpoint returned no response body");
|
|
77
77
|
return a.body;
|
|
78
|
+
},
|
|
79
|
+
watchProjects: async (t, r) => {
|
|
80
|
+
let { raw: i } = await e.watchProjectsRaw({ watchProjectsBodyDto: { ids: t } }, ...n(r));
|
|
81
|
+
if (!i.body) throw Error("Watch endpoint returned no response body");
|
|
82
|
+
return i.body;
|
|
78
83
|
}
|
|
79
84
|
});
|
|
80
85
|
//#endregion
|
|
@@ -2,14 +2,22 @@ import { ProjectItem, ProjectSource } from '@epam/ai-dial-projects';
|
|
|
2
2
|
import { ProjectsApiClient } from './projects-api-client';
|
|
3
3
|
/**
|
|
4
4
|
* Loads the projects the session user can see, mapped to the Projects lib's
|
|
5
|
-
* cards
|
|
6
|
-
* token, so an enabled page is
|
|
7
|
-
* request is aborted on unmount or
|
|
5
|
+
* cards, and keeps them current while mounted. Loading is derived from
|
|
6
|
+
* whether a result answers the current reload token, so an enabled page is
|
|
7
|
+
* loading from its very first render. The request is aborted on unmount or
|
|
8
|
+
* when `enabled` turns false.
|
|
9
|
+
*
|
|
10
|
+
* When the client offers `watchProjects`, a successful load opens one watch
|
|
11
|
+
* stream for the listed projects: an update moves a card's `updatedAt`
|
|
12
|
+
* forward and a delete removes it. A stream that drops is reopened with a
|
|
13
|
+
* bounded backoff and followed by a silent reload, so changes made during
|
|
14
|
+
* the gap are not lost; a watch that cannot be opened at all is not retried
|
|
15
|
+
* for the rest of the visit.
|
|
8
16
|
*
|
|
9
17
|
* @param client - Configured project requests, from `createProjectsApiClient`; it must be referentially stable, because a new object reloads.
|
|
10
18
|
* @param enabled - Whether the page is enabled; no request is sent while `false`.
|
|
11
19
|
*/
|
|
12
|
-
export declare const useProjects: (client: Pick<ProjectsApiClient, "listProjects">, enabled: boolean) => {
|
|
20
|
+
export declare const useProjects: (client: Pick<ProjectsApiClient, "listProjects" | "watchProjects">, enabled: boolean) => {
|
|
13
21
|
projects: ProjectItem[];
|
|
14
22
|
incompleteSources: ProjectSource[];
|
|
15
23
|
isLoading: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-projects.d.ts","sourceRoot":"","sources":["../../src/project/use-projects.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"use-projects.d.ts","sourceRoot":"","sources":["../../src/project/use-projects.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAKzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAuC/D;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,WAAW,GACtB,QAAQ,IAAI,CAAC,iBAAiB,EAAE,cAAc,GAAG,eAAe,CAAC,EACjE,SAAS,OAAO;;;;;;CAoIjB,CAAC"}
|
package/project/use-projects.js
CHANGED
|
@@ -1,46 +1,111 @@
|
|
|
1
1
|
import { mapProjectDtoToItem as e, mapProjectSource as t } from "./project-mapping.js";
|
|
2
|
-
import {
|
|
2
|
+
import { readSseEvents as n } from "../shared/read-sse-events.js";
|
|
3
|
+
import { applyProjectEvent as r, parseProjectWatchEvent as i } from "./project-events.js";
|
|
4
|
+
import { useCallback as a, useEffect as o, useRef as s, useState as c } from "react";
|
|
3
5
|
//#region src/project/use-projects.ts
|
|
4
|
-
var
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
var l = 1e3, u = [
|
|
7
|
+
1e3,
|
|
8
|
+
2e3,
|
|
9
|
+
4e3,
|
|
10
|
+
8e3,
|
|
11
|
+
16e3
|
|
12
|
+
], d = "\n", f = ({ items: n, incompleteSources: r }, i) => {
|
|
13
|
+
let a = n.map(e);
|
|
14
|
+
return {
|
|
15
|
+
reloadToken: i,
|
|
16
|
+
projects: a,
|
|
17
|
+
incompleteSources: r.map(t),
|
|
18
|
+
hasError: !1,
|
|
19
|
+
watchKey: a.slice(0, l).map(({ id: e }) => e).sort().join(d)
|
|
20
|
+
};
|
|
21
|
+
}, p = (e, t) => {
|
|
22
|
+
let [l, p] = c(0), [m, h] = c(), g = s(!1), _ = s(void 0);
|
|
23
|
+
o(() => {
|
|
24
|
+
if (!t) return;
|
|
8
25
|
let n = new AbortController();
|
|
9
26
|
return (async () => {
|
|
10
27
|
try {
|
|
11
|
-
let
|
|
28
|
+
let t = await e.listProjects(n.signal);
|
|
12
29
|
if (n.signal.aborted) return;
|
|
13
|
-
|
|
14
|
-
reloadToken: s,
|
|
15
|
-
projects: r.map(e),
|
|
16
|
-
incompleteSources: i.map(t),
|
|
17
|
-
hasError: !1
|
|
18
|
-
});
|
|
30
|
+
h(f(t, l));
|
|
19
31
|
} catch {
|
|
20
32
|
if (n.signal.aborted) return;
|
|
21
|
-
|
|
22
|
-
reloadToken:
|
|
33
|
+
h({
|
|
34
|
+
reloadToken: l,
|
|
23
35
|
projects: [],
|
|
24
36
|
incompleteSources: [],
|
|
25
|
-
hasError: !0
|
|
37
|
+
hasError: !0,
|
|
38
|
+
watchKey: ""
|
|
26
39
|
});
|
|
27
40
|
}
|
|
28
41
|
})(), () => n.abort();
|
|
29
42
|
}, [
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
43
|
+
e,
|
|
44
|
+
t,
|
|
45
|
+
l
|
|
46
|
+
]);
|
|
47
|
+
let v = a(async () => {
|
|
48
|
+
_.current?.abort();
|
|
49
|
+
let t = new AbortController();
|
|
50
|
+
_.current = t;
|
|
51
|
+
try {
|
|
52
|
+
let n = await e.listProjects(t.signal);
|
|
53
|
+
if (t.signal.aborted) return;
|
|
54
|
+
h((e) => e == null || e.hasError ? e : f(n, e.reloadToken));
|
|
55
|
+
} catch {}
|
|
56
|
+
}, [e]);
|
|
57
|
+
o(() => () => _.current?.abort(), []);
|
|
58
|
+
let y = m?.reloadToken === l ? m : void 0, b = t ? y?.watchKey ?? "" : "", { watchProjects: x } = e;
|
|
59
|
+
o(() => {
|
|
60
|
+
if (x == null || b === "" || g.current) return;
|
|
61
|
+
let e = b.split(d), t = new AbortController(), a, o = (e) => {
|
|
62
|
+
let n = i(e);
|
|
63
|
+
return n != null && h((e) => {
|
|
64
|
+
if (e == null) return e;
|
|
65
|
+
let t = r(e.projects, n);
|
|
66
|
+
return t === e.projects ? e : {
|
|
67
|
+
...e,
|
|
68
|
+
projects: t
|
|
69
|
+
};
|
|
70
|
+
}), t.signal.aborted;
|
|
71
|
+
}, s = async (r, i) => {
|
|
72
|
+
let a;
|
|
73
|
+
try {
|
|
74
|
+
a = await x(e, t.signal);
|
|
75
|
+
} catch {
|
|
76
|
+
if (t.signal.aborted) return;
|
|
77
|
+
if (!i) {
|
|
78
|
+
g.current = !0;
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
c(r + 1);
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
i && v(), await n(a, o), !t.signal.aborted && c(0);
|
|
85
|
+
}, c = (e) => {
|
|
86
|
+
let t = u[e];
|
|
87
|
+
t == null ? g.current = !0 : a = setTimeout(() => {
|
|
88
|
+
s(e, !0);
|
|
89
|
+
}, t);
|
|
90
|
+
};
|
|
91
|
+
return s(0, !1), () => {
|
|
92
|
+
t.abort(), clearTimeout(a);
|
|
93
|
+
};
|
|
94
|
+
}, [
|
|
95
|
+
x,
|
|
96
|
+
b,
|
|
97
|
+
v
|
|
33
98
|
]);
|
|
34
|
-
let
|
|
35
|
-
|
|
36
|
-
}, [])
|
|
99
|
+
let S = a(() => {
|
|
100
|
+
p((e) => e + 1);
|
|
101
|
+
}, []);
|
|
37
102
|
return {
|
|
38
|
-
projects:
|
|
39
|
-
incompleteSources:
|
|
40
|
-
isLoading:
|
|
41
|
-
hasError:
|
|
42
|
-
retry:
|
|
103
|
+
projects: y?.projects ?? [],
|
|
104
|
+
incompleteSources: y?.incompleteSources ?? [],
|
|
105
|
+
isLoading: t && y == null,
|
|
106
|
+
hasError: y?.hasError ?? !1,
|
|
107
|
+
retry: S
|
|
43
108
|
};
|
|
44
109
|
};
|
|
45
110
|
//#endregion
|
|
46
|
-
export {
|
|
111
|
+
export { p as useProjects };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reads a newline-delimited SSE stream, JSON-decoding each `data:` line and
|
|
3
|
+
* passing it to `onEvent`. Stops reading — and always releases the reader —
|
|
4
|
+
* as soon as `onEvent` returns `true`, when the stream ends, or when
|
|
5
|
+
* `reader.read()` rejects (a network error, or the caller aborting the
|
|
6
|
+
* stream's own `AbortSignal`, e.g. on timeout). Malformed lines and
|
|
7
|
+
* non-`data:` lines (comments, keepalives) are skipped silently.
|
|
8
|
+
*/
|
|
9
|
+
export declare const readSseEvents: <TEvent>(stream: ReadableStream<Uint8Array>, onEvent: (event: TEvent) => Promise<boolean> | boolean) => Promise<void>;
|
|
10
|
+
//# sourceMappingURL=read-sse-events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-sse-events.d.ts","sourceRoot":"","sources":["../../src/shared/read-sse-events.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,GAAU,MAAM,EACxC,QAAQ,cAAc,CAAC,UAAU,CAAC,EAClC,SAAS,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,KACrD,OAAO,CAAC,IAAI,CAyCd,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
//#region src/shared/read-sse-events.ts
|
|
2
|
+
var e = async (e, t) => {
|
|
3
|
+
let n = e.getReader(), r = new TextDecoder(), i = "";
|
|
4
|
+
try {
|
|
5
|
+
for (;;) {
|
|
6
|
+
let { done: e, value: a } = await n.read();
|
|
7
|
+
if (e) break;
|
|
8
|
+
i += r.decode(a, { stream: !0 });
|
|
9
|
+
let o = i.split("\n");
|
|
10
|
+
i = o.pop() ?? "";
|
|
11
|
+
let s = !1;
|
|
12
|
+
for (let e of o) {
|
|
13
|
+
let n = e.trim();
|
|
14
|
+
if (!n.startsWith("data:")) continue;
|
|
15
|
+
let r = n.slice(5).trim(), i;
|
|
16
|
+
try {
|
|
17
|
+
i = JSON.parse(r);
|
|
18
|
+
} catch {
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
if (await t(i)) {
|
|
22
|
+
s = !0;
|
|
23
|
+
break;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
if (s) break;
|
|
27
|
+
}
|
|
28
|
+
} catch {} finally {
|
|
29
|
+
n.releaseLock();
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
//#endregion
|
|
33
|
+
export { e as readSseEvents };
|