@elaraai/e3-cli 0.0.2-beta.11 → 0.0.2-beta.13

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.
Files changed (63) hide show
  1. package/README.md +21 -9
  2. package/dist/src/cli.js +29 -14
  3. package/dist/src/cli.js.map +1 -1
  4. package/dist/src/commands/auth.d.ts +21 -0
  5. package/dist/src/commands/auth.d.ts.map +1 -0
  6. package/dist/src/commands/auth.js +185 -0
  7. package/dist/src/commands/auth.js.map +1 -0
  8. package/dist/src/commands/get.d.ts.map +1 -1
  9. package/dist/src/commands/get.js +32 -14
  10. package/dist/src/commands/get.js.map +1 -1
  11. package/dist/src/commands/list.d.ts.map +1 -1
  12. package/dist/src/commands/list.js +47 -14
  13. package/dist/src/commands/list.js.map +1 -1
  14. package/dist/src/commands/logs.d.ts.map +1 -1
  15. package/dist/src/commands/logs.js +126 -54
  16. package/dist/src/commands/logs.js.map +1 -1
  17. package/dist/src/commands/package.d.ts.map +1 -1
  18. package/dist/src/commands/package.js +55 -18
  19. package/dist/src/commands/package.js.map +1 -1
  20. package/dist/src/commands/repo.d.ts +29 -0
  21. package/dist/src/commands/repo.d.ts.map +1 -0
  22. package/dist/src/commands/repo.js +231 -0
  23. package/dist/src/commands/repo.js.map +1 -0
  24. package/dist/src/commands/run.d.ts.map +1 -1
  25. package/dist/src/commands/run.js +4 -3
  26. package/dist/src/commands/run.js.map +1 -1
  27. package/dist/src/commands/set.d.ts.map +1 -1
  28. package/dist/src/commands/set.js +16 -5
  29. package/dist/src/commands/set.js.map +1 -1
  30. package/dist/src/commands/start.d.ts.map +1 -1
  31. package/dist/src/commands/start.js +166 -47
  32. package/dist/src/commands/start.js.map +1 -1
  33. package/dist/src/commands/tree.d.ts.map +1 -1
  34. package/dist/src/commands/tree.js +110 -16
  35. package/dist/src/commands/tree.js.map +1 -1
  36. package/dist/src/commands/watch.d.ts.map +1 -1
  37. package/dist/src/commands/watch.js +8 -6
  38. package/dist/src/commands/watch.js.map +1 -1
  39. package/dist/src/commands/workspace.d.ts +4 -0
  40. package/dist/src/commands/workspace.d.ts.map +1 -1
  41. package/dist/src/commands/workspace.js +269 -29
  42. package/dist/src/commands/workspace.js.map +1 -1
  43. package/dist/src/credentials.d.ts +123 -0
  44. package/dist/src/credentials.d.ts.map +1 -0
  45. package/dist/src/credentials.js +213 -0
  46. package/dist/src/credentials.js.map +1 -0
  47. package/dist/src/utils.d.ts +48 -0
  48. package/dist/src/utils.d.ts.map +1 -1
  49. package/dist/src/utils.js +58 -0
  50. package/dist/src/utils.js.map +1 -1
  51. package/package.json +7 -6
  52. package/dist/src/commands/gc.d.ts +0 -12
  53. package/dist/src/commands/gc.d.ts.map +0 -1
  54. package/dist/src/commands/gc.js +0 -44
  55. package/dist/src/commands/gc.js.map +0 -1
  56. package/dist/src/commands/init.d.ts +0 -9
  57. package/dist/src/commands/init.d.ts.map +0 -1
  58. package/dist/src/commands/init.js +0 -33
  59. package/dist/src/commands/init.js.map +0 -1
  60. package/dist/src/commands/status.d.ts +0 -9
  61. package/dist/src/commands/status.d.ts.map +0 -1
  62. package/dist/src/commands/status.js +0 -157
  63. package/dist/src/commands/status.js.map +0 -1
@@ -5,16 +5,24 @@
5
5
  /**
6
6
  * e3 workspace commands - Workspace management
7
7
  */
8
- import { workspaceCreate, workspaceDeploy, workspaceExport, workspaceList, workspaceRemove, workspaceGetState, WorkspaceLockError, } from '@elaraai/e3-core';
9
- import { resolveRepo, parsePackageSpec, formatError, exitError } from '../utils.js';
8
+ import { workspaceCreate, workspaceDeploy, workspaceExport, workspaceList, workspaceRemove, workspaceGetState, workspaceStatus, WorkspaceLockError, LocalStorage, } from '@elaraai/e3-core';
9
+ import { workspaceCreate as workspaceCreateRemote, workspaceDeploy as workspaceDeployRemote, workspaceExport as workspaceExportRemote, workspaceList as workspaceListRemote, workspaceRemove as workspaceRemoveRemote, workspaceStatus as workspaceStatusRemote, } from '@elaraai/e3-api-client';
10
+ import { writeFileSync } from 'node:fs';
11
+ import { parseRepoLocation, parsePackageSpec, formatError, exitError } from '../utils.js';
10
12
  export const workspaceCommand = {
11
13
  /**
12
14
  * Create an empty workspace.
13
15
  */
14
16
  async create(repoArg, name) {
15
17
  try {
16
- const repoPath = resolveRepo(repoArg);
17
- await workspaceCreate(repoPath, name);
18
+ const location = await parseRepoLocation(repoArg);
19
+ if (location.type === 'local') {
20
+ const storage = new LocalStorage();
21
+ await workspaceCreate(storage, location.path, name);
22
+ }
23
+ else {
24
+ await workspaceCreateRemote(location.baseUrl, location.repo, name, { token: location.token });
25
+ }
18
26
  console.log(`Created workspace: ${name}`);
19
27
  console.log('Deploy a package with: e3 workspace deploy <repo> <ws> <pkg>[@<ver>]');
20
28
  }
@@ -27,9 +35,17 @@ export const workspaceCommand = {
27
35
  */
28
36
  async deploy(repoArg, ws, pkgSpec) {
29
37
  try {
30
- const repoPath = resolveRepo(repoArg);
38
+ const location = await parseRepoLocation(repoArg);
31
39
  const { name, version } = parsePackageSpec(pkgSpec);
32
- await workspaceDeploy(repoPath, ws, name, version);
40
+ if (location.type === 'local') {
41
+ const storage = new LocalStorage();
42
+ await workspaceDeploy(storage, location.path, ws, name, version);
43
+ }
44
+ else {
45
+ // Remote API accepts packageRef string (name@version)
46
+ const packageRef = version === 'latest' ? name : `${name}@${version}`;
47
+ await workspaceDeployRemote(location.baseUrl, location.repo, ws, packageRef, { token: location.token });
48
+ }
33
49
  console.log(`Deployed ${name}@${version} to workspace: ${ws}`);
34
50
  }
35
51
  catch (err) {
@@ -46,12 +62,27 @@ export const workspaceCommand = {
46
62
  */
47
63
  async export(repoArg, ws, zipPath, options) {
48
64
  try {
49
- const repoPath = resolveRepo(repoArg);
50
- const result = await workspaceExport(repoPath, ws, zipPath, options.name, options.version);
51
- console.log(`Exported workspace ${ws} as ${result.name}@${result.version}`);
52
- console.log(` Output: ${zipPath}`);
53
- console.log(` Package hash: ${result.packageHash.slice(0, 12)}...`);
54
- console.log(` Objects: ${result.objectCount}`);
65
+ const location = await parseRepoLocation(repoArg);
66
+ if (location.type === 'local') {
67
+ const storage = new LocalStorage();
68
+ const result = await workspaceExport(storage, location.path, ws, zipPath, options.name, options.version);
69
+ console.log(`Exported workspace ${ws} as ${result.name}@${result.version}`);
70
+ console.log(` Output: ${zipPath}`);
71
+ console.log(` Package hash: ${result.packageHash.slice(0, 12)}...`);
72
+ console.log(` Objects: ${result.objectCount}`);
73
+ }
74
+ else {
75
+ // Remote export - fetch zip bytes and write to local file
76
+ // Note: Remote export doesn't support custom name/version options
77
+ if (options.name || options.version) {
78
+ console.warn('Warning: --name and --version options are not supported for remote export');
79
+ }
80
+ const zipBytes = await workspaceExportRemote(location.baseUrl, location.repo, ws, { token: location.token });
81
+ writeFileSync(zipPath, zipBytes);
82
+ console.log(`Exported workspace ${ws}`);
83
+ console.log(` Output: ${zipPath}`);
84
+ console.log(` Size: ${zipBytes.length} bytes`);
85
+ }
55
86
  }
56
87
  catch (err) {
57
88
  exitError(formatError(err));
@@ -62,20 +93,41 @@ export const workspaceCommand = {
62
93
  */
63
94
  async list(repoArg) {
64
95
  try {
65
- const repoPath = resolveRepo(repoArg);
66
- const workspaces = await workspaceList(repoPath);
67
- if (workspaces.length === 0) {
68
- console.log('No workspaces');
69
- return;
70
- }
71
- console.log('Workspaces:');
72
- for (const ws of workspaces) {
73
- const state = await workspaceGetState(repoPath, ws);
74
- if (state) {
75
- console.log(` ${ws} (${state.packageName}@${state.packageVersion})`);
96
+ const location = await parseRepoLocation(repoArg);
97
+ if (location.type === 'local') {
98
+ const storage = new LocalStorage();
99
+ const workspaces = await workspaceList(storage, location.path);
100
+ if (workspaces.length === 0) {
101
+ console.log('No workspaces');
102
+ return;
103
+ }
104
+ console.log('Workspaces:');
105
+ for (const ws of workspaces) {
106
+ const state = await workspaceGetState(storage, location.path, ws);
107
+ if (state) {
108
+ console.log(` ${ws} (${state.packageName}@${state.packageVersion})`);
109
+ }
110
+ else {
111
+ console.log(` ${ws} (not deployed)`);
112
+ }
113
+ }
114
+ }
115
+ else {
116
+ // Remote - workspaceListRemote returns WorkspaceInfo[] with package info
117
+ const workspaces = await workspaceListRemote(location.baseUrl, location.repo, { token: location.token });
118
+ if (workspaces.length === 0) {
119
+ console.log('No workspaces');
120
+ return;
76
121
  }
77
- else {
78
- console.log(` ${ws} (not deployed)`);
122
+ console.log('Workspaces:');
123
+ for (const info of workspaces) {
124
+ if (info.deployed && info.packageName.type === 'some') {
125
+ const pkgVersion = info.packageVersion.type === 'some' ? info.packageVersion.value : 'unknown';
126
+ console.log(` ${info.name} (${info.packageName.value}@${pkgVersion})`);
127
+ }
128
+ else {
129
+ console.log(` ${info.name} (not deployed)`);
130
+ }
79
131
  }
80
132
  }
81
133
  }
@@ -88,10 +140,17 @@ export const workspaceCommand = {
88
140
  */
89
141
  async remove(repoArg, ws) {
90
142
  try {
91
- const repoPath = resolveRepo(repoArg);
92
- await workspaceRemove(repoPath, ws);
93
- console.log(`Removed workspace: ${ws}`);
94
- console.log('Run `e3 gc` to reclaim disk space');
143
+ const location = await parseRepoLocation(repoArg);
144
+ if (location.type === 'local') {
145
+ const storage = new LocalStorage();
146
+ await workspaceRemove(storage, location.path, ws);
147
+ console.log(`Removed workspace: ${ws}`);
148
+ console.log('Run `e3 repo gc` to reclaim disk space');
149
+ }
150
+ else {
151
+ await workspaceRemoveRemote(location.baseUrl, location.repo, ws, { token: location.token });
152
+ console.log(`Removed workspace: ${ws}`);
153
+ }
95
154
  }
96
155
  catch (err) {
97
156
  if (err instanceof WorkspaceLockError) {
@@ -102,5 +161,186 @@ export const workspaceCommand = {
102
161
  exitError(formatError(err));
103
162
  }
104
163
  },
164
+ /**
165
+ * Show detailed workspace status.
166
+ */
167
+ async status(repoArg, ws) {
168
+ try {
169
+ const location = await parseRepoLocation(repoArg);
170
+ let status;
171
+ if (location.type === 'local') {
172
+ const storage = new LocalStorage();
173
+ status = await workspaceStatus(storage, location.path, ws);
174
+ }
175
+ else {
176
+ const remoteStatus = await workspaceStatusRemote(location.baseUrl, location.repo, ws, { token: location.token });
177
+ // Convert remote status to local format
178
+ status = {
179
+ workspace: remoteStatus.workspace,
180
+ lock: remoteStatus.lock.type === 'some' ? {
181
+ pid: Number(remoteStatus.lock.value.pid),
182
+ acquiredAt: remoteStatus.lock.value.acquiredAt,
183
+ operation: remoteStatus.lock.value.command.type === 'some' ? remoteStatus.lock.value.command.value : undefined,
184
+ } : null,
185
+ datasets: remoteStatus.datasets.map(d => ({
186
+ path: d.path,
187
+ status: d.status,
188
+ hash: d.hash.type === 'some' ? d.hash.value : null,
189
+ isTaskOutput: d.isTaskOutput,
190
+ producedBy: d.producedBy.type === 'some' ? d.producedBy.value : null,
191
+ })),
192
+ tasks: remoteStatus.tasks.map(t => ({
193
+ name: t.name,
194
+ hash: t.hash,
195
+ status: convertTaskStatus(t.status),
196
+ inputs: t.inputs,
197
+ output: t.output,
198
+ dependsOn: t.dependsOn,
199
+ })),
200
+ summary: {
201
+ datasets: {
202
+ total: Number(remoteStatus.summary.datasets.total),
203
+ unset: Number(remoteStatus.summary.datasets.unset),
204
+ stale: Number(remoteStatus.summary.datasets.stale),
205
+ upToDate: Number(remoteStatus.summary.datasets.upToDate),
206
+ },
207
+ tasks: {
208
+ total: Number(remoteStatus.summary.tasks.total),
209
+ upToDate: Number(remoteStatus.summary.tasks.upToDate),
210
+ ready: Number(remoteStatus.summary.tasks.ready),
211
+ waiting: Number(remoteStatus.summary.tasks.waiting),
212
+ inProgress: Number(remoteStatus.summary.tasks.inProgress),
213
+ failed: Number(remoteStatus.summary.tasks.failed),
214
+ error: Number(remoteStatus.summary.tasks.error),
215
+ staleRunning: Number(remoteStatus.summary.tasks.staleRunning),
216
+ },
217
+ },
218
+ };
219
+ }
220
+ console.log(`Workspace: ${status.workspace}`);
221
+ console.log('');
222
+ // Lock status
223
+ if (status.lock) {
224
+ console.log('Lock:');
225
+ console.log(` Held by PID ${status.lock.pid}`);
226
+ console.log(` Since: ${status.lock.acquiredAt}`);
227
+ if (status.lock.operation) {
228
+ console.log(` Operation: ${status.lock.operation}`);
229
+ }
230
+ console.log('');
231
+ }
232
+ // Summary
233
+ console.log('Summary:');
234
+ console.log(` Datasets: ${status.summary.datasets.upToDate} up-to-date, ${status.summary.datasets.stale} stale, ${status.summary.datasets.unset} unset`);
235
+ // Build task summary line - only include non-zero counts
236
+ const taskParts = [];
237
+ if (status.summary.tasks.upToDate > 0)
238
+ taskParts.push(`${status.summary.tasks.upToDate} up-to-date`);
239
+ if (status.summary.tasks.ready > 0)
240
+ taskParts.push(`${status.summary.tasks.ready} ready`);
241
+ if (status.summary.tasks.waiting > 0)
242
+ taskParts.push(`${status.summary.tasks.waiting} waiting`);
243
+ if (status.summary.tasks.inProgress > 0)
244
+ taskParts.push(`${status.summary.tasks.inProgress} in-progress`);
245
+ if (status.summary.tasks.failed > 0)
246
+ taskParts.push(`${status.summary.tasks.failed} failed`);
247
+ if (status.summary.tasks.error > 0)
248
+ taskParts.push(`${status.summary.tasks.error} error`);
249
+ if (status.summary.tasks.staleRunning > 0)
250
+ taskParts.push(`${status.summary.tasks.staleRunning} stale-running`);
251
+ console.log(` Tasks: ${taskParts.join(', ') || 'none'}`);
252
+ console.log('');
253
+ // Tasks section
254
+ if (status.tasks.length > 0) {
255
+ console.log('Tasks:');
256
+ for (const task of status.tasks) {
257
+ const statusStr = formatTaskStatus(task.status);
258
+ console.log(` ${task.name}: ${statusStr}`);
259
+ if (task.dependsOn.length > 0) {
260
+ console.log(` depends on: ${task.dependsOn.join(', ')}`);
261
+ }
262
+ }
263
+ console.log('');
264
+ }
265
+ // Datasets section (only show non-up-to-date ones for brevity)
266
+ const nonUpToDate = status.datasets.filter(d => d.status.type !== 'up-to-date');
267
+ if (nonUpToDate.length > 0) {
268
+ console.log('Datasets needing attention:');
269
+ for (const dataset of nonUpToDate) {
270
+ const statusStr = dataset.status.type === 'unset' ? 'unset' : 'stale';
271
+ const producer = dataset.producedBy ? ` (from ${dataset.producedBy})` : ' (input)';
272
+ console.log(` ${dataset.path}: ${statusStr}${producer}`);
273
+ }
274
+ }
275
+ else if (status.datasets.length > 0) {
276
+ console.log('All datasets up-to-date');
277
+ }
278
+ }
279
+ catch (err) {
280
+ exitError(formatError(err));
281
+ }
282
+ },
105
283
  };
284
+ /**
285
+ * Convert remote task status to local format.
286
+ */
287
+ function convertTaskStatus(status) {
288
+ switch (status.type) {
289
+ case 'up-to-date':
290
+ return { type: 'up-to-date', cached: Boolean(status.cached) };
291
+ case 'ready':
292
+ return { type: 'ready' };
293
+ case 'waiting':
294
+ return { type: 'waiting', reason: String(status.reason ?? '') };
295
+ case 'in-progress':
296
+ return {
297
+ type: 'in-progress',
298
+ pid: status.pid?.type === 'some' ? Number(status.pid.value) : undefined,
299
+ startedAt: status.startedAt?.type === 'some' ? status.startedAt.value : undefined,
300
+ };
301
+ case 'failed':
302
+ return {
303
+ type: 'failed',
304
+ exitCode: Number(status.exitCode ?? 0),
305
+ completedAt: status.completedAt?.type === 'some' ? status.completedAt.value : undefined,
306
+ };
307
+ case 'error':
308
+ return {
309
+ type: 'error',
310
+ message: String(status.message ?? ''),
311
+ completedAt: status.completedAt?.type === 'some' ? status.completedAt.value : undefined,
312
+ };
313
+ case 'stale-running':
314
+ return {
315
+ type: 'stale-running',
316
+ pid: status.pid?.type === 'some' ? Number(status.pid.value) : undefined,
317
+ startedAt: status.startedAt?.type === 'some' ? status.startedAt.value : undefined,
318
+ };
319
+ default:
320
+ return { type: 'ready' };
321
+ }
322
+ }
323
+ /**
324
+ * Format task status for display.
325
+ */
326
+ function formatTaskStatus(status) {
327
+ switch (status.type) {
328
+ case 'up-to-date':
329
+ return status.cached ? 'up-to-date (cached)' : 'up-to-date';
330
+ case 'ready':
331
+ return 'ready to run';
332
+ case 'waiting':
333
+ return `waiting (${status.reason})`;
334
+ case 'in-progress':
335
+ return status.pid ? `in-progress (PID ${status.pid})` : 'in-progress';
336
+ case 'failed':
337
+ return `FAILED (exit code ${status.exitCode})`;
338
+ case 'error':
339
+ return `ERROR: ${status.message}`;
340
+ case 'stale-running':
341
+ return `stale-running (PID ${status.pid} no longer exists)`;
342
+ default:
343
+ return 'unknown';
344
+ }
345
+ }
106
346
  //# sourceMappingURL=workspace.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../src/commands/workspace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../src/commands/workspace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ /**
6
+ * Single credential entry for a server.
7
+ */
8
+ export interface CredentialEntry {
9
+ /** JWT access token */
10
+ accessToken: string;
11
+ /** JWT refresh token */
12
+ refreshToken: string;
13
+ /** Access token expiration (ISO 8601) */
14
+ expiresAt: string;
15
+ }
16
+ /**
17
+ * Credentials file structure.
18
+ */
19
+ export interface CredentialsFile {
20
+ /** File format version */
21
+ version: 1;
22
+ /** Credentials keyed by server URL (normalized, no trailing slash) */
23
+ credentials: Record<string, CredentialEntry>;
24
+ }
25
+ /**
26
+ * OIDC Discovery document.
27
+ */
28
+ export interface OidcDiscovery {
29
+ issuer: string;
30
+ device_authorization_endpoint: string;
31
+ token_endpoint: string;
32
+ jwks_uri: string;
33
+ }
34
+ /**
35
+ * Device authorization response.
36
+ */
37
+ export interface DeviceAuthResponse {
38
+ device_code: string;
39
+ user_code: string;
40
+ verification_uri: string;
41
+ verification_uri_complete: string;
42
+ expires_in: number;
43
+ interval: number;
44
+ }
45
+ /**
46
+ * Token response from OAuth2 token endpoint.
47
+ */
48
+ export interface TokenResponse {
49
+ access_token: string;
50
+ refresh_token: string;
51
+ token_type: string;
52
+ expires_in: number;
53
+ }
54
+ /**
55
+ * Token error response.
56
+ */
57
+ export interface TokenErrorResponse {
58
+ error: string;
59
+ error_description?: string;
60
+ }
61
+ /**
62
+ * Normalize server URL (remove trailing slash).
63
+ */
64
+ export declare function normalizeServerUrl(url: string): string;
65
+ /**
66
+ * Load credentials file.
67
+ */
68
+ export declare function loadCredentials(): CredentialsFile;
69
+ /**
70
+ * Save credentials file.
71
+ */
72
+ export declare function saveCredentials(file: CredentialsFile): void;
73
+ /**
74
+ * Get credential for a server.
75
+ */
76
+ export declare function getCredential(serverUrl: string): CredentialEntry | null;
77
+ /**
78
+ * Set credential for a server.
79
+ */
80
+ export declare function setCredential(serverUrl: string, entry: CredentialEntry): void;
81
+ /**
82
+ * Remove credential for a server.
83
+ */
84
+ export declare function removeCredential(serverUrl: string): boolean;
85
+ /**
86
+ * List all saved credentials.
87
+ */
88
+ export declare function listCredentials(): Array<{
89
+ server: string;
90
+ expiresAt: string;
91
+ }>;
92
+ /**
93
+ * Check if a token expiration time has passed.
94
+ */
95
+ export declare function isExpired(expiresAt: string): boolean;
96
+ /**
97
+ * Fetch OIDC discovery document.
98
+ */
99
+ export declare function fetchDiscovery(serverUrl: string): Promise<OidcDiscovery>;
100
+ /**
101
+ * Start device authorization flow.
102
+ */
103
+ export declare function startDeviceAuth(discovery: OidcDiscovery): Promise<DeviceAuthResponse>;
104
+ /**
105
+ * Poll for device code approval.
106
+ */
107
+ export declare function pollForTokens(discovery: OidcDiscovery, deviceCode: string, interval: number, expiresIn: number): Promise<TokenResponse>;
108
+ /**
109
+ * Refresh an access token using a refresh token.
110
+ */
111
+ export declare function refreshAccessToken(serverUrl: string, refreshToken: string): Promise<TokenResponse>;
112
+ /**
113
+ * Get a valid access token for a server.
114
+ *
115
+ * If the current token is expired, attempts to refresh it.
116
+ * Throws if not logged in or refresh fails.
117
+ */
118
+ export declare function getValidToken(serverUrl: string): Promise<string>;
119
+ /**
120
+ * Decode JWT payload without verification (for display purposes only).
121
+ */
122
+ export declare function decodeJwtPayload(token: string): Record<string, unknown>;
123
+ //# sourceMappingURL=credentials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/credentials.ts"],"names":[],"mappings":"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"}