remove internal scripts
This commit is contained in:
@@ -28,18 +28,6 @@ function use_embed(name) {
|
||||
return load_internal(`js_${name}_use`)
|
||||
}
|
||||
|
||||
globalThis.meme = function(obj, ...mixins) {
|
||||
var result = _ObjectCreate(obj)
|
||||
|
||||
array.for(mixins, mix => {
|
||||
if (is_object(mix)) {
|
||||
for (var key in mix)
|
||||
result[key] = mix[key]
|
||||
}
|
||||
})
|
||||
return result
|
||||
}
|
||||
|
||||
globalThis.logical = function(val1)
|
||||
{
|
||||
if (val1 == 0 || val1 == false || val1 == "false" || val1 == null)
|
||||
@@ -49,7 +37,6 @@ globalThis.logical = function(val1)
|
||||
return null;
|
||||
}
|
||||
|
||||
var utf8 = use_embed('utf8')
|
||||
var js = use_embed('js')
|
||||
var fd = use_embed('fd')
|
||||
|
||||
@@ -69,13 +56,6 @@ if (!fd.is_dir(core_path)) {
|
||||
var use_cache = {}
|
||||
use_cache['core/os'] = os
|
||||
|
||||
var _Symbol = Symbol
|
||||
|
||||
globalThis.key = function()
|
||||
{
|
||||
return _Symbol()
|
||||
}
|
||||
|
||||
// Load a core module from the file system
|
||||
function use_core(path) {
|
||||
var cache_key = 'core/' + path
|
||||
@@ -89,7 +69,7 @@ function use_core(path) {
|
||||
|
||||
if (fd.is_file(file_path)) {
|
||||
var script_blob = fd.slurp(file_path)
|
||||
var script = utf8.decode(script_blob)
|
||||
var script = text(script_blob)
|
||||
var mod = `(function setup_module(use){${script}})`
|
||||
var fn = js.eval('core:' + path, mod)
|
||||
var result = fn.call(sym, use_core);
|
||||
@@ -104,13 +84,6 @@ function use_core(path) {
|
||||
var blob = use_core('blob')
|
||||
|
||||
// Capture Object and Array methods before they're deleted
|
||||
var _Object = Object
|
||||
var _ObjectKeys = Object.keys
|
||||
var _ObjectIsFrozen = Object.isFrozen
|
||||
var _ObjectDefineProperty = Object.defineProperty
|
||||
var _ObjectGetPrototypeOf = Object.getPrototypeOf
|
||||
var _ObjectCreate = Object.create
|
||||
|
||||
Object.prototype.toString = function()
|
||||
{
|
||||
return json.encode(this)
|
||||
@@ -125,41 +98,9 @@ var actor_mod = use_core('actor')
|
||||
var wota = use_core('wota')
|
||||
var nota = use_core('nota')
|
||||
|
||||
// Global utility functions (use already-captured references)
|
||||
var _keys = _ObjectKeys
|
||||
var _getPrototypeOf = _ObjectGetPrototypeOf
|
||||
var _create = _ObjectCreate
|
||||
|
||||
globalThis.reverse = function(value) {
|
||||
if (_isArray(value)) {
|
||||
var result = []
|
||||
for (var i = value.length - 1; i >= 0; i--) {
|
||||
result.push(value[i])
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
// For blobs, would need blob module support
|
||||
if (isa(value, blob)) {
|
||||
// Simplified: return null for now, would need proper blob reversal
|
||||
return null
|
||||
}
|
||||
|
||||
return null
|
||||
}
|
||||
|
||||
globalThis.isa = function(value, master) {
|
||||
if (master == null) return false
|
||||
|
||||
// isa(value, array) - check if object has all keys
|
||||
if (_isArray(master)) {
|
||||
if (typeof value != 'object' || value == null) return false
|
||||
for (var i = 0; i < master.length; i++) {
|
||||
if (!(master[i] in value)) return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
// isa(value, function) - check if function.prototype is in chain
|
||||
if (typeof master == 'function') {
|
||||
// Special type checks
|
||||
@@ -196,55 +137,9 @@ globalThis.isa = function(value, master) {
|
||||
return false
|
||||
}
|
||||
|
||||
globalThis.proto = function(obj) {
|
||||
if (!isa(obj, object)) return null
|
||||
var p = _getPrototypeOf(obj)
|
||||
if (p == _Object.prototype) return null
|
||||
return p
|
||||
}
|
||||
|
||||
globalThis.splat = function(obj) {
|
||||
if (typeof obj != 'object' || obj == null) return null
|
||||
|
||||
var result = {}
|
||||
var current = obj
|
||||
|
||||
// Walk prototype chain and collect text keys
|
||||
while (current != null) {
|
||||
var keys = _keys(current)
|
||||
for (var i = 0; i < keys.length; i++) {
|
||||
var k = keys[i]
|
||||
if (!(k in result)) {
|
||||
var val = current[k]
|
||||
// Only include serializable types
|
||||
if (typeof val == 'object' || typeof val == 'number' ||
|
||||
typeof val == 'string' || typeof val == 'boolean') {
|
||||
result[k] = val
|
||||
}
|
||||
}
|
||||
}
|
||||
current = _getPrototypeOf(current)
|
||||
}
|
||||
|
||||
// Call to_data if present
|
||||
if (typeof obj.to_data == 'function') {
|
||||
var extra = obj.to_data(result)
|
||||
if (typeof extra == 'object' && extra != null) {
|
||||
var extraKeys = _keys(extra)
|
||||
for (var i = 0; i < extraKeys.length; i++) {
|
||||
result[extraKeys[i]] = extra[extraKeys[i]]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
var ENETSERVICE = 0.1
|
||||
var REPLYTIMEOUT = 60 // seconds before replies are ignored
|
||||
|
||||
globalThis.pi = 3.14159265358979323846264338327950288419716939937510
|
||||
|
||||
function caller_data(depth = 0)
|
||||
{
|
||||
var file = "nofile"
|
||||
@@ -453,7 +348,7 @@ function guid(bits = 256)
|
||||
return text(guid,'h')
|
||||
}
|
||||
|
||||
var HEADER = _Symbol()
|
||||
var HEADER = key()
|
||||
|
||||
// takes a function input value that will eventually be called with the current time in number form.
|
||||
$_.clock = function(fn) {
|
||||
@@ -771,7 +666,6 @@ function turn(msg)
|
||||
}
|
||||
|
||||
//log.console(`FIXME: need to get main from config, not just set to true`)
|
||||
//log.console(`FIXME: remove global access (ie globalThis.use)`)
|
||||
//log.console(`FIXME: add freeze/unfreeze at this level, so we can do it (but scripts cannot)`)
|
||||
actor_mod.register_actor(_cell.id, turn, true, config.ar_timer)
|
||||
|
||||
@@ -911,69 +805,11 @@ if (!locator) {
|
||||
if (!locator)
|
||||
throw new Error(`Main program ${_cell.args.program} could not be found`)
|
||||
|
||||
// Hide JavaScript built-ins - make them inaccessible
|
||||
// Store references we need internally before deleting
|
||||
var _Array = Array
|
||||
var _String = String
|
||||
var _Math = Math
|
||||
var _Function = Function
|
||||
|
||||
var _JSON = JSON
|
||||
|
||||
// juicing these before Math is gone
|
||||
|
||||
use_core('math/radians')
|
||||
use_core('math/cycles')
|
||||
use_core('math/degrees')
|
||||
|
||||
// Delete from globalThis
|
||||
delete globalThis.Object
|
||||
delete globalThis.Math
|
||||
delete globalThis.Number
|
||||
delete globalThis.String
|
||||
delete globalThis.Array
|
||||
delete globalThis.Boolean
|
||||
delete globalThis.Date
|
||||
delete globalThis.Function
|
||||
delete globalThis.Reflect
|
||||
delete globalThis.Proxy
|
||||
delete globalThis.WeakMap
|
||||
delete globalThis.WeakSet
|
||||
delete globalThis.WeakRef
|
||||
delete globalThis.BigInt
|
||||
delete globalThis.Symbol
|
||||
//delete globalThis.Map
|
||||
//delete globalThis.Set
|
||||
delete globalThis.Promise
|
||||
delete globalThis.ArrayBuffer
|
||||
delete globalThis.DataView
|
||||
delete globalThis.Int8Array
|
||||
delete globalThis.Uint8Array
|
||||
delete globalThis.Uint8ClampedArray
|
||||
delete globalThis.Int16Array
|
||||
delete globalThis.Uint16Array
|
||||
delete globalThis.Int32Array
|
||||
delete globalThis.Uint32Array
|
||||
delete globalThis.Float32Array
|
||||
delete globalThis.Float64Array
|
||||
delete globalThis.BigInt64Array
|
||||
delete globalThis.BigUint64Array
|
||||
delete globalThis.eval
|
||||
delete globalThis.parseInt
|
||||
delete globalThis.parseFloat
|
||||
delete globalThis.isNaN
|
||||
delete globalThis.isFinite
|
||||
delete globalThis.decodeURI
|
||||
delete globalThis.decodeURIComponent
|
||||
delete globalThis.encodeURI
|
||||
delete globalThis.encodeURIComponent
|
||||
delete globalThis.escape
|
||||
delete globalThis.unescape
|
||||
delete globalThis.Intl
|
||||
delete globalThis.RegExp
|
||||
|
||||
stone(globalThis)
|
||||
|
||||
var rads = use_core("math/radians")
|
||||
log.console(rads)
|
||||
|
||||
$_.clock(_ => {
|
||||
// Get capabilities for the main program
|
||||
var file_info = shop.file_info ? shop.file_info(locator.path) : null
|
||||
|
||||
Reference in New Issue
Block a user