@kryshtop/bstack 1.0.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/LICENSE +21 -0
- package/README.md +324 -0
- package/dist/api/http/BrowserStackHttpClient.d.ts +30 -0
- package/dist/api/http/BrowserStackHttpClient.js +111 -0
- package/dist/api/http/BrowserStackHttpClient.js.map +1 -0
- package/dist/api/http/errors.d.ts +11 -0
- package/dist/api/http/errors.js +31 -0
- package/dist/api/http/errors.js.map +1 -0
- package/dist/api/http/multipart.d.ts +13 -0
- package/dist/api/http/multipart.js +28 -0
- package/dist/api/http/multipart.js.map +1 -0
- package/dist/api/normalizers/common.d.ts +7 -0
- package/dist/api/normalizers/common.js +106 -0
- package/dist/api/normalizers/common.js.map +1 -0
- package/dist/api/registry/EndpointRegistry.d.ts +10 -0
- package/dist/api/registry/EndpointRegistry.js +34 -0
- package/dist/api/registry/EndpointRegistry.js.map +1 -0
- package/dist/api/registry/definitions.d.ts +2 -0
- package/dist/api/registry/definitions.js +510 -0
- package/dist/api/registry/definitions.js.map +1 -0
- package/dist/api/registry/types.d.ts +23 -0
- package/dist/api/registry/types.js +2 -0
- package/dist/api/registry/types.js.map +1 -0
- package/dist/auth/AuthService.d.ts +24 -0
- package/dist/auth/AuthService.js +100 -0
- package/dist/auth/AuthService.js.map +1 -0
- package/dist/bin.d.ts +2 -0
- package/dist/bin.js +4 -0
- package/dist/bin.js.map +1 -0
- package/dist/cli/context.d.ts +39 -0
- package/dist/cli/context.js +117 -0
- package/dist/cli/context.js.map +1 -0
- package/dist/cli/output.d.ts +29 -0
- package/dist/cli/output.js +143 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/cli/program.d.ts +4 -0
- package/dist/cli/program.js +60 -0
- package/dist/cli/program.js.map +1 -0
- package/dist/cli/runCli.d.ts +1 -0
- package/dist/cli/runCli.js +31 -0
- package/dist/cli/runCli.js.map +1 -0
- package/dist/commands/auth.d.ts +3 -0
- package/dist/commands/auth.js +73 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/explorer.d.ts +3 -0
- package/dist/commands/explorer.js +86 -0
- package/dist/commands/explorer.js.map +1 -0
- package/dist/commands/framework.d.ts +3 -0
- package/dist/commands/framework.js +474 -0
- package/dist/commands/framework.js.map +1 -0
- package/dist/config/paths.d.ts +5 -0
- package/dist/config/paths.js +22 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/menus/interactiveMenu.d.ts +2 -0
- package/dist/menus/interactiveMenu.js +1106 -0
- package/dist/menus/interactiveMenu.js.map +1 -0
- package/dist/menus/screenModel.d.ts +12 -0
- package/dist/menus/screenModel.js +152 -0
- package/dist/menus/screenModel.js.map +1 -0
- package/dist/prompts/authPrompts.d.ts +10 -0
- package/dist/prompts/authPrompts.js +46 -0
- package/dist/prompts/authPrompts.js.map +1 -0
- package/dist/services/ResourceService.d.ts +25 -0
- package/dist/services/ResourceService.js +80 -0
- package/dist/services/ResourceService.js.map +1 -0
- package/dist/services/frameworkConfigs.d.ts +16 -0
- package/dist/services/frameworkConfigs.js +108 -0
- package/dist/services/frameworkConfigs.js.map +1 -0
- package/dist/storage/CredentialStore.d.ts +11 -0
- package/dist/storage/CredentialStore.js +2 -0
- package/dist/storage/CredentialStore.js.map +1 -0
- package/dist/storage/FileCredentialStores.d.ts +18 -0
- package/dist/storage/FileCredentialStores.js +74 -0
- package/dist/storage/FileCredentialStores.js.map +1 -0
- package/dist/storage/FileStorage.d.ts +3 -0
- package/dist/storage/FileStorage.js +18 -0
- package/dist/storage/FileStorage.js.map +1 -0
- package/dist/storage/KeytarCredentialStore.d.ts +9 -0
- package/dist/storage/KeytarCredentialStore.js +40 -0
- package/dist/storage/KeytarCredentialStore.js.map +1 -0
- package/dist/storage/SessionRepository.d.ts +28 -0
- package/dist/storage/SessionRepository.js +151 -0
- package/dist/storage/SessionRepository.js.map +1 -0
- package/dist/types/domain.d.ts +85 -0
- package/dist/types/domain.js +2 -0
- package/dist/types/domain.js.map +1 -0
- package/dist/utils/constants.d.ts +10 -0
- package/dist/utils/constants.js +11 -0
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/errors.d.ts +2 -0
- package/dist/utils/errors.js +12 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/files.d.ts +4 -0
- package/dist/utils/files.js +28 -0
- package/dist/utils/files.js.map +1 -0
- package/dist/utils/json.d.ts +2 -0
- package/dist/utils/json.js +10 -0
- package/dist/utils/json.js.map +1 -0
- package/dist/utils/mask.d.ts +2 -0
- package/dist/utils/mask.js +10 -0
- package/dist/utils/mask.js.map +1 -0
- package/dist/utils/query.d.ts +1 -0
- package/dist/utils/query.js +17 -0
- package/dist/utils/query.js.map +1 -0
- package/package.json +92 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { asError } from '../utils/errors.js';
|
|
2
|
+
import { CommandRuntime } from './context.js';
|
|
3
|
+
import { createProgram } from './program.js';
|
|
4
|
+
export async function runCli(argv = process.argv) {
|
|
5
|
+
const { config } = await import('dotenv');
|
|
6
|
+
config({ quiet: true });
|
|
7
|
+
const runtime = new CommandRuntime({
|
|
8
|
+
json: argv.includes('--json'),
|
|
9
|
+
debugHttp: argv.includes('--debug-http'),
|
|
10
|
+
verbose: argv.includes('--verbose'),
|
|
11
|
+
allowPlainStorage: argv.includes('--allow-plain-storage'),
|
|
12
|
+
masterKey: getOptionValue(argv, '--master-key'),
|
|
13
|
+
baseUrl: getOptionValue(argv, '--base-url'),
|
|
14
|
+
});
|
|
15
|
+
const program = createProgram(runtime);
|
|
16
|
+
try {
|
|
17
|
+
await program.parseAsync(argv);
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
runtime.output.error(asError(error).message);
|
|
21
|
+
process.exitCode = 1;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function getOptionValue(argv, flag) {
|
|
25
|
+
const index = argv.indexOf(flag);
|
|
26
|
+
if (index === -1) {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
return argv[index + 1];
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=runCli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runCli.js","sourceRoot":"","sources":["../../src/cli/runCli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI;IAC9C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAExB,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC;QACjC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC7B,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;QACxC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;QACnC,iBAAiB,EAAE,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QACzD,SAAS,EAAE,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC;QAC/C,OAAO,EAAE,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC;KAC5C,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAEvC,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;QAC7C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,IAAc,EAAE,IAAY;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACjB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { promptForLogin } from '../prompts/authPrompts.js';
|
|
3
|
+
export function createAuthCommands(runtime) {
|
|
4
|
+
const auth = new Command('auth').description('Authentication and session management');
|
|
5
|
+
auth
|
|
6
|
+
.command('login')
|
|
7
|
+
.description('Login with BrowserStack username and access key')
|
|
8
|
+
.option('-u, --username <username>', 'BrowserStack username')
|
|
9
|
+
.option('-k, --access-key <accessKey>', 'BrowserStack access key')
|
|
10
|
+
.option('--storage <strategy>', 'Storage strategy: auto, keychain, encrypted-file, plain-file', 'auto')
|
|
11
|
+
.option('--master-key <masterKey>', 'Master key for encrypted-file storage')
|
|
12
|
+
.option('--allow-plain-storage', 'Allow plain-text session storage')
|
|
13
|
+
.action(async (options) => {
|
|
14
|
+
const prompted = !options.username || !options.accessKey ? await promptForLogin() : undefined;
|
|
15
|
+
const spinner = runtime.spinner('Validating BrowserStack credentials');
|
|
16
|
+
try {
|
|
17
|
+
const status = await runtime.auth.login({
|
|
18
|
+
username: options.username ?? prompted?.username,
|
|
19
|
+
accessKey: options.accessKey ?? prompted?.accessKey,
|
|
20
|
+
storageStrategy: options.storage ?? prompted?.storageStrategy ?? 'auto',
|
|
21
|
+
masterKey: options.masterKey ?? runtime.options.masterKey ?? prompted?.masterKey,
|
|
22
|
+
allowPlainText: Boolean(options.allowPlainStorage) ||
|
|
23
|
+
runtime.options.allowPlainStorage === true ||
|
|
24
|
+
prompted?.allowPlainText === true,
|
|
25
|
+
});
|
|
26
|
+
spinner.succeed('Credentials validated and saved');
|
|
27
|
+
runtime.output.emit(status);
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
spinner.fail(error instanceof Error ? error.message : String(error));
|
|
31
|
+
throw error;
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
auth
|
|
35
|
+
.command('logout')
|
|
36
|
+
.description('Clear the saved BrowserStack session')
|
|
37
|
+
.action(async () => {
|
|
38
|
+
await runtime.auth.logout();
|
|
39
|
+
runtime.output.success('Saved session removed.');
|
|
40
|
+
});
|
|
41
|
+
auth
|
|
42
|
+
.command('status')
|
|
43
|
+
.description('Show saved session status')
|
|
44
|
+
.action(async () => {
|
|
45
|
+
const status = await runtime.auth.status();
|
|
46
|
+
runtime.output.emit(status);
|
|
47
|
+
});
|
|
48
|
+
auth
|
|
49
|
+
.command('validate')
|
|
50
|
+
.description('Validate the saved credentials against BrowserStack')
|
|
51
|
+
.action(async () => {
|
|
52
|
+
const session = await runtime.requireSession();
|
|
53
|
+
const status = await runtime.auth.validate(session);
|
|
54
|
+
await runtime.saveLastResponse({
|
|
55
|
+
command: 'auth validate',
|
|
56
|
+
framework: 'auth',
|
|
57
|
+
resource: 'auth',
|
|
58
|
+
operation: 'validate',
|
|
59
|
+
payload: status,
|
|
60
|
+
});
|
|
61
|
+
runtime.output.emit(status);
|
|
62
|
+
});
|
|
63
|
+
auth
|
|
64
|
+
.command('whoami')
|
|
65
|
+
.description('Alias for auth validate')
|
|
66
|
+
.action(async () => {
|
|
67
|
+
const session = await runtime.requireSession();
|
|
68
|
+
const status = await runtime.auth.validate(session);
|
|
69
|
+
runtime.output.emit(status);
|
|
70
|
+
});
|
|
71
|
+
return auth;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { select, input } from '@inquirer/prompts';
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
export function createExplorerCommand(runtime) {
|
|
4
|
+
return new Command('explorer')
|
|
5
|
+
.description('Interactive raw endpoint explorer backed by the endpoint registry')
|
|
6
|
+
.action(async () => {
|
|
7
|
+
const service = await runtime.getResourceService();
|
|
8
|
+
const registry = service.getRegistry();
|
|
9
|
+
const definitions = registry.list().filter((definition) => definition.framework !== 'auth');
|
|
10
|
+
const framework = await select({
|
|
11
|
+
message: 'Framework',
|
|
12
|
+
choices: unique(definitions.map((definition) => definition.framework)).map((value) => ({
|
|
13
|
+
name: value,
|
|
14
|
+
value,
|
|
15
|
+
})),
|
|
16
|
+
});
|
|
17
|
+
const resource = await select({
|
|
18
|
+
message: 'Resource',
|
|
19
|
+
choices: unique(definitions
|
|
20
|
+
.filter((definition) => definition.framework === framework)
|
|
21
|
+
.map((definition) => definition.resource)).map((value) => ({ name: value, value })),
|
|
22
|
+
});
|
|
23
|
+
const operation = await select({
|
|
24
|
+
message: 'Operation',
|
|
25
|
+
choices: definitions
|
|
26
|
+
.filter((definition) => definition.framework === framework && definition.resource === resource)
|
|
27
|
+
.map((definition) => ({
|
|
28
|
+
name: `${definition.operation} (${definition.method} ${definition.pathTemplate})`,
|
|
29
|
+
value: definition.operation,
|
|
30
|
+
})),
|
|
31
|
+
});
|
|
32
|
+
const definition = registry.find(framework, resource, operation);
|
|
33
|
+
const pathParams = Object.fromEntries(await Promise.all((definition.pathParams ?? []).map(async (param) => [
|
|
34
|
+
param,
|
|
35
|
+
await input({ message: `Path param ${param}` }),
|
|
36
|
+
])));
|
|
37
|
+
const query = Object.fromEntries(await Promise.all((definition.queryParams ?? []).map(async (param) => [
|
|
38
|
+
param,
|
|
39
|
+
await input({ message: `Query param ${param} (optional)` }),
|
|
40
|
+
])));
|
|
41
|
+
let body;
|
|
42
|
+
let filePath;
|
|
43
|
+
let url;
|
|
44
|
+
if (definition.requestKind === 'json' && ['run', 'update-status'].includes(operation)) {
|
|
45
|
+
const raw = await input({ message: 'JSON body', default: '{}' });
|
|
46
|
+
body = JSON.parse(raw);
|
|
47
|
+
}
|
|
48
|
+
if (definition.requestKind === 'multipart') {
|
|
49
|
+
const source = await select({
|
|
50
|
+
message: 'Upload source',
|
|
51
|
+
choices: [
|
|
52
|
+
{ name: 'Local file', value: 'file' },
|
|
53
|
+
{ name: 'Public URL', value: 'url' },
|
|
54
|
+
],
|
|
55
|
+
});
|
|
56
|
+
if (source === 'file') {
|
|
57
|
+
filePath = await input({ message: 'File path' });
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
url = await input({ message: 'Public URL' });
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
const response = await service.execute({
|
|
64
|
+
framework,
|
|
65
|
+
resource,
|
|
66
|
+
operation,
|
|
67
|
+
pathParams,
|
|
68
|
+
query,
|
|
69
|
+
body,
|
|
70
|
+
filePath,
|
|
71
|
+
url,
|
|
72
|
+
});
|
|
73
|
+
await runtime.saveLastResponse({
|
|
74
|
+
command: 'explorer',
|
|
75
|
+
framework,
|
|
76
|
+
resource,
|
|
77
|
+
operation,
|
|
78
|
+
payload: response,
|
|
79
|
+
});
|
|
80
|
+
runtime.output.emit(response);
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
function unique(items) {
|
|
84
|
+
return [...new Set(items)];
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=explorer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explorer.js","sourceRoot":"","sources":["../../src/commands/explorer.ts"],"names":[],"mappings":"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"}
|