@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 @@
1
+ {"version":3,"file":"index-browser.js","sourceRoot":"","sources":["../src/index-browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAEzB,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,aAAa,CAAC,GAAG,CAAC,CAAC;AAInB,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;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,WAAW,CAAC,OAAO,CAAC,CAAC;AAErB,cAAc,QAAQ,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './core';
2
+ export { parseMoCatalog } from './parser';
@@ -0,0 +1,19 @@
1
+ import { sep } from 'path';
2
+ import { pathSeparator } from './core/path-separator';
3
+ pathSeparator(sep);
4
+ import { userLocales } from './core/user-locales';
5
+ if (typeof process.env.LANGUAGE !== 'undefined') {
6
+ userLocales(process.env.LANGUAGE.split(':'));
7
+ }
8
+ else if (typeof process.env.LC_ALL !== 'undefined') {
9
+ userLocales([process.env.LC_ALL]);
10
+ }
11
+ else if (typeof process.env.LANG !== 'undefined') {
12
+ userLocales([process.env.LANG]);
13
+ }
14
+ else if (typeof process.env.LC_MESSAGES !== 'undefined') {
15
+ userLocales([process.env.LC_MESSAGES]);
16
+ }
17
+ export * from './core';
18
+ export { parseMoCatalog } from './parser';
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,aAAa,CAAC,GAAG,CAAC,CAAC;AAEnB,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;IACjD,WAAW,CAAC,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,WAAW,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AACnC,CAAC;KAAM,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;IACpD,WAAW,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACjC,CAAC;KAAM,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;IAC3D,WAAW,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,cAAc,QAAQ,CAAC;AAEvB,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './parse-mo-catalog';
2
+ export * from './parse-json-catalog';
@@ -0,0 +1,3 @@
1
+ export * from './parse-mo-catalog';
2
+ export * from './parse-json-catalog';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC"}
@@ -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,32 @@
1
+ export function validateJsonCatalog(udata) {
2
+ if (udata === null || typeof udata === 'undefined') {
3
+ throw new Error('catalog is either null or undefined');
4
+ }
5
+ var data = udata;
6
+ if (data.constructor !== Object) {
7
+ throw new Error('catalog must be a dictionary');
8
+ }
9
+ if (!Object.prototype.hasOwnProperty.call(data, 'entries')) {
10
+ throw new Error('catalog.entries does not exist');
11
+ }
12
+ var entries = data.entries;
13
+ if (entries === null || typeof entries === 'undefined') {
14
+ throw new Error('catalog.entries are not defined or null');
15
+ }
16
+ if (entries.constructor !== Object) {
17
+ throw new Error('catalog.entries must be a dictionary');
18
+ }
19
+ for (var _i = 0, _a = Object.entries(entries); _i < _a.length; _i++) {
20
+ var _b = _a[_i], key = _b[0], value = _b[1];
21
+ if (!Array.isArray(value)) {
22
+ throw new Error("catalog entry for key '".concat(key, "' is not an array"));
23
+ }
24
+ }
25
+ return data;
26
+ }
27
+ export function parseJsonCatalog(json) {
28
+ var text = new TextDecoder().decode(json);
29
+ var data = JSON.parse(text);
30
+ return validateJsonCatalog(data);
31
+ }
32
+ //# 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,MAAM,UAAU,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;AAED,MAAM,UAAU,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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,39 @@
1
+ import { validateJsonCatalog } from './parse-json-catalog';
2
+ describe('parse JSON catalogs', function () {
3
+ describe('validate', function () {
4
+ it('should reject undefined catalogs', function () {
5
+ expect(function () { return validateJsonCatalog(undefined); }).toThrow('catalog is either null or undefined');
6
+ });
7
+ it('should reject arrays', function () {
8
+ var arr = new Array();
9
+ expect(function () { return validateJsonCatalog(arr); }).toThrow('catalog must be a dictionary');
10
+ });
11
+ it('should reject catalogs without entries', function () {
12
+ var catalog = {
13
+ major: 0,
14
+ minor: 0,
15
+ };
16
+ expect(function () { return validateJsonCatalog(catalog); }).toThrow('catalog.entries does not exist');
17
+ });
18
+ it('should reject catalogs without entries', function () {
19
+ var arr = new Array();
20
+ var catalog = {
21
+ major: 0,
22
+ minor: 0,
23
+ entries: arr,
24
+ };
25
+ expect(function () { return validateJsonCatalog(catalog); }).toThrow('catalog.entries must be a dictionary');
26
+ });
27
+ it('should reject entries whose values are not arrays', function () {
28
+ var catalog = {
29
+ major: 0,
30
+ minor: 0,
31
+ entries: {
32
+ Saturday: 'Lauantai',
33
+ },
34
+ };
35
+ expect(function () { return validateJsonCatalog(catalog); }).toThrow("catalog entry for key 'Saturday' is not an array");
36
+ });
37
+ });
38
+ });
39
+ //# 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,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,QAAQ,CAAC,qBAAqB,EAAE;IAC/B,QAAQ,CAAC,UAAU,EAAE;QACpB,EAAE,CAAC,kCAAkC,EAAE;YACtC,MAAM,CAAC,cAAM,OAAA,mBAAmB,CAAC,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,mBAAmB,CAAC,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,mBAAmB,CAAC,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,mBAAmB,CAAC,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,mBAAmB,CAAC,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,82 @@
1
+ import { germanicPlural } from '../core/germanic-plural';
2
+ import { DataViewlet } from '../core/data-viewlet';
3
+ export function parseMoCatalog(raw) {
4
+ var catalog = {
5
+ major: 0,
6
+ minor: 0,
7
+ entries: {},
8
+ pluralFunction: germanicPlural,
9
+ };
10
+ var offset = 0;
11
+ var blob = new DataViewlet(new Uint8Array(raw), 'ascii');
12
+ var magic = blob.readUInt32LE(offset);
13
+ var reader;
14
+ if (magic === 0x950412de) {
15
+ reader = function (buf, off) { return buf.readUInt32LE(off); };
16
+ }
17
+ else if (magic === 0xde120495) {
18
+ reader = function (buf, off) { return buf.readUInt32BE(off); };
19
+ }
20
+ else {
21
+ throw new Error("invalid MO magic 0x".concat(magic.toString(16)));
22
+ }
23
+ offset += 4;
24
+ var major = reader(blob, offset) >> 16;
25
+ offset += 4;
26
+ if (major > 0) {
27
+ throw new Error("unsupported major revision ".concat(major));
28
+ }
29
+ var numStrings = reader(blob, offset);
30
+ offset += 4;
31
+ var msgidOffset = reader(blob, offset);
32
+ offset += 4;
33
+ var msgstrOffset = reader(blob, offset);
34
+ offset = msgidOffset;
35
+ var origTab = [];
36
+ for (var i = 0; i < numStrings; ++i) {
37
+ var l = reader(blob, offset);
38
+ offset += 4;
39
+ var stringOffset = reader(blob, offset);
40
+ offset += 4;
41
+ origTab.push([l, stringOffset]);
42
+ }
43
+ offset = msgstrOffset;
44
+ var transTab = [];
45
+ for (var i = 0; i < numStrings; ++i) {
46
+ var l = reader(blob, offset);
47
+ offset += 4;
48
+ var stringOffset = reader(blob, offset);
49
+ offset += 4;
50
+ transTab.push([l, stringOffset]);
51
+ }
52
+ var poHeader = {};
53
+ for (var i = 0; i < numStrings; ++i) {
54
+ var orig = origTab[i];
55
+ var l = orig[0];
56
+ offset = orig[1];
57
+ var msgid = blob.readString(offset, l).split('\u0000')[0];
58
+ var trans = transTab[i];
59
+ l = trans[0];
60
+ offset = trans[1];
61
+ var msgstr = blob.readString(offset, l).split('\u0000');
62
+ var pairs = void 0, kv = void 0;
63
+ if (i === 0 && msgid === '') {
64
+ pairs = msgstr[0].split('\n');
65
+ for (var j = 0; j < pairs.length; ++j) {
66
+ if (pairs[j] !== '') {
67
+ kv = pairs[j].split(/[ \t]*:[ \t]*/);
68
+ poHeader[kv[0].toLowerCase()] = kv[1];
69
+ }
70
+ }
71
+ if (poHeader['content-type'] !== undefined) {
72
+ var enc = poHeader['content-type'].replace(/.*=/, '');
73
+ if (enc !== poHeader['content-type']) {
74
+ blob.encoding = enc;
75
+ }
76
+ }
77
+ }
78
+ catalog.entries[msgid] = msgstr;
79
+ }
80
+ return catalog;
81
+ }
82
+ //# 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,113 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ 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;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ import { TransportFs } from '../transport';
38
+ import { parseMoCatalog } from './parse-mo-catalog';
39
+ var transport = new TransportFs();
40
+ describe('MO catalogs', function () {
41
+ it('should read little-endian catalogs', function () { return __awaiter(void 0, void 0, void 0, function () {
42
+ return __generator(this, function (_a) {
43
+ return [2, transport
44
+ .loadFile('src/assets/locale/de_AT/LC_MESSAGES/additional.mo')
45
+ .then(function (buffer) {
46
+ var catalog = parseMoCatalog(Buffer.from(buffer));
47
+ expect(catalog).toBeDefined();
48
+ expect(catalog.entries).toBeDefined();
49
+ expect(catalog.entries['']).toBeDefined();
50
+ expect(catalog.entries['Saturday']).toEqual(['Sonnabend']);
51
+ })];
52
+ });
53
+ }); });
54
+ it('should read big-endian catalogs', function () { return __awaiter(void 0, void 0, void 0, function () {
55
+ return __generator(this, function (_a) {
56
+ return [2, transport
57
+ .loadFile('src/assets/locale/xy/LC_MESSAGES/big-endian.mo')
58
+ .then(function (buffer) {
59
+ var catalog = parseMoCatalog(Buffer.from(buffer));
60
+ expect(catalog).toBeDefined();
61
+ expect(catalog.entries).toBeDefined();
62
+ expect(catalog.entries['']).toBeDefined();
63
+ expect(catalog.entries['Saturday']).toEqual(['Sonnabend']);
64
+ })];
65
+ });
66
+ }); });
67
+ it('should reject catalogs with wrong magic', function () { return __awaiter(void 0, void 0, void 0, function () {
68
+ return __generator(this, function (_a) {
69
+ return [2, transport
70
+ .loadFile('src/assets/locale/xy/LC_MESSAGES/wrong-magic.mo')
71
+ .then(function (buffer) {
72
+ expect(function () { return parseMoCatalog(Buffer.from(buffer)); }).toThrow();
73
+ })];
74
+ });
75
+ }); });
76
+ it('should reject catalogs with major > 0', function () { return __awaiter(void 0, void 0, void 0, function () {
77
+ return __generator(this, function (_a) {
78
+ return [2, transport
79
+ .loadFile('src/assets/locale/xy/LC_MESSAGES/major1.mo')
80
+ .then(function (buffer) {
81
+ expect(function () { return parseMoCatalog(Buffer.from(buffer)); }).toThrow();
82
+ })];
83
+ });
84
+ }); });
85
+ it('should reject catalogs with invalid charsets', function () { return __awaiter(void 0, void 0, void 0, function () {
86
+ return __generator(this, function (_a) {
87
+ return [2, transport
88
+ .loadFile('src/assets/locale/xy/LC_MESSAGES/invalid-charset.mo')
89
+ .then(function (buffer) {
90
+ expect(function () { return parseMoCatalog(Buffer.from(buffer)); }).toThrow();
91
+ })];
92
+ });
93
+ }); });
94
+ it('should accept catalogs without content-type', function () { return __awaiter(void 0, void 0, void 0, function () {
95
+ return __generator(this, function (_a) {
96
+ return [2, transport
97
+ .loadFile('src/assets/locale/xy/LC_MESSAGES/no-content-type.mo')
98
+ .then(function (buffer) {
99
+ expect(parseMoCatalog(Buffer.from(buffer))).toBeDefined();
100
+ })];
101
+ });
102
+ }); });
103
+ it('should accept catalogs without charset', function () { return __awaiter(void 0, void 0, void 0, function () {
104
+ return __generator(this, function (_a) {
105
+ return [2, transport
106
+ .loadFile('src/assets/locale/xy/LC_MESSAGES/no-charset.mo')
107
+ .then(function (buffer) {
108
+ expect(parseMoCatalog(Buffer.from(buffer))).toBeDefined();
109
+ })];
110
+ });
111
+ }); });
112
+ });
113
+ //# 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":"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"}
@@ -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,15 @@
1
+ import { readFile } from 'fs';
2
+ var TransportFs = (function () {
3
+ function TransportFs() {
4
+ }
5
+ TransportFs.prototype.loadFile = function (url) {
6
+ return new Promise(function (resolve, reject) {
7
+ readFile(url, function (err, data) {
8
+ return err ? reject(err) : resolve(data);
9
+ });
10
+ });
11
+ };
12
+ return TransportFs;
13
+ }());
14
+ export { TransportFs };
15
+ //# sourceMappingURL=fs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/transport/fs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAG9B;IAAA;IAQA,CAAC;IAPA,8BAAQ,GAAR,UAAS,GAAW;QACnB,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YAClC,QAAQ,CAAC,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"}
@@ -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,24 @@
1
+ var TransportHttp = (function () {
2
+ function TransportHttp() {
3
+ }
4
+ TransportHttp.prototype.loadFile = function (url) {
5
+ return new Promise(function (resolve, reject) {
6
+ var xhr = new XMLHttpRequest();
7
+ xhr.responseType = 'arraybuffer';
8
+ xhr.open('GET', url, true);
9
+ xhr.onload = function () {
10
+ if (xhr.readyState === 4 && xhr.status === 200) {
11
+ resolve(xhr.response);
12
+ }
13
+ else {
14
+ reject(new Error('get failed with status ' + xhr.status));
15
+ }
16
+ };
17
+ xhr.onerror = function (err) { return reject(err); };
18
+ xhr.send();
19
+ });
20
+ };
21
+ return TransportHttp;
22
+ }());
23
+ export { TransportHttp };
24
+ //# 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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,114 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ 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;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ import mock from 'xhr-mock';
38
+ import { TransportHttp } from './http';
39
+ var success = new TextEncoder().encode('success').buffer;
40
+ var transport = new TransportHttp();
41
+ describe('XMLHttpRequest', function () {
42
+ beforeEach(function () { return mock.setup(); });
43
+ afterEach(function () { return mock.teardown(); });
44
+ it('should work with success', function () { return __awaiter(void 0, void 0, void 0, function () {
45
+ var data;
46
+ return __generator(this, function (_a) {
47
+ switch (_a.label) {
48
+ case 0:
49
+ mock.get('/success', {
50
+ status: 200,
51
+ body: success,
52
+ });
53
+ return [4, transport.loadFile('/success')];
54
+ case 1:
55
+ data = _a.sent();
56
+ expect(data).toEqual(success);
57
+ return [2];
58
+ }
59
+ });
60
+ }); });
61
+ it('should fail on server errors', function () { return __awaiter(void 0, void 0, void 0, function () {
62
+ var e_1;
63
+ return __generator(this, function (_a) {
64
+ switch (_a.label) {
65
+ case 0:
66
+ mock.get('/not-there', {
67
+ status: 404,
68
+ reason: 'not found',
69
+ body: 'not found',
70
+ });
71
+ _a.label = 1;
72
+ case 1:
73
+ _a.trys.push([1, 3, , 4]);
74
+ return [4, transport.loadFile('/not-there')];
75
+ case 2:
76
+ _a.sent();
77
+ return [3, 4];
78
+ case 3:
79
+ e_1 = _a.sent();
80
+ expect(e_1).toBeDefined();
81
+ return [3, 4];
82
+ case 4: return [2];
83
+ }
84
+ });
85
+ }); });
86
+ it('should fail on xhr errors', function () { return __awaiter(void 0, void 0, void 0, function () {
87
+ var log, e_2;
88
+ return __generator(this, function (_a) {
89
+ switch (_a.label) {
90
+ case 0:
91
+ mock.get('/error', function () { return Promise.reject(new Error()); });
92
+ log = console.error;
93
+ console.error = jest.fn();
94
+ _a.label = 1;
95
+ case 1:
96
+ _a.trys.push([1, 3, , 4]);
97
+ return [4, transport.loadFile('/error').catch(function (e) {
98
+ throw new Error(e);
99
+ })];
100
+ case 2:
101
+ _a.sent();
102
+ return [3, 4];
103
+ case 3:
104
+ e_2 = _a.sent();
105
+ expect(e_2).toBeDefined();
106
+ return [3, 4];
107
+ case 4:
108
+ console.error = log;
109
+ return [2];
110
+ }
111
+ });
112
+ }); });
113
+ });
114
+ //# sourceMappingURL=http.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.spec.js","sourceRoot":"","sources":["../../src/transport/http.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,IAAI,MAAM,UAAU,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,IAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;AAC3D,IAAM,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;AAEtC,QAAQ,CAAC,gBAAgB,EAAE;IAC1B,UAAU,CAAC,cAAM,OAAA,IAAI,CAAC,KAAK,EAAE,EAAZ,CAAY,CAAC,CAAC;IAE/B,SAAS,CAAC,cAAM,OAAA,IAAI,CAAC,QAAQ,EAAE,EAAf,CAAe,CAAC,CAAC;IAEjC,EAAE,CAAC,0BAA0B,EAAE;;;;;oBAC9B,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE;wBACpB,MAAM,EAAE,GAAG;wBACX,IAAI,EAAE,OAAO;qBACb,CAAC,CAAC;oBAEU,WAAM,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAA;;oBAA3C,IAAI,GAAG,SAAoC;oBACjD,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;;;;SAC9B,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE;;;;;oBAClC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;wBACtB,MAAM,EAAE,GAAG;wBACX,MAAM,EAAE,WAAW;wBACnB,IAAI,EAAE,WAAW;qBACjB,CAAC,CAAC;;;;oBAGF,WAAM,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAA;;oBAAtC,SAAsC,CAAC;;;;oBAEvC,MAAM,CAAC,GAAC,CAAC,CAAC,WAAW,EAAE,CAAC;;;;;SAEzB,CAAC,CAAC;IAIH,EAAE,CAAC,2BAA2B,EAAE;;;;;oBAC/B,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAM,OAAA,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC,EAA3B,CAA2B,CAAC,CAAC;oBAGhD,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC;oBAE1B,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;;;;oBAEzB,WAAM,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,UAAC,CAAqB;4BAC9D,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;wBACpB,CAAC,CAAC,EAAA;;oBAFF,SAEE,CAAC;;;;oBAEH,MAAM,CAAC,GAAC,CAAC,CAAC,WAAW,EAAE,CAAC;;;oBAGzB,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC;;;;SACpB,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './transport.interface';
2
+ export * from './fs';
3
+ export * from './http';
@@ -0,0 +1,4 @@
1
+ export * from './transport.interface';
2
+ export * from './fs';
3
+ export * from './http';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,MAAM,CAAC;AACrB,cAAc,QAAQ,CAAC"}
@@ -0,0 +1,3 @@
1
+ export interface Transport {
2
+ loadFile(url: string): Promise<ArrayBuffer>;
3
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=transport.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.interface.js","sourceRoot":"","sources":["../../src/transport/transport.interface.ts"],"names":[],"mappings":""}