kibela-api-client 0.1.8 → 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.
- package/README.md +134 -142
- package/dist/cli/_error-handler.d.ts.map +1 -1
- package/dist/cli/_error-handler.js +5 -8
- package/dist/cli/_error-handler.js.map +1 -1
- package/dist/cli/_validators.d.ts +15 -38
- package/dist/cli/_validators.d.ts.map +1 -1
- package/dist/cli/_validators.js +148 -49
- package/dist/cli/_validators.js.map +1 -1
- package/dist/cli/commands/all.d.ts +3 -0
- package/dist/cli/commands/all.d.ts.map +1 -0
- package/dist/cli/commands/all.js +59 -0
- package/dist/cli/commands/all.js.map +1 -0
- package/dist/cli/commands/config.d.ts +6 -2
- package/dist/cli/commands/config.d.ts.map +1 -1
- package/dist/cli/commands/config.js +67 -62
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/get.d.ts +3 -0
- package/dist/cli/commands/get.d.ts.map +1 -0
- package/dist/cli/commands/get.js +152 -0
- package/dist/cli/commands/get.js.map +1 -0
- package/dist/cli/commands/groups-simple.d.ts +3 -0
- package/dist/cli/commands/groups-simple.d.ts.map +1 -0
- package/dist/cli/commands/groups-simple.js +39 -0
- package/dist/cli/commands/groups-simple.js.map +1 -0
- package/dist/cli/commands/new.d.ts +3 -0
- package/dist/cli/commands/new.d.ts.map +1 -0
- package/dist/cli/commands/new.js +168 -0
- package/dist/cli/commands/new.js.map +1 -0
- package/dist/cli/commands/set.d.ts +3 -0
- package/dist/cli/commands/set.d.ts.map +1 -0
- package/dist/cli/commands/set.js +96 -0
- package/dist/cli/commands/set.js.map +1 -0
- package/dist/cli/commands/sync.d.ts +3 -0
- package/dist/cli/commands/sync.d.ts.map +1 -0
- package/dist/cli/commands/sync.js +143 -0
- package/dist/cli/commands/sync.js.map +1 -0
- package/dist/cli/commands/users-simple.d.ts +3 -0
- package/dist/cli/commands/users-simple.d.ts.map +1 -0
- package/dist/cli/commands/users-simple.js +61 -0
- package/dist/cli/commands/users-simple.js.map +1 -0
- package/dist/cli/commands/users.d.ts +2 -2
- package/dist/cli/commands/users.d.ts.map +1 -1
- package/dist/cli/commands/users.js +50 -65
- package/dist/cli/commands/users.js.map +1 -1
- package/dist/cli/config.js +7 -7
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/index.js +29 -13
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/utils/frontmatter.d.ts +3 -0
- package/dist/cli/utils/frontmatter.d.ts.map +1 -0
- package/dist/cli/utils/frontmatter.js +89 -0
- package/dist/cli/utils/frontmatter.js.map +1 -0
- package/dist/cli/utils.d.ts +2 -2
- package/dist/cli/utils.d.ts.map +1 -1
- package/dist/cli/utils.js +7 -13
- package/dist/cli/utils.js.map +1 -1
- package/dist/client/index.js +2 -2
- package/dist/client/index.js.map +1 -1
- package/dist/core/cli/command.d.ts +45 -0
- package/dist/core/cli/command.d.ts.map +1 -0
- package/dist/core/cli/command.js +237 -0
- package/dist/core/cli/command.js.map +1 -0
- package/dist/core/env.d.ts +9 -0
- package/dist/core/env.d.ts.map +1 -0
- package/dist/core/env.js +96 -0
- package/dist/core/env.js.map +1 -0
- package/dist/core/graphql/client.d.ts +29 -0
- package/dist/core/graphql/client.d.ts.map +1 -0
- package/dist/core/graphql/client.js +41 -0
- package/dist/core/graphql/client.js.map +1 -0
- package/dist/core/http/client.d.ts +16 -0
- package/dist/core/http/client.d.ts.map +1 -0
- package/dist/core/http/client.js +87 -0
- package/dist/core/http/client.js.map +1 -0
- package/dist/core/index.d.ts +9 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +25 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/terminal/colors.d.ts +29 -0
- package/dist/core/terminal/colors.d.ts.map +1 -0
- package/dist/core/terminal/colors.js +66 -0
- package/dist/core/terminal/colors.js.map +1 -0
- package/dist/core/terminal/prompt.d.ts +22 -0
- package/dist/core/terminal/prompt.d.ts.map +1 -0
- package/dist/core/terminal/prompt.js +189 -0
- package/dist/core/terminal/prompt.js.map +1 -0
- package/dist/core/terminal/spinner.d.ts +17 -0
- package/dist/core/terminal/spinner.d.ts.map +1 -0
- package/dist/core/terminal/spinner.js +79 -0
- package/dist/core/terminal/spinner.js.map +1 -0
- package/dist/core/validation/validator.d.ts +26 -0
- package/dist/core/validation/validator.d.ts.map +1 -0
- package/dist/core/validation/validator.js +100 -0
- package/dist/core/validation/validator.js.map +1 -0
- package/dist/queries/notes.d.ts +10 -1
- package/dist/queries/notes.d.ts.map +1 -1
- package/dist/queries/notes.js +13 -13
- package/dist/queries/notes.js.map +1 -1
- package/dist/sync/frontmatter.d.ts +30 -0
- package/dist/sync/frontmatter.d.ts.map +1 -0
- package/dist/sync/frontmatter.js +123 -0
- package/dist/sync/frontmatter.js.map +1 -0
- package/dist/sync/index.d.ts +3 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +19 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/sync-client.d.ts +17 -0
- package/dist/sync/sync-client.d.ts.map +1 -0
- package/dist/sync/sync-client.js +158 -0
- package/dist/sync/sync-client.js.map +1 -0
- package/package.json +2 -12
@@ -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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"}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
export type ValidationRule<T> = (value: T) => string | null;
|
2
|
+
export interface Schema {
|
3
|
+
[key: string]: SchemaField;
|
4
|
+
}
|
5
|
+
export interface SchemaField {
|
6
|
+
type: 'string' | 'number' | 'boolean' | 'array' | 'object';
|
7
|
+
required?: boolean;
|
8
|
+
min?: number;
|
9
|
+
max?: number;
|
10
|
+
pattern?: RegExp;
|
11
|
+
enum?: any[];
|
12
|
+
items?: SchemaField;
|
13
|
+
properties?: Schema;
|
14
|
+
validate?: ValidationRule<any>;
|
15
|
+
}
|
16
|
+
export interface ValidationError {
|
17
|
+
field: string;
|
18
|
+
message: string;
|
19
|
+
}
|
20
|
+
export declare class Validator {
|
21
|
+
static validate(data: any, schema: Schema): ValidationError[];
|
22
|
+
private static validateField;
|
23
|
+
static isValid(data: any, schema: Schema): boolean;
|
24
|
+
static assertValid(data: any, schema: Schema): void;
|
25
|
+
}
|
26
|
+
//# sourceMappingURL=validator.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../../src/core/validation/validator.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,GAAG,IAAI,CAAC;AAE5D,MAAM,WAAW,MAAM;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC3D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACb,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,SAAS;IACpB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,EAAE;IAY7D,OAAO,CAAC,MAAM,CAAC,aAAa;IAyF5B,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAIlD,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAOpD"}
|