simplex-lang 0.0.0 → 0.0.2

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,9 +2,9 @@
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
- <!-- [![Codecov](https://img.shields.io/codecov/c/github/wmakeev/simplex?style=flat-square)](https://app.codecov.io/gh/wmakeev/simplex/tree/master/) -->
6
5
  ![no dependencies](https://img.shields.io/badge/dependencies-no-green?style=flat-square)
7
6
  [![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
9
  > **SimpEx** - javascript **Simpl**e **Ex**pression language
10
10
 
@@ -1,11 +1,16 @@
1
- import { parse } from '@project/simplex-parser';
1
+ /* eslint-disable @typescript-eslint/ban-ts-comment */
2
+ // eslint-disable-next-line n/no-missing-import
3
+ import { parse } from '../parser/index.js';
2
4
  import { ExpressionError, UnexpectedTypeError } from './errors.js';
3
- import { bool, ensureFunction, isSimple, num, prettyType, relComp, toStr } from './utils.js';
4
5
  import assert from 'node:assert';
6
+ import { castToBoolean } from './tools/cast.js';
7
+ import { ensureFunction, ensureRelationalComparable, ensureNumber } from './tools/ensure.js';
8
+ import { isSimpleValue } from './tools/guards.js';
9
+ import { castToString, typeOf } from './tools/index.js';
5
10
  var hasOwn = Object.hasOwn;
6
11
  var ERROR_STACK_REGEX = /<anonymous>:(?<row>\d+):(?<col>\d+)/g;
7
12
  const defaultContextHelpers = {
8
- castToBoolean: bool,
13
+ castToBoolean,
9
14
  ensureFunction,
10
15
  getIdentifierValue: (identifierName, globals, data) => {
11
16
  if (identifierName === 'undefined')
@@ -22,10 +27,10 @@ const defaultContextHelpers = {
22
27
  if (obj == null)
23
28
  return obj;
24
29
  if (typeof obj !== 'object') {
25
- throw new UnexpectedTypeError('object', prettyType(obj));
30
+ throw new UnexpectedTypeError(['object'], obj);
26
31
  }
27
- if (isSimple(key) === false) {
28
- throw new UnexpectedTypeError('object key to be simple type', prettyType(key));
32
+ if (isSimpleValue(key) === false) {
33
+ throw new UnexpectedTypeError(['simple type object key'], key);
29
34
  }
30
35
  if (hasOwn(obj, key)) {
31
36
  // @ts-expect-error Type cannot be used as an index type
@@ -49,37 +54,60 @@ const defaultContextHelpers = {
49
54
  }
50
55
  };
51
56
  export const defaultUnaryOperators = {
52
- '+': val => num(val),
53
- '-': val => -num(val),
54
- 'not': val => !bool(val),
57
+ '+': val => ensureNumber(val),
58
+ '-': val => -ensureNumber(val),
59
+ 'not': val => !castToBoolean(val),
55
60
  'typeof': val => typeof val
56
61
  };
57
62
  export const defaultBinaryOperators = {
58
63
  '!=': (a, b) => a !== b,
59
64
  '==': (a, b) => a === b,
60
- '*': (a, b) => num(a) * num(b),
61
- '+': (a, b) => num(a) + num(b),
62
- '&': (a, b) => toStr(a) + toStr(b),
63
- '-': (a, b) => num(a) - num(b),
64
- '/': (a, b) => num(a) / num(b),
65
+ // TIPS give the opportunity to get a base js error
66
+ '*': (a, b) => {
67
+ // @ts-expect-error
68
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
69
+ return ensureNumber(a) * ensureNumber(b);
70
+ },
71
+ '+': (a, b) => {
72
+ // @ts-expect-error
73
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/restrict-plus-operands
74
+ return ensureNumber(a) + ensureNumber(b);
75
+ },
76
+ '-': (a, b) => {
77
+ // @ts-expect-error
78
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
79
+ return ensureNumber(a) - ensureNumber(b);
80
+ },
81
+ '/': (a, b) => {
82
+ // @ts-expect-error
83
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
84
+ return ensureNumber(a) / ensureNumber(b);
85
+ },
65
86
  'mod': (a, b) => {
66
- return num(a) % num(b);
87
+ // @ts-expect-error
88
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
89
+ return ensureNumber(a) % ensureNumber(b);
90
+ },
91
+ '^': (a, b) => {
92
+ // @ts-expect-error
93
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
94
+ return ensureNumber(a) ** ensureNumber(b);
67
95
  },
68
- '<': (a, b) => relComp(a) < relComp(b),
69
- '<=': (a, b) => relComp(a) <= relComp(b),
70
- '>': (a, b) => relComp(a) > relComp(b),
71
- '>=': (a, b) => relComp(a) >= relComp(b),
96
+ '&': (a, b) => castToString(a) + castToString(b),
97
+ '<': (a, b) => ensureRelationalComparable(a) < ensureRelationalComparable(b),
98
+ '<=': (a, b) => ensureRelationalComparable(a) <= ensureRelationalComparable(b),
99
+ '>': (a, b) => ensureRelationalComparable(a) > ensureRelationalComparable(b),
100
+ '>=': (a, b) => ensureRelationalComparable(a) >= ensureRelationalComparable(b),
72
101
  'in': (a, b) => {
73
- if (isSimple(a) && b != null && typeof b === 'object') {
102
+ if (isSimpleValue(a) && b != null && typeof b === 'object') {
74
103
  return Object.hasOwn(b, a);
75
104
  }
76
105
  else {
77
- throw new TypeError(`Cannot use "in" operator to search for ${prettyType(a)} key in ${prettyType(b)}`);
106
+ throw new TypeError(`Cannot use "in" operator to search for ${typeOf(a)} key in ${typeOf(b)}`);
78
107
  }
79
108
  },
80
- '^': (a, b) => num(a) ** num(b),
81
- 'and': (a, b) => bool(a) && bool(b),
82
- 'or': (a, b) => bool(a) || bool(b)
109
+ 'and': (a, b) => castToBoolean(a) && castToBoolean(b),
110
+ 'or': (a, b) => castToBoolean(a) || castToBoolean(b)
83
111
  };
84
112
  const PIPE_LTR = '_';
85
113
  const codePart = (codePart, ownerNode) => ({
@@ -1 +1 @@
1
- {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/compiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAUlE,OAAO,EACL,IAAI,EACJ,cAAc,EACd,QAAQ,EACR,GAAG,EACH,UAAU,EACV,OAAO,EACP,KAAK,EACN,MAAM,YAAY,CAAA;AACnB,OAAO,MAAM,MAAM,aAAa,CAAA;AAoBhC,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;AAC1B,IAAI,iBAAiB,GAAG,sCAAsC,CAAA;AAE9D,MAAM,qBAAqB,GAGvB;IACF,aAAa,EAAE,IAAI;IAEnB,cAAc;IAEd,kBAAkB,EAAE,CAAC,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACpD,IAAI,cAAc,KAAK,WAAW;YAAE,OAAO,SAAS,CAAA;QAEpD,IAAI,OAAO,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,CAAC;YAC9D,OAAO,OAAO,CAAC,cAAc,CAAC,CAAA;QAChC,CAAC;QAED,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,CAAC;YACxD,OAAO,IAAI,CAAC,cAAc,CAAC,CAAA;QAC7B,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,wBAAwB,cAAc,EAAE,CAAC,CAAA;IAC3D,CAAC;IAED,WAAW,CAAC,GAAG,EAAE,GAAG;QAClB,IAAI,GAAG,IAAI,IAAI;YAAE,OAAO,GAAG,CAAA;QAE3B,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,mBAAmB,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;QAC1D,CAAC;QAED,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;YAC5B,MAAM,IAAI,mBAAmB,CAC3B,8BAA8B,EAC9B,UAAU,CAAC,GAAG,CAAC,CAChB,CAAA;QACH,CAAC;QAED,IAAI,MAAM,CAAC,GAAG,EAAE,GAAU,CAAC,EAAE,CAAC;YAC5B,wDAAwD;YACxD,OAAO,GAAG,CAAC,GAAG,CAAY,CAAA;QAC5B,CAAC;QAED,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,YAAY,CAAC,EAAE,EAAE,IAAI;QACnB,OAAO,CACL,IAAI,KAAK,IAAI;YACX,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE;YACtB,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAC9B,CAAA;IACd,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,IAAI;QACb,IAAI,MAAM,GAAG,IAAI,CAAA;QACjB,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;YACtB,IAAI,EAAE,CAAC,GAAG,IAAI,MAAM,IAAI,IAAI;gBAAE,OAAO,MAAM,CAAA;YAC3C,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC1B,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;CACF,CAAA;AAOD,MAAM,CAAC,MAAM,qBAAqB,GAA6B;IAC7D,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;IACpB,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACrB,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IACxB,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,OAAO,GAAG;CAC5B,CAAA;AAOD,MAAM,CAAC,MAAM,sBAAsB,GAA8B;IAC/D,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;IAEvB,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;IAEvB,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAE9B,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAE9B,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAElC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAE9B,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAE9B,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACd,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;IACxB,CAAC;IAED,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAEtC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC;IAExC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAEtC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC;IAExC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACb,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YACtD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAQ,CAAC,CAAA;QACnC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,SAAS,CACjB,0CAA0C,UAAU,CAAC,CAAC,CAAC,WAAW,UAAU,CAAC,CAAC,CAAC,EAAE,CAClF,CAAA;QACH,CAAC;IACH,CAAC;IAED,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IAE/B,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IAEnC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;CACnC,CAAA;AAUD,MAAM,QAAQ,GAAG,GAAG,CAAA;AAcpB,MAAM,QAAQ,GAAG,CACf,QAAgB,EAChB,SAAiC,EACpB,EAAE,CAAC,CAAC;IACjB,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC;CAClE,CAAC,CAAA;AAEF,MAAM,mBAAmB,GAAG,CAAC,KAAoB,EAAE,EAAE;IACnD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE;QAC9B,OAAO;YACL,IAAI,EAAE,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI;YACxB,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC;SACzB,CAAA;IAClB,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,QAAQ,GAKV;IACF,OAAO,EAAE,IAAI,CAAC,EAAE;QACd,MAAM,KAAK,GAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,CAAA;QAEzE,OAAO,KAAK,CAAA;IACd,CAAC;IAED,UAAU,EAAE,IAAI,CAAC,EAAE;QACjB,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAA;QAE7D,MAAM,KAAK,GAAkB;YAC3B,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;SACpD,CAAA;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAED,eAAe,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC/B,MAAM,KAAK,GAAkB;YAC3B,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,KAAK,EAAE,IAAI,CAAC;YAC1C,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;YACvB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;SACpB,CAAA;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAED,gBAAgB,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAChC,MAAM,KAAK,GAAkB;YAC3B,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,KAAK,EAAE,IAAI,CAAC;YAC1C,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YACnB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;YACnB,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YACpB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;SACpB,CAAA;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAED,iBAAiB,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACjC,MAAM,KAAK,GAAkB;YAC3B,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,KAAK,EAAE,IAAI,CAAC;YAC1C,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YACnB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;YACnB,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YACpB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;SACpB,CAAA;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAED,qBAAqB,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACrC,MAAM,KAAK,GAAkB;YAC3B,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;YACxB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YACnB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;YACpB,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;YACzB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;YACnB,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI;gBACzB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;gBACvB,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;YAClC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;SACpB,CAAA;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAED,gBAAgB,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU;aAC7B,GAAG,CAAC,CAAC,CAAC,EAAgC,EAAE;YACvC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAChC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;YAClD,CAAC;YACD,EAAE;iBACG,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAClC,0BAA0B;gBAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;YACnE,CAAC;YACD,EAAE;iBACG,CAAC;gBACJ,8BAA8B;gBAC9B,4BAA4B;gBAC5B,MAAM,IAAI,SAAS,CAAC,6BAA6B,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;YAChE,CAAC;QACH,CAAC,CAAC;aACD,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;YAClB,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA;QAC5D,CAAC,CAAC,CAAA;QAEJ,oBAAoB;QACpB,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,QAAQ,CAAC,GAAG,EAAE,CAAA;QAChB,CAAC;QAED,MAAM,KAAK,GAAkB;YAC3B,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;YACnB,GAAG,QAAQ;YACX,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;SACpB,CAAA;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAED,eAAe,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;YAC/C,OAAO,EAAE,KAAK,IAAI;gBAChB,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACvB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA;QACzC,CAAC,CAAC,CAAA;QAEF,oBAAoB;QACpB,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,aAAa,CAAC,GAAG,EAAE,CAAA;QACrB,CAAC;QAED,MAAM,KAAK,GAAkB;YAC3B,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;YACnB,GAAG,aAAa;YAChB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;SACpB,CAAA;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAED,gBAAgB,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAChC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;QAE3C,8BAA8B;QAE9B,MAAM,KAAK,GAAkB;YAC3B,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;YACvB,GAAG,KAAK,CAAC,MAAM,CAAC;YAChB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;YACnB,GAAG,CAAC,QAAQ;gBACV,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;gBACjB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;YACxD,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;SACpB,CAAA;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAED,cAAc,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC9B,MAAM,SAAS,GACb,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;YACvB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;YACrE,CAAC,CAAC,IAAI,CAAA;QAEV,oBAAoB;QACpB,SAAS,EAAE,GAAG,EAAE,CAAA;QAEhB,MAAM,KAAK,GAAkB;YAC3B,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;YACvB,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;YACrB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;YACnB,GAAG,CAAC,SAAS,KAAK,IAAI;gBACpB,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBAC1B,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,SAAS,EAAE,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;YAC7D,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;SACpB,CAAA;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAED,2BAA2B,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC3C,MAAM,KAAK,GAAkB;YAC3B,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;YACnB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YACnB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;YACpB,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YACpB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;SACpB,CAAA;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAED,YAAY,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC5B,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEjC,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAC9C,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAA;YAE/B,MAAM,SAAS,GAAkB;gBAC/B,QAAQ,CACN,QAAQ,GAAG,kBAAkB,QAAQ,WAAW,EAChD,CAAC,CAAC,UAAU,CACb;gBACD,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC;gBACtB,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC;gBAC5B,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,UAAU,CAAC;aAC5B,CAAA;YAED,OAAO,SAAS,CAAA;QAClB,CAAC,CAAC,CAAA;QAEF,oBAAoB;QACpB,iBAAiB,CAAC,GAAG,EAAE,CAAA;QAEvB,MAAM,KAAK,GAAkB;YAC3B,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;YACvB,GAAG,QAAQ;YACX,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;YACpB,GAAG,iBAAiB;YACpB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;SACrB,CAAA;QAED,OAAO,KAAK,CAAA;IACd,CAAC;CACF,CAAA;AAED,MAAM,KAAK,GAGU,IAAI,CAAC,EAAE;IAC1B,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAE3C,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IAC5D,CAAC;IAED,MAAM,UAAU,GAAU,CAAC,SAAqB,EAAE,EAAE;QAClD,OAAO,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;IAC/B,CAAC,CAAA;IAED,sCAAsC;IACtC,OAAO,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;AAC1C,CAAC,CAAA;AAED,MAAM,UAAU,QAAQ,CAAC,IAAyB;IAChD,OAAO,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAA;AAC1D,CAAC;AAED,SAAS,0BAA0B,CACjC,SAAiB,EACjB,SAA2B;IAE3B,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,CAAC,GAAG,CAAA;QACjB,IAAI,MAAM,IAAI,SAAS;YAAE,OAAO,GAAG,CAAC,QAAQ,CAAA;IAC9C,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAMD,MAAM,UAAU,OAAO,CACrB,UAAkB,EAClB,OAAuC;IAEvC,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAwB,CAAA;IACrD,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IAErC,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,cAAc,CAAA;IAExD,MAAM,iBAAiB,GAAG;QACxB,+BAA+B;QAC/B,gCAAgC;QAChC,+BAA+B;QAC/B,8BAA8B;QAC9B,kDAAkD;QAClD,6BAA6B;QAC7B,sBAAsB;QACtB,oCAAoC;QACpC,kBAAkB;QAClB,4DAA4D;QAC5D,SAAS;KACV,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAEV,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,MAAM,CAAA;IAErD,MAAM,YAAY,GAAG,iBAAiB,GAAG,cAAc,GAAG,IAAI,CAAA;IAE9D,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAC7C,GAAG,qBAAqB;QACxB,GAAG;YACD,cAAc,EAAE,qBAAqB;YACrC,eAAe,EAAE,sBAAsB;SACxC;QACD,GAAG,OAAO;KACX,CAA6B,CAAA;IAE9B,OAAO,UAAU,IAAW;QAC1B,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,IAAI,CAAC,CAAA;QACnB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,EAAE,CAAC,GAAG,YAAY,KAAK,CAAC,CAAA;YAE/B,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;YAE/D,MAAM,OAAO,GAAG,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAA;YAElE,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,MAAM,GAAG,CAAA;YACX,CAAC;YAED,iBAAiB,CAAC,SAAS,GAAG,CAAC,CAAA;YAC/B,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAE7C,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;gBAClB,MAAM,GAAG,CAAA;YACX,CAAC;YAED,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAA;YAC1C,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAA;YAE1C,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC7D,MAAM,GAAG,CAAA;YACX,CAAC;YAED,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;YAC/C,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;YAE1B,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;YAC/C,MAAM,iBAAiB,GAAG,SAAS,GAAG,oBAAoB,CAAA;YAC1D,MAAM,CAAC,EAAE,CAAC,iBAAiB,IAAI,CAAC,CAAC,CAAA;YAEjC,MAAM,aAAa,GAAG,0BAA0B,CAC9C,iBAAiB,EACjB,OAAO,CACR,CAAA;YAED,MAAM,IAAI,eAAe,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;QAC/C,CAAC;IACH,CAAC,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/compiler.ts"],"names":[],"mappings":"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"}
@@ -4,8 +4,8 @@ export declare class ExpressionError extends Error {
4
4
  constructor(error: Error, location: Location | null);
5
5
  }
6
6
  export declare class UnexpectedTypeError extends TypeError {
7
- expectedType: string;
8
- receivedType: string;
7
+ expectedTypes: string[];
8
+ receivedValue: unknown;
9
9
  I18N_STRING: string;
10
- constructor(expectedType: string, receivedType: string);
10
+ constructor(expectedTypes: string[], receivedValue: unknown);
11
11
  }
@@ -1,3 +1,4 @@
1
+ import { typeOf } from './tools/index.js';
1
2
  export class ExpressionError extends Error {
2
3
  location;
3
4
  constructor(error, location) {
@@ -6,13 +7,20 @@ export class ExpressionError extends Error {
6
7
  }
7
8
  }
8
9
  export class UnexpectedTypeError extends TypeError {
9
- expectedType;
10
- receivedType;
10
+ expectedTypes;
11
+ receivedValue;
11
12
  I18N_STRING = 'UNEXPECTED_TYPE';
12
- constructor(expectedType, receivedType) {
13
- super(`Expected ${expectedType}, but got ${receivedType} instead.`);
14
- this.expectedType = expectedType;
15
- this.receivedType = receivedType;
13
+ constructor(expectedTypes, receivedValue) {
14
+ super(`Expected ${expectedTypes.length === 1
15
+ ? expectedTypes[0]
16
+ : expectedTypes
17
+ .flatMap((t, index) => {
18
+ return [t, index === expectedTypes.length - 2 ? ' or ' : ', '];
19
+ })
20
+ .slice(0, -1)
21
+ .join('')}, but got ${typeOf(receivedValue)} instead`);
22
+ this.expectedTypes = expectedTypes;
23
+ this.receivedValue = receivedValue;
16
24
  }
17
25
  }
18
26
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAG/B;IAFT,YACE,KAAY,EACL,QAAyB;QAEhC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;QAF/B,aAAQ,GAAR,QAAQ,CAAiB;IAGlC,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,SAAS;IAIvC;IACA;IAJT,WAAW,GAAG,iBAAiB,CAAA;IAE/B,YACS,YAAoB,EACpB,YAAoB;QAE3B,KAAK,CAAC,YAAY,YAAY,aAAa,YAAY,WAAW,CAAC,CAAA;QAH5D,iBAAY,GAAZ,YAAY,CAAQ;QACpB,iBAAY,GAAZ,YAAY,CAAQ;IAG7B,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAEzC,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAG/B;IAFT,YACE,KAAY,EACL,QAAyB;QAEhC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;QAF/B,aAAQ,GAAR,QAAQ,CAAiB;IAGlC,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,SAAS;IAIvC;IACA;IAJT,WAAW,GAAG,iBAAiB,CAAA;IAE/B,YACS,aAAuB,EACvB,aAAsB;QAE7B,KAAK,CACH,YACE,aAAa,CAAC,MAAM,KAAK,CAAC;YACxB,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;YAClB,CAAC,CAAC,aAAa;iBACV,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;gBACpB,OAAO,CAAC,CAAC,EAAE,KAAK,KAAK,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;YAChE,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;iBACZ,IAAI,CAAC,EAAE,CAChB,aAAa,MAAM,CAAC,aAAa,CAAC,UAAU,CAC7C,CAAA;QAdM,kBAAa,GAAb,aAAa,CAAU;QACvB,kBAAa,GAAb,aAAa,CAAS;IAc/B,CAAC;CACF"}
@@ -1,3 +1,4 @@
1
1
  export * from './compiler.js';
2
2
  export * from './errors.js';
3
3
  export * from './simplex-tree.js';
4
+ export * from './tools/index.js';
@@ -1,4 +1,5 @@
1
1
  export * from './compiler.js';
2
2
  export * from './errors.js';
3
3
  export * from './simplex-tree.js';
4
+ export * from './tools/index.js';
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare function castToBoolean(val: unknown): boolean;
2
+ export declare function castToString(val: unknown): string;
@@ -0,0 +1,20 @@
1
+ import { unbox } from './index.js';
2
+ // eslint-disable-next-line @typescript-eslint/unbound-method
3
+ const toString = Object.prototype.toString;
4
+ export function castToBoolean(val) {
5
+ return Boolean(unbox(val));
6
+ }
7
+ export function castToString(val) {
8
+ val = unbox(val);
9
+ const type = typeof val;
10
+ if (type === 'string')
11
+ return val;
12
+ if (val == null ||
13
+ type === 'number' ||
14
+ type === 'boolean' ||
15
+ type === 'bigint') {
16
+ return String(val);
17
+ }
18
+ return toString.call(val);
19
+ }
20
+ //# sourceMappingURL=cast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cast.js","sourceRoot":"","sources":["../../../src/tools/cast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAElC,6DAA6D;AAC7D,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAA;AAE1C,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAY;IACvC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;IAEhB,MAAM,IAAI,GAAG,OAAO,GAAG,CAAA;IAEvB,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,GAAa,CAAA;IAC3C,IACE,GAAG,IAAI,IAAI;QACX,IAAI,KAAK,QAAQ;QACjB,IAAI,KAAK,SAAS;QAClB,IAAI,KAAK,QAAQ,EACjB,CAAC;QACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAA;IACpB,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC3B,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function ensureNumber(val: unknown): number | bigint;
2
+ export declare function ensureFunction(val: unknown): Function;
3
+ export declare function ensureRelationalComparable(val: unknown): number | string | bigint;
@@ -0,0 +1,30 @@
1
+ import { UnexpectedTypeError } from '../errors.js';
2
+ import { unbox } from './index.js';
3
+ export function ensureNumber(val) {
4
+ if (typeof val === 'number' && Number.isFinite(val)) {
5
+ return val;
6
+ }
7
+ if (typeof val === 'bigint') {
8
+ return val;
9
+ }
10
+ if (typeof val === 'object' && val instanceof Number) {
11
+ return ensureNumber(val.valueOf());
12
+ }
13
+ throw new UnexpectedTypeError(['number', 'bigint'], val);
14
+ }
15
+ export function ensureFunction(val) {
16
+ if (typeof val === 'function')
17
+ return val;
18
+ throw new UnexpectedTypeError(['function'], val);
19
+ }
20
+ export function ensureRelationalComparable(val) {
21
+ val = unbox(val);
22
+ const type = typeof val;
23
+ if ((type === 'number' && Number.isNaN(val) === false) ||
24
+ type === 'string' ||
25
+ type === 'bigint') {
26
+ return val;
27
+ }
28
+ throw new UnexpectedTypeError(['number', 'bigint', 'string'], val);
29
+ }
30
+ //# sourceMappingURL=ensure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensure.js","sourceRoot":"","sources":["../../../src/tools/ensure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAElC,MAAM,UAAU,YAAY,CAAC,GAAY;IACvC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACpD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,YAAY,MAAM,EAAE,CAAC;QACrD,OAAO,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;IACpC,CAAC;IAED,MAAM,IAAI,mBAAmB,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAA;AAC1D,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,IAAI,OAAO,GAAG,KAAK,UAAU;QAAE,OAAO,GAAG,CAAA;IACzC,MAAM,IAAI,mBAAmB,CAAC,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,CAAA;AAClD,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,GAAY;IAEZ,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;IAEhB,MAAM,IAAI,GAAG,OAAO,GAAG,CAAA;IAEvB,IACE,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC;QAClD,IAAI,KAAK,QAAQ;QACjB,IAAI,KAAK,QAAQ,EACjB,CAAC;QACD,OAAO,GAA+B,CAAA;IACxC,CAAC;IAED,MAAM,IAAI,mBAAmB,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAA;AACpE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function isObject(val: unknown): val is object;
2
+ export declare function isSimpleValue(val: unknown): val is number | string | boolean | bigint | null | undefined;
@@ -0,0 +1,20 @@
1
+ import { unbox } from './index.js';
2
+ // eslint-disable-next-line @typescript-eslint/unbound-method
3
+ var objToStrProto = Object.prototype.toString;
4
+ export function isObject(val) {
5
+ return objToStrProto.call(val) === '[object Object]';
6
+ }
7
+ export function isSimpleValue(val) {
8
+ val = unbox(val);
9
+ const type = typeof val;
10
+ if (type === 'string' ||
11
+ type === 'number' ||
12
+ type === 'boolean' ||
13
+ type === 'bigint') {
14
+ return true;
15
+ }
16
+ if (val == null)
17
+ return true;
18
+ return false;
19
+ }
20
+ //# sourceMappingURL=guards.js.map
@@ -0,0 +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"}
@@ -0,0 +1,11 @@
1
+ export * from './cast.js';
2
+ export * from './ensure.js';
3
+ export * from './guards.js';
4
+ /**
5
+ * Converts instances of Number, String and Boolean to primitives
6
+ */
7
+ export declare function unbox(val: unknown): unknown;
8
+ /**
9
+ * Returns more specific type of a value
10
+ */
11
+ export declare function typeOf(val: unknown): string;
@@ -0,0 +1,40 @@
1
+ export * from './cast.js';
2
+ export * from './ensure.js';
3
+ export * from './guards.js';
4
+ // eslint-disable-next-line @typescript-eslint/unbound-method
5
+ const toString = Object.prototype.toString;
6
+ /**
7
+ * Converts instances of Number, String and Boolean to primitives
8
+ */
9
+ export function unbox(val) {
10
+ if (typeof val !== 'object' || val === null)
11
+ return val;
12
+ const objConstructor = val.constructor;
13
+ if (objConstructor === Number ||
14
+ objConstructor === String ||
15
+ objConstructor === Boolean) {
16
+ return val.valueOf();
17
+ }
18
+ return val;
19
+ }
20
+ /**
21
+ * Returns more specific type of a value
22
+ */
23
+ export function typeOf(val) {
24
+ const type = typeof val;
25
+ if (type === 'number') {
26
+ if (Number.isFinite(val))
27
+ return 'number';
28
+ else if (val === Number.NEGATIVE_INFINITY)
29
+ return '-Infinity';
30
+ else if (val === Number.POSITIVE_INFINITY)
31
+ return 'Infinity';
32
+ else
33
+ return 'NaN';
34
+ }
35
+ if (type === 'object') {
36
+ return toString.call(val).slice(8, -1);
37
+ }
38
+ return type;
39
+ }
40
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "simplex-lang",
3
- "version": "0.0.0",
3
+ "version": "0.0.2",
4
4
  "type": "module",
5
5
  "description": "SimplEx - simple expression language",
6
6
  "files": [
@@ -62,7 +62,6 @@
62
62
  "license": "MIT",
63
63
  "devDependencies": {
64
64
  "@eslint/js": "^9.19.0",
65
- "@project/simplex-parser": "file:parser",
66
65
  "@tsconfig/node22": "^22.0.0",
67
66
  "@tsconfig/strictest": "^2.0.5",
68
67
  "@types/node": "^22.13.4",
package/src/compiler.ts CHANGED
@@ -1,4 +1,7 @@
1
- import { parse } from '@project/simplex-parser'
1
+ /* eslint-disable @typescript-eslint/ban-ts-comment */
2
+
3
+ // eslint-disable-next-line n/no-missing-import
4
+ import { parse } from '../parser/index.js'
2
5
  import { ExpressionError, UnexpectedTypeError } from './errors.js'
3
6
  import {
4
7
  BinaryExpression,
@@ -9,16 +12,15 @@ import {
9
12
  LogicalExpression,
10
13
  UnaryExpression
11
14
  } from './simplex-tree.js'
15
+ import assert from 'node:assert'
16
+ import { castToBoolean } from './tools/cast.js'
12
17
  import {
13
- bool,
14
18
  ensureFunction,
15
- isSimple,
16
- num,
17
- prettyType,
18
- relComp,
19
- toStr
20
- } from './utils.js'
21
- import assert from 'node:assert'
19
+ ensureRelationalComparable,
20
+ ensureNumber
21
+ } from './tools/ensure.js'
22
+ import { isSimpleValue } from './tools/guards.js'
23
+ import { castToString, typeOf } from './tools/index.js'
22
24
 
23
25
  interface ContextHelpers<Data, Globals> {
24
26
  castToBoolean(this: void, val: unknown): boolean
@@ -45,7 +47,7 @@ const defaultContextHelpers: ContextHelpers<
45
47
  Record<string, unknown>,
46
48
  Record<string, unknown>
47
49
  > = {
48
- castToBoolean: bool,
50
+ castToBoolean,
49
51
 
50
52
  ensureFunction,
51
53
 
@@ -67,14 +69,11 @@ const defaultContextHelpers: ContextHelpers<
67
69
  if (obj == null) return obj
68
70
 
69
71
  if (typeof obj !== 'object') {
70
- throw new UnexpectedTypeError('object', prettyType(obj))
72
+ throw new UnexpectedTypeError(['object'], obj)
71
73
  }
72
74
 
73
- if (isSimple(key) === false) {
74
- throw new UnexpectedTypeError(
75
- 'object key to be simple type',
76
- prettyType(key)
77
- )
75
+ if (isSimpleValue(key) === false) {
76
+ throw new UnexpectedTypeError(['simple type object key'], key)
78
77
  }
79
78
 
80
79
  if (hasOwn(obj, key as any)) {
@@ -109,9 +108,9 @@ type ExpressionUnaryOperators = Record<
109
108
  >
110
109
 
111
110
  export const defaultUnaryOperators: ExpressionUnaryOperators = {
112
- '+': val => num(val),
113
- '-': val => -num(val),
114
- 'not': val => !bool(val),
111
+ '+': val => ensureNumber(val),
112
+ '-': val => -ensureNumber(val),
113
+ 'not': val => !castToBoolean(val),
115
114
  'typeof': val => typeof val
116
115
  }
117
116
 
@@ -125,43 +124,69 @@ export const defaultBinaryOperators: ExpressionBinaryOperators = {
125
124
 
126
125
  '==': (a, b) => a === b,
127
126
 
128
- '*': (a, b) => num(a) * num(b),
127
+ // TIPS give the opportunity to get a base js error
129
128
 
130
- '+': (a, b) => num(a) + num(b),
129
+ '*': (a, b) => {
130
+ // @ts-expect-error
131
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
132
+ return ensureNumber(a) * ensureNumber(b)
133
+ },
131
134
 
132
- '&': (a, b) => toStr(a) + toStr(b),
135
+ '+': (a, b) => {
136
+ // @ts-expect-error
137
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/restrict-plus-operands
138
+ return ensureNumber(a) + ensureNumber(b)
139
+ },
133
140
 
134
- '-': (a, b) => num(a) - num(b),
141
+ '-': (a, b) => {
142
+ // @ts-expect-error
143
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
144
+ return ensureNumber(a) - ensureNumber(b)
145
+ },
135
146
 
136
- '/': (a, b) => num(a) / num(b),
147
+ '/': (a, b) => {
148
+ // @ts-expect-error
149
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
150
+ return ensureNumber(a) / ensureNumber(b)
151
+ },
137
152
 
138
153
  'mod': (a, b) => {
139
- return num(a) % num(b)
154
+ // @ts-expect-error
155
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
156
+ return ensureNumber(a) % ensureNumber(b)
157
+ },
158
+
159
+ '^': (a, b) => {
160
+ // @ts-expect-error
161
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
162
+ return ensureNumber(a) ** ensureNumber(b)
140
163
  },
141
164
 
142
- '<': (a, b) => relComp(a) < relComp(b),
165
+ '&': (a, b) => castToString(a) + castToString(b),
166
+
167
+ '<': (a, b) => ensureRelationalComparable(a) < ensureRelationalComparable(b),
143
168
 
144
- '<=': (a, b) => relComp(a) <= relComp(b),
169
+ '<=': (a, b) =>
170
+ ensureRelationalComparable(a) <= ensureRelationalComparable(b),
145
171
 
146
- '>': (a, b) => relComp(a) > relComp(b),
172
+ '>': (a, b) => ensureRelationalComparable(a) > ensureRelationalComparable(b),
147
173
 
148
- '>=': (a, b) => relComp(a) >= relComp(b),
174
+ '>=': (a, b) =>
175
+ ensureRelationalComparable(a) >= ensureRelationalComparable(b),
149
176
 
150
177
  'in': (a, b) => {
151
- if (isSimple(a) && b != null && typeof b === 'object') {
178
+ if (isSimpleValue(a) && b != null && typeof b === 'object') {
152
179
  return Object.hasOwn(b, a as any)
153
180
  } else {
154
181
  throw new TypeError(
155
- `Cannot use "in" operator to search for ${prettyType(a)} key in ${prettyType(b)}`
182
+ `Cannot use "in" operator to search for ${typeOf(a)} key in ${typeOf(b)}`
156
183
  )
157
184
  }
158
185
  },
159
186
 
160
- '^': (a, b) => num(a) ** num(b),
161
-
162
- 'and': (a, b) => bool(a) && bool(b),
187
+ 'and': (a, b) => castToBoolean(a) && castToBoolean(b),
163
188
 
164
- 'or': (a, b) => bool(a) || bool(b)
189
+ 'or': (a, b) => castToBoolean(a) || castToBoolean(b)
165
190
  }
166
191
 
167
192
  interface ExpressionOperators {
package/src/errors.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { Location } from './simplex-tree.js'
2
+ import { typeOf } from './tools/index.js'
2
3
 
3
4
  export class ExpressionError extends Error {
4
5
  constructor(
@@ -13,9 +14,20 @@ export class UnexpectedTypeError extends TypeError {
13
14
  I18N_STRING = 'UNEXPECTED_TYPE'
14
15
 
15
16
  constructor(
16
- public expectedType: string,
17
- public receivedType: string
17
+ public expectedTypes: string[],
18
+ public receivedValue: unknown
18
19
  ) {
19
- super(`Expected ${expectedType}, but got ${receivedType} instead.`)
20
+ super(
21
+ `Expected ${
22
+ expectedTypes.length === 1
23
+ ? expectedTypes[0]
24
+ : expectedTypes
25
+ .flatMap((t, index) => {
26
+ return [t, index === expectedTypes.length - 2 ? ' or ' : ', ']
27
+ })
28
+ .slice(0, -1)
29
+ .join('')
30
+ }, but got ${typeOf(receivedValue)} instead`
31
+ )
20
32
  }
21
33
  }
package/src/index.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from './compiler.js'
2
2
  export * from './errors.js'
3
3
  export * from './simplex-tree.js'
4
+ export * from './tools/index.js'
@@ -0,0 +1,26 @@
1
+ import { unbox } from './index.js'
2
+
3
+ // eslint-disable-next-line @typescript-eslint/unbound-method
4
+ const toString = Object.prototype.toString
5
+
6
+ export function castToBoolean(val: unknown): boolean {
7
+ return Boolean(unbox(val))
8
+ }
9
+
10
+ export function castToString(val: unknown): string {
11
+ val = unbox(val)
12
+
13
+ const type = typeof val
14
+
15
+ if (type === 'string') return val as string
16
+ if (
17
+ val == null ||
18
+ type === 'number' ||
19
+ type === 'boolean' ||
20
+ type === 'bigint'
21
+ ) {
22
+ return String(val)
23
+ }
24
+
25
+ return toString.call(val)
26
+ }
@@ -0,0 +1,41 @@
1
+ import { UnexpectedTypeError } from '../errors.js'
2
+ import { unbox } from './index.js'
3
+
4
+ export function ensureNumber(val: unknown): number | bigint {
5
+ if (typeof val === 'number' && Number.isFinite(val)) {
6
+ return val
7
+ }
8
+
9
+ if (typeof val === 'bigint') {
10
+ return val
11
+ }
12
+
13
+ if (typeof val === 'object' && val instanceof Number) {
14
+ return ensureNumber(val.valueOf())
15
+ }
16
+
17
+ throw new UnexpectedTypeError(['number', 'bigint'], val)
18
+ }
19
+
20
+ export function ensureFunction(val: unknown): Function {
21
+ if (typeof val === 'function') return val
22
+ throw new UnexpectedTypeError(['function'], val)
23
+ }
24
+
25
+ export function ensureRelationalComparable(
26
+ val: unknown
27
+ ): number | string | bigint {
28
+ val = unbox(val)
29
+
30
+ const type = typeof val
31
+
32
+ if (
33
+ (type === 'number' && Number.isNaN(val) === false) ||
34
+ type === 'string' ||
35
+ type === 'bigint'
36
+ ) {
37
+ return val as number | string | bigint
38
+ }
39
+
40
+ throw new UnexpectedTypeError(['number', 'bigint', 'string'], val)
41
+ }
@@ -0,0 +1,29 @@
1
+ import { unbox } from './index.js'
2
+
3
+ // eslint-disable-next-line @typescript-eslint/unbound-method
4
+ var objToStrProto = Object.prototype.toString
5
+
6
+ export function isObject(val: unknown): val is object {
7
+ return objToStrProto.call(val) === '[object Object]'
8
+ }
9
+
10
+ export function isSimpleValue(
11
+ val: unknown
12
+ ): val is number | string | boolean | bigint | null | undefined {
13
+ val = unbox(val)
14
+
15
+ const type = typeof val
16
+
17
+ if (
18
+ type === 'string' ||
19
+ type === 'number' ||
20
+ type === 'boolean' ||
21
+ type === 'bigint'
22
+ ) {
23
+ return true
24
+ }
25
+
26
+ if (val == null) return true
27
+
28
+ return false
29
+ }
@@ -0,0 +1,45 @@
1
+ export * from './cast.js'
2
+ export * from './ensure.js'
3
+ export * from './guards.js'
4
+
5
+ // eslint-disable-next-line @typescript-eslint/unbound-method
6
+ const toString = Object.prototype.toString
7
+
8
+ /**
9
+ * Converts instances of Number, String and Boolean to primitives
10
+ */
11
+ export function unbox(val: unknown) {
12
+ if (typeof val !== 'object' || val === null) return val
13
+
14
+ const objConstructor = val.constructor
15
+
16
+ if (
17
+ objConstructor === Number ||
18
+ objConstructor === String ||
19
+ objConstructor === Boolean
20
+ ) {
21
+ return val.valueOf()
22
+ }
23
+
24
+ return val
25
+ }
26
+
27
+ /**
28
+ * Returns more specific type of a value
29
+ */
30
+ export function typeOf(val: unknown) {
31
+ const type = typeof val
32
+
33
+ if (type === 'number') {
34
+ if (Number.isFinite(val)) return 'number'
35
+ else if (val === Number.NEGATIVE_INFINITY) return '-Infinity'
36
+ else if (val === Number.POSITIVE_INFINITY) return 'Infinity'
37
+ else return 'NaN'
38
+ }
39
+
40
+ if (type === 'object') {
41
+ return toString.call(val).slice(8, -1)
42
+ }
43
+
44
+ return type
45
+ }
@@ -1,15 +0,0 @@
1
- /**
2
- * Converts instances of Number, String and Boolean to primitives
3
- */
4
- export declare function unbox(value: unknown): {} | null | undefined;
5
- export declare function num(val: unknown): number;
6
- export declare function toStr(val: unknown): string;
7
- export declare function relComp(val: unknown): number | string | bigint;
8
- export declare function bool(val: unknown): boolean;
9
- export declare function ensureFunction(val: unknown): Function;
10
- export declare function isObj(val: unknown): val is object;
11
- export declare function isSimple(val: unknown): val is number | string | boolean | bigint | null | undefined;
12
- /**
13
- * Returns the type of a value in a neat, user-readable way
14
- */
15
- export declare function prettyType(val: unknown): "object" | "number" | "undefined" | "null" | "true" | "false" | "-infinity" | "infinity" | "NaN" | "string" | "unknown type" | "array";
@@ -1,98 +0,0 @@
1
- /* eslint-disable @typescript-eslint/unbound-method */
2
- import { UnexpectedTypeError } from './errors.js';
3
- /**
4
- * Converts instances of Number, String and Boolean to primitives
5
- */
6
- export function unbox(value) {
7
- if (typeof value !== 'object')
8
- return value;
9
- if (value instanceof Number ||
10
- value instanceof String ||
11
- value instanceof Boolean) {
12
- return value.valueOf();
13
- }
14
- return value;
15
- }
16
- export function num(val) {
17
- val = unbox(val);
18
- if (typeof val !== 'number' || Number.isFinite(val) === false) {
19
- throw new UnexpectedTypeError('number', prettyType(val));
20
- }
21
- return val;
22
- }
23
- export function toStr(val) {
24
- val = unbox(val);
25
- const type = typeof val;
26
- if (type === 'string')
27
- return val;
28
- if (type === 'number' || type === 'boolean' || type === 'bigint') {
29
- return String(val);
30
- }
31
- throw new UnexpectedTypeError('string', prettyType(val));
32
- }
33
- export function relComp(val) {
34
- val = unbox(val);
35
- const type = typeof val;
36
- if (type !== 'number' && type !== 'string' && type !== 'bigint') {
37
- throw new UnexpectedTypeError('number or string', prettyType(val));
38
- }
39
- return val;
40
- }
41
- export function bool(val) {
42
- return Boolean(unbox(val));
43
- }
44
- export function ensureFunction(val) {
45
- if (typeof val === 'function')
46
- return val;
47
- throw new UnexpectedTypeError('function', prettyType(val));
48
- }
49
- var objToStrProto = Object.prototype.toString;
50
- export function isObj(val) {
51
- return objToStrProto.call(val) === '[object Object]';
52
- }
53
- export function isSimple(val) {
54
- val = unbox(val);
55
- const type = typeof val;
56
- if (type === 'string' ||
57
- type === 'number' ||
58
- type === 'boolean' ||
59
- type === 'bigint') {
60
- return true;
61
- }
62
- if (val == null)
63
- return true;
64
- return false;
65
- }
66
- /**
67
- * Returns the type of a value in a neat, user-readable way
68
- */
69
- export function prettyType(val) {
70
- val = unbox(val);
71
- if (val === undefined)
72
- return 'undefined';
73
- if (val === null)
74
- return 'null';
75
- if (val === true)
76
- return 'true';
77
- if (val === false)
78
- return 'false';
79
- const type = typeof val;
80
- if (type === 'number') {
81
- if (Number.isFinite(val))
82
- return 'number';
83
- else if (val === Number.NEGATIVE_INFINITY)
84
- return '-infinity';
85
- else if (val === Number.POSITIVE_INFINITY)
86
- return 'infinity';
87
- else
88
- return 'NaN';
89
- }
90
- if (type === 'string')
91
- return 'string';
92
- if (type !== 'object' && type !== 'function')
93
- return 'unknown type'; // TODO Get more detailed type info
94
- if (Array.isArray(val))
95
- return 'array';
96
- return 'object';
97
- }
98
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- {
2
- "name": "@project/simplex-parser",
3
- "version": "0.0.0",
4
- "type": "module",
5
- "main": "index.js",
6
- "types": "index.d.ts"
7
- }
package/src/utils.ts DELETED
@@ -1,119 +0,0 @@
1
- /* eslint-disable @typescript-eslint/unbound-method */
2
- import { UnexpectedTypeError } from './errors.js'
3
-
4
- /**
5
- * Converts instances of Number, String and Boolean to primitives
6
- */
7
- export function unbox(value: unknown) {
8
- if (typeof value !== 'object') return value
9
-
10
- if (
11
- value instanceof Number ||
12
- value instanceof String ||
13
- value instanceof Boolean
14
- ) {
15
- return value.valueOf()
16
- }
17
-
18
- return value
19
- }
20
-
21
- export function num(val: unknown): number {
22
- val = unbox(val)
23
-
24
- if (typeof val !== 'number' || Number.isFinite(val) === false) {
25
- throw new UnexpectedTypeError('number', prettyType(val))
26
- }
27
-
28
- return val
29
- }
30
-
31
- export function toStr(val: unknown): string {
32
- val = unbox(val)
33
-
34
- const type = typeof val
35
-
36
- if (type === 'string') return val as string
37
- if (type === 'number' || type === 'boolean' || type === 'bigint') {
38
- return String(val)
39
- }
40
-
41
- throw new UnexpectedTypeError('string', prettyType(val))
42
- }
43
-
44
- export function relComp(val: unknown): number | string | bigint {
45
- val = unbox(val)
46
-
47
- const type = typeof val
48
-
49
- if (type !== 'number' && type !== 'string' && type !== 'bigint') {
50
- throw new UnexpectedTypeError('number or string', prettyType(val))
51
- }
52
-
53
- return val as number | string | bigint
54
- }
55
-
56
- export function bool(val: unknown): boolean {
57
- return Boolean(unbox(val))
58
- }
59
-
60
- export function ensureFunction(val: unknown): Function {
61
- if (typeof val === 'function') return val
62
- throw new UnexpectedTypeError('function', prettyType(val))
63
- }
64
-
65
- var objToStrProto = Object.prototype.toString
66
-
67
- export function isObj(val: unknown): val is object {
68
- return objToStrProto.call(val) === '[object Object]'
69
- }
70
-
71
- export function isSimple(
72
- val: unknown
73
- ): val is number | string | boolean | bigint | null | undefined {
74
- val = unbox(val)
75
-
76
- const type = typeof val
77
-
78
- if (
79
- type === 'string' ||
80
- type === 'number' ||
81
- type === 'boolean' ||
82
- type === 'bigint'
83
- ) {
84
- return true
85
- }
86
-
87
- if (val == null) return true
88
-
89
- return false
90
- }
91
-
92
- /**
93
- * Returns the type of a value in a neat, user-readable way
94
- */
95
- export function prettyType(val: unknown) {
96
- val = unbox(val)
97
-
98
- if (val === undefined) return 'undefined'
99
- if (val === null) return 'null'
100
- if (val === true) return 'true'
101
- if (val === false) return 'false'
102
-
103
- const type = typeof val
104
-
105
- if (type === 'number') {
106
- if (Number.isFinite(val)) return 'number'
107
- else if (val === Number.NEGATIVE_INFINITY) return '-infinity'
108
- else if (val === Number.POSITIVE_INFINITY) return 'infinity'
109
- else return 'NaN'
110
- }
111
-
112
- if (type === 'string') return 'string'
113
-
114
- if (type !== 'object' && type !== 'function') return 'unknown type' // TODO Get more detailed type info
115
-
116
- if (Array.isArray(val)) return 'array'
117
-
118
- return 'object'
119
- }