kibela-api-client 0.1.9 → 0.2.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.
Files changed (111) hide show
  1. package/README.md +66 -78
  2. package/dist/cli/_error-handler.d.ts.map +1 -1
  3. package/dist/cli/_error-handler.js +5 -8
  4. package/dist/cli/_error-handler.js.map +1 -1
  5. package/dist/cli/_validators.d.ts +15 -38
  6. package/dist/cli/_validators.d.ts.map +1 -1
  7. package/dist/cli/_validators.js +148 -49
  8. package/dist/cli/_validators.js.map +1 -1
  9. package/dist/cli/commands/all.d.ts +3 -0
  10. package/dist/cli/commands/all.d.ts.map +1 -0
  11. package/dist/cli/commands/all.js +59 -0
  12. package/dist/cli/commands/all.js.map +1 -0
  13. package/dist/cli/commands/config.d.ts +6 -2
  14. package/dist/cli/commands/config.d.ts.map +1 -1
  15. package/dist/cli/commands/config.js +67 -62
  16. package/dist/cli/commands/config.js.map +1 -1
  17. package/dist/cli/commands/get.d.ts +3 -0
  18. package/dist/cli/commands/get.d.ts.map +1 -0
  19. package/dist/cli/commands/get.js +152 -0
  20. package/dist/cli/commands/get.js.map +1 -0
  21. package/dist/cli/commands/groups-simple.d.ts +3 -0
  22. package/dist/cli/commands/groups-simple.d.ts.map +1 -0
  23. package/dist/cli/commands/groups-simple.js +39 -0
  24. package/dist/cli/commands/groups-simple.js.map +1 -0
  25. package/dist/cli/commands/new.d.ts +3 -0
  26. package/dist/cli/commands/new.d.ts.map +1 -0
  27. package/dist/cli/commands/new.js +168 -0
  28. package/dist/cli/commands/new.js.map +1 -0
  29. package/dist/cli/commands/set.d.ts +3 -0
  30. package/dist/cli/commands/set.d.ts.map +1 -0
  31. package/dist/cli/commands/set.js +96 -0
  32. package/dist/cli/commands/set.js.map +1 -0
  33. package/dist/cli/commands/sync.d.ts +3 -0
  34. package/dist/cli/commands/sync.d.ts.map +1 -0
  35. package/dist/cli/commands/sync.js +143 -0
  36. package/dist/cli/commands/sync.js.map +1 -0
  37. package/dist/cli/commands/users-simple.d.ts +3 -0
  38. package/dist/cli/commands/users-simple.d.ts.map +1 -0
  39. package/dist/cli/commands/users-simple.js +61 -0
  40. package/dist/cli/commands/users-simple.js.map +1 -0
  41. package/dist/cli/commands/users.d.ts +2 -2
  42. package/dist/cli/commands/users.d.ts.map +1 -1
  43. package/dist/cli/commands/users.js +50 -65
  44. package/dist/cli/commands/users.js.map +1 -1
  45. package/dist/cli/config.js +7 -7
  46. package/dist/cli/config.js.map +1 -1
  47. package/dist/cli/index.js +29 -13
  48. package/dist/cli/index.js.map +1 -1
  49. package/dist/cli/utils/frontmatter.d.ts +3 -0
  50. package/dist/cli/utils/frontmatter.d.ts.map +1 -0
  51. package/dist/cli/utils/frontmatter.js +89 -0
  52. package/dist/cli/utils/frontmatter.js.map +1 -0
  53. package/dist/cli/utils.d.ts +2 -2
  54. package/dist/cli/utils.d.ts.map +1 -1
  55. package/dist/cli/utils.js +7 -13
  56. package/dist/cli/utils.js.map +1 -1
  57. package/dist/client/index.js +2 -2
  58. package/dist/client/index.js.map +1 -1
  59. package/dist/core/cli/command.d.ts +45 -0
  60. package/dist/core/cli/command.d.ts.map +1 -0
  61. package/dist/core/cli/command.js +237 -0
  62. package/dist/core/cli/command.js.map +1 -0
  63. package/dist/core/env.d.ts +9 -0
  64. package/dist/core/env.d.ts.map +1 -0
  65. package/dist/core/env.js +96 -0
  66. package/dist/core/env.js.map +1 -0
  67. package/dist/core/graphql/client.d.ts +29 -0
  68. package/dist/core/graphql/client.d.ts.map +1 -0
  69. package/dist/core/graphql/client.js +41 -0
  70. package/dist/core/graphql/client.js.map +1 -0
  71. package/dist/core/http/client.d.ts +16 -0
  72. package/dist/core/http/client.d.ts.map +1 -0
  73. package/dist/core/http/client.js +87 -0
  74. package/dist/core/http/client.js.map +1 -0
  75. package/dist/core/index.d.ts +9 -0
  76. package/dist/core/index.d.ts.map +1 -0
  77. package/dist/core/index.js +25 -0
  78. package/dist/core/index.js.map +1 -0
  79. package/dist/core/terminal/colors.d.ts +29 -0
  80. package/dist/core/terminal/colors.d.ts.map +1 -0
  81. package/dist/core/terminal/colors.js +66 -0
  82. package/dist/core/terminal/colors.js.map +1 -0
  83. package/dist/core/terminal/prompt.d.ts +22 -0
  84. package/dist/core/terminal/prompt.d.ts.map +1 -0
  85. package/dist/core/terminal/prompt.js +189 -0
  86. package/dist/core/terminal/prompt.js.map +1 -0
  87. package/dist/core/terminal/spinner.d.ts +17 -0
  88. package/dist/core/terminal/spinner.d.ts.map +1 -0
  89. package/dist/core/terminal/spinner.js +79 -0
  90. package/dist/core/terminal/spinner.js.map +1 -0
  91. package/dist/core/validation/validator.d.ts +26 -0
  92. package/dist/core/validation/validator.d.ts.map +1 -0
  93. package/dist/core/validation/validator.js +100 -0
  94. package/dist/core/validation/validator.js.map +1 -0
  95. package/dist/queries/notes.d.ts +10 -1
  96. package/dist/queries/notes.d.ts.map +1 -1
  97. package/dist/queries/notes.js +13 -13
  98. package/dist/queries/notes.js.map +1 -1
  99. package/dist/sync/frontmatter.d.ts +30 -0
  100. package/dist/sync/frontmatter.d.ts.map +1 -0
  101. package/dist/sync/frontmatter.js +123 -0
  102. package/dist/sync/frontmatter.js.map +1 -0
  103. package/dist/sync/index.d.ts +3 -0
  104. package/dist/sync/index.d.ts.map +1 -0
  105. package/dist/sync/index.js +19 -0
  106. package/dist/sync/index.js.map +1 -0
  107. package/dist/sync/sync-client.d.ts +17 -0
  108. package/dist/sync/sync-client.d.ts.map +1 -0
  109. package/dist/sync/sync-client.js +158 -0
  110. package/dist/sync/sync-client.js.map +1 -0
  111. package/package.json +2 -12
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GraphQLClient = void 0;
4
+ const client_1 = require("../http/client");
5
+ class GraphQLClient {
6
+ constructor(endpoint, options = {}) {
7
+ this.httpClient = new client_1.HttpClient();
8
+ this.endpoint = endpoint;
9
+ this.headers = options.headers || {};
10
+ }
11
+ async request(query, variables) {
12
+ const body = JSON.stringify({
13
+ query,
14
+ variables,
15
+ });
16
+ const response = await this.httpClient.post(this.endpoint, body, {
17
+ ...this.headers,
18
+ 'Content-Type': 'application/json',
19
+ });
20
+ if (response.statusCode !== 200) {
21
+ throw new Error(`GraphQL request failed with status ${response.statusCode}: ${response.body}`);
22
+ }
23
+ const result = JSON.parse(response.body);
24
+ if (result.errors && result.errors.length > 0) {
25
+ const errorMessages = result.errors.map(e => e.message).join(', ');
26
+ throw new Error(`GraphQL errors: ${errorMessages}`);
27
+ }
28
+ if (!result.data) {
29
+ throw new Error('No data returned from GraphQL query');
30
+ }
31
+ return result.data;
32
+ }
33
+ setHeader(key, value) {
34
+ this.headers[key] = value;
35
+ }
36
+ setHeaders(headers) {
37
+ this.headers = { ...this.headers, ...headers };
38
+ }
39
+ }
40
+ exports.GraphQLClient = GraphQLClient;
41
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/core/graphql/client.ts"],"names":[],"mappings":";;;AAAA,2CAA4C;AAqB5C,MAAa,aAAa;IAKxB,YAAY,QAAgB,EAAE,UAAgD,EAAE;QAC9E,IAAI,CAAC,UAAU,GAAG,IAAI,mBAAU,EAAE,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,OAAO,CACX,KAAa,EACb,SAA+B;QAE/B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;YAC1B,KAAK;YACL,SAAS;SACV,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE;YAC/D,GAAG,IAAI,CAAC,OAAO;YACf,cAAc,EAAE,kBAAkB;SACnC,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,sCAAsC,QAAQ,CAAC,UAAU,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACjG,CAAC;QAED,MAAM,MAAM,GAAuB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAE7D,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnE,MAAM,IAAI,KAAK,CAAC,mBAAmB,aAAa,EAAE,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,SAAS,CAAC,GAAW,EAAE,KAAa;QAClC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED,UAAU,CAAC,OAA+B;QACxC,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;IACjD,CAAC;CACF;AAlDD,sCAkDC"}
@@ -0,0 +1,16 @@
1
+ export interface HttpOptions {
2
+ method?: string;
3
+ headers?: Record<string, string>;
4
+ body?: string;
5
+ }
6
+ export interface HttpResponse {
7
+ statusCode: number;
8
+ headers: Record<string, string | string[]>;
9
+ body: string;
10
+ }
11
+ export declare class HttpClient {
12
+ request(url: string, options?: HttpOptions): Promise<HttpResponse>;
13
+ get(url: string, headers?: Record<string, string>): Promise<HttpResponse>;
14
+ post(url: string, body: string, headers?: Record<string, string>): Promise<HttpResponse>;
15
+ }
16
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/core/http/client.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IAC3C,IAAI,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,UAAU;IACf,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,YAAY,CAAC;IAgDtE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IAIzE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;CAG/F"}
@@ -0,0 +1,87 @@
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.HttpClient = void 0;
37
+ const https = __importStar(require("https"));
38
+ const url_1 = require("url");
39
+ class HttpClient {
40
+ async request(url, options = {}) {
41
+ return new Promise((resolve, reject) => {
42
+ const parsedUrl = new url_1.URL(url);
43
+ const headers = {
44
+ 'User-Agent': 'kibela-api-client',
45
+ 'Content-Type': 'application/json',
46
+ ...options.headers,
47
+ };
48
+ if (options.body) {
49
+ headers['Content-Length'] = Buffer.byteLength(options.body).toString();
50
+ }
51
+ const reqOptions = {
52
+ hostname: parsedUrl.hostname,
53
+ path: parsedUrl.pathname + parsedUrl.search,
54
+ method: options.method || 'GET',
55
+ headers,
56
+ };
57
+ const req = https.request(reqOptions, (res) => {
58
+ let body = '';
59
+ res.on('data', (chunk) => {
60
+ body += chunk;
61
+ });
62
+ res.on('end', () => {
63
+ resolve({
64
+ statusCode: res.statusCode || 0,
65
+ headers: res.headers,
66
+ body,
67
+ });
68
+ });
69
+ });
70
+ req.on('error', (err) => {
71
+ reject(new Error(`HTTP request failed: ${err.message}`));
72
+ });
73
+ if (options.body) {
74
+ req.write(options.body);
75
+ }
76
+ req.end();
77
+ });
78
+ }
79
+ async get(url, headers) {
80
+ return this.request(url, { method: 'GET', headers });
81
+ }
82
+ async post(url, body, headers) {
83
+ return this.request(url, { method: 'POST', body, headers });
84
+ }
85
+ }
86
+ exports.HttpClient = HttpClient;
87
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/core/http/client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAC/B,6BAA0B;AAc1B,MAAa,UAAU;IACrB,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,UAAuB,EAAE;QAClD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,SAAS,GAAG,IAAI,SAAG,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,OAAO,GAA2B;gBACtC,YAAY,EAAE,mBAAmB;gBACjC,cAAc,EAAE,kBAAkB;gBAClC,GAAG,OAAO,CAAC,OAAO;aACnB,CAAC;YAEF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YACzE,CAAC;YAED,MAAM,UAAU,GAAG;gBACjB,QAAQ,EAAE,SAAS,CAAC,QAAQ;gBAC5B,IAAI,EAAE,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,MAAM;gBAC3C,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;gBAC/B,OAAO;aACR,CAAC;YAEF,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC5C,IAAI,IAAI,GAAG,EAAE,CAAC;gBAEd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;oBACvB,IAAI,IAAI,KAAK,CAAC;gBAChB,CAAC,CAAC,CAAC;gBAEH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;oBACjB,OAAO,CAAC;wBACN,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,CAAC;wBAC/B,OAAO,EAAE,GAAG,CAAC,OAA4C;wBACzD,IAAI;qBACL,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACtB,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAC;YAEH,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;YAED,GAAG,CAAC,GAAG,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,OAAgC;QACrD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAW,EAAE,IAAY,EAAE,OAAgC;QACpE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9D,CAAC;CACF;AAxDD,gCAwDC"}
@@ -0,0 +1,9 @@
1
+ export * from './http/client';
2
+ export * from './graphql/client';
3
+ export * from './cli/command';
4
+ export * from './terminal/colors';
5
+ export * from './terminal/spinner';
6
+ export * from './terminal/prompt';
7
+ export * from './validation/validator';
8
+ export * from './env';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,OAAO,CAAC"}
@@ -0,0 +1,25 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./http/client"), exports);
18
+ __exportStar(require("./graphql/client"), exports);
19
+ __exportStar(require("./cli/command"), exports);
20
+ __exportStar(require("./terminal/colors"), exports);
21
+ __exportStar(require("./terminal/spinner"), exports);
22
+ __exportStar(require("./terminal/prompt"), exports);
23
+ __exportStar(require("./validation/validator"), exports);
24
+ __exportStar(require("./env"), exports);
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,mDAAiC;AACjC,gDAA8B;AAC9B,oDAAkC;AAClC,qDAAmC;AACnC,oDAAkC;AAClC,yDAAuC;AACvC,wCAAsB"}
@@ -0,0 +1,29 @@
1
+ type ColorFn = (text: string) => string;
2
+ export declare const colors: {
3
+ reset: ColorFn;
4
+ bold: ColorFn;
5
+ dim: ColorFn;
6
+ black: ColorFn;
7
+ red: ColorFn;
8
+ green: ColorFn;
9
+ yellow: ColorFn;
10
+ blue: ColorFn;
11
+ magenta: ColorFn;
12
+ cyan: ColorFn;
13
+ white: ColorFn;
14
+ gray: ColorFn;
15
+ bgBlack: ColorFn;
16
+ bgRed: ColorFn;
17
+ bgGreen: ColorFn;
18
+ bgYellow: ColorFn;
19
+ bgBlue: ColorFn;
20
+ bgMagenta: ColorFn;
21
+ bgCyan: ColorFn;
22
+ bgWhite: ColorFn;
23
+ error: ColorFn;
24
+ success: ColorFn;
25
+ warning: ColorFn;
26
+ info: ColorFn;
27
+ };
28
+ export {};
29
+ //# sourceMappingURL=colors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../../src/core/terminal/colors.ts"],"names":[],"mappings":"AA2BA,KAAK,OAAO,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;AAYxC,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;CA+BlB,CAAC"}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.colors = void 0;
4
+ const ANSI_CODES = {
5
+ reset: '\x1b[0m',
6
+ bold: '\x1b[1m',
7
+ dim: '\x1b[2m',
8
+ // Foreground colors
9
+ black: '\x1b[30m',
10
+ red: '\x1b[31m',
11
+ green: '\x1b[32m',
12
+ yellow: '\x1b[33m',
13
+ blue: '\x1b[34m',
14
+ magenta: '\x1b[35m',
15
+ cyan: '\x1b[36m',
16
+ white: '\x1b[37m',
17
+ gray: '\x1b[90m',
18
+ // Background colors
19
+ bgBlack: '\x1b[40m',
20
+ bgRed: '\x1b[41m',
21
+ bgGreen: '\x1b[42m',
22
+ bgYellow: '\x1b[43m',
23
+ bgBlue: '\x1b[44m',
24
+ bgMagenta: '\x1b[45m',
25
+ bgCyan: '\x1b[46m',
26
+ bgWhite: '\x1b[47m',
27
+ };
28
+ const createColorFn = (code) => {
29
+ return (text) => {
30
+ // Check if colors are disabled
31
+ if (process.env.NO_COLOR || !process.stdout.isTTY) {
32
+ return text;
33
+ }
34
+ return `${code}${text}${ANSI_CODES.reset}`;
35
+ };
36
+ };
37
+ exports.colors = {
38
+ reset: createColorFn(ANSI_CODES.reset),
39
+ bold: createColorFn(ANSI_CODES.bold),
40
+ dim: createColorFn(ANSI_CODES.dim),
41
+ // Foreground colors
42
+ black: createColorFn(ANSI_CODES.black),
43
+ red: createColorFn(ANSI_CODES.red),
44
+ green: createColorFn(ANSI_CODES.green),
45
+ yellow: createColorFn(ANSI_CODES.yellow),
46
+ blue: createColorFn(ANSI_CODES.blue),
47
+ magenta: createColorFn(ANSI_CODES.magenta),
48
+ cyan: createColorFn(ANSI_CODES.cyan),
49
+ white: createColorFn(ANSI_CODES.white),
50
+ gray: createColorFn(ANSI_CODES.gray),
51
+ // Background colors
52
+ bgBlack: createColorFn(ANSI_CODES.bgBlack),
53
+ bgRed: createColorFn(ANSI_CODES.bgRed),
54
+ bgGreen: createColorFn(ANSI_CODES.bgGreen),
55
+ bgYellow: createColorFn(ANSI_CODES.bgYellow),
56
+ bgBlue: createColorFn(ANSI_CODES.bgBlue),
57
+ bgMagenta: createColorFn(ANSI_CODES.bgMagenta),
58
+ bgCyan: createColorFn(ANSI_CODES.bgCyan),
59
+ bgWhite: createColorFn(ANSI_CODES.bgWhite),
60
+ // Compound styles
61
+ error: createColorFn(ANSI_CODES.bold + ANSI_CODES.red),
62
+ success: createColorFn(ANSI_CODES.bold + ANSI_CODES.green),
63
+ warning: createColorFn(ANSI_CODES.bold + ANSI_CODES.yellow),
64
+ info: createColorFn(ANSI_CODES.bold + ANSI_CODES.cyan),
65
+ };
66
+ //# sourceMappingURL=colors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.js","sourceRoot":"","sources":["../../../src/core/terminal/colors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ export interface PromptOptions {
2
+ type?: 'text' | 'password' | 'confirm' | 'select';
3
+ message: string;
4
+ default?: any;
5
+ choices?: Array<{
6
+ title: string;
7
+ value: any;
8
+ }>;
9
+ validate?: (value: any) => boolean | string;
10
+ }
11
+ export declare class Prompt {
12
+ private rl;
13
+ constructor();
14
+ ask(options: PromptOptions): Promise<any>;
15
+ private askText;
16
+ private askPassword;
17
+ private askConfirm;
18
+ private askSelect;
19
+ close(): void;
20
+ }
21
+ export declare function prompt(options: PromptOptions): Promise<any>;
22
+ //# sourceMappingURL=prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../../src/core/terminal/prompt.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,CAAC,CAAC;IAC/C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,GAAG,MAAM,CAAC;CAC7C;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,EAAE,CAAqB;;IASzB,GAAG,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC;IAa/C,OAAO,CAAC,OAAO;IA0Bf,OAAO,CAAC,WAAW;IAuDnB,OAAO,CAAC,UAAU;IAuBlB,OAAO,CAAC,SAAS;IAiCjB,KAAK,IAAI,IAAI;CAGd;AAED,wBAAsB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,CAKjE"}
@@ -0,0 +1,189 @@
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.Prompt = void 0;
37
+ exports.prompt = prompt;
38
+ const readline = __importStar(require("readline"));
39
+ const colors_1 = require("./colors");
40
+ class Prompt {
41
+ constructor() {
42
+ this.rl = readline.createInterface({
43
+ input: process.stdin,
44
+ output: process.stdout,
45
+ });
46
+ }
47
+ async ask(options) {
48
+ switch (options.type) {
49
+ case 'password':
50
+ return this.askPassword(options);
51
+ case 'confirm':
52
+ return this.askConfirm(options);
53
+ case 'select':
54
+ return this.askSelect(options);
55
+ default:
56
+ return this.askText(options);
57
+ }
58
+ }
59
+ askText(options) {
60
+ return new Promise((resolve) => {
61
+ const defaultHint = options.default ? ` (${options.default})` : '';
62
+ const question = `${options.message}${defaultHint}: `;
63
+ const askQuestion = () => {
64
+ this.rl.question(question, (answer) => {
65
+ const value = answer.trim() || options.default || '';
66
+ if (options.validate) {
67
+ const result = options.validate(value);
68
+ if (result !== true) {
69
+ console.log(colors_1.colors.red(typeof result === 'string' ? result : 'Invalid input'));
70
+ askQuestion();
71
+ return;
72
+ }
73
+ }
74
+ resolve(value);
75
+ });
76
+ };
77
+ askQuestion();
78
+ });
79
+ }
80
+ askPassword(options) {
81
+ return new Promise((resolve) => {
82
+ const question = `${options.message}: `;
83
+ // Disable echo for password input
84
+ const stdin = process.stdin;
85
+ const wasRaw = stdin.isRaw;
86
+ if (stdin.isTTY) {
87
+ stdin.setRawMode(true);
88
+ }
89
+ process.stdout.write(question);
90
+ let password = '';
91
+ const onData = (char) => {
92
+ const str = char.toString();
93
+ switch (str) {
94
+ case '\n':
95
+ case '\r':
96
+ case '\u0004': // Ctrl+D
97
+ if (stdin.isTTY && wasRaw !== undefined) {
98
+ stdin.setRawMode(wasRaw);
99
+ }
100
+ stdin.removeListener('data', onData);
101
+ process.stdout.write('\n');
102
+ resolve(password);
103
+ break;
104
+ case '\u0003': // Ctrl+C
105
+ if (stdin.isTTY && wasRaw !== undefined) {
106
+ stdin.setRawMode(wasRaw);
107
+ }
108
+ stdin.removeListener('data', onData);
109
+ process.stdout.write('\n');
110
+ process.exit(0);
111
+ break;
112
+ case '\u007f': // Backspace
113
+ if (password.length > 0) {
114
+ password = password.slice(0, -1);
115
+ process.stdout.write('\b \b');
116
+ }
117
+ break;
118
+ default:
119
+ password += str;
120
+ process.stdout.write('*');
121
+ break;
122
+ }
123
+ };
124
+ stdin.on('data', onData);
125
+ });
126
+ }
127
+ askConfirm(options) {
128
+ return new Promise((resolve) => {
129
+ const defaultValue = options.default !== undefined ? options.default : true;
130
+ const hint = defaultValue ? '(Y/n)' : '(y/N)';
131
+ const question = `${options.message} ${hint}: `;
132
+ this.rl.question(question, (answer) => {
133
+ const value = answer.trim().toLowerCase();
134
+ if (value === '') {
135
+ resolve(defaultValue);
136
+ }
137
+ else if (value === 'y' || value === 'yes') {
138
+ resolve(true);
139
+ }
140
+ else if (value === 'n' || value === 'no') {
141
+ resolve(false);
142
+ }
143
+ else {
144
+ // Invalid input, ask again
145
+ this.askConfirm(options).then(resolve);
146
+ }
147
+ });
148
+ });
149
+ }
150
+ askSelect(options) {
151
+ return new Promise((resolve) => {
152
+ if (!options.choices || options.choices.length === 0) {
153
+ throw new Error('No choices provided for select prompt');
154
+ }
155
+ console.log(options.message);
156
+ options.choices.forEach((choice, index) => {
157
+ const isDefault = choice.value === options.default;
158
+ const prefix = isDefault ? colors_1.colors.cyan('❯') : ' ';
159
+ console.log(`${prefix} ${index + 1}. ${choice.title}`);
160
+ });
161
+ const defaultIndex = options.default
162
+ ? options.choices.findIndex(c => c.value === options.default) + 1
163
+ : 1;
164
+ const question = `Select an option (1-${options.choices.length}) [${defaultIndex}]: `;
165
+ this.rl.question(question, (answer) => {
166
+ const value = answer.trim();
167
+ const index = value === '' ? defaultIndex - 1 : parseInt(value, 10) - 1;
168
+ if (index >= 0 && index < options.choices.length) {
169
+ resolve(options.choices[index].value);
170
+ }
171
+ else {
172
+ console.log(colors_1.colors.red('Invalid selection. Please try again.'));
173
+ this.askSelect(options).then(resolve);
174
+ }
175
+ });
176
+ });
177
+ }
178
+ close() {
179
+ this.rl.close();
180
+ }
181
+ }
182
+ exports.Prompt = Prompt;
183
+ async function prompt(options) {
184
+ const p = new Prompt();
185
+ const result = await p.ask(options);
186
+ p.close();
187
+ return result;
188
+ }
189
+ //# sourceMappingURL=prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../../src/core/terminal/prompt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export declare class Spinner {
2
+ text: string;
3
+ private frameIndex;
4
+ private intervalId;
5
+ private stream;
6
+ private isRunning;
7
+ constructor(text?: string);
8
+ start(text?: string): void;
9
+ private render;
10
+ stop(): void;
11
+ succeed(text?: string): void;
12
+ fail(text?: string): void;
13
+ warn(text?: string): void;
14
+ info(text?: string): void;
15
+ setText(text: string): void;
16
+ }
17
+ //# sourceMappingURL=spinner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../../src/core/terminal/spinner.ts"],"names":[],"mappings":"AAIA,qBAAa,OAAO;IACX,IAAI,EAAE,MAAM,CAAM;IACzB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,SAAS,CAAkB;gBAEvB,IAAI,CAAC,EAAE,MAAM;IAKzB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAwB1B,OAAO,CAAC,MAAM;IAQd,IAAI,IAAI,IAAI;IAiBZ,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAM5B,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAMzB,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAMzB,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAMzB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAG5B"}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Spinner = void 0;
4
+ const colors_1 = require("./colors");
5
+ const SPINNER_FRAMES = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
6
+ class Spinner {
7
+ constructor(text) {
8
+ this.text = '';
9
+ this.frameIndex = 0;
10
+ this.intervalId = null;
11
+ this.isRunning = false;
12
+ this.text = text || '';
13
+ this.stream = process.stderr;
14
+ }
15
+ start(text) {
16
+ if (this.isRunning)
17
+ return;
18
+ if (text) {
19
+ this.text = text;
20
+ }
21
+ if (!this.stream.isTTY) {
22
+ // In non-TTY environment, just print the text once
23
+ this.stream.write(`${this.text}\n`);
24
+ return;
25
+ }
26
+ this.isRunning = true;
27
+ this.frameIndex = 0;
28
+ // Hide cursor
29
+ this.stream.write('\x1B[?25l');
30
+ this.intervalId = setInterval(() => {
31
+ this.render();
32
+ }, 80);
33
+ }
34
+ render() {
35
+ const frame = SPINNER_FRAMES[this.frameIndex];
36
+ this.frameIndex = (this.frameIndex + 1) % SPINNER_FRAMES.length;
37
+ // Clear line and render spinner
38
+ this.stream.write(`\r${colors_1.colors.cyan(frame)} ${this.text}`);
39
+ }
40
+ stop() {
41
+ if (!this.isRunning)
42
+ return;
43
+ this.isRunning = false;
44
+ if (this.intervalId) {
45
+ clearInterval(this.intervalId);
46
+ this.intervalId = null;
47
+ }
48
+ if (this.stream.isTTY) {
49
+ // Clear line and show cursor
50
+ this.stream.write('\r\x1B[K');
51
+ this.stream.write('\x1B[?25h');
52
+ }
53
+ }
54
+ succeed(text) {
55
+ this.stop();
56
+ const message = text || this.text;
57
+ this.stream.write(`${colors_1.colors.green('✓')} ${message}\n`);
58
+ }
59
+ fail(text) {
60
+ this.stop();
61
+ const message = text || this.text;
62
+ this.stream.write(`${colors_1.colors.red('✗')} ${message}\n`);
63
+ }
64
+ warn(text) {
65
+ this.stop();
66
+ const message = text || this.text;
67
+ this.stream.write(`${colors_1.colors.yellow('⚠')} ${message}\n`);
68
+ }
69
+ info(text) {
70
+ this.stop();
71
+ const message = text || this.text;
72
+ this.stream.write(`${colors_1.colors.blue('ℹ')} ${message}\n`);
73
+ }
74
+ setText(text) {
75
+ this.text = text;
76
+ }
77
+ }
78
+ exports.Spinner = Spinner;
79
+ //# sourceMappingURL=spinner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../../src/core/terminal/spinner.ts"],"names":[],"mappings":"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"}