@awayfl/avm2
Version:
Virtual machine for executing AS3 code
138 lines (137 loc) • 7.69 kB
JavaScript
import { __extends } from "tslib";
import { ASClass } from './ASClass';
import { ASObject } from './ASObject';
import { ASFunction } from './ASFunction';
import { ASMethodClosure } from './ASMethodClosure';
import { ASNumber } from './ASNumber';
import { ASInt } from './ASInt';
import { ASString } from './ASString';
import { ASUint } from './ASUint';
import { ASBoolean } from './ASBoolean';
import { ASArray } from './ASArray';
import { Int32Vector } from '../natives/int32Vector';
import { GenericVector, Vector } from '../natives/GenericVector';
import { Uint32Vector } from '../natives/uint32Vector';
import { Float64Vector } from '../natives/float64Vector';
import { ASMath } from './ASMath';
import { ASRegExp } from './ASRegExp';
import { ASJSON } from './ASJSON';
import { assert } from '@awayjs/graphics';
import { release } from '@awayfl/swf-loader';
import { FlashUtilScript_getDefinitionByName } from './FlashUtilScript_getDefinitionByName';
import { FlashUtilScript_getTimer } from './FlashUtilScript_getTimer';
import { FlashNetScript_navigateToURL } from './FlashNetScript_navigateToURL';
import { FlashNetScript_sendToURL } from './FlashNetScript_sendToURL';
import { wrapJSGlobalFunction } from './wrapJSGlobalFunction';
import { Toplevel_registerClassAlias } from './Toplevel_registerClassAlias';
import { Toplevel_getClassByAlias } from './Toplevel_getClassByAlias';
import { ASError, ASArgumentError, ASUninitializedError, ASVerifyError, ASURIError, ASTypeError, ASSyntaxError, ASSecurityError, ASReferenceError, ASRangeError, ASEvalError, ASDefinitionError, ASIllegalOperationError, ASMemoryError, ASEOFError, ASIOError } from './ASError';
/* 80pro: todo: XML
import { XMLParser } from '../natives/xml';
import { XMLNode } from '../natives/xml';
import { XMLNodeType } from '../../customAway/xml/XMLNodeType';*/
import { nativeFunctions } from './nativeFunctions';
import { jsGlobal } from '@awayfl/swf-loader';
import { ASDate } from '../natives/date';
import { ASProxy } from '../natives/proxy';
import { Dictionary } from '../natives/dictionary';
import { ByteArray } from '../natives/byteArray';
import { OriginalSystem } from '../natives/system';
import { builtinNativeClasses } from './builtinNativeClasses';
import { nativeClasses } from './builtinNativeClasses';
import { nativeClassLoaderNames } from './builtinNativeClasses';
import { ASNamespace, ASQName, ASXML, ASXMLList } from '../natives/xml';
import { XMLNode, XMLParser, XMLTag, XMLNodeType, XMLDocument } from '../natives/xml-document';
var AVMPlusFile = /** @class */ (function (_super) {
__extends(AVMPlusFile, _super);
function AVMPlusFile() {
return _super !== null && _super.apply(this, arguments) || this;
}
AVMPlusFile.exists = function () {
};
AVMPlusFile.read = function () {
};
AVMPlusFile.write = function () {
};
AVMPlusFile.readByteArray = function () {
};
AVMPlusFile.writeByteArray = function () {
};
return AVMPlusFile;
}(ASObject));
export function initializeBuiltins() {
builtinNativeClasses['Object'] = ASObject;
builtinNativeClasses['Class'] = ASClass;
builtinNativeClasses['Function'] = ASFunction;
builtinNativeClasses['Boolean'] = ASBoolean;
builtinNativeClasses['builtin.as$0.MethodClosure'] = ASMethodClosure;
builtinNativeClasses['Number'] = ASNumber;
builtinNativeClasses['int'] = ASInt;
builtinNativeClasses['uint'] = ASUint;
builtinNativeClasses['String'] = ASString;
builtinNativeClasses['Array'] = ASArray;
builtinNativeClasses['__AS3__.vec.Vector'] = Vector;
builtinNativeClasses['__AS3__.vec.Vector$object'] = GenericVector;
builtinNativeClasses['__AS3__.vec.Vector$int'] = Int32Vector;
builtinNativeClasses['__AS3__.vec.Vector$uint'] = Uint32Vector;
builtinNativeClasses['__AS3__.vec.Vector$double'] = Float64Vector;
builtinNativeClasses['Namespace'] = ASNamespace;
builtinNativeClasses['QName'] = ASQName;
builtinNativeClasses['XML'] = ASXML;
builtinNativeClasses['XMLList'] = ASXMLList;
builtinNativeClasses['flash.xml.XMLNode'] = XMLNode;
builtinNativeClasses['flash.xml.XMLDocument'] = XMLDocument;
builtinNativeClasses['flash.xml.XMLParser'] = XMLParser;
builtinNativeClasses['flash.xml.XMLTag'] = XMLTag;
builtinNativeClasses['flash.xml.XMLNodeType'] = XMLNodeType;
builtinNativeClasses['Math'] = ASMath;
builtinNativeClasses['Date'] = ASDate;
builtinNativeClasses['RegExp'] = ASRegExp;
builtinNativeClasses['JSON'] = ASJSON;
builtinNativeClasses['flash.utils.Proxy'] = ASProxy;
builtinNativeClasses['flash.utils.Dictionary'] = Dictionary;
builtinNativeClasses['flash.utils.ByteArray'] = ByteArray;
builtinNativeClasses['avmplus.System'] = OriginalSystem;
builtinNativeClasses['avmplus.File'] = AVMPlusFile;
// Errors
builtinNativeClasses['Error'] = ASError;
builtinNativeClasses['DefinitionError'] = ASDefinitionError;
builtinNativeClasses['EvalError'] = ASEvalError;
builtinNativeClasses['RangeError'] = ASRangeError;
builtinNativeClasses['ReferenceError'] = ASReferenceError;
builtinNativeClasses['SecurityError'] = ASSecurityError;
builtinNativeClasses['SyntaxError'] = ASSyntaxError;
builtinNativeClasses['TypeError'] = ASTypeError;
builtinNativeClasses['URIError'] = ASURIError;
builtinNativeClasses['VerifyError'] = ASVerifyError;
builtinNativeClasses['UninitializedError'] = ASUninitializedError;
builtinNativeClasses['ArgumentError'] = ASArgumentError;
builtinNativeClasses['flash.errors.IOError'] = ASIOError;
builtinNativeClasses['flash.errors.EOFError'] = ASEOFError;
builtinNativeClasses['flash.errors.MemoryError'] = ASMemoryError;
builtinNativeClasses['flash.errors.IllegalOperationError'] = ASIllegalOperationError;
}
export function registerNativeClass(name, asClass, alias, nsType) {
if (alias === void 0) { alias = name; }
if (nsType === void 0) { nsType = 0 /* NamespaceType.Public */; }
release || assert(!nativeClasses[name], 'Native class: ' + name + ' is already registered.');
nativeClasses[name] = asClass;
nativeClassLoaderNames.push({ name: name, alias: alias, nsType: nsType });
}
export function registerNativeFunction(path, fun) {
release || assert(!nativeFunctions[path], 'Native function: ' + path + ' is already registered.');
nativeFunctions[path] = fun;
}
registerNativeClass('__AS3__.vec.Vector$object', GenericVector, 'ObjectVector', 2 /* NamespaceType.PackageInternal */);
registerNativeClass('__AS3__.vec.Vector$int', Int32Vector, 'Int32Vector', 2 /* NamespaceType.PackageInternal */);
registerNativeClass('__AS3__.vec.Vector$uint', Uint32Vector, 'Uint32Vector', 2 /* NamespaceType.PackageInternal */);
registerNativeClass('__AS3__.vec.Vector$double', Float64Vector, 'Float64Vector', 2 /* NamespaceType.PackageInternal */);
registerNativeFunction('FlashUtilScript::getDefinitionByName', FlashUtilScript_getDefinitionByName);
registerNativeFunction('FlashUtilScript::getTimer', FlashUtilScript_getTimer);
registerNativeFunction('FlashUtilScript::navigateToURL', FlashNetScript_navigateToURL);
registerNativeFunction('FlashNetScript::navigateToURL', FlashNetScript_navigateToURL);
registerNativeFunction('FlashNetScript::sendToURL', FlashNetScript_sendToURL);
registerNativeFunction('FlashUtilScript::escapeMultiByte', wrapJSGlobalFunction(jsGlobal.escape));
registerNativeFunction('FlashUtilScript::unescapeMultiByte', wrapJSGlobalFunction(jsGlobal.unescape));
registerNativeFunction('Toplevel::registerClassAlias', Toplevel_registerClassAlias);
registerNativeFunction('Toplevel::getClassByAlias', Toplevel_getClassByAlias);