@fnndsc/cumin 3.2.4 → 3.5.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/activities/chrisActivity.d.ts +1 -1
- package/dist/chrisapi/adapter.d.ts +142 -0
- package/dist/chrisapi/adapter.js +196 -0
- package/dist/chrisapi/adapter.js.map +1 -0
- package/dist/cli.js.map +1 -1
- package/dist/compute/computeResources.js +3 -2
- package/dist/compute/computeResources.js.map +1 -1
- package/dist/connect/chrisConnection.d.ts +8 -4
- package/dist/connect/chrisConnection.js +12 -8
- package/dist/connect/chrisConnection.js.map +1 -1
- package/dist/error/errorStack.d.ts +48 -0
- package/dist/error/errorStack.js +71 -10
- package/dist/error/errorStack.js.map +1 -1
- package/dist/feeds/chrisFeed.d.ts +1 -3
- package/dist/feeds/chrisFeed.js +4 -3
- package/dist/feeds/chrisFeed.js.map +1 -1
- package/dist/filebrowser/chrisFileBrowser.d.ts +1 -2
- package/dist/filebrowser/chrisFileBrowser.js.map +1 -1
- package/dist/filebrowser/chrisFiles.d.ts +1 -1
- package/dist/filebrowser/chrisFiles.js.map +1 -1
- package/dist/filebrowser/chrisPipeline.js +4 -3
- package/dist/filebrowser/chrisPipeline.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/io/chrisIO.d.ts +1 -1
- package/dist/io/chrisIO.js +4 -3
- package/dist/io/chrisIO.js.map +1 -1
- package/dist/jobs/chrisJob.js +5 -4
- package/dist/jobs/chrisJob.js.map +1 -1
- package/dist/pacs/chrisPACS.js +12 -49
- package/dist/pacs/chrisPACS.js.map +1 -1
- package/dist/pipelines/chrisPipeline.js +19 -15
- package/dist/pipelines/chrisPipeline.js.map +1 -1
- package/dist/plugins/chrisPlugins.d.ts +1 -1
- package/dist/plugins/chrisPlugins.js +16 -19
- package/dist/plugins/chrisPlugins.js.map +1 -1
- package/dist/resources/chrisEmbeddedResourceGroup.d.ts +1 -1
- package/dist/resources/chrisEmbeddedResourceGroup.js +1 -1
- package/dist/resources/chrisResourceGroup.d.ts +1 -1
- package/dist/resources/chrisResources.d.ts +1 -2
- package/dist/resources/chrisResources.js +7 -7
- package/dist/resources/chrisResources.js.map +1 -1
- package/dist/users/chrisUsers.js +7 -2
- package/dist/users/chrisUsers.js.map +1 -1
- package/dist/utils/envelope.d.ts +115 -0
- package/dist/utils/envelope.js +70 -0
- package/dist/utils/envelope.js.map +1 -0
- package/package.json +6 -5
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file ChRIS API adapter — the single seam between cumin and `@fnndsc/chrisapi`.
|
|
3
|
+
*
|
|
4
|
+
* This module is the only place in cumin that imports `@fnndsc/chrisapi` and
|
|
5
|
+
* the only place allowed to cast against its objects. The chrisapi typings
|
|
6
|
+
* lag the real API surface (missing methods, untyped `data` payloads), so
|
|
7
|
+
* every other module works through the small set of generics exported here:
|
|
8
|
+
* lifecycle (`authToken_get`, `client_create`), payload extractors
|
|
9
|
+
* (`listData_get`, `itemData_get`, `items_get`, `collectionItems_get`),
|
|
10
|
+
* dynamic dispatch for methods absent from the typings (`resource_call`),
|
|
11
|
+
* and client-shape helpers (`client_authGet`, `client_adminUrlEnsure`).
|
|
12
|
+
*
|
|
13
|
+
* Domain modules pass their own target type `T`; the adapter performs the
|
|
14
|
+
* cast. This keeps the unsafe surface auditable in one file and gives tests
|
|
15
|
+
* a single boundary to stub.
|
|
16
|
+
*
|
|
17
|
+
* @module
|
|
18
|
+
*/
|
|
19
|
+
import Client, { ListResource } from '@fnndsc/chrisapi';
|
|
20
|
+
/**
|
|
21
|
+
* The chrisapi Client class, re-exported as a value.
|
|
22
|
+
*
|
|
23
|
+
* Kept as a value (not `export type`) because downstream packages call
|
|
24
|
+
* static methods such as `Client.getAuthToken` through cumin's public API.
|
|
25
|
+
*/
|
|
26
|
+
export { Client };
|
|
27
|
+
export type { ListResource, Resource, ItemResource, GroupList, ComputeResourceList, PluginInstance, PluginList, Feed, CommentList, Note, Comment, FileBrowserFolder, UserFile, PACSFile, PipelineSourceFile, PipelineSourceFileList, } from '@fnndsc/chrisapi';
|
|
28
|
+
/**
|
|
29
|
+
* Authentication slice of a connected chrisapi Client.
|
|
30
|
+
*
|
|
31
|
+
* The chrisapi typings omit the `auth` property although it exists at
|
|
32
|
+
* runtime on every connected client.
|
|
33
|
+
*
|
|
34
|
+
* @property cubeUrl - Base URL of the CUBE instance, when present.
|
|
35
|
+
* @property token - The bearer token for the current session.
|
|
36
|
+
*/
|
|
37
|
+
export interface ClientAuth {
|
|
38
|
+
cubeUrl?: string;
|
|
39
|
+
token: string;
|
|
40
|
+
[key: string]: unknown;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Requests an authentication token from a CUBE auth endpoint.
|
|
44
|
+
*
|
|
45
|
+
* @param authUrl - Full URL of the CUBE `auth-token/` endpoint.
|
|
46
|
+
* @param user - Username to authenticate as.
|
|
47
|
+
* @param password - Password for the user.
|
|
48
|
+
* @returns The bearer token string.
|
|
49
|
+
* @throws {Error} Propagates chrisapi/network errors (e.g. bad credentials).
|
|
50
|
+
*/
|
|
51
|
+
export declare function authToken_get(authUrl: string, user: string, password: string): Promise<string>;
|
|
52
|
+
/**
|
|
53
|
+
* Creates a chrisapi Client bound to a CUBE URL and bearer token.
|
|
54
|
+
*
|
|
55
|
+
* @param url - Base URL of the CUBE API (e.g. `https://cube/api/v1/`).
|
|
56
|
+
* @param token - Bearer token obtained from `authToken_get`.
|
|
57
|
+
* @returns A connected Client instance.
|
|
58
|
+
*/
|
|
59
|
+
export declare function client_create(url: string, token: string): Client;
|
|
60
|
+
/**
|
|
61
|
+
* Reads the runtime `auth` slice of a connected client.
|
|
62
|
+
*
|
|
63
|
+
* @param client - A connected chrisapi Client.
|
|
64
|
+
* @returns The client's auth object (token and, when present, cubeUrl).
|
|
65
|
+
*/
|
|
66
|
+
export declare function client_authGet(client: Client): ClientAuth;
|
|
67
|
+
/**
|
|
68
|
+
* Resolves the admin URL of a client, populating client URLs if needed.
|
|
69
|
+
*
|
|
70
|
+
* Non-admin users have no admin link; for them this resolves to null.
|
|
71
|
+
*
|
|
72
|
+
* @param client - A connected chrisapi Client.
|
|
73
|
+
* @returns The admin URL string, or null when the user has no admin access.
|
|
74
|
+
*/
|
|
75
|
+
export declare function client_adminUrlEnsure(client: Client): Promise<string | null>;
|
|
76
|
+
/**
|
|
77
|
+
* Narrows an arbitrary resource to a chrisapi ListResource.
|
|
78
|
+
*
|
|
79
|
+
* @param resource - Any value to test.
|
|
80
|
+
* @returns True when the value is a ListResource instance.
|
|
81
|
+
*/
|
|
82
|
+
export declare function resource_isList(resource: unknown): resource is ListResource;
|
|
83
|
+
/**
|
|
84
|
+
* Extracts the `data` payload of a list resource as a typed array.
|
|
85
|
+
*
|
|
86
|
+
* @param list - A chrisapi list resource (or anything carrying `data`).
|
|
87
|
+
* @returns The `data` array as `T[]`, or an empty array when absent.
|
|
88
|
+
*/
|
|
89
|
+
export declare function listData_get<T>(list: {
|
|
90
|
+
data?: unknown;
|
|
91
|
+
} | null | undefined): T[];
|
|
92
|
+
/**
|
|
93
|
+
* Extracts the `data` payload of an item resource as a typed object.
|
|
94
|
+
*
|
|
95
|
+
* @param item - A chrisapi item resource (or anything carrying `data`).
|
|
96
|
+
* @returns The `data` object as `T`, or null when absent.
|
|
97
|
+
*/
|
|
98
|
+
export declare function itemData_get<T>(item: {
|
|
99
|
+
data?: unknown;
|
|
100
|
+
} | null | undefined): T | null;
|
|
101
|
+
/**
|
|
102
|
+
* Returns the items of a list resource as a typed array.
|
|
103
|
+
*
|
|
104
|
+
* @param list - A chrisapi list resource exposing `getItems()`.
|
|
105
|
+
* @returns The items as `T[]`, or an empty array when absent.
|
|
106
|
+
*/
|
|
107
|
+
export declare function items_get<T>(list: {
|
|
108
|
+
getItems(): unknown;
|
|
109
|
+
} | null | undefined): T[];
|
|
110
|
+
/**
|
|
111
|
+
* Returns the collection+json items embedded in a resource as a typed array.
|
|
112
|
+
*
|
|
113
|
+
* @param resource - A chrisapi resource carrying a `collection` document.
|
|
114
|
+
* @returns The collection items as `T[]`, or an empty array when absent.
|
|
115
|
+
*/
|
|
116
|
+
export declare function collectionItems_get<T>(resource: {
|
|
117
|
+
collection?: unknown;
|
|
118
|
+
} | null | undefined): T[];
|
|
119
|
+
/**
|
|
120
|
+
* Invokes a method on a chrisapi object that its typings do not declare.
|
|
121
|
+
*
|
|
122
|
+
* Used for client/resource methods that exist at runtime but are missing or
|
|
123
|
+
* mistyped in `@fnndsc/chrisapi` (e.g. `createWorkflow`,
|
|
124
|
+
* `getPipelineSourceFiles`, `_post`, `put` with a `path` body).
|
|
125
|
+
*
|
|
126
|
+
* @param obj - The chrisapi object to dispatch on.
|
|
127
|
+
* @param methodName - Name of the runtime method to invoke.
|
|
128
|
+
* @param args - Arguments forwarded to the method.
|
|
129
|
+
* @returns The method's resolved value as `T`.
|
|
130
|
+
* @throws {Error} When the named method does not exist on the object.
|
|
131
|
+
*/
|
|
132
|
+
export declare function resource_call<T>(obj: object, methodName: string, ...args: unknown[]): Promise<T>;
|
|
133
|
+
/**
|
|
134
|
+
* Deletes a PACS retrieve resource addressed by URL.
|
|
135
|
+
*
|
|
136
|
+
* The chrisapi Client offers no delete-by-id for retrieves, so the resource
|
|
137
|
+
* is constructed directly from its REST URL and the client's auth.
|
|
138
|
+
*
|
|
139
|
+
* @param retrieveUrl - Full REST URL of the retrieve resource.
|
|
140
|
+
* @param auth - Auth slice of the connected client (from `client_authGet`).
|
|
141
|
+
*/
|
|
142
|
+
export declare function pacsRetrieve_deleteByUrl(retrieveUrl: string, auth: ClientAuth): Promise<void>;
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @file ChRIS API adapter — the single seam between cumin and `@fnndsc/chrisapi`.
|
|
4
|
+
*
|
|
5
|
+
* This module is the only place in cumin that imports `@fnndsc/chrisapi` and
|
|
6
|
+
* the only place allowed to cast against its objects. The chrisapi typings
|
|
7
|
+
* lag the real API surface (missing methods, untyped `data` payloads), so
|
|
8
|
+
* every other module works through the small set of generics exported here:
|
|
9
|
+
* lifecycle (`authToken_get`, `client_create`), payload extractors
|
|
10
|
+
* (`listData_get`, `itemData_get`, `items_get`, `collectionItems_get`),
|
|
11
|
+
* dynamic dispatch for methods absent from the typings (`resource_call`),
|
|
12
|
+
* and client-shape helpers (`client_authGet`, `client_adminUrlEnsure`).
|
|
13
|
+
*
|
|
14
|
+
* Domain modules pass their own target type `T`; the adapter performs the
|
|
15
|
+
* cast. This keeps the unsafe surface auditable in one file and gives tests
|
|
16
|
+
* a single boundary to stub.
|
|
17
|
+
*
|
|
18
|
+
* @module
|
|
19
|
+
*/
|
|
20
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
23
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
24
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
25
|
+
}
|
|
26
|
+
Object.defineProperty(o, k2, desc);
|
|
27
|
+
}) : (function(o, m, k, k2) {
|
|
28
|
+
if (k2 === undefined) k2 = k;
|
|
29
|
+
o[k2] = m[k];
|
|
30
|
+
}));
|
|
31
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
32
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
33
|
+
}) : function(o, v) {
|
|
34
|
+
o["default"] = v;
|
|
35
|
+
});
|
|
36
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
37
|
+
var ownKeys = function(o) {
|
|
38
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
39
|
+
var ar = [];
|
|
40
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
41
|
+
return ar;
|
|
42
|
+
};
|
|
43
|
+
return ownKeys(o);
|
|
44
|
+
};
|
|
45
|
+
return function (mod) {
|
|
46
|
+
if (mod && mod.__esModule) return mod;
|
|
47
|
+
var result = {};
|
|
48
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
49
|
+
__setModuleDefault(result, mod);
|
|
50
|
+
return result;
|
|
51
|
+
};
|
|
52
|
+
})();
|
|
53
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
54
|
+
exports.Client = void 0;
|
|
55
|
+
exports.authToken_get = authToken_get;
|
|
56
|
+
exports.client_create = client_create;
|
|
57
|
+
exports.client_authGet = client_authGet;
|
|
58
|
+
exports.client_adminUrlEnsure = client_adminUrlEnsure;
|
|
59
|
+
exports.resource_isList = resource_isList;
|
|
60
|
+
exports.listData_get = listData_get;
|
|
61
|
+
exports.itemData_get = itemData_get;
|
|
62
|
+
exports.items_get = items_get;
|
|
63
|
+
exports.collectionItems_get = collectionItems_get;
|
|
64
|
+
exports.resource_call = resource_call;
|
|
65
|
+
exports.pacsRetrieve_deleteByUrl = pacsRetrieve_deleteByUrl;
|
|
66
|
+
const chrisapi_1 = __importStar(require("@fnndsc/chrisapi"));
|
|
67
|
+
exports.Client = chrisapi_1.default;
|
|
68
|
+
/**
|
|
69
|
+
* Requests an authentication token from a CUBE auth endpoint.
|
|
70
|
+
*
|
|
71
|
+
* @param authUrl - Full URL of the CUBE `auth-token/` endpoint.
|
|
72
|
+
* @param user - Username to authenticate as.
|
|
73
|
+
* @param password - Password for the user.
|
|
74
|
+
* @returns The bearer token string.
|
|
75
|
+
* @throws {Error} Propagates chrisapi/network errors (e.g. bad credentials).
|
|
76
|
+
*/
|
|
77
|
+
async function authToken_get(authUrl, user, password) {
|
|
78
|
+
return chrisapi_1.default.getAuthToken(authUrl, user, password);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Creates a chrisapi Client bound to a CUBE URL and bearer token.
|
|
82
|
+
*
|
|
83
|
+
* @param url - Base URL of the CUBE API (e.g. `https://cube/api/v1/`).
|
|
84
|
+
* @param token - Bearer token obtained from `authToken_get`.
|
|
85
|
+
* @returns A connected Client instance.
|
|
86
|
+
*/
|
|
87
|
+
function client_create(url, token) {
|
|
88
|
+
return new chrisapi_1.default(url, { token });
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Reads the runtime `auth` slice of a connected client.
|
|
92
|
+
*
|
|
93
|
+
* @param client - A connected chrisapi Client.
|
|
94
|
+
* @returns The client's auth object (token and, when present, cubeUrl).
|
|
95
|
+
*/
|
|
96
|
+
function client_authGet(client) {
|
|
97
|
+
return client.auth;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Resolves the admin URL of a client, populating client URLs if needed.
|
|
101
|
+
*
|
|
102
|
+
* Non-admin users have no admin link; for them this resolves to null.
|
|
103
|
+
*
|
|
104
|
+
* @param client - A connected chrisapi Client.
|
|
105
|
+
* @returns The admin URL string, or null when the user has no admin access.
|
|
106
|
+
*/
|
|
107
|
+
async function client_adminUrlEnsure(client) {
|
|
108
|
+
const slice = client;
|
|
109
|
+
if (!slice.adminUrl && typeof slice.setUrls === 'function') {
|
|
110
|
+
await slice.setUrls().catch(() => undefined);
|
|
111
|
+
}
|
|
112
|
+
return slice.adminUrl ?? null;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Narrows an arbitrary resource to a chrisapi ListResource.
|
|
116
|
+
*
|
|
117
|
+
* @param resource - Any value to test.
|
|
118
|
+
* @returns True when the value is a ListResource instance.
|
|
119
|
+
*/
|
|
120
|
+
function resource_isList(resource) {
|
|
121
|
+
return resource instanceof chrisapi_1.ListResource;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Extracts the `data` payload of a list resource as a typed array.
|
|
125
|
+
*
|
|
126
|
+
* @param list - A chrisapi list resource (or anything carrying `data`).
|
|
127
|
+
* @returns The `data` array as `T[]`, or an empty array when absent.
|
|
128
|
+
*/
|
|
129
|
+
function listData_get(list) {
|
|
130
|
+
const data = list?.data;
|
|
131
|
+
return Array.isArray(data) ? data : [];
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Extracts the `data` payload of an item resource as a typed object.
|
|
135
|
+
*
|
|
136
|
+
* @param item - A chrisapi item resource (or anything carrying `data`).
|
|
137
|
+
* @returns The `data` object as `T`, or null when absent.
|
|
138
|
+
*/
|
|
139
|
+
function itemData_get(item) {
|
|
140
|
+
const data = item?.data;
|
|
141
|
+
return data === undefined || data === null ? null : data;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Returns the items of a list resource as a typed array.
|
|
145
|
+
*
|
|
146
|
+
* @param list - A chrisapi list resource exposing `getItems()`.
|
|
147
|
+
* @returns The items as `T[]`, or an empty array when absent.
|
|
148
|
+
*/
|
|
149
|
+
function items_get(list) {
|
|
150
|
+
const items = list?.getItems();
|
|
151
|
+
return Array.isArray(items) ? items : [];
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Returns the collection+json items embedded in a resource as a typed array.
|
|
155
|
+
*
|
|
156
|
+
* @param resource - A chrisapi resource carrying a `collection` document.
|
|
157
|
+
* @returns The collection items as `T[]`, or an empty array when absent.
|
|
158
|
+
*/
|
|
159
|
+
function collectionItems_get(resource) {
|
|
160
|
+
const items = resource?.collection?.items;
|
|
161
|
+
return Array.isArray(items) ? items : [];
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Invokes a method on a chrisapi object that its typings do not declare.
|
|
165
|
+
*
|
|
166
|
+
* Used for client/resource methods that exist at runtime but are missing or
|
|
167
|
+
* mistyped in `@fnndsc/chrisapi` (e.g. `createWorkflow`,
|
|
168
|
+
* `getPipelineSourceFiles`, `_post`, `put` with a `path` body).
|
|
169
|
+
*
|
|
170
|
+
* @param obj - The chrisapi object to dispatch on.
|
|
171
|
+
* @param methodName - Name of the runtime method to invoke.
|
|
172
|
+
* @param args - Arguments forwarded to the method.
|
|
173
|
+
* @returns The method's resolved value as `T`.
|
|
174
|
+
* @throws {Error} When the named method does not exist on the object.
|
|
175
|
+
*/
|
|
176
|
+
async function resource_call(obj, methodName, ...args) {
|
|
177
|
+
const method = obj[methodName];
|
|
178
|
+
if (typeof method !== 'function') {
|
|
179
|
+
throw new Error(`chrisapi object has no method '${methodName}'`);
|
|
180
|
+
}
|
|
181
|
+
return method.apply(obj, args);
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Deletes a PACS retrieve resource addressed by URL.
|
|
185
|
+
*
|
|
186
|
+
* The chrisapi Client offers no delete-by-id for retrieves, so the resource
|
|
187
|
+
* is constructed directly from its REST URL and the client's auth.
|
|
188
|
+
*
|
|
189
|
+
* @param retrieveUrl - Full REST URL of the retrieve resource.
|
|
190
|
+
* @param auth - Auth slice of the connected client (from `client_authGet`).
|
|
191
|
+
*/
|
|
192
|
+
async function pacsRetrieve_deleteByUrl(retrieveUrl, auth) {
|
|
193
|
+
const retrieve = new chrisapi_1.PACSRetrieve(retrieveUrl, auth);
|
|
194
|
+
await retrieve.delete();
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/chrisapi/adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;AACA;;;;GAIG;;;;;AAEH,oDAA4B;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;AACA;;;;GAIG;;;;;AAEH,oDAA4B;AAC5B,2BAAkC;AAClC,+BAA4B;AAG5B,+DAAkF;AAClF,4CAAmD;AACnD,gDAAsD;AAOtD,oBAAoB;AACpB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,IAAA,iBAAY,EAAC,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAC7D,CAAC;AACF,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;AAEpC;;;GAGG;AACH,KAAK,UAAU,IAAI;IACjB,MAAM,mBAAmB,GAAwB,IAAI,gCAAmB,EAAE,CAAC;IAC3E,MAAM,IAAA,sCAAoB,EAAC,mBAAmB,CAAC,CAAC;IAEhD,OAAO,CAAC,GAAG,CAAC,gBAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClB,OAAO,CAAC,GAAG,CACT,mEAAmE,CACpE,CAAC;IACF,OAAO,CAAC,GAAG,CACT,yEAAyE,CAC1E,CAAC;IACF,OAAO,CAAC,GAAG,CACT,wEAAwE,CACzE,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClB,OAAO,CAAC,GAAG,CACT,kEAAkE,CACnE,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,MAAM,iCAAe,CAAC,aAAa,EAAE,CAAC,CAAC;IACnF,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,MAAM,iCAAe,CAAC,YAAY,EAAE,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,yBAAgB,CAAC,CAAC;AAChC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
|
|
@@ -14,6 +14,7 @@ exports.computeResources_validate = computeResources_validate;
|
|
|
14
14
|
exports.computeResources_getAll = computeResources_getAll;
|
|
15
15
|
exports.computeResourceNames_parse = computeResourceNames_parse;
|
|
16
16
|
const chrisConnection_js_1 = require("../connect/chrisConnection.js");
|
|
17
|
+
const adapter_js_1 = require("../chrisapi/adapter.js");
|
|
17
18
|
const chrisResourceGroup_js_1 = require("../resources/chrisResourceGroup.js");
|
|
18
19
|
const errorStack_js_1 = require("../error/errorStack.js");
|
|
19
20
|
const result_js_1 = require("../utils/result.js");
|
|
@@ -52,7 +53,7 @@ async function computeResources_validate(resourceNames) {
|
|
|
52
53
|
return (0, result_js_1.Err)();
|
|
53
54
|
}
|
|
54
55
|
const computeResourceList = await client.getComputeResources();
|
|
55
|
-
const resources = computeResourceList
|
|
56
|
+
const resources = (0, adapter_js_1.listData_get)(computeResourceList);
|
|
56
57
|
const availableNames = new Set(resources.map((r) => r.name));
|
|
57
58
|
// Validate requested resources
|
|
58
59
|
const invalidResources = resourceNames.filter((name) => !availableNames.has(name));
|
|
@@ -83,7 +84,7 @@ async function computeResources_getAll() {
|
|
|
83
84
|
return (0, result_js_1.Err)();
|
|
84
85
|
}
|
|
85
86
|
const computeResourceList = await client.getComputeResources();
|
|
86
|
-
const resources = computeResourceList
|
|
87
|
+
const resources = (0, adapter_js_1.listData_get)(computeResourceList);
|
|
87
88
|
return (0, result_js_1.Ok)(resources);
|
|
88
89
|
}
|
|
89
90
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"computeResources.js","sourceRoot":"","sources":["../../src/compute/computeResources.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AA8CH,8DAqCC;AAOD,0DAiBC;AAcD,gEAKC;AA5HD,sEAAgE;
|
|
1
|
+
{"version":3,"file":"computeResources.js","sourceRoot":"","sources":["../../src/compute/computeResources.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
*
|
|
9
9
|
* @module
|
|
10
10
|
*/
|
|
11
|
-
import Client from "
|
|
11
|
+
import { Client } from "../chrisapi/adapter.js";
|
|
12
12
|
import { ConnectionConfig } from "../config/config.js";
|
|
13
13
|
import { IStorageProvider } from "../io/io.js";
|
|
14
14
|
/**
|
|
@@ -111,11 +111,15 @@ export declare class ChRISConnection {
|
|
|
111
111
|
private token_load;
|
|
112
112
|
}
|
|
113
113
|
/**
|
|
114
|
-
* Global instance of ChRISConnection,
|
|
114
|
+
* Global instance of ChRISConnection, a stable singleton.
|
|
115
|
+
*
|
|
116
|
+
* Never reassigned: ESM consumers snapshot named imports of this CJS
|
|
117
|
+
* module, so replacing the instance would leave them holding a stale,
|
|
118
|
+
* uninitialized object. `chrisConnection_init` initializes it in place.
|
|
115
119
|
*/
|
|
116
|
-
export declare
|
|
120
|
+
export declare const chrisConnection: ChRISConnection;
|
|
117
121
|
/**
|
|
118
|
-
* Initializes the global ChRISConnection instance.
|
|
122
|
+
* Initializes the global ChRISConnection instance in place.
|
|
119
123
|
* @param storageProvider - The storage provider to use for the connection.
|
|
120
124
|
*/
|
|
121
125
|
export declare function chrisConnection_init(storageProvider: IStorageProvider): Promise<ChRISConnection>;
|
|
@@ -15,8 +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
|
|
19
|
-
exports
|
|
18
|
+
const adapter_js_1 = require("../chrisapi/adapter.js");
|
|
19
|
+
Object.defineProperty(exports, "Client", { enumerable: true, get: function () { return adapter_js_1.Client; } });
|
|
20
20
|
const config_js_1 = require("../config/config.js");
|
|
21
21
|
const chrisContext_js_1 = require("../context/chrisContext.js");
|
|
22
22
|
const chrisIO_js_1 = require("../io/chrisIO.js");
|
|
@@ -93,7 +93,7 @@ class ChRISConnection {
|
|
|
93
93
|
await this._config.context_set(user, url);
|
|
94
94
|
this.tokenFile = this._config.tokenFilepath;
|
|
95
95
|
try {
|
|
96
|
-
this.authToken = await
|
|
96
|
+
this.authToken = await (0, adapter_js_1.authToken_get)(authUrl, user, password);
|
|
97
97
|
if (this.authToken) {
|
|
98
98
|
// console.log("Auth token: " + this.authToken);
|
|
99
99
|
await this.token_saveToFile(this.tokenFile, this.authToken);
|
|
@@ -219,7 +219,7 @@ class ChRISConnection {
|
|
|
219
219
|
this.chrisURL = await this.chrisURL_get();
|
|
220
220
|
this.authToken = await this.authToken_get(true); // Pass true directly
|
|
221
221
|
if (this.chrisURL && this.authToken) {
|
|
222
|
-
this.client =
|
|
222
|
+
this.client = (0, adapter_js_1.client_create)(this.chrisURL, this.authToken);
|
|
223
223
|
}
|
|
224
224
|
return this.client;
|
|
225
225
|
}
|
|
@@ -233,7 +233,7 @@ class ChRISConnection {
|
|
|
233
233
|
this.chrisURL &&
|
|
234
234
|
this.authToken) {
|
|
235
235
|
if (!this.client) {
|
|
236
|
-
this.client =
|
|
236
|
+
this.client = (0, adapter_js_1.client_create)(this.chrisURL, this.authToken);
|
|
237
237
|
}
|
|
238
238
|
}
|
|
239
239
|
return this.client;
|
|
@@ -287,16 +287,20 @@ class ChRISConnection {
|
|
|
287
287
|
}
|
|
288
288
|
exports.ChRISConnection = ChRISConnection;
|
|
289
289
|
/**
|
|
290
|
-
* Global instance of ChRISConnection,
|
|
290
|
+
* Global instance of ChRISConnection, a stable singleton.
|
|
291
|
+
*
|
|
292
|
+
* Never reassigned: ESM consumers snapshot named imports of this CJS
|
|
293
|
+
* module, so replacing the instance would leave them holding a stale,
|
|
294
|
+
* uninitialized object. `chrisConnection_init` initializes it in place.
|
|
291
295
|
*/
|
|
292
296
|
exports.chrisConnection = new ChRISConnection();
|
|
293
297
|
/**
|
|
294
|
-
* Initializes the global ChRISConnection instance.
|
|
298
|
+
* Initializes the global ChRISConnection instance in place.
|
|
295
299
|
* @param storageProvider - The storage provider to use for the connection.
|
|
296
300
|
*/
|
|
297
301
|
async function chrisConnection_init(storageProvider) {
|
|
298
302
|
await (0, config_js_1.config_init)(storageProvider); // This sets the global connectionConfig
|
|
299
|
-
exports.chrisConnection
|
|
303
|
+
exports.chrisConnection.init(config_js_1.connectionConfig, storageProvider);
|
|
300
304
|
chrisIO_js_1.chrisIO.storageProvider_set(storageProvider);
|
|
301
305
|
return exports.chrisConnection;
|
|
302
306
|
}
|
|
@@ -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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"}
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file Process-wide error/message stack for deferred, structured reporting.
|
|
3
3
|
*
|
|
4
|
+
* The stack is a process singleton, but it is *async-context aware*: work run
|
|
5
|
+
* inside {@link ErrorStack.scope_run} pushes to and pops from its own isolated
|
|
6
|
+
* stack rather than the shared one. This lets fire-and-forget background work
|
|
7
|
+
* (cache warming, background refreshes) keep its error traffic off the shared
|
|
8
|
+
* stack, so a foreground command that checkpoints the stack and drains it
|
|
9
|
+
* afterward (see {@link ErrorStack.checkpoint_mark} /
|
|
10
|
+
* {@link ErrorStack.checkpoint_drain}) captures only its own messages and is
|
|
11
|
+
* never corrupted by a background push landing in its drain window.
|
|
12
|
+
*
|
|
4
13
|
* @module
|
|
5
14
|
*/
|
|
6
15
|
type MessageType = "error" | "warning";
|
|
@@ -25,7 +34,46 @@ declare class ErrorStack {
|
|
|
25
34
|
private static instance;
|
|
26
35
|
private stack;
|
|
27
36
|
private functionNamePadWidth;
|
|
37
|
+
/**
|
|
38
|
+
* Holds the isolated stack for work running inside {@link scope_run}. When
|
|
39
|
+
* a store is present, all operations target it instead of the shared stack.
|
|
40
|
+
*/
|
|
41
|
+
private scopeStorage;
|
|
28
42
|
private constructor();
|
|
43
|
+
/**
|
|
44
|
+
* Returns the stack the current async context should operate on: the
|
|
45
|
+
* isolated stack when inside a {@link scope_run}, otherwise the shared one.
|
|
46
|
+
*
|
|
47
|
+
* @returns The active stack array.
|
|
48
|
+
*/
|
|
49
|
+
private stack_active;
|
|
50
|
+
/**
|
|
51
|
+
* Runs a function with an isolated error stack that the shared stack — and
|
|
52
|
+
* any foreground command draining it — never sees. Fire-and-forget
|
|
53
|
+
* background work wraps its body in this so its error traffic cannot land
|
|
54
|
+
* in a concurrent foreground command's drain window. The isolation follows
|
|
55
|
+
* the whole async causal chain started inside `fn`.
|
|
56
|
+
*
|
|
57
|
+
* @param fn - The work to run against a fresh, isolated stack.
|
|
58
|
+
* @returns Whatever `fn` returns.
|
|
59
|
+
*/
|
|
60
|
+
scope_run<T>(fn: () => T): T;
|
|
61
|
+
/**
|
|
62
|
+
* Marks the current depth of the active stack, for a later
|
|
63
|
+
* {@link checkpoint_drain}.
|
|
64
|
+
*
|
|
65
|
+
* @returns An opaque checkpoint (the current stack depth).
|
|
66
|
+
*/
|
|
67
|
+
checkpoint_mark(): number;
|
|
68
|
+
/**
|
|
69
|
+
* Removes and returns every message pushed above a checkpoint, so a command
|
|
70
|
+
* boundary can drain exactly the messages produced since it marked the
|
|
71
|
+
* stack. Messages the command's own code already popped are simply absent.
|
|
72
|
+
*
|
|
73
|
+
* @param checkpoint - A checkpoint from {@link checkpoint_mark}.
|
|
74
|
+
* @returns The drained messages, oldest first.
|
|
75
|
+
*/
|
|
76
|
+
checkpoint_drain(checkpoint: number): StackMessage[];
|
|
29
77
|
/**
|
|
30
78
|
* Get the singleton instance of the ErrorStack.
|
|
31
79
|
*
|