@hailer/cli 1.1.8 → 1.1.9

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 (52) hide show
  1. package/.claude/settings.local.json +11 -0
  2. package/CLAUDE.md +85 -0
  3. package/README.md +24 -2
  4. package/assets/help.md +2 -0
  5. package/bin/hailer-cli +1 -1
  6. package/dist/cli/argument-parser.d.ts +25 -0
  7. package/dist/cli/argument-parser.js +27 -0
  8. package/dist/cli/argument-parser.js.map +1 -0
  9. package/dist/cli/logger.d.ts +4 -0
  10. package/dist/cli/logger.js +27 -0
  11. package/dist/cli/logger.js.map +1 -0
  12. package/dist/cli/repl-setup.d.ts +5 -0
  13. package/dist/cli/repl-setup.js +122 -0
  14. package/dist/cli/repl-setup.js.map +1 -0
  15. package/dist/cli/signal-handlers.d.ts +3 -0
  16. package/dist/cli/signal-handlers.js +62 -0
  17. package/dist/cli/signal-handlers.js.map +1 -0
  18. package/dist/{src/client.d.ts → client.d.ts} +3 -2
  19. package/dist/{src/client.js → client.js} +3 -1
  20. package/dist/client.js.map +1 -0
  21. package/dist/{src/commands → commands}/display-help.js +1 -1
  22. package/dist/commands/display-help.js.map +1 -0
  23. package/dist/{src/commands → commands}/file-upload.d.ts +0 -1
  24. package/dist/{src/commands → commands}/file-upload.js +2 -3
  25. package/dist/commands/file-upload.js.map +1 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/main.js +81 -0
  28. package/dist/main.js.map +1 -0
  29. package/dist/types.d.ts +80 -0
  30. package/dist/types.js +3 -0
  31. package/dist/types.js.map +1 -0
  32. package/dist/{src/util.d.ts → util.d.ts} +0 -1
  33. package/dist/{src/util.js → util.js} +2 -2
  34. package/dist/util.js.map +1 -0
  35. package/doc/example/getting-started/README.md +17 -0
  36. package/doc/example/getting-started/package-lock.json +3489 -0
  37. package/doc/example/getting-started/package.json +22 -0
  38. package/doc/example/getting-started/src/bot.ts +68 -0
  39. package/doc/example/getting-started/src/upload.ts +82 -0
  40. package/package.json +10 -11
  41. package/test-baseline.js +36 -0
  42. package/dist/run.js +0 -213
  43. package/dist/run.js.map +0 -1
  44. package/dist/src/client.js.map +0 -1
  45. package/dist/src/commands/display-help.js.map +0 -1
  46. package/dist/src/commands/file-upload.js.map +0 -1
  47. package/dist/src/index.js.map +0 -1
  48. package/dist/src/util.js.map +0 -1
  49. /package/dist/{src/commands → commands}/display-help.d.ts +0 -0
  50. /package/dist/{src/index.d.ts → index.d.ts} +0 -0
  51. /package/dist/{src/index.js → index.js} +0 -0
  52. /package/dist/{run.d.ts → main.d.ts} +0 -0
@@ -0,0 +1,11 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(npm run build:*)",
5
+ "Bash(npm run lint)",
6
+ "Bash(npm install:*)",
7
+ "Bash(mkdir:*)"
8
+ ],
9
+ "deny": []
10
+ }
11
+ }
package/CLAUDE.md ADDED
@@ -0,0 +1,85 @@
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ ## Build and Development Commands
6
+
7
+ - **Build**: `npm run build` - Compiles TypeScript to JavaScript in `dist/` directory
8
+ - **Start**: `npm run start` - Builds and runs the CLI with asset copying
9
+ - **Lint**: `npm run lint` - Runs ESLint on TypeScript files
10
+ - **Local CLI**: `node bin/hailer-cli` (after building) or use `npm run start`
11
+
12
+ ## Architecture Overview
13
+
14
+ This is a Node.js CLI tool and programmatic client for the Hailer API. The project has two main use cases:
15
+
16
+ 1. **CLI Tool**: Interactive REPL for executing Hailer API commands
17
+ 2. **NPM Package**: Programmatic client library exported as `@hailer/cli`
18
+
19
+ ### Core Components
20
+
21
+ - **`src/client.ts`**: Main `Client` class that handles Socket.IO connections to Hailer API
22
+ - **`src/main.ts`**: CLI entry point that orchestrates the REPL environment
23
+ - **`src/index.ts`**: Package export point for programmatic usage
24
+ - **`bin/hailer-cli`**: Executable script that loads the compiled CLI
25
+ - **`src/types.ts`**: Comprehensive TypeScript interfaces with inline documentation
26
+
27
+ ### Modular CLI Architecture
28
+
29
+ The CLI is organized into focused modules:
30
+
31
+ - **`src/cli/argument-parser.ts`**: CLI argument parsing and connection options
32
+ - **`src/cli/logger.ts`**: Console logging utilities with timestamps
33
+ - **`src/cli/repl-setup.ts`**: REPL initialization and API method tree building
34
+ - **`src/cli/signal-handlers.ts`**: Hailer real-time signal/event handling
35
+
36
+ ### Client Architecture
37
+
38
+ The `Client` class extends `EventEmitter` and provides:
39
+ - Socket.IO connection management to Hailer backend
40
+ - Authentication with username/password and SSL certificate options
41
+ - Request/response handling for API calls
42
+ - Signal/event streaming from Hailer
43
+ - File upload capabilities
44
+
45
+ ### REPL Environment
46
+
47
+ The CLI creates a REPL environment where:
48
+ - `api` object provides access to all Hailer API endpoints (e.g., `api.v3.activity.createMany`)
49
+ - `result` variable stores the last command result
50
+ - `history` array tracks all previous results
51
+ - `help` function shows available API methods
52
+ - Tab completion is available for API methods
53
+
54
+ ## Dependencies
55
+
56
+ Modern, up-to-date dependencies with no security vulnerabilities:
57
+ - **TypeScript 5.8**: Latest TypeScript with improved type inference
58
+ - **ESLint 9**: Modern linting with TypeScript support
59
+ - **socket.io-client 4.8**: Real-time communication with built-in TypeScript support
60
+ - **marked 15.0**: Markdown parsing for help documentation
61
+
62
+ ## TypeScript Configuration
63
+
64
+ - Target ES2015 with CommonJS modules
65
+ - Strict mode enabled with comprehensive type checking
66
+ - Declaration files generated for library usage
67
+ - Source maps enabled for debugging
68
+ - Base URL set to "src" for clean imports
69
+ - Inline type comments for better IDE experience
70
+
71
+ ## Testing
72
+
73
+ - **Local Testing**: Use `test-baseline.js` to verify functionality against local Hailer setup
74
+ - **Test Credentials**: `el@hailero.es` / `el@hailero.es` on `api.hailer.local.gd`
75
+ - **Key Test**: `client.request('v2.core.init', [['network']])` should return timestamp and network data
76
+
77
+ ## ESLint Configuration
78
+
79
+ - Uses TypeScript ESLint 8.x parser
80
+ - Enforces consistent type definitions and naming conventions
81
+ - 4-space indentation required
82
+ - Semicolons required
83
+ - Strict camelCase for properties
84
+ - Console usage allowed (for CLI tool nature)
85
+ - Ignores dist and example directories
package/README.md CHANGED
@@ -62,10 +62,20 @@ const options = {
62
62
  };
63
63
 
64
64
  Client.create(options).then(async (client) => {
65
+ // Listen to signals from Hailer
66
+ client.on('signals', ([name, meta]) => {
67
+ // print all signals
68
+ console.log('Signal:', name, meta);
69
+ });
70
+
71
+ // Make API request to create a new feed (wall) post.
65
72
  const post = await client.request('wall2.new_post', [{ subject: 'This is a wall post.', text: 'The content of my post' }]);
66
73
 
67
74
  console.log('Post created:', post);
68
- client.disconnect();
75
+ // client.disconnect();
76
+ }).catch(error => {
77
+ console.log('Error:', error);
78
+ process.exit(1);
69
79
  });
70
80
  ```
71
81
 
@@ -93,7 +103,13 @@ const options = {
93
103
  password: 'set-this',
94
104
  };
95
105
 
96
- const client = await Client.create(options);
106
+ const client = await Client.create(options).catch(error => { console.log('Error:', error); process.exit(1); });
107
+
108
+ // Listen to signals from Hailer
109
+ client.on('signals', ([name, meta]) => {
110
+ // print all signals
111
+ console.log('Signal:', name, meta);
112
+ });
97
113
 
98
114
  const post = await client.request('wall2.new_post', [{ subject: 'This is a wall post.', text: 'The content of my post' }]);
99
115
 
@@ -101,3 +117,9 @@ console.log('Post created:', post);
101
117
 
102
118
  client.disconnect();
103
119
  ```
120
+
121
+ ## Hailer API documentation
122
+
123
+ To find out what you can do with the Hailer API, visit:
124
+
125
+ https://api.hailer.com/apidocs
package/assets/help.md CHANGED
@@ -30,6 +30,8 @@ To learn more about how to use Hailer CLI programmatically type `hailer-cli --he
30
30
 
31
31
  *--host*: Which hailer backend server to use, defaults to *api.hailer.com*
32
32
 
33
+ *--insecure*: Skip SSL certificate verification (not recommended for production)
34
+
33
35
  ## Environment variables:
34
36
 
35
37
  *HOST*: which Hailer backend to use, defaults to *api.hailer.com*
package/bin/hailer-cli CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- require('../dist/run.js');
2
+ require('../dist/main.js');
@@ -0,0 +1,25 @@
1
+ export interface ParsedArgs {
2
+ /** Username for Hailer login */
3
+ user?: string;
4
+ /** Password for Hailer login */
5
+ password?: string;
6
+ /** Hailer host to connect to */
7
+ host?: string;
8
+ /** Run in quiet mode */
9
+ quiet?: boolean;
10
+ /** Skip SSL certificate verification */
11
+ insecure?: boolean;
12
+ /** Display help */
13
+ help?: boolean;
14
+ /** Display help (short form) */
15
+ h?: boolean;
16
+ }
17
+ export declare function parseArguments(): ParsedArgs;
18
+ export declare function resolveConnectionOptions(args: ParsedArgs): {
19
+ username: string | undefined;
20
+ password: string | undefined;
21
+ host: string;
22
+ quiet: boolean;
23
+ insecure: boolean;
24
+ rejectUnauthorized: boolean;
25
+ };
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.parseArguments = parseArguments;
7
+ exports.resolveConnectionOptions = resolveConnectionOptions;
8
+ const minimist_1 = __importDefault(require("minimist"));
9
+ function parseArguments() {
10
+ return (0, minimist_1.default)(process.argv.slice(2));
11
+ }
12
+ function resolveConnectionOptions(args) {
13
+ let username = args.user;
14
+ let password = args.password;
15
+ let host = args.host || process.env.HOST || 'https://api.hailer.com';
16
+ const quiet = !!args.quiet;
17
+ const insecure = !!args.insecure;
18
+ return {
19
+ username,
20
+ password,
21
+ host,
22
+ quiet,
23
+ insecure,
24
+ rejectUnauthorized: !insecure
25
+ };
26
+ }
27
+ //# sourceMappingURL=argument-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"argument-parser.js","sourceRoot":"","sources":["../../src/cli/argument-parser.ts"],"names":[],"mappings":";;;;;AAmBA,wCAEC;AAED,4DAeC;AAtCD,wDAAgC;AAmBhC,SAAgB,cAAc;IAC1B,OAAO,IAAA,kBAAQ,EAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAe,CAAC;AACzD,CAAC;AAED,SAAgB,wBAAwB,CAAC,IAAgB;IACrD,IAAI,QAAQ,GAAuB,IAAI,CAAC,IAAI,CAAC;IAC7C,IAAI,QAAQ,GAAuB,IAAI,CAAC,QAAQ,CAAC;IACjD,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,wBAAwB,CAAC;IACrE,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IAC3B,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;IAEjC,OAAO;QACH,QAAQ;QACR,QAAQ;QACR,IAAI;QACJ,KAAK;QACL,QAAQ;QACR,kBAAkB,EAAE,CAAC,QAAQ;KAChC,CAAC;AACN,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { REPLServer } from 'repl';
2
+ /** Write to console without messing up the user input */
3
+ export declare function createLogger(repl?: REPLServer): (...args: any[]) => void;
4
+ export declare function createEventLogger(log: (...args: any[]) => void): (event: string, meta?: any) => void;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createLogger = createLogger;
7
+ exports.createEventLogger = createEventLogger;
8
+ const colors_1 = __importDefault(require("colors"));
9
+ const util_1 = require("../util");
10
+ /** Write to console without messing up the user input */
11
+ function createLogger(repl) {
12
+ return (...args) => {
13
+ // clear line
14
+ process.stdout.write('\x1B[2K\r');
15
+ const timeHHMM = colors_1.default.blue('[' + (0, util_1.toISOStringWithTimezone)(new Date()).slice(11, 16) + ']');
16
+ console.log(timeHHMM, ...args
17
+ .map(arg => typeof arg !== 'string' && arg !== undefined ? (0, util_1.inspect)(arg) : arg)
18
+ .filter(arg => arg !== undefined));
19
+ repl === null || repl === void 0 ? void 0 : repl.displayPrompt(true);
20
+ };
21
+ }
22
+ function createEventLogger(log) {
23
+ return (event, meta) => {
24
+ log(colors_1.default.green('๏'), colors_1.default.white(event), meta ? colors_1.default.gray(meta) : undefined);
25
+ };
26
+ }
27
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/cli/logger.ts"],"names":[],"mappings":";;;;;AAKA,oCAgBC;AAED,8CAIC;AA3BD,oDAA4B;AAE5B,kCAA2D;AAE3D,yDAAyD;AACzD,SAAgB,YAAY,CAAC,IAAiB;IAC1C,OAAO,CAAC,GAAG,IAAW,EAAE,EAAE;QACtB,aAAa;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAElC,MAAM,QAAQ,GAAG,gBAAM,CAAC,IAAI,CAAC,GAAG,GAAG,IAAA,8BAAuB,EAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;QAE5F,OAAO,CAAC,GAAG,CACP,QAAQ,EACR,GAAG,IAAI;aACF,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAA,cAAO,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;aAC7E,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,CACxC,CAAC;QAEF,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC;AACN,CAAC;AAED,SAAgB,iBAAiB,CAAC,GAA6B;IAC3D,OAAO,CAAC,KAAa,EAAE,IAAU,EAAE,EAAE;QACjC,GAAG,CAAC,gBAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,gBAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACtF,CAAC,CAAC;AACN,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { REPLServer } from 'repl';
2
+ import { Client } from '../client';
3
+ import { RootObject, HailerApiMethods } from '../types';
4
+ export declare function createApiMethods(client: Client, _methods: HailerApiMethods, getReplInstance?: () => REPLServer | null): RootObject;
5
+ export declare function startRepl(client: Client, methods: RootObject): Promise<REPLServer>;
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.createApiMethods = createApiMethods;
16
+ exports.startRepl = startRepl;
17
+ const repl_1 = require("repl");
18
+ const fs_1 = require("fs");
19
+ const path_1 = require("path");
20
+ const marked_1 = require("marked");
21
+ const colors_1 = __importDefault(require("colors"));
22
+ const util_1 = require("../util");
23
+ function createApiMethods(client, _methods, getReplInstance) {
24
+ const root = {
25
+ api: {},
26
+ result: undefined,
27
+ history: [],
28
+ error: undefined,
29
+ };
30
+ for (const i in _methods) {
31
+ const path = i.split('.');
32
+ let node = root.api;
33
+ while (path.length > 1) {
34
+ if (!node[path[0]]) {
35
+ node[path[0]] = {};
36
+ }
37
+ node = node[path[0]];
38
+ path.shift();
39
+ }
40
+ const methodFunction = ((methodName) => {
41
+ const fn = (...args) => __awaiter(this, void 0, void 0, function* () {
42
+ try {
43
+ root.result = yield client.request(methodName, args);
44
+ root.history.unshift(root.result);
45
+ // manually patch the repl context for result to work properly
46
+ const repl = getReplInstance === null || getReplInstance === void 0 ? void 0 : getReplInstance();
47
+ if (repl) {
48
+ repl.context.result = root.result;
49
+ }
50
+ }
51
+ catch (error) {
52
+ root.error = error;
53
+ throw error;
54
+ }
55
+ return root.result;
56
+ });
57
+ return fn;
58
+ })(i);
59
+ node[path[0]] = methodFunction;
60
+ // Init help hints
61
+ Object.defineProperty(node[path[0]], "cmd", { value: i });
62
+ Object.defineProperty(node[path[0]], "doc", { value: _methods[i].doc });
63
+ Object.defineProperty(node[path[0]], "args", { value: _methods[i].args });
64
+ }
65
+ return root;
66
+ }
67
+ function startRepl(client, methods) {
68
+ return __awaiter(this, void 0, void 0, function* () {
69
+ // Complete all async setup FIRST, before starting the REPL
70
+ let contextData = {};
71
+ if (client.sessionKey) {
72
+ contextData = yield client.request('v2.core.init', []);
73
+ }
74
+ // NOW create the REPL after all async operations are done
75
+ const repl = (0, repl_1.start)({
76
+ prompt: 'hailer> ',
77
+ input: process.stdin,
78
+ output: process.stdout,
79
+ terminal: true,
80
+ ignoreUndefined: true,
81
+ writer: (obj) => {
82
+ if (obj === null || obj === void 0 ? void 0 : obj.args) {
83
+ console.log(colors_1.default.yellow(obj.cmd) + '(' + colors_1.default.blue(obj.args || '') + ')', colors_1.default.white(obj.doc || ''));
84
+ return '';
85
+ }
86
+ return (0, util_1.inspect)(obj, { depth: 20, colors: true });
87
+ }
88
+ });
89
+ repl.on('exit', function () {
90
+ console.log("Bye!");
91
+ process.exit(0);
92
+ });
93
+ // Set up all context immediately after REPL creation
94
+ if (client.sessionKey) {
95
+ Object.assign(repl.context, contextData);
96
+ repl.context.upload = client.uploadFileByName.bind(client);
97
+ }
98
+ // Set the main objects in context
99
+ repl.context.api = methods.api;
100
+ repl.context.result = methods.result;
101
+ repl.context.history = methods.history;
102
+ repl.context.error = methods.error;
103
+ repl.context.cli = client;
104
+ repl.context.help = () => {
105
+ console.log(marked_1.marked.parse((0, fs_1.readFileSync)((0, path_1.resolve)(process.cwd(), 'assets/usage.md')).toString()));
106
+ function enumerate(node, depth) {
107
+ for (const i in node) {
108
+ if (typeof node[i] === 'object' && !('cmd' in node[i])) {
109
+ console.log(' '.repeat(depth) + colors_1.default.yellow(i));
110
+ enumerate(node[i], depth + 1);
111
+ continue;
112
+ }
113
+ const method = node[i];
114
+ console.log(' '.repeat(depth) + colors_1.default.yellow(i) + '(' + colors_1.default.blue((method === null || method === void 0 ? void 0 : method.args) || '') + ')', colors_1.default.white((method === null || method === void 0 ? void 0 : method.doc) || ''));
115
+ }
116
+ }
117
+ enumerate(methods.api, 1);
118
+ };
119
+ return repl;
120
+ });
121
+ }
122
+ //# sourceMappingURL=repl-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repl-setup.js","sourceRoot":"","sources":["../../src/cli/repl-setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Client } from '../client';
2
+ import { HailerContextData } from '../types';
3
+ export declare function setupSignalHandlers(client: Client, event: (event: string, meta?: any) => void, log: (...args: any[]) => void, replContext: HailerContextData): void;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.setupSignalHandlers = setupSignalHandlers;
16
+ const colors_1 = __importDefault(require("colors"));
17
+ function setupSignalHandlers(client, event, log, replContext) {
18
+ client.on('disconnect', (reason) => {
19
+ log('disconnected (attempt reconnect automatically)');
20
+ });
21
+ client.on('reconnect', (reason) => {
22
+ log('reconnected');
23
+ });
24
+ client.on('signals', (_a) => __awaiter(this, [_a], void 0, function* ([signal, meta]) {
25
+ var _b, _c, _d, _e, _f, _g, _h, _j;
26
+ const info = replContext;
27
+ switch (signal) {
28
+ case 'wall2.new_post':
29
+ const data = yield client.request('wall2.load_posts', [meta.post_id]);
30
+ if (!data) {
31
+ // no permission to load post, in wrong workspace or permissions missing
32
+ return;
33
+ }
34
+ event('New wallpost (' + colors_1.default.white(((_c = (_b = info.users) === null || _b === void 0 ? void 0 : _b[data.uid]) === null || _c === void 0 ? void 0 : _c.firstname) + ' ' + ((_e = (_d = info.users) === null || _d === void 0 ? void 0 : _d[data.uid]) === null || _e === void 0 ? void 0 : _e.lastname)) + '/' + colors_1.default.yellow(((_g = (_f = info.networks) === null || _f === void 0 ? void 0 : _f[data.cid]) === null || _g === void 0 ? void 0 : _g.name) || 'Unknown') + '):');
35
+ log(' ', colors_1.default.blue(data.initMessage.subject));
36
+ log(' ', colors_1.default.green(data.initMessage.text));
37
+ break;
38
+ case 'wall2.delete_post':
39
+ event('Removed wallpost:', meta.post_id);
40
+ break;
41
+ case 'wall2.new_comment':
42
+ event('New comment.', meta.post_id);
43
+ break;
44
+ case 'wall2.delete_comment':
45
+ event('Removed comment.', meta.post_id);
46
+ break;
47
+ case 'wall2.edited_comment':
48
+ event('Edited comment.', meta.post_id);
49
+ break;
50
+ case 'activities.created':
51
+ event('New activity', (_j = (_h = info.processes) === null || _h === void 0 ? void 0 : _h.find((process) => process._id === meta.processId)) === null || _j === void 0 ? void 0 : _j.name);
52
+ break;
53
+ case 'discussion.sync':
54
+ event('Discussion Sync');
55
+ break;
56
+ default:
57
+ event(signal, meta);
58
+ break;
59
+ }
60
+ }));
61
+ }
62
+ //# sourceMappingURL=signal-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signal-handlers.js","sourceRoot":"","sources":["../../src/cli/signal-handlers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAIA,kDAoDC;AAxDD,oDAA4B;AAI5B,SAAgB,mBAAmB,CAC/B,MAAc,EACd,KAA0C,EAC1C,GAA6B,EAC7B,WAA8B;IAE9B,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE;QAC/B,GAAG,CAAC,gDAAgD,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE;QAC9B,GAAG,CAAC,aAAa,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,KAAuB,EAAE,0CAAlB,CAAC,MAAM,EAAE,IAAI,CAAC;;QACtC,MAAM,IAAI,GAAG,WAAW,CAAC;QACzB,QAAQ,MAAM,EAAE,CAAC;YACb,KAAK,gBAAgB;gBACjB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;gBAEtE,IAAI,CAAC,IAAI,EAAE,CAAC;oBACR,wEAAwE;oBACxE,OAAO;gBACX,CAAC;gBAED,KAAK,CAAC,gBAAgB,GAAG,gBAAM,CAAC,KAAK,CAAC,CAAA,MAAA,MAAA,IAAI,CAAC,KAAK,0CAAG,IAAI,CAAC,GAAG,CAAC,0CAAE,SAAS,IAAG,GAAG,IAAG,MAAA,MAAA,IAAI,CAAC,KAAK,0CAAG,IAAI,CAAC,GAAG,CAAC,0CAAE,QAAQ,CAAA,CAAC,GAAG,GAAG,GAAG,gBAAM,CAAC,MAAM,CAAC,CAAA,MAAA,MAAA,IAAI,CAAC,QAAQ,0CAAG,IAAI,CAAC,GAAG,CAAC,0CAAE,IAAI,KAAI,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC9L,GAAG,CAAC,IAAI,EAAE,gBAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;gBACjD,GAAG,CAAC,IAAI,EAAE,gBAAM,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC/C,MAAM;YACV,KAAK,mBAAmB;gBACpB,KAAK,CAAC,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBACzC,MAAM;YACV,KAAK,mBAAmB;gBACpB,KAAK,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBACpC,MAAM;YACV,KAAK,sBAAsB;gBACvB,KAAK,CAAC,kBAAkB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBACxC,MAAM;YACV,KAAK,sBAAsB;gBACvB,KAAK,CAAC,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBACvC,MAAM;YACV,KAAK,oBAAoB;gBACrB,KAAK,CAAC,cAAc,EAAE,MAAA,MAAA,IAAI,CAAC,SAAS,0CAAE,IAAI,CAAC,CAAC,OAAY,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,0CAAE,IAAI,CAAC,CAAC;gBACpG,MAAM;YACV,KAAK,iBAAiB;gBAClB,KAAK,CAAC,iBAAiB,CAAC,CAAC;gBACzB,MAAM;YACV;gBACI,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACpB,MAAM;QACd,CAAC;IACL,CAAC,CAAA,CAAC,CAAC;AACP,CAAC"}
@@ -1,5 +1,3 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
1
  import EventEmitter from 'events';
4
2
  import { Readable } from 'stream';
5
3
  export interface ClientOptions {
@@ -9,6 +7,8 @@ export interface ClientOptions {
9
7
  password?: string;
10
8
  /** Defaults to api.hailer.com */
11
9
  host?: string;
10
+ /** Whether to reject unauthorized SSL certificates. Defaults to true for security */
11
+ rejectUnauthorized?: boolean;
12
12
  }
13
13
  /**
14
14
  * # Hailer Client
@@ -41,6 +41,7 @@ export declare class Client extends EventEmitter {
41
41
  host: string;
42
42
  username?: string;
43
43
  password?: string;
44
+ rejectUnauthorized: boolean;
44
45
  private requestId;
45
46
  private callbacks;
46
47
  private socket?;
@@ -47,6 +47,7 @@ class Client extends events_1.default {
47
47
  super();
48
48
  this.quiet = false;
49
49
  this.host = 'api.hailer.com';
50
+ this.rejectUnauthorized = true;
50
51
  this.requestId = 0;
51
52
  this.callbacks = {};
52
53
  }
@@ -55,6 +56,7 @@ class Client extends events_1.default {
55
56
  return __awaiter(this, void 0, void 0, function* () {
56
57
  const instance = new Client();
57
58
  instance.host = options.host || 'api.hailer.com';
59
+ instance.rejectUnauthorized = options.rejectUnauthorized !== undefined ? options.rejectUnauthorized : true;
58
60
  yield instance.connect(instance.host);
59
61
  if (options.username && options.password) {
60
62
  // automatically connect if username and password is given
@@ -113,7 +115,7 @@ class Client extends events_1.default {
113
115
  if (!hostname) {
114
116
  hostname = this.host;
115
117
  }
116
- const options = { transports: ['websocket'] };
118
+ const options = { transports: ['websocket'], rejectUnauthorized: this.rejectUnauthorized };
117
119
  if (!hostname.startsWith('http://') &&
118
120
  !hostname.startsWith('https://')) {
119
121
  hostname = 'https://' + hostname;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@ catch (error) {
12
12
  pkg = require('../../../package.json');
13
13
  }
14
14
  const displayHelpAndExit = () => {
15
- console.log((0, marked_1.marked)('# Hailer CLI ' + pkg.version + '\n\n' + (0, fs_1.readFileSync)((0, path_1.resolve)(process.cwd(), 'assets/help.md')).toString()));
15
+ console.log(marked_1.marked.parse('# Hailer CLI ' + pkg.version + '\n\n' + (0, fs_1.readFileSync)((0, path_1.resolve)(process.cwd(), 'assets/help.md')).toString()));
16
16
  process.exit(0);
17
17
  };
18
18
  exports.displayHelpAndExit = displayHelpAndExit;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"display-help.js","sourceRoot":"","sources":["../../src/commands/display-help.ts"],"names":[],"mappings":";;;AAAA,2BAAkC;AAClC,mCAAgC;AAChC,+BAA+B;AAE/B,IAAI,GAAG,GAAG,EAAS,CAAC;AAEpB,IAAI,CAAC;IACD,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AACxC,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACb,GAAG,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;AAC3C,CAAC;AAEM,MAAM,kBAAkB,GAAG,GAAG,EAAE;IACnC,OAAO,CAAC,GAAG,CAAC,eAAM,CAAC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC,OAAO,GAAG,MAAM,GAAG,IAAA,iBAAY,EAAC,IAAA,cAAO,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACtI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC,CAAC;AAHW,QAAA,kBAAkB,sBAG7B"}
@@ -1,4 +1,3 @@
1
- /// <reference types="node" />
2
1
  import { Readable } from 'stream';
3
2
  interface UploadOptions {
4
3
  sessionKey?: string;
@@ -9,14 +9,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.upload = void 0;
12
+ exports.upload = upload;
13
13
  const https_1 = require("https");
14
14
  const http_1 = require("http");
15
15
  const url_1 = require("url");
16
16
  /** Upload a file using read stream, and return file id on successful upload */
17
17
  function upload(readStream, options) {
18
- var _a;
19
18
  return __awaiter(this, void 0, void 0, function* () {
19
+ var _a;
20
20
  const filename = (options === null || options === void 0 ? void 0 : options.filename) || 'file.bin';
21
21
  // const filesize = options?.filesize;
22
22
  const boundary = '----LeckingBoundary12341234';
@@ -67,5 +67,4 @@ function upload(readStream, options) {
67
67
  return fileId;
68
68
  });
69
69
  }
70
- exports.upload = upload;
71
70
  //# sourceMappingURL=file-upload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-upload.js","sourceRoot":"","sources":["../../src/commands/file-upload.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAAiD;AAAxC,gGAAA,MAAM,OAAA"}