simplex-lang 0.0.0 → 0.0.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.
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,15 @@
1
+ /* eslint-disable @typescript-eslint/ban-ts-comment */
1
2
  import { parse } from '@project/simplex-parser';
2
3
  import { ExpressionError, UnexpectedTypeError } from './errors.js';
3
- import { bool, ensureFunction, isSimple, num, prettyType, relComp, toStr } from './utils.js';
4
4
  import assert from 'node:assert';
5
+ import { castToBoolean } from './tools/cast.js';
6
+ import { ensureFunction, ensureRelationalComparable, ensureNumber } from './tools/ensure.js';
7
+ import { isSimpleValue } from './tools/guards.js';
8
+ import { castToString, typeOf } from './tools/index.js';
5
9
  var hasOwn = Object.hasOwn;
6
10
  var ERROR_STACK_REGEX = /<anonymous>:(?<row>\d+):(?<col>\d+)/g;
7
11
  const defaultContextHelpers = {
8
- castToBoolean: bool,
12
+ castToBoolean,
9
13
  ensureFunction,
10
14
  getIdentifierValue: (identifierName, globals, data) => {
11
15
  if (identifierName === 'undefined')
@@ -22,10 +26,10 @@ const defaultContextHelpers = {
22
26
  if (obj == null)
23
27
  return obj;
24
28
  if (typeof obj !== 'object') {
25
- throw new UnexpectedTypeError('object', prettyType(obj));
29
+ throw new UnexpectedTypeError(['object'], obj);
26
30
  }
27
- if (isSimple(key) === false) {
28
- throw new UnexpectedTypeError('object key to be simple type', prettyType(key));
31
+ if (isSimpleValue(key) === false) {
32
+ throw new UnexpectedTypeError(['simple type object key'], key);
29
33
  }
30
34
  if (hasOwn(obj, key)) {
31
35
  // @ts-expect-error Type cannot be used as an index type
@@ -49,37 +53,60 @@ const defaultContextHelpers = {
49
53
  }
50
54
  };
51
55
  export const defaultUnaryOperators = {
52
- '+': val => num(val),
53
- '-': val => -num(val),
54
- 'not': val => !bool(val),
56
+ '+': val => ensureNumber(val),
57
+ '-': val => -ensureNumber(val),
58
+ 'not': val => !castToBoolean(val),
55
59
  'typeof': val => typeof val
56
60
  };
57
61
  export const defaultBinaryOperators = {
58
62
  '!=': (a, b) => a !== b,
59
63
  '==': (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),
64
+ // TIPS give the opportunity to get a base js error
65
+ '*': (a, b) => {
66
+ // @ts-expect-error
67
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
68
+ return ensureNumber(a) * ensureNumber(b);
69
+ },
70
+ '+': (a, b) => {
71
+ // @ts-expect-error
72
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/restrict-plus-operands
73
+ return ensureNumber(a) + ensureNumber(b);
74
+ },
75
+ '-': (a, b) => {
76
+ // @ts-expect-error
77
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
78
+ return ensureNumber(a) - ensureNumber(b);
79
+ },
80
+ '/': (a, b) => {
81
+ // @ts-expect-error
82
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
83
+ return ensureNumber(a) / ensureNumber(b);
84
+ },
65
85
  'mod': (a, b) => {
66
- return num(a) % num(b);
86
+ // @ts-expect-error
87
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
88
+ return ensureNumber(a) % ensureNumber(b);
89
+ },
90
+ '^': (a, b) => {
91
+ // @ts-expect-error
92
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
93
+ return ensureNumber(a) ** ensureNumber(b);
67
94
  },
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),
95
+ '&': (a, b) => castToString(a) + castToString(b),
96
+ '<': (a, b) => ensureRelationalComparable(a) < ensureRelationalComparable(b),
97
+ '<=': (a, b) => ensureRelationalComparable(a) <= ensureRelationalComparable(b),
98
+ '>': (a, b) => ensureRelationalComparable(a) > ensureRelationalComparable(b),
99
+ '>=': (a, b) => ensureRelationalComparable(a) >= ensureRelationalComparable(b),
72
100
  'in': (a, b) => {
73
- if (isSimple(a) && b != null && typeof b === 'object') {
101
+ if (isSimpleValue(a) && b != null && typeof b === 'object') {
74
102
  return Object.hasOwn(b, a);
75
103
  }
76
104
  else {
77
- throw new TypeError(`Cannot use "in" operator to search for ${prettyType(a)} key in ${prettyType(b)}`);
105
+ throw new TypeError(`Cannot use "in" operator to search for ${typeOf(a)} key in ${typeOf(b)}`);
78
106
  }
79
107
  },
80
- '^': (a, b) => num(a) ** num(b),
81
- 'and': (a, b) => bool(a) && bool(b),
82
- 'or': (a, b) => bool(a) || bool(b)
108
+ 'and': (a, b) => castToBoolean(a) && castToBoolean(b),
109
+ 'or': (a, b) => castToBoolean(a) || castToBoolean(b)
83
110
  };
84
111
  const PIPE_LTR = '_';
85
112
  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":"AAAA,sDAAsD;AAEtD,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAUlE,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EACL,cAAc,EACd,0BAA0B,EAC1B,YAAY,EACb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAoBvD,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;AAC1B,IAAI,iBAAiB,GAAG,sCAAsC,CAAA;AAE9D,MAAM,qBAAqB,GAGvB;IACF,aAAa;IAEb,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,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAA;QAChD,CAAC;QAED,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;YACjC,MAAM,IAAI,mBAAmB,CAAC,CAAC,wBAAwB,CAAC,EAAE,GAAG,CAAC,CAAA;QAChE,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,YAAY,CAAC,GAAG,CAAC;IAC7B,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC;IAC9B,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC;IACjC,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,mDAAmD;IAEnD,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACZ,mBAAmB;QACnB,+DAA+D;QAC/D,OAAO,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACZ,mBAAmB;QACnB,0GAA0G;QAC1G,OAAO,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACZ,mBAAmB;QACnB,+DAA+D;QAC/D,OAAO,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACZ,mBAAmB;QACnB,+DAA+D;QAC/D,OAAO,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACd,mBAAmB;QACnB,+DAA+D;QAC/D,OAAO,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACZ,mBAAmB;QACnB,+DAA+D;QAC/D,OAAO,YAAY,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAA;IAC3C,CAAC;IAED,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAEhD,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,0BAA0B,CAAC,CAAC,CAAC,GAAG,0BAA0B,CAAC,CAAC,CAAC;IAE5E,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACb,0BAA0B,CAAC,CAAC,CAAC,IAAI,0BAA0B,CAAC,CAAC,CAAC;IAEhE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,0BAA0B,CAAC,CAAC,CAAC,GAAG,0BAA0B,CAAC,CAAC,CAAC;IAE5E,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACb,0BAA0B,CAAC,CAAC,CAAC,IAAI,0BAA0B,CAAC,CAAC,CAAC;IAEhE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACb,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC3D,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAQ,CAAC,CAAA;QACnC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,SAAS,CACjB,0CAA0C,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,CAAC,CAAC,EAAE,CAC1E,CAAA;QACH,CAAC;IACH,CAAC;IAED,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC;IAErD,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC;CACrD,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"}
@@ -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.1",
4
4
  "type": "module",
5
5
  "description": "SimplEx - simple expression language",
6
6
  "files": [
package/src/compiler.ts CHANGED
@@ -1,3 +1,5 @@
1
+ /* eslint-disable @typescript-eslint/ban-ts-comment */
2
+
1
3
  import { parse } from '@project/simplex-parser'
2
4
  import { ExpressionError, UnexpectedTypeError } from './errors.js'
3
5
  import {
@@ -9,16 +11,15 @@ import {
9
11
  LogicalExpression,
10
12
  UnaryExpression
11
13
  } from './simplex-tree.js'
14
+ import assert from 'node:assert'
15
+ import { castToBoolean } from './tools/cast.js'
12
16
  import {
13
- bool,
14
17
  ensureFunction,
15
- isSimple,
16
- num,
17
- prettyType,
18
- relComp,
19
- toStr
20
- } from './utils.js'
21
- import assert from 'node:assert'
18
+ ensureRelationalComparable,
19
+ ensureNumber
20
+ } from './tools/ensure.js'
21
+ import { isSimpleValue } from './tools/guards.js'
22
+ import { castToString, typeOf } from './tools/index.js'
22
23
 
23
24
  interface ContextHelpers<Data, Globals> {
24
25
  castToBoolean(this: void, val: unknown): boolean
@@ -45,7 +46,7 @@ const defaultContextHelpers: ContextHelpers<
45
46
  Record<string, unknown>,
46
47
  Record<string, unknown>
47
48
  > = {
48
- castToBoolean: bool,
49
+ castToBoolean,
49
50
 
50
51
  ensureFunction,
51
52
 
@@ -67,14 +68,11 @@ const defaultContextHelpers: ContextHelpers<
67
68
  if (obj == null) return obj
68
69
 
69
70
  if (typeof obj !== 'object') {
70
- throw new UnexpectedTypeError('object', prettyType(obj))
71
+ throw new UnexpectedTypeError(['object'], obj)
71
72
  }
72
73
 
73
- if (isSimple(key) === false) {
74
- throw new UnexpectedTypeError(
75
- 'object key to be simple type',
76
- prettyType(key)
77
- )
74
+ if (isSimpleValue(key) === false) {
75
+ throw new UnexpectedTypeError(['simple type object key'], key)
78
76
  }
79
77
 
80
78
  if (hasOwn(obj, key as any)) {
@@ -109,9 +107,9 @@ type ExpressionUnaryOperators = Record<
109
107
  >
110
108
 
111
109
  export const defaultUnaryOperators: ExpressionUnaryOperators = {
112
- '+': val => num(val),
113
- '-': val => -num(val),
114
- 'not': val => !bool(val),
110
+ '+': val => ensureNumber(val),
111
+ '-': val => -ensureNumber(val),
112
+ 'not': val => !castToBoolean(val),
115
113
  'typeof': val => typeof val
116
114
  }
117
115
 
@@ -125,43 +123,69 @@ export const defaultBinaryOperators: ExpressionBinaryOperators = {
125
123
 
126
124
  '==': (a, b) => a === b,
127
125
 
128
- '*': (a, b) => num(a) * num(b),
126
+ // TIPS give the opportunity to get a base js error
129
127
 
130
- '+': (a, b) => num(a) + num(b),
128
+ '*': (a, b) => {
129
+ // @ts-expect-error
130
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
131
+ return ensureNumber(a) * ensureNumber(b)
132
+ },
131
133
 
132
- '&': (a, b) => toStr(a) + toStr(b),
134
+ '+': (a, b) => {
135
+ // @ts-expect-error
136
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/restrict-plus-operands
137
+ return ensureNumber(a) + ensureNumber(b)
138
+ },
133
139
 
134
- '-': (a, b) => num(a) - num(b),
140
+ '-': (a, b) => {
141
+ // @ts-expect-error
142
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
143
+ return ensureNumber(a) - ensureNumber(b)
144
+ },
135
145
 
136
- '/': (a, b) => num(a) / num(b),
146
+ '/': (a, b) => {
147
+ // @ts-expect-error
148
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
149
+ return ensureNumber(a) / ensureNumber(b)
150
+ },
137
151
 
138
152
  'mod': (a, b) => {
139
- return num(a) % num(b)
153
+ // @ts-expect-error
154
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
155
+ return ensureNumber(a) % ensureNumber(b)
156
+ },
157
+
158
+ '^': (a, b) => {
159
+ // @ts-expect-error
160
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
161
+ return ensureNumber(a) ** ensureNumber(b)
140
162
  },
141
163
 
142
- '<': (a, b) => relComp(a) < relComp(b),
164
+ '&': (a, b) => castToString(a) + castToString(b),
165
+
166
+ '<': (a, b) => ensureRelationalComparable(a) < ensureRelationalComparable(b),
143
167
 
144
- '<=': (a, b) => relComp(a) <= relComp(b),
168
+ '<=': (a, b) =>
169
+ ensureRelationalComparable(a) <= ensureRelationalComparable(b),
145
170
 
146
- '>': (a, b) => relComp(a) > relComp(b),
171
+ '>': (a, b) => ensureRelationalComparable(a) > ensureRelationalComparable(b),
147
172
 
148
- '>=': (a, b) => relComp(a) >= relComp(b),
173
+ '>=': (a, b) =>
174
+ ensureRelationalComparable(a) >= ensureRelationalComparable(b),
149
175
 
150
176
  'in': (a, b) => {
151
- if (isSimple(a) && b != null && typeof b === 'object') {
177
+ if (isSimpleValue(a) && b != null && typeof b === 'object') {
152
178
  return Object.hasOwn(b, a as any)
153
179
  } else {
154
180
  throw new TypeError(
155
- `Cannot use "in" operator to search for ${prettyType(a)} key in ${prettyType(b)}`
181
+ `Cannot use "in" operator to search for ${typeOf(a)} key in ${typeOf(b)}`
156
182
  )
157
183
  }
158
184
  },
159
185
 
160
- '^': (a, b) => num(a) ** num(b),
161
-
162
- 'and': (a, b) => bool(a) && bool(b),
186
+ 'and': (a, b) => castToBoolean(a) && castToBoolean(b),
163
187
 
164
- 'or': (a, b) => bool(a) || bool(b)
188
+ 'or': (a, b) => castToBoolean(a) || castToBoolean(b)
165
189
  }
166
190
 
167
191
  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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"}
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
- }