Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/CanadaHonk/porffor. An ahead-of-time JavaScript compiler porffor.dev
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485export const TYPE_FLAGS = { parity: 0b10000000, length: 0b01000000,};
export const TYPES = { undefined: 0x00, number: 0x01, boolean: 0x02, string: 0x03 | TYPE_FLAGS.length, bigint: 0x04, symbol: 0x05, function: 0x06, object: 0x07};
export const TYPE_NAMES = { [TYPES.number]: 'Number', [TYPES.boolean]: 'Boolean', [TYPES.string]: 'String', [TYPES.undefined]: 'undefined', [TYPES.object]: 'Object', [TYPES.function]: 'Function', [TYPES.symbol]: 'Symbol', [TYPES.bigint]: 'BigInt'};
let internalTypeIndex = TYPES.object + 1;const registerInternalType = (name, flags = [], overrideType = undefined) => { let n = overrideType ?? internalTypeIndex++;
if (!overrideType) for (const x of flags) { if (TYPE_FLAGS[x]) n |= TYPE_FLAGS[x]; }
TYPES[name.toLowerCase()] = n; TYPE_NAMES[n] = name;};
registerInternalType('ByteString', ['iterable', 'length'], TYPES.string | TYPE_FLAGS.parity);
registerInternalType('Array', ['iterable', 'length']);registerInternalType('RegExp');registerInternalType('Date');
registerInternalType('Set', ['iterable']);registerInternalType('Map');
registerInternalType('ArrayBuffer');registerInternalType('SharedArrayBuffer');registerInternalType('DataView');
for (const x of [ 'Uint8Clamped', 'Uint8', 'Int8', 'Uint16', 'Int16', 'Uint32', 'Int32', 'BigUint64', 'BigInt64', 'Float32', 'Float64' ]) registerInternalType(`${x}Array`, ['iterable', 'length']);
export const TYPED_ARRAY_TYPES = Object.values(TYPES).filter(x => x >= TYPES.uint8clampedarray && x <= TYPES.float64array);
registerInternalType('WeakRef');registerInternalType('FinalizationRegistry');registerInternalType('WeakSet');registerInternalType('WeakMap');
registerInternalType('Promise');registerInternalType('Proxy');
registerInternalType('BooleanObject');registerInternalType('NumberObject');registerInternalType('StringObject');
registerInternalType('__Porffor_ClosureEnv');registerInternalType('__Porffor_Generator');registerInternalType('__Porffor_AsyncGenerator');
export const ERROR_NAMES = [ 'Error', 'AggregateError', 'TypeError', 'ReferenceError', 'SyntaxError', 'RangeError', 'EvalError', 'URIError', 'SuppressedError' ];for (const x of ERROR_NAMES) registerInternalType(x);
registerInternalType('DisposableStack');registerInternalType('AsyncDisposableStack');
// state records (arrays) retagged so each gets its own hidden prototypeexport const ITERATOR_TYPES = [ 'IteratorHelper', 'WrapForValidIterator', 'ArrayIterator', 'MapIterator', 'SetIterator', 'StringIterator', 'RegExpStringIterator' ].map(x => { registerInternalType(`__Porffor_${x}`); return TYPES[`__porffor_${x.toLowerCase()}`];});