@theia/core 1.28.0-next.2 → 1.28.0-next.7

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.
package/README.md CHANGED
@@ -86,12 +86,12 @@ export class SomeClass {
86
86
  - `@phosphor/signaling` (from [`@phosphor/signaling@1`](https://www.npmjs.com/package/@phosphor/signaling))
87
87
  - `@phosphor/virtualdom` (from [`@phosphor/virtualdom@1`](https://www.npmjs.com/package/@phosphor/virtualdom))
88
88
  - `@phosphor/widgets` (from [`@phosphor/widgets@1`](https://www.npmjs.com/package/@phosphor/widgets))
89
- - `@theia/application-package` (from [`@theia/application-package@1.28.0-next.2+c82d9c5b4da`](https://www.npmjs.com/package/@theia/application-package/v/1.28.0-next.2))
90
- - `@theia/application-package/lib/api` (from [`@theia/application-package@1.28.0-next.2+c82d9c5b4da`](https://www.npmjs.com/package/@theia/application-package/v/1.28.0-next.2))
91
- - `@theia/application-package/lib/environment` (from [`@theia/application-package@1.28.0-next.2+c82d9c5b4da`](https://www.npmjs.com/package/@theia/application-package/v/1.28.0-next.2))
92
- - `@theia/request` (from [`@theia/request@1.28.0-next.2+c82d9c5b4da`](https://www.npmjs.com/package/@theia/request/v/1.28.0-next.2))
93
- - `@theia/request/lib/proxy` (from [`@theia/request@1.28.0-next.2+c82d9c5b4da`](https://www.npmjs.com/package/@theia/request/v/1.28.0-next.2))
94
- - `@theia/request/lib/node-request-service` (from [`@theia/request@1.28.0-next.2+c82d9c5b4da`](https://www.npmjs.com/package/@theia/request/v/1.28.0-next.2))
89
+ - `@theia/application-package` (from [`@theia/application-package@1.28.0-next.7+3b689e0b4f3`](https://www.npmjs.com/package/@theia/application-package/v/1.28.0-next.7))
90
+ - `@theia/application-package/lib/api` (from [`@theia/application-package@1.28.0-next.7+3b689e0b4f3`](https://www.npmjs.com/package/@theia/application-package/v/1.28.0-next.7))
91
+ - `@theia/application-package/lib/environment` (from [`@theia/application-package@1.28.0-next.7+3b689e0b4f3`](https://www.npmjs.com/package/@theia/application-package/v/1.28.0-next.7))
92
+ - `@theia/request` (from [`@theia/request@1.28.0-next.7+3b689e0b4f3`](https://www.npmjs.com/package/@theia/request/v/1.28.0-next.7))
93
+ - `@theia/request/lib/proxy` (from [`@theia/request@1.28.0-next.7+3b689e0b4f3`](https://www.npmjs.com/package/@theia/request/v/1.28.0-next.7))
94
+ - `@theia/request/lib/node-request-service` (from [`@theia/request@1.28.0-next.7+3b689e0b4f3`](https://www.npmjs.com/package/@theia/request/v/1.28.0-next.7))
95
95
  - `fs-extra` (from [`fs-extra@^4.0.2`](https://www.npmjs.com/package/fs-extra))
96
96
  - `fuzzy` (from [`fuzzy@^0.1.3`](https://www.npmjs.com/package/fuzzy))
97
97
  - `inversify` (from [`inversify@^5.1.1`](https://www.npmjs.com/package/inversify))
@@ -1 +1 @@
1
- {"version":3,"file":"preloader.d.ts","sourceRoot":"","sources":["../../src/browser/preloader.ts"],"names":[],"mappings":"AAuDA,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAM7C"}
1
+ {"version":3,"file":"preloader.d.ts","sourceRoot":"","sources":["../../src/browser/preloader.ts"],"names":[],"mappings":"AAiEA,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAM7C"}
@@ -33,7 +33,17 @@ async function loadTranslations() {
33
33
  }
34
34
  if (nls_1.nls.locale) {
35
35
  const response = await fetchFrom(`/i18n/${nls_1.nls.locale}`);
36
- nls_1.nls.localization = await response.json();
36
+ const localization = await response.json();
37
+ if (localization.languagePack) {
38
+ nls_1.nls.localization = localization;
39
+ }
40
+ else {
41
+ // In case the localization that we've loaded doesn't localize Theia completely (languagePack is false)
42
+ // We simply reset the locale to the default again
43
+ Object.assign(nls_1.nls, {
44
+ locale: defaultLocale || undefined
45
+ });
46
+ }
37
47
  }
38
48
  }
39
49
  async function loadBackendOS() {
@@ -1 +1 @@
1
- {"version":3,"file":"preloader.js","sourceRoot":"","sources":["../../src/browser/preloader.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,2EAA2E;AAC3E,gFAAgF;;;AAEhF,uCAAoC;AACpC,yCAAsC;AACtC,qCAAkC;AAClC,iGAAiI;AAEjI,SAAS,SAAS,CAAC,IAAY;IAC3B,MAAM,QAAQ,GAAG,IAAI,mBAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC;IAChE,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC3B,CAAC;AAED,KAAK,UAAU,gBAAgB;IAC3B,MAAM,aAAa,GAAG,wEAAiC,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC;IAC5E,IAAI,aAAa,IAAI,CAAC,SAAG,CAAC,MAAM,EAAE;QAC9B,MAAM,CAAC,MAAM,CAAC,SAAG,EAAE;YACf,MAAM,EAAE,aAAa;SACxB,CAAC,CAAC;KACN;IACD,IAAI,SAAG,CAAC,MAAM,EAAE;QACZ,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,SAAS,SAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACxD,SAAG,CAAC,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;KAC5C;AACL,CAAC;AAED,KAAK,UAAU,aAAa;IACxB,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAa,CAAC;IAChD,MAAM,SAAS,GAAG,MAAM,KAAK,SAAS,CAAC;IACvC,MAAM,KAAK,GAAG,MAAM,KAAK,KAAK,CAAC;IAC/B,OAAE,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;IACzB,OAAE,CAAC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IACjC,OAAE,CAAC,OAAO,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC;AACnC,CAAC;AAED,SAAS,cAAc;IACnB,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,2EAAoC,CAAC,IAAI,SAAS,CAAC;IAC7F,MAAM,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC;IACjD,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;AAC1E,CAAC;AAEM,KAAK,UAAU,OAAO;IACzB,MAAM,OAAO,CAAC,UAAU,CAAC;QACrB,gBAAgB,EAAE;QAClB,aAAa,EAAE;QACf,cAAc,EAAE;KACnB,CAAC,CAAC;AACP,CAAC;AAND,0BAMC"}
1
+ {"version":3,"file":"preloader.js","sourceRoot":"","sources":["../../src/browser/preloader.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,2EAA2E;AAC3E,gFAAgF;;;AAEhF,uCAAoC;AACpC,yCAAsC;AACtC,qCAAkC;AAClC,iGAAiI;AAGjI,SAAS,SAAS,CAAC,IAAY;IAC3B,MAAM,QAAQ,GAAG,IAAI,mBAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC;IAChE,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC3B,CAAC;AAED,KAAK,UAAU,gBAAgB;IAC3B,MAAM,aAAa,GAAG,wEAAiC,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC;IAC5E,IAAI,aAAa,IAAI,CAAC,SAAG,CAAC,MAAM,EAAE;QAC9B,MAAM,CAAC,MAAM,CAAC,SAAG,EAAE;YACf,MAAM,EAAE,aAAa;SACxB,CAAC,CAAC;KACN;IACD,IAAI,SAAG,CAAC,MAAM,EAAE;QACZ,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,SAAS,SAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACxD,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAkB,CAAC;QAC3D,IAAI,YAAY,CAAC,YAAY,EAAE;YAC3B,SAAG,CAAC,YAAY,GAAG,YAAY,CAAC;SACnC;aAAM;YACH,uGAAuG;YACvG,kDAAkD;YAClD,MAAM,CAAC,MAAM,CAAC,SAAG,EAAE;gBACf,MAAM,EAAE,aAAa,IAAI,SAAS;aACrC,CAAC,CAAC;SACN;KACJ;AACL,CAAC;AAED,KAAK,UAAU,aAAa;IACxB,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAa,CAAC;IAChD,MAAM,SAAS,GAAG,MAAM,KAAK,SAAS,CAAC;IACvC,MAAM,KAAK,GAAG,MAAM,KAAK,KAAK,CAAC;IAC/B,OAAE,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;IACzB,OAAE,CAAC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IACjC,OAAE,CAAC,OAAO,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC;AACnC,CAAC;AAED,SAAS,cAAc;IACnB,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,2EAAoC,CAAC,IAAI,SAAS,CAAC;IAC7F,MAAM,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC;IACjD,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;AAC1E,CAAC;AAEM,KAAK,UAAU,OAAO;IACzB,MAAM,OAAO,CAAC,UAAU,CAAC;QACrB,gBAAgB,EAAE;QAClB,aAAa,EAAE;QACf,cAAc,EAAE;KACnB,CAAC,CAAC;AACP,CAAC;AAND,0BAMC"}
@@ -60,6 +60,22 @@ export declare namespace ArrayUtils {
60
60
  RightBeforeLeft = 1,
61
61
  Equal = 0
62
62
  }
63
+ /**
64
+ * Performs a binary search algorithm over a sorted collection. Useful for cases
65
+ * when we need to perform a binary search over something that isn't actually an
66
+ * array, and converting data to an array would defeat the use of binary search
67
+ * in the first place.
68
+ *
69
+ * @param length The collection length.
70
+ * @param compareToKey A function that takes an index of an element in the
71
+ * collection and returns zero if the value at this index is equal to the
72
+ * search key, a negative number if the value precedes the search key in the
73
+ * sorting order, or a positive number if the search key precedes the value.
74
+ * @return A non-negative index of an element, if found. If not found, the
75
+ * result is -(n+1) (or ~n, using bitwise notation), where n is the index
76
+ * where the key should be inserted to maintain the sorting order.
77
+ */
78
+ function binarySearch2(length: number, compareToKey: (index: number) => number): number;
63
79
  }
64
80
  /**
65
81
  * Throws when called and statically makes sure that all variants of a type were consumed.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/common/types.ts"],"names":[],"mappings":"AAgBA,oBAAY,OAAO,CAAC,CAAC,IAAI;IAAE,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC;AAC5D,oBAAY,SAAS,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;CAAE,CAAC;AAC3D,oBAAY,cAAc,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS;CAAE,CAAC;AAErE;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAS5E;AAED,oBAAY,QAAQ,CAAC,CAAC,IAAI;KACrB,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAChC,CAAC;AACF,oBAAY,gBAAgB,CAAC,CAAC,IAAI;KAC7B,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GAC1C,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAC1B,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC3B,CAAC;AACF,oBAAY,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AACpC,oBAAY,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAEjD,MAAM,WAAW,cAAc,CAAC,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;CACrB;AACD,yBAAiB,cAAc,CAAC;IAC5B,KAAY,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,YAAY,CAAC,MAAM,CAAC,CAAC;IAChE,KAAY,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC;IACtD,SAAsB,gBAAgB,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9H,SAAsB,gBAAgB,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAWlI,SAAgB,oBAAoB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,EAAE,CAK3G;IACD,SAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,EAAE,CAGtG;IACD,SAAsB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAG3H;IACD,SAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,OAAO,CAExD;IACD,SAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,MAAM,CAE9E;CACJ;AAED,yBAAiB,UAAU,CAAC;IACxB,UAAiB,IAAI,CAAC,CAAC,CAAE,SAAQ,KAAK,CAAC,CAAC,CAAC;QACrC,IAAI,IAAI,CAAC,CAAC;KACb;IAED,UAAiB,IAAI,CAAC,CAAC,CAAE,SAAQ,KAAK,CAAC,CAAC,CAAC;QACrC,IAAI,IAAI,CAAC,CAAC;KACb;IAED,UAAiB,QAAQ,CAAC,CAAC,CAAE,SAAQ,KAAK,CAAC,CAAC,CAAC;QACzC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,CAAA;KACtB;IAEM,MAAM,QAAQ;;KAIpB,CAAC;IAEK,MAAM,mBAAmB;;;KAQ/B,CAAC;IAEF,UAAiB,WAAW,CAAC,CAAC,CAAE,SAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;KAAI;IAEzE,SAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAElD;IAED,SAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAEhE;IAED,KAAY,IAAI;QACZ,eAAe,KAAK;QACpB,eAAe,IAAI;QACnB,KAAK,IAAI;KACZ;CACJ;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,GAAE,MAAyB,GAAG,KAAK,CAEpF"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/common/types.ts"],"names":[],"mappings":"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"}
@@ -96,6 +96,41 @@ var ArrayUtils;
96
96
  Sort[Sort["RightBeforeLeft"] = 1] = "RightBeforeLeft";
97
97
  Sort[Sort["Equal"] = 0] = "Equal";
98
98
  })(Sort = ArrayUtils.Sort || (ArrayUtils.Sort = {}));
99
+ // Copied from https://github.com/microsoft/vscode/blob/9c29becfad5f68270b9b23efeafb147722c5feba/src/vs/base/common/arrays.ts
100
+ /**
101
+ * Performs a binary search algorithm over a sorted collection. Useful for cases
102
+ * when we need to perform a binary search over something that isn't actually an
103
+ * array, and converting data to an array would defeat the use of binary search
104
+ * in the first place.
105
+ *
106
+ * @param length The collection length.
107
+ * @param compareToKey A function that takes an index of an element in the
108
+ * collection and returns zero if the value at this index is equal to the
109
+ * search key, a negative number if the value precedes the search key in the
110
+ * sorting order, or a positive number if the search key precedes the value.
111
+ * @return A non-negative index of an element, if found. If not found, the
112
+ * result is -(n+1) (or ~n, using bitwise notation), where n is the index
113
+ * where the key should be inserted to maintain the sorting order.
114
+ */
115
+ function binarySearch2(length, compareToKey) {
116
+ let low = 0;
117
+ let high = length - 1;
118
+ while (low <= high) {
119
+ const mid = ((low + high) / 2) | 0;
120
+ const comp = compareToKey(mid);
121
+ if (comp < 0) {
122
+ low = mid + 1;
123
+ }
124
+ else if (comp > 0) {
125
+ high = mid - 1;
126
+ }
127
+ else {
128
+ return mid;
129
+ }
130
+ }
131
+ return -(low + 1);
132
+ }
133
+ ArrayUtils.binarySearch2 = binarySearch2;
99
134
  })(ArrayUtils = exports.ArrayUtils || (exports.ArrayUtils = {}));
100
135
  /**
101
136
  * Throws when called and statically makes sure that all variants of a type were consumed.
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/common/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/common/types.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  import { LanguageInfo, Localization } from '../../common/i18n/localization';
2
2
  export declare class LocalizationProvider {
3
- protected localizations: Map<string, Localization>;
3
+ protected localizations: Localization[];
4
4
  protected currentLanguage: string;
5
5
  addLocalizations(...localizations: Localization[]): void;
6
+ removeLocalizations(...localizations: Localization[]): void;
6
7
  setCurrentLanguage(languageId: string): void;
7
8
  getCurrentLanguage(): string;
8
9
  getAvailableLanguages(all?: boolean): LanguageInfo[];
@@ -1 +1 @@
1
- {"version":3,"file":"localization-provider.d.ts","sourceRoot":"","sources":["../../../src/node/i18n/localization-provider.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE5E,qBACa,oBAAoB;IAE7B,SAAS,CAAC,aAAa,4BAAmC;IAC1D,SAAS,CAAC,eAAe,SAAQ;IAEjC,gBAAgB,CAAC,GAAG,aAAa,EAAE,YAAY,EAAE,GAAG,IAAI;IAgBxD,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAI5C,kBAAkB,IAAI,MAAM;IAI5B,qBAAqB,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,YAAY,EAAE;IAepD,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY;CAQrD"}
1
+ {"version":3,"file":"localization-provider.d.ts","sourceRoot":"","sources":["../../../src/node/i18n/localization-provider.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE5E,qBACa,oBAAoB;IAE7B,SAAS,CAAC,aAAa,EAAE,YAAY,EAAE,CAAM;IAC7C,SAAS,CAAC,eAAe,SAAQ;IAEjC,gBAAgB,CAAC,GAAG,aAAa,EAAE,YAAY,EAAE,GAAG,IAAI;IAIxD,mBAAmB,CAAC,GAAG,aAAa,EAAE,YAAY,EAAE,GAAG,IAAI;IAS3D,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAI5C,kBAAkB,IAAI,MAAM;IAI5B,qBAAqB,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,YAAY,EAAE;IAgBpD,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY;CAcrD"}
@@ -25,22 +25,18 @@ exports.LocalizationProvider = void 0;
25
25
  const inversify_1 = require("inversify");
26
26
  let LocalizationProvider = class LocalizationProvider {
27
27
  constructor() {
28
- this.localizations = new Map();
28
+ this.localizations = [];
29
29
  this.currentLanguage = 'en';
30
30
  }
31
31
  addLocalizations(...localizations) {
32
+ this.localizations.push(...localizations);
33
+ }
34
+ removeLocalizations(...localizations) {
32
35
  for (const localization of localizations) {
33
- let merged = this.localizations.get(localization.languageId);
34
- if (!merged) {
35
- this.localizations.set(localization.languageId, merged = {
36
- languageId: localization.languageId,
37
- translations: {}
38
- });
36
+ const index = this.localizations.indexOf(localization);
37
+ if (index >= 0) {
38
+ this.localizations.splice(index, 1);
39
39
  }
40
- merged.languageName = merged.languageName || localization.languageName;
41
- merged.localizedLanguageName = merged.localizedLanguageName || localization.localizedLanguageName;
42
- merged.languagePack = merged.languagePack || localization.languagePack;
43
- Object.assign(merged.translations, localization.translations);
44
40
  }
45
41
  }
46
42
  setCurrentLanguage(languageId) {
@@ -50,25 +46,33 @@ let LocalizationProvider = class LocalizationProvider {
50
46
  return this.currentLanguage;
51
47
  }
52
48
  getAvailableLanguages(all) {
53
- const languageIds = [];
49
+ var _a;
50
+ const languageInfos = new Map();
54
51
  for (const localization of this.localizations.values()) {
55
52
  if (all || localization.languagePack) {
56
- languageIds.push({
57
- languageId: localization.languageId,
58
- languageName: localization.languageName,
59
- languagePack: localization.languagePack,
60
- localizedLanguageName: localization.localizedLanguageName
61
- });
53
+ const languageInfo = (_a = languageInfos.get(localization.languageId)) !== null && _a !== void 0 ? _a : {
54
+ languageId: localization.languageId
55
+ };
56
+ languageInfo.languageName || (languageInfo.languageName = localization.languageName);
57
+ languageInfo.localizedLanguageName || (languageInfo.localizedLanguageName = localization.localizedLanguageName);
58
+ languageInfo.languagePack || (languageInfo.languagePack = localization.languagePack);
59
+ languageInfos.set(localization.languageId, languageInfo);
62
60
  }
63
61
  }
64
- return languageIds.sort((a, b) => a.languageId.localeCompare(b.languageId));
62
+ return Array.from(languageInfos.values()).sort((a, b) => a.languageId.localeCompare(b.languageId));
65
63
  }
66
64
  loadLocalization(languageId) {
67
- return this.localizations.get(languageId) ||
68
- {
69
- languageId,
70
- translations: {}
71
- };
65
+ const merged = {
66
+ languageId,
67
+ translations: {}
68
+ };
69
+ for (const localization of this.localizations.filter(e => e.languageId === languageId)) {
70
+ merged.languageName || (merged.languageName = localization.languageName);
71
+ merged.localizedLanguageName || (merged.localizedLanguageName = localization.localizedLanguageName);
72
+ merged.languagePack || (merged.languagePack = localization.languagePack);
73
+ Object.assign(merged.translations, localization.translations);
74
+ }
75
+ return merged;
72
76
  }
73
77
  };
74
78
  LocalizationProvider = __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"localization-provider.js","sourceRoot":"","sources":["../../../src/node/i18n/localization-provider.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,2EAA2E;AAC3E,gFAAgF;;;;;;;;;AAEhF,yCAAuC;AAIvC,IAAa,oBAAoB,GAAjC,MAAa,oBAAoB;IAAjC;QAEc,kBAAa,GAAG,IAAI,GAAG,EAAwB,CAAC;QAChD,oBAAe,GAAG,IAAI,CAAC;IAiDrC,CAAC;IA/CG,gBAAgB,CAAC,GAAG,aAA6B;QAC7C,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE;YACtC,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YAC7D,IAAI,CAAC,MAAM,EAAE;gBACT,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG;oBACrD,UAAU,EAAE,YAAY,CAAC,UAAU;oBACnC,YAAY,EAAE,EAAE;iBACnB,CAAC,CAAC;aACN;YACD,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,YAAY,CAAC,YAAY,CAAC;YACvE,MAAM,CAAC,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,IAAI,YAAY,CAAC,qBAAqB,CAAC;YAClG,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,YAAY,CAAC,YAAY,CAAC;YACvE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC;SACjE;IACL,CAAC;IAED,kBAAkB,CAAC,UAAkB;QACjC,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC;IACtC,CAAC;IAED,kBAAkB;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED,qBAAqB,CAAC,GAAa;QAC/B,MAAM,WAAW,GAAmB,EAAE,CAAC;QACvC,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE;YACpD,IAAI,GAAG,IAAI,YAAY,CAAC,YAAY,EAAE;gBAClC,WAAW,CAAC,IAAI,CAAC;oBACb,UAAU,EAAE,YAAY,CAAC,UAAU;oBACnC,YAAY,EAAE,YAAY,CAAC,YAAY;oBACvC,YAAY,EAAE,YAAY,CAAC,YAAY;oBACvC,qBAAqB,EAAE,YAAY,CAAC,qBAAqB;iBAC5D,CAAC,CAAC;aACN;SACJ;QACD,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,gBAAgB,CAAC,UAAkB;QAC/B,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;YACzC;gBACI,UAAU;gBACV,YAAY,EAAE,EAAE;aACnB,CAAC;IACN,CAAC;CAEJ,CAAA;AApDY,oBAAoB;IADhC,IAAA,sBAAU,GAAE;GACA,oBAAoB,CAoDhC;AApDY,oDAAoB"}
1
+ {"version":3,"file":"localization-provider.js","sourceRoot":"","sources":["../../../src/node/i18n/localization-provider.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theia/core",
3
- "version": "1.28.0-next.2+c82d9c5b4da",
3
+ "version": "1.28.0-next.7+3b689e0b4f3",
4
4
  "description": "Theia is a cloud & desktop IDE framework implemented in TypeScript.",
5
5
  "main": "lib/common/index.js",
6
6
  "typings": "lib/common/index.d.ts",
@@ -16,8 +16,8 @@
16
16
  "@phosphor/signaling": "1",
17
17
  "@phosphor/virtualdom": "1",
18
18
  "@phosphor/widgets": "1",
19
- "@theia/application-package": "1.28.0-next.2+c82d9c5b4da",
20
- "@theia/request": "1.28.0-next.2+c82d9c5b4da",
19
+ "@theia/application-package": "1.28.0-next.7+3b689e0b4f3",
20
+ "@theia/request": "1.28.0-next.7+3b689e0b4f3",
21
21
  "@types/body-parser": "^1.16.4",
22
22
  "@types/cookie": "^0.3.3",
23
23
  "@types/dompurify": "^2.2.2",
@@ -200,5 +200,5 @@
200
200
  "nyc": {
201
201
  "extends": "../../configs/nyc.json"
202
202
  },
203
- "gitHead": "c82d9c5b4dad0e5c18506f349f16c8da55a45522"
203
+ "gitHead": "3b689e0b4f37844f674b26fc9b2c4d735b0115fd"
204
204
  }
@@ -18,6 +18,7 @@ import { nls } from '../common/nls';
18
18
  import { Endpoint } from './endpoint';
19
19
  import { OS } from '../common/os';
20
20
  import { DEFAULT_BACKGROUND_COLOR_STORAGE_KEY, FrontendApplicationConfigProvider } from './frontend-application-config-provider';
21
+ import { Localization } from '../common/i18n/localization';
21
22
 
22
23
  function fetchFrom(path: string): Promise<Response> {
23
24
  const endpoint = new Endpoint({ path }).getRestUrl().toString();
@@ -33,7 +34,16 @@ async function loadTranslations(): Promise<void> {
33
34
  }
34
35
  if (nls.locale) {
35
36
  const response = await fetchFrom(`/i18n/${nls.locale}`);
36
- nls.localization = await response.json();
37
+ const localization = await response.json() as Localization;
38
+ if (localization.languagePack) {
39
+ nls.localization = localization;
40
+ } else {
41
+ // In case the localization that we've loaded doesn't localize Theia completely (languagePack is false)
42
+ // We simply reset the locale to the default again
43
+ Object.assign(nls, {
44
+ locale: defaultLocale || undefined
45
+ });
46
+ }
37
47
  }
38
48
  }
39
49
 
@@ -128,6 +128,40 @@ export namespace ArrayUtils {
128
128
  RightBeforeLeft = 1,
129
129
  Equal = 0,
130
130
  }
131
+
132
+ // Copied from https://github.com/microsoft/vscode/blob/9c29becfad5f68270b9b23efeafb147722c5feba/src/vs/base/common/arrays.ts
133
+ /**
134
+ * Performs a binary search algorithm over a sorted collection. Useful for cases
135
+ * when we need to perform a binary search over something that isn't actually an
136
+ * array, and converting data to an array would defeat the use of binary search
137
+ * in the first place.
138
+ *
139
+ * @param length The collection length.
140
+ * @param compareToKey A function that takes an index of an element in the
141
+ * collection and returns zero if the value at this index is equal to the
142
+ * search key, a negative number if the value precedes the search key in the
143
+ * sorting order, or a positive number if the search key precedes the value.
144
+ * @return A non-negative index of an element, if found. If not found, the
145
+ * result is -(n+1) (or ~n, using bitwise notation), where n is the index
146
+ * where the key should be inserted to maintain the sorting order.
147
+ */
148
+ export function binarySearch2(length: number, compareToKey: (index: number) => number): number {
149
+ let low = 0;
150
+ let high = length - 1;
151
+
152
+ while (low <= high) {
153
+ const mid = ((low + high) / 2) | 0;
154
+ const comp = compareToKey(mid);
155
+ if (comp < 0) {
156
+ low = mid + 1;
157
+ } else if (comp > 0) {
158
+ high = mid - 1;
159
+ } else {
160
+ return mid;
161
+ }
162
+ }
163
+ return -(low + 1);
164
+ }
131
165
  }
132
166
 
133
167
  /**
@@ -20,22 +20,19 @@ import { LanguageInfo, Localization } from '../../common/i18n/localization';
20
20
  @injectable()
21
21
  export class LocalizationProvider {
22
22
 
23
- protected localizations = new Map<string, Localization>();
23
+ protected localizations: Localization[] = [];
24
24
  protected currentLanguage = 'en';
25
25
 
26
26
  addLocalizations(...localizations: Localization[]): void {
27
+ this.localizations.push(...localizations);
28
+ }
29
+
30
+ removeLocalizations(...localizations: Localization[]): void {
27
31
  for (const localization of localizations) {
28
- let merged = this.localizations.get(localization.languageId);
29
- if (!merged) {
30
- this.localizations.set(localization.languageId, merged = {
31
- languageId: localization.languageId,
32
- translations: {}
33
- });
32
+ const index = this.localizations.indexOf(localization);
33
+ if (index >= 0) {
34
+ this.localizations.splice(index, 1);
34
35
  }
35
- merged.languageName = merged.languageName || localization.languageName;
36
- merged.localizedLanguageName = merged.localizedLanguageName || localization.localizedLanguageName;
37
- merged.languagePack = merged.languagePack || localization.languagePack;
38
- Object.assign(merged.translations, localization.translations);
39
36
  }
40
37
  }
41
38
 
@@ -48,26 +45,33 @@ export class LocalizationProvider {
48
45
  }
49
46
 
50
47
  getAvailableLanguages(all?: boolean): LanguageInfo[] {
51
- const languageIds: LanguageInfo[] = [];
48
+ const languageInfos = new Map<string, LanguageInfo>();
52
49
  for (const localization of this.localizations.values()) {
53
50
  if (all || localization.languagePack) {
54
- languageIds.push({
55
- languageId: localization.languageId,
56
- languageName: localization.languageName,
57
- languagePack: localization.languagePack,
58
- localizedLanguageName: localization.localizedLanguageName
59
- });
51
+ const languageInfo = languageInfos.get(localization.languageId) ?? {
52
+ languageId: localization.languageId
53
+ };
54
+ languageInfo.languageName ||= localization.languageName;
55
+ languageInfo.localizedLanguageName ||= localization.localizedLanguageName;
56
+ languageInfo.languagePack ||= localization.languagePack;
57
+ languageInfos.set(localization.languageId, languageInfo);
60
58
  }
61
59
  }
62
- return languageIds.sort((a, b) => a.languageId.localeCompare(b.languageId));
60
+ return Array.from(languageInfos.values()).sort((a, b) => a.languageId.localeCompare(b.languageId));
63
61
  }
64
62
 
65
63
  loadLocalization(languageId: string): Localization {
66
- return this.localizations.get(languageId) ||
67
- {
64
+ const merged: Localization = {
68
65
  languageId,
69
66
  translations: {}
70
67
  };
68
+ for (const localization of this.localizations.filter(e => e.languageId === languageId)) {
69
+ merged.languageName ||= localization.languageName;
70
+ merged.localizedLanguageName ||= localization.localizedLanguageName;
71
+ merged.languagePack ||= localization.languagePack;
72
+ Object.assign(merged.translations, localization.translations);
73
+ }
74
+ return merged;
71
75
  }
72
76
 
73
77
  }