kibela-api-client 0.2.0 → 0.2.2

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.
Files changed (74) hide show
  1. package/dist/cli/_validators.d.ts.map +1 -1
  2. package/dist/cli/_validators.js +13 -19
  3. package/dist/cli/_validators.js.map +1 -1
  4. package/dist/cli/commands/all.d.ts +1 -1
  5. package/dist/cli/commands/all.d.ts.map +1 -1
  6. package/dist/cli/commands/all.js +1 -1
  7. package/dist/cli/commands/all.js.map +1 -1
  8. package/dist/cli/commands/config.d.ts +1 -1
  9. package/dist/cli/commands/config.d.ts.map +1 -1
  10. package/dist/cli/commands/get.d.ts +1 -1
  11. package/dist/cli/commands/get.d.ts.map +1 -1
  12. package/dist/cli/commands/groups-simple.d.ts +1 -1
  13. package/dist/cli/commands/groups-simple.d.ts.map +1 -1
  14. package/dist/cli/commands/new.d.ts +1 -1
  15. package/dist/cli/commands/new.d.ts.map +1 -1
  16. package/dist/cli/commands/new.js +1 -1
  17. package/dist/cli/commands/new.js.map +1 -1
  18. package/dist/cli/commands/set.d.ts +1 -1
  19. package/dist/cli/commands/set.d.ts.map +1 -1
  20. package/dist/cli/commands/set.js +1 -1
  21. package/dist/cli/commands/set.js.map +1 -1
  22. package/dist/cli/commands/users.d.ts +1 -1
  23. package/dist/cli/commands/users.d.ts.map +1 -1
  24. package/dist/cli/core/command.d.ts +45 -0
  25. package/dist/cli/core/command.d.ts.map +1 -0
  26. package/dist/cli/core/command.js +237 -0
  27. package/dist/cli/core/command.js.map +1 -0
  28. package/dist/cli/index.js +2 -2
  29. package/dist/cli/index.js.map +1 -1
  30. package/dist/cli/sync/frontmatter.d.ts +30 -0
  31. package/dist/cli/sync/frontmatter.d.ts.map +1 -0
  32. package/dist/cli/sync/frontmatter.js +123 -0
  33. package/dist/cli/sync/frontmatter.js.map +1 -0
  34. package/dist/cli/sync/index.d.ts +3 -0
  35. package/dist/cli/sync/index.d.ts.map +1 -0
  36. package/dist/cli/sync/index.js +19 -0
  37. package/dist/cli/sync/index.js.map +1 -0
  38. package/dist/cli/sync/sync-client.d.ts +17 -0
  39. package/dist/cli/sync/sync-client.d.ts.map +1 -0
  40. package/dist/cli/sync/sync-client.js +158 -0
  41. package/dist/cli/sync/sync-client.js.map +1 -0
  42. package/dist/cli/utils/index.d.ts +12 -0
  43. package/dist/cli/utils/index.d.ts.map +1 -0
  44. package/dist/cli/utils/index.js +58 -0
  45. package/dist/cli/utils/index.js.map +1 -0
  46. package/dist/core/index.d.ts +0 -1
  47. package/dist/core/index.d.ts.map +1 -1
  48. package/dist/core/index.js +0 -1
  49. package/dist/core/index.js.map +1 -1
  50. package/package.json +1 -1
  51. package/dist/cli/commands/groups.d.ts +0 -3
  52. package/dist/cli/commands/groups.d.ts.map +0 -1
  53. package/dist/cli/commands/groups.js +0 -57
  54. package/dist/cli/commands/groups.js.map +0 -1
  55. package/dist/cli/commands/notes.d.ts +0 -3
  56. package/dist/cli/commands/notes.d.ts.map +0 -1
  57. package/dist/cli/commands/notes.js +0 -432
  58. package/dist/cli/commands/notes.js.map +0 -1
  59. package/dist/cli/commands/stats.d.ts +0 -3
  60. package/dist/cli/commands/stats.d.ts.map +0 -1
  61. package/dist/cli/commands/stats.js +0 -71
  62. package/dist/cli/commands/stats.js.map +0 -1
  63. package/dist/cli/commands/sync.d.ts +0 -3
  64. package/dist/cli/commands/sync.d.ts.map +0 -1
  65. package/dist/cli/commands/sync.js +0 -143
  66. package/dist/cli/commands/sync.js.map +0 -1
  67. package/dist/cli/commands/test.d.ts +0 -3
  68. package/dist/cli/commands/test.d.ts.map +0 -1
  69. package/dist/cli/commands/test.js +0 -19
  70. package/dist/cli/commands/test.js.map +0 -1
  71. package/dist/cli/commands/users-simple.d.ts +0 -3
  72. package/dist/cli/commands/users-simple.d.ts.map +0 -1
  73. package/dist/cli/commands/users-simple.js +0 -61
  74. package/dist/cli/commands/users-simple.js.map +0 -1
@@ -1,143 +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.syncCommand = syncCommand;
37
- const sync_client_1 = require("../../sync/sync-client");
38
- const config_1 = require("./config");
39
- const spinner_1 = require("../../core/terminal/spinner");
40
- const fs = __importStar(require("fs"));
41
- function syncCommand(program) {
42
- // Download command
43
- program
44
- .command('download')
45
- .option('-d, --dir <dir>', 'Directory to save notes', './notes')
46
- .option('-p, --prefix <prefix>', 'File prefix for notes', 'note-')
47
- .action(async ({ options }) => {
48
- const config = await (0, config_1.getConfig)();
49
- const spinner = new spinner_1.Spinner('Downloading notes from Kibela workspace...');
50
- try {
51
- spinner.start();
52
- const client = new sync_client_1.SyncClient({
53
- team: config.team,
54
- token: config.token,
55
- dir: options.dir,
56
- });
57
- await client.pull();
58
- spinner.succeed('All notes downloaded to local workspace');
59
- }
60
- catch (error) {
61
- spinner.fail(`Failed to pull notes: ${error instanceof Error ? error.message : error}`);
62
- process.exit(1);
63
- }
64
- });
65
- // Upload command
66
- program
67
- .command('upload <file>')
68
- .option('--draft', 'Upload as draft', false)
69
- .action(async ({ args, options }) => {
70
- const config = await (0, config_1.getConfig)();
71
- const filePath = args[0];
72
- const spinner = new spinner_1.Spinner(`Uploading ${filePath} to Kibela workspace...`);
73
- try {
74
- spinner.start();
75
- const client = new sync_client_1.SyncClient({
76
- team: config.team,
77
- token: config.token,
78
- });
79
- await client.push(filePath);
80
- spinner.succeed('Note uploaded to workspace successfully');
81
- }
82
- catch (error) {
83
- spinner.fail(`Failed to push note: ${error instanceof Error ? error.message : error}`);
84
- process.exit(1);
85
- }
86
- });
87
- // Create command
88
- program
89
- .command('create')
90
- .option('-f, --file <file>', 'File to create from (otherwise reads from stdin)')
91
- .option('-g, --groups <groups...>', 'Group IDs for the note')
92
- .action(async ({ options }) => {
93
- const config = await (0, config_1.getConfig)();
94
- const spinner = new spinner_1.Spinner('Creating new note in Kibela workspace...');
95
- try {
96
- let content;
97
- if (options.file) {
98
- if (!fs.existsSync(options.file)) {
99
- throw new Error(`File not found: ${options.file}`);
100
- }
101
- content = fs.readFileSync(options.file, 'utf8');
102
- }
103
- else {
104
- // Read from stdin
105
- content = await readStdin();
106
- if (!content) {
107
- throw new Error('No content provided. Use -f option or pipe content to stdin.');
108
- }
109
- }
110
- spinner.start();
111
- const client = new sync_client_1.SyncClient({
112
- team: config.team,
113
- token: config.token,
114
- });
115
- await client.publish(content);
116
- spinner.succeed('Note created in workspace successfully');
117
- }
118
- catch (error) {
119
- spinner.fail(`Failed to publish note: ${error instanceof Error ? error.message : error}`);
120
- process.exit(1);
121
- }
122
- });
123
- }
124
- function readStdin() {
125
- return new Promise((resolve, reject) => {
126
- if (process.stdin.isTTY) {
127
- resolve('');
128
- return;
129
- }
130
- let data = '';
131
- process.stdin.setEncoding('utf8');
132
- process.stdin.on('data', (chunk) => {
133
- data += chunk;
134
- });
135
- process.stdin.on('end', () => {
136
- resolve(data);
137
- });
138
- process.stdin.on('error', (err) => {
139
- reject(err);
140
- });
141
- });
142
- }
143
- //# sourceMappingURL=sync.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/cli/commands/sync.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare const testCommand: Command;
3
- //# sourceMappingURL=test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,WAAW,SAWnB,CAAC"}
@@ -1,19 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.testCommand = void 0;
4
- const commander_1 = require("commander");
5
- const utils_1 = require("../utils");
6
- const _error_handler_1 = require("../_error-handler");
7
- exports.testCommand = new commander_1.Command('test')
8
- .description('Test Kibela API connection')
9
- .action((0, _error_handler_1.wrapAsyncCommand)(async () => {
10
- const client = (0, utils_1.getClient)();
11
- try {
12
- const user = await client.users.getCurrentUser();
13
- (0, utils_1.success)(`Connected successfully! Hello, ${user.realName} (@${user.account})`);
14
- }
15
- catch (err) {
16
- throw err;
17
- }
18
- }));
19
- //# sourceMappingURL=test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test.js","sourceRoot":"","sources":["../../../src/cli/commands/test.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,oCAAqD;AACrD,sDAAqD;AAExC,QAAA,WAAW,GAAG,IAAI,mBAAO,CAAC,MAAM,CAAC;KAC3C,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,IAAA,iCAAgB,EAAC,KAAK,IAAI,EAAE;IAClC,MAAM,MAAM,GAAG,IAAA,iBAAS,GAAE,CAAC;IAE3B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QACjD,IAAA,eAAO,EAAC,kCAAkC,IAAI,CAAC,QAAQ,MAAM,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IAChF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC,CAAC,CAAC"}
@@ -1,3 +0,0 @@
1
- import { Command } from '../../core/cli/command';
2
- export declare function usersCommand(program: Command): void;
3
- //# sourceMappingURL=users-simple.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"users-simple.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/users-simple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAKjD,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwDnD"}
@@ -1,61 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.usersCommand = usersCommand;
4
- const utils_1 = require("../utils");
5
- const spinner_1 = require("../../core/terminal/spinner");
6
- const colors_1 = require("../../core/terminal/colors");
7
- function usersCommand(program) {
8
- const list = program.command('list', 'List all users');
9
- list
10
- .option('--all', 'Show all users without pagination')
11
- .action(async ({ options }) => {
12
- const spinner = new spinner_1.Spinner('Fetching users...');
13
- try {
14
- spinner.start();
15
- const client = (0, utils_1.getClient)();
16
- let users;
17
- if (options.all) {
18
- users = await client.users.getAll();
19
- }
20
- else {
21
- const result = await client.users.list({ first: 20 });
22
- users = result.nodes;
23
- }
24
- spinner.stop();
25
- console.log(`\nFound ${users.length} users:\n`);
26
- users.forEach((user) => {
27
- console.log(`${colors_1.colors.cyan(user.account)} - ${colors_1.colors.bold(user.realName || 'No name')}`);
28
- if (user.email) {
29
- console.log(` Email: ${user.email}`);
30
- }
31
- console.log();
32
- });
33
- }
34
- catch (error) {
35
- spinner.fail(`Failed: ${error instanceof Error ? error.message : error}`);
36
- process.exit(1);
37
- }
38
- });
39
- const me = program.command('me', 'Show current user info');
40
- me.action(async () => {
41
- const spinner = new spinner_1.Spinner('Fetching user info...');
42
- try {
43
- spinner.start();
44
- const client = (0, utils_1.getClient)();
45
- const user = await client.users.getCurrentUser();
46
- spinner.stop();
47
- console.log('\nCurrent User:');
48
- console.log(`Account: ${colors_1.colors.cyan(user.account)}`);
49
- console.log(`Name: ${colors_1.colors.bold(user.realName || 'No name')}`);
50
- if (user.email)
51
- console.log(`Email: ${user.email}`);
52
- if (user.avatarImage?.url)
53
- console.log(`Avatar: ${user.avatarImage.url}`);
54
- }
55
- catch (error) {
56
- spinner.fail(`Failed: ${error instanceof Error ? error.message : error}`);
57
- process.exit(1);
58
- }
59
- });
60
- }
61
- //# sourceMappingURL=users-simple.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"users-simple.js","sourceRoot":"","sources":["../../../src/cli/commands/users-simple.ts"],"names":[],"mappings":"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"}