simplex-lang 0.2.1 → 0.3.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.
package/README.md CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  [![npm](https://img.shields.io/npm/v/simplex-lang.svg?cacheSeconds=1800&style=flat-square)](https://www.npmjs.com/package/simplex-lang)
4
4
  [![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/wmakeev/simplex/main.yml?style=flat-square)](https://github.com/wmakeev/simplex/actions/workflows/main.yml)
5
+ ![Coverage](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/wmakeev/simplex/main/badges/coverage.json)
5
6
  ![no dependencies](https://img.shields.io/badge/dependencies-no-green?style=flat-square)
6
7
  [![parser](https://img.shields.io/badge/parser-peggy-pink?style=flat-square)](https://peggyjs.org/)
7
- <!-- [![Codecov](https://img.shields.io/codecov/c/github/wmakeev/simplex?style=flat-square)](https://app.codecov.io/gh/wmakeev/simplex/tree/master/) -->
8
8
 
9
- > **SimpEx** - javascript **Simpl**e **Ex**pression language
9
+ > **SimplEx** - javascript **Simpl**e **Ex**pression language
10
10
 
11
11
  ## Table of contents <!-- omit in toc -->
12
12
 
@@ -6,7 +6,7 @@ import assert from 'node:assert';
6
6
  import { castToBoolean } from './tools/cast.js';
7
7
  import { ensureFunction, ensureRelationalComparable, ensureNumber } from './tools/ensure.js';
8
8
  import { isSimpleValue } from './tools/guards.js';
9
- import { castToString, typeOf } from './tools/index.js';
9
+ import { castToString, objToStringAlias, typeOf } from './tools/index.js';
10
10
  var hasOwn = Object.hasOwn;
11
11
  var ERROR_STACK_REGEX = /<anonymous>:(?<row>\d+):(?<col>\d+)/g;
12
12
  var TOPIC_TOKEN = '%';
@@ -30,8 +30,12 @@ const defaultContextHelpers = {
30
30
  },
31
31
  getProperty(obj, key) {
32
32
  if (obj == null)
33
- return obj;
34
- if (typeof obj !== 'object') {
33
+ return undefined;
34
+ const typeofObj = typeof obj;
35
+ if (typeofObj === 'string' && typeof key === 'number') {
36
+ return obj[key];
37
+ }
38
+ if (typeofObj !== 'object') {
35
39
  throw new UnexpectedTypeError(['object'], obj);
36
40
  }
37
41
  if (isSimpleValue(key) === false) {
@@ -41,12 +45,17 @@ const defaultContextHelpers = {
41
45
  // @ts-expect-error Type cannot be used as an index type
42
46
  return obj[key];
43
47
  }
48
+ if (obj instanceof Map) {
49
+ return obj.get(key);
50
+ }
44
51
  return undefined;
45
52
  },
46
53
  callFunction(fn, args) {
47
- return (args === null
48
- ? ensureFunction(fn)()
49
- : ensureFunction(fn).apply(null, args));
54
+ return fn == null
55
+ ? undefined
56
+ : (args === null
57
+ ? ensureFunction(fn)()
58
+ : ensureFunction(fn).apply(null, args));
50
59
  },
51
60
  pipe(head, tail) {
52
61
  var result = head;
@@ -103,12 +112,27 @@ export const defaultBinaryOperators = {
103
112
  '<=': (a, b) => ensureRelationalComparable(a) <= ensureRelationalComparable(b),
104
113
  '>': (a, b) => ensureRelationalComparable(a) > ensureRelationalComparable(b),
105
114
  '>=': (a, b) => ensureRelationalComparable(a) >= ensureRelationalComparable(b),
115
+ // Is some container has specified key
106
116
  'in': (a, b) => {
107
- if (isSimpleValue(a) && b != null && typeof b === 'object') {
108
- return Object.hasOwn(b, a);
109
- }
110
- else {
111
- throw new TypeError(`Cannot use "in" operator to search for ${typeOf(a)} key in ${typeOf(b)}`);
117
+ const bType = objToStringAlias.call(b);
118
+ switch (bType) {
119
+ case '[object Object]': {
120
+ return Object.hasOwn(b, a);
121
+ }
122
+ case '[object Array]': {
123
+ if (Number.isSafeInteger(a)) {
124
+ // @ts-ignore
125
+ return a in b;
126
+ }
127
+ else {
128
+ throw new TypeError(`Wrong "in" operator usage - key value should to be safe integer`);
129
+ }
130
+ }
131
+ case '[object Map]':
132
+ // @ts-ignore
133
+ return b.has(a);
134
+ default:
135
+ throw new TypeError(`Cannot use "in" operator to ensure ${typeOf(a)} key in ${typeOf(b)}`);
112
136
  }
113
137
  }
114
138
  };
@@ -1 +1 @@
1
- {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/compiler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/compiler.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,11 @@ var objToStrProto = Object.prototype.toString;
4
4
  export function isObject(val) {
5
5
  return objToStrProto.call(val) === '[object Object]';
6
6
  }
7
+ // TODO Для разных случаев может потребоваться отдельный вариант `isSimpleValue` проверки.
8
+ // Вероятно стоит сделать несколько исходя из конкретной практической потребности.
7
9
  export function isSimpleValue(val) {
10
+ // TODO Разделять на функции удобно, но приходится делать лишние вызовы и
11
+ // дополнительные проверки в performance critical функции.
8
12
  val = unbox(val);
9
13
  const type = typeof val;
10
14
  if (type === 'string' ||
@@ -1 +1 @@
1
- {"version":3,"file":"guards.js","sourceRoot":"","sources":["../../../src/tools/guards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAElC,6DAA6D;AAC7D,IAAI,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAA;AAE7C,MAAM,UAAU,QAAQ,CAAC,GAAY;IACnC,OAAO,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,iBAAiB,CAAA;AACtD,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,GAAY;IAEZ,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;IAEhB,MAAM,IAAI,GAAG,OAAO,GAAG,CAAA;IAEvB,IACE,IAAI,KAAK,QAAQ;QACjB,IAAI,KAAK,QAAQ;QACjB,IAAI,KAAK,SAAS;QAClB,IAAI,KAAK,QAAQ,EACjB,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,GAAG,IAAI,IAAI;QAAE,OAAO,IAAI,CAAA;IAE5B,OAAO,KAAK,CAAA;AACd,CAAC"}
1
+ {"version":3,"file":"guards.js","sourceRoot":"","sources":["../../../src/tools/guards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAElC,6DAA6D;AAC7D,IAAI,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAA;AAE7C,MAAM,UAAU,QAAQ,CAAC,GAAY;IACnC,OAAO,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,iBAAiB,CAAA;AACtD,CAAC;AAED,0FAA0F;AAC1F,kFAAkF;AAElF,MAAM,UAAU,aAAa,CAC3B,GAAY;IAEZ,yEAAyE;IACzE,0DAA0D;IAC1D,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;IAEhB,MAAM,IAAI,GAAG,OAAO,GAAG,CAAA;IAEvB,IACE,IAAI,KAAK,QAAQ;QACjB,IAAI,KAAK,QAAQ;QACjB,IAAI,KAAK,SAAS;QAClB,IAAI,KAAK,QAAQ,EACjB,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,GAAG,IAAI,IAAI;QAAE,OAAO,IAAI,CAAA;IAE5B,OAAO,KAAK,CAAA;AACd,CAAC"}
@@ -1,11 +1,20 @@
1
1
  export * from './cast.js';
2
2
  export * from './ensure.js';
3
3
  export * from './guards.js';
4
+ /**
5
+ * Alias for `Object.prototype.toString`
6
+ */
7
+ export declare const objToStringAlias: () => string;
4
8
  /**
5
9
  * Converts instances of Number, String and Boolean to primitives
6
10
  */
7
11
  export declare function unbox(val: unknown): unknown;
8
12
  /**
9
- * Returns more specific type of a value
13
+ * The method is needed to obtain the most specific readable data type.
14
+ *
15
+ * *Usage note:* Type handling, from a performance perspective, should be done
16
+ * in a targeted manner. It is not possible to replace specific checks like typeof
17
+ * `some === "number"` or `Num.isFinite(some)` with a universal
18
+ * `typeOf(some) === "FiniteNumber"`.
10
19
  */
11
20
  export declare function typeOf(val: unknown): string;
@@ -1,8 +1,11 @@
1
1
  export * from './cast.js';
2
2
  export * from './ensure.js';
3
3
  export * from './guards.js';
4
+ /**
5
+ * Alias for `Object.prototype.toString`
6
+ */
4
7
  // eslint-disable-next-line @typescript-eslint/unbound-method
5
- const toString = Object.prototype.toString;
8
+ export const objToStringAlias = Object.prototype.toString;
6
9
  /**
7
10
  * Converts instances of Number, String and Boolean to primitives
8
11
  */
@@ -18,7 +21,12 @@ export function unbox(val) {
18
21
  return val;
19
22
  }
20
23
  /**
21
- * Returns more specific type of a value
24
+ * The method is needed to obtain the most specific readable data type.
25
+ *
26
+ * *Usage note:* Type handling, from a performance perspective, should be done
27
+ * in a targeted manner. It is not possible to replace specific checks like typeof
28
+ * `some === "number"` or `Num.isFinite(some)` with a universal
29
+ * `typeOf(some) === "FiniteNumber"`.
22
30
  */
23
31
  export function typeOf(val) {
24
32
  const type = typeof val;
@@ -33,7 +41,7 @@ export function typeOf(val) {
33
41
  return 'NaN';
34
42
  }
35
43
  if (type === 'object') {
36
- return toString.call(val).slice(8, -1);
44
+ return objToStringAlias.call(val).slice(8, -1);
37
45
  }
38
46
  return type;
39
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAE3B,6DAA6D;AAC7D,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAA;AAE1C;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,GAAY;IAChC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,GAAG,CAAA;IAEvD,MAAM,cAAc,GAAG,GAAG,CAAC,WAAW,CAAA;IAEtC,IACE,cAAc,KAAK,MAAM;QACzB,cAAc,KAAK,MAAM;QACzB,cAAc,KAAK,OAAO,EAC1B,CAAC;QACD,OAAO,GAAG,CAAC,OAAO,EAAE,CAAA;IACtB,CAAC;IAED,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,GAAY;IACjC,MAAM,IAAI,GAAG,OAAO,GAAG,CAAA;IAEvB,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,QAAQ,CAAA;aACpC,IAAI,GAAG,KAAK,MAAM,CAAC,iBAAiB;YAAE,OAAO,WAAW,CAAA;aACxD,IAAI,GAAG,KAAK,MAAM,CAAC,iBAAiB;YAAE,OAAO,UAAU,CAAA;;YACvD,OAAO,KAAK,CAAA;IACnB,CAAC;IAED,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IACxC,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAE3B;;GAEG;AACH,6DAA6D;AAC7D,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAA;AAEzD;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,GAAY;IAChC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,GAAG,CAAA;IAEvD,MAAM,cAAc,GAAG,GAAG,CAAC,WAAW,CAAA;IAEtC,IACE,cAAc,KAAK,MAAM;QACzB,cAAc,KAAK,MAAM;QACzB,cAAc,KAAK,OAAO,EAC1B,CAAC;QACD,OAAO,GAAG,CAAC,OAAO,EAAE,CAAA;IACtB,CAAC;IAED,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,MAAM,CAAC,GAAY;IACjC,MAAM,IAAI,GAAG,OAAO,GAAG,CAAA;IAEvB,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,QAAQ,CAAA;aACpC,IAAI,GAAG,KAAK,MAAM,CAAC,iBAAiB;YAAE,OAAO,WAAW,CAAA;aACxD,IAAI,GAAG,KAAK,MAAM,CAAC,iBAAiB;YAAE,OAAO,UAAU,CAAA;;YACvD,OAAO,KAAK,CAAA;IACnB,CAAC;IAED,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,OAAO,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAChD,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -1,2 +1,2 @@
1
- export const version = '0.2.1';
1
+ export const version = '0.3.0';
2
2
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "simplex-lang",
3
- "version": "0.2.1",
3
+ "version": "0.3.0",
4
4
  "type": "module",
5
5
  "description": "SimplEx - simple expression language",
6
6
  "files": [
@@ -33,12 +33,13 @@
33
33
  "pick-version": "node ./scripts/lib-version.js",
34
34
  "lint": "eslint . --fix",
35
35
  "build:parser": "peggy -o parser/index.js --source-map --format es --dts src/simplex.peggy",
36
- "copy-parser": "cp -rf parser/ build/ && cp -f src/simplex.peggy build/src/",
36
+ "copy-parser": "cp -rf ./parser/ ./build/ && cp -f ./src/simplex.peggy ./build/src/",
37
37
  "build:dev": "npm run lint && npm run compile:dev",
38
38
  "build": "npm run build:parser && npm run lint && npm run compile && npm run copy-parser",
39
- "coverage": "c8 node -r dotenv/config --test --enable-source-maps",
40
- "coverage:report": "c8 report",
41
- "test": "npm run build && npm run coverage",
39
+ "coverage": "c8 node -r dotenv/config --test \"build/test/**/*.test.js\" --enable-source-maps",
40
+ "coverage:report": "c8 report --reporter=json-summary",
41
+ "test": "npm run build && npm run coverage && npm run coverage:report",
42
+ "posttest": "node scripts/coverage-badge.js",
42
43
  "version": "npm run pick-version && auto-changelog -p && git add CHANGELOG.md",
43
44
  "release": "np"
44
45
  },
package/src/compiler.ts CHANGED
@@ -20,7 +20,7 @@ import {
20
20
  ensureNumber
21
21
  } from './tools/ensure.js'
22
22
  import { isSimpleValue } from './tools/guards.js'
23
- import { castToString, typeOf } from './tools/index.js'
23
+ import { castToString, objToStringAlias, typeOf } from './tools/index.js'
24
24
 
25
25
  interface ContextHelpers<Data, Globals> {
26
26
  castToBoolean(this: void, val: unknown): boolean
@@ -74,9 +74,15 @@ const defaultContextHelpers: ContextHelpers<
74
74
  },
75
75
 
76
76
  getProperty(obj, key) {
77
- if (obj == null) return obj
77
+ if (obj == null) return undefined
78
78
 
79
- if (typeof obj !== 'object') {
79
+ const typeofObj = typeof obj
80
+
81
+ if (typeofObj === 'string' && typeof key === 'number') {
82
+ return (obj as string)[key]
83
+ }
84
+
85
+ if (typeofObj !== 'object') {
80
86
  throw new UnexpectedTypeError(['object'], obj)
81
87
  }
82
88
 
@@ -89,15 +95,19 @@ const defaultContextHelpers: ContextHelpers<
89
95
  return obj[key] as unknown
90
96
  }
91
97
 
98
+ if (obj instanceof Map) {
99
+ return obj.get(key) as unknown
100
+ }
101
+
92
102
  return undefined
93
103
  },
94
104
 
95
105
  callFunction(fn, args) {
96
- return (
97
- args === null
98
- ? ensureFunction(fn)()
99
- : ensureFunction(fn).apply(null, args)
100
- ) as unknown
106
+ return fn == null
107
+ ? undefined
108
+ : ((args === null
109
+ ? ensureFunction(fn)()
110
+ : ensureFunction(fn).apply(null, args)) as unknown)
101
111
  },
102
112
 
103
113
  pipe(head, tail) {
@@ -182,13 +192,34 @@ export const defaultBinaryOperators: ExpressionBinaryOperators = {
182
192
  '>=': (a, b) =>
183
193
  ensureRelationalComparable(a) >= ensureRelationalComparable(b),
184
194
 
195
+ // Is some container has specified key
185
196
  'in': (a, b) => {
186
- if (isSimpleValue(a) && b != null && typeof b === 'object') {
187
- return Object.hasOwn(b, a as any)
188
- } else {
189
- throw new TypeError(
190
- `Cannot use "in" operator to search for ${typeOf(a)} key in ${typeOf(b)}`
191
- )
197
+ const bType = objToStringAlias.call(b)
198
+
199
+ switch (bType) {
200
+ case '[object Object]': {
201
+ return Object.hasOwn(b as object, a as any)
202
+ }
203
+
204
+ case '[object Array]': {
205
+ if (Number.isSafeInteger(a)) {
206
+ // @ts-ignore
207
+ return a in b
208
+ } else {
209
+ throw new TypeError(
210
+ `Wrong "in" operator usage - key value should to be safe integer`
211
+ )
212
+ }
213
+ }
214
+
215
+ case '[object Map]':
216
+ // @ts-ignore
217
+ return b.has(a) as boolean
218
+
219
+ default:
220
+ throw new TypeError(
221
+ `Cannot use "in" operator to ensure ${typeOf(a)} key in ${typeOf(b)}`
222
+ )
192
223
  }
193
224
  }
194
225
  }
@@ -7,9 +7,14 @@ export function isObject(val: unknown): val is object {
7
7
  return objToStrProto.call(val) === '[object Object]'
8
8
  }
9
9
 
10
+ // TODO Для разных случаев может потребоваться отдельный вариант `isSimpleValue` проверки.
11
+ // Вероятно стоит сделать несколько исходя из конкретной практической потребности.
12
+
10
13
  export function isSimpleValue(
11
14
  val: unknown
12
15
  ): val is number | string | boolean | bigint | null | undefined {
16
+ // TODO Разделять на функции удобно, но приходится делать лишние вызовы и
17
+ // дополнительные проверки в performance critical функции.
13
18
  val = unbox(val)
14
19
 
15
20
  const type = typeof val
@@ -2,8 +2,11 @@ export * from './cast.js'
2
2
  export * from './ensure.js'
3
3
  export * from './guards.js'
4
4
 
5
+ /**
6
+ * Alias for `Object.prototype.toString`
7
+ */
5
8
  // eslint-disable-next-line @typescript-eslint/unbound-method
6
- const toString = Object.prototype.toString
9
+ export const objToStringAlias = Object.prototype.toString
7
10
 
8
11
  /**
9
12
  * Converts instances of Number, String and Boolean to primitives
@@ -25,7 +28,12 @@ export function unbox(val: unknown) {
25
28
  }
26
29
 
27
30
  /**
28
- * Returns more specific type of a value
31
+ * The method is needed to obtain the most specific readable data type.
32
+ *
33
+ * *Usage note:* Type handling, from a performance perspective, should be done
34
+ * in a targeted manner. It is not possible to replace specific checks like typeof
35
+ * `some === "number"` or `Num.isFinite(some)` with a universal
36
+ * `typeOf(some) === "FiniteNumber"`.
29
37
  */
30
38
  export function typeOf(val: unknown) {
31
39
  const type = typeof val
@@ -38,7 +46,7 @@ export function typeOf(val: unknown) {
38
46
  }
39
47
 
40
48
  if (type === 'object') {
41
- return toString.call(val).slice(8, -1)
49
+ return objToStringAlias.call(val).slice(8, -1)
42
50
  }
43
51
 
44
52
  return type