@getbrevo/cli 2.0.2 → 2.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/CHANGELOG.md +209 -0
- package/README.md +8 -5
- package/agent-context/AGENTS.md +59 -15
- package/agent-context/SKILL.md +70 -14
- package/dist/{templates → bin}/files/AGENTS.md.tmpl +11 -1
- package/dist/{templates → bin}/files/CLAUDE.md.tmpl +8 -0
- package/dist/{templates → bin}/files/README.md.tmpl +11 -14
- package/dist/bin/files/app-config.json.tmpl +16 -0
- package/dist/{templates → bin}/files/src/oauth/.env.example.tmpl +8 -0
- package/dist/{templates → bin}/files/src/oauth/.env.local.tmpl +2 -0
- package/dist/{templates → bin}/files/src/oauth/handler.js.tmpl +49 -7
- package/dist/{templates → bin}/files/src/oauth/server.js.tmpl +20 -14
- package/dist/{templates → bin}/files/src/oauth/token-store.js.tmpl +19 -0
- package/dist/bin/index.js +660 -235
- package/dist/bin/index.js.map +7 -1
- package/package.json +6 -4
- package/dist/api/client.d.ts +0 -25
- package/dist/api/client.d.ts.map +0 -1
- package/dist/api/client.js +0 -205
- package/dist/api/client.js.map +0 -1
- package/dist/bin/index.d.ts +0 -3
- package/dist/bin/index.d.ts.map +0 -1
- package/dist/commands/app/create.d.ts +0 -8
- package/dist/commands/app/create.d.ts.map +0 -1
- package/dist/commands/app/create.js +0 -325
- package/dist/commands/app/create.js.map +0 -1
- package/dist/commands/app/credentials.d.ts +0 -6
- package/dist/commands/app/credentials.d.ts.map +0 -1
- package/dist/commands/app/credentials.js +0 -114
- package/dist/commands/app/credentials.js.map +0 -1
- package/dist/commands/app/delete.d.ts +0 -6
- package/dist/commands/app/delete.d.ts.map +0 -1
- package/dist/commands/app/delete.js +0 -167
- package/dist/commands/app/delete.js.map +0 -1
- package/dist/commands/app/list.d.ts +0 -4
- package/dist/commands/app/list.d.ts.map +0 -1
- package/dist/commands/app/list.js +0 -71
- package/dist/commands/app/list.js.map +0 -1
- package/dist/commands/app/scaffold.d.ts +0 -5
- package/dist/commands/app/scaffold.d.ts.map +0 -1
- package/dist/commands/app/scaffold.js +0 -213
- package/dist/commands/app/scaffold.js.map +0 -1
- package/dist/commands/app/scopes.d.ts +0 -2
- package/dist/commands/app/scopes.d.ts.map +0 -1
- package/dist/commands/app/scopes.js +0 -81
- package/dist/commands/app/scopes.js.map +0 -1
- package/dist/commands/app/start.d.ts +0 -5
- package/dist/commands/app/start.d.ts.map +0 -1
- package/dist/commands/app/start.js +0 -220
- package/dist/commands/app/start.js.map +0 -1
- package/dist/commands/app/update.d.ts +0 -2
- package/dist/commands/app/update.d.ts.map +0 -1
- package/dist/commands/app/update.js +0 -444
- package/dist/commands/app/update.js.map +0 -1
- package/dist/commands/definitions.d.ts +0 -5
- package/dist/commands/definitions.d.ts.map +0 -1
- package/dist/commands/definitions.js +0 -262
- package/dist/commands/definitions.js.map +0 -1
- package/dist/commands/init.d.ts +0 -2
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js +0 -138
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/login.d.ts +0 -6
- package/dist/commands/login.d.ts.map +0 -1
- package/dist/commands/login.js +0 -251
- package/dist/commands/login.js.map +0 -1
- package/dist/commands/logout.d.ts +0 -5
- package/dist/commands/logout.d.ts.map +0 -1
- package/dist/commands/logout.js +0 -54
- package/dist/commands/logout.js.map +0 -1
- package/dist/commands/skill/install.d.ts +0 -4
- package/dist/commands/skill/install.d.ts.map +0 -1
- package/dist/commands/skill/install.js +0 -29
- package/dist/commands/skill/install.js.map +0 -1
- package/dist/commands/skill/uninstall.d.ts +0 -4
- package/dist/commands/skill/uninstall.d.ts.map +0 -1
- package/dist/commands/skill/uninstall.js +0 -23
- package/dist/commands/skill/uninstall.js.map +0 -1
- package/dist/commands/whoami.d.ts +0 -4
- package/dist/commands/whoami.d.ts.map +0 -1
- package/dist/commands/whoami.js +0 -85
- package/dist/commands/whoami.js.map +0 -1
- package/dist/container.d.ts +0 -7
- package/dist/container.d.ts.map +0 -1
- package/dist/container.js +0 -28
- package/dist/container.js.map +0 -1
- package/dist/lang/en.d.ts +0 -162
- package/dist/lang/en.d.ts.map +0 -1
- package/dist/lang/en.js +0 -189
- package/dist/lang/en.js.map +0 -1
- package/dist/lib/abort.d.ts +0 -3
- package/dist/lib/abort.d.ts.map +0 -1
- package/dist/lib/abort.js +0 -30
- package/dist/lib/abort.js.map +0 -1
- package/dist/lib/auth-guard.d.ts +0 -13
- package/dist/lib/auth-guard.d.ts.map +0 -1
- package/dist/lib/auth-guard.js +0 -60
- package/dist/lib/auth-guard.js.map +0 -1
- package/dist/lib/browser.d.ts +0 -2
- package/dist/lib/browser.d.ts.map +0 -1
- package/dist/lib/browser.js +0 -16
- package/dist/lib/browser.js.map +0 -1
- package/dist/lib/cli-version.d.ts +0 -2
- package/dist/lib/cli-version.d.ts.map +0 -1
- package/dist/lib/cli-version.js +0 -59
- package/dist/lib/cli-version.js.map +0 -1
- package/dist/lib/command-handler.d.ts +0 -10
- package/dist/lib/command-handler.d.ts.map +0 -1
- package/dist/lib/command-handler.js +0 -16
- package/dist/lib/command-handler.js.map +0 -1
- package/dist/lib/command-registry.d.ts +0 -28
- package/dist/lib/command-registry.d.ts.map +0 -1
- package/dist/lib/command-registry.js +0 -54
- package/dist/lib/command-registry.js.map +0 -1
- package/dist/lib/config.d.ts +0 -83
- package/dist/lib/config.d.ts.map +0 -1
- package/dist/lib/config.js +0 -430
- package/dist/lib/config.js.map +0 -1
- package/dist/lib/constants.d.ts +0 -48
- package/dist/lib/constants.d.ts.map +0 -1
- package/dist/lib/constants.js +0 -121
- package/dist/lib/constants.js.map +0 -1
- package/dist/lib/errors.d.ts +0 -30
- package/dist/lib/errors.d.ts.map +0 -1
- package/dist/lib/errors.js +0 -66
- package/dist/lib/errors.js.map +0 -1
- package/dist/lib/exit-codes.d.ts +0 -9
- package/dist/lib/exit-codes.d.ts.map +0 -1
- package/dist/lib/exit-codes.js +0 -12
- package/dist/lib/exit-codes.js.map +0 -1
- package/dist/lib/hidden-input.d.ts +0 -2
- package/dist/lib/hidden-input.d.ts.map +0 -1
- package/dist/lib/hidden-input.js +0 -78
- package/dist/lib/hidden-input.js.map +0 -1
- package/dist/lib/json-output.d.ts +0 -6
- package/dist/lib/json-output.d.ts.map +0 -1
- package/dist/lib/json-output.js +0 -11
- package/dist/lib/json-output.js.map +0 -1
- package/dist/lib/logger.d.ts +0 -11
- package/dist/lib/logger.d.ts.map +0 -1
- package/dist/lib/logger.js +0 -110
- package/dist/lib/logger.js.map +0 -1
- package/dist/lib/oauth-freshness.d.ts +0 -30
- package/dist/lib/oauth-freshness.d.ts.map +0 -1
- package/dist/lib/oauth-freshness.js +0 -61
- package/dist/lib/oauth-freshness.js.map +0 -1
- package/dist/lib/port.d.ts +0 -25
- package/dist/lib/port.d.ts.map +0 -1
- package/dist/lib/port.js +0 -103
- package/dist/lib/port.js.map +0 -1
- package/dist/lib/telemetry.d.ts +0 -9
- package/dist/lib/telemetry.d.ts.map +0 -1
- package/dist/lib/telemetry.js +0 -57
- package/dist/lib/telemetry.js.map +0 -1
- package/dist/lib/ui.d.ts +0 -14
- package/dist/lib/ui.d.ts.map +0 -1
- package/dist/lib/ui.js +0 -75
- package/dist/lib/ui.js.map +0 -1
- package/dist/lib/update-notifier.d.ts +0 -37
- package/dist/lib/update-notifier.d.ts.map +0 -1
- package/dist/lib/update-notifier.js +0 -298
- package/dist/lib/update-notifier.js.map +0 -1
- package/dist/lib/validators.d.ts +0 -55
- package/dist/lib/validators.d.ts.map +0 -1
- package/dist/lib/validators.js +0 -166
- package/dist/lib/validators.js.map +0 -1
- package/dist/services/account.d.ts +0 -8
- package/dist/services/account.d.ts.map +0 -1
- package/dist/services/account.js +0 -15
- package/dist/services/account.js.map +0 -1
- package/dist/services/app.d.ts +0 -38
- package/dist/services/app.d.ts.map +0 -1
- package/dist/services/app.js +0 -145
- package/dist/services/app.js.map +0 -1
- package/dist/services/browser-auth.d.ts +0 -15
- package/dist/services/browser-auth.d.ts.map +0 -1
- package/dist/services/browser-auth.js +0 -188
- package/dist/services/browser-auth.js.map +0 -1
- package/dist/services/normalize-app-id.d.ts +0 -12
- package/dist/services/normalize-app-id.d.ts.map +0 -1
- package/dist/services/normalize-app-id.js +0 -38
- package/dist/services/normalize-app-id.js.map +0 -1
- package/dist/services/oauth-metadata.d.ts +0 -7
- package/dist/services/oauth-metadata.d.ts.map +0 -1
- package/dist/services/oauth-metadata.js +0 -43
- package/dist/services/oauth-metadata.js.map +0 -1
- package/dist/services/oauth-refresh.d.ts +0 -14
- package/dist/services/oauth-refresh.d.ts.map +0 -1
- package/dist/services/oauth-refresh.js +0 -70
- package/dist/services/oauth-refresh.js.map +0 -1
- package/dist/services/scopes-html.d.ts +0 -3
- package/dist/services/scopes-html.d.ts.map +0 -1
- package/dist/services/scopes-html.js +0 -516
- package/dist/services/scopes-html.js.map +0 -1
- package/dist/services/scopes-web.d.ts +0 -12
- package/dist/services/scopes-web.d.ts.map +0 -1
- package/dist/services/scopes-web.js +0 -95
- package/dist/services/scopes-web.js.map +0 -1
- package/dist/services/skill.d.ts +0 -48
- package/dist/services/skill.d.ts.map +0 -1
- package/dist/services/skill.js +0 -223
- package/dist/services/skill.js.map +0 -1
- package/dist/skills/index.d.ts +0 -47
- package/dist/skills/index.d.ts.map +0 -1
- package/dist/skills/index.js +0 -61
- package/dist/skills/index.js.map +0 -1
- package/dist/templates/files/app-config.json.tmpl +0 -25
- package/dist/templates/index.d.ts +0 -36
- package/dist/templates/index.d.ts.map +0 -1
- package/dist/templates/index.js +0 -105
- package/dist/templates/index.js.map +0 -1
- package/dist/types.d.ts +0 -32
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -3
- package/dist/types.js.map +0 -1
- /package/dist/{templates → bin}/files/gitignore.tmpl +0 -0
- /package/dist/{templates → bin}/files/src/oauth/package.json.tmpl +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command-handler.d.ts","sourceRoot":"","sources":["../../src/lib/command-handler.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAC7B,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAE5B"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.withCommandHandler = withCommandHandler;
|
|
4
|
-
const abort_1 = require("./abort");
|
|
5
|
-
/**
|
|
6
|
-
* Wraps a command handler with abort handling (Ctrl+C during inquirer prompts).
|
|
7
|
-
*
|
|
8
|
-
* Usage:
|
|
9
|
-
* export const myCommand = withCommandHandler(async (opts) => {
|
|
10
|
-
* // command logic
|
|
11
|
-
* });
|
|
12
|
-
*/
|
|
13
|
-
function withCommandHandler(fn) {
|
|
14
|
-
return (opts) => (0, abort_1.withAbortHandler)(() => fn(opts));
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=command-handler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command-handler.js","sourceRoot":"","sources":["../../src/lib/command-handler.ts"],"names":[],"mappings":";;AAUA,gDAIC;AAdD,mCAA2C;AAE3C;;;;;;;GAOG;AACH,SAAgB,kBAAkB,CAChC,EAA8B;IAE9B,OAAO,CAAC,IAAO,EAAE,EAAE,CAAC,IAAA,wBAAgB,EAAC,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AACvD,CAAC"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
export interface CommandOption {
|
|
3
|
-
flags: string;
|
|
4
|
-
description: string;
|
|
5
|
-
parser?: (value: string) => unknown;
|
|
6
|
-
}
|
|
7
|
-
export interface CommandArgument {
|
|
8
|
-
name: string;
|
|
9
|
-
description: string;
|
|
10
|
-
}
|
|
11
|
-
export interface CommandDefinition {
|
|
12
|
-
name: string;
|
|
13
|
-
description: string;
|
|
14
|
-
arguments?: CommandArgument[];
|
|
15
|
-
options?: CommandOption[];
|
|
16
|
-
examples?: string[];
|
|
17
|
-
handler: (opts: Record<string, unknown>, ...args: unknown[]) => void | Promise<void>;
|
|
18
|
-
}
|
|
19
|
-
export interface SubcommandGroupDefinition {
|
|
20
|
-
name: string;
|
|
21
|
-
description: string;
|
|
22
|
-
commands: CommandDefinition[];
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Register all commands and subcommand groups onto the program.
|
|
26
|
-
*/
|
|
27
|
-
export declare function registerAll(program: Command, commands: CommandDefinition[], groups: SubcommandGroupDefinition[]): void;
|
|
28
|
-
//# sourceMappingURL=command-registry.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command-registry.d.ts","sourceRoot":"","sources":["../../src/lib/command-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;CACrC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAC9B,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtF;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AAiDD;;GAEG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,MAAM,EAAE,yBAAyB,EAAE,GAClC,IAAI,CAON"}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.registerAll = registerAll;
|
|
4
|
-
/**
|
|
5
|
-
* Register a flat command on the program.
|
|
6
|
-
*/
|
|
7
|
-
function registerCommand(parent, def) {
|
|
8
|
-
const cmd = parent.command(def.name).description(def.description);
|
|
9
|
-
if (def.arguments) {
|
|
10
|
-
for (const arg of def.arguments) {
|
|
11
|
-
cmd.argument(arg.name, arg.description);
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
if (def.options) {
|
|
15
|
-
for (const opt of def.options) {
|
|
16
|
-
if (opt.parser) {
|
|
17
|
-
cmd.option(opt.flags, opt.description, opt.parser);
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
cmd.option(opt.flags, opt.description);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
if (def.examples?.length) {
|
|
25
|
-
cmd.addHelpText('after', '\nExamples:\n' + def.examples.map((e) => ` $ ${e}`).join('\n') + '\n');
|
|
26
|
-
}
|
|
27
|
-
cmd.action((...actionArgs) => {
|
|
28
|
-
// Commander passes positional args first, then options object, then Command
|
|
29
|
-
const opts = actionArgs.at(-2);
|
|
30
|
-
const positionalArgs = actionArgs.slice(0, -2);
|
|
31
|
-
return def.handler(opts, ...positionalArgs);
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Register a group of subcommands (e.g. `app create`, `app list`).
|
|
36
|
-
*/
|
|
37
|
-
function registerSubcommandGroup(parent, group) {
|
|
38
|
-
const groupCmd = parent.command(group.name).description(group.description);
|
|
39
|
-
for (const def of group.commands) {
|
|
40
|
-
registerCommand(groupCmd, def);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Register all commands and subcommand groups onto the program.
|
|
45
|
-
*/
|
|
46
|
-
function registerAll(program, commands, groups) {
|
|
47
|
-
for (const cmd of commands) {
|
|
48
|
-
registerCommand(program, cmd);
|
|
49
|
-
}
|
|
50
|
-
for (const group of groups) {
|
|
51
|
-
registerSubcommandGroup(program, group);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=command-registry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command-registry.js","sourceRoot":"","sources":["../../src/lib/command-registry.ts"],"names":[],"mappings":";;AA8EA,kCAWC;AA7DD;;GAEG;AACH,SAAS,eAAe,CAAC,MAAe,EAAE,GAAsB;IAC9D,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAElE,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;QAClB,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAChC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAC9B,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YACrD,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QACzB,GAAG,CAAC,WAAW,CACb,OAAO,EACP,eAAe,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CACxE,CAAC;IACJ,CAAC;IAED,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,UAAU,EAAE,EAAE;QAC3B,4EAA4E;QAC5E,MAAM,IAAI,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAA4B,CAAC;QAC1D,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,cAAc,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAAC,MAAe,EAAE,KAAgC;IAChF,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC3E,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjC,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACjC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CACzB,OAAgB,EAChB,QAA6B,EAC7B,MAAmC;IAEnC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAChC,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC"}
|
package/dist/lib/config.d.ts
DELETED
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
export declare function getCredentialsPath(): string;
|
|
2
|
-
export interface AppCredential {
|
|
3
|
-
clientId: string;
|
|
4
|
-
clientSecret: string;
|
|
5
|
-
}
|
|
6
|
-
export type AuthCred = {
|
|
7
|
-
kind: 'api-key';
|
|
8
|
-
apiKey: string;
|
|
9
|
-
} | {
|
|
10
|
-
kind: 'oauth';
|
|
11
|
-
accessToken: string;
|
|
12
|
-
refreshToken: string;
|
|
13
|
-
expiresAt: number;
|
|
14
|
-
tokenType: string;
|
|
15
|
-
scope?: string;
|
|
16
|
-
};
|
|
17
|
-
export declare function getApiKey(): string | undefined;
|
|
18
|
-
export declare function getAccessToken(): string | undefined;
|
|
19
|
-
export declare function getAuthCred(): AuthCred | undefined;
|
|
20
|
-
export declare function getEmail(): string | undefined;
|
|
21
|
-
export declare function getOrganizationId(): string | undefined;
|
|
22
|
-
export declare function getUserId(): number | undefined;
|
|
23
|
-
export declare function saveCredentials(apiKey: string, account: {
|
|
24
|
-
email: string;
|
|
25
|
-
organizationId: string;
|
|
26
|
-
userId: number;
|
|
27
|
-
}): void;
|
|
28
|
-
export interface OauthTokensToStore {
|
|
29
|
-
accessToken: string;
|
|
30
|
-
refreshToken: string;
|
|
31
|
-
expiresIn: number;
|
|
32
|
-
tokenType: string;
|
|
33
|
-
scope?: string;
|
|
34
|
-
}
|
|
35
|
-
export declare function saveOauthCredentials(tokens: OauthTokensToStore, account?: {
|
|
36
|
-
email: string;
|
|
37
|
-
organizationId: string;
|
|
38
|
-
userId: number;
|
|
39
|
-
}): void;
|
|
40
|
-
export declare function updateOauthTokens(tokens: OauthTokensToStore): void;
|
|
41
|
-
export declare function clearCredentials(): void;
|
|
42
|
-
export declare function deleteCredentialsFile(): void;
|
|
43
|
-
export declare function hasAppCredentials(): boolean;
|
|
44
|
-
export declare function countAppCredentials(): number;
|
|
45
|
-
export declare function isAuthenticated(): boolean;
|
|
46
|
-
export declare function saveAppCredentials(appId: string, cred: AppCredential): void;
|
|
47
|
-
export declare function clearAppsCache(): void;
|
|
48
|
-
export declare function getAppCredentials(appId: string): AppCredential | undefined;
|
|
49
|
-
export declare function deleteAppCredentials(appId: string): void;
|
|
50
|
-
export declare function saveAppName(appId: string, name: string): void;
|
|
51
|
-
export declare function getAppNames(): Record<string, string>;
|
|
52
|
-
export declare function deleteAppName(appId: string): void;
|
|
53
|
-
export interface ProjectConfig {
|
|
54
|
-
appId: string;
|
|
55
|
-
appName: string;
|
|
56
|
-
logoUri?: string;
|
|
57
|
-
cliVersion?: string;
|
|
58
|
-
createdAt?: string;
|
|
59
|
-
updatedAt?: string;
|
|
60
|
-
auth: {
|
|
61
|
-
type: string;
|
|
62
|
-
scopes: string[];
|
|
63
|
-
redirectUrls?: string[];
|
|
64
|
-
};
|
|
65
|
-
distribution: string;
|
|
66
|
-
permittedUrls: {
|
|
67
|
-
fetch: string[];
|
|
68
|
-
img: string[];
|
|
69
|
-
iframe: string[];
|
|
70
|
-
js: string[];
|
|
71
|
-
css: string[];
|
|
72
|
-
};
|
|
73
|
-
support: {
|
|
74
|
-
supportEmail: string;
|
|
75
|
-
documentationUrl: string;
|
|
76
|
-
supportUrl: string;
|
|
77
|
-
supportPhone: string;
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
export declare function readProjectConfig(): ProjectConfig | null;
|
|
81
|
-
export declare function hasLocalApp(): boolean;
|
|
82
|
-
export declare function writeProjectConfig(config: ProjectConfig): void;
|
|
83
|
-
//# sourceMappingURL=config.d.ts.map
|
package/dist/lib/config.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/config.js
DELETED
|
@@ -1,430 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.getCredentialsPath = getCredentialsPath;
|
|
37
|
-
exports.getApiKey = getApiKey;
|
|
38
|
-
exports.getAccessToken = getAccessToken;
|
|
39
|
-
exports.getAuthCred = getAuthCred;
|
|
40
|
-
exports.getEmail = getEmail;
|
|
41
|
-
exports.getOrganizationId = getOrganizationId;
|
|
42
|
-
exports.getUserId = getUserId;
|
|
43
|
-
exports.saveCredentials = saveCredentials;
|
|
44
|
-
exports.saveOauthCredentials = saveOauthCredentials;
|
|
45
|
-
exports.updateOauthTokens = updateOauthTokens;
|
|
46
|
-
exports.clearCredentials = clearCredentials;
|
|
47
|
-
exports.deleteCredentialsFile = deleteCredentialsFile;
|
|
48
|
-
exports.hasAppCredentials = hasAppCredentials;
|
|
49
|
-
exports.countAppCredentials = countAppCredentials;
|
|
50
|
-
exports.isAuthenticated = isAuthenticated;
|
|
51
|
-
exports.saveAppCredentials = saveAppCredentials;
|
|
52
|
-
exports.clearAppsCache = clearAppsCache;
|
|
53
|
-
exports.getAppCredentials = getAppCredentials;
|
|
54
|
-
exports.deleteAppCredentials = deleteAppCredentials;
|
|
55
|
-
exports.saveAppName = saveAppName;
|
|
56
|
-
exports.getAppNames = getAppNames;
|
|
57
|
-
exports.deleteAppName = deleteAppName;
|
|
58
|
-
exports.readProjectConfig = readProjectConfig;
|
|
59
|
-
exports.hasLocalApp = hasLocalApp;
|
|
60
|
-
exports.writeProjectConfig = writeProjectConfig;
|
|
61
|
-
const fs = __importStar(require("node:fs"));
|
|
62
|
-
const path = __importStar(require("node:path"));
|
|
63
|
-
const os = __importStar(require("node:os"));
|
|
64
|
-
const validators_1 = require("./validators");
|
|
65
|
-
// ──────────────── Directory ────────────────
|
|
66
|
-
function getConfigDir() {
|
|
67
|
-
return process.env.BREVO_CONFIG_HOME || path.join(os.homedir(), '.brevo');
|
|
68
|
-
}
|
|
69
|
-
function getCredentialsPath() {
|
|
70
|
-
return path.join(getConfigDir(), 'credentials.json');
|
|
71
|
-
}
|
|
72
|
-
function ensureDir() {
|
|
73
|
-
fs.mkdirSync(getConfigDir(), { recursive: true, mode: 0o700 });
|
|
74
|
-
}
|
|
75
|
-
// Cached names patch the eventually-consistent `app list` response. Beyond this
|
|
76
|
-
// window we trust the server, so any out-of-band rename (e.g. dashboard) becomes
|
|
77
|
-
// visible without forcing the user to run `app credentials`.
|
|
78
|
-
const APP_NAME_CACHE_TTL_MS = 10 * 60 * 1000;
|
|
79
|
-
function sanitizeAppNames(value) {
|
|
80
|
-
if (!value || typeof value !== 'object')
|
|
81
|
-
return undefined;
|
|
82
|
-
const out = {};
|
|
83
|
-
for (const [key, raw] of Object.entries(value)) {
|
|
84
|
-
if (typeof raw === 'string' && raw.trim()) {
|
|
85
|
-
// Legacy plain-string entry from earlier alphas — treat as expired so the
|
|
86
|
-
// server response wins on the next list call.
|
|
87
|
-
out[key] = { name: raw, savedAt: 0 };
|
|
88
|
-
}
|
|
89
|
-
else if (raw && typeof raw === 'object') {
|
|
90
|
-
const entry = raw;
|
|
91
|
-
if (typeof entry.name === 'string' &&
|
|
92
|
-
entry.name.trim() &&
|
|
93
|
-
typeof entry.savedAt === 'number' &&
|
|
94
|
-
Number.isFinite(entry.savedAt)) {
|
|
95
|
-
out[key] = { name: entry.name, savedAt: entry.savedAt };
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
return Object.keys(out).length > 0 ? out : undefined;
|
|
100
|
-
}
|
|
101
|
-
function sanitizeApps(apps) {
|
|
102
|
-
const sanitized = {};
|
|
103
|
-
for (const [key, value] of Object.entries(apps)) {
|
|
104
|
-
if (value && typeof value === 'object') {
|
|
105
|
-
const entry = value;
|
|
106
|
-
if (typeof entry.clientId === 'string' && typeof entry.clientSecret === 'string') {
|
|
107
|
-
sanitized[key] = { clientId: entry.clientId, clientSecret: entry.clientSecret };
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
return sanitized;
|
|
112
|
-
}
|
|
113
|
-
function readCredentials() {
|
|
114
|
-
try {
|
|
115
|
-
const parsed = JSON.parse(fs.readFileSync(getCredentialsPath(), 'utf-8'));
|
|
116
|
-
// Migrate old multi-profile format
|
|
117
|
-
if (parsed.profiles) {
|
|
118
|
-
const profileName = (typeof parsed.activeProfile === 'string' && parsed.activeProfile) || 'default';
|
|
119
|
-
const firstKey = Object.keys(parsed.profiles)[0];
|
|
120
|
-
const profile = parsed.profiles[profileName] ?? (firstKey ? parsed.profiles[firstKey] : undefined);
|
|
121
|
-
const migrated = {
|
|
122
|
-
auth: typeof profile?.apiKey === 'string' && profile.apiKey
|
|
123
|
-
? { kind: 'api-key', apiKey: profile.apiKey }
|
|
124
|
-
: undefined,
|
|
125
|
-
accountEmail: profile?.accountEmail,
|
|
126
|
-
organizationId: profile?.organizationId,
|
|
127
|
-
userId: profile?.userId,
|
|
128
|
-
apps: sanitizeApps(parsed.apps ?? {}),
|
|
129
|
-
};
|
|
130
|
-
try {
|
|
131
|
-
writeCredentials(migrated);
|
|
132
|
-
}
|
|
133
|
-
catch {
|
|
134
|
-
// non-fatal
|
|
135
|
-
}
|
|
136
|
-
return migrated;
|
|
137
|
-
}
|
|
138
|
-
// Migrate legacy flat { apiKey } shape → { auth: { kind: 'api-key' } }
|
|
139
|
-
if (!parsed.auth && typeof parsed.apiKey === 'string' && parsed.apiKey) {
|
|
140
|
-
const migrated = {
|
|
141
|
-
auth: { kind: 'api-key', apiKey: parsed.apiKey },
|
|
142
|
-
accountEmail: parsed.accountEmail,
|
|
143
|
-
organizationId: parsed.organizationId,
|
|
144
|
-
userId: parsed.userId,
|
|
145
|
-
apps: sanitizeApps(parsed.apps ?? {}),
|
|
146
|
-
};
|
|
147
|
-
try {
|
|
148
|
-
writeCredentials(migrated);
|
|
149
|
-
}
|
|
150
|
-
catch {
|
|
151
|
-
// non-fatal
|
|
152
|
-
}
|
|
153
|
-
return migrated;
|
|
154
|
-
}
|
|
155
|
-
return {
|
|
156
|
-
auth: sanitizeAuth(parsed.auth),
|
|
157
|
-
accountEmail: parsed.accountEmail,
|
|
158
|
-
organizationId: parsed.organizationId,
|
|
159
|
-
userId: parsed.userId,
|
|
160
|
-
apps: sanitizeApps(parsed.apps ?? {}),
|
|
161
|
-
appNames: sanitizeAppNames(parsed.appNames),
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
catch {
|
|
165
|
-
return { apps: {} };
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
function sanitizeAuth(raw) {
|
|
169
|
-
if (!raw || typeof raw !== 'object')
|
|
170
|
-
return undefined;
|
|
171
|
-
const v = raw;
|
|
172
|
-
if (v.kind === 'api-key' && typeof v.apiKey === 'string' && v.apiKey) {
|
|
173
|
-
return { kind: 'api-key', apiKey: v.apiKey };
|
|
174
|
-
}
|
|
175
|
-
if (v.kind === 'oauth' &&
|
|
176
|
-
typeof v.accessToken === 'string' &&
|
|
177
|
-
v.accessToken &&
|
|
178
|
-
typeof v.refreshToken === 'string' &&
|
|
179
|
-
v.refreshToken &&
|
|
180
|
-
typeof v.tokenType === 'string' &&
|
|
181
|
-
v.tokenType &&
|
|
182
|
-
typeof v.expiresAt === 'number' &&
|
|
183
|
-
Number.isFinite(v.expiresAt)) {
|
|
184
|
-
return {
|
|
185
|
-
kind: 'oauth',
|
|
186
|
-
accessToken: v.accessToken,
|
|
187
|
-
refreshToken: v.refreshToken,
|
|
188
|
-
expiresAt: v.expiresAt,
|
|
189
|
-
tokenType: v.tokenType,
|
|
190
|
-
scope: typeof v.scope === 'string' ? v.scope : undefined,
|
|
191
|
-
};
|
|
192
|
-
}
|
|
193
|
-
return undefined;
|
|
194
|
-
}
|
|
195
|
-
function writeCredentials(creds) {
|
|
196
|
-
ensureDir();
|
|
197
|
-
const filePath = getCredentialsPath();
|
|
198
|
-
fs.writeFileSync(filePath, JSON.stringify(creds, null, 2), { mode: 0o600 });
|
|
199
|
-
try {
|
|
200
|
-
fs.chmodSync(filePath, 0o600);
|
|
201
|
-
}
|
|
202
|
-
catch {
|
|
203
|
-
// chmod may not work on all platforms (e.g. Windows) — ignore
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
function getApiKey() {
|
|
207
|
-
if (process.env.BREVO_API_KEY) {
|
|
208
|
-
return process.env.BREVO_API_KEY;
|
|
209
|
-
}
|
|
210
|
-
const auth = readCredentials().auth;
|
|
211
|
-
return auth?.kind === 'api-key' ? auth.apiKey : undefined;
|
|
212
|
-
}
|
|
213
|
-
function getAccessToken() {
|
|
214
|
-
const auth = readCredentials().auth;
|
|
215
|
-
return auth?.kind === 'oauth' ? auth.accessToken : undefined;
|
|
216
|
-
}
|
|
217
|
-
function getAuthCred() {
|
|
218
|
-
if (process.env.BREVO_API_KEY) {
|
|
219
|
-
return { kind: 'api-key', apiKey: process.env.BREVO_API_KEY };
|
|
220
|
-
}
|
|
221
|
-
return readCredentials().auth;
|
|
222
|
-
}
|
|
223
|
-
function getEmail() {
|
|
224
|
-
return readCredentials().accountEmail;
|
|
225
|
-
}
|
|
226
|
-
function getOrganizationId() {
|
|
227
|
-
return readCredentials().organizationId;
|
|
228
|
-
}
|
|
229
|
-
function getUserId() {
|
|
230
|
-
return readCredentials().userId;
|
|
231
|
-
}
|
|
232
|
-
function saveCredentials(apiKey, account) {
|
|
233
|
-
const creds = readCredentials();
|
|
234
|
-
creds.auth = { kind: 'api-key', apiKey };
|
|
235
|
-
creds.accountEmail = account.email;
|
|
236
|
-
creds.organizationId = account.organizationId;
|
|
237
|
-
creds.userId = account.userId;
|
|
238
|
-
writeCredentials(creds);
|
|
239
|
-
}
|
|
240
|
-
function saveOauthCredentials(tokens, account) {
|
|
241
|
-
const creds = readCredentials();
|
|
242
|
-
creds.auth = {
|
|
243
|
-
kind: 'oauth',
|
|
244
|
-
accessToken: tokens.accessToken,
|
|
245
|
-
refreshToken: tokens.refreshToken,
|
|
246
|
-
expiresAt: Date.now() + tokens.expiresIn * 1000,
|
|
247
|
-
tokenType: tokens.tokenType,
|
|
248
|
-
scope: tokens.scope,
|
|
249
|
-
};
|
|
250
|
-
// Account omitted = fresh token write before validation. Clear any stale
|
|
251
|
-
// account info from a previous login so whoami doesn't surface mismatched data.
|
|
252
|
-
if (account) {
|
|
253
|
-
creds.accountEmail = account.email;
|
|
254
|
-
creds.organizationId = account.organizationId;
|
|
255
|
-
creds.userId = account.userId;
|
|
256
|
-
}
|
|
257
|
-
else {
|
|
258
|
-
delete creds.accountEmail;
|
|
259
|
-
delete creds.organizationId;
|
|
260
|
-
delete creds.userId;
|
|
261
|
-
}
|
|
262
|
-
writeCredentials(creds);
|
|
263
|
-
}
|
|
264
|
-
function updateOauthTokens(tokens) {
|
|
265
|
-
const creds = readCredentials();
|
|
266
|
-
creds.auth = {
|
|
267
|
-
kind: 'oauth',
|
|
268
|
-
accessToken: tokens.accessToken,
|
|
269
|
-
refreshToken: tokens.refreshToken,
|
|
270
|
-
expiresAt: Date.now() + tokens.expiresIn * 1000,
|
|
271
|
-
tokenType: tokens.tokenType,
|
|
272
|
-
scope: tokens.scope,
|
|
273
|
-
};
|
|
274
|
-
writeCredentials(creds);
|
|
275
|
-
}
|
|
276
|
-
function clearCredentials() {
|
|
277
|
-
const creds = readCredentials();
|
|
278
|
-
delete creds.auth;
|
|
279
|
-
delete creds.accountEmail;
|
|
280
|
-
delete creds.organizationId;
|
|
281
|
-
delete creds.userId;
|
|
282
|
-
writeCredentials(creds);
|
|
283
|
-
}
|
|
284
|
-
function deleteCredentialsFile() {
|
|
285
|
-
try {
|
|
286
|
-
fs.unlinkSync(getCredentialsPath());
|
|
287
|
-
}
|
|
288
|
-
catch (error) {
|
|
289
|
-
if (typeof error === 'object' && error !== null && 'code' in error && error.code === 'ENOENT') {
|
|
290
|
-
return;
|
|
291
|
-
}
|
|
292
|
-
throw error;
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
function hasAppCredentials() {
|
|
296
|
-
return Object.keys(readCredentials().apps).length > 0;
|
|
297
|
-
}
|
|
298
|
-
function countAppCredentials() {
|
|
299
|
-
return Object.keys(readCredentials().apps).length;
|
|
300
|
-
}
|
|
301
|
-
function isAuthenticated() {
|
|
302
|
-
return !!getAuthCred();
|
|
303
|
-
}
|
|
304
|
-
function saveAppCredentials(appId, cred) {
|
|
305
|
-
const creds = readCredentials();
|
|
306
|
-
creds.apps[appId] = cred;
|
|
307
|
-
writeCredentials(creds);
|
|
308
|
-
}
|
|
309
|
-
// Wipe the per-app credential and name caches without touching auth/account
|
|
310
|
-
// fields. Used when re-login detects a different account — the cached
|
|
311
|
-
// clientId/clientSecret values belong to apps the new account cannot see.
|
|
312
|
-
function clearAppsCache() {
|
|
313
|
-
const creds = readCredentials();
|
|
314
|
-
creds.apps = {};
|
|
315
|
-
delete creds.appNames;
|
|
316
|
-
writeCredentials(creds);
|
|
317
|
-
}
|
|
318
|
-
function getAppCredentials(appId) {
|
|
319
|
-
return readCredentials().apps[appId];
|
|
320
|
-
}
|
|
321
|
-
function deleteAppCredentials(appId) {
|
|
322
|
-
if (!appId)
|
|
323
|
-
return;
|
|
324
|
-
const creds = readCredentials();
|
|
325
|
-
if (!(appId in creds.apps))
|
|
326
|
-
return;
|
|
327
|
-
delete creds.apps[appId];
|
|
328
|
-
writeCredentials(creds);
|
|
329
|
-
}
|
|
330
|
-
// Locally cached app names mirror values from `app update` and `app credentials`.
|
|
331
|
-
// Server-side, the PUT endpoint and the GET-list endpoint are eventually consistent,
|
|
332
|
-
// so `app list` can return a stale name immediately after an update. Merging this
|
|
333
|
-
// cache on top of the list response masks the lag. Entries expire after
|
|
334
|
-
// APP_NAME_CACHE_TTL_MS so they cannot indefinitely hide an out-of-band rename.
|
|
335
|
-
function saveAppName(appId, name) {
|
|
336
|
-
if (!appId || !name)
|
|
337
|
-
return;
|
|
338
|
-
const creds = readCredentials();
|
|
339
|
-
creds.appNames = {
|
|
340
|
-
...creds.appNames,
|
|
341
|
-
[appId]: { name, savedAt: Date.now() },
|
|
342
|
-
};
|
|
343
|
-
writeCredentials(creds);
|
|
344
|
-
}
|
|
345
|
-
function getAppNames() {
|
|
346
|
-
const creds = readCredentials();
|
|
347
|
-
const cache = creds.appNames ?? {};
|
|
348
|
-
const now = Date.now();
|
|
349
|
-
const fresh = {};
|
|
350
|
-
const result = {};
|
|
351
|
-
let pruned = false;
|
|
352
|
-
for (const [id, entry] of Object.entries(cache)) {
|
|
353
|
-
if (now - entry.savedAt < APP_NAME_CACHE_TTL_MS) {
|
|
354
|
-
fresh[id] = entry;
|
|
355
|
-
result[id] = entry.name;
|
|
356
|
-
}
|
|
357
|
-
else {
|
|
358
|
-
pruned = true;
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
if (pruned) {
|
|
362
|
-
creds.appNames = Object.keys(fresh).length > 0 ? fresh : undefined;
|
|
363
|
-
try {
|
|
364
|
-
writeCredentials(creds);
|
|
365
|
-
}
|
|
366
|
-
catch {
|
|
367
|
-
// non-fatal — we've already returned the fresh subset to the caller
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
return result;
|
|
371
|
-
}
|
|
372
|
-
function deleteAppName(appId) {
|
|
373
|
-
if (!appId)
|
|
374
|
-
return;
|
|
375
|
-
const creds = readCredentials();
|
|
376
|
-
if (!creds.appNames || !(appId in creds.appNames))
|
|
377
|
-
return;
|
|
378
|
-
const { [appId]: _removed, ...rest } = creds.appNames;
|
|
379
|
-
creds.appNames = Object.keys(rest).length > 0 ? rest : undefined;
|
|
380
|
-
writeCredentials(creds);
|
|
381
|
-
}
|
|
382
|
-
const PROJECT_CONFIG_FILE = 'app-config.json';
|
|
383
|
-
function readProjectConfig() {
|
|
384
|
-
try {
|
|
385
|
-
const raw = JSON.parse(fs.readFileSync(path.resolve(process.cwd(), PROJECT_CONFIG_FILE), 'utf-8'));
|
|
386
|
-
if (!raw || typeof raw !== 'object')
|
|
387
|
-
return null;
|
|
388
|
-
// Normalize appId at the boundary: accept strings (trimmed) and finite
|
|
389
|
-
// numeric IDs from legacy configs, reject anything else. Downstream
|
|
390
|
-
// callers can treat `config.appId` as a guaranteed non-empty string.
|
|
391
|
-
const rawAppId = raw.appId;
|
|
392
|
-
let appId;
|
|
393
|
-
if (typeof rawAppId === 'string') {
|
|
394
|
-
const trimmed = rawAppId.trim();
|
|
395
|
-
if (trimmed)
|
|
396
|
-
appId = trimmed;
|
|
397
|
-
}
|
|
398
|
-
else if (typeof rawAppId === 'number' && Number.isFinite(rawAppId)) {
|
|
399
|
-
appId = String(rawAppId);
|
|
400
|
-
}
|
|
401
|
-
if (!appId)
|
|
402
|
-
return null;
|
|
403
|
-
// Normalize auth.scopes silently — split on commas/whitespace so an entry
|
|
404
|
-
// like "crm:read, campaigns:read" written by a user editing the JSON by
|
|
405
|
-
// hand becomes two scopes. Strict charset validation is enforced later,
|
|
406
|
-
// in the update command, so unrelated commands that just happen to read
|
|
407
|
-
// config aren't broken by a malformed scope.
|
|
408
|
-
const rawAuth = raw.auth;
|
|
409
|
-
let authOverride;
|
|
410
|
-
if (rawAuth && typeof rawAuth === 'object') {
|
|
411
|
-
const scopes = rawAuth.scopes;
|
|
412
|
-
if (Array.isArray(scopes)) {
|
|
413
|
-
authOverride = { ...rawAuth, scopes: (0, validators_1.splitScopes)(scopes) };
|
|
414
|
-
}
|
|
415
|
-
}
|
|
416
|
-
return { ...raw, appId, ...(authOverride ? { auth: authOverride } : {}) };
|
|
417
|
-
}
|
|
418
|
-
catch {
|
|
419
|
-
return null;
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
function hasLocalApp() {
|
|
423
|
-
const cfg = readProjectConfig();
|
|
424
|
-
return cfg?.appId != null && cfg.appId !== '';
|
|
425
|
-
}
|
|
426
|
-
function writeProjectConfig(config) {
|
|
427
|
-
const configPath = path.resolve(process.cwd(), PROJECT_CONFIG_FILE);
|
|
428
|
-
fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
|
|
429
|
-
}
|
|
430
|
-
//# sourceMappingURL=config.js.map
|
package/dist/lib/config.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|