@fnndsc/cumin 3.25.0 → 3.26.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/cache/listCache.d.ts +35 -0
- package/dist/cache/listCache.js +62 -0
- package/dist/cache/listCache.js.map +1 -1
- package/dist/chrisapi/contract.js +9 -1
- package/dist/chrisapi/contract.js.map +1 -1
- package/dist/connect/chrisConnection.js +7 -1
- package/dist/connect/chrisConnection.js.map +1 -1
- package/dist/filebrowser/folderMemo.d.ts +20 -0
- package/dist/filebrowser/folderMemo.js +32 -0
- package/dist/filebrowser/folderMemo.js.map +1 -0
- package/dist/groups/chrisGroups.js +51 -4
- package/dist/groups/chrisGroups.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/net/requestLedger.d.ts +78 -0
- package/dist/net/requestLedger.js +158 -0
- package/dist/net/requestLedger.js.map +1 -0
- package/dist/pipelines/chrisPipeline.d.ts +5 -0
- package/dist/pipelines/chrisPipeline.js +107 -40
- package/dist/pipelines/chrisPipeline.js.map +1 -1
- package/dist/pipelines/pipelineMemo.d.ts +63 -0
- package/dist/pipelines/pipelineMemo.js +94 -0
- package/dist/pipelines/pipelineMemo.js.map +1 -0
- package/package.json +7 -2
|
@@ -136,6 +136,15 @@ export declare class ListCache {
|
|
|
136
136
|
private stats;
|
|
137
137
|
/** Listeners told after any mutation a persister would want to see. */
|
|
138
138
|
private listeners;
|
|
139
|
+
/**
|
|
140
|
+
* The folder records CUBE answered for a path (`filebrowser/search?path=`),
|
|
141
|
+
* kept beside the listings and dropped by the same invalidations. Three
|
|
142
|
+
* callers resolved the same path independently on every navigation —
|
|
143
|
+
* three identical requests — and the next visit asked again. The value
|
|
144
|
+
* is the lookup's promise, so callers in flight together share one
|
|
145
|
+
* request; a miss (null) or a failure is never kept.
|
|
146
|
+
*/
|
|
147
|
+
private folders;
|
|
139
148
|
/**
|
|
140
149
|
* Registers a callback for checkpoint-worthy mutations (set, update,
|
|
141
150
|
* dirty, invalidate).
|
|
@@ -201,6 +210,32 @@ export declare class ListCache {
|
|
|
201
210
|
*
|
|
202
211
|
* @param path - The path to mark dirty.
|
|
203
212
|
*/
|
|
213
|
+
/**
|
|
214
|
+
* The folder record kept for a path, while its listing's TTL holds.
|
|
215
|
+
*
|
|
216
|
+
* @param path - The folder's path.
|
|
217
|
+
* @returns The lookup's promise, or null when none is kept or it expired.
|
|
218
|
+
*/
|
|
219
|
+
folder_get(path: string): Promise<unknown> | null;
|
|
220
|
+
/**
|
|
221
|
+
* Keeps a folder lookup for a path. A lookup that answers null or
|
|
222
|
+
* rejects is forgotten as it settles: a folder that is not there may
|
|
223
|
+
* be made in a moment, and a failure is not an answer.
|
|
224
|
+
*
|
|
225
|
+
* @param path - The folder's path.
|
|
226
|
+
* @param promise - The lookup under way.
|
|
227
|
+
*/
|
|
228
|
+
folder_set(path: string, promise: Promise<unknown>): void;
|
|
229
|
+
/**
|
|
230
|
+
* Drops the folder records a listing invalidation calls into question:
|
|
231
|
+
* the path's own and everything beneath it (a removed or renamed entry
|
|
232
|
+
* takes its subtree's records with it).
|
|
233
|
+
*
|
|
234
|
+
* @param path - The invalidated listing's path; omitted, every record.
|
|
235
|
+
*/
|
|
236
|
+
private folders_drop;
|
|
237
|
+
/** How many folder records are kept (for a readout or a test). */
|
|
238
|
+
folders_count(): number;
|
|
204
239
|
cache_markDirty(path: string): void;
|
|
205
240
|
/**
|
|
206
241
|
* Optimistically updates cache after a mutation.
|
package/dist/cache/listCache.js
CHANGED
|
@@ -165,6 +165,15 @@ class ListCache {
|
|
|
165
165
|
};
|
|
166
166
|
/** Listeners told after any mutation a persister would want to see. */
|
|
167
167
|
this.listeners = new Set();
|
|
168
|
+
/**
|
|
169
|
+
* The folder records CUBE answered for a path (`filebrowser/search?path=`),
|
|
170
|
+
* kept beside the listings and dropped by the same invalidations. Three
|
|
171
|
+
* callers resolved the same path independently on every navigation —
|
|
172
|
+
* three identical requests — and the next visit asked again. The value
|
|
173
|
+
* is the lookup's promise, so callers in flight together share one
|
|
174
|
+
* request; a miss (null) or a failure is never kept.
|
|
175
|
+
*/
|
|
176
|
+
this.folders = new Map();
|
|
168
177
|
}
|
|
169
178
|
/**
|
|
170
179
|
* Gets the singleton instance of ListCache.
|
|
@@ -243,6 +252,57 @@ class ListCache {
|
|
|
243
252
|
*
|
|
244
253
|
* @param path - The path to mark dirty.
|
|
245
254
|
*/
|
|
255
|
+
/**
|
|
256
|
+
* The folder record kept for a path, while its listing's TTL holds.
|
|
257
|
+
*
|
|
258
|
+
* @param path - The folder's path.
|
|
259
|
+
* @returns The lookup's promise, or null when none is kept or it expired.
|
|
260
|
+
*/
|
|
261
|
+
folder_get(path) {
|
|
262
|
+
const kept = this.folders.get(path);
|
|
263
|
+
if (kept === undefined)
|
|
264
|
+
return null;
|
|
265
|
+
if (Date.now() - kept.timestamp > kept.ttl) {
|
|
266
|
+
this.folders.delete(path);
|
|
267
|
+
return null;
|
|
268
|
+
}
|
|
269
|
+
return kept.promise;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Keeps a folder lookup for a path. A lookup that answers null or
|
|
273
|
+
* rejects is forgotten as it settles: a folder that is not there may
|
|
274
|
+
* be made in a moment, and a failure is not an answer.
|
|
275
|
+
*
|
|
276
|
+
* @param path - The folder's path.
|
|
277
|
+
* @param promise - The lookup under way.
|
|
278
|
+
*/
|
|
279
|
+
folder_set(path, promise) {
|
|
280
|
+
this.folders.set(path, { promise, timestamp: Date.now(), ttl: this.ttl_get(path) });
|
|
281
|
+
promise.then((folder) => { if (folder === null || folder === undefined)
|
|
282
|
+
this.folders.delete(path); }, () => { this.folders.delete(path); });
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Drops the folder records a listing invalidation calls into question:
|
|
286
|
+
* the path's own and everything beneath it (a removed or renamed entry
|
|
287
|
+
* takes its subtree's records with it).
|
|
288
|
+
*
|
|
289
|
+
* @param path - The invalidated listing's path; omitted, every record.
|
|
290
|
+
*/
|
|
291
|
+
folders_drop(path) {
|
|
292
|
+
if (path === undefined) {
|
|
293
|
+
this.folders.clear();
|
|
294
|
+
return;
|
|
295
|
+
}
|
|
296
|
+
this.folders.delete(path);
|
|
297
|
+
const prefix = path.endsWith('/') ? path : `${path}/`;
|
|
298
|
+
for (const key of this.folders.keys())
|
|
299
|
+
if (key.startsWith(prefix))
|
|
300
|
+
this.folders.delete(key);
|
|
301
|
+
}
|
|
302
|
+
/** How many folder records are kept (for a readout or a test). */
|
|
303
|
+
folders_count() {
|
|
304
|
+
return this.folders.size;
|
|
305
|
+
}
|
|
246
306
|
cache_markDirty(path) {
|
|
247
307
|
const entry = this.cache.get(path);
|
|
248
308
|
if (entry) {
|
|
@@ -279,6 +339,7 @@ class ListCache {
|
|
|
279
339
|
else {
|
|
280
340
|
this.cache.clear();
|
|
281
341
|
}
|
|
342
|
+
this.folders_drop(path);
|
|
282
343
|
this.change_emit();
|
|
283
344
|
}
|
|
284
345
|
/**
|
|
@@ -292,6 +353,7 @@ class ListCache {
|
|
|
292
353
|
* itself is removed along with all entries under `path + '/'`.
|
|
293
354
|
*/
|
|
294
355
|
cache_invalidateTree(path) {
|
|
356
|
+
this.folders_drop(path);
|
|
295
357
|
this.cache.delete(path);
|
|
296
358
|
const prefix = path.endsWith("/") ? path : `${path}/`;
|
|
297
359
|
for (const key of this.cache.keys()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listCache.js","sourceRoot":"","sources":["../../src/cache/listCache.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"listCache.js","sourceRoot":"","sources":["../../src/cache/listCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,6 +40,7 @@ exports.pipelineSourceFilesPage_get = pipelineSourceFilesPage_get;
|
|
|
40
40
|
exports.pipelineSourceFiles_drain = pipelineSourceFiles_drain;
|
|
41
41
|
exports.downloadToken_create = downloadToken_create;
|
|
42
42
|
const adapter_1 = require("./adapter");
|
|
43
|
+
const pipelineMemo_1 = require("../pipelines/pipelineMemo");
|
|
43
44
|
/**
|
|
44
45
|
* Walks every page of a paginated CUBE list, yielding one step per page.
|
|
45
46
|
*
|
|
@@ -370,9 +371,16 @@ async function pluginParameters_drain(handle) {
|
|
|
370
371
|
* @throws {Error} Propagates chrisapi/network errors.
|
|
371
372
|
*/
|
|
372
373
|
async function pipeline_get(client, pipelineID) {
|
|
373
|
-
|
|
374
|
+
// The item a search or an earlier get served answers first: chrisapi's
|
|
375
|
+
// getPipeline is a list-by-id, and the pipings hang off the item either way.
|
|
376
|
+
const kept = (0, pipelineMemo_1.pipelineResource_recall)(client, pipelineID);
|
|
377
|
+
const resource = kept !== null
|
|
378
|
+
? kept
|
|
379
|
+
: await (0, adapter_1.resource_call)(client, 'getPipeline', pipelineID);
|
|
374
380
|
if (!resource)
|
|
375
381
|
return null;
|
|
382
|
+
if (kept === null)
|
|
383
|
+
(0, pipelineMemo_1.pipelineResource_keep)(client, pipelineID, resource);
|
|
376
384
|
const pipingsPage_get = async (params) => {
|
|
377
385
|
const page = await (0, adapter_1.resource_call)(resource, 'getPluginPipings', params);
|
|
378
386
|
const rawItems = typeof page?.getItems === 'function'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/chrisapi/contract.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;;
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/chrisapi/contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
16
|
exports.chrisConnection = exports.ChRISConnection = exports.Client = void 0;
|
|
17
17
|
exports.chrisConnection_init = chrisConnection_init;
|
|
18
|
+
const folderMemo_1 = require("../filebrowser/folderMemo");
|
|
19
|
+
const requestLedger_1 = require("../net/requestLedger");
|
|
18
20
|
const adapter_js_1 = require("../chrisapi/adapter.js");
|
|
19
21
|
Object.defineProperty(exports, "Client", { enumerable: true, get: function () { return adapter_js_1.Client; } });
|
|
20
22
|
const config_js_1 = require("../config/config.js");
|
|
@@ -52,6 +54,9 @@ class ChRISConnection {
|
|
|
52
54
|
this.chrisURL = null;
|
|
53
55
|
this.client = null;
|
|
54
56
|
this.elevatedClientContext = new node_async_hooks_1.AsyncLocalStorage();
|
|
57
|
+
// Every request the session makes is counted from the moment there is
|
|
58
|
+
// a session to make them (netstat reads the ledger).
|
|
59
|
+
(0, requestLedger_1.requestLedger_start)();
|
|
55
60
|
if (config && storageProvider) {
|
|
56
61
|
this.init(config, storageProvider);
|
|
57
62
|
}
|
|
@@ -276,7 +281,8 @@ class ChRISConnection {
|
|
|
276
281
|
this.chrisURL &&
|
|
277
282
|
this.authToken) {
|
|
278
283
|
if (!this.client) {
|
|
279
|
-
|
|
284
|
+
// One folder lookup per path per session (see filebrowser/folderMemo).
|
|
285
|
+
this.client = (0, folderMemo_1.folderLookup_memoize)((0, adapter_js_1.client_create)(this.chrisURL, this.authToken));
|
|
280
286
|
}
|
|
281
287
|
}
|
|
282
288
|
return this.client;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chrisConnection.js","sourceRoot":"","sources":["../../src/connect/chrisConnection.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;;;
|
|
1
|
+
{"version":3,"file":"chrisConnection.js","sourceRoot":"","sources":["../../src/connect/chrisConnection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file One folder lookup per path per session: the chrisapi client's
|
|
3
|
+
* `getFileBrowserFolderByPath` memoised through the listing cache.
|
|
4
|
+
*
|
|
5
|
+
* Every navigation asked CUBE `filebrowser/search?path=` for the same
|
|
6
|
+
* path three times — the path resolver, `cd`'s validation and the listing
|
|
7
|
+
* each resolved it on their own — and asked again on the next visit. The
|
|
8
|
+
* record is kept beside the folder's listing, under the listing's own
|
|
9
|
+
* TTL, and dropped by the same invalidations the poller of record and
|
|
10
|
+
* local mutations already make (epic #367): no second clock. A lookup in
|
|
11
|
+
* flight is shared; a miss or a failure is never kept.
|
|
12
|
+
*/
|
|
13
|
+
import type { Client } from '../chrisapi/adapter.js';
|
|
14
|
+
/**
|
|
15
|
+
* Wraps a client's folder lookup with the session's memo. Idempotent.
|
|
16
|
+
*
|
|
17
|
+
* @param client - A connected chrisapi Client.
|
|
18
|
+
* @returns The same client, its `getFileBrowserFolderByPath` memoised.
|
|
19
|
+
*/
|
|
20
|
+
export declare function folderLookup_memoize(client: Client): Client;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.folderLookup_memoize = folderLookup_memoize;
|
|
4
|
+
const listCache_1 = require("../cache/listCache");
|
|
5
|
+
/** How a memoised client is marked, so it is wrapped once. */
|
|
6
|
+
const MEMOISED = Symbol('folderLookup_memoised');
|
|
7
|
+
/**
|
|
8
|
+
* Wraps a client's folder lookup with the session's memo. Idempotent.
|
|
9
|
+
*
|
|
10
|
+
* @param client - A connected chrisapi Client.
|
|
11
|
+
* @returns The same client, its `getFileBrowserFolderByPath` memoised.
|
|
12
|
+
*/
|
|
13
|
+
function folderLookup_memoize(client) {
|
|
14
|
+
const wrapped = client;
|
|
15
|
+
if (wrapped[MEMOISED] === true)
|
|
16
|
+
return client;
|
|
17
|
+
// A client without the lookup (a stub, an older chrisapi) is left as it is.
|
|
18
|
+
if (typeof wrapped.getFileBrowserFolderByPath !== 'function')
|
|
19
|
+
return client;
|
|
20
|
+
wrapped[MEMOISED] = true;
|
|
21
|
+
const lookup = wrapped.getFileBrowserFolderByPath.bind(wrapped);
|
|
22
|
+
wrapped.getFileBrowserFolderByPath = (path, timeout) => {
|
|
23
|
+
const kept = (0, listCache_1.listCache_get)().folder_get(path);
|
|
24
|
+
if (kept !== null)
|
|
25
|
+
return kept;
|
|
26
|
+
const fresh = lookup(path, timeout);
|
|
27
|
+
(0, listCache_1.listCache_get)().folder_set(path, fresh);
|
|
28
|
+
return fresh;
|
|
29
|
+
};
|
|
30
|
+
return client;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=folderMemo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"folderMemo.js","sourceRoot":"","sources":["../../src/filebrowser/folderMemo.ts"],"names":[],"mappings":";;AA8BA,oDAeC;AAhCD,kDAAmD;AAEnD,8DAA8D;AAC9D,MAAM,QAAQ,GAAkB,MAAM,CAAC,uBAAuB,CAAC,CAAC;AAQhE;;;;;GAKG;AACH,SAAgB,oBAAoB,CAAC,MAAc;IACjD,MAAM,OAAO,GAAuB,MAA4B,CAAC;IACjE,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAC9C,4EAA4E;IAC5E,IAAI,OAAO,OAAO,CAAC,0BAA0B,KAAK,UAAU;QAAE,OAAO,MAAM,CAAC;IAC5E,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;IACzB,MAAM,MAAM,GAAyD,OAAO,CAAC,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtH,OAAO,CAAC,0BAA0B,GAAG,CAAC,IAAY,EAAE,OAAgB,EAAoB,EAAE;QACxF,MAAM,IAAI,GAA4B,IAAA,yBAAa,GAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACvE,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAC/B,MAAM,KAAK,GAAqB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACtD,IAAA,yBAAa,GAAE,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -14,6 +14,34 @@ const contract_js_1 = require("../chrisapi/contract.js");
|
|
|
14
14
|
const errorStack_js_1 = require("../error/errorStack.js");
|
|
15
15
|
const chrisResourceGroup_js_1 = require("../resources/chrisResourceGroup.js");
|
|
16
16
|
const result_js_1 = require("../utils/result.js");
|
|
17
|
+
/** The group items a session's groups listing served, by id, per client. */
|
|
18
|
+
const groupItems = new WeakMap();
|
|
19
|
+
/**
|
|
20
|
+
* The listed group items of one client, made on first use.
|
|
21
|
+
*
|
|
22
|
+
* @param client - The connection's chrisapi client.
|
|
23
|
+
* @returns That client's items by group id.
|
|
24
|
+
*/
|
|
25
|
+
function groupItems_for(client) {
|
|
26
|
+
const kept = groupItems.get(client);
|
|
27
|
+
if (kept !== undefined)
|
|
28
|
+
return kept;
|
|
29
|
+
const made = new Map();
|
|
30
|
+
groupItems.set(client, made);
|
|
31
|
+
return made;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Reads the member a membership row names, without a request.
|
|
35
|
+
*
|
|
36
|
+
* @param membership - The membership row resource.
|
|
37
|
+
* @returns The member, or null when the row carries no user id and name.
|
|
38
|
+
*/
|
|
39
|
+
function membershipMember_read(membership) {
|
|
40
|
+
const row = (0, adapter_js_1.itemData_get)(membership);
|
|
41
|
+
if (!row || typeof row.user_id !== 'number' || typeof row.user_username !== 'string')
|
|
42
|
+
return null;
|
|
43
|
+
return { id: row.user_id, username: row.user_username };
|
|
44
|
+
}
|
|
17
45
|
/**
|
|
18
46
|
* Group handler for ChRIS user groups.
|
|
19
47
|
*/
|
|
@@ -33,6 +61,12 @@ class ChRISGroupGroup extends chrisResourceGroup_js_1.ChRISResourceGroup {
|
|
|
33
61
|
errorStack_js_1.errorStack.stack_push('error', 'Not connected to ChRIS. Please log in.');
|
|
34
62
|
return null;
|
|
35
63
|
}
|
|
64
|
+
// The item the groups listing served answers first: chrisapi's getGroup
|
|
65
|
+
// is a list-by-id, and the boot's warm listed every group that way
|
|
66
|
+
// right after listing them all (73 searches on a 73-group CUBE).
|
|
67
|
+
const listed = groupItems_for(client).get(groupID);
|
|
68
|
+
if (listed !== undefined)
|
|
69
|
+
return listed;
|
|
36
70
|
const group = await client.getGroup(groupID);
|
|
37
71
|
if (!group)
|
|
38
72
|
errorStack_js_1.errorStack.stack_push('error', `Group ${groupID} was not found.`);
|
|
@@ -50,8 +84,16 @@ class ChRISGroupGroup extends chrisResourceGroup_js_1.ChRISResourceGroup {
|
|
|
50
84
|
errorStack_js_1.errorStack.stack_push('error', 'Not connected to ChRIS. Please log in.');
|
|
51
85
|
return (0, result_js_1.Err)();
|
|
52
86
|
}
|
|
87
|
+
const items = groupItems_for(client);
|
|
53
88
|
const groups = await (0, contract_js_1.listPages_drain)(async (offset, limit) => {
|
|
54
89
|
const page = await client.getGroups({ limit, offset });
|
|
90
|
+
// The items are kept by id: a group's members are read off its item.
|
|
91
|
+
const served = typeof page.getItems === 'function' ? (0, adapter_js_1.items_get)(page) : [];
|
|
92
|
+
for (const item of served) {
|
|
93
|
+
const data = (0, adapter_js_1.itemData_get)(item);
|
|
94
|
+
if (data && typeof data.id === 'number')
|
|
95
|
+
items.set(data.id, item);
|
|
96
|
+
}
|
|
55
97
|
return (0, contract_js_1.collectionPage_wrap)(page, (0, adapter_js_1.listData_get)(page));
|
|
56
98
|
});
|
|
57
99
|
return (0, result_js_1.Ok)(groups);
|
|
@@ -78,9 +120,14 @@ class ChRISGroupGroup extends chrisResourceGroup_js_1.ChRISResourceGroup {
|
|
|
78
120
|
const page = await group.getUsers({ limit, offset });
|
|
79
121
|
return (0, contract_js_1.collectionPage_wrap)(page, (0, adapter_js_1.items_get)(page));
|
|
80
122
|
})) {
|
|
81
|
-
//
|
|
82
|
-
//
|
|
123
|
+
// A membership row names its user (user_id, user_username): the
|
|
124
|
+
// page is the answer. The linked user is fetched only for a row
|
|
125
|
+
// that does not — the boot's group warm once asked CUBE for every
|
|
126
|
+
// member one by one (51 requests on the dev CUBE).
|
|
83
127
|
const pageMembers = await Promise.all(step.items.map(async (membershipResource) => {
|
|
128
|
+
const named = membershipMember_read(membershipResource);
|
|
129
|
+
if (named)
|
|
130
|
+
return named;
|
|
84
131
|
const userResource = await membershipResource.getUser();
|
|
85
132
|
const member = (0, adapter_js_1.itemData_get)(userResource);
|
|
86
133
|
if (!member)
|
|
@@ -110,8 +157,8 @@ class ChRISGroupGroup extends chrisResourceGroup_js_1.ChRISResourceGroup {
|
|
|
110
157
|
if (!group)
|
|
111
158
|
return (0, result_js_1.Err)();
|
|
112
159
|
const membershipResource = await group.adminAddUser(username);
|
|
113
|
-
const
|
|
114
|
-
|
|
160
|
+
const membership = membershipMember_read(membershipResource)
|
|
161
|
+
?? (0, adapter_js_1.itemData_get)(await membershipResource.getUser());
|
|
115
162
|
if (!membership) {
|
|
116
163
|
errorStack_js_1.errorStack.stack_push('error', `CUBE returned no membership for ${username}.`);
|
|
117
164
|
return (0, result_js_1.Err)();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chrisGroups.js","sourceRoot":"","sources":["../../src/groups/chrisGroups.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;
|
|
1
|
+
{"version":3,"file":"chrisGroups.js","sourceRoot":"","sources":["../../src/groups/chrisGroups.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -25,10 +25,12 @@ export * from "./resources/chrisResourceGroup";
|
|
|
25
25
|
export * from "./resources/chrisObjContext";
|
|
26
26
|
export * from "./resources/chrisEmbeddedResourceGroup";
|
|
27
27
|
export * from "./filebrowser/chrisFileBrowser";
|
|
28
|
+
export * from "./filebrowser/folderMemo";
|
|
28
29
|
export * from "./filebrowser/chrisFiles";
|
|
29
30
|
export * from "./filebrowser/chrisPACS";
|
|
30
31
|
export * from "./filebrowser/chrisPipeline";
|
|
31
32
|
export * from "./io/chrisIO";
|
|
33
|
+
export * from "./net/requestLedger";
|
|
32
34
|
export * from "./io/io";
|
|
33
35
|
export * from "./io/node_io";
|
|
34
36
|
export * from "./utils/keypair";
|
|
@@ -39,6 +41,7 @@ export * from "./utils/envelope";
|
|
|
39
41
|
export * from "./cache";
|
|
40
42
|
export * from "./path/chrisPath";
|
|
41
43
|
export * from "./pipelines/chrisPipeline";
|
|
44
|
+
export * from "./pipelines/pipelineMemo";
|
|
42
45
|
export * from "./users/chrisUsers";
|
|
43
46
|
export * from "./tags/chrisTags";
|
|
44
47
|
export * from "./groups/chrisGroups";
|
package/dist/index.js
CHANGED
|
@@ -43,10 +43,12 @@ __exportStar(require("./resources/chrisResourceGroup"), exports);
|
|
|
43
43
|
__exportStar(require("./resources/chrisObjContext"), exports);
|
|
44
44
|
__exportStar(require("./resources/chrisEmbeddedResourceGroup"), exports);
|
|
45
45
|
__exportStar(require("./filebrowser/chrisFileBrowser"), exports);
|
|
46
|
+
__exportStar(require("./filebrowser/folderMemo"), exports);
|
|
46
47
|
__exportStar(require("./filebrowser/chrisFiles"), exports);
|
|
47
48
|
__exportStar(require("./filebrowser/chrisPACS"), exports);
|
|
48
49
|
__exportStar(require("./filebrowser/chrisPipeline"), exports);
|
|
49
50
|
__exportStar(require("./io/chrisIO"), exports);
|
|
51
|
+
__exportStar(require("./net/requestLedger"), exports);
|
|
50
52
|
__exportStar(require("./io/io"), exports);
|
|
51
53
|
__exportStar(require("./io/node_io"), exports);
|
|
52
54
|
__exportStar(require("./utils/keypair"), exports);
|
|
@@ -57,6 +59,7 @@ __exportStar(require("./utils/envelope"), exports);
|
|
|
57
59
|
__exportStar(require("./cache"), exports);
|
|
58
60
|
__exportStar(require("./path/chrisPath"), exports);
|
|
59
61
|
__exportStar(require("./pipelines/chrisPipeline"), exports);
|
|
62
|
+
__exportStar(require("./pipelines/pipelineMemo"), exports);
|
|
60
63
|
__exportStar(require("./users/chrisUsers"), exports);
|
|
61
64
|
__exportStar(require("./tags/chrisTags"), exports);
|
|
62
65
|
__exportStar(require("./groups/chrisGroups"), exports);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAEA;;;;;;;;GAQG;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAEA;;;;;;;;GAQG;;;;;;;;;;;;;;;;;AA0HH,4CAKC;AA7HD,qCAAmB;AACnB,qDAAmC;AACnC,kDAAgC;AAChC,oDAAkC;AAClC,4DAA0C;AAC1C,yDAAuC;AACvC,yDAAuC;AACvC,mEAAiD;AACjD,6DAA2C;AAC3C,mDAAiC;AACjC,yDAAuC;AACvC,sDAAoC;AACpC,6DAA2C;AAC3C,iEAA+C;AAC/C,8DAA4C;AAC5C,yEAAuD;AACvD,iEAA+C;AAC/C,2DAAyC;AACzC,2DAAyC;AACzC,0DAAwC;AACxC,8DAA4C;AAC5C,+CAA6B;AAC7B,sDAAoC;AACpC,0CAAwB;AACxB,+CAA6B;AAC7B,kDAAgC;AAChC,qDAAmC;AACnC,iDAA+B;AAC/B,gDAA8B;AAC9B,mDAAiC;AACjC,0CAAwB;AACxB,mDAAiC;AACjC,4DAA0C;AAC1C,2DAAyC;AACzC,qDAAmC;AACnC,mDAAiC;AACjC,uDAAqC;AACrC,iEAA+C;AAC/C,6DAA2C;AAC3C,yDAAuC;AAEvC,iFAAiF;AACjF,8CAA2E;AAAlE,uGAAA,YAAY,OAAA;AAAE,uGAAA,YAAY,OAAA;AAAE,oGAAA,SAAS,OAAA;AAC9C,wCAAiH;AAAxG,gGAAA,QAAQ,OAAA;AAAE,iGAAA,SAAS,OAAA;AAAE,kGAAA,UAAU,OAAA;AAAE,yGAAA,iBAAiB,OAAA;AAAE,mGAAA,WAAW,OAAA;AAExE,yEAAyE;AACzE,0EAA0E;AAC1E,gDAc6B;AAb3B,yGAAA,aAAa,OAAA;AACb,+GAAA,mBAAmB,OAAA;AACnB,mHAAA,uBAAuB,OAAA;AACvB,8GAAA,kBAAkB,OAAA;AAClB,uGAAA,WAAW,OAAA;AACX,kHAAA,sBAAsB,OAAA;AACtB,wGAAA,YAAY,OAAA;AACZ,uHAAA,2BAA2B,OAAA;AAC3B,qHAAA,yBAAyB,OAAA;AACzB,gHAAA,oBAAoB,OAAA;AACpB,0GAAA,cAAc,OAAA;AAAE,kHAAA,sBAAsB,OAAA;AACtC,2GAAA,eAAe,OAAA;AACf,+GAAA,mBAAmB,OAAA;AAsDrB;;;;;GAKG;AACI,KAAK,UAAU,gBAAgB,CAAC,GAAW;IAChD,MAAM,OAAO,GAAW,OAAO,CAAC;IAChC,wCAAwC;IACxC,6CAA6C;IAC7C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAC5B,CAAC;AAED,gEAAgE;AAChE,qCAAqC;AACrC,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACrB,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/** One request as the ledger saw it. */
|
|
2
|
+
export interface LedgerEntry {
|
|
3
|
+
/** Milliseconds since the ledger started. */
|
|
4
|
+
at: number;
|
|
5
|
+
method: string;
|
|
6
|
+
/** The endpoint family: `filebrowser/search`, `filebrowser/:id/children`, `plugins`, … */
|
|
7
|
+
family: string;
|
|
8
|
+
/** The path with its query, as sent (capped). */
|
|
9
|
+
path: string;
|
|
10
|
+
/** The response status; 0 when the request failed before one. */
|
|
11
|
+
status: number;
|
|
12
|
+
/** How long it took, request to response headers. */
|
|
13
|
+
ms: number;
|
|
14
|
+
}
|
|
15
|
+
/** A family's tally. */
|
|
16
|
+
export interface LedgerFamily {
|
|
17
|
+
family: string;
|
|
18
|
+
count: number;
|
|
19
|
+
/** Milliseconds spent, summed. */
|
|
20
|
+
ms: number;
|
|
21
|
+
}
|
|
22
|
+
/** What `netstat` reads out. */
|
|
23
|
+
export interface LedgerSnapshot {
|
|
24
|
+
/** When the count began: the session, or the last reset (ISO 8601). */
|
|
25
|
+
since: string;
|
|
26
|
+
/** Requests since then. */
|
|
27
|
+
total: number;
|
|
28
|
+
/** Milliseconds spent on them, summed. */
|
|
29
|
+
ms: number;
|
|
30
|
+
/** By family, most requests first. */
|
|
31
|
+
families: LedgerFamily[];
|
|
32
|
+
/** The last requests, oldest first. */
|
|
33
|
+
last: LedgerEntry[];
|
|
34
|
+
}
|
|
35
|
+
/** How many entries the ledger keeps. */
|
|
36
|
+
export declare const LEDGER_KEPT: number;
|
|
37
|
+
/**
|
|
38
|
+
* Names a request's endpoint family: the path below `/api/v1/`, ids
|
|
39
|
+
* replaced by `:id`, the query dropped, trailing slash dropped.
|
|
40
|
+
*
|
|
41
|
+
* @param path - The request path, query and all.
|
|
42
|
+
* @returns The family, or `root` for the API root.
|
|
43
|
+
*/
|
|
44
|
+
export declare function requestFamily_of(path: string): string;
|
|
45
|
+
/**
|
|
46
|
+
* Notes a request as it starts.
|
|
47
|
+
*
|
|
48
|
+
* @param request - The request object the channel carried (the key).
|
|
49
|
+
* @param method - Its method.
|
|
50
|
+
* @param path - Its path.
|
|
51
|
+
*/
|
|
52
|
+
export declare function ledger_requestStart(request: object, method: string, path: string): void;
|
|
53
|
+
/**
|
|
54
|
+
* Notes a request as it ends, however it ended.
|
|
55
|
+
*
|
|
56
|
+
* @param request - The request object the channel carried.
|
|
57
|
+
* @param status - The response status, or 0 for a failure.
|
|
58
|
+
*/
|
|
59
|
+
export declare function ledger_requestEnd(request: object, status: number): void;
|
|
60
|
+
/**
|
|
61
|
+
* Starts listening. Idempotent: the connection calls it as it is made,
|
|
62
|
+
* and a second call changes nothing.
|
|
63
|
+
*/
|
|
64
|
+
export declare function requestLedger_start(): void;
|
|
65
|
+
/**
|
|
66
|
+
* Forgets the count: the next snapshot counts from now. The last entries
|
|
67
|
+
* are kept so a reset mid-navigation still shows what just happened.
|
|
68
|
+
*/
|
|
69
|
+
export declare function requestLedger_reset(): void;
|
|
70
|
+
/**
|
|
71
|
+
* Reads the ledger.
|
|
72
|
+
*
|
|
73
|
+
* @param options - `last`: how many recent entries to carry (default 20).
|
|
74
|
+
* @returns The snapshot, families most-requested first.
|
|
75
|
+
*/
|
|
76
|
+
export declare function requestLedger_snapshot(options?: {
|
|
77
|
+
last?: number;
|
|
78
|
+
}): LedgerSnapshot;
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LEDGER_KEPT = void 0;
|
|
4
|
+
exports.requestFamily_of = requestFamily_of;
|
|
5
|
+
exports.ledger_requestStart = ledger_requestStart;
|
|
6
|
+
exports.ledger_requestEnd = ledger_requestEnd;
|
|
7
|
+
exports.requestLedger_start = requestLedger_start;
|
|
8
|
+
exports.requestLedger_reset = requestLedger_reset;
|
|
9
|
+
exports.requestLedger_snapshot = requestLedger_snapshot;
|
|
10
|
+
/**
|
|
11
|
+
* @file The request ledger: every call the kernel makes to CUBE, counted.
|
|
12
|
+
*
|
|
13
|
+
* A navigation that felt slow turned out to be fourteen requests where
|
|
14
|
+
* four would do, and nothing in the session could say so — the count was
|
|
15
|
+
* found with a preload hack on a private daemon. The ledger makes the
|
|
16
|
+
* wire a readout: how many requests since the session (or the last
|
|
17
|
+
* reset), by endpoint family, with the last ones timed. `netstat` reads
|
|
18
|
+
* it; smoke asserts budgets against it; an operator on a slow day asks
|
|
19
|
+
* it before guessing.
|
|
20
|
+
*
|
|
21
|
+
* It listens on Node's own diagnostics channels — the http client (what
|
|
22
|
+
* axios rides) and undici (what fetch rides) — so nothing is patched and
|
|
23
|
+
* every caller is seen.
|
|
24
|
+
*/
|
|
25
|
+
const node_diagnostics_channel_1 = require("node:diagnostics_channel");
|
|
26
|
+
/** How many entries the ledger keeps. */
|
|
27
|
+
exports.LEDGER_KEPT = 200;
|
|
28
|
+
/** A path longer than this is cut, with an ellipsis. */
|
|
29
|
+
const PATH_KEPT = 160;
|
|
30
|
+
let started = false;
|
|
31
|
+
let origin = Date.now();
|
|
32
|
+
let since = new Date(origin).toISOString();
|
|
33
|
+
let total = 0;
|
|
34
|
+
let msTotal = 0;
|
|
35
|
+
const families = new Map();
|
|
36
|
+
const entries = [];
|
|
37
|
+
const open = new WeakMap();
|
|
38
|
+
/**
|
|
39
|
+
* Names a request's endpoint family: the path below `/api/v1/`, ids
|
|
40
|
+
* replaced by `:id`, the query dropped, trailing slash dropped.
|
|
41
|
+
*
|
|
42
|
+
* @param path - The request path, query and all.
|
|
43
|
+
* @returns The family, or `root` for the API root.
|
|
44
|
+
*/
|
|
45
|
+
function requestFamily_of(path) {
|
|
46
|
+
const bare = path.split('?')[0] ?? '';
|
|
47
|
+
const below = bare.replace(/^.*?\/api\/v1\/?/, '').replace(/\/+$/, '');
|
|
48
|
+
if (below === '')
|
|
49
|
+
return 'root';
|
|
50
|
+
return below.split('/').map((segment) => (/^\d+$/.test(segment) ? ':id' : segment)).join('/');
|
|
51
|
+
}
|
|
52
|
+
const path_cap = (path) => (path.length > PATH_KEPT ? `${path.slice(0, PATH_KEPT - 1)}…` : path);
|
|
53
|
+
function entry_record(method, path, status, t0) {
|
|
54
|
+
const ms = Math.round(performance.now() - t0);
|
|
55
|
+
const family = requestFamily_of(path);
|
|
56
|
+
total += 1;
|
|
57
|
+
msTotal += ms;
|
|
58
|
+
const tally = families.get(family) ?? { family, count: 0, ms: 0 };
|
|
59
|
+
tally.count += 1;
|
|
60
|
+
tally.ms += ms;
|
|
61
|
+
families.set(family, tally);
|
|
62
|
+
entries.push({ at: Date.now() - origin, method, family, path: path_cap(path), status, ms });
|
|
63
|
+
if (entries.length > exports.LEDGER_KEPT)
|
|
64
|
+
entries.splice(0, entries.length - exports.LEDGER_KEPT);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Notes a request as it starts.
|
|
68
|
+
*
|
|
69
|
+
* @param request - The request object the channel carried (the key).
|
|
70
|
+
* @param method - Its method.
|
|
71
|
+
* @param path - Its path.
|
|
72
|
+
*/
|
|
73
|
+
function ledger_requestStart(request, method, path) {
|
|
74
|
+
open.set(request, { t0: performance.now(), method, path });
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Notes a request as it ends, however it ended.
|
|
78
|
+
*
|
|
79
|
+
* @param request - The request object the channel carried.
|
|
80
|
+
* @param status - The response status, or 0 for a failure.
|
|
81
|
+
*/
|
|
82
|
+
function ledger_requestEnd(request, status) {
|
|
83
|
+
const begun = open.get(request);
|
|
84
|
+
if (begun === undefined)
|
|
85
|
+
return;
|
|
86
|
+
open.delete(request);
|
|
87
|
+
entry_record(begun.method, begun.path, status, begun.t0);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Starts listening. Idempotent: the connection calls it as it is made,
|
|
91
|
+
* and a second call changes nothing.
|
|
92
|
+
*/
|
|
93
|
+
function requestLedger_start() {
|
|
94
|
+
if (started)
|
|
95
|
+
return;
|
|
96
|
+
started = true;
|
|
97
|
+
const method_of = (request) => (typeof request.method === 'string' ? request.method : 'GET');
|
|
98
|
+
const path_of = (request) => (typeof request.path === 'string' ? request.path : '');
|
|
99
|
+
(0, node_diagnostics_channel_1.subscribe)('http.client.request.start', (message) => {
|
|
100
|
+
const { request } = message;
|
|
101
|
+
if (request !== undefined && request !== null)
|
|
102
|
+
ledger_requestStart(request, method_of(request), path_of(request));
|
|
103
|
+
});
|
|
104
|
+
(0, node_diagnostics_channel_1.subscribe)('http.client.response.finish', (message) => {
|
|
105
|
+
const { request, response } = message;
|
|
106
|
+
if (request !== undefined && request !== null)
|
|
107
|
+
ledger_requestEnd(request, typeof response?.statusCode === 'number' ? response.statusCode : 0);
|
|
108
|
+
});
|
|
109
|
+
(0, node_diagnostics_channel_1.subscribe)('http.client.request.error', (message) => {
|
|
110
|
+
const { request } = message;
|
|
111
|
+
if (request !== undefined && request !== null)
|
|
112
|
+
ledger_requestEnd(request, 0);
|
|
113
|
+
});
|
|
114
|
+
(0, node_diagnostics_channel_1.subscribe)('undici:request:create', (message) => {
|
|
115
|
+
const { request } = message;
|
|
116
|
+
if (request !== undefined && request !== null)
|
|
117
|
+
ledger_requestStart(request, method_of(request), path_of(request));
|
|
118
|
+
});
|
|
119
|
+
(0, node_diagnostics_channel_1.subscribe)('undici:request:headers', (message) => {
|
|
120
|
+
const { request, response } = message;
|
|
121
|
+
if (request !== undefined && request !== null)
|
|
122
|
+
ledger_requestEnd(request, typeof response?.statusCode === 'number' ? response.statusCode : 0);
|
|
123
|
+
});
|
|
124
|
+
(0, node_diagnostics_channel_1.subscribe)('undici:request:error', (message) => {
|
|
125
|
+
const { request } = message;
|
|
126
|
+
if (request !== undefined && request !== null)
|
|
127
|
+
ledger_requestEnd(request, 0);
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Forgets the count: the next snapshot counts from now. The last entries
|
|
132
|
+
* are kept so a reset mid-navigation still shows what just happened.
|
|
133
|
+
*/
|
|
134
|
+
function requestLedger_reset() {
|
|
135
|
+
origin = Date.now();
|
|
136
|
+
since = new Date(origin).toISOString();
|
|
137
|
+
total = 0;
|
|
138
|
+
msTotal = 0;
|
|
139
|
+
families.clear();
|
|
140
|
+
entries.length = 0;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Reads the ledger.
|
|
144
|
+
*
|
|
145
|
+
* @param options - `last`: how many recent entries to carry (default 20).
|
|
146
|
+
* @returns The snapshot, families most-requested first.
|
|
147
|
+
*/
|
|
148
|
+
function requestLedger_snapshot(options = {}) {
|
|
149
|
+
const last = Math.max(0, Math.min(exports.LEDGER_KEPT, options.last ?? 20));
|
|
150
|
+
return {
|
|
151
|
+
since,
|
|
152
|
+
total,
|
|
153
|
+
ms: msTotal,
|
|
154
|
+
families: [...families.values()].sort((a, b) => b.count - a.count || a.family.localeCompare(b.family)),
|
|
155
|
+
last: entries.slice(-last),
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=requestLedger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requestLedger.js","sourceRoot":"","sources":["../../src/net/requestLedger.ts"],"names":[],"mappings":"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"}
|
|
@@ -76,6 +76,11 @@ export declare function pipelines_list(search?: string): Promise<Result<Pipeline
|
|
|
76
76
|
/**
|
|
77
77
|
* Resolves a pipeline by name (exact match first, then substring) or numeric ID string.
|
|
78
78
|
*
|
|
79
|
+
* One resolution per specifier per session: the answer is kept on the
|
|
80
|
+
* connection's client (see pipelineMemo), so a diagram asked again — the
|
|
81
|
+
* browser asks one per pipeline card on every visit to /bin — costs no
|
|
82
|
+
* search. A miss is never kept.
|
|
83
|
+
*
|
|
79
84
|
* @param nameOrId - Pipeline name or numeric ID.
|
|
80
85
|
* @returns Result containing the matched PipelineRecord.
|
|
81
86
|
*/
|
|
@@ -18,10 +18,13 @@ exports.pipeline_resolve = pipeline_resolve;
|
|
|
18
18
|
exports.pipeline_createWorkflow = pipeline_createWorkflow;
|
|
19
19
|
const chrisConnection_js_1 = require("../connect/chrisConnection.js");
|
|
20
20
|
const adapter_js_1 = require("../chrisapi/adapter.js");
|
|
21
|
+
const pipelineMemo_js_1 = require("./pipelineMemo.js");
|
|
21
22
|
const contract_js_1 = require("../chrisapi/contract.js");
|
|
22
23
|
const chrisResourceGroup_js_1 = require("../resources/chrisResourceGroup.js");
|
|
23
24
|
const errorStack_js_1 = require("../error/errorStack.js");
|
|
24
25
|
const result_js_1 = require("../utils/result.js");
|
|
26
|
+
/** How many pipelines a name search reads: exact names seldom collide. */
|
|
27
|
+
const PIPELINE_SEARCH_LIMIT = 100;
|
|
25
28
|
/**
|
|
26
29
|
* Group handler for ChRIS pipelines.
|
|
27
30
|
*/
|
|
@@ -55,18 +58,54 @@ async function pipelines_list(search) {
|
|
|
55
58
|
/**
|
|
56
59
|
* Resolves a pipeline by name (exact match first, then substring) or numeric ID string.
|
|
57
60
|
*
|
|
61
|
+
* One resolution per specifier per session: the answer is kept on the
|
|
62
|
+
* connection's client (see pipelineMemo), so a diagram asked again — the
|
|
63
|
+
* browser asks one per pipeline card on every visit to /bin — costs no
|
|
64
|
+
* search. A miss is never kept.
|
|
65
|
+
*
|
|
58
66
|
* @param nameOrId - Pipeline name or numeric ID.
|
|
59
67
|
* @returns Result containing the matched PipelineRecord.
|
|
60
68
|
*/
|
|
61
69
|
async function pipeline_resolve(nameOrId) {
|
|
70
|
+
const client = await chrisConnection_js_1.chrisConnection.client_get();
|
|
71
|
+
if (!client) {
|
|
72
|
+
errorStack_js_1.errorStack.stack_push('error', 'Not connected to ChRIS');
|
|
73
|
+
return (0, result_js_1.Err)();
|
|
74
|
+
}
|
|
75
|
+
const kept = (0, pipelineMemo_js_1.pipelineRecord_recall)(client, nameOrId);
|
|
76
|
+
if (kept !== null)
|
|
77
|
+
return (0, result_js_1.Ok)(kept);
|
|
78
|
+
const resolved = await pipelineResolve_fetch(client, nameOrId);
|
|
79
|
+
if (resolved.ok)
|
|
80
|
+
(0, pipelineMemo_js_1.pipelineRecord_keep)(client, nameOrId, resolved.value);
|
|
81
|
+
return resolved;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Keeps the chrisapi items a pipeline listing served, by id, so the
|
|
85
|
+
* pipings can be read off them without listing the pipeline again.
|
|
86
|
+
*
|
|
87
|
+
* @param client - The connection's client.
|
|
88
|
+
* @param page - The list response.
|
|
89
|
+
*/
|
|
90
|
+
function pipelineItems_keep(client, page) {
|
|
91
|
+
const items = (0, adapter_js_1.items_get)(page);
|
|
92
|
+
for (const item of items) {
|
|
93
|
+
const data = (0, adapter_js_1.itemData_get)(item);
|
|
94
|
+
if (data && typeof data.id === 'number')
|
|
95
|
+
(0, pipelineMemo_js_1.pipelineResource_keep)(client, data.id, item);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Resolves a pipeline against CUBE: the wire half of pipeline_resolve.
|
|
100
|
+
*
|
|
101
|
+
* @param client - The connection's client.
|
|
102
|
+
* @param nameOrId - Pipeline name or numeric ID.
|
|
103
|
+
* @returns Result containing the matched PipelineRecord.
|
|
104
|
+
*/
|
|
105
|
+
async function pipelineResolve_fetch(client, nameOrId) {
|
|
62
106
|
const isNumericID = /^\d+$/.test(nameOrId);
|
|
63
107
|
if (isNumericID) {
|
|
64
108
|
const numericId = parseInt(nameOrId, 10);
|
|
65
|
-
const client = await chrisConnection_js_1.chrisConnection.client_get();
|
|
66
|
-
if (!client) {
|
|
67
|
-
errorStack_js_1.errorStack.stack_push('error', 'Not connected to ChRIS');
|
|
68
|
-
return (0, result_js_1.Err)();
|
|
69
|
-
}
|
|
70
109
|
try {
|
|
71
110
|
const pipeline = await client.getPipeline(numericId);
|
|
72
111
|
const data = (0, adapter_js_1.itemData_get)(pipeline);
|
|
@@ -74,6 +113,7 @@ async function pipeline_resolve(nameOrId) {
|
|
|
74
113
|
errorStack_js_1.errorStack.stack_push('error', `Pipeline with ID ${numericId} not found`);
|
|
75
114
|
return (0, result_js_1.Err)();
|
|
76
115
|
}
|
|
116
|
+
(0, pipelineMemo_js_1.pipelineResource_keep)(client, data.id, pipeline);
|
|
77
117
|
return (0, result_js_1.Ok)(data);
|
|
78
118
|
}
|
|
79
119
|
catch (error) {
|
|
@@ -82,52 +122,79 @@ async function pipeline_resolve(nameOrId) {
|
|
|
82
122
|
return (0, result_js_1.Err)();
|
|
83
123
|
}
|
|
84
124
|
}
|
|
85
|
-
|
|
86
|
-
|
|
125
|
+
// A /bin slug names its pipeline's id (`<base>_id<N>`, minted by the
|
|
126
|
+
// listing from the record), so the id is the identity: one list by id
|
|
127
|
+
// answers, where a name search for the slug is a certain miss and the
|
|
128
|
+
// id only its fallback — two requests. A pipeline CUBE itself named
|
|
129
|
+
// `..._idN` is listed in /bin under its own id, so a bare slug never
|
|
130
|
+
// means it.
|
|
131
|
+
const slugID = nameOrId.match(/_id(\d+)$/);
|
|
132
|
+
if (slugID) {
|
|
133
|
+
try {
|
|
134
|
+
const pipeline = await client.getPipeline(parseInt(slugID[1], 10));
|
|
135
|
+
const data = (0, adapter_js_1.itemData_get)(pipeline);
|
|
136
|
+
if (data) {
|
|
137
|
+
(0, pipelineMemo_js_1.pipelineResource_keep)(client, data.id, pipeline);
|
|
138
|
+
return (0, result_js_1.Ok)(data);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
catch (_e) { }
|
|
142
|
+
}
|
|
143
|
+
// The search is read as a page, not through pipelines_list, so the items
|
|
144
|
+
// it served can be kept: a pipeline's pipings hang off its item.
|
|
145
|
+
let page;
|
|
146
|
+
try {
|
|
147
|
+
page = await (0, adapter_js_1.resource_call)(client, 'getPipelines', { name: nameOrId, limit: PIPELINE_SEARCH_LIMIT });
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
151
|
+
errorStack_js_1.errorStack.stack_push('error', `pipelines_list: ${msg}`);
|
|
87
152
|
return (0, result_js_1.Err)();
|
|
88
|
-
|
|
153
|
+
}
|
|
154
|
+
pipelineItems_keep(client, page);
|
|
155
|
+
const found = (0, adapter_js_1.listData_get)(page);
|
|
156
|
+
const exact = found.find((p) => p.name === nameOrId);
|
|
89
157
|
if (exact)
|
|
90
158
|
return (0, result_js_1.Ok)(exact);
|
|
91
|
-
if (
|
|
92
|
-
return (0, result_js_1.Ok)(
|
|
93
|
-
if (
|
|
94
|
-
const fallbackClient =
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
const directId = parseInt(idSuffixMatch[1], 10);
|
|
100
|
-
try {
|
|
101
|
-
const pipeline = await fallbackClient.getPipeline(directId);
|
|
102
|
-
const directData = (0, adapter_js_1.itemData_get)(pipeline);
|
|
103
|
-
if (directData) {
|
|
104
|
-
return (0, result_js_1.Ok)(directData);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
catch (_e) { }
|
|
108
|
-
}
|
|
109
|
-
// Slug fallback: treat nameOrId as a source file fname fragment
|
|
159
|
+
if (found.length === 1)
|
|
160
|
+
return (0, result_js_1.Ok)(found[0]);
|
|
161
|
+
if (found.length === 0) {
|
|
162
|
+
const fallbackClient = client;
|
|
163
|
+
// ID-suffix fallback: slug of form "{name}_id{N}" generated for pipelines without source files
|
|
164
|
+
const idSuffixMatch = nameOrId.match(/_id(\d+)$/);
|
|
165
|
+
if (idSuffixMatch) {
|
|
166
|
+
const directId = parseInt(idSuffixMatch[1], 10);
|
|
110
167
|
try {
|
|
111
|
-
const
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
if (sfItems.length > 0 && sfItems[0].data.pipeline_name) {
|
|
117
|
-
const byName = await pipelines_list(sfItems[0].data.pipeline_name);
|
|
118
|
-
if (byName.ok) {
|
|
119
|
-
const exactByName = byName.value.find((p) => p.name === sfItems[0].data.pipeline_name);
|
|
120
|
-
if (exactByName)
|
|
121
|
-
return (0, result_js_1.Ok)(exactByName);
|
|
122
|
-
}
|
|
168
|
+
const pipeline = await fallbackClient.getPipeline(directId);
|
|
169
|
+
const directData = (0, adapter_js_1.itemData_get)(pipeline);
|
|
170
|
+
if (directData) {
|
|
171
|
+
(0, pipelineMemo_js_1.pipelineResource_keep)(client, directData.id, pipeline);
|
|
172
|
+
return (0, result_js_1.Ok)(directData);
|
|
123
173
|
}
|
|
124
174
|
}
|
|
125
175
|
catch (_e) { }
|
|
126
176
|
}
|
|
177
|
+
// Slug fallback: treat nameOrId as a source file fname fragment
|
|
178
|
+
try {
|
|
179
|
+
const sfList = await (0, adapter_js_1.resource_call)(fallbackClient, 'getPipelineSourceFiles', { fname: nameOrId, limit: 1 });
|
|
180
|
+
const sfItems = (0, adapter_js_1.items_get)(sfList).filter((item) => {
|
|
181
|
+
const base = item.data.fname.split('/').pop() ?? '';
|
|
182
|
+
return base.replace(/\.(ya?ml)$/i, '') === nameOrId;
|
|
183
|
+
});
|
|
184
|
+
if (sfItems.length > 0 && sfItems[0].data.pipeline_name) {
|
|
185
|
+
const byName = await pipelines_list(sfItems[0].data.pipeline_name);
|
|
186
|
+
if (byName.ok) {
|
|
187
|
+
const exactByName = byName.value.find((p) => p.name === sfItems[0].data.pipeline_name);
|
|
188
|
+
if (exactByName)
|
|
189
|
+
return (0, result_js_1.Ok)(exactByName);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
catch (_e) { }
|
|
127
194
|
errorStack_js_1.errorStack.stack_push('error', `No pipeline matching '${nameOrId}'`);
|
|
128
195
|
return (0, result_js_1.Err)();
|
|
129
196
|
}
|
|
130
|
-
errorStack_js_1.errorStack.stack_push('error', `Ambiguous: ${
|
|
197
|
+
errorStack_js_1.errorStack.stack_push('error', `Ambiguous: ${found.length} pipelines match '${nameOrId}'. Use ID or full name.`);
|
|
131
198
|
return (0, result_js_1.Err)();
|
|
132
199
|
}
|
|
133
200
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chrisPipeline.js","sourceRoot":"","sources":["../../src/pipelines/chrisPipeline.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;
|
|
1
|
+
{"version":3,"file":"chrisPipeline.js","sourceRoot":"","sources":["../../src/pipelines/chrisPipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file One pipeline resolution per specifier per session.
|
|
3
|
+
*
|
|
4
|
+
* A pipeline diagram cost CUBE a name search, then the same pipeline listed
|
|
5
|
+
* again by id (chrisapi's `getPipeline` is a list-by-id), then its pipings
|
|
6
|
+
* and defaults — and the browser's PREVIEW projection asks for a diagram
|
|
7
|
+
* per pipeline card on every visit to /bin. A registered pipeline's record
|
|
8
|
+
* (id, name) is immutable, as its topology is, so a resolution is kept for
|
|
9
|
+
* the life of the connection's client, and the chrisapi item the search
|
|
10
|
+
* served is kept beside it: the pipings hang off that item, and nothing
|
|
11
|
+
* need list the pipeline a second time to reach them. A miss is never
|
|
12
|
+
* kept, so a pipeline registered after the memo was filled still resolves.
|
|
13
|
+
*/
|
|
14
|
+
import type { PipelineRecord } from './chrisPipeline.js';
|
|
15
|
+
/**
|
|
16
|
+
* Recalls a resolution.
|
|
17
|
+
*
|
|
18
|
+
* @param client - The connection's chrisapi client.
|
|
19
|
+
* @param specifier - The name or id string that was asked.
|
|
20
|
+
* @returns The record, or null when this session never resolved it.
|
|
21
|
+
*/
|
|
22
|
+
export declare function pipelineRecord_recall(client: object, specifier: string): PipelineRecord | null;
|
|
23
|
+
/**
|
|
24
|
+
* Keeps a resolution under the specifier asked and under the record's own
|
|
25
|
+
* name and id, so any of the three answers next time.
|
|
26
|
+
*
|
|
27
|
+
* @param client - The connection's chrisapi client.
|
|
28
|
+
* @param specifier - The name or id string that was asked.
|
|
29
|
+
* @param record - The record it resolved to.
|
|
30
|
+
*/
|
|
31
|
+
export declare function pipelineRecord_keep(client: object, specifier: string, record: PipelineRecord): void;
|
|
32
|
+
/**
|
|
33
|
+
* Recalls the chrisapi item of a pipeline.
|
|
34
|
+
*
|
|
35
|
+
* @param client - The connection's chrisapi client.
|
|
36
|
+
* @param pipelineID - The pipeline's id.
|
|
37
|
+
* @returns The item, or null when none was served this session.
|
|
38
|
+
*/
|
|
39
|
+
export declare function pipelineResource_recall(client: object, pipelineID: number): object | null;
|
|
40
|
+
/**
|
|
41
|
+
* Keeps the chrisapi item a search or a get served.
|
|
42
|
+
*
|
|
43
|
+
* @param client - The connection's chrisapi client.
|
|
44
|
+
* @param pipelineID - The pipeline's id.
|
|
45
|
+
* @param resource - The chrisapi pipeline item.
|
|
46
|
+
*/
|
|
47
|
+
export declare function pipelineResource_keep(client: object, pipelineID: number, resource: object): void;
|
|
48
|
+
/**
|
|
49
|
+
* Forgets one pipeline: its item and every specifier that resolved to it.
|
|
50
|
+
* Called when an item kept turns out not to answer (the pipeline was
|
|
51
|
+
* removed under the session), so the next ask resolves afresh.
|
|
52
|
+
*
|
|
53
|
+
* @param client - The connection's chrisapi client.
|
|
54
|
+
* @param pipelineID - The pipeline's id.
|
|
55
|
+
*/
|
|
56
|
+
export declare function pipeline_forget(client: object, pipelineID: number): void;
|
|
57
|
+
/**
|
|
58
|
+
* How many resolutions a client's memo holds (for tests and readouts).
|
|
59
|
+
*
|
|
60
|
+
* @param client - The connection's chrisapi client.
|
|
61
|
+
* @returns The count of specifiers kept.
|
|
62
|
+
*/
|
|
63
|
+
export declare function pipelineMemo_count(client: object): number;
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.pipelineRecord_recall = pipelineRecord_recall;
|
|
4
|
+
exports.pipelineRecord_keep = pipelineRecord_keep;
|
|
5
|
+
exports.pipelineResource_recall = pipelineResource_recall;
|
|
6
|
+
exports.pipelineResource_keep = pipelineResource_keep;
|
|
7
|
+
exports.pipeline_forget = pipeline_forget;
|
|
8
|
+
exports.pipelineMemo_count = pipelineMemo_count;
|
|
9
|
+
/** Memos by client: a new connection starts empty. */
|
|
10
|
+
const memos = new WeakMap();
|
|
11
|
+
/**
|
|
12
|
+
* The memo of one client, made on first use.
|
|
13
|
+
*
|
|
14
|
+
* @param client - The connection's chrisapi client.
|
|
15
|
+
* @returns That client's memo.
|
|
16
|
+
*/
|
|
17
|
+
function memo_for(client) {
|
|
18
|
+
const kept = memos.get(client);
|
|
19
|
+
if (kept !== undefined)
|
|
20
|
+
return kept;
|
|
21
|
+
const made = { records: new Map(), resources: new Map() };
|
|
22
|
+
memos.set(client, made);
|
|
23
|
+
return made;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Recalls a resolution.
|
|
27
|
+
*
|
|
28
|
+
* @param client - The connection's chrisapi client.
|
|
29
|
+
* @param specifier - The name or id string that was asked.
|
|
30
|
+
* @returns The record, or null when this session never resolved it.
|
|
31
|
+
*/
|
|
32
|
+
function pipelineRecord_recall(client, specifier) {
|
|
33
|
+
return memo_for(client).records.get(specifier) ?? null;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Keeps a resolution under the specifier asked and under the record's own
|
|
37
|
+
* name and id, so any of the three answers next time.
|
|
38
|
+
*
|
|
39
|
+
* @param client - The connection's chrisapi client.
|
|
40
|
+
* @param specifier - The name or id string that was asked.
|
|
41
|
+
* @param record - The record it resolved to.
|
|
42
|
+
*/
|
|
43
|
+
function pipelineRecord_keep(client, specifier, record) {
|
|
44
|
+
const memo = memo_for(client);
|
|
45
|
+
memo.records.set(specifier, record);
|
|
46
|
+
memo.records.set(record.name, record);
|
|
47
|
+
memo.records.set(String(record.id), record);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Recalls the chrisapi item of a pipeline.
|
|
51
|
+
*
|
|
52
|
+
* @param client - The connection's chrisapi client.
|
|
53
|
+
* @param pipelineID - The pipeline's id.
|
|
54
|
+
* @returns The item, or null when none was served this session.
|
|
55
|
+
*/
|
|
56
|
+
function pipelineResource_recall(client, pipelineID) {
|
|
57
|
+
return memo_for(client).resources.get(pipelineID) ?? null;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Keeps the chrisapi item a search or a get served.
|
|
61
|
+
*
|
|
62
|
+
* @param client - The connection's chrisapi client.
|
|
63
|
+
* @param pipelineID - The pipeline's id.
|
|
64
|
+
* @param resource - The chrisapi pipeline item.
|
|
65
|
+
*/
|
|
66
|
+
function pipelineResource_keep(client, pipelineID, resource) {
|
|
67
|
+
memo_for(client).resources.set(pipelineID, resource);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Forgets one pipeline: its item and every specifier that resolved to it.
|
|
71
|
+
* Called when an item kept turns out not to answer (the pipeline was
|
|
72
|
+
* removed under the session), so the next ask resolves afresh.
|
|
73
|
+
*
|
|
74
|
+
* @param client - The connection's chrisapi client.
|
|
75
|
+
* @param pipelineID - The pipeline's id.
|
|
76
|
+
*/
|
|
77
|
+
function pipeline_forget(client, pipelineID) {
|
|
78
|
+
const memo = memo_for(client);
|
|
79
|
+
memo.resources.delete(pipelineID);
|
|
80
|
+
for (const [specifier, record] of memo.records) {
|
|
81
|
+
if (record.id === pipelineID)
|
|
82
|
+
memo.records.delete(specifier);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* How many resolutions a client's memo holds (for tests and readouts).
|
|
87
|
+
*
|
|
88
|
+
* @param client - The connection's chrisapi client.
|
|
89
|
+
* @returns The count of specifiers kept.
|
|
90
|
+
*/
|
|
91
|
+
function pipelineMemo_count(client) {
|
|
92
|
+
return memos.get(client)?.records.size ?? 0;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=pipelineMemo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipelineMemo.js","sourceRoot":"","sources":["../../src/pipelines/pipelineMemo.ts"],"names":[],"mappings":";;AA+CA,sDAEC;AAUD,kDAKC;AASD,0DAEC;AASD,sDAEC;AAUD,0CAMC;AAQD,gDAEC;AAzFD,sDAAsD;AACtD,MAAM,KAAK,GAAkC,IAAI,OAAO,EAAE,CAAC;AAE3D;;;;;GAKG;AACH,SAAS,QAAQ,CAAC,MAAc;IAC9B,MAAM,IAAI,GAA6B,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACzD,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,IAAI,GAAiB,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;IACxE,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACxB,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,qBAAqB,CAAC,MAAc,EAAE,SAAiB;IACrE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;AACzD,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,mBAAmB,CAAC,MAAc,EAAE,SAAiB,EAAE,MAAsB;IAC3F,MAAM,IAAI,GAAiB,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACpC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,uBAAuB,CAAC,MAAc,EAAE,UAAkB;IACxE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;AAC5D,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,qBAAqB,CAAC,MAAc,EAAE,UAAkB,EAAE,QAAgB;IACxF,QAAQ,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AACvD,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,eAAe,CAAC,MAAc,EAAE,UAAkB;IAChE,MAAM,IAAI,GAAiB,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAClC,KAAK,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/C,IAAI,MAAM,CAAC,EAAE,KAAK,UAAU;YAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAC,MAAc;IAC/C,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC;AAC9C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fnndsc/cumin",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.26.0",
|
|
4
4
|
"description": "Utility library for ChILI and other ChRIS-related JavaScript applications",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -23,6 +23,11 @@
|
|
|
23
23
|
"types": "./dist/index.d.ts",
|
|
24
24
|
"require": "./dist/index.js"
|
|
25
25
|
},
|
|
26
|
+
"./request-ledger": {
|
|
27
|
+
"import": "./dist/net/requestLedger.js",
|
|
28
|
+
"types": "./dist/net/requestLedger.d.ts",
|
|
29
|
+
"require": "./dist/net/requestLedger.js"
|
|
30
|
+
},
|
|
26
31
|
"./dicom-payload": {
|
|
27
32
|
"import": "./dist/pacs/dicomPayload.js",
|
|
28
33
|
"types": "./dist/pacs/dicomPayload.d.ts",
|
|
@@ -63,6 +68,6 @@
|
|
|
63
68
|
"@fnndsc/chrisapi": "^1.25.0",
|
|
64
69
|
"chalk": "^4.1.2",
|
|
65
70
|
"figlet": "^1.7.0",
|
|
66
|
-
"@fnndsc/menu": "^0.
|
|
71
|
+
"@fnndsc/menu": "^0.14.0"
|
|
67
72
|
}
|
|
68
73
|
}
|