11/* eslint-disable no-empty-pattern */
22import { v4 as uuid } from 'uuid' ;
3- import { NUM , STR , FN_NATIVE , FALSE , TRUE , ARR , NULL , BOOL , OBJ , ERROR } from '../value.js' ;
4- import { assertNumber , assertString , assertBoolean , valToJs , jsToVal , assertFunction , assertObject , eq , expectAny , assertArray , reprValue } from '../util.js' ;
5- import { AiScriptRuntimeError , AiScriptUserError } from '../../error.js' ;
6- import { AISCRIPT_VERSION } from '../../constants.js' ;
3+ import { NUM , STR , FN_NATIVE , ARR , NULL , BOOL , OBJ , ERROR } from '../value.js' ;
4+ import { assertNumber , assertString , assertBoolean , valToJs , jsToVal , assertFunction , assertObject , expectAny , assertArray } from '../util.js' ;
5+ import { AiScriptRuntimeError } from '../../error.js' ;
76import { textDecoder } from '../../const.js' ;
87import { stdMath } from './math.js' ;
98import type { Value } from '../value.js' ;
@@ -13,137 +12,6 @@ export const std: Record<string, Value> = {
1312
1413 'help' : STR ( 'SEE: https://github.com/syuilo/aiscript/blob/master/docs/get-started.md' ) ,
1514
16- //#region Core
17- 'Core:v' : STR ( AISCRIPT_VERSION ) ,
18-
19- 'Core:ai' : STR ( 'kawaii' ) ,
20-
21- 'Core:not' : FN_NATIVE ( ( [ a ] ) => {
22- assertBoolean ( a ) ;
23- return a . value ? FALSE : TRUE ;
24- } ) ,
25-
26- 'Core:eq' : FN_NATIVE ( ( [ a , b ] ) => {
27- expectAny ( a ) ;
28- expectAny ( b ) ;
29- return eq ( a , b ) ? TRUE : FALSE ;
30- } ) ,
31-
32- 'Core:neq' : FN_NATIVE ( ( [ a , b ] ) => {
33- expectAny ( a ) ;
34- expectAny ( b ) ;
35- return eq ( a , b ) ? FALSE : TRUE ;
36- } ) ,
37-
38- 'Core:and' : FN_NATIVE ( ( [ a , b ] ) => {
39- assertBoolean ( a ) ;
40- if ( ! a . value ) return FALSE ;
41- assertBoolean ( b ) ;
42- return b . value ? TRUE : FALSE ;
43- } ) ,
44-
45- 'Core:or' : FN_NATIVE ( ( [ a , b ] ) => {
46- assertBoolean ( a ) ;
47- if ( a . value ) return TRUE ;
48- assertBoolean ( b ) ;
49- return b . value ? TRUE : FALSE ;
50- } ) ,
51-
52- 'Core:add' : FN_NATIVE ( ( [ a , b ] ) => {
53- assertNumber ( a ) ;
54- assertNumber ( b ) ;
55- return NUM ( a . value + b . value ) ;
56- } ) ,
57-
58- 'Core:sub' : FN_NATIVE ( ( [ a , b ] ) => {
59- assertNumber ( a ) ;
60- assertNumber ( b ) ;
61- return NUM ( a . value - b . value ) ;
62- } ) ,
63-
64- 'Core:mul' : FN_NATIVE ( ( [ a , b ] ) => {
65- assertNumber ( a ) ;
66- assertNumber ( b ) ;
67- return NUM ( a . value * b . value ) ;
68- } ) ,
69-
70- 'Core:pow' : FN_NATIVE ( ( [ a , b ] ) => {
71- assertNumber ( a ) ;
72- assertNumber ( b ) ;
73- const res = a . value ** b . value ;
74- return NUM ( res ) ;
75- } ) ,
76-
77- 'Core:div' : FN_NATIVE ( ( [ a , b ] ) => {
78- assertNumber ( a ) ;
79- assertNumber ( b ) ;
80- const res = a . value / b . value ;
81- return NUM ( res ) ;
82- } ) ,
83-
84- 'Core:mod' : FN_NATIVE ( ( [ a , b ] ) => {
85- assertNumber ( a ) ;
86- assertNumber ( b ) ;
87- return NUM ( a . value % b . value ) ;
88- } ) ,
89-
90- 'Core:gt' : FN_NATIVE ( ( [ a , b ] ) => {
91- assertNumber ( a ) ;
92- assertNumber ( b ) ;
93- return a . value > b . value ? TRUE : FALSE ;
94- } ) ,
95-
96- 'Core:lt' : FN_NATIVE ( ( [ a , b ] ) => {
97- assertNumber ( a ) ;
98- assertNumber ( b ) ;
99- return a . value < b . value ? TRUE : FALSE ;
100- } ) ,
101-
102- 'Core:gteq' : FN_NATIVE ( ( [ a , b ] ) => {
103- assertNumber ( a ) ;
104- assertNumber ( b ) ;
105- return a . value >= b . value ? TRUE : FALSE ;
106- } ) ,
107-
108- 'Core:lteq' : FN_NATIVE ( ( [ a , b ] ) => {
109- assertNumber ( a ) ;
110- assertNumber ( b ) ;
111- return a . value <= b . value ? TRUE : FALSE ;
112- } ) ,
113-
114- 'Core:type' : FN_NATIVE ( ( [ v ] ) => {
115- expectAny ( v ) ;
116- return STR ( v . type ) ;
117- } ) ,
118-
119- 'Core:to_str' : FN_NATIVE ( ( [ v ] ) => {
120- expectAny ( v ) ;
121-
122- return STR ( reprValue ( v ) ) ;
123- } ) ,
124-
125- 'Core:range' : FN_NATIVE ( ( [ a , b ] ) => {
126- assertNumber ( a ) ;
127- assertNumber ( b ) ;
128- if ( a . value < b . value ) {
129- return ARR ( Array . from ( { length : ( b . value - a . value ) + 1 } , ( _ , i ) => NUM ( i + a . value ) ) ) ;
130- } else if ( a . value > b . value ) {
131- return ARR ( Array . from ( { length : ( a . value - b . value ) + 1 } , ( _ , i ) => NUM ( a . value - i ) ) ) ;
132- } else {
133- return ARR ( [ a ] ) ;
134- }
135- } ) ,
136- 'Core:sleep' : FN_NATIVE ( async ( [ delay ] ) => {
137- assertNumber ( delay ) ;
138- await new Promise ( ( r ) => setTimeout ( r , delay . value ) ) ;
139- return NULL ;
140- } ) ,
141- 'Core:abort' : FN_NATIVE ( async ( [ message ] ) => {
142- assertString ( message ) ;
143- throw new AiScriptUserError ( message . value ) ;
144- } ) ,
145- //#endregion
146-
14715 //#region Util
14816 'Util:uuid' : FN_NATIVE ( ( ) => {
14917 return STR ( uuid ( ) ) ;
@@ -318,12 +186,12 @@ export const std: Record<string, Value> = {
318186 'Uri:encode_full' : FN_NATIVE ( ( [ v ] ) => {
319187 assertString ( v ) ;
320188 return STR ( encodeURI ( v . value ) ) ;
321- } ) ,
189+ } ) ,
322190
323191 'Uri:encode_component' : FN_NATIVE ( ( [ v ] ) => {
324192 assertString ( v ) ;
325193 return STR ( encodeURIComponent ( v . value ) ) ;
326- } ) ,
194+ } ) ,
327195
328196 'Uri:decode_full' : FN_NATIVE ( ( [ v ] ) => {
329197 assertString ( v ) ;
0 commit comments