porffor 0.35.3 → 0.36.0

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.
@@ -5730,24 +5730,27 @@ const objectHack = node => {
5730
5730
 
5731
5731
  if (node.type === 'MemberExpression') {
5732
5732
  const out = (() => {
5733
+ const abortOut = { ...node, object: objectHack(node.object) };
5733
5734
  if (node.computed || node.optional) return;
5734
5735
 
5735
5736
  // hack: block these properties as they can be accessed on functions
5736
- if (node.property.name === 'length' || node.property.name === 'name' || node.property.name === 'call') return;
5737
+ if (node.property.name === 'length' || node.property.name === 'name' || node.property.name === 'call') return abortOut;
5737
5738
 
5738
- if (node.property.name === '__proto__') return;
5739
+ if (node.property.name === '__proto__') return abortOut;
5739
5740
 
5740
5741
  let objectName = node.object.name;
5741
5742
 
5742
5743
  // if object is not identifier or another member exp, give up
5743
- if (node.object.type !== 'Identifier' && node.object.type !== 'MemberExpression') return;
5744
- if (objectName && ['undefined', 'null', 'NaN', 'Infinity'].includes(objectName)) return;
5744
+ if (node.object.type !== 'Identifier' && node.object.type !== 'MemberExpression') return abortOut;
5745
+ if (objectName && ['undefined', 'null', 'NaN', 'Infinity'].includes(objectName)) return abortOut;
5745
5746
 
5746
5747
  if (!objectName) objectName = objectHack(node.object)?.name?.slice?.(2);
5747
5748
  if (!objectName || (!objectHackers.includes(objectName) && !objectHackers.some(x => objectName.startsWith(`${x}_`)))) {
5748
- return;
5749
+ return abortOut;
5749
5750
  }
5750
5751
 
5752
+ if (objectName !== 'Object_prototype' && (node.property.name === 'propertyIsEnumerable' || node.property.name === 'hasOwnProperty' || node.property.name === 'isPrototypeOf')) return abortOut;
5753
+
5751
5754
  const name = '__' + objectName + '_' + node.property.name;
5752
5755
  if (Prefs.codeLog) log('codegen', `object hack! ${node.object.name}.${node.property.name} -> ${name}`);
5753
5756
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "porffor",
3
3
  "description": "a basic experimental wip aot optimizing js -> wasm engine/compiler/runtime in js",
4
- "version": "0.35.3+30564a39f",
4
+ "version": "0.36.0+e324326eb",
5
5
  "author": "CanadaHonk",
6
6
  "license": "MIT",
7
7
  "scripts": {},
package/runner/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import fs from 'node:fs';
3
- globalThis.version = '0.35.3+30564a39f';
3
+ globalThis.version = '0.36.0+e324326eb';
4
4
 
5
5
  // deno compat
6
6
  if (typeof process === 'undefined' && typeof Deno !== 'undefined') {