@mapples/inlang 1.1.1 → 1.2.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.
@@ -3,6 +3,28 @@ import { ConditionFunc, Conditions } from './types';
3
3
  export declare const eq: ConditionFunc;
4
4
  /** Strict-inequality condition: returns `true` when `a !== b`. */
5
5
  export declare const notEq: ConditionFunc;
6
+ /** Numeric `>` comparison; both operands are coerced via {@link asNumber}. */
7
+ export declare const gt: ConditionFunc;
8
+ /** Numeric `>=` comparison; both operands are coerced via {@link asNumber}. */
9
+ export declare const gte: ConditionFunc;
10
+ /** Numeric `<` comparison; both operands are coerced via {@link asNumber}. */
11
+ export declare const lt: ConditionFunc;
12
+ /** Numeric `<=` comparison; both operands are coerced via {@link asNumber}. */
13
+ export declare const lte: ConditionFunc;
14
+ /**
15
+ * Membership condition: array `a` includes `b`, or string `a` contains the
16
+ * substring `String(b)`. Non-string/array subjects are stringified.
17
+ */
18
+ export declare const contains: ConditionFunc;
19
+ /** Negated {@link contains}. */
20
+ export declare const notContains: ConditionFunc;
21
+ /**
22
+ * Unary emptiness condition: `true` for null/undefined, `''`, empty arrays
23
+ * and plain objects with no keys. Numbers and booleans are never empty.
24
+ */
25
+ export declare const isEmpty: ConditionFunc;
26
+ /** Negated {@link isEmpty}. */
27
+ export declare const isNotEmpty: ConditionFunc;
6
28
  /**
7
29
  * Lookup map from each {@link Conditions} operator to its corresponding
8
30
  * {@link ConditionFunc} implementation.
@@ -1 +1 @@
1
- {"version":3,"file":"conditions.d.ts","sourceRoot":"","sources":["../../src/state/conditions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEpD,gEAAgE;AAChE,eAAO,MAAM,EAAE,EAAE,aAAiC,CAAC;AAEnD,kEAAkE;AAClE,eAAO,MAAM,KAAK,EAAE,aAAiC,CAAC;AAEtD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,UAAU,EAAE,aAAa,CAG1D,CAAC"}
1
+ {"version":3,"file":"conditions.d.ts","sourceRoot":"","sources":["../../src/state/conditions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEpD,gEAAgE;AAChE,eAAO,MAAM,EAAE,EAAE,aAAiC,CAAC;AAEnD,kEAAkE;AAClE,eAAO,MAAM,KAAK,EAAE,aAAiC,CAAC;AAUtD,8EAA8E;AAC9E,eAAO,MAAM,EAAE,EAAE,aAAmD,CAAC;AAErE,+EAA+E;AAC/E,eAAO,MAAM,GAAG,EAAE,aAAoD,CAAC;AAEvE,8EAA8E;AAC9E,eAAO,MAAM,EAAE,EAAE,aAAmD,CAAC;AAErE,+EAA+E;AAC/E,eAAO,MAAM,GAAG,EAAE,aAAoD,CAAC;AAEvE;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,aAItB,CAAC;AAEF,gCAAgC;AAChC,eAAO,MAAM,WAAW,EAAE,aAAyC,CAAC;AASpE;;;GAGG;AACH,eAAO,MAAM,OAAO,EAAE,aAA+B,CAAC;AAEtD,+BAA+B;AAC/B,eAAO,MAAM,UAAU,EAAE,aAAgC,CAAC;AAE1D;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,UAAU,EAAE,aAAa,CAW1D,CAAC"}
@@ -3,6 +3,52 @@ import { Conditions } from './types';
3
3
  export const eq = (a, b) => a === b;
4
4
  /** Strict-inequality condition: returns `true` when `a !== b`. */
5
5
  export const notEq = (a, b) => a !== b;
6
+ /** Coerce an arbitrary state value to a number for ordering comparisons. */
7
+ const asNumber = (value) => {
8
+ if (typeof value === 'number')
9
+ return value;
10
+ if (typeof value === 'boolean')
11
+ return value ? 1 : 0;
12
+ const parsed = Number(value ?? NaN);
13
+ return isNaN(parsed) ? 0 : parsed;
14
+ };
15
+ /** Numeric `>` comparison; both operands are coerced via {@link asNumber}. */
16
+ export const gt = (a, b) => asNumber(a) > asNumber(b);
17
+ /** Numeric `>=` comparison; both operands are coerced via {@link asNumber}. */
18
+ export const gte = (a, b) => asNumber(a) >= asNumber(b);
19
+ /** Numeric `<` comparison; both operands are coerced via {@link asNumber}. */
20
+ export const lt = (a, b) => asNumber(a) < asNumber(b);
21
+ /** Numeric `<=` comparison; both operands are coerced via {@link asNumber}. */
22
+ export const lte = (a, b) => asNumber(a) <= asNumber(b);
23
+ /**
24
+ * Membership condition: array `a` includes `b`, or string `a` contains the
25
+ * substring `String(b)`. Non-string/array subjects are stringified.
26
+ */
27
+ export const contains = (a, b) => {
28
+ if (Array.isArray(a))
29
+ return a.includes(b);
30
+ if (a == null)
31
+ return false;
32
+ return String(a).includes(String(b));
33
+ };
34
+ /** Negated {@link contains}. */
35
+ export const notContains = (a, b) => !contains(a, b);
36
+ const empty = (a) => {
37
+ if (a == null || a === '')
38
+ return true;
39
+ if (Array.isArray(a))
40
+ return a.length === 0;
41
+ if (typeof a === 'object')
42
+ return Object.keys(a).length === 0;
43
+ return false;
44
+ };
45
+ /**
46
+ * Unary emptiness condition: `true` for null/undefined, `''`, empty arrays
47
+ * and plain objects with no keys. Numbers and booleans are never empty.
48
+ */
49
+ export const isEmpty = (a) => empty(a);
50
+ /** Negated {@link isEmpty}. */
51
+ export const isNotEmpty = (a) => !empty(a);
6
52
  /**
7
53
  * Lookup map from each {@link Conditions} operator to its corresponding
8
54
  * {@link ConditionFunc} implementation.
@@ -21,5 +67,13 @@ export const notEq = (a, b) => a !== b;
21
67
  export const conditionMap = {
22
68
  [Conditions.equals]: eq,
23
69
  [Conditions.notEquals]: notEq,
70
+ [Conditions.greaterThan]: gt,
71
+ [Conditions.greaterOrEqual]: gte,
72
+ [Conditions.lessThan]: lt,
73
+ [Conditions.lessOrEqual]: lte,
74
+ [Conditions.contains]: contains,
75
+ [Conditions.notContains]: notContains,
76
+ [Conditions.isEmpty]: isEmpty,
77
+ [Conditions.isNotEmpty]: isNotEmpty,
24
78
  };
25
79
  //# sourceMappingURL=conditions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"conditions.js","sourceRoot":"","sources":["../../src/state/conditions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,UAAU,EAAE,MAAM,SAAS,CAAC;AAEpD,gEAAgE;AAChE,MAAM,CAAC,MAAM,EAAE,GAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AAEnD,kEAAkE;AAClE,MAAM,CAAC,MAAM,KAAK,GAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AAEtD;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,YAAY,GAAsC;IAC7D,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE;IACvB,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,KAAK;CAC9B,CAAC"}
1
+ {"version":3,"file":"conditions.js","sourceRoot":"","sources":["../../src/state/conditions.ts"],"names":[],"mappings":"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"}
@@ -11,8 +11,32 @@ export declare enum Conditions {
11
11
  /** Equality condition - checks if values are equal */
12
12
  equals = "eq",
13
13
  /** Not equals condition - checks if values are not equal */
14
- notEquals = "neq"
14
+ notEquals = "neq",
15
+ /** Numeric greater-than comparison */
16
+ greaterThan = "gt",
17
+ /** Numeric greater-than-or-equal comparison */
18
+ greaterOrEqual = "gte",
19
+ /** Numeric less-than comparison */
20
+ lessThan = "lt",
21
+ /** Numeric less-than-or-equal comparison */
22
+ lessOrEqual = "lte",
23
+ /** Substring (strings) or membership (arrays) check */
24
+ contains = "contains",
25
+ /** Negated {@link Conditions.contains} */
26
+ notContains = "notContains",
27
+ /** Unary: value is null/undefined, '', an empty array or empty object */
28
+ isEmpty = "isEmpty",
29
+ /** Unary: negated {@link Conditions.isEmpty} */
30
+ isNotEmpty = "isNotEmpty"
15
31
  }
32
+ /**
33
+ * Operators that take no comparison value — condition strings using them
34
+ * leave the value segment empty (e.g. `"vars.items::isEmpty::"`), and
35
+ * editors should hide the value input when one is selected.
36
+ *
37
+ * @public
38
+ */
39
+ export declare const UnaryConditions: ReadonlySet<Conditions>;
16
40
  /**
17
41
  * Type representing a simple condition string.
18
42
  *
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/state/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,oBAAY,UAAU;IACpB,sDAAsD;IACtD,MAAM,OAAO;IACb,4DAA4D;IAC5D,SAAS,QAAQ;CAClB;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,GAAG,GAAG,MAAM,KAAK,UAAU,KAAK,MAAM,EAAE,CAAC;AAEpE;;;;;;;;GAQG;AACH,MAAM,MAAM,aAAa,GAAG,GAAG,MAAM,KAAK,UAAU,KAAK,MAAM,GAAG,OAAO,EAAE,CAAC;AAE5E;;;;;;;;;;GAUG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC;AAEhE;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAErE;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,SAAS,EAAE,SAAS,CAAC;CACtB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/state/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,oBAAY,UAAU;IACpB,sDAAsD;IACtD,MAAM,OAAO;IACb,4DAA4D;IAC5D,SAAS,QAAQ;IACjB,sCAAsC;IACtC,WAAW,OAAO;IAClB,+CAA+C;IAC/C,cAAc,QAAQ;IACtB,mCAAmC;IACnC,QAAQ,OAAO;IACf,4CAA4C;IAC5C,WAAW,QAAQ;IACnB,uDAAuD;IACvD,QAAQ,aAAa;IACrB,0CAA0C;IAC1C,WAAW,gBAAgB;IAC3B,yEAAyE;IACzE,OAAO,YAAY;IACnB,gDAAgD;IAChD,UAAU,eAAe;CAC1B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,EAAE,WAAW,CAAC,UAAU,CAGlD,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,GAAG,GAAG,MAAM,KAAK,UAAU,KAAK,MAAM,EAAE,CAAC;AAEpE;;;;;;;;GAQG;AACH,MAAM,MAAM,aAAa,GAAG,GAAG,MAAM,KAAK,UAAU,KAAK,MAAM,GAAG,OAAO,EAAE,CAAC;AAE5E;;;;;;;;;;GAUG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC;AAEhE;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAErE;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,SAAS,EAAE,SAAS,CAAC;CACtB"}
@@ -13,5 +13,32 @@ export var Conditions;
13
13
  Conditions["equals"] = "eq";
14
14
  /** Not equals condition - checks if values are not equal */
15
15
  Conditions["notEquals"] = "neq";
16
+ /** Numeric greater-than comparison */
17
+ Conditions["greaterThan"] = "gt";
18
+ /** Numeric greater-than-or-equal comparison */
19
+ Conditions["greaterOrEqual"] = "gte";
20
+ /** Numeric less-than comparison */
21
+ Conditions["lessThan"] = "lt";
22
+ /** Numeric less-than-or-equal comparison */
23
+ Conditions["lessOrEqual"] = "lte";
24
+ /** Substring (strings) or membership (arrays) check */
25
+ Conditions["contains"] = "contains";
26
+ /** Negated {@link Conditions.contains} */
27
+ Conditions["notContains"] = "notContains";
28
+ /** Unary: value is null/undefined, '', an empty array or empty object */
29
+ Conditions["isEmpty"] = "isEmpty";
30
+ /** Unary: negated {@link Conditions.isEmpty} */
31
+ Conditions["isNotEmpty"] = "isNotEmpty";
16
32
  })(Conditions || (Conditions = {}));
33
+ /**
34
+ * Operators that take no comparison value — condition strings using them
35
+ * leave the value segment empty (e.g. `"vars.items::isEmpty::"`), and
36
+ * editors should hide the value input when one is selected.
37
+ *
38
+ * @public
39
+ */
40
+ export const UnaryConditions = new Set([
41
+ Conditions.isEmpty,
42
+ Conditions.isNotEmpty,
43
+ ]);
17
44
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/state/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,CAAN,IAAY,UAKX;AALD,WAAY,UAAU;IACpB,sDAAsD;IACtD,2BAAa,CAAA;IACb,4DAA4D;IAC5D,+BAAiB,CAAA;AACnB,CAAC,EALW,UAAU,KAAV,UAAU,QAKrB"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/state/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,CAAN,IAAY,UAqBX;AArBD,WAAY,UAAU;IACpB,sDAAsD;IACtD,2BAAa,CAAA;IACb,4DAA4D;IAC5D,+BAAiB,CAAA;IACjB,sCAAsC;IACtC,gCAAkB,CAAA;IAClB,+CAA+C;IAC/C,oCAAsB,CAAA;IACtB,mCAAmC;IACnC,6BAAe,CAAA;IACf,4CAA4C;IAC5C,iCAAmB,CAAA;IACnB,uDAAuD;IACvD,mCAAqB,CAAA;IACrB,0CAA0C;IAC1C,yCAA2B,CAAA;IAC3B,yEAAyE;IACzE,iCAAmB,CAAA;IACnB,gDAAgD;IAChD,uCAAyB,CAAA;AAC3B,CAAC,EArBW,UAAU,KAAV,UAAU,QAqBrB;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAA4B,IAAI,GAAG,CAAC;IAC9D,UAAU,CAAC,OAAO;IAClB,UAAU,CAAC,UAAU;CACtB,CAAC,CAAC"}
@@ -67,7 +67,8 @@ export declare const parseCondition: (value: SimpleCondition | BoolCondition) =>
67
67
  * where:
68
68
  * - `dataProp` is alphanumeric with dots and underscores
69
69
  * - `condition` is alphanumeric with underscores
70
- * - `value` can be a quoted string, alphanumeric, or empty
70
+ * - `value` can be a quoted string, an unquoted path/number, or empty
71
+ * (unary operators like `isEmpty` leave it empty)
71
72
  *
72
73
  * @param value - The value to check
73
74
  * @returns True if the value is a valid condition string, false otherwise
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/state/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,aAAa,EAEb,oBAAoB,EACpB,eAAe,EAEhB,MAAM,SAAS,CAAC;AAWjB;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,iBAAiB,GAAI,GAAG,QAAQ,MAAM,EAAE,WAEpD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,oBAAoB,GAAI,OAAO,MAAM,KAAG,oBAWpD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,cAAc,GACzB,OAAO,eAAe,GAAG,aAAa,KACrC,oBAgCF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,eAKrD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,MAAM,GAAI,OAAO,MAAM,GAAG,OAAO,YAI7C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,QAAQ,GAAI,OAAO,MAAM,GAAG,OAAO,WAU/C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,yBAErC,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/state/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,aAAa,EAEb,oBAAoB,EACpB,eAAe,EAEhB,MAAM,SAAS,CAAC;AAWjB;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,iBAAiB,GAAI,GAAG,QAAQ,MAAM,EAAE,WAEpD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,oBAAoB,GAAI,OAAO,MAAM,KAAG,oBAWpD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,cAAc,GACzB,OAAO,eAAe,GAAG,aAAa,KACrC,oBAwCF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,eAKrD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,MAAM,GAAI,OAAO,MAAM,GAAG,OAAO,YAI7C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,QAAQ,GAAI,OAAO,MAAM,GAAG,OAAO,WAU/C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,yBAErC,CAAC"}
@@ -101,6 +101,13 @@ export const parseCondition = (value) => {
101
101
  valueType: mapTypes[type] || 'string',
102
102
  };
103
103
  }
104
+ if (/^-?\d+(\.\d+)?$/.test(valueProp))
105
+ return {
106
+ dataProp,
107
+ condition: condition,
108
+ valueProp,
109
+ valueType: 'number',
110
+ };
104
111
  return {
105
112
  dataProp,
106
113
  condition: condition,
@@ -115,7 +122,8 @@ export const parseCondition = (value) => {
115
122
  * where:
116
123
  * - `dataProp` is alphanumeric with dots and underscores
117
124
  * - `condition` is alphanumeric with underscores
118
- * - `value` can be a quoted string, alphanumeric, or empty
125
+ * - `value` can be a quoted string, an unquoted path/number, or empty
126
+ * (unary operators like `isEmpty` leave it empty)
119
127
  *
120
128
  * @param value - The value to check
121
129
  * @returns True if the value is a valid condition string, false otherwise
@@ -132,7 +140,7 @@ export const parseCondition = (value) => {
132
140
  */
133
141
  export const isCondition = (value) => {
134
142
  return (typeof value === 'string' &&
135
- /^[a-zA-Z0-9_.]+::[a-zA-Z0-9_]+::("[^"]*"|[a-zA-Z0-9_]*|)$/.test(value));
143
+ /^[a-zA-Z0-9_.]+::[a-zA-Z0-9_]+::("[^"]*"|-?[a-zA-Z0-9_.]*|)$/.test(value));
136
144
  };
137
145
  /**
138
146
  * Converts a string or boolean value to a boolean.
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/state/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/state/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mapples/inlang",
3
- "version": "1.1.1",
3
+ "version": "1.2.0",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "scripts": {