@todoist/outline-cli 0.0.1 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +359 -0
- package/README.md +145 -29
- package/dist/commands/account.d.ts +2 -0
- package/dist/commands/account.js +107 -0
- package/dist/commands/account.js.map +1 -0
- package/dist/commands/auth.d.ts +2 -0
- package/dist/commands/auth.js +169 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/changelog.d.ts +2 -0
- package/dist/commands/changelog.js +15 -0
- package/dist/commands/changelog.js.map +1 -0
- package/dist/commands/collection.d.ts +2 -0
- package/dist/commands/collection.js +106 -0
- package/dist/commands/collection.js.map +1 -0
- package/dist/commands/document.d.ts +2 -0
- package/dist/commands/document.js +291 -0
- package/dist/commands/document.js.map +1 -0
- package/dist/commands/search.d.ts +2 -0
- package/dist/commands/search.js +49 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/skill.d.ts +2 -0
- package/dist/commands/skill.js +80 -0
- package/dist/commands/skill.js.map +1 -0
- package/dist/commands/update/index.d.ts +2 -0
- package/dist/commands/update/index.js +14 -0
- package/dist/commands/update/index.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +56 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api.d.ts +18 -0
- package/dist/lib/api.js +107 -0
- package/dist/lib/api.js.map +1 -0
- package/dist/lib/auth-constants.d.ts +18 -0
- package/dist/lib/auth-constants.js +25 -0
- package/dist/lib/auth-constants.js.map +1 -0
- package/dist/lib/auth-output.d.ts +21 -0
- package/dist/lib/auth-output.js +38 -0
- package/dist/lib/auth-output.js.map +1 -0
- package/dist/lib/auth-pages.d.ts +2 -0
- package/dist/lib/auth-pages.js +101 -0
- package/dist/lib/auth-pages.js.map +1 -0
- package/dist/lib/auth-provider.d.ts +85 -0
- package/dist/lib/auth-provider.js +363 -0
- package/dist/lib/auth-provider.js.map +1 -0
- package/dist/lib/auth.d.ts +73 -0
- package/dist/lib/auth.js +188 -0
- package/dist/lib/auth.js.map +1 -0
- package/dist/lib/config.d.ts +45 -0
- package/dist/lib/config.js +20 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/errors.d.ts +8 -0
- package/dist/lib/errors.js +9 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/global-args.d.ts +30 -0
- package/dist/lib/global-args.js +66 -0
- package/dist/lib/global-args.js.map +1 -0
- package/dist/lib/markdown.d.ts +2 -0
- package/dist/lib/markdown.js +12 -0
- package/dist/lib/markdown.js.map +1 -0
- package/dist/lib/migrate-auth.d.ts +11 -0
- package/dist/lib/migrate-auth.js +92 -0
- package/dist/lib/migrate-auth.js.map +1 -0
- package/dist/lib/outline-account.d.ts +32 -0
- package/dist/lib/outline-account.js +22 -0
- package/dist/lib/outline-account.js.map +1 -0
- package/dist/lib/output.d.ts +15 -0
- package/dist/lib/output.js +85 -0
- package/dist/lib/output.js.map +1 -0
- package/dist/lib/refs.d.ts +33 -0
- package/dist/lib/refs.js +182 -0
- package/dist/lib/refs.js.map +1 -0
- package/dist/lib/skills/content.d.ts +3 -0
- package/dist/lib/skills/content.js +160 -0
- package/dist/lib/skills/content.js.map +1 -0
- package/dist/lib/skills/create-installer.d.ts +9 -0
- package/dist/lib/skills/create-installer.js +77 -0
- package/dist/lib/skills/create-installer.js.map +1 -0
- package/dist/lib/skills/index.d.ts +5 -0
- package/dist/lib/skills/index.js +40 -0
- package/dist/lib/skills/index.js.map +1 -0
- package/dist/lib/skills/types.d.ts +10 -0
- package/dist/lib/skills/types.js +2 -0
- package/dist/lib/skills/types.js.map +1 -0
- package/dist/lib/skills/update-installed.d.ts +6 -0
- package/dist/lib/skills/update-installed.js +23 -0
- package/dist/lib/skills/update-installed.js.map +1 -0
- package/dist/lib/spinner.d.ts +2 -0
- package/dist/lib/spinner.js +5 -0
- package/dist/lib/spinner.js.map +1 -0
- package/dist/lib/user-records.d.ts +21 -0
- package/dist/lib/user-records.js +126 -0
- package/dist/lib/user-records.js.map +1 -0
- package/dist/lib/user-ref-store.d.ts +16 -0
- package/dist/lib/user-ref-store.js +37 -0
- package/dist/lib/user-ref-store.js.map +1 -0
- package/dist/postinstall.d.ts +1 -0
- package/dist/postinstall.js +16 -0
- package/dist/postinstall.js.map +1 -0
- package/dist/transport/fetch-with-retry.d.ts +15 -0
- package/dist/transport/fetch-with-retry.js +144 -0
- package/dist/transport/fetch-with-retry.js.map +1 -0
- package/dist/transport/http-dispatcher.d.ts +37 -0
- package/dist/transport/http-dispatcher.js +95 -0
- package/dist/transport/http-dispatcher.js.map +1 -0
- package/package.json +71 -8
- package/scripts/check-skill-sync.js +40 -0
- package/scripts/postinstall.js +12 -0
- package/scripts/sync-skill.js +30 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/commands/document.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { apiRequest } from '../lib/api.js';
|
|
3
|
+
import { getBaseUrl } from '../lib/auth.js';
|
|
4
|
+
import { getOutputOptions, outputList } from '../lib/output.js';
|
|
5
|
+
const essentialKeys = ['document', 'context'];
|
|
6
|
+
function makeFormatResult(baseUrl) {
|
|
7
|
+
return (result) => {
|
|
8
|
+
const { document, context } = result;
|
|
9
|
+
const title = chalk.bold(document.title);
|
|
10
|
+
const id = chalk.dim(document.urlId);
|
|
11
|
+
const link = chalk.dim(`${baseUrl}${document.url}`);
|
|
12
|
+
const snippet = context
|
|
13
|
+
.replace(/<b>(.*?)<\/b>/g, (_, m) => chalk.bold(m))
|
|
14
|
+
.replace(/<\/?b>/g, '')
|
|
15
|
+
.trim()
|
|
16
|
+
.slice(0, 120);
|
|
17
|
+
return `${title} ${id}\n ${link}\n ${chalk.dim(snippet)}\n`;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export function registerSearchCommand(program) {
|
|
21
|
+
program
|
|
22
|
+
.command('search <query>')
|
|
23
|
+
.description('Search documents')
|
|
24
|
+
.option('--limit <n>', 'Max results', '25')
|
|
25
|
+
.option('--offset <n>', 'Pagination offset', '0')
|
|
26
|
+
.option('--collection <id>', 'Filter by collection ID')
|
|
27
|
+
.option('--status <status>', 'Filter by status (published|draft|archived)')
|
|
28
|
+
.option('--json', 'Output JSON')
|
|
29
|
+
.option('--ndjson', 'Output NDJSON')
|
|
30
|
+
.option('--full', 'Include all fields in JSON output')
|
|
31
|
+
.action(async (query, opts) => {
|
|
32
|
+
const body = {
|
|
33
|
+
query,
|
|
34
|
+
limit: Number(opts.limit),
|
|
35
|
+
offset: Number(opts.offset),
|
|
36
|
+
};
|
|
37
|
+
if (opts.collection)
|
|
38
|
+
body.collectionId = opts.collection;
|
|
39
|
+
if (opts.status)
|
|
40
|
+
body.statusFilter = [opts.status];
|
|
41
|
+
const { data, pagination } = await apiRequest('documents.search', body);
|
|
42
|
+
const outputOpts = getOutputOptions(opts);
|
|
43
|
+
const formatResult = outputOpts.json || outputOpts.ndjson
|
|
44
|
+
? () => ''
|
|
45
|
+
: makeFormatResult(await getBaseUrl());
|
|
46
|
+
outputList(data, formatResult, essentialKeys, outputOpts, pagination);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAc/D,MAAM,aAAa,GAA2B,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;AAErE,SAAS,gBAAgB,CAAC,OAAe;IACrC,OAAO,CAAC,MAAM,EAAE,EAAE;QACd,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAAA;QACpC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QACxC,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QACpC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAA;QACnD,MAAM,OAAO,GAAG,OAAO;aAClB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aAClD,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;aACtB,IAAI,EAAE;aACN,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QAClB,OAAO,GAAG,KAAK,IAAI,EAAE,OAAO,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAA;IACjE,CAAC,CAAA;AACL,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IAClD,OAAO;SACF,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,kBAAkB,CAAC;SAC/B,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC;SAC1C,MAAM,CAAC,cAAc,EAAE,mBAAmB,EAAE,GAAG,CAAC;SAChD,MAAM,CAAC,mBAAmB,EAAE,yBAAyB,CAAC;SACtD,MAAM,CAAC,mBAAmB,EAAE,6CAA6C,CAAC;SAC1E,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC;SAC/B,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC;SACnC,MAAM,CAAC,QAAQ,EAAE,mCAAmC,CAAC;SACrD,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,IAAI,EAAE,EAAE;QAClC,MAAM,IAAI,GAA4B;YAClC,KAAK;YACL,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;YACzB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;SAC9B,CAAA;QACD,IAAI,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAA;QACxD,IAAI,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAElD,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,UAAU,CAAiB,kBAAkB,EAAE,IAAI,CAAC,CAAA;QAEvF,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;QACzC,MAAM,YAAY,GACd,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,MAAM;YAChC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE;YACV,CAAC,CAAC,gBAAgB,CAAC,MAAM,UAAU,EAAE,CAAC,CAAA;QAC9C,UAAU,CAAC,IAAI,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;IACzE,CAAC,CAAC,CAAA;AACV,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { formatError } from '../lib/output.js';
|
|
3
|
+
import { getInstaller, listAgents, skillInstallers } from '../lib/skills/index.js';
|
|
4
|
+
export function registerSkillCommand(program) {
|
|
5
|
+
const skill = program.command('skill').description('Manage coding agent skills/integrations');
|
|
6
|
+
const installCmd = skill
|
|
7
|
+
.command('install [agent]')
|
|
8
|
+
.description('Install skill for a coding agent')
|
|
9
|
+
.option('--local', 'Install in current project instead of global')
|
|
10
|
+
.option('--force', 'Overwrite existing skill file')
|
|
11
|
+
.action(async (agent, opts) => {
|
|
12
|
+
if (!agent) {
|
|
13
|
+
installCmd.help();
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
const installer = getInstaller(agent);
|
|
17
|
+
if (!installer) {
|
|
18
|
+
const available = listAgents().join(', ');
|
|
19
|
+
console.error(formatError('UNKNOWN_AGENT', `Unknown agent: ${agent}`, [
|
|
20
|
+
`Available agents: ${available}`,
|
|
21
|
+
"Run 'ol skill list' to see all agents",
|
|
22
|
+
]));
|
|
23
|
+
process.exit(1);
|
|
24
|
+
}
|
|
25
|
+
const local = opts.local ?? false;
|
|
26
|
+
const force = opts.force ?? false;
|
|
27
|
+
await installer.install(local, force);
|
|
28
|
+
const filepath = installer.getInstallPath(local);
|
|
29
|
+
console.log(chalk.green('✓'), `Installed ${installer.name} skill`);
|
|
30
|
+
console.log(chalk.dim(filepath));
|
|
31
|
+
});
|
|
32
|
+
const uninstallCmd = skill
|
|
33
|
+
.command('uninstall [agent]')
|
|
34
|
+
.description('Uninstall skill for a coding agent')
|
|
35
|
+
.option('--local', 'Remove from current project instead of global')
|
|
36
|
+
.action(async (agent, opts) => {
|
|
37
|
+
if (!agent) {
|
|
38
|
+
uninstallCmd.help();
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const installer = getInstaller(agent);
|
|
42
|
+
if (!installer) {
|
|
43
|
+
const available = listAgents().join(', ');
|
|
44
|
+
console.error(formatError('UNKNOWN_AGENT', `Unknown agent: ${agent}`, [
|
|
45
|
+
`Available agents: ${available}`,
|
|
46
|
+
"Run 'ol skill list' to see all agents",
|
|
47
|
+
]));
|
|
48
|
+
process.exit(1);
|
|
49
|
+
}
|
|
50
|
+
const local = opts.local ?? false;
|
|
51
|
+
await installer.uninstall(local);
|
|
52
|
+
console.log(chalk.green('✓'), `Uninstalled ${installer.name} skill`);
|
|
53
|
+
});
|
|
54
|
+
skill
|
|
55
|
+
.command('list')
|
|
56
|
+
.description('List supported agents and install status')
|
|
57
|
+
.action(async () => {
|
|
58
|
+
const agents = listAgents();
|
|
59
|
+
console.log(chalk.bold('Available agents:'));
|
|
60
|
+
console.log('');
|
|
61
|
+
for (const agentName of agents) {
|
|
62
|
+
const installer = skillInstallers[agentName];
|
|
63
|
+
const globalInstalled = await installer.isInstalled(false);
|
|
64
|
+
const localInstalled = await installer.isInstalled(true);
|
|
65
|
+
const status = [];
|
|
66
|
+
if (globalInstalled)
|
|
67
|
+
status.push('global');
|
|
68
|
+
if (localInstalled)
|
|
69
|
+
status.push('local');
|
|
70
|
+
const statusStr = status.length > 0
|
|
71
|
+
? chalk.green(`[${status.join(', ')}]`)
|
|
72
|
+
: chalk.dim('[not installed]');
|
|
73
|
+
console.log(` ${agentName}`);
|
|
74
|
+
console.log(` ${chalk.dim(installer.description)}`);
|
|
75
|
+
console.log(` ${statusStr}`);
|
|
76
|
+
console.log('');
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=skill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { registerUpdateCommand as registerCoreUpdateCommand } from '@todoist/cli-core/commands';
|
|
2
|
+
import packageJson from '../../../package.json' with { type: 'json' };
|
|
3
|
+
import { getConfigPath } from '../../lib/config.js';
|
|
4
|
+
import { withSpinner } from '../../lib/spinner.js';
|
|
5
|
+
export function registerUpdateCommand(program) {
|
|
6
|
+
registerCoreUpdateCommand(program, {
|
|
7
|
+
packageName: packageJson.name,
|
|
8
|
+
currentVersion: packageJson.version,
|
|
9
|
+
configPath: getConfigPath(),
|
|
10
|
+
changelogCommandName: 'ol changelog',
|
|
11
|
+
withSpinner,
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/update/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,IAAI,yBAAyB,EAAE,MAAM,4BAA4B,CAAA;AAE/F,OAAO,WAAW,MAAM,uBAAuB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAElD,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IAClD,yBAAyB,CAAC,OAAO,EAAE;QAC/B,WAAW,EAAE,WAAW,CAAC,IAAI;QAC7B,cAAc,EAAE,WAAW,CAAC,OAAO;QACnC,UAAU,EAAE,aAAa,EAAE;QAC3B,oBAAoB,EAAE,cAAc;QACpC,WAAW;KACd,CAAC,CAAA;AACN,CAAC"}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import packageJson from '../package.json' with { type: 'json' };
|
|
4
|
+
import { registerAccountCommand } from './commands/account.js';
|
|
5
|
+
import { registerAuthCommand } from './commands/auth.js';
|
|
6
|
+
import { registerChangelogCommand } from './commands/changelog.js';
|
|
7
|
+
import { registerCollectionCommand } from './commands/collection.js';
|
|
8
|
+
import { registerDocumentCommand } from './commands/document.js';
|
|
9
|
+
import { registerSearchCommand } from './commands/search.js';
|
|
10
|
+
import { registerSkillCommand } from './commands/skill.js';
|
|
11
|
+
import { registerUpdateCommand } from './commands/update/index.js';
|
|
12
|
+
import { BaseCliError } from './lib/errors.js';
|
|
13
|
+
import { applyUserSelector, isJsonMode } from './lib/global-args.js';
|
|
14
|
+
import { formatError, formatErrorJson } from './lib/output.js';
|
|
15
|
+
const program = new Command();
|
|
16
|
+
program
|
|
17
|
+
.name('ol')
|
|
18
|
+
.version(packageJson.version)
|
|
19
|
+
.description('CLI for the Outline wiki/knowledge base API')
|
|
20
|
+
.option('--no-spinner', 'Disable loading animations')
|
|
21
|
+
.option('--accessible', 'Render output in screen-reader-friendly mode')
|
|
22
|
+
.addHelpText('after', `
|
|
23
|
+
Global options:
|
|
24
|
+
--user <id|name> Act as a specific stored account (place before the command,
|
|
25
|
+
e.g. \`ol --user scott@example.com document list\`).
|
|
26
|
+
|
|
27
|
+
Note for AI/LLM agents:
|
|
28
|
+
Use --json or --ndjson flags for unambiguous, parseable output.
|
|
29
|
+
Default JSON shows essential fields; use --full for all fields.`);
|
|
30
|
+
registerAuthCommand(program);
|
|
31
|
+
registerAccountCommand(program);
|
|
32
|
+
registerSearchCommand(program);
|
|
33
|
+
registerDocumentCommand(program);
|
|
34
|
+
registerCollectionCommand(program);
|
|
35
|
+
registerSkillCommand(program);
|
|
36
|
+
registerChangelogCommand(program);
|
|
37
|
+
registerUpdateCommand(program);
|
|
38
|
+
function reportError(err) {
|
|
39
|
+
if (err instanceof BaseCliError) {
|
|
40
|
+
console.error(isJsonMode() ? formatErrorJson(err) : formatError(err));
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
console.error(err instanceof Error ? err.message : String(err));
|
|
44
|
+
}
|
|
45
|
+
process.exit(1);
|
|
46
|
+
}
|
|
47
|
+
// Commander has no root `--user` option, so validate it and strip it from argv
|
|
48
|
+
// before parsing (see `applyUserSelector` for the warm-cache-then-strip order).
|
|
49
|
+
try {
|
|
50
|
+
applyUserSelector(new Set(program.commands.map((c) => c.name())));
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
reportError(err);
|
|
54
|
+
}
|
|
55
|
+
program.parseAsync().catch(reportError);
|
|
56
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,WAAW,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAA;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAA;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAE9D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,OAAO;KACF,IAAI,CAAC,IAAI,CAAC;KACV,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;KAC5B,WAAW,CAAC,6CAA6C,CAAC;KAC1D,MAAM,CAAC,cAAc,EAAE,4BAA4B,CAAC;KACpD,MAAM,CAAC,cAAc,EAAE,8CAA8C,CAAC;KACtE,WAAW,CACR,OAAO,EACP;;;;;;;kEAO0D,CAC7D,CAAA;AAEL,mBAAmB,CAAC,OAAO,CAAC,CAAA;AAC5B,sBAAsB,CAAC,OAAO,CAAC,CAAA;AAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAA;AAC9B,uBAAuB,CAAC,OAAO,CAAC,CAAA;AAChC,yBAAyB,CAAC,OAAO,CAAC,CAAA;AAClC,oBAAoB,CAAC,OAAO,CAAC,CAAA;AAC7B,wBAAwB,CAAC,OAAO,CAAC,CAAA;AACjC,qBAAqB,CAAC,OAAO,CAAC,CAAA;AAE9B,SAAS,WAAW,CAAC,GAAY;IAC7B,IAAI,GAAG,YAAY,YAAY,EAAE,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;IACzE,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;IACnE,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACnB,CAAC;AAED,+EAA+E;AAC/E,gFAAgF;AAChF,IAAI,CAAC;IACD,iBAAiB,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AACrE,CAAC;AAAC,OAAO,GAAG,EAAE,CAAC;IACX,WAAW,CAAC,GAAG,CAAC,CAAA;AACpB,CAAC;AAED,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface Pagination {
|
|
2
|
+
offset: number;
|
|
3
|
+
limit: number;
|
|
4
|
+
nextPath?: string;
|
|
5
|
+
}
|
|
6
|
+
export interface PaginatedResult<T> {
|
|
7
|
+
data: T;
|
|
8
|
+
pagination?: Pagination;
|
|
9
|
+
}
|
|
10
|
+
export type ApiRequestOverrides = {
|
|
11
|
+
token?: string;
|
|
12
|
+
baseUrl?: string;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Public API request function that wraps rawApiRequest with automatic spinners.
|
|
16
|
+
* Spinner messages are configured per API path in API_SPINNER_CONFIG.
|
|
17
|
+
*/
|
|
18
|
+
export declare function apiRequest<T>(path: string, body?: object, overrides?: ApiRequestOverrides): Promise<PaginatedResult<T>>;
|
package/dist/lib/api.js
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { fetchWithRetry } from '../transport/fetch-with-retry.js';
|
|
2
|
+
import { TOKEN_ENV_VAR } from './auth-constants.js';
|
|
3
|
+
import { getApiToken, getRequestContext, proactiveRefresh, reactiveRefresh } from './auth.js';
|
|
4
|
+
import { withSpinner } from './spinner.js';
|
|
5
|
+
/**
|
|
6
|
+
* Spinner configuration mapping API paths to spinner options.
|
|
7
|
+
* Blue for read operations, green for creates, yellow for updates/deletes.
|
|
8
|
+
*/
|
|
9
|
+
const API_SPINNER_CONFIG = {
|
|
10
|
+
'auth.info': { text: 'Checking authentication...', color: 'blue' },
|
|
11
|
+
'documents.search': { text: 'Searching documents...', color: 'blue' },
|
|
12
|
+
'documents.list': { text: 'Loading documents...', color: 'blue' },
|
|
13
|
+
'documents.info': { text: 'Loading document...', color: 'blue' },
|
|
14
|
+
'documents.create': { text: 'Creating document...', color: 'green' },
|
|
15
|
+
'documents.update': { text: 'Updating document...', color: 'yellow' },
|
|
16
|
+
'documents.delete': { text: 'Deleting document...', color: 'yellow' },
|
|
17
|
+
'documents.move': { text: 'Moving document...', color: 'yellow' },
|
|
18
|
+
'documents.archive': { text: 'Archiving document...', color: 'yellow' },
|
|
19
|
+
'documents.unarchive': { text: 'Unarchiving document...', color: 'yellow' },
|
|
20
|
+
'collections.list': { text: 'Loading collections...', color: 'blue' },
|
|
21
|
+
'collections.info': { text: 'Loading collection...', color: 'blue' },
|
|
22
|
+
'collections.create': { text: 'Creating collection...', color: 'green' },
|
|
23
|
+
'collections.update': { text: 'Updating collection...', color: 'yellow' },
|
|
24
|
+
'collections.delete': { text: 'Deleting collection...', color: 'yellow' },
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Resolve the token for a request. A caller-supplied override is used as-is.
|
|
28
|
+
* On the managed path, prefer the token `proactiveRefresh` resolved (rotated
|
|
29
|
+
* or current) so unrefreshable/access-only accounts stay on a single store
|
|
30
|
+
* read; only fall back to `getApiToken` when proactive refresh bows out.
|
|
31
|
+
* `handshake` pins the refresh to the `--user` account's instance.
|
|
32
|
+
*/
|
|
33
|
+
async function resolveRequestToken(managed, override, handshake) {
|
|
34
|
+
if (override)
|
|
35
|
+
return override;
|
|
36
|
+
if (managed) {
|
|
37
|
+
const refreshed = await proactiveRefresh(handshake);
|
|
38
|
+
if (refreshed)
|
|
39
|
+
return refreshed;
|
|
40
|
+
}
|
|
41
|
+
return getApiToken();
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Core API request function without spinner wrapping.
|
|
45
|
+
*/
|
|
46
|
+
async function rawApiRequest(path, body = {}, overrides = {}) {
|
|
47
|
+
// Only stored credentials can be refreshed: a caller-supplied token
|
|
48
|
+
// override or the `OUTLINE_API_TOKEN` env var is taken as-is.
|
|
49
|
+
const managed = !overrides.token && !process.env[TOKEN_ENV_VAR]?.trim();
|
|
50
|
+
// A caller-supplied base URL (login validate, auth status) skips account
|
|
51
|
+
// resolution — those paths pass an explicit token, so no refresh runs.
|
|
52
|
+
// Otherwise resolve the request's base URL and, for a `--user` account, the
|
|
53
|
+
// refresh handshake that keeps rotation pinned to that account's instance.
|
|
54
|
+
let resolvedBaseUrl;
|
|
55
|
+
let handshake;
|
|
56
|
+
if (overrides.baseUrl) {
|
|
57
|
+
resolvedBaseUrl = overrides.baseUrl.replace(/\/$/, '');
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
const ctx = await getRequestContext();
|
|
61
|
+
resolvedBaseUrl = ctx.baseUrl;
|
|
62
|
+
handshake = ctx.handshake;
|
|
63
|
+
}
|
|
64
|
+
const resolvedToken = await resolveRequestToken(managed, overrides.token, handshake);
|
|
65
|
+
const performRequest = (token) => fetchWithRetry({
|
|
66
|
+
url: `${resolvedBaseUrl}/api/${path}`,
|
|
67
|
+
options: {
|
|
68
|
+
method: 'POST',
|
|
69
|
+
headers: {
|
|
70
|
+
'Content-Type': 'application/json',
|
|
71
|
+
Authorization: `Bearer ${token}`,
|
|
72
|
+
},
|
|
73
|
+
body: JSON.stringify(body),
|
|
74
|
+
},
|
|
75
|
+
});
|
|
76
|
+
let res = await performRequest(resolvedToken);
|
|
77
|
+
// Reactive path: a 401 on a managed token triggers a forced rotation and
|
|
78
|
+
// a single retry. `reactiveRefresh` throws `NoTokenError` when the refresh
|
|
79
|
+
// token is gone, so an unrecoverable 401 surfaces the re-login hint.
|
|
80
|
+
if (res.status === 401 && managed && (await reactiveRefresh(handshake))) {
|
|
81
|
+
res = await performRequest(await getApiToken());
|
|
82
|
+
}
|
|
83
|
+
if (!res.ok) {
|
|
84
|
+
let message = `API error: ${res.status} ${res.statusText}`;
|
|
85
|
+
try {
|
|
86
|
+
const err = (await res.json());
|
|
87
|
+
if (err.message)
|
|
88
|
+
message = `API error: ${err.message}`;
|
|
89
|
+
}
|
|
90
|
+
catch { }
|
|
91
|
+
throw new Error(message);
|
|
92
|
+
}
|
|
93
|
+
const json = (await res.json());
|
|
94
|
+
return { data: json.data, pagination: json.pagination };
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Public API request function that wraps rawApiRequest with automatic spinners.
|
|
98
|
+
* Spinner messages are configured per API path in API_SPINNER_CONFIG.
|
|
99
|
+
*/
|
|
100
|
+
export async function apiRequest(path, body = {}, overrides = {}) {
|
|
101
|
+
const spinnerConfig = API_SPINNER_CONFIG[path] ?? {
|
|
102
|
+
text: 'Loading...',
|
|
103
|
+
color: 'blue',
|
|
104
|
+
};
|
|
105
|
+
return withSpinner(spinnerConfig, () => rawApiRequest(path, body, overrides));
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Config } from './config.js';
|
|
2
|
+
/** OS keyring `service` identifier for every outline-cli secret. */
|
|
3
|
+
export declare const SECURE_STORE_SERVICE = "outline-cli";
|
|
4
|
+
/** Env var that short-circuits the token store with a manually-supplied token. */
|
|
5
|
+
export declare const TOKEN_ENV_VAR = "OUTLINE_API_TOKEN";
|
|
6
|
+
/**
|
|
7
|
+
* Legacy single-user keyring slot. Outline never wrote a token to the
|
|
8
|
+
* keyring before this migration, so there is no real legacy slot to read —
|
|
9
|
+
* `migrateLegacyAuth` still expects the option, and its best-effort delete
|
|
10
|
+
* after migration is a harmless no-op on an empty entry.
|
|
11
|
+
*/
|
|
12
|
+
export declare const LEGACY_KEYRING_ACCOUNT = "api-token";
|
|
13
|
+
/**
|
|
14
|
+
* `updateConfig` payload that wipes every v1 auth key. Used by both the
|
|
15
|
+
* one-shot migration `cleanupLegacyConfig` and the runtime
|
|
16
|
+
* `dischargeLegacyState` so both paths stay in lockstep.
|
|
17
|
+
*/
|
|
18
|
+
export declare const LEGACY_CLEAR_PAYLOAD: Partial<Config>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/** OS keyring `service` identifier for every outline-cli secret. */
|
|
2
|
+
export const SECURE_STORE_SERVICE = 'outline-cli';
|
|
3
|
+
/** Env var that short-circuits the token store with a manually-supplied token. */
|
|
4
|
+
export const TOKEN_ENV_VAR = 'OUTLINE_API_TOKEN';
|
|
5
|
+
/**
|
|
6
|
+
* Legacy single-user keyring slot. Outline never wrote a token to the
|
|
7
|
+
* keyring before this migration, so there is no real legacy slot to read —
|
|
8
|
+
* `migrateLegacyAuth` still expects the option, and its best-effort delete
|
|
9
|
+
* after migration is a harmless no-op on an empty entry.
|
|
10
|
+
*/
|
|
11
|
+
export const LEGACY_KEYRING_ACCOUNT = 'api-token';
|
|
12
|
+
/**
|
|
13
|
+
* `updateConfig` payload that wipes every v1 auth key. Used by both the
|
|
14
|
+
* one-shot migration `cleanupLegacyConfig` and the runtime
|
|
15
|
+
* `dischargeLegacyState` so both paths stay in lockstep.
|
|
16
|
+
*/
|
|
17
|
+
export const LEGACY_CLEAR_PAYLOAD = {
|
|
18
|
+
api_token: undefined,
|
|
19
|
+
base_url: undefined,
|
|
20
|
+
oauth_client_id: undefined,
|
|
21
|
+
auth_user_id: undefined,
|
|
22
|
+
auth_user_name: undefined,
|
|
23
|
+
auth_team_name: undefined,
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=auth-constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-constants.js","sourceRoot":"","sources":["../../src/lib/auth-constants.ts"],"names":[],"mappings":"AAEA,oEAAoE;AACpE,MAAM,CAAC,MAAM,oBAAoB,GAAG,aAAa,CAAA;AAEjD,kFAAkF;AAClF,MAAM,CAAC,MAAM,aAAa,GAAG,mBAAmB,CAAA;AAEhD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,WAAW,CAAA;AAEjD;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAoB;IACjD,SAAS,EAAE,SAAS;IACpB,QAAQ,EAAE,SAAS;IACnB,eAAe,EAAE,SAAS;IAC1B,YAAY,EAAE,SAAS;IACvB,cAAc,EAAE,SAAS;IACzB,cAAc,EAAE,SAAS;CAC5B,CAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { TokenStorageResult } from '@todoist/cli-core/auth';
|
|
2
|
+
import type { OutlineTokenStore } from './auth-provider.js';
|
|
3
|
+
/**
|
|
4
|
+
* Surface a `TokenStorageResult` from a save/clear: the human-readable
|
|
5
|
+
* confirmation goes to stdout, any keyring-fallback warning goes to stderr.
|
|
6
|
+
* Pass `isMachineOutput: true` to suppress the stdout confirmation in
|
|
7
|
+
* `--json` / `--ndjson` mode while still routing the warning to stderr.
|
|
8
|
+
*/
|
|
9
|
+
export declare function logTokenStorageResult(result: TokenStorageResult, secureStoreMessage: string, isMachineOutput?: boolean): void;
|
|
10
|
+
/**
|
|
11
|
+
* Surface the result of a token save (`auth login` / `auth token`): the
|
|
12
|
+
* confirmation goes to stdout, any keyring-fallback warning to stderr. Shared so
|
|
13
|
+
* both save flows keep identical machine-output and warning behavior.
|
|
14
|
+
*/
|
|
15
|
+
export declare function logSaveResult(store: OutlineTokenStore, isMachineOutput: boolean): void;
|
|
16
|
+
/**
|
|
17
|
+
* Surface the result of a token clear (`auth logout` / `account remove`): the
|
|
18
|
+
* confirmation goes to stdout, any keyring-fallback warning to stderr. Shared so
|
|
19
|
+
* both call sites stay in lockstep.
|
|
20
|
+
*/
|
|
21
|
+
export declare function logClearResult(store: OutlineTokenStore, isMachineOutput: boolean): void;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
/**
|
|
3
|
+
* Surface a `TokenStorageResult` from a save/clear: the human-readable
|
|
4
|
+
* confirmation goes to stdout, any keyring-fallback warning goes to stderr.
|
|
5
|
+
* Pass `isMachineOutput: true` to suppress the stdout confirmation in
|
|
6
|
+
* `--json` / `--ndjson` mode while still routing the warning to stderr.
|
|
7
|
+
*/
|
|
8
|
+
export function logTokenStorageResult(result, secureStoreMessage, isMachineOutput = false) {
|
|
9
|
+
if (!isMachineOutput && result.storage === 'secure-store') {
|
|
10
|
+
console.log(chalk.dim(secureStoreMessage));
|
|
11
|
+
}
|
|
12
|
+
if (result.warning) {
|
|
13
|
+
console.error(chalk.yellow('Warning:'), result.warning);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Surface the result of a token save (`auth login` / `auth token`): the
|
|
18
|
+
* confirmation goes to stdout, any keyring-fallback warning to stderr. Shared so
|
|
19
|
+
* both save flows keep identical machine-output and warning behavior.
|
|
20
|
+
*/
|
|
21
|
+
export function logSaveResult(store, isMachineOutput) {
|
|
22
|
+
const result = store.getLastStorageResult();
|
|
23
|
+
if (!result)
|
|
24
|
+
return;
|
|
25
|
+
logTokenStorageResult(result, 'Token stored securely in the system credential manager', isMachineOutput);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Surface the result of a token clear (`auth logout` / `account remove`): the
|
|
29
|
+
* confirmation goes to stdout, any keyring-fallback warning to stderr. Shared so
|
|
30
|
+
* both call sites stay in lockstep.
|
|
31
|
+
*/
|
|
32
|
+
export function logClearResult(store, isMachineOutput) {
|
|
33
|
+
const result = store.getLastClearResult();
|
|
34
|
+
if (!result)
|
|
35
|
+
return;
|
|
36
|
+
logTokenStorageResult(result, 'Stored token removed from the system credential manager', isMachineOutput);
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=auth-output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-output.js","sourceRoot":"","sources":["../../src/lib/auth-output.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACjC,MAA0B,EAC1B,kBAA0B,EAC1B,eAAe,GAAG,KAAK;IAEvB,IAAI,CAAC,eAAe,IAAI,MAAM,CAAC,OAAO,KAAK,cAAc,EAAE,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAA;IAC9C,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;IAC3D,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,KAAwB,EAAE,eAAwB;IAC5E,MAAM,MAAM,GAAG,KAAK,CAAC,oBAAoB,EAAE,CAAA;IAC3C,IAAI,CAAC,MAAM;QAAE,OAAM;IACnB,qBAAqB,CACjB,MAAM,EACN,wDAAwD,EACxD,eAAe,CAClB,CAAA;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,KAAwB,EAAE,eAAwB;IAC7E,MAAM,MAAM,GAAG,KAAK,CAAC,kBAAkB,EAAE,CAAA;IACzC,IAAI,CAAC,MAAM;QAAE,OAAM;IACnB,qBAAqB,CACjB,MAAM,EACN,yDAAyD,EACzD,eAAe,CAClB,CAAA;AACL,CAAC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
function escapeHtml(text) {
|
|
2
|
+
return text
|
|
3
|
+
.replaceAll('&', '&')
|
|
4
|
+
.replaceAll('<', '<')
|
|
5
|
+
.replaceAll('>', '>')
|
|
6
|
+
.replaceAll('"', '"')
|
|
7
|
+
.replaceAll("'", ''');
|
|
8
|
+
}
|
|
9
|
+
function renderPage(title, subtitle, body) {
|
|
10
|
+
return `<!doctype html>
|
|
11
|
+
<html lang="en">
|
|
12
|
+
<head>
|
|
13
|
+
<meta charset="utf-8">
|
|
14
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
15
|
+
<title>${escapeHtml(title)} - Outline CLI</title>
|
|
16
|
+
<style>
|
|
17
|
+
:root {
|
|
18
|
+
--bg: #f5f7fb;
|
|
19
|
+
--surface: #ffffff;
|
|
20
|
+
--border: #e6e9f0;
|
|
21
|
+
--text: #1e2430;
|
|
22
|
+
--muted: #586178;
|
|
23
|
+
--ok: #15803d;
|
|
24
|
+
--ok-soft: #dcfce7;
|
|
25
|
+
--err: #b91c1c;
|
|
26
|
+
--err-soft: #fee2e2;
|
|
27
|
+
--radius: 14px;
|
|
28
|
+
}
|
|
29
|
+
* { box-sizing: border-box; }
|
|
30
|
+
body {
|
|
31
|
+
margin: 0;
|
|
32
|
+
min-height: 100vh;
|
|
33
|
+
display: grid;
|
|
34
|
+
place-items: center;
|
|
35
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
|
|
36
|
+
background: radial-gradient(1200px 500px at 50% -10%, #dbeafe 0%, var(--bg) 60%);
|
|
37
|
+
color: var(--text);
|
|
38
|
+
line-height: 1.5;
|
|
39
|
+
padding: 20px;
|
|
40
|
+
}
|
|
41
|
+
.card {
|
|
42
|
+
width: min(560px, 100%);
|
|
43
|
+
background: var(--surface);
|
|
44
|
+
border: 1px solid var(--border);
|
|
45
|
+
border-radius: var(--radius);
|
|
46
|
+
padding: 24px;
|
|
47
|
+
box-shadow: 0 16px 40px rgba(15, 23, 42, 0.08);
|
|
48
|
+
}
|
|
49
|
+
h1 {
|
|
50
|
+
margin: 0 0 8px;
|
|
51
|
+
font-size: 24px;
|
|
52
|
+
letter-spacing: -0.01em;
|
|
53
|
+
}
|
|
54
|
+
.subtitle {
|
|
55
|
+
margin: 0 0 16px;
|
|
56
|
+
color: var(--muted);
|
|
57
|
+
font-size: 15px;
|
|
58
|
+
}
|
|
59
|
+
.message {
|
|
60
|
+
border-radius: 12px;
|
|
61
|
+
padding: 14px 16px;
|
|
62
|
+
font-size: 14px;
|
|
63
|
+
}
|
|
64
|
+
.success {
|
|
65
|
+
background: var(--ok-soft);
|
|
66
|
+
color: #14532d;
|
|
67
|
+
}
|
|
68
|
+
.error {
|
|
69
|
+
background: var(--err-soft);
|
|
70
|
+
color: #7f1d1d;
|
|
71
|
+
}
|
|
72
|
+
.hint {
|
|
73
|
+
margin-top: 14px;
|
|
74
|
+
color: var(--muted);
|
|
75
|
+
font-size: 13px;
|
|
76
|
+
}
|
|
77
|
+
code {
|
|
78
|
+
font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
|
|
79
|
+
background: #eef2ff;
|
|
80
|
+
border-radius: 6px;
|
|
81
|
+
padding: 2px 6px;
|
|
82
|
+
}
|
|
83
|
+
</style>
|
|
84
|
+
</head>
|
|
85
|
+
<body>
|
|
86
|
+
<main class="card">
|
|
87
|
+
<h1>${escapeHtml(title)}</h1>
|
|
88
|
+
<p class="subtitle">${escapeHtml(subtitle)}</p>
|
|
89
|
+
${body}
|
|
90
|
+
<p class="hint">Return to your terminal and continue with <code>ol</code> commands.</p>
|
|
91
|
+
</main>
|
|
92
|
+
</body>
|
|
93
|
+
</html>`;
|
|
94
|
+
}
|
|
95
|
+
export function renderSuccess() {
|
|
96
|
+
return renderPage('Login complete', 'Outline CLI is now authenticated.', '<div class="message success">You can close this tab now.</div>');
|
|
97
|
+
}
|
|
98
|
+
export function renderError(message) {
|
|
99
|
+
return renderPage('Authentication failed', 'Outline CLI could not finish OAuth login.', `<div class="message error">${escapeHtml(message)}</div>`);
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=auth-pages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-pages.js","sourceRoot":"","sources":["../../src/lib/auth-pages.ts"],"names":[],"mappings":"AAAA,SAAS,UAAU,CAAC,IAAY;IAC5B,OAAO,IAAI;SACN,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC;SACxB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;SACvB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;SACvB,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC;SACzB,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;AACjC,CAAC;AAED,SAAS,UAAU,CAAC,KAAa,EAAE,QAAgB,EAAE,IAAY;IAC7D,OAAO;;;;;WAKA,UAAU,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAwElB,UAAU,CAAC,KAAK,CAAC;0BACD,UAAU,CAAC,QAAQ,CAAC;MACxC,IAAI;;;;QAIF,CAAA;AACR,CAAC;AAED,MAAM,UAAU,aAAa;IACzB,OAAO,UAAU,CACb,gBAAgB,EAChB,mCAAmC,EACnC,gEAAgE,CACnE,CAAA;AACL,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe;IACvC,OAAO,UAAU,CACb,uBAAuB,EACvB,2CAA2C,EAC3C,8BAA8B,UAAU,CAAC,OAAO,CAAC,QAAQ,CAC5D,CAAA;AACL,CAAC"}
|