@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.
Files changed (96) hide show
  1. package/.nvmrc +1 -0
  2. package/LICENSE +21 -0
  3. package/README.md +247 -0
  4. package/assets/figlet-fonts/THIS.flf +720 -0
  5. package/bin.mjs +8 -0
  6. package/localization/.localization.cache.json +1872 -0
  7. package/localization/aa.json +24 -0
  8. package/localization/af.json +24 -0
  9. package/localization/agq.json +24 -0
  10. package/localization/ak.json +24 -0
  11. package/localization/am.json +24 -0
  12. package/localization/ar.json +24 -0
  13. package/localization/as.json +24 -0
  14. package/localization/asa.json +24 -0
  15. package/localization/ast.json +24 -0
  16. package/localization/az.json +24 -0
  17. package/localization/ba.json +24 -0
  18. package/localization/bas.json +24 -0
  19. package/localization/be.json +24 -0
  20. package/localization/bem.json +24 -0
  21. package/localization/bez.json +24 -0
  22. package/localization/bg.json +24 -0
  23. package/localization/bm.json +24 -0
  24. package/localization/bn.json +24 -0
  25. package/localization/bo.json +24 -0
  26. package/localization/br.json +24 -0
  27. package/localization/brx.json +24 -0
  28. package/localization/bs.json +24 -0
  29. package/localization/byn.json +24 -0
  30. package/localization/ca.json +24 -0
  31. package/localization/ccp.json +24 -0
  32. package/localization/cd-RU.json +24 -0
  33. package/localization/ceb.json +24 -0
  34. package/localization/cgg.json +24 -0
  35. package/localization/chr.json +24 -0
  36. package/localization/co.json +24 -0
  37. package/localization/config.json +76 -0
  38. package/localization/cs.json +24 -0
  39. package/localization/cu-RU.json +24 -0
  40. package/localization/da.json +24 -0
  41. package/localization/de-AT.json +24 -0
  42. package/localization/de-CH.json +24 -0
  43. package/localization/de-DE.json +24 -0
  44. package/localization/dua.json +24 -0
  45. package/localization/dv.json +24 -0
  46. package/localization/dz.json +24 -0
  47. package/localization/ebu.json +24 -0
  48. package/localization/en.json +26 -0
  49. package/localization/es-ES.json +24 -0
  50. package/localization/es-MX.json +24 -0
  51. package/localization/et.json +24 -0
  52. package/localization/eu.json +24 -0
  53. package/localization/fr-CA.json +24 -0
  54. package/localization/fr-CH.json +24 -0
  55. package/localization/fr-FR.json +24 -0
  56. package/localization/gsw.json +24 -0
  57. package/localization/hi.json +24 -0
  58. package/localization/hr.json +24 -0
  59. package/localization/hy.json +24 -0
  60. package/localization/ja.json +24 -0
  61. package/localization/km.json +24 -0
  62. package/localization/ksf.json +24 -0
  63. package/localization/ku.json +24 -0
  64. package/localization/kw.json +24 -0
  65. package/localization/my.json +24 -0
  66. package/localization/nl.json +24 -0
  67. package/localization/prs.json +24 -0
  68. package/localization/reference.js +21 -0
  69. package/localization/ru.json +24 -0
  70. package/localization/sq.json +24 -0
  71. package/localization/swc.json +24 -0
  72. package/localization/th.json +24 -0
  73. package/localization/tzm-Latn-.json +24 -0
  74. package/localization/uk.json +24 -0
  75. package/localization/vi.json +24 -0
  76. package/localization/zh-Hans.json +24 -0
  77. package/localization/zh-Hant.json +24 -0
  78. package/npm-shrinkwrap.json +1143 -0
  79. package/package.json +48 -0
  80. package/src/assert.js +19 -0
  81. package/src/cache.js +12 -0
  82. package/src/config.js +26 -0
  83. package/src/consts.js +23 -0
  84. package/src/context-keys.js +10 -0
  85. package/src/io.js +129 -0
  86. package/src/localizer/localize.js +135 -0
  87. package/src/logging.js +35 -0
  88. package/src/logo.js +22 -0
  89. package/src/main.mjs +103 -0
  90. package/src/options.js +18 -0
  91. package/src/provider.js +17 -0
  92. package/src/providers/anthropic.mjs +39 -0
  93. package/src/providers/openai.mjs +30 -0
  94. package/src/shutdown.js +36 -0
  95. package/src/translate.js +602 -0
  96. 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
+ }