easyoref 1.11.0 ā 1.11.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent/auth.d.ts +11 -0
- package/dist/agent/auth.d.ts.map +1 -0
- package/dist/agent/auth.js +54 -0
- package/dist/agent/auth.js.map +1 -0
- package/dist/agent/dry-run.d.ts +12 -0
- package/dist/agent/dry-run.d.ts.map +1 -0
- package/dist/agent/dry-run.js +229 -0
- package/dist/agent/dry-run.js.map +1 -0
- package/dist/agent/gramjs-monitor.d.ts +13 -0
- package/dist/agent/gramjs-monitor.d.ts.map +1 -0
- package/dist/agent/gramjs-monitor.js +193 -0
- package/dist/agent/gramjs-monitor.js.map +1 -0
- package/dist/agent/graph.d.ts +44 -0
- package/dist/agent/graph.d.ts.map +1 -0
- package/dist/agent/graph.js +707 -0
- package/dist/agent/graph.js.map +1 -0
- package/dist/agent/queue.d.ts +15 -0
- package/dist/agent/queue.d.ts.map +1 -0
- package/dist/agent/queue.js +40 -0
- package/dist/agent/queue.js.map +1 -0
- package/dist/agent/redis.d.ts +8 -0
- package/dist/agent/redis.d.ts.map +1 -0
- package/dist/agent/redis.js +33 -0
- package/dist/agent/redis.js.map +1 -0
- package/dist/agent/store.d.ts +39 -0
- package/dist/agent/store.d.ts.map +1 -0
- package/dist/agent/store.js +52 -0
- package/dist/agent/store.js.map +1 -0
- package/dist/agent/types.d.ts +102 -0
- package/dist/agent/types.d.ts.map +1 -0
- package/dist/agent/types.js +3 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/agent/worker.d.ts +10 -0
- package/dist/agent/worker.d.ts.map +1 -0
- package/dist/agent/worker.js +69 -0
- package/dist/agent/worker.js.map +1 -0
- package/dist/bin.d.ts +17 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +82 -0
- package/dist/bin.js.map +1 -0
- package/dist/bot.d.ts +16 -0
- package/dist/bot.d.ts.map +1 -0
- package/dist/bot.js +557 -0
- package/dist/bot.js.map +1 -0
- package/dist/config.d.ts +116 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +145 -0
- package/dist/config.js.map +1 -0
- package/dist/gif-state.d.ts +17 -0
- package/dist/gif-state.d.ts.map +1 -0
- package/dist/gif-state.js +67 -0
- package/dist/gif-state.js.map +1 -0
- package/dist/i18n.d.ts +49 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +229 -0
- package/dist/i18n.js.map +1 -0
- package/dist/init.d.ts +7 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +163 -0
- package/dist/init.js.map +1 -0
- package/dist/logger.d.ts +14 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +45 -0
- package/dist/logger.js.map +1 -0
- package/dist/service.d.ts +19 -0
- package/dist/service.d.ts.map +1 -0
- package/dist/service.js +165 -0
- package/dist/service.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAsF1C"}
|
package/dist/init.js
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `npx easyoref init` ā Interactive setup wizard.
|
|
3
|
+
*
|
|
4
|
+
* Asks 4 questions, writes ~/.easyoref/config.yaml.
|
|
5
|
+
*/
|
|
6
|
+
import { confirm, input, password, select } from "@inquirer/prompts";
|
|
7
|
+
import chalk from "chalk";
|
|
8
|
+
import { Bot } from "grammy";
|
|
9
|
+
import yaml from "js-yaml";
|
|
10
|
+
import { existsSync, mkdirSync, writeFileSync } from "node:fs";
|
|
11
|
+
import { CONFIG_DIR, HOME_CONFIG_PATH } from "./config.js";
|
|
12
|
+
export async function init() {
|
|
13
|
+
console.log(chalk.bold("\nšØ EasyOref Setup\n"));
|
|
14
|
+
// āā Guard: config already exists āāāāāāāāāāāāāāāāāāāāā
|
|
15
|
+
if (existsSync(HOME_CONFIG_PATH)) {
|
|
16
|
+
const overwrite = await confirm({
|
|
17
|
+
message: `${HOME_CONFIG_PATH} already exists. Overwrite?`,
|
|
18
|
+
default: false,
|
|
19
|
+
});
|
|
20
|
+
if (!overwrite) {
|
|
21
|
+
console.log(chalk.dim("Cancelled."));
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
// āā 1. Language āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
26
|
+
const language = await select({
|
|
27
|
+
message: "š Language / ŠÆŠ·ŃŠŗ / שפ×:",
|
|
28
|
+
choices: [
|
|
29
|
+
{ name: "Š ŃŃŃŠŗŠøŠ¹", value: "ru" },
|
|
30
|
+
{ name: "English", value: "en" },
|
|
31
|
+
{ name: "×¢×ר××Ŗ", value: "he" },
|
|
32
|
+
{ name: "Ų§ŁŲ¹Ų±ŲØŁŲ©", value: "ar" },
|
|
33
|
+
],
|
|
34
|
+
});
|
|
35
|
+
const t = STRINGS[language] ?? STRINGS.en;
|
|
36
|
+
// āā 2. Bot Token āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
37
|
+
const botToken = await password({
|
|
38
|
+
message: t.token,
|
|
39
|
+
validate: (val) => {
|
|
40
|
+
if (!val || val.length < 10)
|
|
41
|
+
return t.tokenRequired;
|
|
42
|
+
if (!val.includes(":"))
|
|
43
|
+
return t.tokenFormat;
|
|
44
|
+
return true;
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
console.log(chalk.dim(t.validating));
|
|
48
|
+
try {
|
|
49
|
+
const bot = new Bot(botToken);
|
|
50
|
+
const me = await bot.api.getMe();
|
|
51
|
+
console.log(chalk.green(` ā
${t.botOk}: @${me.username}`));
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
console.log(chalk.yellow(` ā ļø ${t.botFail}`));
|
|
55
|
+
}
|
|
56
|
+
// āā 3. Chat ID āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
57
|
+
const chatId = await input({
|
|
58
|
+
message: t.chatId,
|
|
59
|
+
validate: (val) => {
|
|
60
|
+
if (!val)
|
|
61
|
+
return t.chatIdRequired;
|
|
62
|
+
if (!/^-?\d+$/.test(val))
|
|
63
|
+
return t.chatIdFormat;
|
|
64
|
+
return true;
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
// āā 4. City ID āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
68
|
+
const cityIdRaw = await input({
|
|
69
|
+
message: t.cityId,
|
|
70
|
+
validate: (val) => {
|
|
71
|
+
if (!val)
|
|
72
|
+
return t.cityIdRequired;
|
|
73
|
+
if (!/^\d+$/.test(val))
|
|
74
|
+
return t.cityIdFormat;
|
|
75
|
+
return true;
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
// āā Write config āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
79
|
+
const cfg = {
|
|
80
|
+
city_ids: [Number(cityIdRaw)],
|
|
81
|
+
language,
|
|
82
|
+
telegram: {
|
|
83
|
+
bot_token: botToken,
|
|
84
|
+
chat_id: chatId,
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
mkdirSync(CONFIG_DIR, { recursive: true });
|
|
88
|
+
writeFileSync(HOME_CONFIG_PATH, yaml.dump(cfg), "utf-8");
|
|
89
|
+
console.log("");
|
|
90
|
+
console.log(chalk.green(`ā
${t.saved} ${HOME_CONFIG_PATH}`));
|
|
91
|
+
console.log("");
|
|
92
|
+
console.log(t.next);
|
|
93
|
+
console.log(` ${chalk.cyan("npx easyoref")}`);
|
|
94
|
+
console.log("");
|
|
95
|
+
}
|
|
96
|
+
// āā i18n strings for the wizard āāāāāāāāāāāāāāāāāāāāāāāā
|
|
97
|
+
const STRINGS = {
|
|
98
|
+
ru: {
|
|
99
|
+
token: "š¤ Š¢Š¾ŠŗŠµŠ½ Š±Š¾ŃŠ° (Š¾Ń @BotFather):",
|
|
100
|
+
tokenRequired: "Токен Š¾Š±ŃзаŃелен",
|
|
101
|
+
tokenFormat: "Š¤Š¾ŃŠ¼Š°Ń: 123456:ABC-DEF...",
|
|
102
|
+
validating: " ŠŃовеŃŃŠµŠ¼ ŃŠ¾ŠŗŠµŠ½...",
|
|
103
|
+
botOk: "ŠŠ¾Ń найГен",
|
|
104
|
+
botFail: "ŠŠµ ŃŠ“алоŃŃ ŠæŃŠ¾Š²ŠµŃŠøŃŃ (ŠæŃŠ¾Š“олжаем)",
|
|
105
|
+
chatId: "š¬ Chat ID (оŃŃŠøŃŠ°ŃŠµŠ»Ńное ŃŠøŃло Š“Š»Ń Š³ŃŃŠæŠæ):",
|
|
106
|
+
chatIdRequired: "Chat ID Š¾Š±ŃŠ·Š°Ńелен",
|
|
107
|
+
chatIdFormat: "Š§ŠøŃŠ»Š¾ (оŃŃŠøŃŠ°ŃŠµŠ»Ńное Š“Š»Ń Š³ŃŃŠæŠæ)",
|
|
108
|
+
cityId: "š ID Š³Š¾ŃŠ¾Š“а (Š½Š°Š¹Š“ŠøŃŠµ на https://github.com/eladnava/pikud-haoref-api/blob/master/cities.json):",
|
|
109
|
+
cityIdRequired: "ID Š¾Š±ŃŠ·Š°Ńелен",
|
|
110
|
+
cityIdFormat: "Š¢Š¾Š»ŃŠŗŠ¾ ŃŠøŃŃŃ",
|
|
111
|
+
saved: "ŠŠ¾Š½Ńиг ŃŠ¾Ń
ŃŠ°Š½Ńн ā",
|
|
112
|
+
next: "ŠŠ°ŠæŃŃŃŠøŃе Š±Š¾Ńа:",
|
|
113
|
+
},
|
|
114
|
+
en: {
|
|
115
|
+
token: "š¤ Bot token (from @BotFather):",
|
|
116
|
+
tokenRequired: "Token is required",
|
|
117
|
+
tokenFormat: "Format: 123456:ABC-DEF...",
|
|
118
|
+
validating: " Validating token...",
|
|
119
|
+
botOk: "Bot found",
|
|
120
|
+
botFail: "Could not verify (continuing anyway)",
|
|
121
|
+
chatId: "š¬ Chat ID (negative number for groups):",
|
|
122
|
+
chatIdRequired: "Chat ID is required",
|
|
123
|
+
chatIdFormat: "Must be a number (negative for groups)",
|
|
124
|
+
cityId: "š City ID (find at https://github.com/eladnava/pikud-haoref-api/blob/master/cities.json):",
|
|
125
|
+
cityIdRequired: "City ID is required",
|
|
126
|
+
cityIdFormat: "Numbers only",
|
|
127
|
+
saved: "Config saved ā",
|
|
128
|
+
next: "Start the bot:",
|
|
129
|
+
},
|
|
130
|
+
he: {
|
|
131
|
+
token: "š¤ ×××§× ××× (×-@BotFather):",
|
|
132
|
+
tokenRequired: "×××§× × ×רש",
|
|
133
|
+
tokenFormat: "פ×ר××: 123456:ABC-DEF...",
|
|
134
|
+
validating: " ××××Ŗ ×××§×...",
|
|
135
|
+
botOk: "××× × ×צ×",
|
|
136
|
+
botFail: "×× × ××Ŗ× ××××Ŗ (××ש××××)",
|
|
137
|
+
chatId: "š¬ Chat ID (×הפר ש×××× ××§××צ××Ŗ):",
|
|
138
|
+
chatIdRequired: "Chat ID × ×רש",
|
|
139
|
+
chatIdFormat: "×××× ×××××Ŗ ×הפר (ש×××× ××§××צ××Ŗ)",
|
|
140
|
+
cityId: "š ID ×¢×ר (×צ×× ×-https://github.com/eladnava/pikud-haoref-api/blob/master/cities.json):",
|
|
141
|
+
cityIdRequired: "ID ×¢×ר × ×רש",
|
|
142
|
+
cityIdFormat: "×הפר×× ××××",
|
|
143
|
+
saved: "×××ר××Ŗ × ×©××Ø× ā",
|
|
144
|
+
next: "×פע××× ××Ŗ ××××:",
|
|
145
|
+
},
|
|
146
|
+
ar: {
|
|
147
|
+
token: "š¤ Ų±Ł
Ų² Ų§ŁŲØŁŲŖ (Ł
Ł @BotFather):",
|
|
148
|
+
tokenRequired: "Ų§ŁŲ±Ł
Ų² Ł
Ų·ŁŁŲØ",
|
|
149
|
+
tokenFormat: "Ų§ŁŲ“ŁŁ: 123456:ABC-DEF...",
|
|
150
|
+
validating: " جار٠اŁŲŖŲŁŁ...",
|
|
151
|
+
botOk: "ŲŖŁ
Ų§ŁŲ¹Ų«ŁŲ± Ų¹ŁŁ Ų§ŁŲØŁŲŖ",
|
|
152
|
+
botFail: "ŲŖŲ¹Ų°Ų± Ų§ŁŲŖŲŁŁ (Ł
ŲŖŲ§ŲØŲ¹Ų©)",
|
|
153
|
+
chatId: "š¬ Chat ID (Ų±ŁŁ
Ų³Ų§ŁŲØ ŁŁŁ
Ų¬Ł
ŁŲ¹Ų§ŲŖ):",
|
|
154
|
+
chatIdRequired: "Chat ID Ł
Ų·ŁŁŲØ",
|
|
155
|
+
chatIdFormat: "ŁŲ¬ŲØ Ų£Ł ŁŁŁŁ Ų±ŁŁ
ŁŲ§ (Ų³Ų§ŁŲØ ŁŁŁ
Ų¬Ł
ŁŲ¹Ų§ŲŖ)",
|
|
156
|
+
cityId: "š Ų±ŁŁ
Ų§ŁŁ
ŲÆŁŁŲ© (Ų§ŲØŲŲ« ŁŁ https://github.com/eladnava/pikud-haoref-api/blob/master/cities.json):",
|
|
157
|
+
cityIdRequired: "Ų±ŁŁ
Ų§ŁŁ
ŲÆŁŁŲ© Ł
Ų·ŁŁŲØ",
|
|
158
|
+
cityIdFormat: "Ų£Ų±ŁŲ§Ł
ŁŁŲ·",
|
|
159
|
+
saved: "ŲŖŁ
ŲŁŲø Ų§ŁŲ„Ų¹ŲÆŲ§ŲÆŲ§ŲŖ ā",
|
|
160
|
+
next: "Ų“ŲŗŁŁ Ų§ŁŲØŁŲŖ:",
|
|
161
|
+
},
|
|
162
|
+
};
|
|
163
|
+
//# sourceMappingURL=init.js.map
|
package/dist/init.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
|
package/dist/logger.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EasyOref Logger
|
|
3
|
+
*
|
|
4
|
+
* Dual-output: console (always) + Better Stack Logtail (if token set).
|
|
5
|
+
* Token source: config.yaml `observability.betterstack_token` or LOGTAIL_TOKEN env.
|
|
6
|
+
* Live Tail: https://logs.betterstack.com ā your source ā "Live Tail"
|
|
7
|
+
*/
|
|
8
|
+
export declare function info(message: string, ctx?: Record<string, unknown>): void;
|
|
9
|
+
export declare function warn(message: string, ctx?: Record<string, unknown>): void;
|
|
10
|
+
export declare function error(message: string, ctx?: Record<string, unknown>): void;
|
|
11
|
+
export declare function debug(message: string, ctx?: Record<string, unknown>): void;
|
|
12
|
+
/** Call before process.exit() ā flushes Logtail buffer */
|
|
13
|
+
export declare function flush(): Promise<void>;
|
|
14
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAuBH,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAGzE;AAED,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAGzE;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAG1E;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAK1E;AAED,0DAA0D;AAC1D,wBAAsB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3C"}
|
package/dist/logger.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EasyOref Logger
|
|
3
|
+
*
|
|
4
|
+
* Dual-output: console (always) + Better Stack Logtail (if token set).
|
|
5
|
+
* Token source: config.yaml `observability.betterstack_token` or LOGTAIL_TOKEN env.
|
|
6
|
+
* Live Tail: https://logs.betterstack.com ā your source ā "Live Tail"
|
|
7
|
+
*/
|
|
8
|
+
import { Logtail } from "@logtail/node";
|
|
9
|
+
import { config } from "./config.js";
|
|
10
|
+
const token = config.logtailToken;
|
|
11
|
+
const logtail = token ? new Logtail(token) : null;
|
|
12
|
+
const base = {
|
|
13
|
+
service: "easyoref",
|
|
14
|
+
env: process.env.NODE_ENV ?? "production",
|
|
15
|
+
};
|
|
16
|
+
if (logtail) {
|
|
17
|
+
console.log("š” Better Stack Logtail enabled ā live tail at logs.betterstack.com");
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
console.log("š LOGTAIL_TOKEN not set ā logging to console only");
|
|
21
|
+
}
|
|
22
|
+
// āā Public API āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
23
|
+
export function info(message, ctx) {
|
|
24
|
+
console.log(message, ctx ?? "");
|
|
25
|
+
logtail?.info(message, { ...base, ...ctx });
|
|
26
|
+
}
|
|
27
|
+
export function warn(message, ctx) {
|
|
28
|
+
console.warn(message, ctx ?? "");
|
|
29
|
+
logtail?.warn(message, { ...base, ...ctx });
|
|
30
|
+
}
|
|
31
|
+
export function error(message, ctx) {
|
|
32
|
+
console.error(message, ctx ?? "");
|
|
33
|
+
logtail?.error(message, { ...base, ...ctx });
|
|
34
|
+
}
|
|
35
|
+
export function debug(message, ctx) {
|
|
36
|
+
if (process.env.LOG_LEVEL === "debug") {
|
|
37
|
+
console.debug(message, ctx ?? "");
|
|
38
|
+
}
|
|
39
|
+
logtail?.debug(message, { ...base, ...ctx });
|
|
40
|
+
}
|
|
41
|
+
/** Call before process.exit() ā flushes Logtail buffer */
|
|
42
|
+
export async function flush() {
|
|
43
|
+
await logtail?.flush();
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;AAClC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAElD,MAAM,IAAI,GAAG;IACX,OAAO,EAAE,UAAU;IACnB,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,YAAY;CAC1C,CAAC;AAEF,IAAI,OAAO,EAAE,CAAC;IACZ,OAAO,CAAC,GAAG,CACT,qEAAqE,CACtE,CAAC;AACJ,CAAC;KAAM,CAAC;IACN,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;AACpE,CAAC;AAED,iFAAiF;AAEjF,MAAM,UAAU,IAAI,CAAC,OAAe,EAAE,GAA6B;IACjE,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IAChC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,OAAe,EAAE,GAA6B;IACjE,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IACjC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,OAAe,EAAE,GAA6B;IAClE,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IAClC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,OAAe,EAAE,GAA6B;IAClE,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,0DAA0D;AAC1D,MAAM,CAAC,KAAK,UAAU,KAAK;IACzB,MAAM,OAAO,EAAE,KAAK,EAAE,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EasyOref ā systemd service management (Ć la Homebridge)
|
|
3
|
+
*
|
|
4
|
+
* easyoref install ā create & enable systemd service, then start
|
|
5
|
+
* easyoref uninstall ā stop & remove systemd service
|
|
6
|
+
* easyoref start ā start the service (install first if needed)
|
|
7
|
+
* easyoref stop ā stop the service
|
|
8
|
+
* easyoref restart ā restart the service
|
|
9
|
+
* easyoref status ā show service status
|
|
10
|
+
* easyoref logs ā follow journal logs
|
|
11
|
+
*/
|
|
12
|
+
export declare function install(): void;
|
|
13
|
+
export declare function uninstall(): void;
|
|
14
|
+
export declare function start(): void;
|
|
15
|
+
export declare function stop(): void;
|
|
16
|
+
export declare function restart(): void;
|
|
17
|
+
export declare function status(): void;
|
|
18
|
+
export declare function logs(): void;
|
|
19
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAwFH,wBAAgB,OAAO,IAAI,IAAI,CAsB9B;AAED,wBAAgB,SAAS,IAAI,IAAI,CAchC;AAED,wBAAgB,KAAK,IAAI,IAAI,CAQ5B;AAED,wBAAgB,IAAI,IAAI,IAAI,CAO3B;AAED,wBAAgB,OAAO,IAAI,IAAI,CAQ9B;AAED,wBAAgB,MAAM,IAAI,IAAI,CAQ7B;AAED,wBAAgB,IAAI,IAAI,IAAI,CAY3B"}
|
package/dist/service.js
ADDED
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EasyOref ā systemd service management (Ć la Homebridge)
|
|
3
|
+
*
|
|
4
|
+
* easyoref install ā create & enable systemd service, then start
|
|
5
|
+
* easyoref uninstall ā stop & remove systemd service
|
|
6
|
+
* easyoref start ā start the service (install first if needed)
|
|
7
|
+
* easyoref stop ā stop the service
|
|
8
|
+
* easyoref restart ā restart the service
|
|
9
|
+
* easyoref status ā show service status
|
|
10
|
+
* easyoref logs ā follow journal logs
|
|
11
|
+
*/
|
|
12
|
+
import { execSync, spawnSync } from "node:child_process";
|
|
13
|
+
import { existsSync, writeFileSync } from "node:fs";
|
|
14
|
+
import { homedir } from "node:os";
|
|
15
|
+
import { join } from "node:path";
|
|
16
|
+
const SERVICE_NAME = "easyoref";
|
|
17
|
+
const UNIT_PATH = `/etc/systemd/system/${SERVICE_NAME}.service`;
|
|
18
|
+
const CONFIG_DIR = join(homedir(), ".easyoref");
|
|
19
|
+
const CONFIG_PATH = join(CONFIG_DIR, "config.yaml");
|
|
20
|
+
function whichBin() {
|
|
21
|
+
try {
|
|
22
|
+
return execSync("which easyoref", { encoding: "utf-8" }).trim();
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
// Fallback: resolve from npm global
|
|
26
|
+
try {
|
|
27
|
+
return execSync("npm bin -g", { encoding: "utf-8" }).trim() + "/easyoref";
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return "/usr/bin/easyoref";
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function whichNode() {
|
|
35
|
+
try {
|
|
36
|
+
return execSync("which node", { encoding: "utf-8" }).trim();
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return "/usr/bin/node";
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function isRoot() {
|
|
43
|
+
return process.getuid?.() === 0;
|
|
44
|
+
}
|
|
45
|
+
function sudoExec(cmd) {
|
|
46
|
+
const result = spawnSync("sudo", cmd.split(" "), {
|
|
47
|
+
stdio: "inherit",
|
|
48
|
+
});
|
|
49
|
+
if (result.status !== 0) {
|
|
50
|
+
console.error(`ā Command failed: sudo ${cmd}`);
|
|
51
|
+
process.exit(1);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function exec(cmd) {
|
|
55
|
+
const result = spawnSync(cmd.split(" ")[0], cmd.split(" ").slice(1), {
|
|
56
|
+
stdio: "inherit",
|
|
57
|
+
});
|
|
58
|
+
if (result.status !== 0) {
|
|
59
|
+
process.exit(result.status ?? 1);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
function isInstalled() {
|
|
63
|
+
return existsSync(UNIT_PATH);
|
|
64
|
+
}
|
|
65
|
+
function generateUnit() {
|
|
66
|
+
const bin = whichBin();
|
|
67
|
+
const node = whichNode();
|
|
68
|
+
const user = process.env.USER || process.env.LOGNAME || "pi";
|
|
69
|
+
const home = homedir();
|
|
70
|
+
return `[Unit]
|
|
71
|
+
Description=EasyOref Telegram Bot
|
|
72
|
+
After=network-online.target
|
|
73
|
+
Wants=network-online.target
|
|
74
|
+
|
|
75
|
+
[Service]
|
|
76
|
+
Type=simple
|
|
77
|
+
User=${user}
|
|
78
|
+
Environment=HOME=${home}
|
|
79
|
+
Environment=NODE_ENV=production
|
|
80
|
+
ExecStart=${node} ${bin} run
|
|
81
|
+
WorkingDirectory=${home}
|
|
82
|
+
Restart=always
|
|
83
|
+
RestartSec=10
|
|
84
|
+
|
|
85
|
+
[Install]
|
|
86
|
+
WantedBy=multi-user.target
|
|
87
|
+
`;
|
|
88
|
+
}
|
|
89
|
+
// āā Commands āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
90
|
+
export function install() {
|
|
91
|
+
if (!existsSync(CONFIG_PATH)) {
|
|
92
|
+
console.error(`ā Config not found at ${CONFIG_PATH}`);
|
|
93
|
+
console.error(` Run: easyoref init`);
|
|
94
|
+
process.exit(1);
|
|
95
|
+
}
|
|
96
|
+
console.log(`š¦ Installing ${SERVICE_NAME} systemd service...`);
|
|
97
|
+
const unit = generateUnit();
|
|
98
|
+
const tmpPath = `/tmp/${SERVICE_NAME}.service`;
|
|
99
|
+
writeFileSync(tmpPath, unit);
|
|
100
|
+
sudoExec(`cp ${tmpPath} ${UNIT_PATH}`);
|
|
101
|
+
sudoExec("systemctl daemon-reload");
|
|
102
|
+
sudoExec(`systemctl enable ${SERVICE_NAME}`);
|
|
103
|
+
sudoExec(`systemctl start ${SERVICE_NAME}`);
|
|
104
|
+
console.log(`ā
Service installed and started`);
|
|
105
|
+
console.log(` Config: ${CONFIG_PATH}`);
|
|
106
|
+
console.log(` Logs: easyoref logs`);
|
|
107
|
+
console.log(` Status: easyoref status`);
|
|
108
|
+
}
|
|
109
|
+
export function uninstall() {
|
|
110
|
+
if (!isInstalled()) {
|
|
111
|
+
console.log("ā¹ļø Service not installed");
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
console.log(`š Removing ${SERVICE_NAME} systemd service...`);
|
|
115
|
+
sudoExec(`systemctl stop ${SERVICE_NAME}`);
|
|
116
|
+
sudoExec(`systemctl disable ${SERVICE_NAME}`);
|
|
117
|
+
sudoExec(`rm ${UNIT_PATH}`);
|
|
118
|
+
sudoExec("systemctl daemon-reload");
|
|
119
|
+
console.log("ā
Service removed");
|
|
120
|
+
}
|
|
121
|
+
export function start() {
|
|
122
|
+
if (!isInstalled()) {
|
|
123
|
+
console.log("Service not installed ā installing first...");
|
|
124
|
+
install();
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
sudoExec(`systemctl start ${SERVICE_NAME}`);
|
|
128
|
+
console.log("ā
Started");
|
|
129
|
+
}
|
|
130
|
+
export function stop() {
|
|
131
|
+
if (!isInstalled()) {
|
|
132
|
+
console.log("ā¹ļø Service not installed");
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
sudoExec(`systemctl stop ${SERVICE_NAME}`);
|
|
136
|
+
console.log("ā
Stopped");
|
|
137
|
+
}
|
|
138
|
+
export function restart() {
|
|
139
|
+
if (!isInstalled()) {
|
|
140
|
+
console.log("Service not installed ā installing first...");
|
|
141
|
+
install();
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
sudoExec(`systemctl restart ${SERVICE_NAME}`);
|
|
145
|
+
console.log("ā
Restarted");
|
|
146
|
+
}
|
|
147
|
+
export function status() {
|
|
148
|
+
if (!isInstalled()) {
|
|
149
|
+
console.log("ā¹ļø Service not installed. Run: easyoref install");
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
spawnSync("systemctl", ["status", SERVICE_NAME, "--no-pager"], {
|
|
153
|
+
stdio: "inherit",
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
export function logs() {
|
|
157
|
+
if (!isInstalled()) {
|
|
158
|
+
console.log("ā¹ļø Service not installed. Run: easyoref install");
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
spawnSync("journalctl", ["-u", SERVICE_NAME, "-f", "--no-pager", "-o", "cat"], {
|
|
162
|
+
stdio: "inherit",
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "easyoref",
|
|
3
|
-
"version": "1.11.
|
|
3
|
+
"version": "1.11.2",
|
|
4
4
|
"description": "Real-time Israeli civil defense alerts ā Telegram, filtered by your location",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"@inquirer/prompts": "^7.0.0",
|
|
35
|
-
"@langchain/core": "^
|
|
36
|
-
"@langchain/langgraph": "^
|
|
35
|
+
"@langchain/core": "^1.1.31",
|
|
36
|
+
"@langchain/langgraph": "^1.2.1",
|
|
37
37
|
"@langchain/openai": "^1.2.12",
|
|
38
38
|
"@logtail/node": "^0.5.6",
|
|
39
39
|
"bullmq": "^5.0.0",
|