@doist/outline-cli 1.5.2 → 1.6.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 +12 -0
- package/dist/commands/auth.js +32 -138
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/changelog.d.ts +1 -6
- package/dist/commands/changelog.js +8 -88
- package/dist/commands/changelog.js.map +1 -1
- package/dist/commands/document.js +3 -3
- package/dist/commands/document.js.map +1 -1
- package/dist/commands/search.js +16 -11
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/update/index.d.ts +1 -1
- package/dist/commands/update/index.js +11 -14
- package/dist/commands/update/index.js.map +1 -1
- package/dist/index.js +12 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/api.d.ts +5 -1
- package/dist/lib/api.js +9 -7
- package/dist/lib/api.js.map +1 -1
- 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 +10 -0
- package/dist/lib/auth-provider.js +198 -0
- package/dist/lib/auth-provider.js.map +1 -0
- package/dist/lib/auth.d.ts +15 -6
- package/dist/lib/auth.js +28 -42
- package/dist/lib/auth.js.map +1 -1
- package/dist/lib/config.d.ts +18 -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 +5 -0
- package/dist/lib/global-args.js +17 -0
- package/dist/lib/global-args.js.map +1 -0
- package/dist/lib/markdown.d.ts +2 -1
- package/dist/lib/markdown.js +10 -5
- package/dist/lib/markdown.js.map +1 -1
- package/dist/lib/output.d.ts +9 -5
- package/dist/lib/output.js +29 -11
- package/dist/lib/output.js.map +1 -1
- package/dist/lib/skills/content.d.ts +1 -1
- package/dist/lib/skills/content.js +10 -3
- package/dist/lib/skills/content.js.map +1 -1
- package/dist/lib/spinner.d.ts +2 -13
- package/dist/lib/spinner.js +4 -55
- package/dist/lib/spinner.js.map +1 -1
- package/package.json +6 -6
- package/dist/commands/update/action.d.ts +0 -4
- package/dist/commands/update/action.js +0 -157
- package/dist/commands/update/action.js.map +0 -1
- package/dist/commands/update/switch.d.ts +0 -4
- package/dist/commands/update/switch.js +0 -29
- package/dist/commands/update/switch.js.map +0 -1
- package/dist/lib/oauth-server.d.ts +0 -14
- package/dist/lib/oauth-server.js +0 -203
- package/dist/lib/oauth-server.js.map +0 -1
- package/dist/lib/oauth.d.ts +0 -17
- package/dist/lib/oauth.js +0 -42
- package/dist/lib/oauth.js.map +0 -1
- package/dist/lib/pkce.d.ts +0 -3
- package/dist/lib/pkce.js +0 -16
- package/dist/lib/pkce.js.map +0 -1
- package/dist/lib/update-config.d.ts +0 -3
- package/dist/lib/update-config.js +0 -35
- package/dist/lib/update-config.js.map +0 -1
package/dist/lib/markdown.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/lib/markdown.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/lib/markdown.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,eAAe,IAAI,mBAAmB,EACtC,cAAc,IAAI,kBAAkB,GACvC,MAAM,0BAA0B,CAAA;AAEjC,IAAI,cAAc,GAAyB,IAAI,CAAA;AAE/C,MAAM,CAAC,KAAK,UAAU,eAAe;IACjC,IAAI,CAAC,cAAc;QAAE,cAAc,GAAG,mBAAmB,EAAE,CAAA;IAC3D,OAAO,cAAc,CAAA;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY;IAC7C,MAAM,eAAe,EAAE,CAAA;IACvB,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAA;AACnC,CAAC"}
|
package/dist/lib/output.d.ts
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
|
+
import { type ViewOptions } from '@doist/cli-core';
|
|
1
2
|
import type { Pagination } from './api.js';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
import { BaseCliError } from './errors.js';
|
|
4
|
+
type AnyCliError = BaseCliError<string>;
|
|
5
|
+
export type OutputOptions = ViewOptions & {
|
|
5
6
|
full?: boolean;
|
|
6
|
-
}
|
|
7
|
+
};
|
|
7
8
|
export declare function getOutputOptions(opts: Record<string, unknown>): OutputOptions;
|
|
8
9
|
export declare function outputItem<T extends object>(item: T, humanFormatter: (item: T) => string, essentialKeys?: (keyof T)[], opts?: OutputOptions): void;
|
|
9
|
-
export declare function outputList<T extends object>(items: T[], humanFormatter: (item: T) => string, essentialKeys?: (keyof T)[], opts?: OutputOptions, pagination?: Pagination): void;
|
|
10
|
+
export declare function outputList<T extends object>(items: T[], humanFormatter: (item: T) => string, essentialKeys?: (keyof T)[], opts?: OutputOptions, pagination?: Pagination, emptyMessage?: string): void;
|
|
11
|
+
export declare function formatError(error: AnyCliError): string;
|
|
10
12
|
export declare function formatError(code: string, message: string, hints?: string[]): string;
|
|
13
|
+
export declare function formatErrorJson(error: AnyCliError): string;
|
|
14
|
+
export declare function formatErrorJson(code: string, message: string, hints?: string[]): string;
|
|
11
15
|
export {};
|
package/dist/lib/output.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { formatJson, formatNdjson, printEmpty } from '@doist/cli-core';
|
|
1
2
|
import chalk from 'chalk';
|
|
3
|
+
import { BaseCliError } from './errors.js';
|
|
2
4
|
export function getOutputOptions(opts) {
|
|
3
5
|
return {
|
|
4
6
|
json: Boolean(opts.json),
|
|
@@ -9,26 +11,31 @@ export function getOutputOptions(opts) {
|
|
|
9
11
|
export function outputItem(item, humanFormatter, essentialKeys, opts = {}) {
|
|
10
12
|
if (opts.ndjson) {
|
|
11
13
|
const data = opts.full || !essentialKeys ? item : pick(item, essentialKeys);
|
|
12
|
-
console.log(
|
|
14
|
+
console.log(formatNdjson([data]));
|
|
13
15
|
return;
|
|
14
16
|
}
|
|
15
17
|
if (opts.json) {
|
|
16
18
|
const data = opts.full || !essentialKeys ? item : pick(item, essentialKeys);
|
|
17
|
-
console.log(
|
|
19
|
+
console.log(formatJson(data));
|
|
18
20
|
return;
|
|
19
21
|
}
|
|
20
22
|
console.log(humanFormatter(item));
|
|
21
23
|
}
|
|
22
|
-
export function outputList(items, humanFormatter, essentialKeys, opts = {}, pagination) {
|
|
24
|
+
export function outputList(items, humanFormatter, essentialKeys, opts = {}, pagination, emptyMessage) {
|
|
25
|
+
if (items.length === 0 && emptyMessage !== undefined) {
|
|
26
|
+
printEmpty({ options: opts, message: emptyMessage });
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const project = (item) => (opts.full || !essentialKeys ? item : pick(item, essentialKeys));
|
|
23
30
|
if (opts.ndjson) {
|
|
31
|
+
// Stream item-by-item: avoids buffering the whole list and matches
|
|
32
|
+
// the canonical NDJSON contract (one record per write).
|
|
24
33
|
for (const item of items) {
|
|
25
|
-
|
|
26
|
-
console.log(JSON.stringify(data));
|
|
34
|
+
console.log(formatNdjson([project(item)]));
|
|
27
35
|
}
|
|
28
36
|
}
|
|
29
37
|
else if (opts.json) {
|
|
30
|
-
|
|
31
|
-
console.log(JSON.stringify(data, null, 2));
|
|
38
|
+
console.log(formatJson(items.map(project)));
|
|
32
39
|
}
|
|
33
40
|
else {
|
|
34
41
|
for (const item of items) {
|
|
@@ -47,14 +54,25 @@ function pick(obj, keys) {
|
|
|
47
54
|
}
|
|
48
55
|
return result;
|
|
49
56
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
57
|
+
function toCliError(codeOrError, message, hints) {
|
|
58
|
+
if (typeof codeOrError === 'string') {
|
|
59
|
+
return new BaseCliError(codeOrError, message ?? '', { hints });
|
|
60
|
+
}
|
|
61
|
+
return codeOrError;
|
|
62
|
+
}
|
|
63
|
+
export function formatError(codeOrError, message, hints) {
|
|
64
|
+
const err = toCliError(codeOrError, message, hints);
|
|
65
|
+
const lines = [`Error: ${err.code}`, err.message];
|
|
66
|
+
if (err.hints && err.hints.length > 0) {
|
|
53
67
|
lines.push('');
|
|
54
|
-
for (const hint of hints) {
|
|
68
|
+
for (const hint of err.hints) {
|
|
55
69
|
lines.push(` - ${hint}`);
|
|
56
70
|
}
|
|
57
71
|
}
|
|
58
72
|
return chalk.red(lines.join('\n'));
|
|
59
73
|
}
|
|
74
|
+
export function formatErrorJson(codeOrError, message, hints) {
|
|
75
|
+
const err = toCliError(codeOrError, message, hints);
|
|
76
|
+
return JSON.stringify({ error: { code: err.code, message: err.message, hints: err.hints } });
|
|
77
|
+
}
|
|
60
78
|
//# sourceMappingURL=output.js.map
|
package/dist/lib/output.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export declare const SKILL_NAME = "outline-cli";
|
|
2
2
|
export declare const SKILL_DESCRIPTION = "Search and manage Outline wiki documents and collections via the ol CLI";
|
|
3
|
-
export declare const SKILL_CONTENT = "# Outline CLI (ol)\n\nUse this skill when the user wants to interact with their Outline wiki/knowledge base.\n\n## Quick Reference\n\n- `ol search \"query\"` - Search documents\n- `ol doc list` - List documents\n- `ol doc get <id>` - Read a document\n- `ol doc open <id>` - Open document in browser\n- `ol doc create --title \"Title\" --collection <id>` - Create document\n- `ol col list` - List collections\n\n## Output Formats\n\nAll list commands support:\n- `--json` - JSON output (essential fields)\n- `--ndjson` - Newline-delimited JSON (streaming)\n- `--full` - Include all fields in JSON\n\n## Document References\n\nDocuments can be referenced by:\n- URL ID (the slug suffix after the last hyphen)\n- Full Outline URL (auto-extracted)\n- Document ID\n\n## Commands\n\n### Search\n```bash\nol search \"query\"\nol search \"query\" --limit 10\nol search \"query\" --collection <id>\nol search \"query\" --status published\nol search \"query\" --json\n```\n\n### Documents\n```bash\nol doc list --collection <id> --limit 25\nol doc list --sort title --direction ASC\nol doc get <id> # Rendered markdown\nol doc get <id> --raw # Raw markdown\nol doc get <id> --json\nol doc open <id> # Open in browser\nol doc create --title \"Title\" --collection <id> --text \"# Content\"\nol doc create --title \"Title\" --parent <ref> --text \"# Content\" # Nest under parent (collection inferred)\nol doc create --title \"Title\" --collection <id> --file ./doc.md\nol doc update <id> --title \"New Title\"\nol doc update <id> --file ./updated.md\nol doc move <id> --collection <target-id> # Move to collection root\nol doc move <id> --parent <ref> # Nest under parent (collection inferred)\nol doc archive <id>\nol doc unarchive <id>\nol doc delete <id> --confirm\n```\n\n### Collections\n```bash\nol col list\nol col get <id>\nol col create --name \"Name\" --description \"Desc\" --color \"#hex\"\nol col create --name \"Private\" --private\nol col update <id> --name \"New Name\"\nol col delete <id> --confirm\n```\n\n### Authentication\n```bash\nol auth login
|
|
3
|
+
export declare const SKILL_CONTENT = "# Outline CLI (ol)\n\nUse this skill when the user wants to interact with their Outline wiki/knowledge base.\n\n## Quick Reference\n\n- `ol search \"query\"` - Search documents\n- `ol doc list` - List documents\n- `ol doc get <id>` - Read a document\n- `ol doc open <id>` - Open document in browser\n- `ol doc create --title \"Title\" --collection <id>` - Create document\n- `ol col list` - List collections\n\n## Output Formats\n\nAll list commands support:\n- `--json` - JSON output (essential fields)\n- `--ndjson` - Newline-delimited JSON (streaming)\n- `--full` - Include all fields in JSON\n\n## Document References\n\nDocuments can be referenced by:\n- URL ID (the slug suffix after the last hyphen)\n- Full Outline URL (auto-extracted)\n- Document ID\n\n## Commands\n\n### Search\n```bash\nol search \"query\"\nol search \"query\" --limit 10\nol search \"query\" --collection <id>\nol search \"query\" --status published\nol search \"query\" --json\n```\n\n### Documents\n```bash\nol doc list --collection <id> --limit 25\nol doc list --sort title --direction ASC\nol doc get <id> # Rendered markdown\nol doc get <id> --raw # Raw markdown\nol doc get <id> --json\nol doc open <id> # Open in browser\nol doc create --title \"Title\" --collection <id> --text \"# Content\"\nol doc create --title \"Title\" --parent <ref> --text \"# Content\" # Nest under parent (collection inferred)\nol doc create --title \"Title\" --collection <id> --file ./doc.md\nol doc update <id> --title \"New Title\"\nol doc update <id> --file ./updated.md\nol doc move <id> --collection <target-id> # Move to collection root\nol doc move <id> --parent <ref> # Nest under parent (collection inferred)\nol doc archive <id>\nol doc unarchive <id>\nol doc delete <id> --confirm\n```\n\n### Collections\n```bash\nol col list\nol col get <id>\nol col create --name \"Name\" --description \"Desc\" --color \"#hex\"\nol col create --name \"Private\" --private\nol col update <id> --name \"New Name\"\nol col delete <id> --confirm\n```\n\n### Authentication\n```bash\nol auth login # OAuth login (opens browser); prompts for base URL + client ID if needed\nol auth login --base-url <url> # Specify Outline base URL for this login (saved for future use)\nol auth login --client-id <id> # Specify OAuth client ID for this login (saved for future use)\nol auth login --callback-port <port> # Override local OAuth callback port\nol auth login --read-only # Request read-only scopes (where supported by the Outline instance)\nol auth login --json | --ndjson # Machine-readable success envelope\nol auth status # Show current auth state\nol auth logout # Clear saved credentials\n```\n\n### Update & Changelog\n```bash\nol update # Update CLI to latest version\nol update --check # Check for updates without installing, show channel\nol update --check --json # Check for updates as a JSON envelope\nol update --check --ndjson # Check for updates as NDJSON output\nol update --channel # Show current update channel\nol update switch --stable # Switch to stable release channel\nol update switch --pre-release # Switch to pre-release (next) channel\nol changelog # Show recent changelog entries\nol changelog -n 3 # Show last 3 versions\n```\n\n## Examples\n\n### Find and read a document\n```bash\nol search \"onboarding\" --json | jq '.[0].document.urlId'\nol doc get <urlId>\n```\n\n### Create a document from a file\n```bash\nol doc create --title \"Meeting Notes\" --collection <id> --file ./notes.md --publish\n```\n\n### List all collections and their documents\n```bash\nol col list --json\nol doc list --collection <id> --sort title --direction ASC\n```\n\n### Bulk export with ndjson\n```bash\nol doc list --ndjson --full | jq -r '.title'\n```\n";
|
|
@@ -70,15 +70,22 @@ ol col delete <id> --confirm
|
|
|
70
70
|
|
|
71
71
|
### Authentication
|
|
72
72
|
\`\`\`bash
|
|
73
|
-
ol auth login
|
|
74
|
-
ol auth
|
|
75
|
-
ol auth
|
|
73
|
+
ol auth login # OAuth login (opens browser); prompts for base URL + client ID if needed
|
|
74
|
+
ol auth login --base-url <url> # Specify Outline base URL for this login (saved for future use)
|
|
75
|
+
ol auth login --client-id <id> # Specify OAuth client ID for this login (saved for future use)
|
|
76
|
+
ol auth login --callback-port <port> # Override local OAuth callback port
|
|
77
|
+
ol auth login --read-only # Request read-only scopes (where supported by the Outline instance)
|
|
78
|
+
ol auth login --json | --ndjson # Machine-readable success envelope
|
|
79
|
+
ol auth status # Show current auth state
|
|
80
|
+
ol auth logout # Clear saved credentials
|
|
76
81
|
\`\`\`
|
|
77
82
|
|
|
78
83
|
### Update & Changelog
|
|
79
84
|
\`\`\`bash
|
|
80
85
|
ol update # Update CLI to latest version
|
|
81
86
|
ol update --check # Check for updates without installing, show channel
|
|
87
|
+
ol update --check --json # Check for updates as a JSON envelope
|
|
88
|
+
ol update --check --ndjson # Check for updates as NDJSON output
|
|
82
89
|
ol update --channel # Show current update channel
|
|
83
90
|
ol update switch --stable # Switch to stable release channel
|
|
84
91
|
ol update switch --pre-release # Switch to pre-release (next) channel
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../../src/lib/skills/content.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,aAAa,CAAA;AACvC,MAAM,CAAC,MAAM,iBAAiB,GAC1B,yEAAyE,CAAA;AAE7E,MAAM,CAAC,MAAM,aAAa,GAAG
|
|
1
|
+
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../../src/lib/skills/content.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,aAAa,CAAA;AACvC,MAAM,CAAC,MAAM,iBAAiB,GAC1B,yEAAyE,CAAA;AAE7E,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoH5B,CAAA"}
|
package/dist/lib/spinner.d.ts
CHANGED
|
@@ -1,13 +1,2 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
3
|
-
color?: 'green' | 'yellow' | 'blue' | 'red';
|
|
4
|
-
noSpinner?: boolean;
|
|
5
|
-
}
|
|
6
|
-
export declare class LoadingSpinner {
|
|
7
|
-
private spinnerInstance;
|
|
8
|
-
start(options: SpinnerOptions): this;
|
|
9
|
-
succeed(text?: string): void;
|
|
10
|
-
fail(text?: string): void;
|
|
11
|
-
stop(): void;
|
|
12
|
-
}
|
|
13
|
-
export declare function withSpinner<T>(options: SpinnerOptions, asyncOperation: () => Promise<T>): Promise<T>;
|
|
1
|
+
export type { SpinnerColor, SpinnerOptions } from '@doist/cli-core';
|
|
2
|
+
export declare const LoadingSpinner: new () => import("@doist/cli-core").LoadingSpinner, withSpinner: <T>(options: import("@doist/cli-core").SpinnerOptions, op: () => Promise<T>) => Promise<T>, startEarlySpinner: (text?: string) => void, stopEarlySpinner: () => void;
|
package/dist/lib/spinner.js
CHANGED
|
@@ -1,56 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
return true;
|
|
6
|
-
if (process.env.CI)
|
|
7
|
-
return true;
|
|
8
|
-
const args = process.argv;
|
|
9
|
-
if (args.includes('--json') || args.includes('--ndjson') || args.includes('--no-spinner')) {
|
|
10
|
-
return true;
|
|
11
|
-
}
|
|
12
|
-
return false;
|
|
13
|
-
}
|
|
14
|
-
export class LoadingSpinner {
|
|
15
|
-
spinnerInstance = null;
|
|
16
|
-
start(options) {
|
|
17
|
-
if (!process.stdout.isTTY || options.noSpinner || shouldDisableSpinner()) {
|
|
18
|
-
return this;
|
|
19
|
-
}
|
|
20
|
-
const colorFn = chalk[options.color || 'blue'];
|
|
21
|
-
this.spinnerInstance = yoctoSpinner({ text: colorFn(options.text) });
|
|
22
|
-
this.spinnerInstance.start();
|
|
23
|
-
return this;
|
|
24
|
-
}
|
|
25
|
-
succeed(text) {
|
|
26
|
-
if (this.spinnerInstance) {
|
|
27
|
-
this.spinnerInstance.success(text ? chalk.green(`✓ ${text}`) : undefined);
|
|
28
|
-
this.spinnerInstance = null;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
fail(text) {
|
|
32
|
-
if (this.spinnerInstance) {
|
|
33
|
-
this.spinnerInstance.error(text ? chalk.red(`✗ ${text}`) : undefined);
|
|
34
|
-
this.spinnerInstance = null;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
stop() {
|
|
38
|
-
if (this.spinnerInstance) {
|
|
39
|
-
this.spinnerInstance.stop();
|
|
40
|
-
this.spinnerInstance = null;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
export async function withSpinner(options, asyncOperation) {
|
|
45
|
-
const spinner = new LoadingSpinner().start(options);
|
|
46
|
-
try {
|
|
47
|
-
const result = await asyncOperation();
|
|
48
|
-
spinner.stop();
|
|
49
|
-
return result;
|
|
50
|
-
}
|
|
51
|
-
catch (error) {
|
|
52
|
-
spinner.fail();
|
|
53
|
-
throw error;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
1
|
+
import { createSpinner } from '@doist/cli-core';
|
|
2
|
+
import { shouldDisableSpinner } from './global-args.js';
|
|
3
|
+
const spinner = createSpinner({ isDisabled: shouldDisableSpinner });
|
|
4
|
+
export const { LoadingSpinner, withSpinner, startEarlySpinner, stopEarlySpinner } = spinner;
|
|
56
5
|
//# sourceMappingURL=spinner.js.map
|
package/dist/lib/spinner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../src/lib/spinner.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../src/lib/spinner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAIvD,MAAM,OAAO,GAAG,aAAa,CAAC,EAAE,UAAU,EAAE,oBAAoB,EAAE,CAAC,CAAA;AAEnE,MAAM,CAAC,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@doist/outline-cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.0",
|
|
4
4
|
"description": "CLI for the Outline wiki/knowledge base API",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -48,13 +48,13 @@
|
|
|
48
48
|
"node": ">=20.18.1"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
+
"@doist/cli-core": "0.12.0",
|
|
51
52
|
"chalk": "5.6.2",
|
|
52
53
|
"commander": "14.0.2",
|
|
53
|
-
"marked": "
|
|
54
|
-
"marked-terminal": "
|
|
54
|
+
"marked": "18.0.3",
|
|
55
|
+
"marked-terminal-renderer": "2.2.0",
|
|
55
56
|
"open": "10.2.0",
|
|
56
|
-
"undici": "7.22.0"
|
|
57
|
-
"yocto-spinner": "1.0.0"
|
|
57
|
+
"undici": "7.22.0"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
60
60
|
"@semantic-release/changelog": "6.0.3",
|
|
@@ -66,6 +66,6 @@
|
|
|
66
66
|
"oxlint": "1.57.0",
|
|
67
67
|
"semantic-release": "25.0.3",
|
|
68
68
|
"typescript": "5.9.3",
|
|
69
|
-
"vitest": "4.
|
|
69
|
+
"vitest": "4.1.5"
|
|
70
70
|
}
|
|
71
71
|
}
|
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
import { spawn } from 'node:child_process';
|
|
2
|
-
import chalk from 'chalk';
|
|
3
|
-
import packageJson from '../../../package.json' with { type: 'json' };
|
|
4
|
-
import { withSpinner } from '../../lib/spinner.js';
|
|
5
|
-
import { getUpdateChannel } from '../../lib/update-config.js';
|
|
6
|
-
import { fetchWithRetry } from '../../transport/fetch-with-retry.js';
|
|
7
|
-
const PACKAGE_NAME = '@doist/outline-cli';
|
|
8
|
-
function getInstallTag(channel) {
|
|
9
|
-
return channel === 'pre-release' ? 'next' : 'latest';
|
|
10
|
-
}
|
|
11
|
-
function parseVersion(version) {
|
|
12
|
-
const [core, ...rest] = version.split('-');
|
|
13
|
-
const [major, minor, patch] = core.split('.').map(Number);
|
|
14
|
-
return { major, minor, patch, prerelease: rest.length > 0 ? rest.join('-') : undefined };
|
|
15
|
-
}
|
|
16
|
-
/** Returns true when `candidate` is strictly newer than `current` per semver. */
|
|
17
|
-
function isNewer(current, candidate) {
|
|
18
|
-
const a = parseVersion(current);
|
|
19
|
-
const b = parseVersion(candidate);
|
|
20
|
-
// Compare major.minor.patch
|
|
21
|
-
for (const key of ['major', 'minor', 'patch']) {
|
|
22
|
-
if (b[key] !== a[key])
|
|
23
|
-
return b[key] > a[key];
|
|
24
|
-
}
|
|
25
|
-
// Equal core: release > pre-release
|
|
26
|
-
if (!a.prerelease && b.prerelease)
|
|
27
|
-
return false;
|
|
28
|
-
if (a.prerelease && !b.prerelease)
|
|
29
|
-
return true;
|
|
30
|
-
// Both pre-release: numeric-aware comparison (handles "next.10" > "next.2" etc.)
|
|
31
|
-
if (a.prerelease && b.prerelease)
|
|
32
|
-
return b.prerelease.localeCompare(a.prerelease, undefined, { numeric: true }) > 0;
|
|
33
|
-
return false;
|
|
34
|
-
}
|
|
35
|
-
async function fetchVersion(channel) {
|
|
36
|
-
const tag = getInstallTag(channel);
|
|
37
|
-
const url = `https://registry.npmjs.org/${PACKAGE_NAME}/${tag}`;
|
|
38
|
-
const response = await fetchWithRetry({ url });
|
|
39
|
-
if (!response.ok) {
|
|
40
|
-
throw new Error(`Registry request failed (HTTP ${response.status})`);
|
|
41
|
-
}
|
|
42
|
-
const data = (await response.json());
|
|
43
|
-
return data.version;
|
|
44
|
-
}
|
|
45
|
-
function detectPackageManager() {
|
|
46
|
-
const execPath = process.env.npm_execpath || process.argv[1] || '';
|
|
47
|
-
if (execPath.includes('pnpm'))
|
|
48
|
-
return 'pnpm';
|
|
49
|
-
return 'npm';
|
|
50
|
-
}
|
|
51
|
-
function runInstall(pm, tag) {
|
|
52
|
-
const command = pm === 'pnpm' ? 'add' : 'install';
|
|
53
|
-
return new Promise((resolve, reject) => {
|
|
54
|
-
const child = spawn(pm, [command, '-g', `${PACKAGE_NAME}@${tag}`], {
|
|
55
|
-
stdio: ['ignore', 'ignore', 'pipe'],
|
|
56
|
-
shell: process.platform === 'win32',
|
|
57
|
-
});
|
|
58
|
-
let stderr = '';
|
|
59
|
-
child.stderr?.on('data', (data) => {
|
|
60
|
-
stderr += data.toString();
|
|
61
|
-
});
|
|
62
|
-
child.on('error', reject);
|
|
63
|
-
child.on('close', (code) => resolve({ exitCode: code ?? 1, stderr }));
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
function channelLabel(channel) {
|
|
67
|
-
return channel === 'pre-release' ? ` ${chalk.magenta('(pre-release)')}` : '';
|
|
68
|
-
}
|
|
69
|
-
export async function updateAction(options) {
|
|
70
|
-
if (options.check && options.channel) {
|
|
71
|
-
console.error(chalk.red('Error:'), 'Specify either --check or --channel, not both.');
|
|
72
|
-
process.exitCode = 1;
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
if (options.channel) {
|
|
76
|
-
const ch = getUpdateChannel();
|
|
77
|
-
if (ch === 'pre-release') {
|
|
78
|
-
console.log(`Update channel: ${chalk.magenta('pre-release')}`);
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
console.log(`Update channel: ${chalk.green('stable')}`);
|
|
82
|
-
}
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
|
-
const channel = getUpdateChannel();
|
|
86
|
-
const tag = getInstallTag(channel);
|
|
87
|
-
const label = channelLabel(channel);
|
|
88
|
-
const currentVersion = packageJson.version;
|
|
89
|
-
let latestVersion;
|
|
90
|
-
try {
|
|
91
|
-
latestVersion = await withSpinner({ text: `Checking for updates${label}...`, color: 'blue' }, () => fetchVersion(channel));
|
|
92
|
-
}
|
|
93
|
-
catch (error) {
|
|
94
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
95
|
-
console.error(chalk.red('Error:'), `Failed to check for updates: ${message}`);
|
|
96
|
-
process.exitCode = 1;
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
const updateAvailable = isNewer(currentVersion, latestVersion);
|
|
100
|
-
if (options.check) {
|
|
101
|
-
const channelLine = channel === 'pre-release'
|
|
102
|
-
? ` Channel: ${chalk.magenta('pre-release')}`
|
|
103
|
-
: ` Channel: ${chalk.green('stable')}`;
|
|
104
|
-
if (currentVersion === latestVersion) {
|
|
105
|
-
console.log(chalk.green('✓'), `Already up to date (v${currentVersion})`);
|
|
106
|
-
}
|
|
107
|
-
else if (updateAvailable) {
|
|
108
|
-
console.log(`Update available: ${chalk.dim(`v${currentVersion}`)} → ${chalk.green(`v${latestVersion}`)}`);
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
console.log(`Downgrade available: ${chalk.dim(`v${currentVersion}`)} → ${chalk.yellow(`v${latestVersion}`)}`);
|
|
112
|
-
}
|
|
113
|
-
console.log(channelLine);
|
|
114
|
-
return;
|
|
115
|
-
}
|
|
116
|
-
if (currentVersion === latestVersion) {
|
|
117
|
-
console.log(chalk.green('✓'), `Already up to date${label} (v${currentVersion})`);
|
|
118
|
-
return;
|
|
119
|
-
}
|
|
120
|
-
if (updateAvailable) {
|
|
121
|
-
console.log(`Update available${label}: ${chalk.dim(`v${currentVersion}`)} → ${chalk.green(`v${latestVersion}`)}`);
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
console.log(`Downgrade available${label}: ${chalk.dim(`v${currentVersion}`)} → ${chalk.yellow(`v${latestVersion}`)}`);
|
|
125
|
-
}
|
|
126
|
-
const pm = detectPackageManager();
|
|
127
|
-
let result;
|
|
128
|
-
try {
|
|
129
|
-
result = await withSpinner({ text: `Updating to v${latestVersion}${label}...`, color: 'blue' }, () => runInstall(pm, tag));
|
|
130
|
-
}
|
|
131
|
-
catch (error) {
|
|
132
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
133
|
-
console.error(chalk.red('Error:'), `Install failed: ${message}`);
|
|
134
|
-
process.exitCode = 1;
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
137
|
-
if (result.exitCode !== 0) {
|
|
138
|
-
if (result.stderr &&
|
|
139
|
-
(result.stderr.includes('EACCES') || result.stderr.includes('EPERM'))) {
|
|
140
|
-
console.error(chalk.red('Error:'), 'Permission denied. Try running with sudo:');
|
|
141
|
-
console.error(chalk.dim(` sudo ${pm} ${pm === 'pnpm' ? 'add' : 'install'} -g ${PACKAGE_NAME}@${tag}`));
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
144
|
-
console.error(chalk.red('Error:'), `${pm} exited with code ${result.exitCode}`);
|
|
145
|
-
if (result.stderr) {
|
|
146
|
-
console.error(chalk.dim(result.stderr.trim()));
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
process.exitCode = 1;
|
|
150
|
-
return;
|
|
151
|
-
}
|
|
152
|
-
console.log(chalk.green('✓'), `Updated to v${latestVersion}${label}`);
|
|
153
|
-
if (channel === 'stable') {
|
|
154
|
-
console.log(chalk.dim(' Run'), chalk.cyan('ol changelog'), chalk.dim('to see what changed'));
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
//# sourceMappingURL=action.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"action.js","sourceRoot":"","sources":["../../../src/commands/update/action.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
|
-
import { setUpdateChannel } from '../../lib/update-config.js';
|
|
3
|
-
export function switchChannel(options) {
|
|
4
|
-
if (options.stable && options.preRelease) {
|
|
5
|
-
console.error(chalk.red('Error:'), 'Specify either --stable or --pre-release, not both.');
|
|
6
|
-
process.exitCode = 1;
|
|
7
|
-
return;
|
|
8
|
-
}
|
|
9
|
-
if (!options.stable && !options.preRelease) {
|
|
10
|
-
console.error(chalk.red('Error:'), 'Specify --stable or --pre-release.');
|
|
11
|
-
process.exitCode = 1;
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
const channel = options.preRelease ? 'pre-release' : 'stable';
|
|
15
|
-
setUpdateChannel(channel);
|
|
16
|
-
if (channel === 'pre-release') {
|
|
17
|
-
console.log(chalk.green('✓'), `Update channel set to ${chalk.magenta('pre-release')}`);
|
|
18
|
-
console.log();
|
|
19
|
-
console.log(chalk.yellow('Note:'), 'Pre-release updates follow the', chalk.cyan('next'), 'branch.');
|
|
20
|
-
console.log('When pre-release changes are merged into a stable release, no further');
|
|
21
|
-
console.log('pre-release updates will be published until a new pre-release cycle begins.');
|
|
22
|
-
console.log('Remember to switch back to stable when done:');
|
|
23
|
-
console.log(chalk.dim(' ol update switch --stable'));
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
26
|
-
console.log(chalk.green('✓'), 'Update channel set to stable');
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
//# sourceMappingURL=switch.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"switch.js","sourceRoot":"","sources":["../../../src/commands/update/switch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,gBAAgB,EAAsB,MAAM,4BAA4B,CAAA;AAEjF,MAAM,UAAU,aAAa,CAAC,OAAmD;IAC7E,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,qDAAqD,CAAC,CAAA;QACzF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;QACpB,OAAM;IACV,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,oCAAoC,CAAC,CAAA;QACxE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;QACpB,OAAM;IACV,CAAC;IAED,MAAM,OAAO,GAAkB,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAA;IAE5E,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAEzB,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,yBAAyB,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA;QACtF,OAAO,CAAC,GAAG,EAAE,CAAA;QACb,OAAO,CAAC,GAAG,CACP,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EACrB,gCAAgC,EAChC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAClB,SAAS,CACZ,CAAA;QACD,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAA;QACpF,OAAO,CAAC,GAAG,CAAC,6EAA6E,CAAC,CAAA;QAC1F,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAA;QAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,CAAA;IACzD,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,8BAA8B,CAAC,CAAA;IACjE,CAAC;AACL,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
interface OAuthServerOptions {
|
|
2
|
-
state: string;
|
|
3
|
-
timeoutMs?: number;
|
|
4
|
-
port?: number;
|
|
5
|
-
}
|
|
6
|
-
export interface OAuthCallbackServer {
|
|
7
|
-
port: number;
|
|
8
|
-
redirectUri: string;
|
|
9
|
-
waitForCode: Promise<string>;
|
|
10
|
-
close: () => void;
|
|
11
|
-
}
|
|
12
|
-
export declare const DEFAULT_OAUTH_CALLBACK_PORT = 54969;
|
|
13
|
-
export declare function startOAuthCallbackServer(options: OAuthServerOptions): Promise<OAuthCallbackServer>;
|
|
14
|
-
export {};
|