@fias/plugin-dev-harness 1.2.0 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/check-auth.d.ts +3 -3
- package/dist/cli/check-auth.d.ts.map +1 -1
- package/dist/cli/check-auth.js +19 -8
- package/dist/cli/check-auth.js.map +1 -1
- package/dist/cli/check-auth.test.d.ts +2 -0
- package/dist/cli/check-auth.test.d.ts.map +1 -0
- package/dist/cli/check-auth.test.js +49 -0
- package/dist/cli/check-auth.test.js.map +1 -0
- package/dist/cli/dev.d.ts +2 -2
- package/dist/cli/dev.d.ts.map +1 -1
- package/dist/cli/dev.js +4 -20
- package/dist/cli/dev.js.map +1 -1
- package/dist/cli/dev.test.js +10 -38
- package/dist/cli/dev.test.js.map +1 -1
- package/dist/cli/entities.d.ts.map +1 -1
- package/dist/cli/entities.js +8 -6
- package/dist/cli/entities.js.map +1 -1
- package/dist/cli/entities.test.js +15 -24
- package/dist/cli/entities.test.js.map +1 -1
- package/dist/cli/index.test.js +2 -2
- package/dist/cli/login.d.ts +2 -0
- package/dist/cli/login.d.ts.map +1 -1
- package/dist/cli/login.js +19 -14
- package/dist/cli/login.js.map +1 -1
- package/dist/cli/login.test.js +46 -24
- package/dist/cli/login.test.js.map +1 -1
- package/dist/cli/submit.d.ts.map +1 -1
- package/dist/cli/submit.js +13 -11
- package/dist/cli/submit.js.map +1 -1
- package/dist/cli/submit.test.js +13 -22
- package/dist/cli/submit.test.js.map +1 -1
- package/dist/config/config-loader.d.ts +6 -0
- package/dist/config/config-loader.d.ts.map +1 -1
- package/dist/config/config-loader.js +12 -0
- package/dist/config/config-loader.js.map +1 -1
- package/dist/config/credentials.d.ts +19 -1
- package/dist/config/credentials.d.ts.map +1 -1
- package/dist/config/credentials.js +46 -6
- package/dist/config/credentials.js.map +1 -1
- package/dist/config/credentials.test.js +72 -27
- package/dist/config/credentials.test.js.map +1 -1
- package/dist/index.js +0 -0
- package/dist/server/harness-server.d.ts +2 -3
- package/dist/server/harness-server.d.ts.map +1 -1
- package/dist/server/harness-server.js +233 -41
- package/dist/server/harness-server.js.map +1 -1
- package/dist/server/harness-server.test.js +60 -3
- package/dist/server/harness-server.test.js.map +1 -1
- package/dist/server/static/static/harness.css +58 -0
- package/dist/server/static/static/harness.html +20 -7
- package/dist/server/static/static/harness.js +139 -2
- package/package.json +10 -10
package/dist/cli/check-auth.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `fias-dev check-auth` Command —
|
|
2
|
+
* `fias-dev check-auth` Command — Show credential status
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Diagnostic command that prints per-environment authentication status.
|
|
5
|
+
* Always exits 0 — no longer a gate for `npm start`.
|
|
6
6
|
*/
|
|
7
7
|
import { Command } from 'commander';
|
|
8
8
|
export declare function registerCheckAuthCommand(program: Command): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-auth.d.ts","sourceRoot":"","sources":["../../src/cli/check-auth.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"check-auth.d.ts","sourceRoot":"","sources":["../../src/cli/check-auth.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsB/D"}
|
package/dist/cli/check-auth.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* `fias-dev check-auth` Command —
|
|
3
|
+
* `fias-dev check-auth` Command — Show credential status
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* Diagnostic command that prints per-environment authentication status.
|
|
6
|
+
* Always exits 0 — no longer a gate for `npm start`.
|
|
7
7
|
*/
|
|
8
8
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
9
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
@@ -15,13 +15,24 @@ const credentials_1 = require("../config/credentials");
|
|
|
15
15
|
function registerCheckAuthCommand(program) {
|
|
16
16
|
program
|
|
17
17
|
.command('check-auth')
|
|
18
|
-
.description('Check if FIAS API
|
|
18
|
+
.description('Check if FIAS API keys are saved')
|
|
19
19
|
.action(() => {
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
const stagingKey = (0, credentials_1.loadApiKeyForEnvironment)('staging');
|
|
21
|
+
const prodKey = (0, credentials_1.loadApiKeyForEnvironment)('production');
|
|
22
|
+
console.log('');
|
|
23
|
+
if (stagingKey) {
|
|
24
|
+
console.log(chalk_1.default.green(' Staging: authenticated'));
|
|
24
25
|
}
|
|
26
|
+
else {
|
|
27
|
+
console.log(chalk_1.default.dim(' Staging: not authenticated'));
|
|
28
|
+
}
|
|
29
|
+
if (prodKey) {
|
|
30
|
+
console.log(chalk_1.default.green(' Production: authenticated'));
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
console.log(chalk_1.default.dim(' Production: not authenticated'));
|
|
34
|
+
}
|
|
35
|
+
console.log('');
|
|
25
36
|
});
|
|
26
37
|
}
|
|
27
38
|
//# sourceMappingURL=check-auth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-auth.js","sourceRoot":"","sources":["../../src/cli/check-auth.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AAMH,
|
|
1
|
+
{"version":3,"file":"check-auth.js","sourceRoot":"","sources":["../../src/cli/check-auth.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AAMH,4DAsBC;AAzBD,kDAA0B;AAC1B,uDAAiE;AAEjE,SAAgB,wBAAwB,CAAC,OAAgB;IACvD,OAAO;SACJ,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,kCAAkC,CAAC;SAC/C,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,UAAU,GAAG,IAAA,sCAAwB,EAAC,SAAS,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,IAAA,sCAAwB,EAAC,YAAY,CAAC,CAAC;QAEvD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-auth.test.d.ts","sourceRoot":"","sources":["../../src/cli/check-auth.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
jest.mock('../config/credentials', () => ({
|
|
4
|
+
loadApiKeyForEnvironment: jest.fn(),
|
|
5
|
+
}));
|
|
6
|
+
const commander_1 = require("commander");
|
|
7
|
+
const check_auth_1 = require("./check-auth");
|
|
8
|
+
const credentials_1 = require("../config/credentials");
|
|
9
|
+
const mockedLoadApiKey = jest.mocked(credentials_1.loadApiKeyForEnvironment);
|
|
10
|
+
describe('cli/check-auth', () => {
|
|
11
|
+
let program;
|
|
12
|
+
let consoleSpy;
|
|
13
|
+
beforeEach(() => {
|
|
14
|
+
jest.clearAllMocks();
|
|
15
|
+
program = new commander_1.Command();
|
|
16
|
+
program.exitOverride();
|
|
17
|
+
(0, check_auth_1.registerCheckAuthCommand)(program);
|
|
18
|
+
consoleSpy = jest.spyOn(console, 'log').mockImplementation(() => { });
|
|
19
|
+
});
|
|
20
|
+
afterEach(() => {
|
|
21
|
+
consoleSpy.mockRestore();
|
|
22
|
+
});
|
|
23
|
+
it('shows authenticated status when keys exist', async () => {
|
|
24
|
+
mockedLoadApiKey.mockReturnValue('fias_sk_test');
|
|
25
|
+
await program.parseAsync(['check-auth'], { from: 'user' });
|
|
26
|
+
const allLogs = consoleSpy.mock.calls.map((c) => c[0]).join('\n');
|
|
27
|
+
expect(allLogs).toContain('authenticated');
|
|
28
|
+
});
|
|
29
|
+
it('shows not authenticated when no keys', async () => {
|
|
30
|
+
mockedLoadApiKey.mockReturnValue('');
|
|
31
|
+
await program.parseAsync(['check-auth'], { from: 'user' });
|
|
32
|
+
const allLogs = consoleSpy.mock.calls.map((c) => c[0]).join('\n');
|
|
33
|
+
expect(allLogs).toContain('not authenticated');
|
|
34
|
+
});
|
|
35
|
+
it('always exits 0 regardless of credentials', async () => {
|
|
36
|
+
mockedLoadApiKey.mockReturnValue('');
|
|
37
|
+
const mockExit = jest.spyOn(process, 'exit').mockImplementation((() => { }));
|
|
38
|
+
await program.parseAsync(['check-auth'], { from: 'user' });
|
|
39
|
+
expect(mockExit).not.toHaveBeenCalled();
|
|
40
|
+
mockExit.mockRestore();
|
|
41
|
+
});
|
|
42
|
+
it('checks both staging and production environments', async () => {
|
|
43
|
+
mockedLoadApiKey.mockReturnValue('');
|
|
44
|
+
await program.parseAsync(['check-auth'], { from: 'user' });
|
|
45
|
+
expect(mockedLoadApiKey).toHaveBeenCalledWith('staging');
|
|
46
|
+
expect(mockedLoadApiKey).toHaveBeenCalledWith('production');
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
//# sourceMappingURL=check-auth.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-auth.test.js","sourceRoot":"","sources":["../../src/cli/check-auth.test.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/dev.d.ts
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Launches an Express server that serves the harness host page,
|
|
5
5
|
* which embeds the plugin iframe and handles bridge communication.
|
|
6
|
+
* Always starts in mock mode — use the toolbar to switch to live.
|
|
6
7
|
*
|
|
7
8
|
* Usage:
|
|
8
|
-
* npx fias-dev #
|
|
9
|
-
* npx fias-dev --live # Live mode (real AI, costs credits)
|
|
9
|
+
* npx fias-dev # Start harness (mock mode)
|
|
10
10
|
* npx fias-dev --port 3200 # Custom port
|
|
11
11
|
* npx fias-dev --plugin-url http://localhost:3100
|
|
12
12
|
*/
|
package/dist/cli/dev.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/cli/dev.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/cli/dev.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4BzD"}
|
package/dist/cli/dev.js
CHANGED
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Launches an Express server that serves the harness host page,
|
|
6
6
|
* which embeds the plugin iframe and handles bridge communication.
|
|
7
|
+
* Always starts in mock mode — use the toolbar to switch to live.
|
|
7
8
|
*
|
|
8
9
|
* Usage:
|
|
9
|
-
* npx fias-dev #
|
|
10
|
-
* npx fias-dev --live # Live mode (real AI, costs credits)
|
|
10
|
+
* npx fias-dev # Start harness (mock mode)
|
|
11
11
|
* npx fias-dev --port 3200 # Custom port
|
|
12
12
|
* npx fias-dev --plugin-url http://localhost:3100
|
|
13
13
|
*/
|
|
@@ -18,42 +18,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
18
18
|
exports.registerDevCommand = registerDevCommand;
|
|
19
19
|
const chalk_1 = __importDefault(require("chalk"));
|
|
20
20
|
const config_loader_1 = require("../config/config-loader");
|
|
21
|
-
const credentials_1 = require("../config/credentials");
|
|
22
21
|
const harness_server_1 = require("../server/harness-server");
|
|
23
22
|
function registerDevCommand(program) {
|
|
24
23
|
program
|
|
25
24
|
.command('dev', { isDefault: true })
|
|
26
25
|
.description('Start the dev harness server')
|
|
27
|
-
.option('--live', 'Enable live mode (real AI, costs credits)', false)
|
|
28
26
|
.option('--port <port>', 'Harness server port', '3200')
|
|
29
27
|
.option('--plugin-url <url>', 'Plugin dev server URL')
|
|
30
28
|
.action(async (options) => {
|
|
31
29
|
const config = (0, config_loader_1.loadConfig)();
|
|
32
30
|
const port = parseInt(options.port, 10) || config.port;
|
|
33
31
|
const pluginUrl = options.pluginUrl || config.pluginUrl;
|
|
34
|
-
const isLive = options.live;
|
|
35
|
-
if (isLive) {
|
|
36
|
-
const credentials = (0, credentials_1.loadCredentials)();
|
|
37
|
-
if (!credentials.apiKey) {
|
|
38
|
-
console.error(chalk_1.default.red('No API key found. Run `fias-dev login` first to save your API key.'));
|
|
39
|
-
process.exit(1);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
const credentials = isLive ? (0, credentials_1.loadCredentials)() : { apiKey: '' };
|
|
43
32
|
console.log(chalk_1.default.bold('\n FIAS Plugin Dev Harness\n'));
|
|
44
|
-
console.log(` Mode: ${
|
|
33
|
+
console.log(` Mode: ${chalk_1.default.green('MOCK (toggle to LIVE in the toolbar)')}`);
|
|
45
34
|
console.log(` Plugin: ${chalk_1.default.cyan(pluginUrl)}`);
|
|
46
35
|
console.log(` Harness: ${chalk_1.default.cyan(`http://localhost:${port}`)}`);
|
|
47
|
-
if (isLive) {
|
|
48
|
-
console.log(` API: ${chalk_1.default.dim(config.apiUrl)}`);
|
|
49
|
-
}
|
|
50
36
|
console.log('');
|
|
51
37
|
await (0, harness_server_1.startHarnessServer)({
|
|
52
38
|
port,
|
|
53
39
|
pluginUrl,
|
|
54
|
-
|
|
55
|
-
apiKey: credentials.apiKey,
|
|
56
|
-
apiUrl: config.apiUrl,
|
|
40
|
+
defaultEnvironment: 'staging',
|
|
57
41
|
permissions: config.permissions,
|
|
58
42
|
mockUser: config.mockUser,
|
|
59
43
|
mockTheme: config.mockTheme,
|
package/dist/cli/dev.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/cli/dev.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;;;
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/cli/dev.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;;;AAOH,gDA4BC;AAhCD,kDAA0B;AAC1B,2DAAqD;AACrD,6DAA8D;AAE9D,SAAgB,kBAAkB,CAAC,OAAgB;IACjD,OAAO;SACJ,OAAO,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;SACnC,WAAW,CAAC,8BAA8B,CAAC;SAC3C,MAAM,CAAC,eAAe,EAAE,qBAAqB,EAAE,MAAM,CAAC;SACtD,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC;SACrD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,MAAM,GAAG,IAAA,0BAAU,GAAE,CAAC;QAE5B,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC;QACvD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC;QAExD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,iBAAiB,eAAK,CAAC,KAAK,CAAC,sCAAsC,CAAC,EAAE,CAAC,CAAC;QACpF,OAAO,CAAC,GAAG,CAAC,iBAAiB,eAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,iBAAiB,eAAK,CAAC,IAAI,CAAC,oBAAoB,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,MAAM,IAAA,mCAAkB,EAAC;YACvB,IAAI;YACJ,SAAS;YACT,kBAAkB,EAAE,SAAS;YAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,YAAY,EAAE,MAAM,CAAC,YAAY;SAClC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/dist/cli/dev.test.js
CHANGED
|
@@ -3,62 +3,54 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
jest.mock('../config/config-loader', () => ({
|
|
4
4
|
loadConfig: jest.fn(),
|
|
5
5
|
}));
|
|
6
|
-
jest.mock('../config/credentials', () => ({
|
|
7
|
-
loadCredentials: jest.fn(),
|
|
8
|
-
}));
|
|
9
6
|
jest.mock('../server/harness-server', () => ({
|
|
10
7
|
startHarnessServer: jest.fn(),
|
|
11
8
|
}));
|
|
12
9
|
const commander_1 = require("commander");
|
|
13
10
|
const dev_1 = require("./dev");
|
|
14
11
|
const config_loader_1 = require("../config/config-loader");
|
|
15
|
-
const credentials_1 = require("../config/credentials");
|
|
16
12
|
const harness_server_1 = require("../server/harness-server");
|
|
17
13
|
const mockedLoadConfig = jest.mocked(config_loader_1.loadConfig);
|
|
18
|
-
const mockedLoadCredentials = jest.mocked(credentials_1.loadCredentials);
|
|
19
14
|
const mockedStartHarnessServer = jest.mocked(harness_server_1.startHarnessServer);
|
|
20
15
|
describe('cli/dev', () => {
|
|
21
16
|
let program;
|
|
22
|
-
let mockExit;
|
|
23
17
|
let consoleSpy;
|
|
24
|
-
let consoleErrorSpy;
|
|
25
18
|
const defaultConfig = {
|
|
26
19
|
pluginUrl: 'http://localhost:3100',
|
|
27
20
|
port: 3200,
|
|
28
21
|
permissions: ['theme:read', 'entities:invoke'],
|
|
29
22
|
mockUser: { userId: 'dev_user_001', displayName: 'Dev User', avatar: null },
|
|
30
23
|
mockTheme: 'dark',
|
|
31
|
-
apiUrl: 'https://api.fias.
|
|
32
|
-
platformUrl: 'https://fias.
|
|
24
|
+
apiUrl: 'https://api.staging.fias.io/v1',
|
|
25
|
+
platformUrl: 'https://staging.fias.io',
|
|
33
26
|
};
|
|
34
27
|
beforeEach(() => {
|
|
35
28
|
jest.clearAllMocks();
|
|
36
29
|
program = new commander_1.Command();
|
|
37
30
|
program.exitOverride();
|
|
38
31
|
(0, dev_1.registerDevCommand)(program);
|
|
39
|
-
mockExit = jest.spyOn(process, 'exit').mockImplementation(((code) => {
|
|
40
|
-
throw new Error(`process.exit(${code})`);
|
|
41
|
-
}));
|
|
42
32
|
consoleSpy = jest.spyOn(console, 'log').mockImplementation(() => { });
|
|
43
|
-
consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(() => { });
|
|
44
33
|
mockedLoadConfig.mockReturnValue({ ...defaultConfig });
|
|
45
|
-
mockedLoadCredentials.mockReturnValue({ apiKey: '' });
|
|
46
34
|
mockedStartHarnessServer.mockResolvedValue();
|
|
47
35
|
});
|
|
48
36
|
afterEach(() => {
|
|
49
|
-
mockExit.mockRestore();
|
|
50
37
|
consoleSpy.mockRestore();
|
|
51
|
-
consoleErrorSpy.mockRestore();
|
|
52
38
|
});
|
|
53
39
|
it('starts harness server in mock mode by default', async () => {
|
|
54
40
|
await program.parseAsync(['dev'], { from: 'user' });
|
|
55
41
|
expect(mockedStartHarnessServer).toHaveBeenCalledWith(expect.objectContaining({
|
|
56
42
|
port: 3200,
|
|
57
43
|
pluginUrl: 'http://localhost:3100',
|
|
58
|
-
|
|
59
|
-
apiKey: '',
|
|
44
|
+
defaultEnvironment: 'staging',
|
|
60
45
|
}));
|
|
61
46
|
});
|
|
47
|
+
it('does not pass isLive or apiKey to server', async () => {
|
|
48
|
+
await program.parseAsync(['dev'], { from: 'user' });
|
|
49
|
+
const options = mockedStartHarnessServer.mock.calls[0][0];
|
|
50
|
+
expect(options).not.toHaveProperty('isLive');
|
|
51
|
+
expect(options).not.toHaveProperty('apiKey');
|
|
52
|
+
expect(options).not.toHaveProperty('apiUrl');
|
|
53
|
+
});
|
|
62
54
|
it('starts harness server with custom port', async () => {
|
|
63
55
|
await program.parseAsync(['dev', '--port', '4000'], { from: 'user' });
|
|
64
56
|
expect(mockedStartHarnessServer).toHaveBeenCalledWith(expect.objectContaining({
|
|
@@ -73,26 +65,6 @@ describe('cli/dev', () => {
|
|
|
73
65
|
pluginUrl: 'http://localhost:5555',
|
|
74
66
|
}));
|
|
75
67
|
});
|
|
76
|
-
it('exits with error in live mode when no API key is saved', async () => {
|
|
77
|
-
mockedLoadCredentials.mockReturnValue({ apiKey: '' });
|
|
78
|
-
await expect(program.parseAsync(['dev', '--live'], { from: 'user' })).rejects.toThrow('process.exit(1)');
|
|
79
|
-
expect(consoleErrorSpy).toHaveBeenCalledWith(expect.stringContaining('No API key found'));
|
|
80
|
-
expect(mockedStartHarnessServer).not.toHaveBeenCalled();
|
|
81
|
-
});
|
|
82
|
-
it('starts harness server in live mode with API key', async () => {
|
|
83
|
-
mockedLoadCredentials.mockReturnValue({ apiKey: 'fias_sk_live_key' });
|
|
84
|
-
await program.parseAsync(['dev', '--live'], { from: 'user' });
|
|
85
|
-
expect(mockedStartHarnessServer).toHaveBeenCalledWith(expect.objectContaining({
|
|
86
|
-
isLive: true,
|
|
87
|
-
apiKey: 'fias_sk_live_key',
|
|
88
|
-
}));
|
|
89
|
-
});
|
|
90
|
-
it('logs live mode info', async () => {
|
|
91
|
-
mockedLoadCredentials.mockReturnValue({ apiKey: 'fias_sk_live_key' });
|
|
92
|
-
await program.parseAsync(['dev', '--live'], { from: 'user' });
|
|
93
|
-
const allLogs = consoleSpy.mock.calls.map((c) => c[0]).join('\n');
|
|
94
|
-
expect(allLogs).toContain('LIVE');
|
|
95
|
-
});
|
|
96
68
|
it('passes config properties to harness server', async () => {
|
|
97
69
|
mockedLoadConfig.mockReturnValue({
|
|
98
70
|
...defaultConfig,
|
package/dist/cli/dev.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.test.js","sourceRoot":"","sources":["../../src/cli/dev.test.ts"],"names":[],"mappings":";;AAAA,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1C,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE;CACtB,CAAC,CAAC,CAAC;AACJ,IAAI,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"dev.test.js","sourceRoot":"","sources":["../../src/cli/dev.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../src/cli/entities.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../src/cli/entities.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2E9D"}
|
package/dist/cli/entities.js
CHANGED
|
@@ -20,23 +20,25 @@ function registerEntitiesCommand(program) {
|
|
|
20
20
|
.option('--search <query>', 'Search entities by name/description')
|
|
21
21
|
.option('--type <type>', 'Filter by entity type (prompt, specialized-model, etc.)')
|
|
22
22
|
.option('--limit <n>', 'Number of results', '20')
|
|
23
|
+
.option('--env <environment>', 'Target environment (staging or production)', 'staging')
|
|
23
24
|
.action(async (options) => {
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
const env = options.env === 'production' ? 'production' : 'staging';
|
|
26
|
+
const apiKey = (0, credentials_1.loadApiKeyForEnvironment)(env);
|
|
27
|
+
if (!apiKey) {
|
|
28
|
+
console.error(chalk_1.default.red(`No API key found for ${env}. Run \`fias-dev login --env ${env}\` first.`));
|
|
27
29
|
process.exit(1);
|
|
28
30
|
}
|
|
29
|
-
const
|
|
31
|
+
const apiUrl = config_loader_1.ENVIRONMENT_URLS[env].apiUrl;
|
|
30
32
|
const params = new URLSearchParams();
|
|
31
33
|
if (options.search)
|
|
32
34
|
params.set('search', options.search);
|
|
33
35
|
if (options.type)
|
|
34
36
|
params.set('type', options.type);
|
|
35
37
|
params.set('limit', options.limit);
|
|
36
|
-
const url = `${
|
|
38
|
+
const url = `${apiUrl}/developer/entities?${params.toString()}`;
|
|
37
39
|
try {
|
|
38
40
|
const response = await fetch(url, {
|
|
39
|
-
headers: { Authorization: `Bearer ${
|
|
41
|
+
headers: { Authorization: `Bearer ${apiKey}` },
|
|
40
42
|
});
|
|
41
43
|
if (!response.ok) {
|
|
42
44
|
const err = await response.json().catch(() => ({}));
|
package/dist/cli/entities.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entities.js","sourceRoot":"","sources":["../../src/cli/entities.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AAsBH,
|
|
1
|
+
{"version":3,"file":"entities.js","sourceRoot":"","sources":["../../src/cli/entities.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
jest.mock('../config/credentials', () => ({
|
|
4
|
-
|
|
4
|
+
loadApiKeyForEnvironment: jest.fn(),
|
|
5
5
|
}));
|
|
6
6
|
jest.mock('../config/config-loader', () => ({
|
|
7
|
-
|
|
7
|
+
ENVIRONMENT_URLS: {
|
|
8
|
+
staging: { apiUrl: 'https://api.staging.fias.io/v1', platformUrl: 'https://staging.fias.io' },
|
|
9
|
+
production: { apiUrl: 'https://api.fias.io/v1', platformUrl: 'https://fias.io' },
|
|
10
|
+
},
|
|
8
11
|
}));
|
|
9
12
|
const commander_1 = require("commander");
|
|
10
13
|
const entities_1 = require("./entities");
|
|
11
14
|
const credentials_1 = require("../config/credentials");
|
|
12
|
-
const
|
|
13
|
-
const mockedLoadCredentials = jest.mocked(credentials_1.loadCredentials);
|
|
14
|
-
const mockedLoadConfig = jest.mocked(config_loader_1.loadConfig);
|
|
15
|
+
const mockedLoadApiKey = jest.mocked(credentials_1.loadApiKeyForEnvironment);
|
|
15
16
|
describe('cli/entities', () => {
|
|
16
17
|
let program;
|
|
17
18
|
let mockExit;
|
|
18
19
|
let consoleSpy;
|
|
19
20
|
let consoleErrorSpy;
|
|
20
21
|
let originalFetch;
|
|
21
|
-
const defaultConfigValue = {
|
|
22
|
-
pluginUrl: 'http://localhost:3100',
|
|
23
|
-
port: 3200,
|
|
24
|
-
permissions: [],
|
|
25
|
-
mockUser: { userId: 'dev_user_001', displayName: 'Dev User', avatar: null },
|
|
26
|
-
mockTheme: 'dark',
|
|
27
|
-
apiUrl: 'https://api.fias.app/v1',
|
|
28
|
-
platformUrl: 'https://fias.app',
|
|
29
|
-
};
|
|
30
22
|
beforeEach(() => {
|
|
31
23
|
jest.clearAllMocks();
|
|
32
24
|
originalFetch = global.fetch;
|
|
@@ -38,7 +30,6 @@ describe('cli/entities', () => {
|
|
|
38
30
|
}));
|
|
39
31
|
consoleSpy = jest.spyOn(console, 'log').mockImplementation(() => { });
|
|
40
32
|
consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(() => { });
|
|
41
|
-
mockedLoadConfig.mockReturnValue({ ...defaultConfigValue });
|
|
42
33
|
});
|
|
43
34
|
afterEach(() => {
|
|
44
35
|
mockExit.mockRestore();
|
|
@@ -47,12 +38,12 @@ describe('cli/entities', () => {
|
|
|
47
38
|
global.fetch = originalFetch;
|
|
48
39
|
});
|
|
49
40
|
it('exits with error when no API key is configured', async () => {
|
|
50
|
-
|
|
41
|
+
mockedLoadApiKey.mockReturnValue('');
|
|
51
42
|
await expect(program.parseAsync(['entities'], { from: 'user' })).rejects.toThrow('process.exit(1)');
|
|
52
43
|
expect(consoleErrorSpy).toHaveBeenCalledWith(expect.stringContaining('No API key found'));
|
|
53
44
|
});
|
|
54
45
|
it('displays entities when API returns results', async () => {
|
|
55
|
-
|
|
46
|
+
mockedLoadApiKey.mockReturnValue('fias_sk_test');
|
|
56
47
|
global.fetch = jest.fn().mockResolvedValue({
|
|
57
48
|
ok: true,
|
|
58
49
|
json: () => Promise.resolve({
|
|
@@ -75,7 +66,7 @@ describe('cli/entities', () => {
|
|
|
75
66
|
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('entity_sum'));
|
|
76
67
|
});
|
|
77
68
|
it('shows "no entities found" when API returns empty list', async () => {
|
|
78
|
-
|
|
69
|
+
mockedLoadApiKey.mockReturnValue('fias_sk_test');
|
|
79
70
|
global.fetch = jest.fn().mockResolvedValue({
|
|
80
71
|
ok: true,
|
|
81
72
|
json: () => Promise.resolve({
|
|
@@ -89,7 +80,7 @@ describe('cli/entities', () => {
|
|
|
89
80
|
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('No entities found'));
|
|
90
81
|
});
|
|
91
82
|
it('displays "showing X of Y" message when there are more results', async () => {
|
|
92
|
-
|
|
83
|
+
mockedLoadApiKey.mockReturnValue('fias_sk_test');
|
|
93
84
|
global.fetch = jest.fn().mockResolvedValue({
|
|
94
85
|
ok: true,
|
|
95
86
|
json: () => Promise.resolve({
|
|
@@ -111,7 +102,7 @@ describe('cli/entities', () => {
|
|
|
111
102
|
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('Showing 1 of 50'));
|
|
112
103
|
});
|
|
113
104
|
it('passes search, type, and limit query params', async () => {
|
|
114
|
-
|
|
105
|
+
mockedLoadApiKey.mockReturnValue('fias_sk_test');
|
|
115
106
|
global.fetch = jest.fn().mockResolvedValue({
|
|
116
107
|
ok: true,
|
|
117
108
|
json: () => Promise.resolve({
|
|
@@ -129,7 +120,7 @@ describe('cli/entities', () => {
|
|
|
129
120
|
expect(url).toContain('limit=5');
|
|
130
121
|
});
|
|
131
122
|
it('exits with error when API returns non-ok response', async () => {
|
|
132
|
-
|
|
123
|
+
mockedLoadApiKey.mockReturnValue('fias_sk_test');
|
|
133
124
|
global.fetch = jest.fn().mockResolvedValue({
|
|
134
125
|
ok: false,
|
|
135
126
|
statusText: 'Unauthorized',
|
|
@@ -139,7 +130,7 @@ describe('cli/entities', () => {
|
|
|
139
130
|
expect(consoleErrorSpy).toHaveBeenCalledWith(expect.stringContaining('Invalid API key'));
|
|
140
131
|
});
|
|
141
132
|
it('exits with error when API response JSON parsing fails', async () => {
|
|
142
|
-
|
|
133
|
+
mockedLoadApiKey.mockReturnValue('fias_sk_test');
|
|
143
134
|
global.fetch = jest.fn().mockResolvedValue({
|
|
144
135
|
ok: false,
|
|
145
136
|
statusText: 'Server Error',
|
|
@@ -149,13 +140,13 @@ describe('cli/entities', () => {
|
|
|
149
140
|
expect(consoleErrorSpy).toHaveBeenCalledWith(expect.stringContaining('Server Error'));
|
|
150
141
|
});
|
|
151
142
|
it('exits with error when fetch throws (network error)', async () => {
|
|
152
|
-
|
|
143
|
+
mockedLoadApiKey.mockReturnValue('fias_sk_test');
|
|
153
144
|
global.fetch = jest.fn().mockRejectedValue(new Error('Connection refused'));
|
|
154
145
|
await expect(program.parseAsync(['entities'], { from: 'user' })).rejects.toThrow('process.exit(1)');
|
|
155
146
|
expect(consoleErrorSpy).toHaveBeenCalledWith(expect.stringContaining('Connection refused'));
|
|
156
147
|
});
|
|
157
148
|
it('handles entity without description', async () => {
|
|
158
|
-
|
|
149
|
+
mockedLoadApiKey.mockReturnValue('fias_sk_test');
|
|
159
150
|
global.fetch = jest.fn().mockResolvedValue({
|
|
160
151
|
ok: true,
|
|
161
152
|
json: () => Promise.resolve({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entities.test.js","sourceRoot":"","sources":["../../src/cli/entities.test.ts"],"names":[],"mappings":";;AAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,CAAC;IACxC,
|
|
1
|
+
{"version":3,"file":"entities.test.js","sourceRoot":"","sources":["../../src/cli/entities.test.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.test.js
CHANGED
|
@@ -46,9 +46,9 @@ describe('cli/index', () => {
|
|
|
46
46
|
const commands = program.commands.map((cmd) => cmd.name());
|
|
47
47
|
expect(commands).toContain('submit');
|
|
48
48
|
});
|
|
49
|
-
it('has exactly
|
|
49
|
+
it('has exactly 6 commands registered', () => {
|
|
50
50
|
const program = (0, index_1.createCli)();
|
|
51
|
-
expect(program.commands).toHaveLength(
|
|
51
|
+
expect(program.commands).toHaveLength(6);
|
|
52
52
|
});
|
|
53
53
|
});
|
|
54
54
|
});
|
package/dist/cli/login.d.ts
CHANGED
|
@@ -5,7 +5,9 @@
|
|
|
5
5
|
* Manual: `fias-dev login --key fias_sk_...` saves key directly.
|
|
6
6
|
*/
|
|
7
7
|
import { Command } from 'commander';
|
|
8
|
+
import { type Environment } from '../config/credentials';
|
|
8
9
|
export declare function registerLoginCommand(program: Command): void;
|
|
10
|
+
export declare function handleBrowserLogin(environment?: Environment): Promise<void>;
|
|
9
11
|
/**
|
|
10
12
|
* Prompts for API key interactively (used as fallback).
|
|
11
13
|
*/
|
package/dist/cli/login.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/cli/login.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/cli/login.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAA4B,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKnF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoB3D;AAaD,wBAAsB,kBAAkB,CAAC,WAAW,GAAE,WAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6F5F;AA+CD;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CAYjD"}
|