@brightdata/cli 0.1.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 +624 -0
- package/dist/__tests__/commands/budget.test.d.ts +2 -0
- package/dist/__tests__/commands/budget.test.d.ts.map +1 -0
- package/dist/__tests__/commands/budget.test.js +199 -0
- package/dist/__tests__/commands/budget.test.js.map +1 -0
- package/dist/__tests__/commands/dataset.test.d.ts +2 -0
- package/dist/__tests__/commands/dataset.test.d.ts.map +1 -0
- package/dist/__tests__/commands/dataset.test.js +22 -0
- package/dist/__tests__/commands/dataset.test.js.map +1 -0
- package/dist/__tests__/commands/login.test.d.ts +2 -0
- package/dist/__tests__/commands/login.test.d.ts.map +1 -0
- package/dist/__tests__/commands/login.test.js +123 -0
- package/dist/__tests__/commands/login.test.js.map +1 -0
- package/dist/__tests__/commands/scrape.test.d.ts +2 -0
- package/dist/__tests__/commands/scrape.test.d.ts.map +1 -0
- package/dist/__tests__/commands/scrape.test.js +73 -0
- package/dist/__tests__/commands/scrape.test.js.map +1 -0
- package/dist/__tests__/commands/search.test.d.ts +2 -0
- package/dist/__tests__/commands/search.test.d.ts.map +1 -0
- package/dist/__tests__/commands/search.test.js +95 -0
- package/dist/__tests__/commands/search.test.js.map +1 -0
- package/dist/__tests__/commands/skill-add.test.d.ts +2 -0
- package/dist/__tests__/commands/skill-add.test.d.ts.map +1 -0
- package/dist/__tests__/commands/skill-add.test.js +177 -0
- package/dist/__tests__/commands/skill-add.test.js.map +1 -0
- package/dist/__tests__/commands/skill.test.d.ts +2 -0
- package/dist/__tests__/commands/skill.test.d.ts.map +1 -0
- package/dist/__tests__/commands/skill.test.js +58 -0
- package/dist/__tests__/commands/skill.test.js.map +1 -0
- package/dist/__tests__/commands/status.test.d.ts +2 -0
- package/dist/__tests__/commands/status.test.d.ts.map +1 -0
- package/dist/__tests__/commands/status.test.js +71 -0
- package/dist/__tests__/commands/status.test.js.map +1 -0
- package/dist/__tests__/commands/version.test.d.ts +2 -0
- package/dist/__tests__/commands/version.test.d.ts.map +1 -0
- package/dist/__tests__/commands/version.test.js +41 -0
- package/dist/__tests__/commands/version.test.js.map +1 -0
- package/dist/__tests__/utils/browser_auth.test.d.ts +2 -0
- package/dist/__tests__/utils/browser_auth.test.d.ts.map +1 -0
- package/dist/__tests__/utils/browser_auth.test.js +38 -0
- package/dist/__tests__/utils/browser_auth.test.js.map +1 -0
- package/dist/__tests__/utils/config.test.d.ts +2 -0
- package/dist/__tests__/utils/config.test.d.ts.map +1 -0
- package/dist/__tests__/utils/config.test.js +58 -0
- package/dist/__tests__/utils/config.test.js.map +1 -0
- package/dist/__tests__/utils/polling.test.d.ts +2 -0
- package/dist/__tests__/utils/polling.test.d.ts.map +1 -0
- package/dist/__tests__/utils/polling.test.js +65 -0
- package/dist/__tests__/utils/polling.test.js.map +1 -0
- package/dist/commands/budget.d.ts +15 -0
- package/dist/commands/budget.d.ts.map +1 -0
- package/dist/commands/budget.js +217 -0
- package/dist/commands/budget.js.map +1 -0
- package/dist/commands/config.d.ts +12 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +60 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/dataset.d.ts +6 -0
- package/dist/commands/dataset.d.ts.map +1 -0
- package/dist/commands/dataset.js +250 -0
- package/dist/commands/dataset.js.map +1 -0
- package/dist/commands/init.d.ts +9 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +247 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/login.d.ts +10 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +98 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +5 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +20 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/scrape.d.ts +6 -0
- package/dist/commands/scrape.d.ts.map +1 -0
- package/dist/commands/scrape.js +79 -0
- package/dist/commands/scrape.js.map +1 -0
- package/dist/commands/search.d.ts +6 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +179 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/skill-add.d.ts +3 -0
- package/dist/commands/skill-add.d.ts.map +1 -0
- package/dist/commands/skill-add.js +285 -0
- package/dist/commands/skill-add.js.map +1 -0
- package/dist/commands/skill.d.ts +5 -0
- package/dist/commands/skill.d.ts.map +1 -0
- package/dist/commands/skill.js +31 -0
- package/dist/commands/skill.js.map +1 -0
- package/dist/commands/status.d.ts +14 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +99 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/version.d.ts +18 -0
- package/dist/commands/version.d.ts.map +1 -0
- package/dist/commands/version.js +35 -0
- package/dist/commands/version.js.map +1 -0
- package/dist/commands/zones.d.ts +13 -0
- package/dist/commands/zones.d.ts.map +1 -0
- package/dist/commands/zones.js +70 -0
- package/dist/commands/zones.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +42 -0
- package/dist/index.js.map +1 -0
- package/dist/types/dataset.d.ts +19 -0
- package/dist/types/dataset.d.ts.map +1 -0
- package/dist/types/dataset.js +3 -0
- package/dist/types/dataset.js.map +1 -0
- package/dist/types/scrape.d.ts +31 -0
- package/dist/types/scrape.d.ts.map +1 -0
- package/dist/types/scrape.js +3 -0
- package/dist/types/scrape.js.map +1 -0
- package/dist/types/search.d.ts +47 -0
- package/dist/types/search.d.ts.map +1 -0
- package/dist/types/search.js +3 -0
- package/dist/types/search.js.map +1 -0
- package/dist/utils/auth.d.ts +6 -0
- package/dist/utils/auth.d.ts.map +1 -0
- package/dist/utils/auth.js +44 -0
- package/dist/utils/auth.js.map +1 -0
- package/dist/utils/auth_pages.d.ts +3 -0
- package/dist/utils/auth_pages.d.ts.map +1 -0
- package/dist/utils/auth_pages.js +316 -0
- package/dist/utils/auth_pages.js.map +1 -0
- package/dist/utils/browser_auth.d.ts +21 -0
- package/dist/utils/browser_auth.d.ts.map +1 -0
- package/dist/utils/browser_auth.js +290 -0
- package/dist/utils/browser_auth.js.map +1 -0
- package/dist/utils/client.d.ts +17 -0
- package/dist/utils/client.d.ts.map +1 -0
- package/dist/utils/client.js +95 -0
- package/dist/utils/client.js.map +1 -0
- package/dist/utils/config.d.ts +16 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +65 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/credentials.d.ts +11 -0
- package/dist/utils/credentials.d.ts.map +1 -0
- package/dist/utils/credentials.js +52 -0
- package/dist/utils/credentials.js.map +1 -0
- package/dist/utils/output.d.ts +23 -0
- package/dist/utils/output.d.ts.map +1 -0
- package/dist/utils/output.js +89 -0
- package/dist/utils/output.js.map +1 -0
- package/dist/utils/polling.d.ts +26 -0
- package/dist/utils/polling.d.ts.map +1 -0
- package/dist/utils/polling.js +46 -0
- package/dist/utils/polling.js.map +1 -0
- package/dist/utils/skill-installer/agents.d.ts +19 -0
- package/dist/utils/skill-installer/agents.d.ts.map +1 -0
- package/dist/utils/skill-installer/agents.js +345 -0
- package/dist/utils/skill-installer/agents.js.map +1 -0
- package/dist/utils/skill-installer/brightdata-skills.d.ts +11 -0
- package/dist/utils/skill-installer/brightdata-skills.d.ts.map +1 -0
- package/dist/utils/skill-installer/brightdata-skills.js +52 -0
- package/dist/utils/skill-installer/brightdata-skills.js.map +1 -0
- package/dist/utils/skill-installer/installer.d.ts +34 -0
- package/dist/utils/skill-installer/installer.d.ts.map +1 -0
- package/dist/utils/skill-installer/installer.js +240 -0
- package/dist/utils/skill-installer/installer.js.map +1 -0
- package/dist/utils/skill-installer/prompts/search-multiselect.d.ts +22 -0
- package/dist/utils/skill-installer/prompts/search-multiselect.d.ts.map +1 -0
- package/dist/utils/skill-installer/prompts/search-multiselect.js +251 -0
- package/dist/utils/skill-installer/prompts/search-multiselect.js.map +1 -0
- package/dist/utils/spinner.d.ts +7 -0
- package/dist/utils/spinner.d.ts.map +1 -0
- package/dist/utils/spinner.js +27 -0
- package/dist/utils/spinner.js.map +1 -0
- package/package.json +65 -0
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const mocks = vitest_1.vi.hoisted(() => ({
|
|
5
|
+
skills: [
|
|
6
|
+
{
|
|
7
|
+
name: 'search',
|
|
8
|
+
description: 'Search Google and get structured JSON results',
|
|
9
|
+
skillMdUrl: 'https://raw.githubusercontent.com/brightdata/skills/'
|
|
10
|
+
+ 'main/skills/search/SKILL.md',
|
|
11
|
+
githubPath: 'brightdata/skills/search',
|
|
12
|
+
repoPath: 'skills/search',
|
|
13
|
+
},
|
|
14
|
+
],
|
|
15
|
+
agents: {
|
|
16
|
+
amp: {
|
|
17
|
+
displayName: 'Amp',
|
|
18
|
+
skillsDir: '.agents/skills',
|
|
19
|
+
},
|
|
20
|
+
codex: {
|
|
21
|
+
displayName: 'Codex',
|
|
22
|
+
skillsDir: '.agents/skills',
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
start: vitest_1.vi.fn(),
|
|
26
|
+
stop: vitest_1.vi.fn(),
|
|
27
|
+
fail: vitest_1.vi.fn((msg) => { throw new Error(`fail:${msg}`); }),
|
|
28
|
+
info: vitest_1.vi.fn(),
|
|
29
|
+
red: vitest_1.vi.fn((msg) => msg),
|
|
30
|
+
green: vitest_1.vi.fn((msg) => msg),
|
|
31
|
+
dim: vitest_1.vi.fn((msg) => msg),
|
|
32
|
+
detectInstalledAgents: vitest_1.vi.fn(),
|
|
33
|
+
getUniversalAgents: vitest_1.vi.fn(),
|
|
34
|
+
isUniversalAgent: vitest_1.vi.fn(),
|
|
35
|
+
searchMultiselect: vitest_1.vi.fn(),
|
|
36
|
+
installSkillForAgent: vitest_1.vi.fn(),
|
|
37
|
+
fetch: vitest_1.vi.fn(),
|
|
38
|
+
}));
|
|
39
|
+
vitest_1.vi.mock('../../utils/output', () => ({
|
|
40
|
+
fail: mocks.fail,
|
|
41
|
+
info: mocks.info,
|
|
42
|
+
red: mocks.red,
|
|
43
|
+
green: mocks.green,
|
|
44
|
+
dim: mocks.dim,
|
|
45
|
+
}));
|
|
46
|
+
vitest_1.vi.mock('../../utils/spinner', () => ({
|
|
47
|
+
start: mocks.start,
|
|
48
|
+
}));
|
|
49
|
+
vitest_1.vi.mock('../../utils/skill-installer/brightdata-skills', () => ({
|
|
50
|
+
BRIGHTDATA_SKILLS: mocks.skills,
|
|
51
|
+
}));
|
|
52
|
+
vitest_1.vi.mock('../../utils/skill-installer/agents', () => ({
|
|
53
|
+
agents: mocks.agents,
|
|
54
|
+
detectInstalledAgents: mocks.detectInstalledAgents,
|
|
55
|
+
getUniversalAgents: mocks.getUniversalAgents,
|
|
56
|
+
isUniversalAgent: mocks.isUniversalAgent,
|
|
57
|
+
}));
|
|
58
|
+
vitest_1.vi.mock('../../utils/skill-installer/prompts/search-multiselect', () => ({
|
|
59
|
+
searchMultiselect: mocks.searchMultiselect,
|
|
60
|
+
cancelSymbol: Symbol('cancel'),
|
|
61
|
+
}));
|
|
62
|
+
vitest_1.vi.mock('../../utils/skill-installer/installer', () => ({
|
|
63
|
+
installSkillForAgent: mocks.installSkillForAgent,
|
|
64
|
+
}));
|
|
65
|
+
const skill_add_1 = require("../../commands/skill-add");
|
|
66
|
+
const json_response = (body) => ({
|
|
67
|
+
ok: true,
|
|
68
|
+
status: 200,
|
|
69
|
+
statusText: 'OK',
|
|
70
|
+
json: vitest_1.vi.fn().mockResolvedValue(body),
|
|
71
|
+
text: vitest_1.vi.fn().mockResolvedValue(JSON.stringify(body)),
|
|
72
|
+
});
|
|
73
|
+
const text_response = (body) => ({
|
|
74
|
+
ok: true,
|
|
75
|
+
status: 200,
|
|
76
|
+
statusText: 'OK',
|
|
77
|
+
json: vitest_1.vi.fn().mockResolvedValue(body),
|
|
78
|
+
text: vitest_1.vi.fn().mockResolvedValue(body),
|
|
79
|
+
});
|
|
80
|
+
(0, vitest_1.describe)('commands/skill-add', () => {
|
|
81
|
+
(0, vitest_1.beforeEach)(() => {
|
|
82
|
+
vitest_1.vi.clearAllMocks();
|
|
83
|
+
vitest_1.vi.stubGlobal('fetch', mocks.fetch);
|
|
84
|
+
mocks.start.mockReturnValue({ stop: mocks.stop });
|
|
85
|
+
mocks.detectInstalledAgents.mockResolvedValue(['codex']);
|
|
86
|
+
mocks.getUniversalAgents.mockReturnValue(['amp']);
|
|
87
|
+
mocks.isUniversalAgent.mockImplementation((agent) => agent == 'amp');
|
|
88
|
+
mocks.installSkillForAgent.mockResolvedValue({
|
|
89
|
+
success: true,
|
|
90
|
+
path: '/tmp/.agents/skills/search',
|
|
91
|
+
mode: 'symlink',
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
(0, vitest_1.afterEach)(() => {
|
|
95
|
+
vitest_1.vi.restoreAllMocks();
|
|
96
|
+
vitest_1.vi.unstubAllGlobals();
|
|
97
|
+
});
|
|
98
|
+
(0, vitest_1.it)('fails early when the requested skill name is invalid', async () => {
|
|
99
|
+
await (0, vitest_1.expect)((0, skill_add_1.run_skill_add)('missing-skill'))
|
|
100
|
+
.rejects.toThrow('fail:Unknown skill "missing-skill".\n'
|
|
101
|
+
+ ' Available skills: search');
|
|
102
|
+
(0, vitest_1.expect)(mocks.detectInstalledAgents).not.toHaveBeenCalled();
|
|
103
|
+
(0, vitest_1.expect)(mocks.fetch).not.toHaveBeenCalled();
|
|
104
|
+
});
|
|
105
|
+
(0, vitest_1.it)('fetches nested skill files and prints one success line per skill', async () => {
|
|
106
|
+
let stderr = '';
|
|
107
|
+
vitest_1.vi.spyOn(process.stderr, 'write').mockImplementation(text => {
|
|
108
|
+
stderr += String(text);
|
|
109
|
+
return true;
|
|
110
|
+
});
|
|
111
|
+
mocks.fetch
|
|
112
|
+
.mockResolvedValueOnce(json_response([
|
|
113
|
+
{
|
|
114
|
+
type: 'file',
|
|
115
|
+
name: 'SKILL.md',
|
|
116
|
+
path: 'skills/search/SKILL.md',
|
|
117
|
+
download_url: 'https://example.com/search/SKILL.md',
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
type: 'dir',
|
|
121
|
+
name: 'scripts',
|
|
122
|
+
path: 'skills/search/scripts',
|
|
123
|
+
},
|
|
124
|
+
]))
|
|
125
|
+
.mockResolvedValueOnce(text_response('# Search skill'))
|
|
126
|
+
.mockResolvedValueOnce(json_response([
|
|
127
|
+
{
|
|
128
|
+
type: 'file',
|
|
129
|
+
name: 'search.sh',
|
|
130
|
+
path: 'skills/search/scripts/search.sh',
|
|
131
|
+
download_url: 'https://example.com/search/scripts/'
|
|
132
|
+
+ 'search.sh',
|
|
133
|
+
},
|
|
134
|
+
]))
|
|
135
|
+
.mockResolvedValueOnce(text_response('#!/bin/bash\necho test\n'));
|
|
136
|
+
await (0, skill_add_1.run_skill_add)('search');
|
|
137
|
+
(0, vitest_1.expect)(mocks.installSkillForAgent).toHaveBeenCalledTimes(2);
|
|
138
|
+
(0, vitest_1.expect)(mocks.installSkillForAgent).toHaveBeenNthCalledWith(1, {
|
|
139
|
+
name: 'search',
|
|
140
|
+
files: {
|
|
141
|
+
'SKILL.md': '# Search skill',
|
|
142
|
+
'scripts/search.sh': '#!/bin/bash\necho test\n',
|
|
143
|
+
},
|
|
144
|
+
}, 'amp');
|
|
145
|
+
(0, vitest_1.expect)(mocks.installSkillForAgent).toHaveBeenNthCalledWith(2, {
|
|
146
|
+
name: 'search',
|
|
147
|
+
files: {
|
|
148
|
+
'SKILL.md': '# Search skill',
|
|
149
|
+
'scripts/search.sh': '#!/bin/bash\necho test\n',
|
|
150
|
+
},
|
|
151
|
+
}, 'codex');
|
|
152
|
+
(0, vitest_1.expect)(stderr.match(/✓ Installed search/g)?.length).toBe(1);
|
|
153
|
+
(0, vitest_1.expect)(stderr).toContain('Summary: 2 installations across 1 skill and 2 agents.');
|
|
154
|
+
});
|
|
155
|
+
(0, vitest_1.it)('prints fetch details when skill download fails', async () => {
|
|
156
|
+
let stderr = '';
|
|
157
|
+
vitest_1.vi.spyOn(process.stderr, 'write').mockImplementation(text => {
|
|
158
|
+
stderr += String(text);
|
|
159
|
+
return true;
|
|
160
|
+
});
|
|
161
|
+
const error = new Error('fetch failed');
|
|
162
|
+
error.cause = {
|
|
163
|
+
code: 'ETIMEDOUT',
|
|
164
|
+
message: 'connect timeout',
|
|
165
|
+
};
|
|
166
|
+
mocks.fetch.mockRejectedValue(error);
|
|
167
|
+
await (0, skill_add_1.run_skill_add)('search');
|
|
168
|
+
(0, vitest_1.expect)(mocks.installSkillForAgent).not.toHaveBeenCalled();
|
|
169
|
+
(0, vitest_1.expect)(stderr).toContain("Could not fetch skill 'search'.");
|
|
170
|
+
(0, vitest_1.expect)(stderr).toContain('URL: https://raw.githubusercontent.com/brightdata/skills/'
|
|
171
|
+
+ 'main/skills/search/SKILL.md');
|
|
172
|
+
(0, vitest_1.expect)(stderr).toContain('Details: fetch failed | ETIMEDOUT | connect timeout');
|
|
173
|
+
(0, vitest_1.expect)(stderr).toContain("✗ search: Could not fetch skill 'search'. fetch failed "
|
|
174
|
+
+ '| ETIMEDOUT | connect timeout');
|
|
175
|
+
});
|
|
176
|
+
});
|
|
177
|
+
//# sourceMappingURL=skill-add.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-add.test.js","sourceRoot":"","sources":["../../../src/__tests__/commands/skill-add.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/commands/skill.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const mocks = vitest_1.vi.hoisted(() => ({
|
|
5
|
+
skills: [
|
|
6
|
+
{
|
|
7
|
+
name: 'search',
|
|
8
|
+
description: 'Search Google and get structured JSON results',
|
|
9
|
+
skillMdUrl: 'https://example.com/search/SKILL.md',
|
|
10
|
+
githubPath: 'brightdata/skills/search',
|
|
11
|
+
repoPath: 'skills/search',
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
name: 'bright-data-mcp',
|
|
15
|
+
description: 'Orchestrate Bright Data MCP tools',
|
|
16
|
+
skillMdUrl: 'https://example.com/mcp/SKILL.md',
|
|
17
|
+
githubPath: 'brightdata/skills/bright-data-mcp',
|
|
18
|
+
repoPath: 'skills/bright-data-mcp',
|
|
19
|
+
},
|
|
20
|
+
],
|
|
21
|
+
run_skill_add: vitest_1.vi.fn(),
|
|
22
|
+
dim: vitest_1.vi.fn((msg) => msg),
|
|
23
|
+
green: vitest_1.vi.fn((msg) => msg),
|
|
24
|
+
}));
|
|
25
|
+
vitest_1.vi.mock('../../commands/skill-add', () => ({
|
|
26
|
+
run_skill_add: mocks.run_skill_add,
|
|
27
|
+
}));
|
|
28
|
+
vitest_1.vi.mock('../../utils/skill-installer/brightdata-skills', () => ({
|
|
29
|
+
BRIGHTDATA_SKILLS: mocks.skills,
|
|
30
|
+
}));
|
|
31
|
+
vitest_1.vi.mock('../../utils/output', () => ({
|
|
32
|
+
dim: mocks.dim,
|
|
33
|
+
green: mocks.green,
|
|
34
|
+
}));
|
|
35
|
+
const skill_1 = require("../../commands/skill");
|
|
36
|
+
(0, vitest_1.describe)('commands/skill list', () => {
|
|
37
|
+
(0, vitest_1.beforeEach)(() => {
|
|
38
|
+
vitest_1.vi.clearAllMocks();
|
|
39
|
+
});
|
|
40
|
+
(0, vitest_1.afterEach)(() => {
|
|
41
|
+
vitest_1.vi.restoreAllMocks();
|
|
42
|
+
});
|
|
43
|
+
(0, vitest_1.it)('prints aligned Bright Data skills and install hint', () => {
|
|
44
|
+
let output = '';
|
|
45
|
+
vitest_1.vi.spyOn(process.stdout, 'write').mockImplementation(text => {
|
|
46
|
+
output += String(text);
|
|
47
|
+
return true;
|
|
48
|
+
});
|
|
49
|
+
(0, skill_1.handle_skill_list)();
|
|
50
|
+
(0, vitest_1.expect)(output).toBe('Available Bright Data Skills\n\n'
|
|
51
|
+
+ ' search Search Google and get structured JSON '
|
|
52
|
+
+ 'results\n'
|
|
53
|
+
+ ' bright-data-mcp Orchestrate Bright Data MCP tools\n'
|
|
54
|
+
+ '\n'
|
|
55
|
+
+ 'Install a skill: brightdata skill add <name>\n');
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
//# sourceMappingURL=skill.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill.test.js","sourceRoot":"","sources":["../../../src/__tests__/commands/skill.test.ts"],"names":[],"mappings":";;AAAA,mCAAsE;AAEtE,MAAM,KAAK,GAAG,WAAE,CAAC,OAAO,CAAC,GAAE,EAAE,CAAA,CAAC;IAC1B,MAAM,EAAE;QACJ;YACI,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,+CAA+C;YAC5D,UAAU,EAAE,qCAAqC;YACjD,UAAU,EAAE,0BAA0B;YACtC,QAAQ,EAAE,eAAe;SAC5B;QACD;YACI,IAAI,EAAE,iBAAiB;YACvB,WAAW,EAAE,mCAAmC;YAChD,UAAU,EAAE,kCAAkC;YAC9C,UAAU,EAAE,mCAAmC;YAC/C,QAAQ,EAAE,wBAAwB;SACrC;KACJ;IACD,aAAa,EAAE,WAAE,CAAC,EAAE,EAAE;IACtB,GAAG,EAAE,WAAE,CAAC,EAAE,CAAC,CAAC,GAAW,EAAC,EAAE,CAAA,GAAG,CAAC;IAC9B,KAAK,EAAE,WAAE,CAAC,EAAE,CAAC,CAAC,GAAW,EAAC,EAAE,CAAA,GAAG,CAAC;CACnC,CAAC,CAAC,CAAA;AAEH,WAAE,CAAC,IAAI,CAAC,0BAA0B,EAAE,GAAE,EAAE,CAAA,CAAC;IACrC,aAAa,EAAE,KAAK,CAAC,aAAa;CACrC,CAAC,CAAC,CAAA;AAEH,WAAE,CAAC,IAAI,CAAC,+CAA+C,EAAE,GAAE,EAAE,CAAA,CAAC;IAC1D,iBAAiB,EAAE,KAAK,CAAC,MAAM;CAClC,CAAC,CAAC,CAAA;AAEH,WAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAE,EAAE,CAAA,CAAC;IAC/B,GAAG,EAAE,KAAK,CAAC,GAAG;IACd,KAAK,EAAE,KAAK,CAAC,KAAK;CACrB,CAAC,CAAC,CAAA;AAEH,gDAAsD;AAEtD,IAAA,iBAAQ,EAAC,qBAAqB,EAAE,GAAE,EAAE;IAChC,IAAA,mBAAU,EAAC,GAAE,EAAE;QACX,WAAE,CAAC,aAAa,EAAE,CAAA;IACtB,CAAC,CAAC,CAAA;IAEF,IAAA,kBAAS,EAAC,GAAE,EAAE;QACV,WAAE,CAAC,eAAe,EAAE,CAAA;IACxB,CAAC,CAAC,CAAA;IAEF,IAAA,WAAE,EAAC,oDAAoD,EAAE,GAAE,EAAE;QACzD,IAAI,MAAM,GAAG,EAAE,CAAA;QACf,WAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAA,EAAE;YACvD,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,CAAA;YACtB,OAAO,IAAI,CAAA;QACf,CAAC,CAAC,CAAA;QAEF,IAAA,yBAAiB,GAAE,CAAA;QAEnB,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,IAAI,CACf,kCAAkC;cACjC,2DAA2D;cAC3D,WAAW;cACX,wDAAwD;cACxD,IAAI;cACJ,iDAAiD,CACrD,CAAA;IACL,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/commands/status.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const mocks = vitest_1.vi.hoisted(() => ({
|
|
5
|
+
ensure_authenticated: vitest_1.vi.fn(),
|
|
6
|
+
get: vitest_1.vi.fn(),
|
|
7
|
+
stop: vitest_1.vi.fn(),
|
|
8
|
+
start: vitest_1.vi.fn(),
|
|
9
|
+
print: vitest_1.vi.fn(),
|
|
10
|
+
dim: vitest_1.vi.fn((msg) => msg),
|
|
11
|
+
fail: vitest_1.vi.fn((msg) => { throw new Error(`fail:${msg}`); }),
|
|
12
|
+
parse_timeout: vitest_1.vi.fn(),
|
|
13
|
+
poll_until: vitest_1.vi.fn(),
|
|
14
|
+
}));
|
|
15
|
+
vitest_1.vi.mock('../../utils/auth', () => ({
|
|
16
|
+
ensure_authenticated: mocks.ensure_authenticated,
|
|
17
|
+
}));
|
|
18
|
+
vitest_1.vi.mock('../../utils/client', () => ({
|
|
19
|
+
get: mocks.get,
|
|
20
|
+
}));
|
|
21
|
+
vitest_1.vi.mock('../../utils/spinner', () => ({
|
|
22
|
+
start: mocks.start,
|
|
23
|
+
}));
|
|
24
|
+
vitest_1.vi.mock('../../utils/output', () => ({
|
|
25
|
+
print: mocks.print,
|
|
26
|
+
dim: mocks.dim,
|
|
27
|
+
fail: mocks.fail,
|
|
28
|
+
}));
|
|
29
|
+
vitest_1.vi.mock('../../utils/polling', () => ({
|
|
30
|
+
parse_timeout: mocks.parse_timeout,
|
|
31
|
+
poll_until: mocks.poll_until,
|
|
32
|
+
}));
|
|
33
|
+
const status_1 = require("../../commands/status");
|
|
34
|
+
(0, vitest_1.describe)('commands/status', () => {
|
|
35
|
+
(0, vitest_1.beforeEach)(() => {
|
|
36
|
+
vitest_1.vi.clearAllMocks();
|
|
37
|
+
mocks.ensure_authenticated.mockReturnValue('api_key');
|
|
38
|
+
mocks.start.mockReturnValue({ stop: mocks.stop });
|
|
39
|
+
});
|
|
40
|
+
(0, vitest_1.it)('prints one-shot status when --wait is not used', async () => {
|
|
41
|
+
mocks.get.mockResolvedValue({ status: 'ready', snapshot_id: 's1' });
|
|
42
|
+
await (0, status_1.handle_status)('s1', {});
|
|
43
|
+
(0, vitest_1.expect)(mocks.ensure_authenticated).toHaveBeenCalledWith(undefined);
|
|
44
|
+
(0, vitest_1.expect)(mocks.get).toHaveBeenCalledWith('api_key', '/datasets/v3/progress/s1', { timing: undefined });
|
|
45
|
+
(0, vitest_1.expect)(mocks.print).toHaveBeenCalledWith({ status: 'ready', snapshot_id: 's1' }, { json: undefined, pretty: undefined, output: undefined });
|
|
46
|
+
(0, vitest_1.expect)(mocks.poll_until).not.toHaveBeenCalled();
|
|
47
|
+
});
|
|
48
|
+
(0, vitest_1.it)('uses shared polling utility when --wait is enabled', async () => {
|
|
49
|
+
mocks.get.mockResolvedValueOnce({ status: 'running' });
|
|
50
|
+
mocks.parse_timeout.mockReturnValue(4);
|
|
51
|
+
mocks.poll_until.mockResolvedValue({
|
|
52
|
+
result: { status: 'ready', snapshot_id: 's2' },
|
|
53
|
+
attempts: 2,
|
|
54
|
+
last_status: 'ready',
|
|
55
|
+
});
|
|
56
|
+
await (0, status_1.handle_status)('s2', { wait: true, timeout: '4' });
|
|
57
|
+
(0, vitest_1.expect)(mocks.parse_timeout).toHaveBeenCalledWith('4');
|
|
58
|
+
(0, vitest_1.expect)(mocks.poll_until).toHaveBeenCalledTimes(1);
|
|
59
|
+
const poll_args = mocks.poll_until.mock.calls[0][0];
|
|
60
|
+
(0, vitest_1.expect)(poll_args.timeout_seconds).toBe(3);
|
|
61
|
+
(0, vitest_1.expect)(mocks.print).toHaveBeenCalledWith({ status: 'ready', snapshot_id: 's2' }, { json: undefined, pretty: undefined, output: undefined });
|
|
62
|
+
});
|
|
63
|
+
(0, vitest_1.it)('skips polling when first status is already complete', async () => {
|
|
64
|
+
mocks.get.mockResolvedValueOnce({ status: 'ready' });
|
|
65
|
+
mocks.parse_timeout.mockReturnValue(5);
|
|
66
|
+
await (0, status_1.handle_status)('s3', { wait: true, timeout: '5' });
|
|
67
|
+
(0, vitest_1.expect)(mocks.poll_until).not.toHaveBeenCalled();
|
|
68
|
+
(0, vitest_1.expect)(mocks.print).toHaveBeenCalledWith({ status: 'ready' }, { json: undefined, pretty: undefined, output: undefined });
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
//# sourceMappingURL=status.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.test.js","sourceRoot":"","sources":["../../../src/__tests__/commands/status.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/commands/version.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const fs_1 = __importDefault(require("fs"));
|
|
7
|
+
const os_1 = __importDefault(require("os"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const vitest_1 = require("vitest");
|
|
10
|
+
const package_json_1 = __importDefault(require("../../../package.json"));
|
|
11
|
+
const version_1 = require("../../commands/version");
|
|
12
|
+
(0, vitest_1.describe)('commands/version', () => {
|
|
13
|
+
(0, vitest_1.afterEach)(() => {
|
|
14
|
+
vitest_1.vi.restoreAllMocks();
|
|
15
|
+
});
|
|
16
|
+
(0, vitest_1.it)('returns expected version info shape', () => {
|
|
17
|
+
const info = (0, version_1.get_version_info)();
|
|
18
|
+
(0, vitest_1.expect)(info.name).toBe(package_json_1.default.name);
|
|
19
|
+
(0, vitest_1.expect)(info.version).toBe(package_json_1.default.version);
|
|
20
|
+
(0, vitest_1.expect)(info.node).toBe(process.version);
|
|
21
|
+
(0, vitest_1.expect)(info.platform.length > 0).toBe(true);
|
|
22
|
+
(0, vitest_1.expect)(info.arch.length > 0).toBe(true);
|
|
23
|
+
});
|
|
24
|
+
(0, vitest_1.it)('prints short version string by default', () => {
|
|
25
|
+
const write = vitest_1.vi.spyOn(process.stdout, 'write')
|
|
26
|
+
.mockImplementation(() => true);
|
|
27
|
+
(0, version_1.handle_version)({});
|
|
28
|
+
(0, vitest_1.expect)(write).toHaveBeenCalledWith(`${package_json_1.default.name} v${package_json_1.default.version}\n`);
|
|
29
|
+
});
|
|
30
|
+
(0, vitest_1.it)('writes json version info to output file', () => {
|
|
31
|
+
const stamp = `${Date.now()}-${Math.random()}`;
|
|
32
|
+
const out_file = path_1.default.join(os_1.default.tmpdir(), `bd-version-${stamp}.json`);
|
|
33
|
+
(0, version_1.handle_version)({ json: true, output: out_file });
|
|
34
|
+
const data = JSON.parse(fs_1.default.readFileSync(out_file, 'utf8'));
|
|
35
|
+
fs_1.default.unlinkSync(out_file);
|
|
36
|
+
(0, vitest_1.expect)(data.name).toBe(package_json_1.default.name);
|
|
37
|
+
(0, vitest_1.expect)(data.version).toBe(package_json_1.default.version);
|
|
38
|
+
(0, vitest_1.expect)(data.node).toBe(process.version);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
//# sourceMappingURL=version.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.test.js","sourceRoot":"","sources":["../../../src/__tests__/commands/version.test.ts"],"names":[],"mappings":";;;;;AAAA,4CAAoB;AACpB,4CAAoB;AACpB,gDAAwB;AACxB,mCAA2D;AAC3D,yEAAgD;AAChD,oDAAwE;AAExE,IAAA,iBAAQ,EAAC,kBAAkB,EAAE,GAAE,EAAE;IAC7B,IAAA,kBAAS,EAAC,GAAE,EAAE;QACV,WAAE,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,qCAAqC,EAAE,GAAE,EAAE;QAC1C,MAAM,IAAI,GAAG,IAAA,0BAAgB,GAAE,CAAC;QAChC,IAAA,eAAM,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,sBAAW,CAAC,IAAI,CAAC,CAAC;QACzC,IAAA,eAAM,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,sBAAW,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAA,eAAM,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACxC,IAAA,eAAM,EAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAA,eAAM,EAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,wCAAwC,EAAE,GAAE,EAAE;QAC7C,MAAM,KAAK,GAAG,WAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC;aAC1C,kBAAkB,CAAC,GAAE,EAAE,CAAA,IAAI,CAAC,CAAC;QAClC,IAAA,wBAAc,EAAC,EAAE,CAAC,CAAC;QACnB,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,oBAAoB,CAC9B,GAAG,sBAAW,CAAC,IAAI,KAAK,sBAAW,CAAC,OAAO,IAAI,CAClD,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,yCAAyC,EAAE,GAAE,EAAE;QAC9C,MAAM,KAAK,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,MAAM,EAAE,EAAE,cAAc,KAAK,OAAO,CAAC,CAAC;QACpE,IAAA,wBAAc,EAAC,EAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAC,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAIxD,CAAC;QACF,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,sBAAW,CAAC,IAAI,CAAC,CAAC;QACzC,IAAA,eAAM,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,sBAAW,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAA,eAAM,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser_auth.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/utils/browser_auth.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const browser_auth_1 = require("../../utils/browser_auth");
|
|
5
|
+
(0, vitest_1.describe)('utils/browser_auth', () => {
|
|
6
|
+
(0, vitest_1.it)('omits customer_id from the authorize URL when not provided', () => {
|
|
7
|
+
const url = (0, browser_auth_1.build_authorize_url)({
|
|
8
|
+
redirect_uri: 'http://127.0.0.1:3000/callback',
|
|
9
|
+
state: 'state_123',
|
|
10
|
+
code_challenge: 'challenge_123',
|
|
11
|
+
});
|
|
12
|
+
(0, vitest_1.expect)(url.searchParams.get('redirect_uri'))
|
|
13
|
+
.toBe('http://127.0.0.1:3000/callback');
|
|
14
|
+
(0, vitest_1.expect)(url.searchParams.get('state')).toBe('state_123');
|
|
15
|
+
(0, vitest_1.expect)(url.searchParams.get('code_challenge')).toBe('challenge_123');
|
|
16
|
+
(0, vitest_1.expect)(url.searchParams.get('code_challenge_method')).toBe('S256');
|
|
17
|
+
(0, vitest_1.expect)(url.searchParams.has('customer_id')).toBe(false);
|
|
18
|
+
});
|
|
19
|
+
(0, vitest_1.it)('includes a trimmed customer_id in the authorize URL when provided', () => {
|
|
20
|
+
const url = (0, browser_auth_1.build_authorize_url)({
|
|
21
|
+
redirect_uri: 'http://127.0.0.1:3000/callback',
|
|
22
|
+
state: 'state_123',
|
|
23
|
+
code_challenge: 'challenge_123',
|
|
24
|
+
customer_id: ' hl_123 ',
|
|
25
|
+
});
|
|
26
|
+
(0, vitest_1.expect)(url.searchParams.get('customer_id')).toBe('hl_123');
|
|
27
|
+
});
|
|
28
|
+
(0, vitest_1.it)('omits customer_id from the device start body when not provided', () => {
|
|
29
|
+
(0, vitest_1.expect)((0, browser_auth_1.build_device_start_body)(undefined)).toEqual({});
|
|
30
|
+
(0, vitest_1.expect)((0, browser_auth_1.build_device_start_body)(' ')).toEqual({});
|
|
31
|
+
});
|
|
32
|
+
(0, vitest_1.it)('includes a trimmed customer_id in the device start body when provided', () => {
|
|
33
|
+
(0, vitest_1.expect)((0, browser_auth_1.build_device_start_body)(' hl_123 ')).toEqual({
|
|
34
|
+
customer_id: 'hl_123',
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
//# sourceMappingURL=browser_auth.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser_auth.test.js","sourceRoot":"","sources":["../../../src/__tests__/utils/browser_auth.test.ts"],"names":[],"mappings":";;AAAA,mCAA4C;AAC5C,2DAGkC;AAElC,IAAA,iBAAQ,EAAC,oBAAoB,EAAE,GAAE,EAAE;IAC/B,IAAA,WAAE,EAAC,4DAA4D,EAAE,GAAE,EAAE;QACjE,MAAM,GAAG,GAAG,IAAA,kCAAmB,EAAC;YAC5B,YAAY,EAAE,gCAAgC;YAC9C,KAAK,EAAE,WAAW;YAClB,cAAc,EAAE,eAAe;SAClC,CAAC,CAAC;QAEH,IAAA,eAAM,EAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;aACvC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAC5C,IAAA,eAAM,EAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxD,IAAA,eAAM,EAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACrE,IAAA,eAAM,EAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnE,IAAA,eAAM,EAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,mEAAmE,EAAE,GAAE,EAAE;QACxE,MAAM,GAAG,GAAG,IAAA,kCAAmB,EAAC;YAC5B,YAAY,EAAE,gCAAgC;YAC9C,KAAK,EAAE,WAAW;YAClB,cAAc,EAAE,eAAe;YAC/B,WAAW,EAAE,UAAU;SAC1B,CAAC,CAAC;QAEH,IAAA,eAAM,EAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,gEAAgE,EAAE,GAAE,EAAE;QACrE,IAAA,eAAM,EAAC,IAAA,sCAAuB,EAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACvD,IAAA,eAAM,EAAC,IAAA,sCAAuB,EAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,uEAAuE,EAAE,GAAE,EAAE;QAC5E,IAAA,eAAM,EAAC,IAAA,sCAAuB,EAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;YAChD,WAAW,EAAE,QAAQ;SACxB,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/utils/config.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const fs_1 = __importDefault(require("fs"));
|
|
7
|
+
const os_1 = __importDefault(require("os"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const vitest_1 = require("vitest");
|
|
10
|
+
const config_1 = require("../../utils/config");
|
|
11
|
+
const mk_tmp_home = () => {
|
|
12
|
+
const stamp = `${Date.now()}-${Math.random()}`;
|
|
13
|
+
return path_1.default.join(os_1.default.tmpdir(), `brightdata-cli-tests-${stamp}`);
|
|
14
|
+
};
|
|
15
|
+
(0, vitest_1.describe)('utils/config', () => {
|
|
16
|
+
let original_home = '';
|
|
17
|
+
let tmp_home = '';
|
|
18
|
+
(0, vitest_1.beforeEach)(() => {
|
|
19
|
+
original_home = process.env['HOME'] ?? '';
|
|
20
|
+
tmp_home = mk_tmp_home();
|
|
21
|
+
fs_1.default.mkdirSync(tmp_home, { recursive: true });
|
|
22
|
+
process.env['HOME'] = tmp_home;
|
|
23
|
+
delete process.env['BRIGHTDATA_API_KEY'];
|
|
24
|
+
delete process.env['TEST_ZONE_ENV'];
|
|
25
|
+
});
|
|
26
|
+
(0, vitest_1.afterEach)(() => {
|
|
27
|
+
process.env['HOME'] = original_home;
|
|
28
|
+
fs_1.default.rmSync(tmp_home, { recursive: true, force: true });
|
|
29
|
+
});
|
|
30
|
+
(0, vitest_1.it)('loads defaults when config does not exist', () => {
|
|
31
|
+
(0, vitest_1.expect)((0, config_1.load)()).toEqual(config_1.DEFAULTS);
|
|
32
|
+
});
|
|
33
|
+
(0, vitest_1.it)('persists values with set/get', () => {
|
|
34
|
+
(0, config_1.set)('default_zone_unlocker', 'cli_unlocker');
|
|
35
|
+
(0, config_1.set)('default_zone_serp', 'cli_serp');
|
|
36
|
+
(0, config_1.set)('default_format', 'json');
|
|
37
|
+
(0, vitest_1.expect)((0, config_1.get)('default_zone_unlocker')).toBe('cli_unlocker');
|
|
38
|
+
(0, vitest_1.expect)((0, config_1.get)('default_zone_serp')).toBe('cli_serp');
|
|
39
|
+
(0, vitest_1.expect)((0, config_1.get)('default_format')).toBe('json');
|
|
40
|
+
});
|
|
41
|
+
(0, vitest_1.it)('resolves value by cli then env then config', () => {
|
|
42
|
+
(0, config_1.set)('default_zone_unlocker', 'from_config');
|
|
43
|
+
process.env['TEST_ZONE_ENV'] = 'from_env';
|
|
44
|
+
(0, vitest_1.expect)((0, config_1.resolve)('from_cli', 'TEST_ZONE_ENV', 'default_zone_unlocker'))
|
|
45
|
+
.toBe('from_cli');
|
|
46
|
+
(0, vitest_1.expect)((0, config_1.resolve)(undefined, 'TEST_ZONE_ENV', 'default_zone_unlocker'))
|
|
47
|
+
.toBe('from_env');
|
|
48
|
+
delete process.env['TEST_ZONE_ENV'];
|
|
49
|
+
(0, vitest_1.expect)((0, config_1.resolve)(undefined, 'TEST_ZONE_ENV', 'default_zone_unlocker'))
|
|
50
|
+
.toBe('from_config');
|
|
51
|
+
});
|
|
52
|
+
(0, vitest_1.it)('resolve_api_key uses cli first, then env', () => {
|
|
53
|
+
process.env['BRIGHTDATA_API_KEY'] = 'from_env_key';
|
|
54
|
+
(0, vitest_1.expect)((0, config_1.resolve_api_key)('from_cli_key')).toBe('from_cli_key');
|
|
55
|
+
(0, vitest_1.expect)((0, config_1.resolve_api_key)(undefined)).toBe('from_env_key');
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
//# sourceMappingURL=config.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.test.js","sourceRoot":"","sources":["../../../src/__tests__/utils/config.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"polling.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/utils/polling.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const polling_1 = require("../../utils/polling");
|
|
5
|
+
(0, vitest_1.describe)('utils/polling.parse_timeout', () => {
|
|
6
|
+
(0, vitest_1.it)('parses explicit timeout and floors decimals', () => {
|
|
7
|
+
(0, vitest_1.expect)((0, polling_1.parse_timeout)('12.9')).toBe(12);
|
|
8
|
+
});
|
|
9
|
+
(0, vitest_1.it)('uses env value when timeout is not provided', () => {
|
|
10
|
+
process.env['BRIGHTDATA_POLLING_TIMEOUT'] = '9';
|
|
11
|
+
(0, vitest_1.expect)((0, polling_1.parse_timeout)(undefined)).toBe(9);
|
|
12
|
+
delete process.env['BRIGHTDATA_POLLING_TIMEOUT'];
|
|
13
|
+
});
|
|
14
|
+
(0, vitest_1.it)('throws on invalid timeout', () => {
|
|
15
|
+
(0, vitest_1.expect)(() => (0, polling_1.parse_timeout)('0')).toThrow('Invalid timeout "0"');
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
(0, vitest_1.describe)('utils/polling.poll_until', () => {
|
|
19
|
+
(0, vitest_1.it)('returns immediately when status is not running', async () => {
|
|
20
|
+
const fetch_once = vitest_1.vi.fn()
|
|
21
|
+
.mockResolvedValue({ status: 'ready', rows: 3 });
|
|
22
|
+
const result = await (0, polling_1.poll_until)({
|
|
23
|
+
timeout_seconds: 5,
|
|
24
|
+
fetch_once,
|
|
25
|
+
get_status: (r) => r.status,
|
|
26
|
+
running_statuses: ['running'],
|
|
27
|
+
interval_ms: 0,
|
|
28
|
+
});
|
|
29
|
+
(0, vitest_1.expect)(fetch_once).toHaveBeenCalledTimes(1);
|
|
30
|
+
(0, vitest_1.expect)(result.attempts).toBe(1);
|
|
31
|
+
(0, vitest_1.expect)(result.result).toEqual({ status: 'ready', rows: 3 });
|
|
32
|
+
});
|
|
33
|
+
(0, vitest_1.it)('polls until status is ready and reports running attempts', async () => {
|
|
34
|
+
const fetch_once = vitest_1.vi.fn()
|
|
35
|
+
.mockResolvedValueOnce({ status: 'running' })
|
|
36
|
+
.mockResolvedValueOnce({ status: 'building' })
|
|
37
|
+
.mockResolvedValueOnce({ status: 'ready', rows: 10 });
|
|
38
|
+
const on_running = vitest_1.vi.fn();
|
|
39
|
+
const result = await (0, polling_1.poll_until)({
|
|
40
|
+
timeout_seconds: 5,
|
|
41
|
+
fetch_once,
|
|
42
|
+
get_status: (r) => r.status,
|
|
43
|
+
running_statuses: ['running', 'building'],
|
|
44
|
+
interval_ms: 0,
|
|
45
|
+
on_running,
|
|
46
|
+
});
|
|
47
|
+
(0, vitest_1.expect)(fetch_once).toHaveBeenCalledTimes(3);
|
|
48
|
+
(0, vitest_1.expect)(on_running).toHaveBeenCalledTimes(2);
|
|
49
|
+
(0, vitest_1.expect)(result.attempts).toBe(3);
|
|
50
|
+
(0, vitest_1.expect)(result.last_status).toBe('ready');
|
|
51
|
+
});
|
|
52
|
+
(0, vitest_1.it)('throws timeout error when status never completes', async () => {
|
|
53
|
+
const fetch_once = vitest_1.vi.fn()
|
|
54
|
+
.mockResolvedValue({ status: 'running' });
|
|
55
|
+
await (0, vitest_1.expect)((0, polling_1.poll_until)({
|
|
56
|
+
timeout_seconds: 2,
|
|
57
|
+
fetch_once,
|
|
58
|
+
get_status: (r) => r.status,
|
|
59
|
+
running_statuses: ['running'],
|
|
60
|
+
interval_ms: 0,
|
|
61
|
+
timeout_label: 'data',
|
|
62
|
+
})).rejects.toThrow('Timeout after 2 seconds waiting for data.');
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
//# sourceMappingURL=polling.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"polling.test.js","sourceRoot":"","sources":["../../../src/__tests__/utils/polling.test.ts"],"names":[],"mappings":";;AAAA,mCAAgD;AAChD,iDAA8D;AAO9D,IAAA,iBAAQ,EAAC,6BAA6B,EAAE,GAAE,EAAE;IACxC,IAAA,WAAE,EAAC,6CAA6C,EAAE,GAAE,EAAE;QAClD,IAAA,eAAM,EAAC,IAAA,uBAAa,EAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,6CAA6C,EAAE,GAAE,EAAE;QAClD,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,GAAG,GAAG,CAAC;QAChD,IAAA,eAAM,EAAC,IAAA,uBAAa,EAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzC,OAAO,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,2BAA2B,EAAE,GAAE,EAAE;QAChC,IAAA,eAAM,EAAC,GAAE,EAAE,CAAA,IAAA,uBAAa,EAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,IAAA,iBAAQ,EAAC,0BAA0B,EAAE,GAAE,EAAE;IACrC,IAAA,WAAE,EAAC,gDAAgD,EAAE,KAAK,IAAE,EAAE;QAC1D,MAAM,UAAU,GAAG,WAAE,CAAC,EAAE,EAA4B;aAC/C,iBAAiB,CAAC,EAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAC,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,MAAM,IAAA,oBAAU,EAAY;YACvC,eAAe,EAAE,CAAC;YAClB,UAAU;YACV,UAAU,EAAE,CAAC,CAAY,EAAC,EAAE,CAAA,CAAC,CAAC,MAAM;YACpC,gBAAgB,EAAE,CAAC,SAAS,CAAC;YAC7B,WAAW,EAAE,CAAC;SACjB,CAAC,CAAC;QACH,IAAA,eAAM,EAAC,UAAU,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAA,eAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAC,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,0DAA0D,EAAE,KAAK,IAAE,EAAE;QACpE,MAAM,UAAU,GAAG,WAAE,CAAC,EAAE,EAA4B;aAC/C,qBAAqB,CAAC,EAAC,MAAM,EAAE,SAAS,EAAC,CAAC;aAC1C,qBAAqB,CAAC,EAAC,MAAM,EAAE,UAAU,EAAC,CAAC;aAC3C,qBAAqB,CAAC,EAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAC,CAAC,CAAC;QACxD,MAAM,UAAU,GAAG,WAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,IAAA,oBAAU,EAAY;YACvC,eAAe,EAAE,CAAC;YAClB,UAAU;YACV,UAAU,EAAE,CAAC,CAAY,EAAC,EAAE,CAAA,CAAC,CAAC,MAAM;YACpC,gBAAgB,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;YACzC,WAAW,EAAE,CAAC;YACd,UAAU;SACb,CAAC,CAAC;QACH,IAAA,eAAM,EAAC,UAAU,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAA,eAAM,EAAC,UAAU,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAA,eAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,IAAA,eAAM,EAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,kDAAkD,EAAE,KAAK,IAAE,EAAE;QAC5D,MAAM,UAAU,GAAG,WAAE,CAAC,EAAE,EAA4B;aAC/C,iBAAiB,CAAC,EAAC,MAAM,EAAE,SAAS,EAAC,CAAC,CAAC;QAC5C,MAAM,IAAA,eAAM,EAAC,IAAA,oBAAU,EAAY;YAC/B,eAAe,EAAE,CAAC;YAClB,UAAU;YACV,UAAU,EAAE,CAAC,CAAY,EAAC,EAAE,CAAA,CAAC,CAAC,MAAM;YACpC,gBAAgB,EAAE,CAAC,SAAS,CAAC;YAC7B,WAAW,EAAE,CAAC;YACd,aAAa,EAAE,MAAM;SACxB,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
type Budget_opts = {
|
|
3
|
+
from?: string;
|
|
4
|
+
to?: string;
|
|
5
|
+
json?: boolean;
|
|
6
|
+
pretty?: boolean;
|
|
7
|
+
timing?: boolean;
|
|
8
|
+
apiKey?: string;
|
|
9
|
+
};
|
|
10
|
+
declare const handle_budget_balance: (opts: Budget_opts) => Promise<void>;
|
|
11
|
+
declare const handle_budget_zones: (opts: Budget_opts) => Promise<void>;
|
|
12
|
+
declare const handle_budget_zone: (name: string, opts: Budget_opts) => Promise<void>;
|
|
13
|
+
declare const budget_command: Command;
|
|
14
|
+
export { budget_command, handle_budget_balance, handle_budget_zones, handle_budget_zone, };
|
|
15
|
+
//# sourceMappingURL=budget.d.ts.map
|