13af6ab5fSopenharmony_ci/* 23af6ab5fSopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 33af6ab5fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 43af6ab5fSopenharmony_ci * you may not use this file except in compliance with the License. 53af6ab5fSopenharmony_ci * You may obtain a copy of the License at 63af6ab5fSopenharmony_ci * 73af6ab5fSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 83af6ab5fSopenharmony_ci * 93af6ab5fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 103af6ab5fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 113af6ab5fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 123af6ab5fSopenharmony_ci * See the License for the specific language governing permissions and 133af6ab5fSopenharmony_ci * limitations under the License. 143af6ab5fSopenharmony_ci */ 153af6ab5fSopenharmony_ci 163af6ab5fSopenharmony_ciimport { FaultID } from '../../Problems'; 173af6ab5fSopenharmony_ci 183af6ab5fSopenharmony_ciconst LIMITED_STD_SYMBOL_API = [ 193af6ab5fSopenharmony_ci // properties 203af6ab5fSopenharmony_ci 'asyncIterator', 213af6ab5fSopenharmony_ci 'description', 223af6ab5fSopenharmony_ci 'hasInstance', 233af6ab5fSopenharmony_ci 'isConcatSpreadable', 243af6ab5fSopenharmony_ci 'match', 253af6ab5fSopenharmony_ci 'matchAll', 263af6ab5fSopenharmony_ci 'replace', 273af6ab5fSopenharmony_ci 'search', 283af6ab5fSopenharmony_ci 'species', 293af6ab5fSopenharmony_ci 'split', 303af6ab5fSopenharmony_ci 'toPrimitive', 313af6ab5fSopenharmony_ci 'toStringTag', 323af6ab5fSopenharmony_ci 'unscopables', 333af6ab5fSopenharmony_ci 343af6ab5fSopenharmony_ci // methods 353af6ab5fSopenharmony_ci 'for', 363af6ab5fSopenharmony_ci 'keyFor', 373af6ab5fSopenharmony_ci 'toString', 383af6ab5fSopenharmony_ci 'valueOf' 393af6ab5fSopenharmony_ci]; 403af6ab5fSopenharmony_ci 413af6ab5fSopenharmony_ciexport const ALLOWED_STD_SYMBOL_API = ['iterator']; 423af6ab5fSopenharmony_ci 433af6ab5fSopenharmony_ciexport const LIMITED_STD_OBJECT_API = [ 443af6ab5fSopenharmony_ci // properties 453af6ab5fSopenharmony_ci '__proto__', 463af6ab5fSopenharmony_ci 473af6ab5fSopenharmony_ci // methods 483af6ab5fSopenharmony_ci '__defineGetter__', 493af6ab5fSopenharmony_ci '__defineSetter__', 503af6ab5fSopenharmony_ci '__lookupGetter__', 513af6ab5fSopenharmony_ci '__lookupSetter__', 523af6ab5fSopenharmony_ci 'assign', 533af6ab5fSopenharmony_ci 'create', 543af6ab5fSopenharmony_ci 'defineProperties', 553af6ab5fSopenharmony_ci 'defineProperty', 563af6ab5fSopenharmony_ci 'freeze', 573af6ab5fSopenharmony_ci // was relaxed but revert 583af6ab5fSopenharmony_ci 'fromEntries', 593af6ab5fSopenharmony_ci 'getOwnPropertyDescriptor', 603af6ab5fSopenharmony_ci 'getOwnPropertyDescriptors', 613af6ab5fSopenharmony_ci 'getOwnPropertySymbols', 623af6ab5fSopenharmony_ci 'getPrototypeOf', 633af6ab5fSopenharmony_ci 'hasOwnProperty', 643af6ab5fSopenharmony_ci 'is', 653af6ab5fSopenharmony_ci 'isExtensible', 663af6ab5fSopenharmony_ci 'isFrozen', 673af6ab5fSopenharmony_ci 'isPrototypeOf', 683af6ab5fSopenharmony_ci 'isSealed', 693af6ab5fSopenharmony_ci 'preventExtensions', 703af6ab5fSopenharmony_ci 'propertyIsEnumerable', 713af6ab5fSopenharmony_ci 'seal', 723af6ab5fSopenharmony_ci 'setPrototypeOf' 733af6ab5fSopenharmony_ci]; 743af6ab5fSopenharmony_ci 753af6ab5fSopenharmony_ciexport const LIMITED_STD_PROXYHANDLER_API = [ 763af6ab5fSopenharmony_ci // properties 773af6ab5fSopenharmony_ci 783af6ab5fSopenharmony_ci // methods 793af6ab5fSopenharmony_ci 'apply', 803af6ab5fSopenharmony_ci 'construct', 813af6ab5fSopenharmony_ci 'defineProperty', 823af6ab5fSopenharmony_ci 'deleteProperty', 833af6ab5fSopenharmony_ci 'get', 843af6ab5fSopenharmony_ci 'getOwnPropertyDescriptor', 853af6ab5fSopenharmony_ci 'getPrototypeOf', 863af6ab5fSopenharmony_ci 'has', 873af6ab5fSopenharmony_ci 'isExtensible', 883af6ab5fSopenharmony_ci 'ownKeys', 893af6ab5fSopenharmony_ci 'preventExtensions', 903af6ab5fSopenharmony_ci 'set', 913af6ab5fSopenharmony_ci 'setPrototypeOf' 923af6ab5fSopenharmony_ci]; 933af6ab5fSopenharmony_ci 943af6ab5fSopenharmony_ciexport const LIMITED_STD_REFLECT_API = [ 953af6ab5fSopenharmony_ci // properties 963af6ab5fSopenharmony_ci 973af6ab5fSopenharmony_ci // methods 983af6ab5fSopenharmony_ci 'apply', 993af6ab5fSopenharmony_ci 'construct', 1003af6ab5fSopenharmony_ci 'defineProperty', 1013af6ab5fSopenharmony_ci 'deleteProperty', 1023af6ab5fSopenharmony_ci 'getOwnPropertyDescriptor', 1033af6ab5fSopenharmony_ci 'getPrototypeOf', 1043af6ab5fSopenharmony_ci 'isExtensible', 1053af6ab5fSopenharmony_ci 'preventExtensions', 1063af6ab5fSopenharmony_ci 'setPrototypeOf' 1073af6ab5fSopenharmony_ci]; 1083af6ab5fSopenharmony_ci 1093af6ab5fSopenharmony_ciconst LIMITED_STD_FUNCTION_API_APPLY_CALL = [ 1103af6ab5fSopenharmony_ci // properties 1113af6ab5fSopenharmony_ci 1123af6ab5fSopenharmony_ci // methods 1133af6ab5fSopenharmony_ci 'apply', 1143af6ab5fSopenharmony_ci 'call' 1153af6ab5fSopenharmony_ci]; 1163af6ab5fSopenharmony_ci 1173af6ab5fSopenharmony_ciconst LIMITED_STD_FUNCTION_API_BIND = [ 1183af6ab5fSopenharmony_ci // properties 1193af6ab5fSopenharmony_ci 1203af6ab5fSopenharmony_ci // methods 1213af6ab5fSopenharmony_ci 'bind' 1223af6ab5fSopenharmony_ci]; 1233af6ab5fSopenharmony_ci 1243af6ab5fSopenharmony_ciexport const LIMITED_STD_GLOBAL_API = [ 1253af6ab5fSopenharmony_ci // properties 1263af6ab5fSopenharmony_ci 1273af6ab5fSopenharmony_ci // methods 1283af6ab5fSopenharmony_ci 'eval' 1293af6ab5fSopenharmony_ci]; 1303af6ab5fSopenharmony_ci 1313af6ab5fSopenharmony_ciconst STD_SYMBOL_ENTRY = [{ api: LIMITED_STD_SYMBOL_API, faultId: FaultID.SymbolType }]; 1323af6ab5fSopenharmony_ciconst STD_OBJECT_ENTRY = [{ api: LIMITED_STD_OBJECT_API, faultId: FaultID.LimitedStdLibApi }]; 1333af6ab5fSopenharmony_ciconst STD_PROXYHANDLER_ENTRY = [{ api: LIMITED_STD_PROXYHANDLER_API, faultId: FaultID.LimitedStdLibApi }]; 1343af6ab5fSopenharmony_ciconst STD_REFLECT_ENTRY = [{ api: LIMITED_STD_REFLECT_API, faultId: FaultID.LimitedStdLibApi }]; 1353af6ab5fSopenharmony_ciconst STD_FUNCTION_ENTRY = [ 1363af6ab5fSopenharmony_ci { api: LIMITED_STD_FUNCTION_API_APPLY_CALL, faultId: FaultID.FunctionApplyCall }, 1373af6ab5fSopenharmony_ci { api: LIMITED_STD_FUNCTION_API_BIND, faultId: FaultID.FunctionBindError } 1383af6ab5fSopenharmony_ci]; 1393af6ab5fSopenharmony_ciconst STD_GLOBAL_ENTRY = [{ api: LIMITED_STD_GLOBAL_API, faultId: FaultID.LimitedStdLibApi }]; 1403af6ab5fSopenharmony_ci 1413af6ab5fSopenharmony_ciexport type LimitedStdLibApiEntry = { api: string[]; faultId: FaultID }; 1423af6ab5fSopenharmony_ci 1433af6ab5fSopenharmony_ciexport const LIMITED_STD_API = new Map<string | undefined, LimitedStdLibApiEntry[]>([ 1443af6ab5fSopenharmony_ci [undefined, STD_GLOBAL_ENTRY], 1453af6ab5fSopenharmony_ci ['Object', STD_OBJECT_ENTRY], 1463af6ab5fSopenharmony_ci ['ObjectConstructor', STD_OBJECT_ENTRY], 1473af6ab5fSopenharmony_ci ['Reflect', STD_REFLECT_ENTRY], 1483af6ab5fSopenharmony_ci ['ProxyHandler', STD_PROXYHANDLER_ENTRY], 1493af6ab5fSopenharmony_ci ['Symbol', STD_SYMBOL_ENTRY], 1503af6ab5fSopenharmony_ci ['SymbolConstructor', STD_SYMBOL_ENTRY], 1513af6ab5fSopenharmony_ci ['Function', STD_FUNCTION_ENTRY], 1523af6ab5fSopenharmony_ci ['CallableFunction', STD_FUNCTION_ENTRY] 1533af6ab5fSopenharmony_ci]); 154