@databasin/mcp-client 0.1.0 → 0.2.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/README.md +132 -61
- package/dist/auth-schema.d.ts +23 -0
- package/dist/auth-schema.d.ts.map +1 -0
- package/dist/auth-schema.js +42 -0
- package/dist/auth-schema.js.map +1 -0
- package/dist/auth-tools.d.ts +10 -0
- package/dist/auth-tools.d.ts.map +1 -0
- package/dist/auth-tools.js +60 -0
- package/dist/auth-tools.js.map +1 -0
- package/dist/auth.d.ts +22 -11
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +71 -71
- package/dist/auth.js.map +1 -1
- package/dist/browser.d.ts +20 -1
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +19 -17
- package/dist/browser.js.map +1 -1
- package/dist/cli.d.ts +31 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +148 -67
- package/dist/cli.js.map +1 -1
- package/dist/config.js +2 -2
- package/dist/config.js.map +1 -1
- package/dist/correlation.d.ts +6 -0
- package/dist/correlation.d.ts.map +1 -0
- package/dist/correlation.js +15 -0
- package/dist/correlation.js.map +1 -0
- package/dist/credential-store.d.ts +21 -0
- package/dist/credential-store.d.ts.map +1 -0
- package/dist/credential-store.js +46 -0
- package/dist/credential-store.js.map +1 -0
- package/dist/errors.d.ts +17 -3
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +24 -6
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/login-url.d.ts +18 -0
- package/dist/login-url.d.ts.map +1 -0
- package/dist/login-url.js +82 -0
- package/dist/login-url.js.map +1 -0
- package/dist/mcp-endpoint.d.ts +5 -0
- package/dist/mcp-endpoint.d.ts.map +1 -0
- package/dist/mcp-endpoint.js +22 -0
- package/dist/mcp-endpoint.js.map +1 -0
- package/dist/proxy-tools.d.ts +5 -0
- package/dist/proxy-tools.d.ts.map +1 -0
- package/dist/proxy-tools.js +39 -0
- package/dist/proxy-tools.js.map +1 -0
- package/dist/remote-mcp.d.ts +27 -0
- package/dist/remote-mcp.d.ts.map +1 -0
- package/dist/remote-mcp.js +70 -0
- package/dist/remote-mcp.js.map +1 -0
- package/dist/safety.d.ts +4 -0
- package/dist/safety.d.ts.map +1 -1
- package/dist/safety.js +94 -10
- package/dist/safety.js.map +1 -1
- package/dist/server.d.ts +4 -6
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +32 -15
- package/dist/server.js.map +1 -1
- package/dist/token-validation.d.ts +5 -0
- package/dist/token-validation.d.ts.map +1 -0
- package/dist/token-validation.js +183 -0
- package/dist/token-validation.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +12 -7
- package/dist/api-client.d.ts +0 -43
- package/dist/api-client.d.ts.map +0 -1
- package/dist/api-client.js +0 -154
- package/dist/api-client.js.map +0 -1
- package/dist/mappers.d.ts +0 -56
- package/dist/mappers.d.ts.map +0 -1
- package/dist/mappers.js +0 -171
- package/dist/mappers.js.map +0 -1
- package/dist/schemas.d.ts +0 -154
- package/dist/schemas.d.ts.map +0 -1
- package/dist/schemas.js +0 -102
- package/dist/schemas.js.map +0 -1
- package/dist/tools.d.ts +0 -17
- package/dist/tools.d.ts.map +0 -1
- package/dist/tools.js +0 -117
- package/dist/tools.js.map +0 -1
package/dist/auth.js
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { homedir } from 'node:os';
|
|
3
|
-
import { join } from 'node:path';
|
|
4
|
-
import { InteractionRequiredAuthError, PublicClientApplication } from '@azure/msal-node';
|
|
5
|
-
import { DataProtectionScope, PersistenceCachePlugin, PersistenceCreator } from '@azure/msal-node-extensions';
|
|
1
|
+
import { InteractionRequiredAuthError } from '@azure/msal-node';
|
|
6
2
|
import { openSystemBrowser } from './browser.js';
|
|
7
|
-
import {
|
|
3
|
+
import { createSecurePublicClient } from './credential-store.js';
|
|
8
4
|
import { DataBasinError, LoginRequiredError } from './errors.js';
|
|
5
|
+
import { projectDevicePrompt, validateInteractiveLoginUrl } from './login-url.js';
|
|
6
|
+
import { accountMatchesProfile, validateAccessTokenResult } from './token-validation.js';
|
|
9
7
|
export class AuthManager {
|
|
10
8
|
profile;
|
|
11
9
|
clientPromise;
|
|
@@ -14,10 +12,12 @@ export class AuthManager {
|
|
|
14
12
|
lastLoginFailed = false;
|
|
15
13
|
createClient;
|
|
16
14
|
openBrowser;
|
|
15
|
+
now;
|
|
17
16
|
constructor(profile, options = {}) {
|
|
18
17
|
this.profile = profile;
|
|
19
18
|
this.createClient = options.createClient ?? (() => createSecurePublicClient(profile));
|
|
20
19
|
this.openBrowser = options.openBrowser ?? openSystemBrowser;
|
|
20
|
+
this.now = options.now ?? Date.now;
|
|
21
21
|
}
|
|
22
22
|
async getAccessToken() {
|
|
23
23
|
this.tokenPromise ??= this.acquireSilent().finally(() => {
|
|
@@ -45,46 +45,70 @@ export class AuthManager {
|
|
|
45
45
|
}
|
|
46
46
|
return this.assistantResult('pending', outcome.prompt.verificationUri, `Open the Microsoft sign-in URL on any device and enter code ${outcome.prompt.userCode}. Then call databasin_auth_status.`, outcome.prompt.userCode, login.expiresAt);
|
|
47
47
|
}
|
|
48
|
+
cancelPendingLogin() {
|
|
49
|
+
this.activeLogin?.cancel();
|
|
50
|
+
}
|
|
48
51
|
async getLoginStatus() {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
if (this.activeLogin)
|
|
53
|
+
return this.pendingAssistantResult(this.activeLogin);
|
|
54
|
+
const authenticated = await this.cachedAssistantResult();
|
|
55
|
+
if (authenticated)
|
|
56
|
+
return authenticated;
|
|
57
|
+
if (this.lastLoginFailed)
|
|
58
|
+
return this.failedAssistantResult();
|
|
59
|
+
return this.assistantResult('not_authenticated', null, `DataBasin ${this.profile.label} is not signed in. Call databasin_login to begin.`);
|
|
60
|
+
}
|
|
61
|
+
pendingAssistantResult(login) {
|
|
62
|
+
const message = login.prompt
|
|
63
|
+
? `Open the Microsoft sign-in URL on any device and enter code ${login.prompt.userCode}.`
|
|
64
|
+
: 'Microsoft is preparing the device sign-in instructions.';
|
|
65
|
+
return this.assistantResult('pending', login.prompt?.verificationUri ?? null, message, login.prompt?.userCode, login.expiresAt);
|
|
66
|
+
}
|
|
67
|
+
async cachedAssistantResult() {
|
|
55
68
|
const cachedStatus = await this.status();
|
|
56
|
-
if (cachedStatus.authenticated)
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
catch (error) {
|
|
62
|
-
if (!(error instanceof DataBasinError) || error.code !== 'UNAUTHENTICATED')
|
|
63
|
-
throw error;
|
|
64
|
-
}
|
|
69
|
+
if (!cachedStatus.authenticated)
|
|
70
|
+
return undefined;
|
|
71
|
+
try {
|
|
72
|
+
await this.getAccessToken();
|
|
73
|
+
return this.assistantResult('authenticated', null, `DataBasin ${this.profile.label} is signed in.`);
|
|
65
74
|
}
|
|
66
|
-
|
|
67
|
-
|
|
75
|
+
catch (error) {
|
|
76
|
+
if (error instanceof DataBasinError && error.code === 'UNAUTHENTICATED')
|
|
77
|
+
return undefined;
|
|
78
|
+
throw error;
|
|
68
79
|
}
|
|
69
|
-
|
|
80
|
+
}
|
|
81
|
+
failedAssistantResult() {
|
|
82
|
+
return this.assistantResult('failed', null, `DataBasin ${this.profile.label} sign-in did not complete. Call databasin_login to try again.`);
|
|
70
83
|
}
|
|
71
84
|
beginDeviceLogin() {
|
|
72
85
|
if (this.activeLogin)
|
|
73
86
|
return this.activeLogin;
|
|
74
87
|
this.lastLoginFailed = false;
|
|
75
88
|
let resolvePrompted = () => undefined;
|
|
89
|
+
let cancelRequested = false;
|
|
90
|
+
let deviceRequest;
|
|
76
91
|
const login = {
|
|
77
92
|
prompted: new Promise((resolve) => {
|
|
78
93
|
resolvePrompted = resolve;
|
|
79
94
|
}),
|
|
80
95
|
completion: Promise.resolve({ authenticated: false, environment: this.profile.environment }),
|
|
81
96
|
prompt: undefined,
|
|
82
|
-
expiresAt: undefined
|
|
97
|
+
expiresAt: undefined,
|
|
98
|
+
cancel: () => {
|
|
99
|
+
cancelRequested = true;
|
|
100
|
+
if (deviceRequest)
|
|
101
|
+
deviceRequest.cancel = true;
|
|
102
|
+
}
|
|
83
103
|
};
|
|
84
104
|
login.completion = this.performDeviceLogin((prompt) => {
|
|
85
105
|
login.prompt = prompt;
|
|
86
|
-
login.expiresAt = new Date(
|
|
106
|
+
login.expiresAt = new Date(this.now() + prompt.expiresIn * 1_000).toISOString();
|
|
87
107
|
resolvePrompted(prompt);
|
|
108
|
+
}, (request) => {
|
|
109
|
+
deviceRequest = request;
|
|
110
|
+
if (cancelRequested)
|
|
111
|
+
request.cancel = true;
|
|
88
112
|
}).catch((error) => {
|
|
89
113
|
this.lastLoginFailed = true;
|
|
90
114
|
throw error;
|
|
@@ -96,15 +120,18 @@ export class AuthManager {
|
|
|
96
120
|
void login.completion.catch(() => undefined);
|
|
97
121
|
return login;
|
|
98
122
|
}
|
|
99
|
-
async performDeviceLogin(onPrompt) {
|
|
123
|
+
async performDeviceLogin(onPrompt, onRequest) {
|
|
100
124
|
const client = await this.client();
|
|
101
125
|
let result;
|
|
102
126
|
try {
|
|
103
|
-
|
|
127
|
+
const request = {
|
|
104
128
|
scopes: [...this.profile.scopes],
|
|
105
129
|
timeout: 900,
|
|
106
|
-
|
|
107
|
-
|
|
130
|
+
cancel: false,
|
|
131
|
+
deviceCodeCallback: (response) => onPrompt(projectDevicePrompt(response))
|
|
132
|
+
};
|
|
133
|
+
onRequest(request);
|
|
134
|
+
result = await client.acquireTokenByDeviceCode(request);
|
|
108
135
|
}
|
|
109
136
|
catch {
|
|
110
137
|
throw new DataBasinError('UNAUTHENTICATED', `DataBasin ${this.profile.label} sign-in did not complete.`);
|
|
@@ -117,7 +144,7 @@ export class AuthManager {
|
|
|
117
144
|
try {
|
|
118
145
|
result = await client.acquireTokenInteractive({
|
|
119
146
|
scopes: [...this.profile.scopes],
|
|
120
|
-
openBrowser,
|
|
147
|
+
openBrowser: async (url) => openBrowser(validateInteractiveLoginUrl(url, this.profile)),
|
|
121
148
|
prompt: 'select_account',
|
|
122
149
|
successTemplate: successPage(this.profile.label),
|
|
123
150
|
errorTemplate: errorPage()
|
|
@@ -129,20 +156,22 @@ export class AuthManager {
|
|
|
129
156
|
return this.completeLogin(client, result);
|
|
130
157
|
}
|
|
131
158
|
async completeLogin(client, result) {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
}
|
|
159
|
+
validateAccessTokenResult(result, this.profile, this.now());
|
|
160
|
+
const account = result.account;
|
|
135
161
|
const accounts = await client.getAllAccounts();
|
|
136
162
|
await Promise.all(accounts
|
|
137
|
-
.filter((
|
|
163
|
+
.filter((cachedAccount) => cachedAccount.homeAccountId !== account.homeAccountId)
|
|
138
164
|
.map((account) => client.signOut({ account })));
|
|
139
165
|
return {
|
|
140
166
|
authenticated: true,
|
|
141
167
|
environment: this.profile.environment,
|
|
142
|
-
username:
|
|
168
|
+
username: account.username
|
|
143
169
|
};
|
|
144
170
|
}
|
|
145
171
|
assistantResult(status, loginUrl, message, userCode, expiresAt) {
|
|
172
|
+
if (status !== 'pending') {
|
|
173
|
+
return { status, environment: this.profile.environment, loginUrl: null, message };
|
|
174
|
+
}
|
|
146
175
|
return {
|
|
147
176
|
status,
|
|
148
177
|
environment: this.profile.environment,
|
|
@@ -160,21 +189,19 @@ export class AuthManager {
|
|
|
160
189
|
}
|
|
161
190
|
async status() {
|
|
162
191
|
const accounts = await (await this.client()).getAllAccounts();
|
|
163
|
-
const account = selectAccount(accounts, this.profile
|
|
192
|
+
const account = selectAccount(accounts, this.profile);
|
|
164
193
|
return account
|
|
165
194
|
? { authenticated: true, environment: this.profile.environment, username: account.username }
|
|
166
195
|
: { authenticated: false, environment: this.profile.environment };
|
|
167
196
|
}
|
|
168
197
|
async acquireSilent() {
|
|
169
198
|
const client = await this.client();
|
|
170
|
-
const account = selectAccount(await client.getAllAccounts(), this.profile
|
|
199
|
+
const account = selectAccount(await client.getAllAccounts(), this.profile);
|
|
171
200
|
if (!account)
|
|
172
201
|
throw new LoginRequiredError(this.profile.environment);
|
|
173
202
|
try {
|
|
174
203
|
const result = await client.acquireTokenSilent({ account, scopes: [...this.profile.scopes] });
|
|
175
|
-
|
|
176
|
-
throw new LoginRequiredError(this.profile.environment);
|
|
177
|
-
return result.accessToken;
|
|
204
|
+
return validateAccessTokenResult(result, this.profile, this.now());
|
|
178
205
|
}
|
|
179
206
|
catch (error) {
|
|
180
207
|
if (error instanceof InteractionRequiredAuthError) {
|
|
@@ -194,36 +221,8 @@ export class AuthManager {
|
|
|
194
221
|
return this.clientPromise;
|
|
195
222
|
}
|
|
196
223
|
}
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
await mkdir(cacheDirectory, { recursive: true, mode: 0o700 });
|
|
200
|
-
const persistence = await PersistenceCreator.createPersistence({
|
|
201
|
-
cachePath: join(cacheDirectory, 'msal-cache.lock'),
|
|
202
|
-
dataProtectionScope: DataProtectionScope.CurrentUser,
|
|
203
|
-
serviceName: 'com.databasin.mcp',
|
|
204
|
-
accountName: profile.environment,
|
|
205
|
-
usePlaintextFileOnLinux: false
|
|
206
|
-
});
|
|
207
|
-
const configuration = {
|
|
208
|
-
auth: {
|
|
209
|
-
clientId: profile.clientId,
|
|
210
|
-
authority: authorityFor(profile)
|
|
211
|
-
},
|
|
212
|
-
cache: {
|
|
213
|
-
cachePlugin: new PersistenceCachePlugin(persistence)
|
|
214
|
-
},
|
|
215
|
-
system: {
|
|
216
|
-
loggerOptions: {
|
|
217
|
-
piiLoggingEnabled: false,
|
|
218
|
-
logLevel: 0,
|
|
219
|
-
loggerCallback: () => undefined
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
};
|
|
223
|
-
return new PublicClientApplication(configuration);
|
|
224
|
-
}
|
|
225
|
-
function selectAccount(accounts, tenantId) {
|
|
226
|
-
return accounts.find((account) => account.tenantId.toLowerCase() === tenantId.toLowerCase()) ?? accounts[0];
|
|
224
|
+
function selectAccount(accounts, profile) {
|
|
225
|
+
return accounts.find((account) => accountMatchesProfile(account, profile));
|
|
227
226
|
}
|
|
228
227
|
function successPage(label) {
|
|
229
228
|
return `<!doctype html><html><body><h1>DataBasin sign-in complete</h1><p>You are signed in to ${label}. You can close this window.</p></body></html>`;
|
|
@@ -231,4 +230,5 @@ function successPage(label) {
|
|
|
231
230
|
function errorPage() {
|
|
232
231
|
return '<!doctype html><html><body><h1>DataBasin sign-in failed</h1><p>Return to your assistant or terminal and try again.</p></body></html>';
|
|
233
232
|
}
|
|
233
|
+
export { createSecurePublicClient } from './credential-store.js';
|
|
234
234
|
//# sourceMappingURL=auth.js.map
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/browser.d.ts
CHANGED
|
@@ -1,2 +1,21 @@
|
|
|
1
|
-
|
|
1
|
+
interface BrowserChild {
|
|
2
|
+
once(event: 'spawn' | 'error', listener: () => void): BrowserChild;
|
|
3
|
+
unref(): void;
|
|
4
|
+
}
|
|
5
|
+
export interface BrowserDependencies {
|
|
6
|
+
platform: NodeJS.Platform;
|
|
7
|
+
spawnProcess(executable: string, args: string[], options: {
|
|
8
|
+
detached: true;
|
|
9
|
+
stdio: 'ignore';
|
|
10
|
+
windowsHide: true;
|
|
11
|
+
shell: false;
|
|
12
|
+
}): BrowserChild;
|
|
13
|
+
writeError(message: string): void;
|
|
14
|
+
}
|
|
15
|
+
export declare function openSystemBrowser(rawUrl: string, dependencies?: BrowserDependencies): Promise<void>;
|
|
16
|
+
export declare function browserCommand(url: string, platform: NodeJS.Platform): {
|
|
17
|
+
executable: string;
|
|
18
|
+
args: string[];
|
|
19
|
+
};
|
|
20
|
+
export {};
|
|
2
21
|
//# sourceMappingURL=browser.d.ts.map
|
package/dist/browser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAIA,UAAU,YAAY;IACpB,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,YAAY,CAAC;IACnE,KAAK,IAAI,IAAI,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE;QACxD,QAAQ,EAAE,IAAI,CAAC;QACf,KAAK,EAAE,QAAQ,CAAC;QAChB,WAAW,EAAE,IAAI,CAAC;QAClB,KAAK,EAAE,KAAK,CAAC;KACd,GAAG,YAAY,CAAC;IACjB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,YAAY,GAAE,mBAA0C,GACvD,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAM7G"}
|
package/dist/browser.js
CHANGED
|
@@ -1,34 +1,36 @@
|
|
|
1
1
|
import { spawn } from 'node:child_process';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
7
|
-
const command = browserCommand(url.toString());
|
|
2
|
+
import { validateInteractiveLoginUrl } from './login-url.js';
|
|
3
|
+
export async function openSystemBrowser(rawUrl, dependencies = DEFAULT_DEPENDENCIES) {
|
|
4
|
+
const safeUrl = validateInteractiveLoginUrl(rawUrl);
|
|
5
|
+
const command = browserCommand(safeUrl, dependencies.platform);
|
|
8
6
|
await new Promise((resolve) => {
|
|
9
|
-
const child =
|
|
7
|
+
const child = dependencies.spawnProcess(command.executable, command.args, {
|
|
10
8
|
detached: true,
|
|
11
9
|
stdio: 'ignore',
|
|
12
|
-
windowsHide: true
|
|
10
|
+
windowsHide: true,
|
|
11
|
+
shell: false
|
|
13
12
|
});
|
|
14
13
|
child.once('spawn', () => {
|
|
15
14
|
child.unref();
|
|
16
15
|
resolve();
|
|
17
16
|
});
|
|
18
17
|
child.once('error', () => {
|
|
19
|
-
|
|
18
|
+
dependencies.writeError(`Open this URL to sign in to DataBasin:\n${safeUrl}\n`);
|
|
20
19
|
resolve();
|
|
21
20
|
});
|
|
22
21
|
});
|
|
23
22
|
}
|
|
24
|
-
function browserCommand(url) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
return { executable: 'rundll32.exe', args: ['url.dll,FileProtocolHandler', url] };
|
|
30
|
-
default:
|
|
31
|
-
return { executable: 'xdg-open', args: [url] };
|
|
23
|
+
export function browserCommand(url, platform) {
|
|
24
|
+
if (platform === 'darwin')
|
|
25
|
+
return { executable: 'open', args: [url] };
|
|
26
|
+
if (platform === 'win32') {
|
|
27
|
+
return { executable: 'rundll32.exe', args: ['url.dll,FileProtocolHandler', url] };
|
|
32
28
|
}
|
|
29
|
+
return { executable: 'xdg-open', args: [url] };
|
|
33
30
|
}
|
|
31
|
+
const DEFAULT_DEPENDENCIES = Object.freeze({
|
|
32
|
+
platform: process.platform,
|
|
33
|
+
spawnProcess: (executable, args, options) => spawn(executable, args, options),
|
|
34
|
+
writeError: (message) => process.stderr.write(message)
|
|
35
|
+
});
|
|
34
36
|
//# sourceMappingURL=browser.js.map
|
package/dist/browser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAkB7D,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAc,EACd,eAAoC,oBAAoB;IAExD,MAAM,OAAO,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC/D,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAClC,MAAM,KAAK,GAAG,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,EAAE;YACxE,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,QAAQ;YACf,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;YACvB,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;YACvB,YAAY,CAAC,UAAU,CAAC,2CAA2C,OAAO,IAAI,CAAC,CAAC;YAChF,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAW,EAAE,QAAyB;IACnE,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;IACtE,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,6BAA6B,EAAE,GAAG,CAAC,EAAE,CAAC;IACpF,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;AACjD,CAAC;AAED,MAAM,oBAAoB,GAAwB,MAAM,CAAC,MAAM,CAAC;IAC9D,QAAQ,EAAE,OAAO,CAAC,QAAQ;IAC1B,YAAY,EAAE,CACZ,UAAkB,EAClB,IAAc,EACd,OAA6E,EAC7E,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC;IACrC,UAAU,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;CAC/D,CAAC,CAAC"}
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,11 +1,40 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { type DataBasinEnvironment } from './config.js';
|
|
3
|
-
type Command = 'serve' | 'login' | 'logout' | 'status' | 'help' | 'version';
|
|
3
|
+
type Command = 'serve' | 'login' | 'logout' | 'status' | 'doctor' | 'help' | 'version';
|
|
4
4
|
export interface CliOptions {
|
|
5
5
|
command: Command;
|
|
6
6
|
environment: DataBasinEnvironment;
|
|
7
7
|
}
|
|
8
|
+
interface CliAuth {
|
|
9
|
+
login(): Promise<{
|
|
10
|
+
username?: string;
|
|
11
|
+
}>;
|
|
12
|
+
logout(): Promise<number>;
|
|
13
|
+
status(): Promise<{
|
|
14
|
+
authenticated: boolean;
|
|
15
|
+
username?: string;
|
|
16
|
+
}>;
|
|
17
|
+
}
|
|
18
|
+
interface CliServerHandle {
|
|
19
|
+
close(): Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
export interface CliDependencies {
|
|
22
|
+
writeOutput(message: string): void;
|
|
23
|
+
createAuth(environment: DataBasinEnvironment): Promise<CliAuth>;
|
|
24
|
+
serve(environment: DataBasinEnvironment): Promise<CliServerHandle>;
|
|
25
|
+
onceSignal(signal: 'SIGINT' | 'SIGTERM', listener: () => void): void;
|
|
26
|
+
runtimeVersion?: string;
|
|
27
|
+
runtimePlatform?: NodeJS.Platform;
|
|
28
|
+
}
|
|
29
|
+
export interface EntrypointDependencies {
|
|
30
|
+
run(args: string[]): Promise<void>;
|
|
31
|
+
writeError(message: string): void;
|
|
32
|
+
fail(): void;
|
|
33
|
+
}
|
|
8
34
|
export declare function parseCliArgs(args: string[]): CliOptions;
|
|
9
|
-
export declare function runCli(args: string[]): Promise<void>;
|
|
35
|
+
export declare function runCli(args: string[], dependencies?: CliDependencies): Promise<void>;
|
|
36
|
+
export declare function isSupportedNodeVersion(version: string): boolean;
|
|
37
|
+
export declare function runEntrypoint(args: string[], dependencies?: EntrypointDependencies): Promise<void>;
|
|
38
|
+
export declare function isEntrypoint(executablePath?: string | undefined, modulePath?: string): boolean;
|
|
10
39
|
export {};
|
|
11
40
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAMA,OAAO,EAAkC,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAKxF,KAAK,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAEvF,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,oBAAoB,CAAC;CACnC;AAED,UAAU,OAAO;IACf,KAAK,IAAI,OAAO,CAAC;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1B,MAAM,IAAI,OAAO,CAAC;QAAE,aAAa,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClE;AAED,UAAU,eAAe;IACvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,UAAU,CAAC,WAAW,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAChE,KAAK,CAAC,WAAW,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACnE,UAAU,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IACrE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;CACnC;AAED,MAAM,WAAW,sBAAsB;IACrC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,IAAI,IAAI,IAAI,CAAC;CACd;AAeD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAMvD;AAuCD,wBAAsB,MAAM,CAC1B,IAAI,EAAE,MAAM,EAAE,EACd,YAAY,GAAE,eAAsC,GACnD,OAAO,CAAC,IAAI,CAAC,CAef;AAuED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAM/D;AA4CD,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EAAE,EACd,YAAY,GAAE,sBAAwD,GACrE,OAAO,CAAC,IAAI,CAAC,CAQf;AAED,wBAAgB,YAAY,CAC1B,cAAc,GAAE,MAAM,GAAG,SAA2B,EACpD,UAAU,SAAiC,GAC1C,OAAO,CAOT"}
|