@formatjs/icu-messageformat-parser 2.2.0 → 2.3.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"manipulator.d.ts","sourceRoot":"","sources":["../manipulator.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,oBAAoB,EAErB,MAAM,SAAS,CAAA;AAkBhB;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,oBAAoB,EAAE,GAC1B,oBAAoB,EAAE,CAyBxB"}
1
+ {"version":3,"file":"manipulator.d.ts","sourceRoot":"","sources":["../manipulator.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,oBAAoB,EAIrB,MAAM,SAAS,CAAA;AA6DhB;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,oBAAoB,EAAE,GAC1B,oBAAoB,EAAE,CAaxB"}
@@ -1,5 +1,5 @@
1
1
  import { __spreadArray } from "tslib";
2
- import { isPluralElement, isSelectElement, } from './types';
2
+ import { isPluralElement, isSelectElement, isTagElement, } from './types';
3
3
  function cloneDeep(obj) {
4
4
  if (Array.isArray(obj)) {
5
5
  // @ts-expect-error meh
@@ -15,6 +15,33 @@ function cloneDeep(obj) {
15
15
  }
16
16
  return obj;
17
17
  }
18
+ function hoistPluralOrSelectElement(ast, el, positionToInject) {
19
+ // pull this out of the ast and move it to the top
20
+ var cloned = cloneDeep(el);
21
+ var options = cloned.options;
22
+ cloned.options = Object.keys(options).reduce(function (all, k) {
23
+ var newValue = hoistSelectors(__spreadArray(__spreadArray(__spreadArray([], ast.slice(0, positionToInject), true), options[k].value, true), ast.slice(positionToInject + 1), true));
24
+ all[k] = {
25
+ value: newValue,
26
+ };
27
+ return all;
28
+ }, {});
29
+ return cloned;
30
+ }
31
+ function isPluralOrSelectElement(el) {
32
+ return isPluralElement(el) || isSelectElement(el);
33
+ }
34
+ function findPluralOrSelectElement(ast) {
35
+ return !!ast.find(function (el) {
36
+ if (isPluralOrSelectElement(el)) {
37
+ return true;
38
+ }
39
+ if (isTagElement(el)) {
40
+ return findPluralOrSelectElement(el.children);
41
+ }
42
+ return false;
43
+ });
44
+ }
18
45
  /**
19
46
  * Hoist all selectors to the beginning of the AST & flatten the
20
47
  * resulting options. E.g:
@@ -27,26 +54,14 @@ function cloneDeep(obj) {
27
54
  * @param ast AST
28
55
  */
29
56
  export function hoistSelectors(ast) {
30
- var _loop_1 = function (i) {
57
+ for (var i = 0; i < ast.length; i++) {
31
58
  var el = ast[i];
32
- if (isPluralElement(el) || isSelectElement(el)) {
33
- // pull this out of the ast and move it to the top
34
- var cloned = cloneDeep(el);
35
- var options_1 = cloned.options;
36
- cloned.options = Object.keys(options_1).reduce(function (all, k) {
37
- var newValue = hoistSelectors(__spreadArray(__spreadArray(__spreadArray([], ast.slice(0, i), true), options_1[k].value, true), ast.slice(i + 1), true));
38
- all[k] = {
39
- value: newValue,
40
- };
41
- return all;
42
- }, {});
43
- return { value: [cloned] };
59
+ if (isPluralOrSelectElement(el)) {
60
+ return [hoistPluralOrSelectElement(ast, el, i)];
61
+ }
62
+ if (isTagElement(el) && findPluralOrSelectElement([el])) {
63
+ throw new Error('Cannot hoist plural/select within a tag element. Please put the tag element inside each plural/select option');
44
64
  }
45
- };
46
- for (var i = 0; i < ast.length; i++) {
47
- var state_1 = _loop_1(i);
48
- if (typeof state_1 === "object")
49
- return state_1.value;
50
65
  }
51
66
  return ast;
52
67
  }
package/lib/no-parser.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export function parse() {
2
- throw new Error("You're trying to format an uncompiled message with react-intl without parser, please import from 'react-int' instead");
2
+ throw new Error("You're trying to format an uncompiled message with react-intl without parser, please import from 'react-intl' instead");
3
3
  }
4
4
  export * from './types';
5
5
  export var _Parser = undefined;
package/lib/types.d.ts CHANGED
@@ -74,11 +74,6 @@ export interface SimpleFormatElement<T extends TYPE, S extends Skeleton> extends
74
74
  export type NumberElement = SimpleFormatElement<TYPE.number, NumberSkeleton>;
75
75
  export type DateElement = SimpleFormatElement<TYPE.date, DateTimeSkeleton>;
76
76
  export type TimeElement = SimpleFormatElement<TYPE.time, DateTimeSkeleton>;
77
- export interface SelectOption {
78
- id: string;
79
- value: MessageFormatElement[];
80
- location?: Location;
81
- }
82
77
  export type ValidPluralRule = 'zero' | 'one' | 'two' | 'few' | 'many' | 'other' | string;
83
78
  export interface PluralOrSelectOption {
84
79
  value: MessageFormatElement[];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"manipulator.d.ts","sourceRoot":"","sources":["manipulator.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,oBAAoB,EAErB,MAAM,SAAS,CAAA;AAkBhB;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,oBAAoB,EAAE,GAC1B,oBAAoB,EAAE,CAyBxB"}
1
+ {"version":3,"file":"manipulator.d.ts","sourceRoot":"","sources":["manipulator.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,oBAAoB,EAIrB,MAAM,SAAS,CAAA;AA6DhB;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,oBAAoB,EAAE,GAC1B,oBAAoB,EAAE,CAaxB"}
package/manipulator.js CHANGED
@@ -18,6 +18,33 @@ function cloneDeep(obj) {
18
18
  }
19
19
  return obj;
20
20
  }
21
+ function hoistPluralOrSelectElement(ast, el, positionToInject) {
22
+ // pull this out of the ast and move it to the top
23
+ var cloned = cloneDeep(el);
24
+ var options = cloned.options;
25
+ cloned.options = Object.keys(options).reduce(function (all, k) {
26
+ var newValue = hoistSelectors(tslib_1.__spreadArray(tslib_1.__spreadArray(tslib_1.__spreadArray([], ast.slice(0, positionToInject), true), options[k].value, true), ast.slice(positionToInject + 1), true));
27
+ all[k] = {
28
+ value: newValue,
29
+ };
30
+ return all;
31
+ }, {});
32
+ return cloned;
33
+ }
34
+ function isPluralOrSelectElement(el) {
35
+ return (0, types_1.isPluralElement)(el) || (0, types_1.isSelectElement)(el);
36
+ }
37
+ function findPluralOrSelectElement(ast) {
38
+ return !!ast.find(function (el) {
39
+ if (isPluralOrSelectElement(el)) {
40
+ return true;
41
+ }
42
+ if ((0, types_1.isTagElement)(el)) {
43
+ return findPluralOrSelectElement(el.children);
44
+ }
45
+ return false;
46
+ });
47
+ }
21
48
  /**
22
49
  * Hoist all selectors to the beginning of the AST & flatten the
23
50
  * resulting options. E.g:
@@ -30,26 +57,14 @@ function cloneDeep(obj) {
30
57
  * @param ast AST
31
58
  */
32
59
  function hoistSelectors(ast) {
33
- var _loop_1 = function (i) {
60
+ for (var i = 0; i < ast.length; i++) {
34
61
  var el = ast[i];
35
- if ((0, types_1.isPluralElement)(el) || (0, types_1.isSelectElement)(el)) {
36
- // pull this out of the ast and move it to the top
37
- var cloned = cloneDeep(el);
38
- var options_1 = cloned.options;
39
- cloned.options = Object.keys(options_1).reduce(function (all, k) {
40
- var newValue = hoistSelectors(tslib_1.__spreadArray(tslib_1.__spreadArray(tslib_1.__spreadArray([], ast.slice(0, i), true), options_1[k].value, true), ast.slice(i + 1), true));
41
- all[k] = {
42
- value: newValue,
43
- };
44
- return all;
45
- }, {});
46
- return { value: [cloned] };
62
+ if (isPluralOrSelectElement(el)) {
63
+ return [hoistPluralOrSelectElement(ast, el, i)];
64
+ }
65
+ if ((0, types_1.isTagElement)(el) && findPluralOrSelectElement([el])) {
66
+ throw new Error('Cannot hoist plural/select within a tag element. Please put the tag element inside each plural/select option');
47
67
  }
48
- };
49
- for (var i = 0; i < ast.length; i++) {
50
- var state_1 = _loop_1(i);
51
- if (typeof state_1 === "object")
52
- return state_1.value;
53
68
  }
54
69
  return ast;
55
70
  }
package/no-parser.js CHANGED
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports._Parser = exports.parse = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  function parse() {
6
- throw new Error("You're trying to format an uncompiled message with react-intl without parser, please import from 'react-int' instead");
6
+ throw new Error("You're trying to format an uncompiled message with react-intl without parser, please import from 'react-intl' instead");
7
7
  }
8
8
  exports.parse = parse;
9
9
  tslib_1.__exportStar(require("./types"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@formatjs/icu-messageformat-parser",
3
- "version": "2.2.0",
3
+ "version": "2.3.1",
4
4
  "main": "index.js",
5
5
  "module": "lib/index.js",
6
6
  "types": "index.d.ts",
package/types.d.ts CHANGED
@@ -74,11 +74,6 @@ export interface SimpleFormatElement<T extends TYPE, S extends Skeleton> extends
74
74
  export type NumberElement = SimpleFormatElement<TYPE.number, NumberSkeleton>;
75
75
  export type DateElement = SimpleFormatElement<TYPE.date, DateTimeSkeleton>;
76
76
  export type TimeElement = SimpleFormatElement<TYPE.time, DateTimeSkeleton>;
77
- export interface SelectOption {
78
- id: string;
79
- value: MessageFormatElement[];
80
- location?: Location;
81
- }
82
77
  export type ValidPluralRule = 'zero' | 'one' | 'two' | 'few' | 'many' | 'other' | string;
83
78
  export interface PluralOrSelectOption {
84
79
  value: MessageFormatElement[];
package/types.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["types.ts"],"names":[],"mappings":"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"}