easyoref 1.4.0 β 1.6.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 +1 -1
- package/package.json +12 -2
- package/dist/bin.d.ts +0 -17
- package/dist/bin.d.ts.map +0 -1
- package/dist/bin.js +0 -82
- package/dist/bin.js.map +0 -1
- package/dist/bot.d.ts +0 -16
- package/dist/bot.d.ts.map +0 -1
- package/dist/bot.js +0 -475
- package/dist/bot.js.map +0 -1
- package/dist/config.d.ts +0 -75
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -122
- package/dist/config.js.map +0 -1
- package/dist/gif-state.d.ts +0 -17
- package/dist/gif-state.d.ts.map +0 -1
- package/dist/gif-state.js +0 -67
- package/dist/gif-state.js.map +0 -1
- package/dist/i18n.d.ts +0 -49
- package/dist/i18n.d.ts.map +0 -1
- package/dist/i18n.js +0 -229
- package/dist/i18n.js.map +0 -1
- package/dist/init.d.ts +0 -7
- package/dist/init.d.ts.map +0 -1
- package/dist/init.js +0 -163
- package/dist/init.js.map +0 -1
- package/dist/logger.d.ts +0 -14
- package/dist/logger.d.ts.map +0 -1
- package/dist/logger.js +0 -45
- package/dist/logger.js.map +0 -1
- package/dist/service.d.ts +0 -19
- package/dist/service.d.ts.map +0 -1
- package/dist/service.js +0 -165
- package/dist/service.js.map +0 -1
package/dist/init.js
DELETED
|
@@ -1,163 +0,0 @@
|
|
|
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
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
|
package/dist/logger.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
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
|
package/dist/logger.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
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
|
package/dist/logger.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/dist/service.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
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
|
package/dist/service.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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
DELETED
|
@@ -1,165 +0,0 @@
|
|
|
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
|
package/dist/service.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
|