@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,298 +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.shouldShowBannerBefore = shouldShowBannerBefore;
|
|
37
|
-
exports.shouldSkipCheck = shouldSkipCheck;
|
|
38
|
-
exports.compareVersions = compareVersions;
|
|
39
|
-
exports.isNewer = isNewer;
|
|
40
|
-
exports.isMajorBehind = isMajorBehind;
|
|
41
|
-
exports.readCache = readCache;
|
|
42
|
-
exports.writeCache = writeCache;
|
|
43
|
-
exports.fetchLatestVersion = fetchLatestVersion;
|
|
44
|
-
exports.formatBanner = formatBanner;
|
|
45
|
-
exports.formatForceUpdateBanner = formatForceUpdateBanner;
|
|
46
|
-
exports.startUpdateCheck = startUpdateCheck;
|
|
47
|
-
exports.notifyUpdate = notifyUpdate;
|
|
48
|
-
exports.enforceMinVersion = enforceMinVersion;
|
|
49
|
-
const fs = __importStar(require("node:fs"));
|
|
50
|
-
const os = __importStar(require("node:os"));
|
|
51
|
-
const path = __importStar(require("node:path"));
|
|
52
|
-
const en_1 = require("../lang/en");
|
|
53
|
-
const REGISTRY_URL = (name) => `https://registry.npmjs.org/${encodeURIComponent(name).replace('%40', '@')}/latest`;
|
|
54
|
-
const TTL_MS = 24 * 60 * 60 * 1000;
|
|
55
|
-
const FETCH_TIMEOUT_MS = 2000;
|
|
56
|
-
const NOTIFY_WAIT_MS = 1500;
|
|
57
|
-
const CACHE_FILE = 'update-check.json';
|
|
58
|
-
function getCachePath(override, env = process.env) {
|
|
59
|
-
if (override)
|
|
60
|
-
return override;
|
|
61
|
-
const dir = env.BREVO_CONFIG_HOME || path.join(os.homedir(), '.brevo');
|
|
62
|
-
return path.join(dir, CACHE_FILE);
|
|
63
|
-
}
|
|
64
|
-
// True when the banner must print before parseAsync runs, either because
|
|
65
|
-
// Commander exits synchronously (bare `brevo`, --help, --version) and would
|
|
66
|
-
// bypass the post-run notify, or because the command starts a long interactive
|
|
67
|
-
// flow where users should see the upgrade up front.
|
|
68
|
-
function shouldShowBannerBefore(argv) {
|
|
69
|
-
const args = argv.slice(2);
|
|
70
|
-
if (args.length === 0)
|
|
71
|
-
return true;
|
|
72
|
-
if (args.includes('--help') || args.includes('-h'))
|
|
73
|
-
return true;
|
|
74
|
-
if (args.includes('--version') || args.includes('-V'))
|
|
75
|
-
return true;
|
|
76
|
-
return args[0] === 'app' && (args[1] === 'init' || args[1] === 'create');
|
|
77
|
-
}
|
|
78
|
-
function shouldSkipCheck(opts) {
|
|
79
|
-
const env = opts.env ?? process.env;
|
|
80
|
-
const argv = opts.argv ?? process.argv;
|
|
81
|
-
const isTTY = opts.isTTY ?? Boolean(process.stdout.isTTY);
|
|
82
|
-
if (env.CI === 'true' || env.CI === '1')
|
|
83
|
-
return true;
|
|
84
|
-
if (!isTTY)
|
|
85
|
-
return true;
|
|
86
|
-
if (env.NO_UPDATE_NOTIFIER === '1' || env.NO_UPDATE_NOTIFIER === 'true')
|
|
87
|
-
return true;
|
|
88
|
-
if (env.BREVO_NO_UPDATE_NOTIFIER === '1' || env.BREVO_NO_UPDATE_NOTIFIER === 'true')
|
|
89
|
-
return true;
|
|
90
|
-
if (argv.includes('--no-update-notifier'))
|
|
91
|
-
return true;
|
|
92
|
-
return false;
|
|
93
|
-
}
|
|
94
|
-
function parseVersion(v) {
|
|
95
|
-
const match = /^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?/.exec(v.trim());
|
|
96
|
-
if (!match?.[1] || !match?.[2] || !match?.[3])
|
|
97
|
-
return undefined;
|
|
98
|
-
return {
|
|
99
|
-
major: Number.parseInt(match[1], 10),
|
|
100
|
-
minor: Number.parseInt(match[2], 10),
|
|
101
|
-
patch: Number.parseInt(match[3], 10),
|
|
102
|
-
prerelease: match[4] ?? '',
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
// Numeric identifiers are compared numerically and always rank below
|
|
106
|
-
// non-numeric ones (semver §11.4).
|
|
107
|
-
function comparePrereleaseIdentifiers(ai, bi) {
|
|
108
|
-
if (ai === bi)
|
|
109
|
-
return 0;
|
|
110
|
-
const aNum = /^\d+$/.test(ai);
|
|
111
|
-
const bNum = /^\d+$/.test(bi);
|
|
112
|
-
if (aNum && bNum) {
|
|
113
|
-
const diff = Number.parseInt(ai, 10) - Number.parseInt(bi, 10);
|
|
114
|
-
if (diff === 0)
|
|
115
|
-
return 0;
|
|
116
|
-
return diff > 0 ? 1 : -1;
|
|
117
|
-
}
|
|
118
|
-
if (aNum)
|
|
119
|
-
return -1;
|
|
120
|
-
if (bNum)
|
|
121
|
-
return 1;
|
|
122
|
-
return ai > bi ? 1 : -1;
|
|
123
|
-
}
|
|
124
|
-
// Per semver §11.4: split on '.', compare identifiers; a longer prerelease
|
|
125
|
-
// set outranks a shorter one when the leading identifiers match.
|
|
126
|
-
function comparePrerelease(a, b) {
|
|
127
|
-
if (a === b)
|
|
128
|
-
return 0;
|
|
129
|
-
const aParts = a.split('.');
|
|
130
|
-
const bParts = b.split('.');
|
|
131
|
-
const len = Math.min(aParts.length, bParts.length);
|
|
132
|
-
for (let i = 0; i < len; i++) {
|
|
133
|
-
const cmp = comparePrereleaseIdentifiers(aParts[i] ?? '', bParts[i] ?? '');
|
|
134
|
-
if (cmp !== 0)
|
|
135
|
-
return cmp;
|
|
136
|
-
}
|
|
137
|
-
if (aParts.length === bParts.length)
|
|
138
|
-
return 0;
|
|
139
|
-
return aParts.length > bParts.length ? 1 : -1;
|
|
140
|
-
}
|
|
141
|
-
function compareVersions(current, latest) {
|
|
142
|
-
const c = parseVersion(current);
|
|
143
|
-
const l = parseVersion(latest);
|
|
144
|
-
if (!c || !l)
|
|
145
|
-
return 0;
|
|
146
|
-
if (l.major !== c.major)
|
|
147
|
-
return l.major - c.major;
|
|
148
|
-
if (l.minor !== c.minor)
|
|
149
|
-
return l.minor - c.minor;
|
|
150
|
-
if (l.patch !== c.patch)
|
|
151
|
-
return l.patch - c.patch;
|
|
152
|
-
if (c.prerelease && !l.prerelease)
|
|
153
|
-
return 1;
|
|
154
|
-
if (!c.prerelease && l.prerelease)
|
|
155
|
-
return -1;
|
|
156
|
-
return comparePrerelease(l.prerelease, c.prerelease);
|
|
157
|
-
}
|
|
158
|
-
function isNewer(current, latest) {
|
|
159
|
-
return compareVersions(current, latest) > 0;
|
|
160
|
-
}
|
|
161
|
-
// True when `latest` is at least one full major version ahead of `current`.
|
|
162
|
-
// Used to gate the blocking force-update banner — a new major release is the
|
|
163
|
-
// signal that the installed CLI may no longer be supported by the backend.
|
|
164
|
-
function isMajorBehind(current, latest) {
|
|
165
|
-
const c = parseVersion(current);
|
|
166
|
-
const l = parseVersion(latest);
|
|
167
|
-
if (!c || !l)
|
|
168
|
-
return false;
|
|
169
|
-
return l.major > c.major;
|
|
170
|
-
}
|
|
171
|
-
function readCache(cachePath) {
|
|
172
|
-
try {
|
|
173
|
-
const raw = JSON.parse(fs.readFileSync(cachePath, 'utf-8'));
|
|
174
|
-
if (raw &&
|
|
175
|
-
typeof raw === 'object' &&
|
|
176
|
-
typeof raw.latest === 'string' &&
|
|
177
|
-
typeof raw.lastChecked === 'number' &&
|
|
178
|
-
Number.isFinite(raw.lastChecked)) {
|
|
179
|
-
return { latest: raw.latest, lastChecked: raw.lastChecked };
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
catch {
|
|
183
|
-
// missing or corrupt — caller treats as no cache
|
|
184
|
-
}
|
|
185
|
-
return undefined;
|
|
186
|
-
}
|
|
187
|
-
function writeCache(cachePath, cache) {
|
|
188
|
-
try {
|
|
189
|
-
fs.mkdirSync(path.dirname(cachePath), { recursive: true, mode: 0o700 });
|
|
190
|
-
fs.writeFileSync(cachePath, JSON.stringify(cache, null, 2), 'utf-8');
|
|
191
|
-
}
|
|
192
|
-
catch {
|
|
193
|
-
// non-fatal — banner still works from in-memory value
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
async function fetchLatestVersion(name, opts) {
|
|
197
|
-
const fetchImpl = opts?.fetchImpl ?? fetch;
|
|
198
|
-
const timeoutMs = opts?.fetchTimeoutMs ?? FETCH_TIMEOUT_MS;
|
|
199
|
-
const controller = new AbortController();
|
|
200
|
-
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
201
|
-
try {
|
|
202
|
-
const res = await fetchImpl(REGISTRY_URL(name), {
|
|
203
|
-
signal: controller.signal,
|
|
204
|
-
headers: { Accept: 'application/json' },
|
|
205
|
-
});
|
|
206
|
-
if (!res.ok)
|
|
207
|
-
return undefined;
|
|
208
|
-
const json = (await res.json());
|
|
209
|
-
return typeof json.version === 'string' ? json.version : undefined;
|
|
210
|
-
}
|
|
211
|
-
catch {
|
|
212
|
-
return undefined;
|
|
213
|
-
}
|
|
214
|
-
finally {
|
|
215
|
-
clearTimeout(timer);
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
// Renders the lines into a bordered box, auto-sized to the longest line.
|
|
219
|
-
function renderBox(lines) {
|
|
220
|
-
const inner = Math.max(...lines.map((l) => l.length)) + 4;
|
|
221
|
-
const top = '╭' + '─'.repeat(inner) + '╮';
|
|
222
|
-
const bot = '╰' + '─'.repeat(inner) + '╯';
|
|
223
|
-
const pad = (s) => ' ' + s + ' '.repeat(inner - s.length - 2);
|
|
224
|
-
return ['', ` ${top}`, ...lines.map((l) => ` │${pad(l)}│`), ` ${bot}`, ''].join('\n');
|
|
225
|
-
}
|
|
226
|
-
function formatBanner(current, latest, name) {
|
|
227
|
-
return renderBox([
|
|
228
|
-
en_1.messages.UPDATE_AVAILABLE(current, latest),
|
|
229
|
-
en_1.messages.UPDATE_RUN(name),
|
|
230
|
-
en_1.messages.UPDATE_RUN_YARN(name),
|
|
231
|
-
en_1.messages.UPDATE_RUN_BREW,
|
|
232
|
-
]);
|
|
233
|
-
}
|
|
234
|
-
function formatForceUpdateBanner(current, latest, name) {
|
|
235
|
-
return renderBox([
|
|
236
|
-
en_1.messages.FORCE_UPDATE_REQUIRED(current, latest),
|
|
237
|
-
en_1.messages.FORCE_UPDATE_HINT,
|
|
238
|
-
en_1.messages.UPDATE_RUN(name),
|
|
239
|
-
en_1.messages.UPDATE_RUN_YARN(name),
|
|
240
|
-
en_1.messages.UPDATE_RUN_BREW,
|
|
241
|
-
]);
|
|
242
|
-
}
|
|
243
|
-
function startUpdateCheck(opts) {
|
|
244
|
-
if (shouldSkipCheck(opts)) {
|
|
245
|
-
return { pending: Promise.resolve() };
|
|
246
|
-
}
|
|
247
|
-
const cachePath = getCachePath(opts.cachePath, opts.env);
|
|
248
|
-
const now = opts.now ? opts.now() : Date.now();
|
|
249
|
-
const ttl = opts.ttlMs ?? TTL_MS;
|
|
250
|
-
const cache = readCache(cachePath);
|
|
251
|
-
const stale = !cache || now - cache.lastChecked > ttl;
|
|
252
|
-
if (!stale) {
|
|
253
|
-
return { cachedLatest: cache?.latest, pending: Promise.resolve() };
|
|
254
|
-
}
|
|
255
|
-
const handle = {
|
|
256
|
-
cachedLatest: cache?.latest,
|
|
257
|
-
pending: Promise.resolve(),
|
|
258
|
-
};
|
|
259
|
-
handle.pending = (async () => {
|
|
260
|
-
const latest = await fetchLatestVersion(opts.pkg.name, opts);
|
|
261
|
-
if (latest) {
|
|
262
|
-
// Prefer the freshly fetched version so first-run users (no cache)
|
|
263
|
-
// and stale-cache users see the banner without waiting another run.
|
|
264
|
-
handle.cachedLatest = latest;
|
|
265
|
-
writeCache(cachePath, { latest, lastChecked: now });
|
|
266
|
-
}
|
|
267
|
-
})();
|
|
268
|
-
return handle;
|
|
269
|
-
}
|
|
270
|
-
async function notifyUpdate(handle, pkg, output = process.stderr, waitMs = NOTIFY_WAIT_MS) {
|
|
271
|
-
await Promise.race([
|
|
272
|
-
handle.pending,
|
|
273
|
-
new Promise((resolve) => setTimeout(resolve, waitMs).unref?.()),
|
|
274
|
-
]);
|
|
275
|
-
if (handle.cachedLatest && isNewer(pkg.version, handle.cachedLatest)) {
|
|
276
|
-
output.write(formatBanner(pkg.version, handle.cachedLatest, pkg.name) + '\n');
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
// Blocking force-update gate. When the latest npm version is a full major
|
|
280
|
-
// version ahead of the installed one, writes the force-update banner and
|
|
281
|
-
// returns true so the caller can stop before running the command.
|
|
282
|
-
//
|
|
283
|
-
// Fails open: if the version check was skipped (CI / non-TTY / opt-out, in
|
|
284
|
-
// which case the handle has no cachedLatest) or the fetch hasn't resolved
|
|
285
|
-
// within waitMs, returns false so a slow or unreachable npm registry never
|
|
286
|
-
// blocks the user.
|
|
287
|
-
async function enforceMinVersion(handle, pkg, output = process.stderr, waitMs = NOTIFY_WAIT_MS) {
|
|
288
|
-
await Promise.race([
|
|
289
|
-
handle.pending,
|
|
290
|
-
new Promise((resolve) => setTimeout(resolve, waitMs).unref?.()),
|
|
291
|
-
]);
|
|
292
|
-
if (handle.cachedLatest && isMajorBehind(pkg.version, handle.cachedLatest)) {
|
|
293
|
-
output.write(formatForceUpdateBanner(pkg.version, handle.cachedLatest, pkg.name) + '\n');
|
|
294
|
-
return true;
|
|
295
|
-
}
|
|
296
|
-
return false;
|
|
297
|
-
}
|
|
298
|
-
//# sourceMappingURL=update-notifier.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"update-notifier.js","sourceRoot":"","sources":["../../src/lib/update-notifier.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/validators.d.ts
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Validate an app name: alphanumeric, spaces, hyphens, dots, underscores,
|
|
3
|
-
* and accented/extended Latin characters only. Max 48 characters.
|
|
4
|
-
* Returns true if valid, or an error string for inquirer prompts.
|
|
5
|
-
*/
|
|
6
|
-
export declare function validateAppName(name: string): true | string;
|
|
7
|
-
/**
|
|
8
|
-
* Validate that a value is one of the allowed options.
|
|
9
|
-
* Throws CliError with a user-friendly message if invalid.
|
|
10
|
-
*/
|
|
11
|
-
export declare function validateEnum(value: string | undefined, allowed: readonly string[], flagName: string): void;
|
|
12
|
-
/**
|
|
13
|
-
* Validate that a string is a valid HTTP/HTTPS URL.
|
|
14
|
-
* Throws CliError if the format is invalid.
|
|
15
|
-
*/
|
|
16
|
-
export declare function validateUrl(value: string | undefined, fieldName: string): void;
|
|
17
|
-
/**
|
|
18
|
-
* Commander.js collect function for repeatable --redirect-uri flags.
|
|
19
|
-
* Validates each URL and accumulates into an array.
|
|
20
|
-
*/
|
|
21
|
-
export declare function collectUrls(value: string, previous?: string[]): string[];
|
|
22
|
-
/**
|
|
23
|
-
* Split a scope string or array of strings into individual scope tokens.
|
|
24
|
-
* Handles embedded commas/whitespace, trims, drops empties, dedupes.
|
|
25
|
-
* Does NOT validate token format — use `validateScopes` for that.
|
|
26
|
-
*/
|
|
27
|
-
export declare function splitScopes(input: string | string[] | undefined | null): string[];
|
|
28
|
-
/**
|
|
29
|
-
* Validate that each scope is a well-formed token.
|
|
30
|
-
* Throws CliError with a user-facing message if any scope is invalid.
|
|
31
|
-
*/
|
|
32
|
-
export declare function validateScopes(scopes: string[]): void;
|
|
33
|
-
/**
|
|
34
|
-
* Commander.js collect function for repeatable --scope flags.
|
|
35
|
-
* Splits each value on commas/whitespace, validates the resulting tokens,
|
|
36
|
-
* and accumulates into an array (deduplicated against previous values).
|
|
37
|
-
*/
|
|
38
|
-
export declare function collectScopes(value: string, previous?: string[]): string[];
|
|
39
|
-
/**
|
|
40
|
-
* Returns true iff the scope list contains the deprecated legacy 'all' scope.
|
|
41
|
-
* Every code path that warns or blocks on the legacy scope calls this helper —
|
|
42
|
-
* no scattered string literals (BEX-214).
|
|
43
|
-
*/
|
|
44
|
-
export declare function containsLegacyAllScope(scopes: string[] | undefined): boolean;
|
|
45
|
-
/**
|
|
46
|
-
* Validate that a value is a positive integer.
|
|
47
|
-
* Throws CliError if the value is not a valid positive integer.
|
|
48
|
-
*/
|
|
49
|
-
export declare function parsePositiveInt(value: string, flagName: string): number;
|
|
50
|
-
/**
|
|
51
|
-
* Parse and validate a `--app-id` flag value.
|
|
52
|
-
* Accepts any non-empty trimmed string (numeric or UUID).
|
|
53
|
-
*/
|
|
54
|
-
export declare function parseAppId(value: string): string;
|
|
55
|
-
//# sourceMappingURL=validators.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/lib/validators.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAU3D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,QAAQ,EAAE,MAAM,GACf,IAAI,CAIN;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAkB9E;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,EAAO,GAAG,MAAM,EAAE,CAG5E;AAWD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,EAAE,CAejF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAQrD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,EAAO,GAAG,MAAM,EAAE,CAW9E;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,OAAO,CAE5E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMxE;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMhD"}
|
package/dist/lib/validators.js
DELETED
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.validateAppName = validateAppName;
|
|
4
|
-
exports.validateEnum = validateEnum;
|
|
5
|
-
exports.validateUrl = validateUrl;
|
|
6
|
-
exports.collectUrls = collectUrls;
|
|
7
|
-
exports.splitScopes = splitScopes;
|
|
8
|
-
exports.validateScopes = validateScopes;
|
|
9
|
-
exports.collectScopes = collectScopes;
|
|
10
|
-
exports.containsLegacyAllScope = containsLegacyAllScope;
|
|
11
|
-
exports.parsePositiveInt = parsePositiveInt;
|
|
12
|
-
exports.parseAppId = parseAppId;
|
|
13
|
-
const errors_1 = require("./errors");
|
|
14
|
-
const constants_1 = require("./constants");
|
|
15
|
-
const APP_NAME_MAX_LENGTH = 48;
|
|
16
|
-
const APP_NAME_REGEX = /^[a-zA-Z0-9 ._\-\u00C0-\u024F]+$/;
|
|
17
|
-
/**
|
|
18
|
-
* Validate an app name: alphanumeric, spaces, hyphens, dots, underscores,
|
|
19
|
-
* and accented/extended Latin characters only. Max 48 characters.
|
|
20
|
-
* Returns true if valid, or an error string for inquirer prompts.
|
|
21
|
-
*/
|
|
22
|
-
function validateAppName(name) {
|
|
23
|
-
const trimmed = name.trim();
|
|
24
|
-
if (trimmed.length === 0)
|
|
25
|
-
return 'App name cannot be empty.';
|
|
26
|
-
if (trimmed.length > APP_NAME_MAX_LENGTH) {
|
|
27
|
-
return `App name must be at most ${APP_NAME_MAX_LENGTH} characters (got ${trimmed.length}).`;
|
|
28
|
-
}
|
|
29
|
-
if (!APP_NAME_REGEX.test(trimmed)) {
|
|
30
|
-
return 'App name can only contain letters, numbers, spaces, hyphens, dots, underscores, and accented characters.';
|
|
31
|
-
}
|
|
32
|
-
return true;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Validate that a value is one of the allowed options.
|
|
36
|
-
* Throws CliError with a user-friendly message if invalid.
|
|
37
|
-
*/
|
|
38
|
-
function validateEnum(value, allowed, flagName) {
|
|
39
|
-
if (value && !allowed.includes(value)) {
|
|
40
|
-
throw new errors_1.CliError(`Invalid ${flagName} "${value}". Must be one of: ${allowed.join(', ')}.`);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Validate that a string is a valid HTTP/HTTPS URL.
|
|
45
|
-
* Throws CliError if the format is invalid.
|
|
46
|
-
*/
|
|
47
|
-
function validateUrl(value, fieldName) {
|
|
48
|
-
if (!value)
|
|
49
|
-
return;
|
|
50
|
-
// Reject whitespace and commas early — Node's URL parser silently percent-encodes
|
|
51
|
-
// spaces, so "http://a/cb, http://b/cb" parses as a single valid URL. That has let
|
|
52
|
-
// comma-separated values sneak into redirect_uris as one corrupted entry.
|
|
53
|
-
if (/[\s,]/.test(value)) {
|
|
54
|
-
throw new errors_1.CliError(`Invalid ${fieldName}: "${value}" contains whitespace or a comma. Pass each URL with a separate --redirect-uri flag.`);
|
|
55
|
-
}
|
|
56
|
-
try {
|
|
57
|
-
const parsed = new URL(value);
|
|
58
|
-
if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') {
|
|
59
|
-
throw new Error('bad protocol');
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
catch {
|
|
63
|
-
throw new errors_1.CliError(`Invalid ${fieldName}: "${value}" is not a valid HTTP/HTTPS URL.`);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Commander.js collect function for repeatable --redirect-uri flags.
|
|
68
|
-
* Validates each URL and accumulates into an array.
|
|
69
|
-
*/
|
|
70
|
-
function collectUrls(value, previous = []) {
|
|
71
|
-
validateUrl(value, 'redirect URL');
|
|
72
|
-
return [...previous, value];
|
|
73
|
-
}
|
|
74
|
-
// OAuth scope tokens are split on commas and whitespace at every boundary
|
|
75
|
-
// (app-config.json reads and --scope flag values) so a user can write either
|
|
76
|
-
// "crm:read crm:write" or "crm:read, crm:write" or one --scope per token and
|
|
77
|
-
// the CLI behaves the same. RFC 6749 §3.3 already mandates space-separation in
|
|
78
|
-
// authorization requests, so the split is consistent with the protocol; the
|
|
79
|
-
// comma is a convenience for users editing JSON arrays.
|
|
80
|
-
const SCOPE_TOKEN_REGEX = /^[A-Za-z0-9][A-Za-z0-9:_.-]*$/;
|
|
81
|
-
const SCOPE_SPLIT_REGEX = /[\s,]+/;
|
|
82
|
-
/**
|
|
83
|
-
* Split a scope string or array of strings into individual scope tokens.
|
|
84
|
-
* Handles embedded commas/whitespace, trims, drops empties, dedupes.
|
|
85
|
-
* Does NOT validate token format — use `validateScopes` for that.
|
|
86
|
-
*/
|
|
87
|
-
function splitScopes(input) {
|
|
88
|
-
if (input == null)
|
|
89
|
-
return [];
|
|
90
|
-
const values = Array.isArray(input) ? input : [input];
|
|
91
|
-
const out = [];
|
|
92
|
-
const seen = new Set();
|
|
93
|
-
for (const v of values) {
|
|
94
|
-
if (typeof v !== 'string')
|
|
95
|
-
continue;
|
|
96
|
-
for (const token of v.split(SCOPE_SPLIT_REGEX)) {
|
|
97
|
-
if (!token)
|
|
98
|
-
continue;
|
|
99
|
-
if (seen.has(token))
|
|
100
|
-
continue;
|
|
101
|
-
seen.add(token);
|
|
102
|
-
out.push(token);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
return out;
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Validate that each scope is a well-formed token.
|
|
109
|
-
* Throws CliError with a user-facing message if any scope is invalid.
|
|
110
|
-
*/
|
|
111
|
-
function validateScopes(scopes) {
|
|
112
|
-
for (const scope of scopes) {
|
|
113
|
-
if (!SCOPE_TOKEN_REGEX.test(scope)) {
|
|
114
|
-
throw new errors_1.CliError(`Invalid scope: "${scope}" — scopes can only contain letters, numbers, ':', '_', '.', '-'.`);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Commander.js collect function for repeatable --scope flags.
|
|
120
|
-
* Splits each value on commas/whitespace, validates the resulting tokens,
|
|
121
|
-
* and accumulates into an array (deduplicated against previous values).
|
|
122
|
-
*/
|
|
123
|
-
function collectScopes(value, previous = []) {
|
|
124
|
-
const tokens = splitScopes(value);
|
|
125
|
-
if (tokens.length === 0) {
|
|
126
|
-
throw new errors_1.CliError('Invalid scope: value cannot be empty.');
|
|
127
|
-
}
|
|
128
|
-
validateScopes(tokens);
|
|
129
|
-
const out = [...previous];
|
|
130
|
-
for (const t of tokens) {
|
|
131
|
-
if (!out.includes(t))
|
|
132
|
-
out.push(t);
|
|
133
|
-
}
|
|
134
|
-
return out;
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Returns true iff the scope list contains the deprecated legacy 'all' scope.
|
|
138
|
-
* Every code path that warns or blocks on the legacy scope calls this helper —
|
|
139
|
-
* no scattered string literals (BEX-214).
|
|
140
|
-
*/
|
|
141
|
-
function containsLegacyAllScope(scopes) {
|
|
142
|
-
return scopes?.includes(constants_1.LEGACY_ALL_SCOPE) ?? false;
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* Validate that a value is a positive integer.
|
|
146
|
-
* Throws CliError if the value is not a valid positive integer.
|
|
147
|
-
*/
|
|
148
|
-
function parsePositiveInt(value, flagName) {
|
|
149
|
-
const n = Number.parseInt(value, 10);
|
|
150
|
-
if (!Number.isFinite(n) || n <= 0) {
|
|
151
|
-
throw new errors_1.CliError(`Invalid ${flagName}: "${value}" is not a positive integer.`);
|
|
152
|
-
}
|
|
153
|
-
return n;
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Parse and validate a `--app-id` flag value.
|
|
157
|
-
* Accepts any non-empty trimmed string (numeric or UUID).
|
|
158
|
-
*/
|
|
159
|
-
function parseAppId(value) {
|
|
160
|
-
const trimmed = value.trim();
|
|
161
|
-
if (trimmed.length === 0) {
|
|
162
|
-
throw new errors_1.CliError('Invalid --app-id: value cannot be empty.');
|
|
163
|
-
}
|
|
164
|
-
return trimmed;
|
|
165
|
-
}
|
|
166
|
-
//# sourceMappingURL=validators.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/lib/validators.ts"],"names":[],"mappings":";;AAWA,0CAUC;AAMD,oCAQC;AAMD,kCAkBC;AAMD,kCAGC;AAgBD,kCAeC;AAMD,wCAQC;AAOD,sCAWC;AAOD,wDAEC;AAMD,4CAMC;AAMD,gCAMC;AApKD,qCAAoC;AACpC,2CAA+C;AAE/C,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAC/B,MAAM,cAAc,GAAG,kCAAkC,CAAC;AAE1D;;;;GAIG;AACH,SAAgB,eAAe,CAAC,IAAY;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,2BAA2B,CAAC;IAC7D,IAAI,OAAO,CAAC,MAAM,GAAG,mBAAmB,EAAE,CAAC;QACzC,OAAO,4BAA4B,mBAAmB,oBAAoB,OAAO,CAAC,MAAM,IAAI,CAAC;IAC/F,CAAC;IACD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,OAAO,0GAA0G,CAAC;IACpH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAgB,YAAY,CAC1B,KAAyB,EACzB,OAA0B,EAC1B,QAAgB;IAEhB,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,iBAAQ,CAAC,WAAW,QAAQ,KAAK,KAAK,sBAAsB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/F,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,WAAW,CAAC,KAAyB,EAAE,SAAiB;IACtE,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,kFAAkF;IAClF,mFAAmF;IACnF,0EAA0E;IAC1E,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,iBAAQ,CAChB,WAAW,SAAS,MAAM,KAAK,sFAAsF,CACtH,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAChE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,iBAAQ,CAAC,WAAW,SAAS,MAAM,KAAK,kCAAkC,CAAC,CAAC;IACxF,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,WAAW,CAAC,KAAa,EAAE,WAAqB,EAAE;IAChE,WAAW,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,0EAA0E;AAC1E,6EAA6E;AAC7E,6EAA6E;AAC7E,+EAA+E;AAC/E,4EAA4E;AAC5E,wDAAwD;AACxD,MAAM,iBAAiB,GAAG,+BAA+B,CAAC;AAC1D,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAEnC;;;;GAIG;AACH,SAAgB,WAAW,CAAC,KAA2C;IACrE,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,SAAS;QACpC,KAAK,MAAM,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC/C,IAAI,CAAC,KAAK;gBAAE,SAAS;YACrB,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,SAAS;YAC9B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAChB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,SAAgB,cAAc,CAAC,MAAgB;IAC7C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,iBAAQ,CAChB,mBAAmB,KAAK,mEAAmE,CAC5F,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAAC,KAAa,EAAE,WAAqB,EAAE;IAClE,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,iBAAQ,CAAC,uCAAuC,CAAC,CAAC;IAC9D,CAAC;IACD,cAAc,CAAC,MAAM,CAAC,CAAC;IACvB,MAAM,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;IAC1B,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,SAAgB,sBAAsB,CAAC,MAA4B;IACjE,OAAO,MAAM,EAAE,QAAQ,CAAC,4BAAgB,CAAC,IAAI,KAAK,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,KAAa,EAAE,QAAgB;IAC9D,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,iBAAQ,CAAC,WAAW,QAAQ,MAAM,KAAK,8BAA8B,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;GAGG;AACH,SAAgB,UAAU,CAAC,KAAa;IACtC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,iBAAQ,CAAC,0CAA0C,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { ApiClient } from '../api/client';
|
|
2
|
-
import { AccountResponse } from '../types';
|
|
3
|
-
export declare function createAccountService(client: ApiClient): {
|
|
4
|
-
validateApiKey(apiKey: string): Promise<AccountResponse>;
|
|
5
|
-
getAccount(): Promise<AccountResponse>;
|
|
6
|
-
};
|
|
7
|
-
export type AccountService = ReturnType<typeof createAccountService>;
|
|
8
|
-
//# sourceMappingURL=account.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../src/services/account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS;2BAE3B,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;kBAG1C,OAAO,CAAC,eAAe,CAAC;EAIzC;AAED,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
|
package/dist/services/account.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createAccountService = createAccountService;
|
|
4
|
-
const constants_1 = require("../lib/constants");
|
|
5
|
-
function createAccountService(client) {
|
|
6
|
-
return {
|
|
7
|
-
validateApiKey(apiKey) {
|
|
8
|
-
return client.getWithKey(constants_1.ENDPOINTS.ACCOUNT, apiKey);
|
|
9
|
-
},
|
|
10
|
-
getAccount() {
|
|
11
|
-
return client.get(constants_1.ENDPOINTS.ACCOUNT);
|
|
12
|
-
},
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=account.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"account.js","sourceRoot":"","sources":["../../src/services/account.ts"],"names":[],"mappings":";;AAIA,oDASC;AAZD,gDAA6C;AAG7C,SAAgB,oBAAoB,CAAC,MAAiB;IACpD,OAAO;QACL,cAAc,CAAC,MAAc;YAC3B,OAAO,MAAM,CAAC,UAAU,CAAkB,qBAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACvE,CAAC;QACD,UAAU;YACR,OAAO,MAAM,CAAC,GAAG,CAAkB,qBAAS,CAAC,OAAO,CAAC,CAAC;QACxD,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/services/app.d.ts
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { ApiClient } from '../api/client';
|
|
2
|
-
import { OAuthApp, CreateAppResponse } from '../types';
|
|
3
|
-
export declare function createAppService(client: ApiClient): {
|
|
4
|
-
fetchAppsList: () => Promise<OAuthApp[]>;
|
|
5
|
-
fetchApp(appId: string): Promise<OAuthApp | null>;
|
|
6
|
-
pickApp(promptMessage: string, formatChoice?: (app: OAuthApp) => string): Promise<string>;
|
|
7
|
-
/**
|
|
8
|
-
* Fetch app from API and merge with local cache.
|
|
9
|
-
* The GET endpoint may not return client_secret (only shown at creation),
|
|
10
|
-
* so we fall back to the locally cached value.
|
|
11
|
-
*/
|
|
12
|
-
resolveAppCredentials(appId: string): Promise<{
|
|
13
|
-
app: OAuthApp;
|
|
14
|
-
diffs: string[];
|
|
15
|
-
} | null>;
|
|
16
|
-
/**
|
|
17
|
-
* Save credentials to local cache.
|
|
18
|
-
* Preserves existing local values when the app has missing fields
|
|
19
|
-
* (e.g. GET endpoint doesn't return client_secret).
|
|
20
|
-
*/
|
|
21
|
-
syncAppCredentials(appId: string, app: OAuthApp): void;
|
|
22
|
-
createApp(payload: {
|
|
23
|
-
name: string;
|
|
24
|
-
distribution_type: "public" | "private";
|
|
25
|
-
redirect_uris?: string[];
|
|
26
|
-
scopes?: string[];
|
|
27
|
-
logo_uri?: string;
|
|
28
|
-
}): Promise<CreateAppResponse>;
|
|
29
|
-
updateApp(appId: string, body: {
|
|
30
|
-
name?: string;
|
|
31
|
-
redirect_uris: string[];
|
|
32
|
-
scopes?: string[];
|
|
33
|
-
logo_uri?: string;
|
|
34
|
-
}): Promise<void>;
|
|
35
|
-
deleteApp(appId: string): Promise<void>;
|
|
36
|
-
};
|
|
37
|
-
export type AppService = ReturnType<typeof createAppService>;
|
|
38
|
-
//# sourceMappingURL=app.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/services/app.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAQ1C,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAmBvD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS;yBAChB,OAAO,CAAC,QAAQ,EAAE,CAAC;oBAQ3B,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;2BAWtC,MAAM,iBACN,CAAC,GAAG,EAAE,QAAQ,KAAK,MAAM,GACvC,OAAO,CAAC,MAAM,CAAC;IA2BlB;;;;OAIG;iCACgC,MAAM,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,QAAQ,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IA8B9F;;;;OAIG;8BACuB,MAAM,OAAO,QAAQ,GAAG,IAAI;uBAU7B;QACvB,IAAI,EAAE,MAAM,CAAC;QACb,iBAAiB,EAAE,QAAQ,GAAG,SAAS,CAAC;QACxC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;QACzB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,iBAAiB,CAAC;qBAUrB,MAAM,QACP;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GACrF,OAAO,CAAC,IAAI,CAAC;qBAOO,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;EAQhD;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
|