@taon-dev/i18n 0.0.1 → 0.0.6

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 (276) hide show
  1. package/VERIFIED-BUILD-DATA.jsonc +2 -2
  2. package/bin/start.js +1 -1
  3. package/browser/fesm2022/i18n-browser.mjs +1441 -406
  4. package/browser/fesm2022/i18n-browser.mjs.map +1 -1
  5. package/browser/package.json +1 -1
  6. package/browser/types/i18n-browser.d.ts +146 -305
  7. package/browser-prod/fesm2022/i18n-browser-prod.mjs +1429 -405
  8. package/browser-prod/fesm2022/i18n-browser-prod.mjs.map +1 -1
  9. package/browser-prod/package.json +1 -1
  10. package/browser-prod/types/i18n-browser-prod.d.ts +140 -305
  11. package/browser-prod.split-namespaces.json +26 -2
  12. package/html/app/main-page/main-page.container.html +4 -0
  13. package/html/assets/generated/pwa/html-pwa.html +53 -53
  14. package/lib/build-info._auto-generated_.d.ts +1 -1
  15. package/lib/build-info._auto-generated_.js +1 -1
  16. package/lib/index._auto-generated_.d.ts +9 -14
  17. package/lib/index._auto-generated_.js +9 -14
  18. package/lib/index._auto-generated_.js.map +1 -1
  19. package/lib/package.json +1 -1
  20. package/lib/start-cli.js +6 -4
  21. package/lib/start-cli.js.map +1 -1
  22. package/lib/translate.directive.d.ts +15 -0
  23. package/lib/translate.pipe.d.ts +10 -0
  24. package/lib/translate.service.d.ts +13 -0
  25. package/lib/translation-manager.d.ts +33 -0
  26. package/lib/translation-manager.js +119 -0
  27. package/lib/translation-manager.js.map +1 -0
  28. package/lib/translation.d.ts +44 -0
  29. package/lib/translation.js +253 -0
  30. package/lib/translation.js.map +1 -0
  31. package/lib/translation.models.d.ts +25 -0
  32. package/lib/{features/types.js → translation.models.js} +1 -1
  33. package/lib/translation.models.js.map +1 -0
  34. package/lib/utils-i18n-extract-gettext-translate-from-html.d.ts +4 -0
  35. package/lib/utils-i18n-extract-gettext-translate-from-html.js +465 -0
  36. package/lib/utils-i18n-extract-gettext-translate-from-html.js.map +1 -0
  37. package/lib/utils-i18n-extract-gettext-translate-from-html.test.d.ts +1 -0
  38. package/lib/utils-i18n-extract-gettext-translate-from-html.test.js +282 -0
  39. package/lib/utils-i18n-extract-gettext-translate-from-html.test.js.map +1 -0
  40. package/lib/utils-i18n-html.d.ts +5 -0
  41. package/lib/utils-i18n-html.js +120 -0
  42. package/lib/utils-i18n-html.js.map +1 -0
  43. package/lib/utils-i18n-html.test.d.ts +1 -0
  44. package/lib/utils-i18n-html.test.js +82 -0
  45. package/lib/utils-i18n-html.test.js.map +1 -0
  46. package/lib/utils-po-file.d.ts +8 -0
  47. package/lib/utils-po-file.js +245 -0
  48. package/lib/utils-po-file.js.map +1 -0
  49. package/lib/utils-po-file.test.d.ts +1 -0
  50. package/lib/utils-po-file.test.js +239 -0
  51. package/lib/utils-po-file.test.js.map +1 -0
  52. package/lib-esm/app/main-page/main-page.active.context.d.ts +19 -0
  53. package/lib-esm/app/main-page/main-page.active.context.js +19 -0
  54. package/lib-esm/app/main-page/main-page.active.context.js.map +1 -0
  55. package/lib-esm/app.electron.d.ts +1 -1
  56. package/lib-esm/app.electron.js +1 -1
  57. package/lib-esm/app.hosts.d.ts +54 -2
  58. package/lib-esm/app.hosts.js +64 -4
  59. package/lib-esm/app.hosts.js.map +1 -1
  60. package/lib-esm/app.js +9 -9
  61. package/lib-esm/app.js.map +1 -1
  62. package/lib-esm/lib/build-info._auto-generated_.d.ts +1 -1
  63. package/lib-esm/lib/build-info._auto-generated_.js +1 -1
  64. package/lib-esm/lib/index._auto-generated_.d.ts +6 -14
  65. package/lib-esm/lib/index._auto-generated_.js +9 -14
  66. package/lib-esm/lib/index._auto-generated_.js.map +1 -1
  67. package/lib-esm/lib/start-cli.js +6 -4
  68. package/lib-esm/lib/start-cli.js.map +1 -1
  69. package/lib-esm/lib/translation-manager.d.ts +33 -0
  70. package/lib-esm/lib/translation-manager.js +115 -0
  71. package/lib-esm/lib/translation-manager.js.map +1 -0
  72. package/lib-esm/lib/translation.d.ts +43 -0
  73. package/lib-esm/lib/translation.js +249 -0
  74. package/lib-esm/lib/translation.js.map +1 -0
  75. package/lib-esm/lib/translation.models.d.ts +25 -0
  76. package/lib-esm/lib/translation.models.js +2 -0
  77. package/lib-esm/lib/translation.models.js.map +1 -0
  78. package/lib-esm/lib/utils-i18n-extract-gettext-translate-from-html.d.ts +4 -0
  79. package/lib-esm/lib/utils-i18n-extract-gettext-translate-from-html.js +462 -0
  80. package/lib-esm/lib/utils-i18n-extract-gettext-translate-from-html.js.map +1 -0
  81. package/lib-esm/lib/utils-i18n-extract-gettext-translate-from-html.test.d.ts +1 -0
  82. package/lib-esm/lib/utils-i18n-extract-gettext-translate-from-html.test.js +280 -0
  83. package/lib-esm/lib/utils-i18n-extract-gettext-translate-from-html.test.js.map +1 -0
  84. package/lib-esm/lib/utils-i18n-html.d.ts +5 -0
  85. package/lib-esm/lib/utils-i18n-html.js +117 -0
  86. package/lib-esm/lib/utils-i18n-html.js.map +1 -0
  87. package/lib-esm/lib/utils-i18n-html.test.d.ts +1 -0
  88. package/lib-esm/lib/utils-i18n-html.test.js +80 -0
  89. package/lib-esm/lib/utils-i18n-html.test.js.map +1 -0
  90. package/lib-esm/lib/utils-po-file.d.ts +8 -0
  91. package/lib-esm/lib/utils-po-file.js +242 -0
  92. package/lib-esm/lib/utils-po-file.js.map +1 -0
  93. package/lib-esm/lib/utils-po-file.test.d.ts +1 -0
  94. package/lib-esm/lib/utils-po-file.test.js +237 -0
  95. package/lib-esm/lib/utils-po-file.test.js.map +1 -0
  96. package/lib-prod/build-info._auto-generated_.d.ts +1 -1
  97. package/lib-prod/build-info._auto-generated_.js +1 -1
  98. package/lib-prod/index._auto-generated_.d.ts +6 -14
  99. package/lib-prod/index._auto-generated_.js +9 -14
  100. package/lib-prod/index._auto-generated_.js.map +1 -1
  101. package/lib-prod/package.json +1 -1
  102. package/lib-prod/start-cli.js +6 -4
  103. package/lib-prod/start-cli.js.map +1 -1
  104. package/lib-prod/translation-manager.d.ts +33 -0
  105. package/lib-prod/translation-manager.js +115 -0
  106. package/lib-prod/translation-manager.js.map +1 -0
  107. package/lib-prod/translation.d.ts +43 -0
  108. package/lib-prod/translation.js +249 -0
  109. package/lib-prod/translation.js.map +1 -0
  110. package/lib-prod/translation.models.d.ts +25 -0
  111. package/lib-prod/translation.models.js +2 -0
  112. package/lib-prod/translation.models.js.map +1 -0
  113. package/lib-prod/utils-i18n-extract-gettext-translate-from-html.d.ts +2 -0
  114. package/lib-prod/utils-i18n-extract-gettext-translate-from-html.js +460 -0
  115. package/lib-prod/utils-i18n-extract-gettext-translate-from-html.js.map +1 -0
  116. package/lib-prod/utils-i18n-extract-gettext-translate-from-html.test.d.ts +1 -0
  117. package/lib-prod/utils-i18n-extract-gettext-translate-from-html.test.js +280 -0
  118. package/lib-prod/utils-i18n-extract-gettext-translate-from-html.test.js.map +1 -0
  119. package/lib-prod/utils-i18n-html.d.ts +3 -0
  120. package/lib-prod/utils-i18n-html.js +114 -0
  121. package/lib-prod/utils-i18n-html.js.map +1 -0
  122. package/lib-prod/utils-i18n-html.test.d.ts +1 -0
  123. package/lib-prod/utils-i18n-html.test.js +80 -0
  124. package/lib-prod/utils-i18n-html.test.js.map +1 -0
  125. package/lib-prod/utils-po-file.d.ts +6 -0
  126. package/lib-prod/utils-po-file.js +236 -0
  127. package/lib-prod/utils-po-file.js.map +1 -0
  128. package/lib-prod/utils-po-file.test.d.ts +1 -0
  129. package/lib-prod/utils-po-file.test.js +237 -0
  130. package/lib-prod/utils-po-file.test.js.map +1 -0
  131. package/lib-prod.split-namespaces.json +26 -2
  132. package/package.json +4 -2
  133. package/scss/app/main-page/main-page.container.scss +3 -0
  134. package/websql/fesm2022/i18n-websql.mjs +1441 -406
  135. package/websql/fesm2022/i18n-websql.mjs.map +1 -1
  136. package/websql/package.json +1 -1
  137. package/websql/types/i18n-websql.d.ts +146 -305
  138. package/websql-prod/fesm2022/i18n-websql-prod.mjs +1429 -405
  139. package/websql-prod/fesm2022/i18n-websql-prod.mjs.map +1 -1
  140. package/websql-prod/package.json +1 -1
  141. package/websql-prod/types/i18n-websql-prod.d.ts +140 -305
  142. package/websql-prod.split-namespaces.json +26 -2
  143. package/lib/features/index.d.ts +0 -4
  144. package/lib/features/index.js +0 -21
  145. package/lib/features/index.js.map +0 -1
  146. package/lib/features/types.d.ts +0 -4
  147. package/lib/features/types.js.map +0 -1
  148. package/lib/features/withLanguageLocalStorageSync.d.ts +0 -9
  149. package/lib/features/withLanguageLocalStorageSync.js +0 -39
  150. package/lib/features/withLanguageLocalStorageSync.js.map +0 -1
  151. package/lib/features/withNavigatorLanguage.d.ts +0 -6
  152. package/lib/features/withNavigatorLanguage.js +0 -29
  153. package/lib/features/withNavigatorLanguage.js.map +0 -1
  154. package/lib/features/withPreloadScopes.d.ts +0 -8
  155. package/lib/features/withPreloadScopes.js +0 -25
  156. package/lib/features/withPreloadScopes.js.map +0 -1
  157. package/lib/features/withServerSideLanguage.d.ts +0 -6
  158. package/lib/features/withServerSideLanguage.js +0 -29
  159. package/lib/features/withServerSideLanguage.js.map +0 -1
  160. package/lib/features/withTranslatedTitle.d.ts +0 -34
  161. package/lib/features/withTranslatedTitle.js +0 -69
  162. package/lib/features/withTranslatedTitle.js.map +0 -1
  163. package/lib/internals.d.ts +0 -2
  164. package/lib/internals.js +0 -6
  165. package/lib/internals.js.map +0 -1
  166. package/lib/transignal-config.d.ts +0 -34
  167. package/lib/transignal-config.js +0 -42
  168. package/lib/transignal-config.js.map +0 -1
  169. package/lib/transignal-param-handlers.d.ts +0 -11
  170. package/lib/transignal-param-handlers.js +0 -31
  171. package/lib/transignal-param-handlers.js.map +0 -1
  172. package/lib/transignal-service.d.ts +0 -32
  173. package/lib/transignal-service.js +0 -206
  174. package/lib/transignal-service.js.map +0 -1
  175. package/lib/transignal-testing.d.ts +0 -8
  176. package/lib/transignal-testing.js +0 -14
  177. package/lib/transignal-testing.js.map +0 -1
  178. package/lib/types.d.ts +0 -124
  179. package/lib/types.js +0 -3
  180. package/lib/types.js.map +0 -1
  181. package/lib/utility-types.d.ts +0 -29
  182. package/lib/utility-types.js +0 -3
  183. package/lib/utility-types.js.map +0 -1
  184. package/lib/utils.d.ts +0 -15
  185. package/lib/utils.js +0 -20
  186. package/lib/utils.js.map +0 -1
  187. package/lib-esm/lib/features/index.d.ts +0 -4
  188. package/lib-esm/lib/features/index.js +0 -5
  189. package/lib-esm/lib/features/index.js.map +0 -1
  190. package/lib-esm/lib/features/types.d.ts +0 -4
  191. package/lib-esm/lib/features/types.js +0 -2
  192. package/lib-esm/lib/features/types.js.map +0 -1
  193. package/lib-esm/lib/features/withLanguageLocalStorageSync.d.ts +0 -9
  194. package/lib-esm/lib/features/withLanguageLocalStorageSync.js +0 -35
  195. package/lib-esm/lib/features/withLanguageLocalStorageSync.js.map +0 -1
  196. package/lib-esm/lib/features/withNavigatorLanguage.d.ts +0 -6
  197. package/lib-esm/lib/features/withNavigatorLanguage.js +0 -25
  198. package/lib-esm/lib/features/withNavigatorLanguage.js.map +0 -1
  199. package/lib-esm/lib/features/withPreloadScopes.d.ts +0 -8
  200. package/lib-esm/lib/features/withPreloadScopes.js +0 -21
  201. package/lib-esm/lib/features/withPreloadScopes.js.map +0 -1
  202. package/lib-esm/lib/features/withServerSideLanguage.d.ts +0 -6
  203. package/lib-esm/lib/features/withServerSideLanguage.js +0 -25
  204. package/lib-esm/lib/features/withServerSideLanguage.js.map +0 -1
  205. package/lib-esm/lib/features/withTranslatedTitle.d.ts +0 -34
  206. package/lib-esm/lib/features/withTranslatedTitle.js +0 -65
  207. package/lib-esm/lib/features/withTranslatedTitle.js.map +0 -1
  208. package/lib-esm/lib/internals.d.ts +0 -2
  209. package/lib-esm/lib/internals.js +0 -3
  210. package/lib-esm/lib/internals.js.map +0 -1
  211. package/lib-esm/lib/transignal-config.d.ts +0 -34
  212. package/lib-esm/lib/transignal-config.js +0 -36
  213. package/lib-esm/lib/transignal-config.js.map +0 -1
  214. package/lib-esm/lib/transignal-param-handlers.d.ts +0 -11
  215. package/lib-esm/lib/transignal-param-handlers.js +0 -25
  216. package/lib-esm/lib/transignal-param-handlers.js.map +0 -1
  217. package/lib-esm/lib/transignal-service.d.ts +0 -32
  218. package/lib-esm/lib/transignal-service.js +0 -197
  219. package/lib-esm/lib/transignal-service.js.map +0 -1
  220. package/lib-esm/lib/transignal-testing.d.ts +0 -8
  221. package/lib-esm/lib/transignal-testing.js +0 -10
  222. package/lib-esm/lib/transignal-testing.js.map +0 -1
  223. package/lib-esm/lib/types.d.ts +0 -124
  224. package/lib-esm/lib/types.js +0 -2
  225. package/lib-esm/lib/types.js.map +0 -1
  226. package/lib-esm/lib/utility-types.d.ts +0 -29
  227. package/lib-esm/lib/utility-types.js +0 -2
  228. package/lib-esm/lib/utility-types.js.map +0 -1
  229. package/lib-esm/lib/utils.d.ts +0 -15
  230. package/lib-esm/lib/utils.js +0 -15
  231. package/lib-esm/lib/utils.js.map +0 -1
  232. package/lib-prod/features/index.d.ts +0 -4
  233. package/lib-prod/features/index.js +0 -5
  234. package/lib-prod/features/index.js.map +0 -1
  235. package/lib-prod/features/types.d.ts +0 -4
  236. package/lib-prod/features/types.js +0 -2
  237. package/lib-prod/features/types.js.map +0 -1
  238. package/lib-prod/features/withLanguageLocalStorageSync.d.ts +0 -9
  239. package/lib-prod/features/withLanguageLocalStorageSync.js +0 -35
  240. package/lib-prod/features/withLanguageLocalStorageSync.js.map +0 -1
  241. package/lib-prod/features/withNavigatorLanguage.d.ts +0 -6
  242. package/lib-prod/features/withNavigatorLanguage.js +0 -25
  243. package/lib-prod/features/withNavigatorLanguage.js.map +0 -1
  244. package/lib-prod/features/withPreloadScopes.d.ts +0 -8
  245. package/lib-prod/features/withPreloadScopes.js +0 -21
  246. package/lib-prod/features/withPreloadScopes.js.map +0 -1
  247. package/lib-prod/features/withServerSideLanguage.d.ts +0 -6
  248. package/lib-prod/features/withServerSideLanguage.js +0 -25
  249. package/lib-prod/features/withServerSideLanguage.js.map +0 -1
  250. package/lib-prod/features/withTranslatedTitle.d.ts +0 -34
  251. package/lib-prod/features/withTranslatedTitle.js +0 -65
  252. package/lib-prod/features/withTranslatedTitle.js.map +0 -1
  253. package/lib-prod/internals.d.ts +0 -2
  254. package/lib-prod/internals.js +0 -3
  255. package/lib-prod/internals.js.map +0 -1
  256. package/lib-prod/transignal-config.d.ts +0 -34
  257. package/lib-prod/transignal-config.js +0 -36
  258. package/lib-prod/transignal-config.js.map +0 -1
  259. package/lib-prod/transignal-param-handlers.d.ts +0 -11
  260. package/lib-prod/transignal-param-handlers.js +0 -25
  261. package/lib-prod/transignal-param-handlers.js.map +0 -1
  262. package/lib-prod/transignal-service.d.ts +0 -32
  263. package/lib-prod/transignal-service.js +0 -197
  264. package/lib-prod/transignal-service.js.map +0 -1
  265. package/lib-prod/transignal-testing.d.ts +0 -8
  266. package/lib-prod/transignal-testing.js +0 -10
  267. package/lib-prod/transignal-testing.js.map +0 -1
  268. package/lib-prod/types.d.ts +0 -124
  269. package/lib-prod/types.js +0 -2
  270. package/lib-prod/types.js.map +0 -1
  271. package/lib-prod/utility-types.d.ts +0 -29
  272. package/lib-prod/utility-types.js +0 -2
  273. package/lib-prod/utility-types.js.map +0 -1
  274. package/lib-prod/utils.d.ts +0 -15
  275. package/lib-prod/utils.js +0 -15
  276. package/lib-prod/utils.js.map +0 -1
@@ -0,0 +1,460 @@
1
+ //#region imports
2
+ import { parseTemplate, } from '@angular/compiler';
3
+ //#endregion
4
+ //namespace UtilsI18nExtractGettextTranslateFromHtml
5
+ export function UtilsI18nExtractGettextTranslateFromHtml__NS__extractGettextTranslateFromHtml(html, fileName = 'template.html') {
6
+ //#region @backendFunc
7
+ const parsed = parseTemplate(html, fileName, {
8
+ preserveWhitespaces: true,
9
+ });
10
+ const messages = [];
11
+ const pushMessage = (node, gettextString, params, context) => {
12
+ const normalized = normalizeHtmlText(gettextString);
13
+ if (!normalized)
14
+ return;
15
+ messages.push({
16
+ lineNumber: node.sourceSpan.start.line + 1,
17
+ gettextString: normalized,
18
+ // params: params ?? null,
19
+ context,
20
+ });
21
+ };
22
+ const visit = (node) => {
23
+ const attrs = getNodeAttributes(node);
24
+ const inputs = getNodeInputs(node);
25
+ const translateAttr = attrs.find((a) => a.name === 'translate');
26
+ if (translateAttr) {
27
+ const params = extractTranslateParams(inputs) ??
28
+ extractTranslateParamsFromSource(node.sourceSpan.toString());
29
+ // pushMessage(
30
+ // node,
31
+ // collectText(node.children ?? []),
32
+ // extractTranslateParams(inputs),
33
+ // translateAttr.value || undefined,
34
+ // );
35
+ pushMessage(node, collectText(node.children ?? []), params, translateAttr.value || undefined);
36
+ }
37
+ for (const input of inputs) {
38
+ for (const text of extractTranslatePipeStrings(input.value)) {
39
+ pushMessage(node, text);
40
+ }
41
+ }
42
+ if (isBoundText(node)) {
43
+ // for (const text of extractTranslatePipeStrings(node.value)) {
44
+ // pushMessage(node, text);
45
+ // }
46
+ for (const item of extractGettextCallsFromHtmlExpression(node.sourceSpan.toString())) {
47
+ pushMessage(node, item.gettextString, null, item.context);
48
+ }
49
+ const fromAst = extractTranslatePipeStrings(node.value);
50
+ const fromSource = extractTranslatePipeStringsFromSource(node.sourceSpan.toString());
51
+ for (const text of [...fromAst, ...fromSource]) {
52
+ pushMessage(node, text);
53
+ }
54
+ }
55
+ for (const child of node.children ?? []) {
56
+ visit(child);
57
+ }
58
+ };
59
+ for (const node of parsed.nodes) {
60
+ visit(node);
61
+ }
62
+ if (messages.length === 0) {
63
+ messages.push(...extractTranslateDirectiveFromSource(html));
64
+ }
65
+ messages.push(...extractGettextCallsFromSource(html));
66
+ return uniqueMessages(messages);
67
+ //#endregion
68
+ }
69
+ function extractGettextCallsFromSource(html) {
70
+ //#region @backendFunc
71
+ const messages = [];
72
+ const regex = /(?:^|[\s([{?:=])(?:[a-zA-Z_$][\w$]*\.)*gettext\s*\(/g;
73
+ for (const match of html.matchAll(regex)) {
74
+ const matchIndex = match.index ?? 0;
75
+ const openParenIndex = matchIndex + match[0].lastIndexOf('(');
76
+ const argsSource = readBalancedParenthesesContent(html, openParenIndex);
77
+ if (!argsSource)
78
+ continue;
79
+ const args = splitTopLevel(argsSource, ',');
80
+ const gettextString = readStaticStringArg(args[0]);
81
+ if (!gettextString)
82
+ continue;
83
+ const context = readStaticStringArg(args[2]);
84
+ messages.push({
85
+ lineNumber: html.slice(0, matchIndex).split(/\r?\n/).length,
86
+ gettextString,
87
+ context,
88
+ });
89
+ }
90
+ return messages;
91
+ //#endregion
92
+ }
93
+ function extractGettextCallsFromHtmlExpression(source) {
94
+ //#region @backendFunc
95
+ const result = [];
96
+ const expression = source
97
+ .replace(/^\s*\{\{\s*/, '')
98
+ .replace(/\s*\}\}\s*$/, '')
99
+ .trim();
100
+ const gettextCallRegex = /(?:^|[\s(])(?:[a-zA-Z_$][\w$]*\.)*gettext\s*\(/g;
101
+ for (const match of expression.matchAll(gettextCallRegex)) {
102
+ const openParenIndex = match.index + match[0].lastIndexOf('(');
103
+ const argsSource = readBalancedParenthesesContent(expression, openParenIndex);
104
+ if (!argsSource)
105
+ continue;
106
+ const args = splitTopLevel(argsSource, ',');
107
+ const gettextString = readStaticStringArg(args[0]);
108
+ if (!gettextString)
109
+ continue;
110
+ const context = readStaticStringArg(args[2]);
111
+ result.push({
112
+ gettextString,
113
+ context,
114
+ });
115
+ }
116
+ return result;
117
+ //#endregion
118
+ }
119
+ function readBalancedParenthesesContent(source, openParenIndex) {
120
+ //#region @backendFunc
121
+ let depth = 0;
122
+ let quote = null;
123
+ let result = '';
124
+ for (let i = openParenIndex; i < source.length; i++) {
125
+ const char = source[i];
126
+ if (quote) {
127
+ if (i !== openParenIndex)
128
+ result += char;
129
+ if (char === quote && source[i - 1] !== '\\') {
130
+ quote = null;
131
+ }
132
+ continue;
133
+ }
134
+ if (char === '"' || char === "'" || char === '`') {
135
+ quote = char;
136
+ if (i !== openParenIndex)
137
+ result += char;
138
+ continue;
139
+ }
140
+ if (char === '(') {
141
+ depth++;
142
+ if (depth > 1)
143
+ result += char;
144
+ continue;
145
+ }
146
+ if (char === ')') {
147
+ depth--;
148
+ if (depth === 0) {
149
+ return result.trim();
150
+ }
151
+ result += char;
152
+ continue;
153
+ }
154
+ if (i !== openParenIndex) {
155
+ result += char;
156
+ }
157
+ }
158
+ return null;
159
+ //#endregion
160
+ }
161
+ function readStaticStringArg(arg) {
162
+ //#region @backendFunc
163
+ if (!arg)
164
+ return undefined;
165
+ const trimmed = arg.trim();
166
+ const match = trimmed.match(/^(['"`])([\s\S]*)\1$/);
167
+ if (!match)
168
+ return undefined;
169
+ const quote = match[1];
170
+ const value = match[2];
171
+ if (quote === '`' && value.includes('${')) {
172
+ return undefined;
173
+ }
174
+ return value;
175
+ //#endregion
176
+ }
177
+ function extractTranslateParamsFromSource(source) {
178
+ //#region @backendFunc
179
+ const match = source.match(/\[translate-params\]\s*=\s*"([\s\S]*?)"/);
180
+ if (!match)
181
+ return null;
182
+ return extractObjectLiteralParams(match[1]);
183
+ //#endregion
184
+ }
185
+ function extractObjectLiteralParams(raw) {
186
+ //#region @backendFunc
187
+ const body = raw.trim().replace(/^\{/, '').replace(/\}$/, '').trim();
188
+ if (!body)
189
+ return null;
190
+ const result = {};
191
+ for (const part of splitTopLevel(body, ',')) {
192
+ const colonIndex = part.indexOf(':');
193
+ if (colonIndex === -1)
194
+ continue;
195
+ const key = part
196
+ .slice(0, colonIndex)
197
+ .trim()
198
+ .replace(/^['"]|['"]$/g, '');
199
+ const value = part.slice(colonIndex + 1).trim();
200
+ if (key && value) {
201
+ result[key] = value;
202
+ }
203
+ }
204
+ return Object.keys(result).length ? result : null;
205
+ //#endregion
206
+ }
207
+ function splitTopLevel(input, separator) {
208
+ //#region @backendFunc
209
+ const result = [];
210
+ let current = '';
211
+ let depth = 0;
212
+ let quote = null;
213
+ for (let i = 0; i < input.length; i++) {
214
+ const char = input[i];
215
+ if (quote) {
216
+ current += char;
217
+ if (char === quote && input[i - 1] !== '\\')
218
+ quote = null;
219
+ continue;
220
+ }
221
+ if (char === '"' || char === "'" || char === '`') {
222
+ quote = char;
223
+ current += char;
224
+ continue;
225
+ }
226
+ if (char === '{' || char === '(' || char === '[')
227
+ depth++;
228
+ if (char === '}' || char === ')' || char === ']')
229
+ depth--;
230
+ if (char === separator && depth === 0) {
231
+ result.push(current.trim());
232
+ current = '';
233
+ continue;
234
+ }
235
+ current += char;
236
+ }
237
+ if (current.trim())
238
+ result.push(current.trim());
239
+ return result;
240
+ //#endregion
241
+ }
242
+ function extractTranslatePipeStringsFromSource(source) {
243
+ //#region @backendFunc
244
+ const expression = source
245
+ .replace(/^\s*\{\{\s*/, '')
246
+ .replace(/\s*\}\}\s*$/, '')
247
+ .trim();
248
+ if (!expression.includes('| translate'))
249
+ return [];
250
+ // {{ (cond ? 'Yes' : 'No') | translate }}
251
+ const wrappedConditional = expression.match(/^\(([\s\S]+)\)\s*\|\s*translate\b/);
252
+ if (wrappedConditional) {
253
+ return extractStringLiterals(wrappedConditional[1]);
254
+ }
255
+ // {{ row.x ? 'Yes' : 'No' | translate }}
256
+ // Angular means only 'No' is translated
257
+ const directStringPipe = expression.match(/(['"`])((?:\\.|(?!\1)[\s\S])*)\1\s*\|\s*translate\b/);
258
+ if (directStringPipe) {
259
+ return [directStringPipe[2].trim()];
260
+ }
261
+ return [];
262
+ //#endregion
263
+ }
264
+ function extractStringLiterals(source) {
265
+ //#region @backendFunc
266
+ const result = [];
267
+ for (const match of source.matchAll(/(['"`])((?:\\.|(?!\1)[\s\S])*)\1/g)) {
268
+ const value = match[2].trim();
269
+ if (value)
270
+ result.push(value);
271
+ }
272
+ return result;
273
+ //#endregion
274
+ }
275
+ function getNodeAttributes(node) {
276
+ //#region @backendFunc
277
+ return [
278
+ ...(node.attributes ?? []),
279
+ ...(node.templateAttrs ?? []).filter((a) => a.name),
280
+ ];
281
+ //#endregion
282
+ }
283
+ function getNodeInputs(node) {
284
+ //#region @backendFunc
285
+ return [
286
+ ...(node.inputs ?? []),
287
+ ...(node.templateAttrs ?? []).filter((a) => a.value),
288
+ ];
289
+ //#endregion
290
+ }
291
+ function isText(node) {
292
+ //#region @backendFunc
293
+ return (node?.constructor?.name === 'Text' || typeof node?.value === 'string');
294
+ //#endregion
295
+ }
296
+ function isBoundText(node) {
297
+ //#region @backendFunc
298
+ return node?.constructor?.name === 'BoundText' && node?.value;
299
+ //#endregion
300
+ }
301
+ function collectText(nodes) {
302
+ //#region @backendFunc
303
+ let result = '';
304
+ for (const node of nodes) {
305
+ if (isText(node) && typeof node.value === 'string') {
306
+ result += node.value;
307
+ continue;
308
+ }
309
+ if (isBoundText(node)) {
310
+ result += node.sourceSpan.toString();
311
+ continue;
312
+ }
313
+ if (node.children) {
314
+ result += collectText(node.children);
315
+ }
316
+ }
317
+ return result;
318
+ //#endregion
319
+ }
320
+ function extractTranslateDirectiveFromSource(html) {
321
+ //#region @backendFunc
322
+ const messages = [];
323
+ const regex = /<([a-zA-Z0-9-]+)(?=[^>]*\stranslate(?:\s|>|=))[^>]*>([\s\S]*?)<\/\1>/g;
324
+ for (const match of html.matchAll(regex)) {
325
+ const fullMatch = match[0];
326
+ const innerHtml = match[2];
327
+ const index = match.index ?? 0;
328
+ const lineNumber = html.slice(0, index).split(/\r?\n/).length;
329
+ const text = normalizeHtmlText(stripHtml(innerHtml));
330
+ if (!text)
331
+ continue;
332
+ const contextMatch = fullMatch.match(/\stranslate\s*=\s*["']([^"']+)["']/);
333
+ messages.push({
334
+ lineNumber,
335
+ gettextString: text,
336
+ context: contextMatch?.[1],
337
+ });
338
+ }
339
+ return messages;
340
+ //#endregion
341
+ }
342
+ function stripHtml(html) {
343
+ //#region @backendFunc
344
+ return html.replace(/<[^>]+>/g, '');
345
+ //#endregion
346
+ }
347
+ function extractTranslateParams(inputs) {
348
+ //#region @backendFunc
349
+ const input = inputs.find((i) => i.name === 'translate-params' || i.name === 'translateParams');
350
+ if (!input?.value)
351
+ return null;
352
+ return extractObjectLiteralFromAst(input.value);
353
+ //#endregion
354
+ }
355
+ function extractObjectLiteralFromAst(ast) {
356
+ //#region @backendFunc
357
+ if (ast?.constructor?.name !== 'LiteralMap')
358
+ return null;
359
+ const result = {};
360
+ ast.keys.forEach((keyItem, index) => {
361
+ const key = typeof keyItem === 'string' ? keyItem : keyItem.key;
362
+ const value = ast.values[index];
363
+ if (key && value) {
364
+ result[key] = astToSource(value);
365
+ }
366
+ });
367
+ return Object.keys(result).length ? result : null;
368
+ //#endregion
369
+ }
370
+ function extractTranslatePipeStrings(ast) {
371
+ //#region @backendFunc
372
+ const result = [];
373
+ const visit = (node) => {
374
+ if (!node || typeof node !== 'object')
375
+ return;
376
+ if (node.constructor?.name === 'BindingPipe' &&
377
+ node.name === 'translate') {
378
+ result.push(...extractStaticStringsFromExpression(node.exp));
379
+ return;
380
+ }
381
+ for (const value of Object.values(node)) {
382
+ if (Array.isArray(value)) {
383
+ for (const item of value)
384
+ visit(item);
385
+ }
386
+ else if (value && typeof value === 'object') {
387
+ visit(value);
388
+ }
389
+ }
390
+ };
391
+ visit(ast);
392
+ return result;
393
+ //#endregion
394
+ }
395
+ function extractStaticStringsFromExpression(ast) {
396
+ //#region @backendFunc
397
+ if (!ast)
398
+ return [];
399
+ if (ast.constructor?.name === 'LiteralPrimitive' &&
400
+ typeof ast.value === 'string') {
401
+ return [ast.value];
402
+ }
403
+ if (ast.constructor?.name === 'Conditional') {
404
+ return [
405
+ ...extractStaticStringsFromExpression(ast.trueExp),
406
+ ...extractStaticStringsFromExpression(ast.falseExp),
407
+ ];
408
+ }
409
+ if (ast.constructor?.name === 'BindingPipe' && ast.name === 'translate') {
410
+ return extractStaticStringsFromExpression(ast.exp);
411
+ }
412
+ return [];
413
+ //#endregion
414
+ }
415
+ function astToSource(ast) {
416
+ //#region @backendFunc
417
+ if (!ast)
418
+ return '';
419
+ if (typeof ast.source === 'string') {
420
+ return ast.source;
421
+ }
422
+ if (ast.constructor?.name === 'PropertyRead') {
423
+ const receiver = astToSource(ast.receiver);
424
+ return receiver ? `${receiver}.${ast.name}` : ast.name;
425
+ }
426
+ if (ast.constructor?.name === 'ImplicitReceiver') {
427
+ return '';
428
+ }
429
+ if (ast.constructor?.name === 'LiteralPrimitive') {
430
+ return typeof ast.value === 'string'
431
+ ? `'${ast.value}'`
432
+ : String(ast.value);
433
+ }
434
+ return ast.toString?.() === '[object Object]' ? '' : String(ast);
435
+ //#endregion
436
+ }
437
+ function normalizeHtmlText(text) {
438
+ //#region @backendFunc
439
+ return text.replace(/\s+/g, ' ').trim();
440
+ //#endregion
441
+ }
442
+ function uniqueMessages(messages) {
443
+ //#region @backendFunc
444
+ const seen = new Set();
445
+ return messages.filter(message => {
446
+ const key = JSON.stringify([
447
+ message.lineNumber,
448
+ message.gettextString,
449
+ message.context,
450
+ ]);
451
+ if (seen.has(key))
452
+ return false;
453
+ seen.add(key);
454
+ return true;
455
+ });
456
+ //#endregion
457
+ }
458
+ //#endregion
459
+ //end of namespace UtilsI18nExtractGettextTranslateFromHtml
460
+ //# sourceMappingURL=utils-i18n-extract-gettext-translate-from-html.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils-i18n-extract-gettext-translate-from-html.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}