@drone1/alt 0.4.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/.nvmrc +1 -0
- package/LICENSE +21 -0
- package/README.md +247 -0
- package/assets/figlet-fonts/THIS.flf +720 -0
- package/bin.mjs +8 -0
- package/localization/.localization.cache.json +1872 -0
- package/localization/aa.json +24 -0
- package/localization/af.json +24 -0
- package/localization/agq.json +24 -0
- package/localization/ak.json +24 -0
- package/localization/am.json +24 -0
- package/localization/ar.json +24 -0
- package/localization/as.json +24 -0
- package/localization/asa.json +24 -0
- package/localization/ast.json +24 -0
- package/localization/az.json +24 -0
- package/localization/ba.json +24 -0
- package/localization/bas.json +24 -0
- package/localization/be.json +24 -0
- package/localization/bem.json +24 -0
- package/localization/bez.json +24 -0
- package/localization/bg.json +24 -0
- package/localization/bm.json +24 -0
- package/localization/bn.json +24 -0
- package/localization/bo.json +24 -0
- package/localization/br.json +24 -0
- package/localization/brx.json +24 -0
- package/localization/bs.json +24 -0
- package/localization/byn.json +24 -0
- package/localization/ca.json +24 -0
- package/localization/ccp.json +24 -0
- package/localization/cd-RU.json +24 -0
- package/localization/ceb.json +24 -0
- package/localization/cgg.json +24 -0
- package/localization/chr.json +24 -0
- package/localization/co.json +24 -0
- package/localization/config.json +76 -0
- package/localization/cs.json +24 -0
- package/localization/cu-RU.json +24 -0
- package/localization/da.json +24 -0
- package/localization/de-AT.json +24 -0
- package/localization/de-CH.json +24 -0
- package/localization/de-DE.json +24 -0
- package/localization/dua.json +24 -0
- package/localization/dv.json +24 -0
- package/localization/dz.json +24 -0
- package/localization/ebu.json +24 -0
- package/localization/en.json +26 -0
- package/localization/es-ES.json +24 -0
- package/localization/es-MX.json +24 -0
- package/localization/et.json +24 -0
- package/localization/eu.json +24 -0
- package/localization/fr-CA.json +24 -0
- package/localization/fr-CH.json +24 -0
- package/localization/fr-FR.json +24 -0
- package/localization/gsw.json +24 -0
- package/localization/hi.json +24 -0
- package/localization/hr.json +24 -0
- package/localization/hy.json +24 -0
- package/localization/ja.json +24 -0
- package/localization/km.json +24 -0
- package/localization/ksf.json +24 -0
- package/localization/ku.json +24 -0
- package/localization/kw.json +24 -0
- package/localization/my.json +24 -0
- package/localization/nl.json +24 -0
- package/localization/prs.json +24 -0
- package/localization/reference.js +21 -0
- package/localization/ru.json +24 -0
- package/localization/sq.json +24 -0
- package/localization/swc.json +24 -0
- package/localization/th.json +24 -0
- package/localization/tzm-Latn-.json +24 -0
- package/localization/uk.json +24 -0
- package/localization/vi.json +24 -0
- package/localization/zh-Hans.json +24 -0
- package/localization/zh-Hant.json +24 -0
- package/npm-shrinkwrap.json +1143 -0
- package/package.json +48 -0
- package/src/assert.js +19 -0
- package/src/cache.js +12 -0
- package/src/config.js +26 -0
- package/src/consts.js +23 -0
- package/src/context-keys.js +10 -0
- package/src/io.js +129 -0
- package/src/localizer/localize.js +135 -0
- package/src/logging.js +35 -0
- package/src/logo.js +22 -0
- package/src/main.mjs +103 -0
- package/src/options.js +18 -0
- package/src/provider.js +17 -0
- package/src/providers/anthropic.mjs +39 -0
- package/src/providers/openai.mjs +30 -0
- package/src/shutdown.js +36 -0
- package/src/translate.js +602 -0
- package/src/utils.js +108 -0
package/src/utils.js
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { Buffer } from 'buffer'
|
|
2
|
+
import * as crypto from 'crypto'
|
|
3
|
+
|
|
4
|
+
export function obj2Str(obj, exclude = null, expandJson = false) {
|
|
5
|
+
let result = ''
|
|
6
|
+
|
|
7
|
+
const maybeJson = x => {
|
|
8
|
+
return expandJson && isObject(x) ? j2s(x) : x
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
if (exclude) {
|
|
12
|
+
for (let p in obj) {
|
|
13
|
+
if (exclude.includes(p)) continue
|
|
14
|
+
result += `${p}=${maybeJson(obj[p])}; `
|
|
15
|
+
}
|
|
16
|
+
} else {
|
|
17
|
+
for (let p in obj) {
|
|
18
|
+
result += `${p}=${maybeJson(obj[p])}; `
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return result.substring(0, result.length - 2) // Remove trailing semicolon+space
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export const REPLACESTRINGVARSWITHOBJECTVALUESWARNINGCODE_MISSINGVAR = 0
|
|
25
|
+
export const REPLACESTRINGVARSWITHOBJECTVALUESWARNINGCODE_UNKNOWNVARSPECIFIED = 1
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Replaces variables in a string (format %%varName%%) with their corresponding values
|
|
29
|
+
* from an object.
|
|
30
|
+
*
|
|
31
|
+
* @param {string} format - The string containing variables like %%var1%%
|
|
32
|
+
* @param {object} data - Object with keys matching the variable names
|
|
33
|
+
* @param {array} outWarningsArray - Output array for tracking warnings
|
|
34
|
+
* @returns {string} - The string with all variables replaced with their values
|
|
35
|
+
*/
|
|
36
|
+
export function replaceStringVarsWithObjectValues({format, data, outWarningsArray}) {
|
|
37
|
+
//assertIsString(format)
|
|
38
|
+
//assertIsObj(data)
|
|
39
|
+
//assert(!outWarningsArray || Array.isArray(outWarningsArray))
|
|
40
|
+
|
|
41
|
+
// Regex pattern to match %%varName%% patterns
|
|
42
|
+
const regex = /%%([^%]+)%%/g
|
|
43
|
+
|
|
44
|
+
// NB: No need to add 'format' to 'message'; a calling func can print that once
|
|
45
|
+
const addWarning = (code, message) => outWarningsArray?.push({ code, message })
|
|
46
|
+
|
|
47
|
+
// Replace all matches using the replacement function
|
|
48
|
+
const dataKeySet = new Set(Object.keys(data)) // For tracking if we've got superfluous keys in 'data'
|
|
49
|
+
const result = format.replace(regex, (match, varName) => {
|
|
50
|
+
if (data.hasOwnProperty(varName)) {
|
|
51
|
+
dataKeySet.delete(varName) // OK to call if doesn't exist (which can happen for situations with multiple vars with the same name)
|
|
52
|
+
return data[varName]
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
addWarning(REPLACESTRINGVARSWITHOBJECTVALUESWARNINGCODE_MISSINGVAR, `'format' string missing data for var "${varName}"`)
|
|
56
|
+
|
|
57
|
+
// Return the original match if the variable doesn't exist
|
|
58
|
+
return match
|
|
59
|
+
})
|
|
60
|
+
|
|
61
|
+
if (dataKeySet.size) {
|
|
62
|
+
for (const varName of dataKeySet) {
|
|
63
|
+
addWarning(REPLACESTRINGVARSWITHOBJECTVALUESWARNINGCODE_UNKNOWNVARSPECIFIED, `unknown var "${varName}" specified in data obj`)
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return result
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export function sleep(ms, log) {
|
|
71
|
+
if (ms === 0) return
|
|
72
|
+
return new Promise(resolve => setTimeout(resolve, ms))
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export function ensureExtension(filename, extension) {
|
|
76
|
+
if (!extension.startsWith('.')) extension = '.' + extension
|
|
77
|
+
return filename.endsWith(extension) ? filename : filename + extension
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export function unique(array) {
|
|
81
|
+
return [ ...new Set(array) ]
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// Calculate hash of a string
|
|
85
|
+
export function calculateHash(content) {
|
|
86
|
+
return crypto.createHash('sha256').update(content).digest('hex')
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export function normalizeKey(key) {
|
|
90
|
+
return key.normalize('NFC')
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export function normalizeData(data) {
|
|
94
|
+
if (!data) return null
|
|
95
|
+
const normalizedData = {}
|
|
96
|
+
for (const [ key, value ] of Object.entries(data)) {
|
|
97
|
+
// Force UTF-8 encoding for the key
|
|
98
|
+
const utf8Key = Buffer.from(key, 'utf8').toString('utf8')
|
|
99
|
+
|
|
100
|
+
// Force UTF-8 encoding for string values
|
|
101
|
+
const utf8Value = typeof value === 'string'
|
|
102
|
+
? Buffer.from(value, 'utf8').toString('utf8')
|
|
103
|
+
: value
|
|
104
|
+
|
|
105
|
+
normalizedData[normalizeKey(utf8Key)] = utf8Value
|
|
106
|
+
}
|
|
107
|
+
return normalizedData
|
|
108
|
+
}
|