@esgettext/runtime 1.0.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 (250) hide show
  1. package/LICENSE +19 -0
  2. package/README.md +411 -0
  3. package/_bundles/runtime.js +1356 -0
  4. package/_bundles/runtime.js.map +1 -0
  5. package/_bundles/runtime.min.js +2 -0
  6. package/_bundles/runtime.min.js.map +1 -0
  7. package/api-docs/assets/highlight.css +127 -0
  8. package/api-docs/assets/main.js +59 -0
  9. package/api-docs/assets/navigation.js +1 -0
  10. package/api-docs/assets/search.js +1 -0
  11. package/api-docs/assets/style.css +1414 -0
  12. package/api-docs/classes/Textdomain.html +364 -0
  13. package/api-docs/index.html +222 -0
  14. package/api-docs/interfaces/Catalog.html +20 -0
  15. package/api-docs/interfaces/CatalogEntries.html +11 -0
  16. package/api-docs/interfaces/LocaleContainer.html +19 -0
  17. package/api-docs/interfaces/Placeholders.html +9 -0
  18. package/api-docs/modules.html +6 -0
  19. package/lib/core/browser-environment.d.ts +1 -0
  20. package/lib/core/browser-environment.js +12 -0
  21. package/lib/core/browser-environment.js.map +1 -0
  22. package/lib/core/catalog-cache.d.ts +10 -0
  23. package/lib/core/catalog-cache.js +39 -0
  24. package/lib/core/catalog-cache.js.map +1 -0
  25. package/lib/core/catalog-cache.spec.d.ts +1 -0
  26. package/lib/core/catalog-cache.spec.js +24 -0
  27. package/lib/core/catalog-cache.spec.js.map +1 -0
  28. package/lib/core/catalog-format.spec.d.ts +1 -0
  29. package/lib/core/catalog-format.spec.js +35 -0
  30. package/lib/core/catalog-format.spec.js.map +1 -0
  31. package/lib/core/catalog.d.ts +9 -0
  32. package/lib/core/catalog.js +3 -0
  33. package/lib/core/catalog.js.map +1 -0
  34. package/lib/core/data-viewlet.d.ts +11 -0
  35. package/lib/core/data-viewlet.js +57 -0
  36. package/lib/core/data-viewlet.js.map +1 -0
  37. package/lib/core/data-viewlet.spec.d.ts +1 -0
  38. package/lib/core/data-viewlet.spec.js +62 -0
  39. package/lib/core/data-viewlet.spec.js.map +1 -0
  40. package/lib/core/explode-locale.d.ts +3 -0
  41. package/lib/core/explode-locale.js +37 -0
  42. package/lib/core/explode-locale.js.map +1 -0
  43. package/lib/core/explode-locale.spec.d.ts +1 -0
  44. package/lib/core/explode-locale.spec.js +41 -0
  45. package/lib/core/explode-locale.spec.js.map +1 -0
  46. package/lib/core/germanic-plural.d.ts +1 -0
  47. package/lib/core/germanic-plural.js +8 -0
  48. package/lib/core/germanic-plural.js.map +1 -0
  49. package/lib/core/gettext-impl.d.ts +10 -0
  50. package/lib/core/gettext-impl.js +38 -0
  51. package/lib/core/gettext-impl.js.map +1 -0
  52. package/lib/core/gettext.spec.d.ts +1 -0
  53. package/lib/core/gettext.spec.js +391 -0
  54. package/lib/core/gettext.spec.js.map +1 -0
  55. package/lib/core/index.d.ts +4 -0
  56. package/lib/core/index.js +21 -0
  57. package/lib/core/index.js.map +1 -0
  58. package/lib/core/locale-container.d.ts +8 -0
  59. package/lib/core/locale-container.js +3 -0
  60. package/lib/core/locale-container.js.map +1 -0
  61. package/lib/core/path-separator.d.ts +1 -0
  62. package/lib/core/path-separator.js +12 -0
  63. package/lib/core/path-separator.js.map +1 -0
  64. package/lib/core/resolve-impl.d.ts +3 -0
  65. package/lib/core/resolve-impl.js +253 -0
  66. package/lib/core/resolve-impl.js.map +1 -0
  67. package/lib/core/resolve.spec.d.ts +1 -0
  68. package/lib/core/resolve.spec.js +345 -0
  69. package/lib/core/resolve.spec.js.map +1 -0
  70. package/lib/core/select-locale.d.ts +1 -0
  71. package/lib/core/select-locale.js +43 -0
  72. package/lib/core/select-locale.js.map +1 -0
  73. package/lib/core/select-locale.spec.d.ts +1 -0
  74. package/lib/core/select-locale.spec.js +27 -0
  75. package/lib/core/select-locale.spec.js.map +1 -0
  76. package/lib/core/set-locale-browser.spec.d.ts +1 -0
  77. package/lib/core/set-locale-browser.spec.js +17 -0
  78. package/lib/core/set-locale-browser.spec.js.map +1 -0
  79. package/lib/core/set-locale-node.spec.d.ts +1 -0
  80. package/lib/core/set-locale-node.spec.js +26 -0
  81. package/lib/core/set-locale-node.spec.js.map +1 -0
  82. package/lib/core/split-locale.d.ts +7 -0
  83. package/lib/core/split-locale.js +39 -0
  84. package/lib/core/split-locale.js.map +1 -0
  85. package/lib/core/split-locale.spec.d.ts +1 -0
  86. package/lib/core/split-locale.spec.js +59 -0
  87. package/lib/core/split-locale.spec.js.map +1 -0
  88. package/lib/core/textdomain.d.ts +55 -0
  89. package/lib/core/textdomain.js +277 -0
  90. package/lib/core/textdomain.js.map +1 -0
  91. package/lib/core/textdomain.spec.d.ts +1 -0
  92. package/lib/core/textdomain.spec.js +33 -0
  93. package/lib/core/textdomain.spec.js.map +1 -0
  94. package/lib/core/user-locales.d.ts +1 -0
  95. package/lib/core/user-locales.js +12 -0
  96. package/lib/core/user-locales.js.map +1 -0
  97. package/lib/index-browser.d.ts +2 -0
  98. package/lib/index-browser.js +44 -0
  99. package/lib/index-browser.js.map +1 -0
  100. package/lib/index.d.ts +2 -0
  101. package/lib/index.js +37 -0
  102. package/lib/index.js.map +1 -0
  103. package/lib/parser/index.d.ts +2 -0
  104. package/lib/parser/index.js +19 -0
  105. package/lib/parser/index.js.map +1 -0
  106. package/lib/parser/parse-json-catalog.d.ts +3 -0
  107. package/lib/parser/parse-json-catalog.js +37 -0
  108. package/lib/parser/parse-json-catalog.js.map +1 -0
  109. package/lib/parser/parse-json-catalog.spec.d.ts +1 -0
  110. package/lib/parser/parse-json-catalog.spec.js +41 -0
  111. package/lib/parser/parse-json-catalog.spec.js.map +1 -0
  112. package/lib/parser/parse-mo-catalog.d.ts +2 -0
  113. package/lib/parser/parse-mo-catalog.js +86 -0
  114. package/lib/parser/parse-mo-catalog.js.map +1 -0
  115. package/lib/parser/parse-mo-catalog.spec.d.ts +1 -0
  116. package/lib/parser/parse-mo-catalog.spec.js +115 -0
  117. package/lib/parser/parse-mo-catalog.spec.js.map +1 -0
  118. package/lib/transport/fs.d.ts +4 -0
  119. package/lib/transport/fs.js +18 -0
  120. package/lib/transport/fs.js.map +1 -0
  121. package/lib/transport/http.d.ts +4 -0
  122. package/lib/transport/http.js +27 -0
  123. package/lib/transport/http.js.map +1 -0
  124. package/lib/transport/http.spec.d.ts +1 -0
  125. package/lib/transport/http.spec.js +119 -0
  126. package/lib/transport/http.spec.js.map +1 -0
  127. package/lib/transport/index.d.ts +3 -0
  128. package/lib/transport/index.js +20 -0
  129. package/lib/transport/index.js.map +1 -0
  130. package/lib/transport/transport.interface.d.ts +3 -0
  131. package/lib/transport/transport.interface.js +3 -0
  132. package/lib/transport/transport.interface.js.map +1 -0
  133. package/lib-esm/core/browser-environment.d.ts +1 -0
  134. package/lib-esm/core/browser-environment.js +8 -0
  135. package/lib-esm/core/browser-environment.js.map +1 -0
  136. package/lib-esm/core/catalog-cache.d.ts +10 -0
  137. package/lib-esm/core/catalog-cache.js +36 -0
  138. package/lib-esm/core/catalog-cache.js.map +1 -0
  139. package/lib-esm/core/catalog-cache.spec.d.ts +1 -0
  140. package/lib-esm/core/catalog-cache.spec.js +22 -0
  141. package/lib-esm/core/catalog-cache.spec.js.map +1 -0
  142. package/lib-esm/core/catalog-format.spec.d.ts +1 -0
  143. package/lib-esm/core/catalog-format.spec.js +33 -0
  144. package/lib-esm/core/catalog-format.spec.js.map +1 -0
  145. package/lib-esm/core/catalog.d.ts +9 -0
  146. package/lib-esm/core/catalog.js +2 -0
  147. package/lib-esm/core/catalog.js.map +1 -0
  148. package/lib-esm/core/data-viewlet.d.ts +11 -0
  149. package/lib-esm/core/data-viewlet.js +54 -0
  150. package/lib-esm/core/data-viewlet.js.map +1 -0
  151. package/lib-esm/core/data-viewlet.spec.d.ts +1 -0
  152. package/lib-esm/core/data-viewlet.spec.js +60 -0
  153. package/lib-esm/core/data-viewlet.spec.js.map +1 -0
  154. package/lib-esm/core/explode-locale.d.ts +3 -0
  155. package/lib-esm/core/explode-locale.js +33 -0
  156. package/lib-esm/core/explode-locale.js.map +1 -0
  157. package/lib-esm/core/explode-locale.spec.d.ts +1 -0
  158. package/lib-esm/core/explode-locale.spec.js +39 -0
  159. package/lib-esm/core/explode-locale.spec.js.map +1 -0
  160. package/lib-esm/core/germanic-plural.d.ts +1 -0
  161. package/lib-esm/core/germanic-plural.js +4 -0
  162. package/lib-esm/core/germanic-plural.js.map +1 -0
  163. package/lib-esm/core/gettext-impl.d.ts +10 -0
  164. package/lib-esm/core/gettext-impl.js +34 -0
  165. package/lib-esm/core/gettext-impl.js.map +1 -0
  166. package/lib-esm/core/gettext.spec.d.ts +1 -0
  167. package/lib-esm/core/gettext.spec.js +389 -0
  168. package/lib-esm/core/gettext.spec.js.map +1 -0
  169. package/lib-esm/core/index.d.ts +4 -0
  170. package/lib-esm/core/index.js +5 -0
  171. package/lib-esm/core/index.js.map +1 -0
  172. package/lib-esm/core/locale-container.d.ts +8 -0
  173. package/lib-esm/core/locale-container.js +2 -0
  174. package/lib-esm/core/locale-container.js.map +1 -0
  175. package/lib-esm/core/path-separator.d.ts +1 -0
  176. package/lib-esm/core/path-separator.js +8 -0
  177. package/lib-esm/core/path-separator.js.map +1 -0
  178. package/lib-esm/core/resolve-impl.d.ts +3 -0
  179. package/lib-esm/core/resolve-impl.js +249 -0
  180. package/lib-esm/core/resolve-impl.js.map +1 -0
  181. package/lib-esm/core/resolve.spec.d.ts +1 -0
  182. package/lib-esm/core/resolve.spec.js +340 -0
  183. package/lib-esm/core/resolve.spec.js.map +1 -0
  184. package/lib-esm/core/select-locale.d.ts +1 -0
  185. package/lib-esm/core/select-locale.js +39 -0
  186. package/lib-esm/core/select-locale.js.map +1 -0
  187. package/lib-esm/core/select-locale.spec.d.ts +1 -0
  188. package/lib-esm/core/select-locale.spec.js +25 -0
  189. package/lib-esm/core/select-locale.spec.js.map +1 -0
  190. package/lib-esm/core/set-locale-browser.spec.d.ts +1 -0
  191. package/lib-esm/core/set-locale-browser.spec.js +15 -0
  192. package/lib-esm/core/set-locale-browser.spec.js.map +1 -0
  193. package/lib-esm/core/set-locale-node.spec.d.ts +1 -0
  194. package/lib-esm/core/set-locale-node.spec.js +24 -0
  195. package/lib-esm/core/set-locale-node.spec.js.map +1 -0
  196. package/lib-esm/core/split-locale.d.ts +7 -0
  197. package/lib-esm/core/split-locale.js +35 -0
  198. package/lib-esm/core/split-locale.js.map +1 -0
  199. package/lib-esm/core/split-locale.spec.d.ts +1 -0
  200. package/lib-esm/core/split-locale.spec.js +57 -0
  201. package/lib-esm/core/split-locale.spec.js.map +1 -0
  202. package/lib-esm/core/textdomain.d.ts +55 -0
  203. package/lib-esm/core/textdomain.js +274 -0
  204. package/lib-esm/core/textdomain.js.map +1 -0
  205. package/lib-esm/core/textdomain.spec.d.ts +1 -0
  206. package/lib-esm/core/textdomain.spec.js +31 -0
  207. package/lib-esm/core/textdomain.spec.js.map +1 -0
  208. package/lib-esm/core/user-locales.d.ts +1 -0
  209. package/lib-esm/core/user-locales.js +8 -0
  210. package/lib-esm/core/user-locales.js.map +1 -0
  211. package/lib-esm/index-browser.d.ts +2 -0
  212. package/lib-esm/index-browser.js +26 -0
  213. package/lib-esm/index-browser.js.map +1 -0
  214. package/lib-esm/index.d.ts +2 -0
  215. package/lib-esm/index.js +19 -0
  216. package/lib-esm/index.js.map +1 -0
  217. package/lib-esm/parser/index.d.ts +2 -0
  218. package/lib-esm/parser/index.js +3 -0
  219. package/lib-esm/parser/index.js.map +1 -0
  220. package/lib-esm/parser/parse-json-catalog.d.ts +3 -0
  221. package/lib-esm/parser/parse-json-catalog.js +32 -0
  222. package/lib-esm/parser/parse-json-catalog.js.map +1 -0
  223. package/lib-esm/parser/parse-json-catalog.spec.d.ts +1 -0
  224. package/lib-esm/parser/parse-json-catalog.spec.js +39 -0
  225. package/lib-esm/parser/parse-json-catalog.spec.js.map +1 -0
  226. package/lib-esm/parser/parse-mo-catalog.d.ts +2 -0
  227. package/lib-esm/parser/parse-mo-catalog.js +82 -0
  228. package/lib-esm/parser/parse-mo-catalog.js.map +1 -0
  229. package/lib-esm/parser/parse-mo-catalog.spec.d.ts +1 -0
  230. package/lib-esm/parser/parse-mo-catalog.spec.js +113 -0
  231. package/lib-esm/parser/parse-mo-catalog.spec.js.map +1 -0
  232. package/lib-esm/transport/fs.d.ts +4 -0
  233. package/lib-esm/transport/fs.js +15 -0
  234. package/lib-esm/transport/fs.js.map +1 -0
  235. package/lib-esm/transport/http.d.ts +4 -0
  236. package/lib-esm/transport/http.js +24 -0
  237. package/lib-esm/transport/http.js.map +1 -0
  238. package/lib-esm/transport/http.spec.d.ts +1 -0
  239. package/lib-esm/transport/http.spec.js +114 -0
  240. package/lib-esm/transport/http.spec.js.map +1 -0
  241. package/lib-esm/transport/index.d.ts +3 -0
  242. package/lib-esm/transport/index.js +4 -0
  243. package/lib-esm/transport/index.js.map +1 -0
  244. package/lib-esm/transport/transport.interface.d.ts +3 -0
  245. package/lib-esm/transport/transport.interface.js +2 -0
  246. package/lib-esm/transport/transport.interface.js.map +1 -0
  247. package/package.json +72 -0
  248. package/webpack.common.js +38 -0
  249. package/webpack.dev.js +9 -0
  250. package/webpack.prod.js +8 -0
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var textdomain_1 = require("./textdomain");
4
+ var user_locales_1 = require("./user-locales");
5
+ describe('textdomain', function () {
6
+ describe('getInstance()', function () {
7
+ it('empty textdomain should throw an exception', function () {
8
+ expect(function () { return textdomain_1.Textdomain.getInstance(''); }).toThrow();
9
+ });
10
+ it('null textdomain should throw an exception', function () {
11
+ expect(function () { return textdomain_1.Textdomain.getInstance(null); }).toThrow();
12
+ });
13
+ it('undefined textdomain should throw an exception', function () {
14
+ expect(function () { return textdomain_1.Textdomain.getInstance(undefined); }).toThrow();
15
+ });
16
+ });
17
+ describe('clearInstances()', function () {
18
+ it('clearInstances() should work', function () {
19
+ expect(function () { return textdomain_1.Textdomain.clearInstances(); }).not.toThrow();
20
+ });
21
+ });
22
+ describe('textdomain()', function () {
23
+ var gtx = textdomain_1.Textdomain.getInstance('messages');
24
+ expect(gtx.textdomain()).toEqual('messages');
25
+ });
26
+ describe('userLocales()', function () {
27
+ var locales = ['fi', 'de-DE', 'en-US'];
28
+ (0, user_locales_1.userLocales)(locales);
29
+ expect(textdomain_1.Textdomain.userLocales()).toEqual(locales);
30
+ });
31
+ describe('bindtextdomain() with object', function () { });
32
+ });
33
+ //# sourceMappingURL=textdomain.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textdomain.spec.js","sourceRoot":"","sources":["../../src/core/textdomain.spec.ts"],"names":[],"mappings":";;AAAA,2CAA0C;AAC1C,+CAA6C;AAE7C,QAAQ,CAAC,YAAY,EAAE;IACtB,QAAQ,CAAC,eAAe,EAAE;QACzB,EAAE,CAAC,4CAA4C,EAAE;YAChD,MAAM,CAAC,cAAM,OAAA,uBAAU,CAAC,WAAW,CAAC,EAAE,CAAC,EAA1B,CAA0B,CAAC,CAAC,OAAO,EAAE,CAAC;QACpD,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,2CAA2C,EAAE;YAC/C,MAAM,CAAC,cAAM,OAAA,uBAAU,CAAC,WAAW,CAAC,IAAyB,CAAC,EAAjD,CAAiD,CAAC,CAAC,OAAO,EAAE,CAAC;QAC3E,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,gDAAgD,EAAE;YACpD,MAAM,CAAC,cAAM,OAAA,uBAAU,CAAC,WAAW,CAAC,SAA8B,CAAC,EAAtD,CAAsD,CAAC,CAAC,OAAO,EAAE,CAAC;QAChF,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,kBAAkB,EAAE;QAC5B,EAAE,CAAC,8BAA8B,EAAE;YAClC,MAAM,CAAC,cAAM,OAAA,uBAAU,CAAC,cAAc,EAAE,EAA3B,CAA2B,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACzD,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,cAAc,EAAE;QACxB,IAAM,GAAG,GAAG,uBAAU,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,eAAe,EAAE;QACzB,IAAM,OAAO,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACzC,IAAA,0BAAW,EAAC,OAAO,CAAC,CAAC;QACrB,MAAM,CAAC,uBAAU,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,8BAA8B,EAAE,cAAO,CAAC,CAAC,CAAC;AACpD,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function userLocales(locales?: Array<string>): Array<string>;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.userLocales = void 0;
4
+ var userLocalesSelected = ['C'];
5
+ function userLocales(locales) {
6
+ if (typeof locales !== 'undefined') {
7
+ userLocalesSelected = locales;
8
+ }
9
+ return userLocalesSelected;
10
+ }
11
+ exports.userLocales = userLocales;
12
+ //# sourceMappingURL=user-locales.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-locales.js","sourceRoot":"","sources":["../../src/core/user-locales.ts"],"names":[],"mappings":";;;AAAA,IAAI,mBAAmB,GAAG,CAAC,GAAG,CAAC,CAAC;AAUhC,SAAgB,WAAW,CAAC,OAAuB;IAClD,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;QACpC,mBAAmB,GAAG,OAAO,CAAC;IAC/B,CAAC;IAED,OAAO,mBAAmB,CAAC;AAC5B,CAAC;AAND,kCAMC"}
@@ -0,0 +1,2 @@
1
+ export * from './core';
2
+ export { parseMoCatalog } from './parser';
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.parseMoCatalog = void 0;
18
+ var browser_environment_1 = require("./core/browser-environment");
19
+ (0, browser_environment_1.browserEnvironment)(true);
20
+ var path_separator_1 = require("./core/path-separator");
21
+ (0, path_separator_1.pathSeparator)('/');
22
+ var user_locales_1 = require("./core/user-locales");
23
+ var locales = new Array();
24
+ if (window.navigator.languages) {
25
+ locales.push.apply(locales, window.navigator.languages);
26
+ }
27
+ if (typeof window.navigator.language !== 'undefined') {
28
+ locales.push(window.navigator.language);
29
+ }
30
+ var nav = window.navigator;
31
+ if (Object.prototype.hasOwnProperty.call(nav, 'userLanguage') && nav.userLanguage) {
32
+ locales.push(nav.userLanguage);
33
+ }
34
+ if (Object.prototype.hasOwnProperty.call(nav, 'browserLanguage') && nav['browserLanguage']) {
35
+ locales.push(nav.browserLanguage);
36
+ }
37
+ if (Object.prototype.hasOwnProperty.call(nav, 'systemLanguage') && nav['systemLanguage']) {
38
+ locales.push(nav.systemLanguage);
39
+ }
40
+ (0, user_locales_1.userLocales)(locales);
41
+ __exportStar(require("./core"), exports);
42
+ var parser_1 = require("./parser");
43
+ Object.defineProperty(exports, "parseMoCatalog", { enumerable: true, get: function () { return parser_1.parseMoCatalog; } });
44
+ //# sourceMappingURL=index-browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-browser.js","sourceRoot":"","sources":["../src/index-browser.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,kEAAgE;AAChE,IAAA,wCAAkB,EAAC,IAAI,CAAC,CAAC;AAEzB,wDAAsD;AACtD,IAAA,8BAAa,EAAC,GAAG,CAAC,CAAC;AAInB,oDAAkD;AAClD,IAAM,OAAO,GAAG,IAAI,KAAK,EAAU,CAAC;AACpC,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;IAChC,OAAO,CAAC,IAAI,OAAZ,OAAO,EAAS,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE;AAC7C,CAAC;AACD,IAAI,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;IACtD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AACzC,CAAC;AACD,IAAM,GAAG,GAA8B,MAAM,CAAC,SAAiD,CAAC;AAEhG,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;IACnF,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAChC,CAAC;AACD,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,IAAI,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC;IAC5F,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AACnC,CAAC;AACD,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,IAAI,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;IAC1F,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AAClC,CAAC;AACD,IAAA,0BAAW,EAAC,OAAO,CAAC,CAAC;AAErB,yCAAuB;AACvB,mCAA0C;AAAjC,wGAAA,cAAc,OAAA"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from './core';
2
+ export { parseMoCatalog } from './parser';
package/lib/index.js ADDED
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.parseMoCatalog = void 0;
18
+ var path_1 = require("path");
19
+ var path_separator_1 = require("./core/path-separator");
20
+ (0, path_separator_1.pathSeparator)(path_1.sep);
21
+ var user_locales_1 = require("./core/user-locales");
22
+ if (typeof process.env.LANGUAGE !== 'undefined') {
23
+ (0, user_locales_1.userLocales)(process.env.LANGUAGE.split(':'));
24
+ }
25
+ else if (typeof process.env.LC_ALL !== 'undefined') {
26
+ (0, user_locales_1.userLocales)([process.env.LC_ALL]);
27
+ }
28
+ else if (typeof process.env.LANG !== 'undefined') {
29
+ (0, user_locales_1.userLocales)([process.env.LANG]);
30
+ }
31
+ else if (typeof process.env.LC_MESSAGES !== 'undefined') {
32
+ (0, user_locales_1.userLocales)([process.env.LC_MESSAGES]);
33
+ }
34
+ __exportStar(require("./core"), exports);
35
+ var parser_1 = require("./parser");
36
+ Object.defineProperty(exports, "parseMoCatalog", { enumerable: true, get: function () { return parser_1.parseMoCatalog; } });
37
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6BAA2B;AAC3B,wDAAsD;AACtD,IAAA,8BAAa,EAAC,UAAG,CAAC,CAAC;AAEnB,oDAAkD;AAElD,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;IACjD,IAAA,0BAAW,EAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9C,CAAC;KAAM,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;IACtD,IAAA,0BAAW,EAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AACnC,CAAC;KAAM,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;IACpD,IAAA,0BAAW,EAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACjC,CAAC;KAAM,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;IAC3D,IAAA,0BAAW,EAAC,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,yCAAuB;AAEvB,mCAA0C;AAAjC,wGAAA,cAAc,OAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './parse-mo-catalog';
2
+ export * from './parse-json-catalog';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./parse-mo-catalog"), exports);
18
+ __exportStar(require("./parse-json-catalog"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,uDAAqC"}
@@ -0,0 +1,3 @@
1
+ import { Catalog } from '../core/catalog';
2
+ export declare function validateJsonCatalog(udata: unknown): Catalog;
3
+ export declare function parseJsonCatalog(json: ArrayBuffer): Catalog;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseJsonCatalog = exports.validateJsonCatalog = void 0;
4
+ function validateJsonCatalog(udata) {
5
+ if (udata === null || typeof udata === 'undefined') {
6
+ throw new Error('catalog is either null or undefined');
7
+ }
8
+ var data = udata;
9
+ if (data.constructor !== Object) {
10
+ throw new Error('catalog must be a dictionary');
11
+ }
12
+ if (!Object.prototype.hasOwnProperty.call(data, 'entries')) {
13
+ throw new Error('catalog.entries does not exist');
14
+ }
15
+ var entries = data.entries;
16
+ if (entries === null || typeof entries === 'undefined') {
17
+ throw new Error('catalog.entries are not defined or null');
18
+ }
19
+ if (entries.constructor !== Object) {
20
+ throw new Error('catalog.entries must be a dictionary');
21
+ }
22
+ for (var _i = 0, _a = Object.entries(entries); _i < _a.length; _i++) {
23
+ var _b = _a[_i], key = _b[0], value = _b[1];
24
+ if (!Array.isArray(value)) {
25
+ throw new Error("catalog entry for key '".concat(key, "' is not an array"));
26
+ }
27
+ }
28
+ return data;
29
+ }
30
+ exports.validateJsonCatalog = validateJsonCatalog;
31
+ function parseJsonCatalog(json) {
32
+ var text = new TextDecoder().decode(json);
33
+ var data = JSON.parse(text);
34
+ return validateJsonCatalog(data);
35
+ }
36
+ exports.parseJsonCatalog = parseJsonCatalog;
37
+ //# sourceMappingURL=parse-json-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-json-catalog.js","sourceRoot":"","sources":["../../src/parser/parse-json-catalog.ts"],"names":[],"mappings":";;;AAEA,SAAgB,mBAAmB,CAAC,KAAc;IAMjD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACxD,CAAC;IAED,IAAM,IAAI,GAAG,KAAgB,CAAC;IAC9B,IAAI,IAAI,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACjD,CAAC;IAKD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACnD,CAAC;IAED,IAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC7B,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,OAAO,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IACzD,CAAC;IAED,KAA2B,UAAuB,EAAvB,KAAA,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAvB,cAAuB,EAAvB,IAAuB,EAAE,CAAC;QAA1C,IAAA,WAAY,EAAX,GAAG,QAAA,EAAE,KAAK,QAAA;QACrB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,iCAA0B,GAAG,sBAAmB,CAAC,CAAC;QACnE,CAAC;IACF,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC;AAtCD,kDAsCC;AAED,SAAgB,gBAAgB,CAAC,IAAiB;IACjD,IAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;IAEzC,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC;AALD,4CAKC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var parse_json_catalog_1 = require("./parse-json-catalog");
4
+ describe('parse JSON catalogs', function () {
5
+ describe('validate', function () {
6
+ it('should reject undefined catalogs', function () {
7
+ expect(function () { return (0, parse_json_catalog_1.validateJsonCatalog)(undefined); }).toThrow('catalog is either null or undefined');
8
+ });
9
+ it('should reject arrays', function () {
10
+ var arr = new Array();
11
+ expect(function () { return (0, parse_json_catalog_1.validateJsonCatalog)(arr); }).toThrow('catalog must be a dictionary');
12
+ });
13
+ it('should reject catalogs without entries', function () {
14
+ var catalog = {
15
+ major: 0,
16
+ minor: 0,
17
+ };
18
+ expect(function () { return (0, parse_json_catalog_1.validateJsonCatalog)(catalog); }).toThrow('catalog.entries does not exist');
19
+ });
20
+ it('should reject catalogs without entries', function () {
21
+ var arr = new Array();
22
+ var catalog = {
23
+ major: 0,
24
+ minor: 0,
25
+ entries: arr,
26
+ };
27
+ expect(function () { return (0, parse_json_catalog_1.validateJsonCatalog)(catalog); }).toThrow('catalog.entries must be a dictionary');
28
+ });
29
+ it('should reject entries whose values are not arrays', function () {
30
+ var catalog = {
31
+ major: 0,
32
+ minor: 0,
33
+ entries: {
34
+ Saturday: 'Lauantai',
35
+ },
36
+ };
37
+ expect(function () { return (0, parse_json_catalog_1.validateJsonCatalog)(catalog); }).toThrow("catalog entry for key 'Saturday' is not an array");
38
+ });
39
+ });
40
+ });
41
+ //# sourceMappingURL=parse-json-catalog.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-json-catalog.spec.js","sourceRoot":"","sources":["../../src/parser/parse-json-catalog.spec.ts"],"names":[],"mappings":";;AACA,2DAA2D;AAE3D,QAAQ,CAAC,qBAAqB,EAAE;IAC/B,QAAQ,CAAC,UAAU,EAAE;QACpB,EAAE,CAAC,kCAAkC,EAAE;YACtC,MAAM,CAAC,cAAM,OAAA,IAAA,wCAAmB,EAAC,SAAS,CAAC,EAA9B,CAA8B,CAAC,CAAC,OAAO,CACnD,qCAAqC,CACrC,CAAC;QACH,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,sBAAsB,EAAE;YAC1B,IAAM,GAAG,GAAG,IAAI,KAAK,EAAgC,CAAC;YACtD,MAAM,CAAC,cAAM,OAAA,IAAA,wCAAmB,EAAC,GAAG,CAAC,EAAxB,CAAwB,CAAC,CAAC,OAAO,CAC7C,8BAA8B,CAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,wCAAwC,EAAE;YAC5C,IAAM,OAAO,GAAG;gBACf,KAAK,EAAE,CAAC;gBACR,KAAK,EAAE,CAAC;aACG,CAAC;YACb,MAAM,CAAC,cAAM,OAAA,IAAA,wCAAmB,EAAC,OAAO,CAAC,EAA5B,CAA4B,CAAC,CAAC,OAAO,CACjD,gCAAgC,CAChC,CAAC;QACH,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,wCAAwC,EAAE;YAC5C,IAAM,GAAG,GAAG,IAAI,KAAK,EAAuC,CAAC;YAC7D,IAAM,OAAO,GAAG;gBACf,KAAK,EAAE,CAAC;gBACR,KAAK,EAAE,CAAC;gBACR,OAAO,EAAE,GAAG;aACD,CAAC;YACb,MAAM,CAAC,cAAM,OAAA,IAAA,wCAAmB,EAAC,OAAO,CAAC,EAA5B,CAA4B,CAAC,CAAC,OAAO,CACjD,sCAAsC,CACtC,CAAC;QACH,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,mDAAmD,EAAE;YACvD,IAAM,OAAO,GAAG;gBACf,KAAK,EAAE,CAAC;gBACR,KAAK,EAAE,CAAC;gBACR,OAAO,EAAE;oBACR,QAAQ,EAAE,UAAU;iBACpB;aACqB,CAAC;YACxB,MAAM,CAAC,cAAM,OAAA,IAAA,wCAAmB,EAAC,OAAO,CAAC,EAA5B,CAA4B,CAAC,CAAC,OAAO,CACjD,kDAAkD,CAClD,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { Catalog } from '../core/catalog';
2
+ export declare function parseMoCatalog(raw: ArrayBuffer): Catalog;
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseMoCatalog = void 0;
4
+ var germanic_plural_1 = require("../core/germanic-plural");
5
+ var data_viewlet_1 = require("../core/data-viewlet");
6
+ function parseMoCatalog(raw) {
7
+ var catalog = {
8
+ major: 0,
9
+ minor: 0,
10
+ entries: {},
11
+ pluralFunction: germanic_plural_1.germanicPlural,
12
+ };
13
+ var offset = 0;
14
+ var blob = new data_viewlet_1.DataViewlet(new Uint8Array(raw), 'ascii');
15
+ var magic = blob.readUInt32LE(offset);
16
+ var reader;
17
+ if (magic === 0x950412de) {
18
+ reader = function (buf, off) { return buf.readUInt32LE(off); };
19
+ }
20
+ else if (magic === 0xde120495) {
21
+ reader = function (buf, off) { return buf.readUInt32BE(off); };
22
+ }
23
+ else {
24
+ throw new Error("invalid MO magic 0x".concat(magic.toString(16)));
25
+ }
26
+ offset += 4;
27
+ var major = reader(blob, offset) >> 16;
28
+ offset += 4;
29
+ if (major > 0) {
30
+ throw new Error("unsupported major revision ".concat(major));
31
+ }
32
+ var numStrings = reader(blob, offset);
33
+ offset += 4;
34
+ var msgidOffset = reader(blob, offset);
35
+ offset += 4;
36
+ var msgstrOffset = reader(blob, offset);
37
+ offset = msgidOffset;
38
+ var origTab = [];
39
+ for (var i = 0; i < numStrings; ++i) {
40
+ var l = reader(blob, offset);
41
+ offset += 4;
42
+ var stringOffset = reader(blob, offset);
43
+ offset += 4;
44
+ origTab.push([l, stringOffset]);
45
+ }
46
+ offset = msgstrOffset;
47
+ var transTab = [];
48
+ for (var i = 0; i < numStrings; ++i) {
49
+ var l = reader(blob, offset);
50
+ offset += 4;
51
+ var stringOffset = reader(blob, offset);
52
+ offset += 4;
53
+ transTab.push([l, stringOffset]);
54
+ }
55
+ var poHeader = {};
56
+ for (var i = 0; i < numStrings; ++i) {
57
+ var orig = origTab[i];
58
+ var l = orig[0];
59
+ offset = orig[1];
60
+ var msgid = blob.readString(offset, l).split('\u0000')[0];
61
+ var trans = transTab[i];
62
+ l = trans[0];
63
+ offset = trans[1];
64
+ var msgstr = blob.readString(offset, l).split('\u0000');
65
+ var pairs = void 0, kv = void 0;
66
+ if (i === 0 && msgid === '') {
67
+ pairs = msgstr[0].split('\n');
68
+ for (var j = 0; j < pairs.length; ++j) {
69
+ if (pairs[j] !== '') {
70
+ kv = pairs[j].split(/[ \t]*:[ \t]*/);
71
+ poHeader[kv[0].toLowerCase()] = kv[1];
72
+ }
73
+ }
74
+ if (poHeader['content-type'] !== undefined) {
75
+ var enc = poHeader['content-type'].replace(/.*=/, '');
76
+ if (enc !== poHeader['content-type']) {
77
+ blob.encoding = enc;
78
+ }
79
+ }
80
+ }
81
+ catalog.entries[msgid] = msgstr;
82
+ }
83
+ return catalog;
84
+ }
85
+ exports.parseMoCatalog = parseMoCatalog;
86
+ //# sourceMappingURL=parse-mo-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-mo-catalog.js","sourceRoot":"","sources":["../../src/parser/parse-mo-catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ var transport_1 = require("../transport");
40
+ var parse_mo_catalog_1 = require("./parse-mo-catalog");
41
+ var transport = new transport_1.TransportFs();
42
+ describe('MO catalogs', function () {
43
+ it('should read little-endian catalogs', function () { return __awaiter(void 0, void 0, void 0, function () {
44
+ return __generator(this, function (_a) {
45
+ return [2, transport
46
+ .loadFile('src/assets/locale/de_AT/LC_MESSAGES/additional.mo')
47
+ .then(function (buffer) {
48
+ var catalog = (0, parse_mo_catalog_1.parseMoCatalog)(Buffer.from(buffer));
49
+ expect(catalog).toBeDefined();
50
+ expect(catalog.entries).toBeDefined();
51
+ expect(catalog.entries['']).toBeDefined();
52
+ expect(catalog.entries['Saturday']).toEqual(['Sonnabend']);
53
+ })];
54
+ });
55
+ }); });
56
+ it('should read big-endian catalogs', function () { return __awaiter(void 0, void 0, void 0, function () {
57
+ return __generator(this, function (_a) {
58
+ return [2, transport
59
+ .loadFile('src/assets/locale/xy/LC_MESSAGES/big-endian.mo')
60
+ .then(function (buffer) {
61
+ var catalog = (0, parse_mo_catalog_1.parseMoCatalog)(Buffer.from(buffer));
62
+ expect(catalog).toBeDefined();
63
+ expect(catalog.entries).toBeDefined();
64
+ expect(catalog.entries['']).toBeDefined();
65
+ expect(catalog.entries['Saturday']).toEqual(['Sonnabend']);
66
+ })];
67
+ });
68
+ }); });
69
+ it('should reject catalogs with wrong magic', function () { return __awaiter(void 0, void 0, void 0, function () {
70
+ return __generator(this, function (_a) {
71
+ return [2, transport
72
+ .loadFile('src/assets/locale/xy/LC_MESSAGES/wrong-magic.mo')
73
+ .then(function (buffer) {
74
+ expect(function () { return (0, parse_mo_catalog_1.parseMoCatalog)(Buffer.from(buffer)); }).toThrow();
75
+ })];
76
+ });
77
+ }); });
78
+ it('should reject catalogs with major > 0', function () { return __awaiter(void 0, void 0, void 0, function () {
79
+ return __generator(this, function (_a) {
80
+ return [2, transport
81
+ .loadFile('src/assets/locale/xy/LC_MESSAGES/major1.mo')
82
+ .then(function (buffer) {
83
+ expect(function () { return (0, parse_mo_catalog_1.parseMoCatalog)(Buffer.from(buffer)); }).toThrow();
84
+ })];
85
+ });
86
+ }); });
87
+ it('should reject catalogs with invalid charsets', function () { return __awaiter(void 0, void 0, void 0, function () {
88
+ return __generator(this, function (_a) {
89
+ return [2, transport
90
+ .loadFile('src/assets/locale/xy/LC_MESSAGES/invalid-charset.mo')
91
+ .then(function (buffer) {
92
+ expect(function () { return (0, parse_mo_catalog_1.parseMoCatalog)(Buffer.from(buffer)); }).toThrow();
93
+ })];
94
+ });
95
+ }); });
96
+ it('should accept catalogs without content-type', function () { return __awaiter(void 0, void 0, void 0, function () {
97
+ return __generator(this, function (_a) {
98
+ return [2, transport
99
+ .loadFile('src/assets/locale/xy/LC_MESSAGES/no-content-type.mo')
100
+ .then(function (buffer) {
101
+ expect((0, parse_mo_catalog_1.parseMoCatalog)(Buffer.from(buffer))).toBeDefined();
102
+ })];
103
+ });
104
+ }); });
105
+ it('should accept catalogs without charset', function () { return __awaiter(void 0, void 0, void 0, function () {
106
+ return __generator(this, function (_a) {
107
+ return [2, transport
108
+ .loadFile('src/assets/locale/xy/LC_MESSAGES/no-charset.mo')
109
+ .then(function (buffer) {
110
+ expect((0, parse_mo_catalog_1.parseMoCatalog)(Buffer.from(buffer))).toBeDefined();
111
+ })];
112
+ });
113
+ }); });
114
+ });
115
+ //# sourceMappingURL=parse-mo-catalog.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-mo-catalog.spec.js","sourceRoot":"","sources":["../../src/parser/parse-mo-catalog.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAA2C;AAC3C,uDAAoD;AAEpD,IAAM,SAAS,GAAG,IAAI,uBAAW,EAAE,CAAC;AAEpC,QAAQ,CAAC,aAAa,EAAE;IACvB,EAAE,CAAC,oCAAoC,EAAE;;YACxC,WAAO,SAAS;qBACd,QAAQ,CAAC,mDAAmD,CAAC;qBAC7D,IAAI,CAAC,UAAA,MAAM;oBACX,IAAM,OAAO,GAAG,IAAA,iCAAc,EAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;oBACpD,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;oBAC9B,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;oBACtC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;oBAC1C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC5D,CAAC,CAAC,EAAC;;SACJ,CAAC,CAAC;IACH,EAAE,CAAC,iCAAiC,EAAE;;YACrC,WAAO,SAAS;qBACd,QAAQ,CAAC,gDAAgD,CAAC;qBAC1D,IAAI,CAAC,UAAA,MAAM;oBACX,IAAM,OAAO,GAAG,IAAA,iCAAc,EAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;oBACpD,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;oBAC9B,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;oBACtC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;oBAC1C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC5D,CAAC,CAAC,EAAC;;SACJ,CAAC,CAAC;IACH,EAAE,CAAC,yCAAyC,EAAE;;YAC7C,WAAO,SAAS;qBACd,QAAQ,CAAC,iDAAiD,CAAC;qBAC3D,IAAI,CAAC,UAAA,MAAM;oBACX,MAAM,CAAC,cAAM,OAAA,IAAA,iCAAc,EAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAnC,CAAmC,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC7D,CAAC,CAAC,EAAC;;SACJ,CAAC,CAAC;IACH,EAAE,CAAC,uCAAuC,EAAE;;YAC3C,WAAO,SAAS;qBACd,QAAQ,CAAC,4CAA4C,CAAC;qBACtD,IAAI,CAAC,UAAA,MAAM;oBACX,MAAM,CAAC,cAAM,OAAA,IAAA,iCAAc,EAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAnC,CAAmC,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC7D,CAAC,CAAC,EAAC;;SACJ,CAAC,CAAC;IACH,EAAE,CAAC,8CAA8C,EAAE;;YAClD,WAAO,SAAS;qBACd,QAAQ,CAAC,qDAAqD,CAAC;qBAC/D,IAAI,CAAC,UAAA,MAAM;oBACX,MAAM,CAAC,cAAM,OAAA,IAAA,iCAAc,EAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAnC,CAAmC,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC7D,CAAC,CAAC,EAAC;;SACJ,CAAC,CAAC;IACH,EAAE,CAAC,6CAA6C,EAAE;;YACjD,WAAO,SAAS;qBACd,QAAQ,CAAC,qDAAqD,CAAC;qBAC/D,IAAI,CAAC,UAAA,MAAM;oBACX,MAAM,CAAC,IAAA,iCAAc,EAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC3D,CAAC,CAAC,EAAC;;SACJ,CAAC,CAAC;IACH,EAAE,CAAC,wCAAwC,EAAE;;YAC5C,WAAO,SAAS;qBACd,QAAQ,CAAC,gDAAgD,CAAC;qBAC1D,IAAI,CAAC,UAAA,MAAM;oBACX,MAAM,CAAC,IAAA,iCAAc,EAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC3D,CAAC,CAAC,EAAC;;SACJ,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Transport } from './transport.interface';
2
+ export declare class TransportFs implements Transport {
3
+ loadFile(url: string): Promise<ArrayBuffer>;
4
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TransportFs = void 0;
4
+ var fs_1 = require("fs");
5
+ var TransportFs = (function () {
6
+ function TransportFs() {
7
+ }
8
+ TransportFs.prototype.loadFile = function (url) {
9
+ return new Promise(function (resolve, reject) {
10
+ (0, fs_1.readFile)(url, function (err, data) {
11
+ return err ? reject(err) : resolve(data);
12
+ });
13
+ });
14
+ };
15
+ return TransportFs;
16
+ }());
17
+ exports.TransportFs = TransportFs;
18
+ //# sourceMappingURL=fs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/transport/fs.ts"],"names":[],"mappings":";;;AAAA,yBAA8B;AAG9B;IAAA;IAQA,CAAC;IAPA,8BAAQ,GAAR,UAAS,GAAW;QACnB,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YAClC,IAAA,aAAQ,EAAC,GAAG,EAAE,UAAC,GAAG,EAAE,IAAI;gBACvB,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;IACF,kBAAC;AAAD,CAAC,AARD,IAQC;AARY,kCAAW"}
@@ -0,0 +1,4 @@
1
+ import { Transport } from './transport.interface';
2
+ export declare class TransportHttp implements Transport {
3
+ loadFile(url: string): Promise<ArrayBuffer>;
4
+ }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TransportHttp = void 0;
4
+ var TransportHttp = (function () {
5
+ function TransportHttp() {
6
+ }
7
+ TransportHttp.prototype.loadFile = function (url) {
8
+ return new Promise(function (resolve, reject) {
9
+ var xhr = new XMLHttpRequest();
10
+ xhr.responseType = 'arraybuffer';
11
+ xhr.open('GET', url, true);
12
+ xhr.onload = function () {
13
+ if (xhr.readyState === 4 && xhr.status === 200) {
14
+ resolve(xhr.response);
15
+ }
16
+ else {
17
+ reject(new Error('get failed with status ' + xhr.status));
18
+ }
19
+ };
20
+ xhr.onerror = function (err) { return reject(err); };
21
+ xhr.send();
22
+ });
23
+ };
24
+ return TransportHttp;
25
+ }());
26
+ exports.TransportHttp = TransportHttp;
27
+ //# sourceMappingURL=http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/transport/http.ts"],"names":[],"mappings":";;;AAIA;IAAA;IAiBA,CAAC;IAhBA,gCAAQ,GAAR,UAAS,GAAW;QACnB,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YAClC,IAAM,GAAG,GAAG,IAAI,cAAc,EAAE,CAAC;YACjC,GAAG,CAAC,YAAY,GAAG,aAAa,CAAC;YACjC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAC3B,GAAG,CAAC,MAAM,GAAG;gBACZ,IAAI,GAAG,CAAC,UAAU,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBAChD,OAAO,CAAC,GAAG,CAAC,QAAuB,CAAC,CAAC;gBACtC,CAAC;qBAAM,CAAC;oBACP,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC3D,CAAC;YACF,CAAC,CAAC;YACF,GAAG,CAAC,OAAO,GAAG,UAAA,GAAG,IAAI,OAAA,MAAM,CAAC,GAAG,CAAC,EAAX,CAAW,CAAC;YACjC,GAAG,CAAC,IAAI,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACJ,CAAC;IACF,oBAAC;AAAD,CAAC,AAjBD,IAiBC;AAjBY,sCAAa"}
@@ -0,0 +1 @@
1
+ export {};