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 +1 -1
- package/build/src/compiler.js +52 -24
- package/build/src/compiler.js.map +1 -1
- package/build/src/errors.d.ts +3 -3
- package/build/src/errors.js +14 -6
- package/build/src/errors.js.map +1 -1
- package/build/src/index.d.ts +1 -0
- package/build/src/index.js +1 -0
- package/build/src/index.js.map +1 -1
- package/build/src/tools/cast.d.ts +2 -0
- package/build/src/tools/cast.js +20 -0
- package/build/src/tools/cast.js.map +1 -0
- package/build/src/tools/ensure.d.ts +3 -0
- package/build/src/tools/ensure.js +30 -0
- package/build/src/tools/ensure.js.map +1 -0
- package/build/src/tools/guards.d.ts +2 -0
- package/build/src/tools/guards.js +20 -0
- package/build/src/tools/guards.js.map +1 -0
- package/build/src/tools/index.d.ts +11 -0
- package/build/src/tools/index.js +40 -0
- package/build/src/tools/index.js.map +1 -0
- package/package.json +1 -2
- package/src/compiler.ts +60 -35
- package/src/errors.ts +15 -3
- package/src/index.ts +1 -0
- package/src/tools/cast.ts +26 -0
- package/src/tools/ensure.ts +41 -0
- package/src/tools/guards.ts +29 -0
- package/src/tools/index.ts +45 -0
- package/build/src/utils.d.ts +0 -15
- package/build/src/utils.js +0 -98
- package/build/src/utils.js.map +0 -1
- package/parser/package.json +0 -7
- package/src/utils.ts +0 -119
package/README.md
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/simplex-lang)
|
|
4
4
|
[](https://github.com/wmakeev/simplex/actions/workflows/main.yml)
|
|
5
|
-
<!-- [](https://app.codecov.io/gh/wmakeev/simplex/tree/master/) -->
|
|
6
5
|

|
|
7
6
|
[](https://peggyjs.org/)
|
|
7
|
+
<!-- [](https://app.codecov.io/gh/wmakeev/simplex/tree/master/) -->
|
|
8
8
|
|
|
9
9
|
> **SimpEx** - javascript **Simpl**e **Ex**pression language
|
|
10
10
|
|
package/build/src/compiler.js
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
|
-
|
|
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
|
|
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',
|
|
30
|
+
throw new UnexpectedTypeError(['object'], obj);
|
|
26
31
|
}
|
|
27
|
-
if (
|
|
28
|
-
throw new UnexpectedTypeError('object 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 =>
|
|
53
|
-
'-': val => -
|
|
54
|
-
'not': 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
|
-
|
|
61
|
-
'
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
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
|
-
|
|
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
|
-
'
|
|
69
|
-
'
|
|
70
|
-
'
|
|
71
|
-
'
|
|
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 (
|
|
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 ${
|
|
106
|
+
throw new TypeError(`Cannot use "in" operator to search for ${typeOf(a)} key in ${typeOf(b)}`);
|
|
78
107
|
}
|
|
79
108
|
},
|
|
80
|
-
'
|
|
81
|
-
'
|
|
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":"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"}
|
|
1
|
+
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/compiler.ts"],"names":[],"mappings":"AAAA,sDAAsD;AAEtD,+CAA+C;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,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"}
|
package/build/src/errors.d.ts
CHANGED
|
@@ -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
|
-
|
|
8
|
-
|
|
7
|
+
expectedTypes: string[];
|
|
8
|
+
receivedValue: unknown;
|
|
9
9
|
I18N_STRING: string;
|
|
10
|
-
constructor(
|
|
10
|
+
constructor(expectedTypes: string[], receivedValue: unknown);
|
|
11
11
|
}
|
package/build/src/errors.js
CHANGED
|
@@ -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
|
-
|
|
10
|
-
|
|
10
|
+
expectedTypes;
|
|
11
|
+
receivedValue;
|
|
11
12
|
I18N_STRING = 'UNEXPECTED_TYPE';
|
|
12
|
-
constructor(
|
|
13
|
-
super(`Expected ${
|
|
14
|
-
|
|
15
|
-
|
|
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
|
package/build/src/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"
|
|
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"}
|
package/build/src/index.d.ts
CHANGED
package/build/src/index.js
CHANGED
package/build/src/index.js.map
CHANGED
|
@@ -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,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,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,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.
|
|
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
|
-
|
|
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
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
|
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',
|
|
72
|
+
throw new UnexpectedTypeError(['object'], obj)
|
|
71
73
|
}
|
|
72
74
|
|
|
73
|
-
if (
|
|
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 =>
|
|
113
|
-
'-': val => -
|
|
114
|
-
'not': 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
|
-
|
|
127
|
+
// TIPS give the opportunity to get a base js error
|
|
129
128
|
|
|
130
|
-
'
|
|
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
|
-
'
|
|
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) =>
|
|
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) =>
|
|
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
|
-
|
|
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
|
-
'
|
|
165
|
+
'&': (a, b) => castToString(a) + castToString(b),
|
|
166
|
+
|
|
167
|
+
'<': (a, b) => ensureRelationalComparable(a) < ensureRelationalComparable(b),
|
|
143
168
|
|
|
144
|
-
'<=': (a, b) =>
|
|
169
|
+
'<=': (a, b) =>
|
|
170
|
+
ensureRelationalComparable(a) <= ensureRelationalComparable(b),
|
|
145
171
|
|
|
146
|
-
'>': (a, b) =>
|
|
172
|
+
'>': (a, b) => ensureRelationalComparable(a) > ensureRelationalComparable(b),
|
|
147
173
|
|
|
148
|
-
'>=': (a, b) =>
|
|
174
|
+
'>=': (a, b) =>
|
|
175
|
+
ensureRelationalComparable(a) >= ensureRelationalComparable(b),
|
|
149
176
|
|
|
150
177
|
'in': (a, b) => {
|
|
151
|
-
if (
|
|
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 ${
|
|
182
|
+
`Cannot use "in" operator to search for ${typeOf(a)} key in ${typeOf(b)}`
|
|
156
183
|
)
|
|
157
184
|
}
|
|
158
185
|
},
|
|
159
186
|
|
|
160
|
-
'
|
|
161
|
-
|
|
162
|
-
'and': (a, b) => bool(a) && bool(b),
|
|
187
|
+
'and': (a, b) => castToBoolean(a) && castToBoolean(b),
|
|
163
188
|
|
|
164
|
-
'or': (a, 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
|
|
17
|
-
public
|
|
17
|
+
public expectedTypes: string[],
|
|
18
|
+
public receivedValue: unknown
|
|
18
19
|
) {
|
|
19
|
-
super(
|
|
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
|
@@ -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
|
+
}
|
package/build/src/utils.d.ts
DELETED
|
@@ -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";
|
package/build/src/utils.js
DELETED
|
@@ -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
|
package/build/src/utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
|
package/parser/package.json
DELETED
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
|
-
}
|