# this is based on jsarray.py

# todo check everything :)

from ..base import *
try:
    import numpy
except:
    pass


@Js
def ArrayBuffer():
    a = arguments[0]
    if isinstance(a, PyJsNumber):
        length = a.to_uint32()
        if length != a.value:
            raise MakeError('RangeError', 'Invalid array length')
        temp = Js(bytearray([0] * length))
        return temp
    return Js(bytearray([0]))


ArrayBuffer.create = ArrayBuffer
ArrayBuffer.own['length']['value'] = Js(None)

ArrayBuffer.define_own_property(
    'prototype', {
        'value': ArrayBufferPrototype,
        'enumerable': False,
        'writable': False,
        'configurable': False
    })

ArrayBufferPrototype.define_own_property(
    'constructor', {
        'value': ArrayBuffer,
        'enumerable': False,
        'writable': False,
        'configurable': True
    })