@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,245 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UtilsPoFile = void 0;
4
+ const fs_1 = require("fs"); // @backend
5
+ const path_1 = require("path");
6
+ var UtilsPoFile;
7
+ (function (UtilsPoFile) {
8
+ //#region generate po files
9
+ function generatePoFiles(files, locales, destinationAbsFolderPath) {
10
+ //#region @backendFunc
11
+ (0, fs_1.mkdirSync)(destinationAbsFolderPath, { recursive: true });
12
+ for (const locale of locales) {
13
+ const poContent = generatePoFileContent(files, locale);
14
+ const poFilePath = (0, path_1.join)(destinationAbsFolderPath, `${locale}.po`);
15
+ (0, fs_1.writeFileSync)(poFilePath, poContent, 'utf8');
16
+ }
17
+ //#endregion
18
+ }
19
+ UtilsPoFile.generatePoFiles = generatePoFiles;
20
+ //#endregion
21
+ //#region generate po file content
22
+ function generatePoFileContent(files, locale) {
23
+ //#region @backendFunc
24
+ const entries = new Map();
25
+ for (const file of files) {
26
+ for (const tag of file.tags) {
27
+ const context = tag.context || '';
28
+ const key = `${context}\u0004${tag.gettextString}`;
29
+ let entry = entries.get(key);
30
+ if (!entry) {
31
+ entry = {
32
+ msgid: tag.gettextString,
33
+ context: tag.context,
34
+ translation: tag.translation,
35
+ refs: [],
36
+ };
37
+ entries.set(key, entry);
38
+ }
39
+ entry.refs.push(`${file.fileRelativePath}:${tag.lineNumber}`);
40
+ }
41
+ }
42
+ const lines = [];
43
+ lines.push('msgid ""');
44
+ lines.push('msgstr ""');
45
+ lines.push(`"Language: ${escapePoString(locale)}\\n"`);
46
+ lines.push('"Content-Type: text/plain; charset=UTF-8\\n"');
47
+ lines.push('"Content-Transfer-Encoding: 8bit\\n"');
48
+ lines.push('');
49
+ for (const entry of entries.values()) {
50
+ for (const ref of entry.refs) {
51
+ lines.push(`#: ${ref}`);
52
+ }
53
+ if (entry.context) {
54
+ lines.push(`msgctxt "${escapePoString(entry.context)}"`);
55
+ }
56
+ lines.push(`msgid "${escapePoString(entry.msgid)}"`);
57
+ lines.push(`msgstr "${entry.translation || ''}"`);
58
+ lines.push('');
59
+ }
60
+ return lines.join('\n');
61
+ //#endregion
62
+ }
63
+ UtilsPoFile.generatePoFileContent = generatePoFileContent;
64
+ //#endregion
65
+ //#region extract po to json
66
+ function extractPoToJson(poFileContent) {
67
+ //#region @backendFunc
68
+ const entries = parsePoEntries(poFileContent);
69
+ const filesMap = new Map();
70
+ for (const entry of entries) {
71
+ if (!entry.msgid)
72
+ continue;
73
+ for (const ref of entry.refs) {
74
+ const parsedRef = parsePoRef(ref);
75
+ if (!parsedRef)
76
+ continue;
77
+ let file = filesMap.get(parsedRef.fileAbsPath);
78
+ if (!file) {
79
+ file = {
80
+ fileAbsPath: parsedRef.fileAbsPath,
81
+ tags: [],
82
+ };
83
+ filesMap.set(parsedRef.fileAbsPath, file);
84
+ }
85
+ file.tags.push({
86
+ lineNumber: parsedRef.lineNumber,
87
+ gettextString: entry.msgid,
88
+ context: entry.msgctxt,
89
+ translation: entry.msgstr || undefined,
90
+ });
91
+ }
92
+ }
93
+ return [...filesMap.values()];
94
+ //#endregion
95
+ }
96
+ UtilsPoFile.extractPoToJson = extractPoToJson;
97
+ //#endregion
98
+ //#region generate translation override interface
99
+ function generateTranslationOverrideInterface(file, interfaceName, locale) {
100
+ //#region @backendFunc
101
+ const contexts = new Map();
102
+ for (const tag of file.tags) {
103
+ const context = tag.context ?? '';
104
+ let arr = contexts.get(context);
105
+ if (!arr) {
106
+ arr = [];
107
+ contexts.set(context, arr);
108
+ }
109
+ if (!arr.includes(tag.gettextString)) {
110
+ arr.push(tag.gettextString);
111
+ }
112
+ }
113
+ const lines = [];
114
+ lines.push(`export interface ${interfaceName} {`);
115
+ lines.push(` "${escapeTs(locale)}": {`);
116
+ for (const [context, strings] of contexts) {
117
+ lines.push(` "${escapeTs(context)}": {`);
118
+ for (const text of strings.sort()) {
119
+ lines.push(` "${escapeTs(text)}"?: string;`);
120
+ }
121
+ lines.push(` };`);
122
+ lines.push('');
123
+ }
124
+ lines.push(` };`);
125
+ lines.push(`}`);
126
+ return lines.join('\n');
127
+ //#endregion
128
+ }
129
+ UtilsPoFile.generateTranslationOverrideInterface = generateTranslationOverrideInterface;
130
+ function escapeTs(value) {
131
+ return value.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
132
+ }
133
+ //#endregion
134
+ //#region merge gettext file
135
+ function mergeGettextFile(jsonContent1FromTsHtml, json2ContentFromPoFileModifedByUser) {
136
+ //#region @backendFunc
137
+ const oldTagsByKey = new Map();
138
+ for (const oldTag of json2ContentFromPoFileModifedByUser?.tags ?? []) {
139
+ oldTagsByKey.set(getGettextTagKey(oldTag), oldTag);
140
+ }
141
+ return {
142
+ fileAbsPath: jsonContent1FromTsHtml.fileAbsPath,
143
+ fileRelativePath: jsonContent1FromTsHtml.fileRelativePath,
144
+ isAppFile: jsonContent1FromTsHtml.isAppFile,
145
+ tags: jsonContent1FromTsHtml.tags.map(sourceTag => {
146
+ const oldTag = oldTagsByKey.get(getGettextTagKey(sourceTag));
147
+ return {
148
+ ...sourceTag,
149
+ lineNumber: sourceTag.lineNumber,
150
+ translation: oldTag?.translation || undefined,
151
+ };
152
+ }),
153
+ };
154
+ //#endregion
155
+ }
156
+ UtilsPoFile.mergeGettextFile = mergeGettextFile;
157
+ //#endregion
158
+ //#region models & helpers
159
+ function getGettextTagKey(tag) {
160
+ return `${tag.context ?? ''}\u0004${tag.gettextString}`;
161
+ }
162
+ function parsePoEntries(po) {
163
+ //#region @backendFunc
164
+ const lines = po.split(/\r?\n/);
165
+ const entries = [];
166
+ let current = { refs: [] };
167
+ let activeField = null;
168
+ const flush = () => {
169
+ if (current.refs.length ||
170
+ current.msgctxt !== undefined ||
171
+ current.msgid !== undefined ||
172
+ current.msgstr !== undefined) {
173
+ entries.push(current);
174
+ }
175
+ current = { refs: [] };
176
+ activeField = null;
177
+ };
178
+ for (const line of lines) {
179
+ const trimmed = line.trim();
180
+ if (!trimmed) {
181
+ flush();
182
+ continue;
183
+ }
184
+ if (trimmed.startsWith('#:')) {
185
+ current.refs.push(...trimmed.slice(2).trim().split(/\s+/));
186
+ activeField = null;
187
+ continue;
188
+ }
189
+ if (trimmed.startsWith('msgctxt')) {
190
+ current.msgctxt = readPoQuoted(trimmed.slice('msgctxt'.length).trim());
191
+ activeField = 'msgctxt';
192
+ continue;
193
+ }
194
+ if (trimmed.startsWith('msgid')) {
195
+ current.msgid = readPoQuoted(trimmed.slice('msgid'.length).trim());
196
+ activeField = 'msgid';
197
+ continue;
198
+ }
199
+ if (trimmed.startsWith('msgstr')) {
200
+ current.msgstr = readPoQuoted(trimmed.slice('msgstr'.length).trim());
201
+ activeField = 'msgstr';
202
+ continue;
203
+ }
204
+ if (trimmed.startsWith('"') && activeField) {
205
+ current[activeField] =
206
+ (current[activeField] ?? '') + readPoQuoted(trimmed);
207
+ }
208
+ }
209
+ flush();
210
+ // skip header
211
+ return entries.filter(entry => !(entry.msgid === '' && !entry.refs.length));
212
+ //#endregion
213
+ }
214
+ function parsePoRef(ref) {
215
+ //#region @backendFunc
216
+ const match = ref.match(/^(.+):(\d+)$/);
217
+ if (!match)
218
+ return null;
219
+ return {
220
+ fileAbsPath: match[1],
221
+ lineNumber: Number(match[2]),
222
+ };
223
+ //#endregion
224
+ }
225
+ function escapePoString(value) {
226
+ return value
227
+ .replace(/\\/g, '\\\\')
228
+ .replace(/"/g, '\\"')
229
+ .replace(/\n/g, '\\n');
230
+ }
231
+ function readPoQuoted(value) {
232
+ const match = value.match(/^"([\s\S]*)"$/);
233
+ if (!match)
234
+ return '';
235
+ return unescapePoString(match[1]);
236
+ }
237
+ function unescapePoString(value) {
238
+ return value
239
+ .replace(/\\n/g, '\n')
240
+ .replace(/\\"/g, '"')
241
+ .replace(/\\\\/g, '\\');
242
+ }
243
+ //#endregion
244
+ })(UtilsPoFile || (exports.UtilsPoFile = UtilsPoFile = {}));
245
+ //# sourceMappingURL=utils-po-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils-po-file.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,239 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const utils_po_file_1 = require("./utils-po-file");
4
+ describe('UtilsPoFile.extractPoToJson', () => {
5
+ it('extracts translations from msgstr', () => {
6
+ const po = `
7
+ msgid ""
8
+ msgstr ""
9
+ "Language: pl-PL\\n"
10
+ "Content-Type: text/plain; charset=UTF-8\\n"
11
+
12
+ #: src/lib/test.html:8
13
+ msgctxt "taon-ui"
14
+ msgid "You purchased"
15
+ msgstr "Kupiłeś"
16
+
17
+ #: src/lib/test.html:9
18
+ msgid "products"
19
+ msgstr "produkty"
20
+
21
+ #: src/lib/test.html:11
22
+ msgid "You purchased [[ howMany ]] products"
23
+ msgstr "Kupiłeś [[ howMany ]] produktów"
24
+ `;
25
+ expect(utils_po_file_1.UtilsPoFile.extractPoToJson(po)).toEqual([
26
+ {
27
+ fileAbsPath: 'src/lib/test.html',
28
+ tags: [
29
+ {
30
+ lineNumber: 8,
31
+ gettextString: 'You purchased',
32
+ context: 'taon-ui',
33
+ translation: 'Kupiłeś',
34
+ },
35
+ {
36
+ lineNumber: 9,
37
+ gettextString: 'products',
38
+ context: undefined,
39
+ translation: 'produkty',
40
+ },
41
+ {
42
+ lineNumber: 11,
43
+ gettextString: 'You purchased [[ howMany ]] products',
44
+ context: undefined,
45
+ translation: 'Kupiłeś [[ howMany ]] produktów',
46
+ },
47
+ ],
48
+ },
49
+ ]);
50
+ });
51
+ it('keeps empty msgstr as undefined', () => {
52
+ const po = `
53
+ #: src/lib/test.html:1
54
+ msgid "Hello"
55
+ msgstr ""
56
+ `;
57
+ expect(utils_po_file_1.UtilsPoFile.extractPoToJson(po)).toEqual([
58
+ {
59
+ fileAbsPath: 'src/lib/test.html',
60
+ tags: [
61
+ {
62
+ lineNumber: 1,
63
+ gettextString: 'Hello',
64
+ context: undefined,
65
+ translation: undefined,
66
+ },
67
+ ],
68
+ },
69
+ ]);
70
+ });
71
+ });
72
+ describe('UtilsPoFile.mergeGettextFile', () => {
73
+ it('keeps translations from old po json and refreshes line numbers from source', () => {
74
+ const freshFromSource = {
75
+ fileAbsPath: 'c:/project/src/lib/test.component.html',
76
+ fileRelativePath: 'src/lib/test.component.html',
77
+ isAppFile: false,
78
+ tags: [
79
+ {
80
+ lineNumber: 20,
81
+ gettextString: 'You purchased',
82
+ context: 'taon-ui',
83
+ },
84
+ {
85
+ lineNumber: 21,
86
+ gettextString: 'products',
87
+ },
88
+ ],
89
+ };
90
+ const oldFromPo = {
91
+ fileAbsPath: 'src/lib/test.component.html',
92
+ tags: [
93
+ {
94
+ lineNumber: 8,
95
+ gettextString: 'You purchased',
96
+ context: 'taon-ui',
97
+ translation: 'Kupiłeś',
98
+ },
99
+ {
100
+ lineNumber: 9,
101
+ gettextString: 'products',
102
+ translation: 'produkty',
103
+ },
104
+ ],
105
+ };
106
+ expect(utils_po_file_1.UtilsPoFile.mergeGettextFile(freshFromSource, oldFromPo)).toEqual({
107
+ fileAbsPath: 'c:/project/src/lib/test.component.html',
108
+ fileRelativePath: 'src/lib/test.component.html',
109
+ isAppFile: false,
110
+ tags: [
111
+ {
112
+ lineNumber: 20,
113
+ gettextString: 'You purchased',
114
+ context: 'taon-ui',
115
+ translation: 'Kupiłeś',
116
+ },
117
+ {
118
+ lineNumber: 21,
119
+ gettextString: 'products',
120
+ translation: 'produkty',
121
+ },
122
+ ],
123
+ });
124
+ });
125
+ it('returns fresh source tags when old po json does not exist', () => {
126
+ const freshFromSource = {
127
+ fileAbsPath: 'c:/project/src/lib/test.component.html',
128
+ fileRelativePath: 'src/lib/test.component.html',
129
+ isAppFile: false,
130
+ tags: [
131
+ {
132
+ lineNumber: 1,
133
+ gettextString: 'Hello',
134
+ },
135
+ ],
136
+ };
137
+ expect(utils_po_file_1.UtilsPoFile.mergeGettextFile(freshFromSource, null)).toEqual({
138
+ fileAbsPath: 'c:/project/src/lib/test.component.html',
139
+ fileRelativePath: 'src/lib/test.component.html',
140
+ isAppFile: false,
141
+ tags: [
142
+ {
143
+ lineNumber: 1,
144
+ gettextString: 'Hello',
145
+ translation: undefined,
146
+ },
147
+ ],
148
+ });
149
+ });
150
+ it('does not keep translations for removed source strings', () => {
151
+ const freshFromSource = {
152
+ fileAbsPath: 'c:/project/src/lib/test.component.html',
153
+ tags: [
154
+ {
155
+ lineNumber: 1,
156
+ gettextString: 'Still exists',
157
+ },
158
+ ],
159
+ };
160
+ const oldFromPo = {
161
+ fileAbsPath: 'src/lib/test.component.html',
162
+ tags: [
163
+ {
164
+ lineNumber: 1,
165
+ gettextString: 'Still exists',
166
+ translation: 'Nadal istnieje',
167
+ },
168
+ {
169
+ lineNumber: 2,
170
+ gettextString: 'Removed',
171
+ translation: 'Usunięte',
172
+ },
173
+ ],
174
+ };
175
+ expect(utils_po_file_1.UtilsPoFile.mergeGettextFile(freshFromSource, oldFromPo)).toEqual({
176
+ fileAbsPath: 'c:/project/src/lib/test.component.html',
177
+ fileRelativePath: undefined,
178
+ isAppFile: undefined,
179
+ tags: [
180
+ {
181
+ lineNumber: 1,
182
+ gettextString: 'Still exists',
183
+ translation: 'Nadal istnieje',
184
+ },
185
+ ],
186
+ });
187
+ });
188
+ it('matches context and empty context separately', () => {
189
+ const freshFromSource = {
190
+ fileAbsPath: 'c:/project/src/lib/test.component.html',
191
+ tags: [
192
+ {
193
+ lineNumber: 1,
194
+ gettextString: 'Save',
195
+ },
196
+ {
197
+ lineNumber: 2,
198
+ gettextString: 'Save',
199
+ context: 'admin',
200
+ },
201
+ ],
202
+ };
203
+ const oldFromPo = {
204
+ fileAbsPath: 'src/lib/test.component.html',
205
+ tags: [
206
+ {
207
+ lineNumber: 10,
208
+ gettextString: 'Save',
209
+ translation: 'Zapisz',
210
+ },
211
+ {
212
+ lineNumber: 11,
213
+ gettextString: 'Save',
214
+ context: 'admin',
215
+ translation: 'Zapisz admina',
216
+ },
217
+ ],
218
+ };
219
+ expect(utils_po_file_1.UtilsPoFile.mergeGettextFile(freshFromSource, oldFromPo)).toEqual({
220
+ fileAbsPath: 'c:/project/src/lib/test.component.html',
221
+ fileRelativePath: undefined,
222
+ isAppFile: undefined,
223
+ tags: [
224
+ {
225
+ lineNumber: 1,
226
+ gettextString: 'Save',
227
+ translation: 'Zapisz',
228
+ },
229
+ {
230
+ lineNumber: 2,
231
+ gettextString: 'Save',
232
+ context: 'admin',
233
+ translation: 'Zapisz admina',
234
+ },
235
+ ],
236
+ });
237
+ });
238
+ });
239
+ //# sourceMappingURL=utils-po-file.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils-po-file.test.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ export declare const MainPageActiveContext: {
2
+ readonly contextName: string;
3
+ readonly appId: string;
4
+ cloneAsRemote: (cloneOpt?: {
5
+ overrideRemoteHost?: string;
6
+ }) => any;
7
+ cloneAsNormal: (cloneOpt?: {
8
+ overrideHost?: string;
9
+ }) => any;
10
+ __ref(): Promise<import("taon/lib").EndpointContext>;
11
+ readonly __refSync: import("taon/lib").EndpointContext;
12
+ getClassInstance<T>(ctor: new (...args: any[]) => T): T;
13
+ getClass<T>(ctor: new (...args: any[]) => T): new (...args: any[]) => T;
14
+ initialize: (overrideOptions?: import("taon/lib").Models.TaonInitializeParams) => Promise<import("taon/lib").EndpointContext>;
15
+ readonly realtime: {
16
+ readonly client: import("taon/lib").RealtimeClient;
17
+ readonly server: import("taon/lib").RealtimeServer;
18
+ };
19
+ };
@@ -0,0 +1,19 @@
1
+ //#region imports
2
+ //
3
+ import { TaonBaseContext, createContext } from 'taon/lib';
4
+ import { HOST_CONFIG } from '../../app.hosts';
5
+ // import { MIGRATIONS_CLASSES_FOR_MainPageActiveContext } from '@taon-dev/i18n/src';
6
+ //#endregion
7
+ export const MainPageActiveContext = createContext(() => ({
8
+ ...HOST_CONFIG['MainPageActiveContext'],
9
+ contextName: 'MainPageActiveContext',
10
+ database: true,
11
+ // migrations: { ...MIGRATIONS_CLASSES_FOR_MainPageActiveContext },
12
+ contexts: { TaonBaseContext },
13
+ entities: {},
14
+ controllers: {},
15
+ repositories: {},
16
+ middlewares: {},
17
+ providers: {},
18
+ }));
19
+ //# sourceMappingURL=main-page.active.context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main-page.active.context.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA,iBAAiB;AACjB,EAAE;AACF,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,qFAAqF;AACrF,YAAY;AAEZ,MAAM,CAAC,MAAM,qBAAqB,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC;IACxD,GAAG,WAAW,CAAC,uBAAuB,CAAC;IACvC,WAAW,EAAE,uBAAuB;IACpC,QAAQ,EAAE,IAAI;IACd,mEAAmE;IACnE,QAAQ,EAAE,EAAE,eAAe,EAAE;IAC7B,QAAQ,EAAE,EAAE;IACZ,WAAW,EAAE,EAAE;IACf,YAAY,EAAE,EAAE;IAChB,WAAW,EAAE,EAAE;IACf,SAAS,EAAE,EAAE;CACd,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- export declare function dummy1782506655269(): void;
1
+ export declare function dummy1783089829070(): void;
@@ -1,2 +1,2 @@
1
- export function dummy1782506655269() { }
1
+ export function dummy1783089829070() { }
2
2
  //# sourceMappingURL=app.electron.js.map
@@ -24,7 +24,7 @@ export declare const CLIENT_DEV_WEBSQL_APP_PORT_1: any;
24
24
  /**
25
25
  * Electron/angular website url for electron app purpose (ipc backend)
26
26
  */
27
- export declare const FRONTEND_NORMAL_ELECTRON_PORT_1 = 4211;
27
+ export declare const FRONTEND_NORMAL_ELECTRON_PORT_1 = 4212;
28
28
  /**
29
29
  * Backend url - use as "host" inside your context
30
30
  *
@@ -39,6 +39,47 @@ export declare const FRONTEND_HOST_URL_1: string;
39
39
  * Frontend electron host url - use in app.electron.ts with win.loadURL(FRONTEND_HOST_URL_ELECTRON);
40
40
  */
41
41
  export declare const FRONTEND_HOST_URL_ELECTRON_1: string;
42
+ /**
43
+ * Your context backend port
44
+ *
45
+ */
46
+ export declare const HOST_BACKEND_PORT_2: any;
47
+ /**
48
+ * Angular website url with normal/nodejs backend
49
+ *
50
+ */
51
+ export declare const FRONTEND_NORMAL_APP_PORT_2: any;
52
+ /**
53
+ * @deprecated use FRONTEND_NORMAL_APP_PORT instead
54
+ */
55
+ export declare const CLIENT_DEV_NORMAL_APP_PORT_2: any;
56
+ /**
57
+ * Angular website url with websql backend
58
+ *
59
+ */
60
+ export declare const FRONTEND_WEBSQL_APP_PORT_2: any;
61
+ /**
62
+ * @deprecated use FRONTEND_WEBSQL_APP_PORT instead
63
+ */
64
+ export declare const CLIENT_DEV_WEBSQL_APP_PORT_2: any;
65
+ /**
66
+ * Electron/angular website url for electron app purpose (ipc backend)
67
+ */
68
+ export declare const FRONTEND_NORMAL_ELECTRON_PORT_2 = 4212;
69
+ /**
70
+ * Backend url - use as "host" inside your context
71
+ *
72
+ */
73
+ export declare const HOST_URL_2: string;
74
+ /**
75
+ * Frontend host url - use as "frontendHost" inside your context
76
+ *
77
+ */
78
+ export declare const FRONTEND_HOST_URL_2: string;
79
+ /**
80
+ * Frontend electron host url - use in app.electron.ts with win.loadURL(FRONTEND_HOST_URL_ELECTRON);
81
+ */
82
+ export declare const FRONTEND_HOST_URL_ELECTRON_2: string;
42
83
  /**
43
84
  * Your context backend port
44
85
  * @deprecated use HOST_BACKEND_PORT_n instead
@@ -65,7 +106,7 @@ export declare const CLIENT_DEV_WEBSQL_APP_PORT: any;
65
106
  /**
66
107
  * Electron/angular website url for electron app purpose (ipc backend)
67
108
  */
68
- export declare const FRONTEND_NORMAL_ELECTRON_PORT = 4211;
109
+ export declare const FRONTEND_NORMAL_ELECTRON_PORT = 4212;
69
110
  /**
70
111
  * Backend url - use as "host" inside your context
71
112
  * @deprecated use HOST_URL_n instead
@@ -92,4 +133,15 @@ export declare const HOST_CONFIG: {
92
133
  frontendHost: string;
93
134
  appId: string;
94
135
  };
136
+ /** Relative file path for context */
137
+ /** Name of context (var, let, const variable) inside *.ts file. */
138
+ MainPageActiveContext: {
139
+ activeContext: string;
140
+ contextName: string;
141
+ hostPortNumber: number;
142
+ host: string;
143
+ frontendHostPortNumber: number;
144
+ frontendHost: string;
145
+ appId: string;
146
+ };
95
147
  };