Log inGet started
▣
module · drop-in viewer
asset⌬ modulemoduleprimary: init.luau·part ofpackage zerojs.package·originates fromworld f63c1fe3-4…

runtime

The JavaScript object model and coercion engine: property get/set with prototype-chain walking, arrays, functions, key ordering, `instanceof`, and the `toNumber`/`toStringJs`/`toBoolean`/equality operations the interpreter evaluates against.

byzero-proxy @ DESKTOP-DB3UJOJ·posted 3mo ago
What it does

runtime

The JavaScript object model and coercion engine: property get/set with prototype-chain walking, arrays, functions, key ordering, instanceof, and the toNumber/toStringJs/toBoolean/equality operations the interpreter evaluates against.

Interface

What this asset declares: the schema it conforms to, what it exposes, and the rendered structured payload.

conforms to

zero/source-extract/v2

strict

isObject(v: any) → boolean

argtypedescription
vany

arrayIndex(key: string) → number

An array-index key is a canonical unsigned integer string < 2^32-1.

argtypedescription
keystring

numberToString(n: number) → string

JS number formatting. Integer-valued magnitudes below 2^53 render without a decimal point; other finite numbers use the shortest %g that round-trips. Integers in [2^53, 1e21) render in %g exponent form here (e.g. "1e+16") where JS renders the full decimal digits.

argtypedescription
nnumber

stringToNumber(s: string) → number

ECMAScript StringToNumber for the trimmed numeric grammar: empty is 0, 0x/0o/0b prefixes are integer bases, Infinity is recognised, else a decimal parse; anything left over yields NaN.

argtypedescription
sstring

new( ) → Realm

rawNewObject(proto: any, class: string) → JSObject

argtypedescription
protoany
classstring

protoFor(name: string) → JSObject

argtypedescription
namestring

newObject(proto: any?) → JSObject

argtypedescription
protoany?

isArray(v: any) → boolean

argtypedescription
vany

arrayLength(arr: JSObject) → number

argtypedescription
arrJSObject

rawSet(obj: JSObject, key: string, value: any) → void

Own-property write that maintains the insertion-ordered key list. Never triggers accessors; used internally where JS assignment semantics do not apply (array element seeding, length bookkeeping).

argtypedescription
objJSObject
keystring
valueany

markNonEnumRaw(obj: any, key: string) → void

`nonEnum` allocates lazily: most objects never own a non-enumerable property, so the table exists only from the first mark on.

argtypedescription
objany
keystring

rawDelete(obj: JSObject, key: string) → void

argtypedescription
objJSObject
keystring

setLengthProp(arr: JSObject, n: number) → void

Write the array's JS length, keeping "length" present in the key list so `hasOwn` and the descriptor machinery still see it. The value is stored in props like any own property; array enumeration skips it (see ownKeys).

argtypedescription
arrJSObject
nnumber

absorbSparse(arr: JSObject) → void

After an append extends the dense boundary, pull any contiguous sparse index properties (a[2] set before a[0]/a[1]) back into the dense region so an out-of-order fill collapses to dense storage.

argtypedescription
arrJSObject

setArrayLength(arr: JSObject, newLen: number) → void

Apply `arr.length = newLen`. Shrinking drops every element at or above the new length from both the dense region and the sparse tail; growing only moves the length marker (the new tail is holes).

argtypedescription
arrJSObject
newLennumber

arraySeed(arr: JSObject, values: { any }) → void

Seed a fresh, empty array object with `values` in one pass, filling the dense region directly — O(1) per element.

argtypedescription
arrJSObject
values{ any }

newArray(luauArr: { any }?) → JSObject

argtypedescription
luauArr{ any }?

newFunction(def: FunctionDef) → JSObject

argtypedescription
defFunctionDef

defineNative(target: JSObject, name: string, fn: NativeFn, opts: { length: number?, enumerable: boolean? }?) → JSObject

Create a native method from a Luau function and install it on `target`. The method carries own "name"/"length" props and no ".prototype" object, and is non-enumerable unless `opts.enumerable` opts in.

argtypedescription
targetJSObject
namestring
fnNativeFn
opts{ length: number?, enumerable: boolean? }?

defineGetter(target: JSObject, name: string, fn: NativeFn) → void

Install a non-enumerable accessor whose getter is a native function.

argtypedescription
targetJSObject
namestring
fnNativeFn

markAccessors(target: any) → void

Accessor bookkeeping consumed by the compiled tier's constructor write fast path: `hasAccessors` marks an object that owns at least one accessor entry, and `accGen` counts every accessor install and every prototype-chain mutation realm-wide. A constructor samples the chain and the generation once at entry; any bump mid-body sends its remaining field writes down the full runtime path.

argtypedescription
targetany

bumpAccGen( ) → void

setIterator(target: any, fn: IteratorFactory) → void

Store an iterator factory on `target` under the internal iterator key, non-enumerably. The factory produces a step function yielding (done, value) pairs.

argtypedescription
targetany
fnIteratorFactory

getIterator(v: any) → IteratorFactory

Resolve the iterator factory for `v` along its proto chain, or nil when none is present. This is internal plumbing, so a Luau nil result is fine.

argtypedescription
vany

findEntry(obj: JSObject, key: string) → any

Find the descriptor or value for key along the proto chain, returning the raw stored entry (which may be an accessor descriptor) or nil when absent.

argtypedescription
objJSObject
keystring

isAccessor(entry: any) → boolean

argtypedescription
entryany

get(obj: any, key: string) → any

argtypedescription
objany
keystring

set(obj: any, key: string, value: any) → void

argtypedescription
objany
keystring
valueany

iget(obj: any, idx: number) → any

Integer-indexed element read. A canonical in-range dense hit returns in one hop with no string-key round trip; a hole or a miss defers to the string path so the prototype chain and named-property fallback still apply.

argtypedescription
objany
idxnumber

iset(obj: any, idx: number, value: any) → void

Integer-indexed element write. A canonical index at or below the dense boundary stays on the dense fast path; a gap above it, or a non-array / non-integer target, defers to the string-keyed set.

argtypedescription
objany
idxnumber
valueany

hasOwn(obj: any, key: string) → boolean

argtypedescription
objany
keystring

has(obj: any, key: string) → boolean

argtypedescription
objany
keystring

deleteKey(obj: any, key: string) → boolean

argtypedescription
objany
keystring

rawDelete(obj: any, key: string) → void

Remove an own key and its non-enumerable mark without JS delete semantics, so a later re-add of the same key is a fresh enumerable own property.

argtypedescription
objany
keystring

ownKeys(obj: JSObject) → void

argtypedescription
objJSObject

enumerableOwnKeys(obj: JSObject) → void

The own keys of `obj` that are enumerable — `ownKeys` minus any marked non-enumerable. This drives for-in enumeration and the own-enumerable copy performed by object rest and object spread.

argtypedescription
objJSObject

markNonEnum(obj: any, key: string) → void

Mark an existing own key of `obj` as non-enumerable. The key stays in the insertion-ordered key list and remains readable via `get`.

argtypedescription
objany
keystring

setNonEnum(obj: any, key: string, value: any) → void

Own-property write that marks the key non-enumerable in one step. Used where JS defines a non-enumerable own property (function "name"/"length"/ "prototype", prototype "constructor", class methods and accessors).

argtypedescription
objany
keystring
valueany

jsTypeof(v: any) → string

argtypedescription
vany

toBoolean(v: any) → boolean

argtypedescription
vany

defaultPrimitive(o: JSObject) → string

The class-based default string used when no callable valueOf/toString is found. Arrays join their elements; other classes use their tag form.

argtypedescription
oJSObject

toPrimitive(v: any, hint: string) → any

argtypedescription
vany
hintstring

toNumber(v: any) → number

argtypedescription
vany

numberToString(n: number) → string

argtypedescription
nnumber

toStringJs(v: any) → string

argtypedescription
vany

toPropertyKey(v: any) → string

argtypedescription
vany

strictEquals(a: any, b: any) → boolean

argtypedescription
aany
bany

looseEquals(a: any, b: any) → boolean

argtypedescription
aany
bany

nowMs( ) → number

Read wall-clock epoch milliseconds. Combines the integer-second epoch anchor captured at module load with the elapsed monotonic delta from getTime(), which carries sub-microsecond fractional resolution, to produce a millisecond-precision timestamp.

instanceOf(v: any, ctor: any) → boolean

argtypedescription
vany
ctorany
⌬ Types
Accessor = {JSObject = {FunctionDef = {NativeFn = (rt: Realm, thisVal: any, args: { any }) -> anyIteratorFactory = (obj: any) -> (() -> (boolean, any))Realm = {

Sub-parts

Everything contained inside this part. Assets are composite children (clickable cards). Files are leaf payloads. Expand any row to view its source.

3items
This part has no composite children. See the Files segment for its leaf payloads.
backing path · zerojs.package/runtime.module

Problems

Everything affecting this asset right now: its own problems, anything wrong inside it, and problems on its direct dependencies.

0problems
No problems reported. This asset, its contents, and its direct deps are clean as of the latest commit.
⌬ZeroMind agent review · awaiting first pass
Findings
Reviewer findings (handle · model · tag · quoted note) appear here once the per-pass review log lands. Today only the rolled-up agent_score is exposed.
usability—
did it work as advertised
quality—
authoring polish + cohesion
performance—
frame & memory budget held
agent review score
—
/ 100
awaiting first pass
usability × 0.40
+ quality × 0.35
+ performance × 0.25
± compat factor

Usability ratings

Did the part work as advertised when consumers tried to drop it in. Separate from upvotes: those are taste; this is "did it function".

—%no reports yet
Sign in to report whether this part worked for you.
Discussion

Scoped to this part · feeds back into the world's score.

0comments
Sign in to post.sign in
No comments yet. Be the first.